diff -ruN 1.4.0sr5-1.src/admin/auth.inc.php 1.4.1.src/admin/auth.inc.php
--- 1.4.0sr5-1.src/admin/auth.inc.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/auth.inc.php	2006-10-01 14:16:13.000000000 -0500
@@ -31,7 +31,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: auth.inc.php,v 1.30.2.1 2006/05/27 15:38:46 dhaun Exp $
+// $Id: auth.inc.php,v 1.34 2006/10/01 19:16:13 dhaun Exp $
 
 // this file can't be used on its own
 if (strpos ($_SERVER['PHP_SELF'], 'auth.inc.php') !== false)
@@ -76,14 +76,14 @@
                        $_CONF['cookiedomain'], $_CONF['cookiesecure']);
         }
     }
-    if (!SEC_hasRights('story.edit,block.edit,topic.edit,event.edit,user.edit,plugin.edit','OR')) {
+    if (!SEC_hasRights('story.edit,block.edit,topic.edit,user.edit,plugin.edit,syndication.edit','OR')) {
         $display .= COM_refresh($_CONF['site_admin_url'] . '/moderation.php');
     } else {
         $display .= COM_refresh($_CONF['site_url'] . '/index.php');
     }
     echo $display;
     exit;
-} else if (!SEC_hasRights('story.edit,block.edit,topic.edit,event.edit,user.edit,plugin.edit,user.mail','OR') && (count (PLG_getAdminOptions()) == 0)) {
+} else if (!SEC_hasRights('story.edit,block.edit,topic.edit,user.edit,plugin.edit,user.mail,syndication.edit','OR') && (count (PLG_getAdminOptions()) == 0)) {
     $display .= COM_siteHeader();
 
     $display .= COM_startBlock($LANG20[01]);
diff -ruN 1.4.0sr5-1.src/admin/block.php 1.4.1.src/admin/block.php
--- 1.4.0sr5-1.src/admin/block.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/block.php	2006-10-03 04:02:27.000000000 -0500
@@ -33,21 +33,21 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: block.php,v 1.92 2006/01/14 16:58:01 dhaun Exp $
+// $Id: block.php,v 1.108 2006/10/03 09:02:27 dhaun Exp $
 
 require_once ('../lib-common.php');
+require_once ('auth.inc.php');
+
 // Uncomment the line below if you need to debug the HTTP variables being passed
 // to the script.  This will sometimes cause errors but it will allow you to see
 // the data being passed in a POST operation
-# echo COM_debug($_POST);
-
-require_once ('auth.inc.php');
+// echo COM_debug($_POST);
 
-if (!SEC_hasrights ('block.edit')) {
-    $display .= COM_siteHeader ()
+if (!SEC_hasRights ('block.edit')) {
+    $display .= COM_siteHeader ('menu', $MESSAGE[30])
         . COM_startBlock ($MESSAGE[30], '',
                           COM_getBlockTemplate ('_msg_block', 'header'))
-        . $MESSAGE[31]
+        . $MESSAGE[33]
         . COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'))
         . COM_siteFooter ();
     COM_accessLog ("User {$_USER['username']} tried to illegally access the block administration screen");
@@ -115,7 +115,7 @@
 
     $block_templates->set_var('block_title', stripslashes ($A['title']));
     if ($A['is_enabled'] == 1) {
-        $block_templates->set_var('is_enabled', 'checked="CHECKED"');
+        $block_templates->set_var('is_enabled', 'checked="checked"');
     } else {
         $block_templates->set_var('is_enabled', '');
     }
@@ -130,7 +130,8 @@
     } else if ($A['tid'] == 'homeonly') {
         $block_templates->set_var('homeonly_selected', 'selected="selected"');
     }
-    $block_templates->set_var('topic_options', COM_topicList('tid,topic',$A['tid']));
+    $block_templates->set_var('topic_options',
+                              COM_topicList ('tid,topic', $A['tid'], 1, true));
     $block_templates->set_var('lang_all', $LANG21[7]);
     $block_templates->set_var('lang_side', $LANG21[39]);
     $block_templates->set_var('lang_left', $LANG21[40]);
@@ -145,10 +146,18 @@
     $block_templates->set_var('block_order', $A['blockorder']);
     $block_templates->set_var('lang_accessrights', $LANG_ACCESS['accessrights']);
     $block_templates->set_var('lang_owner', $LANG_ACCESS['owner']);
-    $block_templates->set_var('owner_username', DB_getItem($_TABLES['users'],'username',"uid = '{$A['owner_id']}'"));
+    $ownername = COM_getDisplayName ($A['owner_id']);
+    $block_templates->set_var('owner_username', DB_getItem($_TABLES['users'],
+                                    'username', "uid = '{$A['owner_id']}'"));
+    $block_templates->set_var('owner_name', $ownername);
+    $block_templates->set_var('owner', $ownername);
     $block_templates->set_var('owner_id', $A['owner_id']);
+
     $block_templates->set_var('lang_group', $LANG_ACCESS['group']);
-    $block_templates->set_var('group_name', DB_getItem($_TABLES['groups'],'grp_name', "grp_id = '{$A['group_id']}'"));
+    $block_templates->set_var('group_dropdown',
+                              SEC_getGroupDropdown ($A['group_id'], $access));
+    $block_templates->set_var('group_name', DB_getItem ($_TABLES['groups'],
+                                    'grp_name', "grp_id = '{$A['group_id']}'"));
     $block_templates->set_var('group_id', $A['group_id']);
     $block_templates->set_var('lang_permissions', $LANG_ACCESS['permissions']);
     $block_templates->set_var('lang_perm_key', $LANG_ACCESS['permissionskey']);
@@ -173,7 +182,8 @@
 */
 function editblock ($bid = '')
 {
-    global $_CONF, $_GROUPS, $_TABLES, $_USER, $LANG21, $LANG_ACCESS, $LANG_ADMIN;
+    global $_CONF, $_GROUPS, $_TABLES, $_USER, $LANG01, $LANG21, $LANG_ACCESS,
+           $LANG_ADMIN, $MESSAGE;
 
     $retval = '';
 
@@ -196,7 +206,20 @@
         }
     } else {
         $A['bid'] = 0;
+        $A['is_enabled'] = 1;
+        $A['name'] = '';
+        $A['type'] = 'normal';
+        $A['title'] = '';
+        $A['tid'] = 'All';
         $A['blockorder'] = 0;
+        $A['content'] = '';
+        $A['allow_autotags'] = 0;
+        $A['rdfurl'] = '';
+        $A['rdfupdated'] = '';
+        $A['rdflimit'] = 0;
+        $A['onleft'] = 0;
+        $A['phpblockfn'] = '';
+        $A['help'] = '';
         $A['owner_id'] = $_USER['uid'];
         if (isset ($_GROUPS['Block Admin'])) {
             $A['group_id'] = $_GROUPS['Block Admin'];
@@ -204,7 +227,6 @@
             $A['group_id'] = SEC_getFeatureGroup ('block.edit');
         }
         SEC_setDefaultPermissions ($A, $_CONF['default_permissions_block']);
-        $A['is_enabled'] = 1;
         $access = 3;
     }
 
@@ -216,10 +238,14 @@
     $block_templates->set_var('start_block_editor', COM_startBlock ($LANG21[3],
             '', COM_getBlockTemplate ('_admin_block', 'header')));
 
-    if ($A['type'] != 'layout') {
-        if (!empty($bid) && SEC_hasrights('block.delete')) {
-            $block_templates->set_var('delete_option',"<input type=\"submit\" value=\"{$LANG_ADMIN['delete']}\" name=\"mode\">");
-        }
+    if (!empty($bid) && SEC_hasrights('block.delete')) {
+        $delbutton = '<input type="submit" value="' . $LANG_ADMIN['delete']
+                   . '" name="mode"%s>';
+        $jsconfirm = ' onclick="return confirm(\'' . $MESSAGE[76] . '\');"';
+        $block_templates->set_var ('delete_option',
+                                   sprintf ($delbutton, $jsconfirm));
+        $block_templates->set_var ('delete_option_no_confirmation',
+                                   sprintf ($delbutton, ''));
     }
 
     $block_templates->set_var('block_bid', $A['bid']);
@@ -231,11 +257,12 @@
     $block_templates->set_var('lang_save', $LANG_ADMIN['save']);
     $block_templates->set_var('lang_cancel', $LANG_ADMIN['cancel']);
     $block_templates->set_var('lang_blocktype', $LANG_ADMIN['type']);
+    $block_templates->set_var('lang_allowed_html', $LANG01[123]);
 
     $block_templates->set_var('block_title', stripslashes ($A['title']));
     $block_templates->set_var('lang_enabled', $LANG21[53]);
     if ($A['is_enabled'] == 1) {
-        $block_templates->set_var('is_enabled', 'checked="CHECKED"');
+        $block_templates->set_var('is_enabled', 'checked="checked"');
     } else {
         $block_templates->set_var('is_enabled', '');
     }
@@ -252,7 +279,8 @@
     } else if ($A['tid'] == 'homeonly') {
         $block_templates->set_var('homeonly_selected', 'selected="selected"');
     }
-    $block_templates->set_var('topic_options', COM_topicList('tid,topic',$A['tid']));
+    $block_templates->set_var('topic_options',
+                              COM_topicList('tid,topic', $A['tid'], 1, true));
     $block_templates->set_var('lang_side', $LANG21[39]);
     $block_templates->set_var('lang_left', $LANG21[40]);
     $block_templates->set_var('lang_right', $LANG21[41]);
@@ -275,30 +303,16 @@
     }
     $block_templates->set_var('lang_accessrights', $LANG_ACCESS['accessrights']);
     $block_templates->set_var('lang_owner', $LANG_ACCESS['owner']);
-    $block_templates->set_var('owner_username', DB_getItem($_TABLES['users'],'username',"uid = '{$A['owner_id']}'"));
+    $ownername = COM_getDisplayName ($A['owner_id']);
+    $block_templates->set_var('owner_username', DB_getItem($_TABLES['users'],
+                                    'username', "uid = '{$A['owner_id']}'"));
+    $block_templates->set_var('owner_name', $ownername);
+    $block_templates->set_var('owner', $ownername);
     $block_templates->set_var('owner_id', $A['owner_id']);
-    $block_templates->set_var('lang_group', $LANG_ACCESS['group']);
-
-    $usergroups = SEC_getUserGroups();
 
-    $groupdd = '';
-    if ($access == 3) {
-        $groupdd .= '<select name="group_id">' . LB;
-        for ($i = 0; $i < count($usergroups); $i++) {
-            $groupdd .= '<option value="'.$usergroups[key($usergroups)].'"';
-            if ($A['group_id'] == $usergroups[key($usergroups)]) {
-                $groupdd .= ' selected="selected"';
-            }
-            $groupdd .= '>'.key($usergroups).'</option>' . LB;
-            next($usergroups);
-        }
-    $groupdd .= '</select>' . LB;
-    } else {
-        // They can't set the group then
-        $groupdd.= DB_getItem($_TABLES['groups'],'grp_name',"grp_id = '{$A['group_id']}'")
-            .'<input type="hidden" name="group_id" value="'.$A['group_id'].'">';
-    }
-    $block_templates->set_var('group_dropdown', $groupdd);
+    $block_templates->set_var('lang_group', $LANG_ACCESS['group']);
+    $block_templates->set_var('group_dropdown',
+                              SEC_getGroupDropdown ($A['group_id'], $access));
     $block_templates->set_var('lang_permissions', $LANG_ACCESS['permissions']);
     $block_templates->set_var('lang_perm_key', $LANG_ACCESS['permissionskey']);
     $block_templates->set_var('permissions_editor', SEC_getPermissionsHTML($A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']));
@@ -319,9 +333,17 @@
     } else {
         $block_templates->set_var ('block_rdfupdated', $A['rdfupdated']);
     }
-    $block_templates->set_var('lang_normalblockoptions', $LANG21[16]);
-    $block_templates->set_var('lang_blockcontent', $LANG21[17]);
-    $block_templates->set_var('block_content', htmlspecialchars (stripslashes ($A['content'])));
+    $block_templates->set_var ('lang_normalblockoptions', $LANG21[16]);
+    $block_templates->set_var ('lang_blockcontent', $LANG21[17]);
+    $block_templates->set_var ('lang_autotags', $LANG21[66]);
+    $block_templates->set_var ('lang_use_autotags', $LANG21[67]);
+    $block_templates->set_var ('block_content',
+                               htmlspecialchars (stripslashes ($A['content'])));
+    if ($A['allow_autotags'] == 1) {
+        $block_templates->set_var ('allow_autotags', 'checked="checked"');
+    } else {
+        $block_templates->set_var ('allow_autotags', '');
+    }
     $block_templates->set_var ('end_block',
             COM_endBlock (COM_getBlockTemplate ('_admin_block', 'footer')));
     $block_templates->parse('output', 'editor');
@@ -332,13 +354,15 @@
 
 function listblocks()
 {
-    global $LANG_ADMIN, $LANG21, $_CONF, $_TABLES, $_IMAGE_TYPE;
+    global $_CONF, $_TABLES, $LANG_ADMIN, $LANG21, $_IMAGE_TYPE;
+
     require_once( $_CONF['path_system'] . 'lib-admin.php' );
+
     $retval = '';
     
     reorderblocks();
 
-    $header_arr = array(      # dislay 'text' and use table field 'field'
+    $header_arr = array(      # display 'text' and use table field 'field'
                     array('text' => $LANG_ADMIN['edit'], 'field' => 'edit', 'sort' => false),
                     array('text' => $LANG21[65], 'field' => 'blockorder', 'sort' => true),
                     array('text' => $LANG21[46], 'field' => 'move', 'sort' => false),
@@ -366,27 +390,28 @@
                       'form_url' => $_CONF['site_admin_url'] . "/block.php");
 
     $query_arr = array('table' => 'blocks',
-                       'sql' => "SELECT * FROM {$_TABLES['blocks']} WHERE 1",
+                       'sql' => "SELECT * FROM {$_TABLES['blocks']} WHERE onleft = 1",
                        'query_fields' => array('title', 'content'),
-                       'default_filter' => 'AND onleft=1');
+                       'default_filter' => COM_getPermSql ('AND'));
 
     $retval .= ADMIN_list ("blocks", "ADMIN_getListField_blocks", $header_arr, $text_arr,
                             $query_arr, $menu_arr, $defsort_arr);
 
     $query_arr = array('table' => 'blocks',
-                       'sql' => "SELECT * FROM {$_TABLES['blocks']} WHERE 1",
+                       'sql' => "SELECT * FROM {$_TABLES['blocks']} WHERE onleft = 0",
                        'query_fields' => array('title', 'content'),
-                       'default_filter' => 'AND onleft=0');
+                       'default_filter' => COM_getPermSql ('AND'));
 
     $text_arr = array('has_menu' =>  false,
                       'has_extras'   => true,
                       'title' => "$LANG21[19] ($LANG21[41])", 'instructions' => $LANG21[25],
                       'icon' => $_CONF['layout_url'] . '/images/icons/block.'
                                 . $_IMAGE_TYPE,
-                      'form_url' => $_CONF['site_admin_url'] . "/block.php");
+                      'form_url' => $_CONF['site_admin_url'] . '/block.php');
 
-    $retval .= ADMIN_list ("blocks", "ADMIN_getListField_blocks", $header_arr, $text_arr,
+    $retval .= ADMIN_list ('blocks', 'ADMIN_getListField_blocks', $header_arr, $text_arr,
                             $query_arr, $menu_arr, $defsort_arr);
+
     return $retval;
 }
 
@@ -414,16 +439,16 @@
 * @return   string                  HTML redirect or error message
 *
 */
-function saveblock ($bid, $name, $title, $help, $type, $blockorder, $content, $tid, $rdfurl, $rdfupdated, $rdflimit, $phpblockfn, $onleft, $owner_id, $group_id, $perm_owner, $perm_group, $perm_members, $perm_anon, $is_enabled)
+function saveblock ($bid, $name, $title, $help, $type, $blockorder, $content, $tid, $rdfurl, $rdfupdated, $rdflimit, $phpblockfn, $onleft, $owner_id, $group_id, $perm_owner, $perm_group, $perm_members, $perm_anon, $is_enabled, $allow_autotags)
 {
-    global $_CONF, $_TABLES, $LANG01, $LANG21, $MESSAGE, $_POST;
+    global $_CONF, $_TABLES, $LANG01, $LANG21, $MESSAGE;
 
     $retval = '';
 
     $title = addslashes (COM_stripslashes (strip_tags ($title)));
-    $phpblockfn = addslashes (COM_stripslashes ($phpblockfn));
+    $phpblockfn = addslashes (COM_stripslashes (trim ($phpblockfn)));
     if (empty($title)) {
-        $retval .= COM_siteHeader()
+        $retval .= COM_siteHeader ('menu', $LANG21[63])
                 . COM_startBlock ($LANG21[63], '',
                           COM_getBlockTemplate ('_msg_block', 'header'))
                 . $LANG21[64]
@@ -433,6 +458,7 @@
                 . COM_siteFooter ();
         return $retval;
     }
+
     // Convert array values to numeric permission values
     list($perm_owner,$perm_group,$perm_members,$perm_anon) = SEC_getPermissionValues($perm_owner,$perm_group,$perm_members,$perm_anon);
 
@@ -448,26 +474,42 @@
                 $perm_members, $perm_anon);
     }
     if (($access < 3) || !hasBlockTopicAccess ($tid) || !SEC_inGroup ($group_id)) {
-        $retval .= COM_siteHeader('menu');
+        $retval .= COM_siteHeader('menu', $MESSAGE[30]);
         $retval .= COM_startBlock ($MESSAGE[30], '',
                             COM_getBlockTemplate ('_msg_block', 'header'));
-        $retval .= $MESSAGE[31];
+        $retval .= $MESSAGE[33];
         $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
         $retval .= COM_siteFooter();
         COM_accessLog("User {$_USER['username']} tried to illegally create or edit block $bid.");
 
         return $retval;
-    } elseif (($type == 'normal' && !empty($title) && !empty($content)) OR ($type == 'portal' && !empty($title) && !empty($rdfurl)) OR ($type == 'layout' && !empty($content)) OR ($type == 'gldefault' && (strlen($blockorder)>0)) OR ($type == 'phpblock' && !empty($phpblockfn) && !empty($title))) {
+    } elseif (($type == 'normal' && !empty($title) && !empty($content)) OR ($type == 'portal' && !empty($title) && !empty($rdfurl)) OR ($type == 'gldefault' && (strlen($blockorder)>0)) OR ($type == 'phpblock' && !empty($phpblockfn) && !empty($title))) {
         if ($is_enabled == 'on') {
             $is_enabled = 1;
         } else {
             $is_enabled = 0;
         }
+        if ($allow_autotags == 'on') {
+            $allow_autotags = 1;
+        } else {
+            $allow_autotags = 0;
+        }
 
         if ($type == 'portal') {
             $content = '';
             $rdfupdated = '';
             $phpblockfn = '';
+
+            // get rid of possible extra prefixes (e.g. "feed://http://...")
+            if (substr ($rdfurl, 0, 4) == 'rss:') {
+                $rdfurl = substr ($rdfurl, 4);
+            } else if (substr ($rdfurl, 0, 5) == 'feed:') {
+                $rdfurl = substr ($rdfurl, 5);
+            }
+            if (substr ($rdfurl, 0, 2) == '//') {
+                $rdfurl = substr ($rdfurl, 2);
+            }
+            $rdfurl = COM_sanitizeUrl ($rdfurl, array ('http', 'https'));
         }
         if ($type == 'gldefault') {
             if ($name != 'older_stories') {
@@ -484,7 +526,7 @@
             // must start with phpblock_ as the prefix.  This will prevent
             // the arbitrary execution of code
             if (!(stristr($phpblockfn,'phpblock_'))) {
-                $retval .= COM_siteHeader()
+                $retval .= COM_siteHeader ('menu', $LANG21[37])
                         . COM_startBlock ($LANG21[37], '',
                                   COM_getBlockTemplate ('_msg_block', 'header'))
                         . $LANG21[38]
@@ -509,18 +551,20 @@
         if ($rdflimit < 0) {
             $rdflimit = 0;
         }
-
+        if (!empty ($rdfurl)) {
+            $rdfurl = addslashes ($rdfurl);
+        }
         if (empty ($rdfupdated)) {
             $rdfupdated = '0000-00-00 00:00:00';
         }
 
         if ($bid > 0)
         {
-            DB_save($_TABLES['blocks'],'bid,name,title,help,type,blockorder,content,tid,rdfurl,rdfupdated,rdflimit,phpblockfn,onleft,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon,is_enabled',"$bid,'$name','$title','$help','$type','$blockorder','$content','$tid','$rdfurl','$rdfupdated','$rdflimit','$phpblockfn',$onleft,$owner_id,$group_id,$perm_owner,$perm_group,$perm_members,$perm_anon,$is_enabled");
+            DB_save($_TABLES['blocks'],'bid,name,title,help,type,blockorder,content,tid,rdfurl,rdfupdated,rdflimit,phpblockfn,onleft,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon,is_enabled,allow_autotags',"$bid,'$name','$title','$help','$type','$blockorder','$content','$tid','$rdfurl','$rdfupdated','$rdflimit','$phpblockfn',$onleft,$owner_id,$group_id,$perm_owner,$perm_group,$perm_members,$perm_anon,$is_enabled,$allow_autotags");
         } else {
             $sql = "INSERT INTO {$_TABLES['blocks']} "
-             .'(name,title,help,type,blockorder,content,tid,rdfurl,rdfupdated,rdflimit,phpblockfn,onleft,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon,is_enabled) '
-             ."VALUES ('$name','$title','$help','$type','$blockorder','$content','$tid','$rdfurl','$rdfupdated','$rdflimit','$phpblockfn',$onleft,$owner_id,$group_id,$perm_owner,$perm_group,$perm_members,$perm_anon,$is_enabled)";
+             .'(name,title,help,type,blockorder,content,tid,rdfurl,rdfupdated,rdflimit,phpblockfn,onleft,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon,is_enabled,allow_autotags) '
+             ."VALUES ('$name','$title','$help','$type','$blockorder','$content','$tid','$rdfurl','$rdfupdated','$rdflimit','$phpblockfn',$onleft,$owner_id,$group_id,$perm_owner,$perm_group,$perm_members,$perm_anon,$is_enabled,$allow_autotags)";
              DB_query($sql);
              $bid = DB_insertId();
         }
@@ -531,7 +575,7 @@
 
         return COM_refresh ($_CONF['site_admin_url'] . '/block.php?msg=11');
     } else {
-        $retval .= COM_siteHeader()
+        $retval .= COM_siteHeader ('menu', $LANG21[32])
                 . COM_startBlock ($LANG21[32], '',
                           COM_getBlockTemplate ('_msg_block', 'header'));
         if ($type == 'portal') {
@@ -596,12 +640,12 @@
 */
 function moveBlock()
 {
-    global $_CONF, $_TABLES, $LANG21, $_GET;
+    global $_CONF, $_TABLES, $LANG21;
 
     $retval = '';
 
-    $bid = $_GET['bid'];
-    $where = $_GET['where'];
+    $bid = COM_applyFilter($_GET['bid']);
+    $where = COM_applyFilter($_GET['where']);
 
     // if the block id exists
     if (DB_count($_TABLES['blocks'], "bid", $bid) == 1) {
@@ -640,6 +684,8 @@
 function changeBlockStatus ($bid)
 {
     global $_CONF, $_TABLES;
+    
+    $bid = COM_applyFilter($bid);
 
     if (DB_getItem($_TABLES['blocks'],"is_enabled", "bid=$bid")) {
         DB_query("UPDATE {$_TABLES['blocks']} set is_enabled = '0' WHERE bid=$bid");
@@ -698,15 +744,47 @@
         $display .= deleteBlock ($bid);
     }
 } else if (($mode == $LANG_ADMIN['save']) && !empty ($LANG_ADMIN['save'])) {
+    $help = '';
+    if (isset ($_POST['help'])) {
+        $help = COM_sanitizeUrl ($_POST['help'], array ('http', 'https'));
+    }
+    $content = '';
+    if (isset ($_POST['content'])) {
+        $content = $_POST['content'];
+    }
+    $rdfurl = '';
+    if (isset ($_POST['rdfurl'])) {
+        $rdfurl = $_POST['rdfurl']; // to be sanitized later
+    }
+    $rdfupdated = '';
+    if (isset ($_POST['rdfupdated'])) {
+        $rdfupdated = $_POST['rdfupdated'];
+    }
+    $rdflimit = 0;
+    if (isset ($_POST['rdflimit'])) {
+        $rdflimit = COM_applyFilter ($_POST['rdflimit'], true);
+    }
+    $phpblockfn = '';
+    if (isset ($_POST['phpblockfn'])) {
+        $phpblockfn = $_POST['phpblockfn'];
+    }
+    $is_enabled = '';
+    if (isset ($_POST['is_enabled'])) {
+        $is_enabled = $_POST['is_enabled'];
+    }
+    $allow_autotags = '';
+    if (isset ($_POST['allow_autotags'])) {
+        $allow_autotags = $_POST['allow_autotags'];
+    }
     $display .= saveblock ($bid, $_POST['name'], $_POST['title'],
-                $_POST['help'], $_POST['type'], $_POST['blockorder'],
-                $_POST['content'], $_POST['tid'], $_POST['rdfurl'],
-                $_POST['rdfupdated'],
-                COM_applyFilter ($_POST['rdflimit'], true),
-                $_POST['phpblockfn'], $_POST['onleft'],
-                $_POST['owner_id'], $_POST['group_id'], $_POST['perm_owner'],
-                $_POST['perm_group'], $_POST['perm_members'],
-                $_POST['perm_anon'], $_POST['is_enabled']);
+                    $help, $_POST['type'], $_POST['blockorder'], $content,
+                    COM_applyFilter ($_POST['tid']), $rdfurl, $rdfupdated,
+                    $rdflimit, $phpblockfn, $_POST['onleft'],
+                    COM_applyFilter ($_POST['owner_id'], true),
+                    COM_applyFilter ($_POST['group_id'], true),
+                    $_POST['perm_owner'], $_POST['perm_group'],
+                    $_POST['perm_members'], $_POST['perm_anon'],
+                    $is_enabled, $allow_autotags);
 } else if ($mode == 'edit') {
     $display .= COM_siteHeader ('menu', $LANG21[3])
              . editblock ($bid)
diff -ruN 1.4.0sr5-1.src/admin/database.php 1.4.1.src/admin/database.php
--- 1.4.0sr5-1.src/admin/database.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/database.php	2006-05-14 23:10:38.000000000 -0500
@@ -32,7 +32,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: database.php,v 1.32 2005/12/28 10:11:50 dhaun Exp $
+// $Id: database.php,v 1.33 2006/05/15 04:10:38 vinny Exp $
 
 require_once('../lib-common.php');
 require_once('auth.inc.php');
@@ -65,7 +65,7 @@
 
 function listbackups()
 {
-    global $_CONF, $_TABLES, $_IMAGE_TYPE, $LANG_ADMIN, $LANG_DB_BACKUP;
+    global $_CONF, $_TABLES, $_IMAGE_TYPE, $LANG08, $LANG_ADMIN, $LANG_DB_BACKUP;
     require_once( $_CONF['path_system'] . 'lib-admin.php' );
     $retval = '';
 
diff -ruN 1.4.0sr5-1.src/admin/event.php 1.4.1.src/admin/event.php
--- 1.4.0sr5-1.src/admin/event.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/event.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,666 +0,0 @@
-<?php
-
-/* Reminder: always indent with 4 spaces (no tabs). */
-// +---------------------------------------------------------------------------+
-// | Geeklog 1.4                                                               |
-// +---------------------------------------------------------------------------+
-// | event.php                                                                 |
-// |                                                                           |
-// | Geeklog event administration page.                                        |
-// +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2006 by the following authors:                         |
-// |                                                                           |
-// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
-// |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
-// |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
-// |          Dirk Haun         - dirk AT haun-online DOT de                   |
-// +---------------------------------------------------------------------------+
-// |                                                                           |
-// | This program is free software; you can redistribute it and/or             |
-// | modify it under the terms of the GNU General Public License               |
-// | as published by the Free Software Foundation; either version 2            |
-// | of the License, or (at your option) any later version.                    |
-// |                                                                           |
-// | This program is distributed in the hope that it will be useful,           |
-// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
-// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
-// | GNU General Public License for more details.                              |
-// |                                                                           |
-// | You should have received a copy of the GNU General Public License         |
-// | along with this program; if not, write to the Free Software Foundation,   |
-// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
-// |                                                                           |
-// +---------------------------------------------------------------------------+
-//
-// $Id: event.php,v 1.76 2006/01/28 12:16:28 dhaun Exp $
-
-require_once ('../lib-common.php');
-require_once ('auth.inc.php');
-
-// Uncomment the line below if you need to debug the HTTP variables being passed
-// to the script.  This will sometimes cause errors but it will allow you to see
-// the data being passed in a POST operation
-// COM_debug($_POST);
-
-$display = '';
-
-// Ensure user even has the rights to access this page
-if (!SEC_hasRights('event.edit')) {
-    $display .= COM_siteHeader('menu');
-    $display .= COM_startBlock ($MESSAGE[30], '',
-                                COM_getBlockTemplate ('_msg_block', 'header'));
-    $display .= $MESSAGE[35];
-    $display .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
-    $display .= COM_siteFooter();
-
-    // Log attempt to error.log
-    COM_accessLog("User {$_USER['username']} tried to illegally access the event administration screen.");
-
-    echo $display;
-
-    exit;
-}
-
-/**
-* Shows event editor
-*
-* @param    string  $mode   Indicates if this is a submission or a regular entry
-* @param    array   $A      array holding the event's details
-* @param    string  $msg    an optional error message to display
-* @return   string          HTML for event editor or error message
-*
-*/
-function editevent ($mode, $A, $msg = '') 
-{
-    global $_CONF, $_GROUPS, $_TABLES, $_USER, $LANG10, $LANG12, $LANG22,
-           $LANG30, $LANG_ACCESS, $_STATES, $LANG_ADMIN;
-
-    require_once( $_CONF['path_system'] . 'lib-admin.php' );
-
-    $retval = '';
-
-    if (!empty ($msg)) {
-        $retval .= COM_startBlock ($LANG22[2], '',
-                        COM_getBlockTemplate ('_msg_block', 'header'));
-        $retval .= $msg;
-        $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
-    }
-
-    $event_templates = new Template($_CONF['path_layout'] . 'admin/event');
-    $event_templates->set_file('editor','eventeditor.thtml');
-    $event_templates->set_var('site_url', $_CONF['site_url']);
-    $event_templates->set_var('site_admin_url', $_CONF['site_admin_url']);
-    $event_templates->set_var('layout_url',$_CONF['layout_url']);
-    $event_templates->set_var('lang_allowed_html', COM_allowedHTML());
-    $event_templates->set_var('lang_postmode', $LANG22[3]);
-
-    if ($mode <> 'editsubmission' AND !empty($A['eid'])) {
-        // Get what level of access user has to this object
-        $access = SEC_hasAccess($A['owner_id'],$A['group_id'],$A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']);
-        if ($access == 0 OR $access == 2) {
-            // Uh, oh!  User doesn't have access to this object
-            $retval .= COM_startBlock ($LANG_ACCESS['accessdenied'], '',
-                               COM_getBlockTemplate ('_msg_block', 'header'));
-            $retval .= $LANG22[17];
-            $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
-            COM_accessLog("User {$_USER['username']} tried to illegally submit or edit event $eid.");
-            return $retval;
-        }
-    } else {
-        $A['owner_id'] = $_USER['uid'];
-        if (isset ($_GROUPS['Event Admin'])) {
-            $A['group_id'] = $_GROUPS['Event Admin'];
-        } else {
-            $A['group_id'] = SEC_getFeatureGroup ('event.edit');
-        }
-        SEC_setDefaultPermissions ($A, $_CONF['default_permissions_event']);
-        $access = 3;
-    }
-    
-    if ($mode == 'editsubmission') {
-        $event_templates->set_var('post_options', COM_optionList($_TABLES['postmodes'],'code,name','plaintext'));
-    } else {
-        $event_templates->set_var('post_options', COM_optionList($_TABLES['postmodes'],'code,name',$A['postmode']));
-    }
-
-    $retval .= COM_startBlock($LANG22[1], '',
-                              COM_getBlockTemplate ('_admin_block', 'header'));
-
-    if (!empty($A['eid']) && SEC_hasRights('event.edit')) {
-        $event_templates->set_var ('delete_option',
-            '<input type="submit" value="' . $LANG22[22] . '" name="mode">');
-    }
-
-    if (empty ($A['eid'])) { // new event
-        $A['eid'] = COM_makesid ();
-
-        // in case a start date/time has been passed from the calendar,
-        // pick it up for the end date/time
-        if (empty ($A['dateend'])) {
-            $A['dateend'] = $A['datestart'];
-        }
-        if (empty ($A['timeend'])) {
-            $A['timeend'] = $A['timestart'];
-        }
-    }
-
-    $event_templates->set_var('event_id', $A['eid']);
-    $event_templates->set_var('lang_eventtitle', $LANG_ADMIN['title']);
-    $A['title'] = str_replace('{','&#123;',$A['title']);
-    $A['title'] = str_replace('}','&#125;',$A['title']);
-    $A['title'] = str_replace('"','&quot;',$A['title']);
-    $event_templates->set_var('event_title', stripslashes ($A['title']));
-    $types  = explode(',',$_CONF['event_types']);
-    asort ($types);
-    $catdd = '';
-    for ($i = 1; $i <= count($types); $i++) {
-        $catdd .= '<option value="' . current($types) . '"';
-        if ($A['event_type'] == current($types)) {
-            $catdd .= ' selected="selected"';
-        }
-        $catdd .= '>' . current($types) . '</option>';
-        next($types);
-    }
-    $event_templates->set_var('lang_eventtype', $LANG12[49]);
-    $event_templates->set_var('lang_editeventtypes', $LANG12[50]);
-    $event_templates->set_var('type_options', $catdd);
-    $event_templates->set_var('lang_eventurl', $LANG22[4]);
-    $event_templates->set_var('max_url_length', 255);
-    $event_templates->set_var('event_url', $A['url']);
-    $event_templates->set_var('lang_includehttp', $LANG22[9]);
-    $event_templates->set_var('lang_eventstartdate', $LANG22[5]);
-    //$event_templates->set_var('event_startdate', $A['datestart']);
-    $event_templates->set_var('lang_starttime', $LANG12[42]);
-
-    // Combine date/time for easier manipulation
-    $A['datestart'] = trim ($A['datestart'] . ' ' . $A['timestart']);
-    if (empty ($A['datestart'])) {
-        $start_stamp = time ();
-    } else {
-        $start_stamp = strtotime ($A['datestart']);
-    }
-    $A['dateend'] = trim ($A['dateend'] . ' ' . $A['timeend']);
-    if (empty ($A['dateend'])) {
-        $end_stamp = time ();
-    } else {
-        $end_stamp = strtotime ($A['dateend']);
-    }
-    $start_month = date('m', $start_stamp);
-    $start_day = date('d', $start_stamp);
-    $start_year = date('Y', $start_stamp);
-    $end_month = date('m', $end_stamp);
-    $end_day = date('d', $end_stamp);
-    $end_year = date('Y', $end_stamp);
-
-    $start_hour = date('H', $start_stamp);
-    $start_minute = date('i', $start_stamp);
-    if ($start_hour >= 12) {
-        $event_templates->set_var ('startam_selected', '');
-        $event_templates->set_var ('startpm_selected', 'selected="selected"');
-    } else {
-        $event_templates->set_var ('startam_selected', 'selected="selected"');
-        $event_templates->set_var ('startpm_selected', '');
-    }
-    if ($start_hour > 12) {
-        $start_hour = $start_hour - 12;
-    } else if ($start_hour == 0) {
-        $start_hour = 12;
-    }
-
-    $end_hour = date('H', $end_stamp);
-    $end_minute = date('i', $end_stamp);
-    if ($end_hour >= 12) {
-        $event_templates->set_var ('endam_selected', '');
-        $event_templates->set_var ('endpm_selected', 'selected="selected"');
-    } else {
-        $event_templates->set_var ('endam_selected', 'selected="selected"');
-        $event_templates->set_var ('endpm_selected', '');
-    }
-    if ($end_hour > 12) {
-        $end_hour = $end_hour - 12;
-    } else if ($end_hour == 0) {
-        $end_hour = 12;
-    }
-
-    $month_options = COM_getMonthFormOptions ($start_month);
-    $event_templates->set_var ('startmonth_options', $month_options);
-
-    $month_options = COM_getMonthFormOptions ($end_month);
-    $event_templates->set_var ('endmonth_options', $month_options);
-
-    $day_options = COM_getDayFormOptions ($start_day);
-    $event_templates->set_var ('startday_options', $day_options);
-
-    $day_options = COM_getDayFormOptions ($end_day);
-    $event_templates->set_var ('endday_options', $day_options);
-
-    $year_options = COM_getYearFormOptions ($start_year);
-    $event_templates->set_var ('startyear_options', $year_options);
-
-    $year_options = COM_getYearFormOptions ($end_year);
-    $event_templates->set_var ('endyear_options', $year_options);
-
-    $hour_options = COM_getHourFormOptions ($start_hour);
-    $event_templates->set_var ('starthour_options', $hour_options);
-
-    $hour_options = COM_getHourFormOptions ($end_hour);
-    $event_templates->set_var ('endhour_options', $hour_options);
-
-    // Set minute for start time
-    switch ($start_minute) {
-    case '00':
-        $event_templates->set_var('startminuteoption1_selected', 'selected="selected"');
-        break;
-    case '15':
-        $event_templates->set_var('startminuteoption2_selected', 'selected="selected"');
-        break;
-    case '30':
-        $event_templates->set_var('startminuteoption3_selected', 'selected="selected"');
-        break;
-    case '45':
-        $event_templates->set_var('startminuteoption4_selected', 'selected="selected"');
-        break;
-    }
-
-    // Set minute for end time
-    switch ($end_minute) {
-    case '00':
-        $event_templates->set_var('endminuteoption1_selected', 'selected="selected"');
-        break;
-    case '15':
-        $event_templates->set_var('endminuteoption2_selected', 'selected="selected"');
-        break;
-    case '30':
-        $event_templates->set_var('endminuteoption3_selected', 'selected="selected"');
-        break;
-    case '45':
-        $event_templates->set_var('endminuteoption4_selected', 'selected="selected"');
-        break;
-    }
-
-    $event_templates->set_var('lang_enddate', $LANG12[13]);
-    $event_templates->set_var('lang_eventenddate', $LANG22[6]);
-    $event_templates->set_var('event_enddate', $A['dateend']);
-    $event_templates->set_var('hour_options', $hour_options);
-    $event_templates->set_var('lang_enddate', $LANG12[13]);
-    $event_templates->set_var('lang_endtime', $LANG12[41]);
-    $event_templates->set_var('lang_alldayevent',$LANG12[43]);
-    if ($A['allday'] == 1) {
-        $event_templates->set_var('allday_checked', 'checked="CHECKED"');
-    }
-    $event_templates->set_var('lang_location',$LANG12[51]);
-    $event_templates->set_var('event_location', stripslashes ($A['location']));
-    $event_templates->set_var('lang_addressline1',$LANG12[44]);
-    $event_templates->set_var('event_address1', stripslashes ($A['address1']));
-    $event_templates->set_var('lang_addressline2',$LANG12[45]);
-    $event_templates->set_var('event_address2', stripslashes ($A['address2']));
-    $event_templates->set_var('lang_city',$LANG12[46]);
-    $event_templates->set_var('event_city', stripslashes ($A['city']));
-    $event_templates->set_var('lang_state',$LANG12[47]);
-
-    $state_options = '';
-    foreach ($_STATES as $abbr => $state) {
-        $state_options .= '<option value="' . $abbr . '" ';
-        if ($abbr == $A['state']) {
-            $state_options .= 'selected="selected"';
-        }
-        $state_options .= '>' . $state . '</option>';
-    }
-
-    $event_templates->set_var('state_options',$state_options);
-    $event_templates->set_var('lang_zipcode',$LANG12[48]);
-    $event_templates->set_var('event_zipcode', $A['zipcode']);
-    $event_templates->set_var('lang_eventlocation', $LANG22[7]);
-    $event_templates->set_var('event_location', stripslashes ($A['location']));
-    $event_templates->set_var('lang_eventdescription', $LANG22[8]);
-    $event_templates->set_var('event_description', stripslashes ($A['description']));
-    $event_templates->set_var('lang_hits', $LANG10[30]);
-    $event_templates->set_var('hits', COM_numberFormat ($A['hits']));
-    $event_templates->set_var('lang_save', $LANG22[20]);
-    $event_templates->set_var('lang_cancel', $LANG22[21]);
-
-    // user access info
-    $event_templates->set_var('lang_accessrights',$LANG_ACCESS['accessrights']);
-    $event_templates->set_var('lang_owner', $LANG_ACCESS['owner']);
-    $event_templates->set_var('owner_username', DB_getItem($_TABLES['users'],'username',"uid = {$A['owner_id']}"));
-    $event_templates->set_var('owner_id', $A['owner_id']);
-    $event_templates->set_var('lang_group', $LANG_ACCESS['group']);
-
-    $groupdd = '';
-    $usergroups = SEC_getUserGroups();
-    if ($access == 3) {
-        $groupdd .= '<select name="group_id">';
-        for ($i = 0; $i < count($usergroups); $i++) {
-            $groupdd .= '<option value="' . $usergroups[key($usergroups)] . '"';
-            if ($A['group_id'] == $usergroups[key($usergroups)]) {
-                $groupdd .= ' selected="selected"';
-            }
-            $groupdd .= '>' . key($usergroups) . '</option>';
-            next($usergroups);
-        }
-        $groupdd.= '</select>';
-    } else {
-        // they can't set the group then
-        $groupdd .= DB_getItem($_TABLES['groups'],'grp_name',"grp_id = {$A['group_id']}");
-        $groupdd .= '<input type="hidden" name="group_id" value="' . $A['group_id'] . '">';
-    }
-    $event_templates->set_var('group_dropdown', $groupdd);
-    $event_templates->set_var('lang_permissions', $LANG_ACCESS['permissions']);
-    $event_templates->set_var('lang_permissionskey', $LANG_ACCESS['permissionskey']);
-    $event_templates->set_var('permissions_editor', SEC_getPermissionsHTML($A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']));
-    $event_templates->parse('output', 'editor');
-    $retval .= $event_templates->finish($event_templates->get_var('output'));
-    $retval .= COM_endBlock (COM_getBlockTemplate ('_admin_block', 'footer'));
-
-    return $retval;
-}
-
-/**
-* Saves an event to the database
-*
-* @param    string  $eid            Event ID
-* @param    string  $title          Event Title
-* @param    string  $url            URL for the event
-* @param    string  $datestart      Date the event begins on
-* @param    string  $dateend        Date the event ends on
-* @param    string  $location       Where the event will be held at
-* @param    string  $description    Description about the event
-* @param    string  $postmode       Is this HTML or plain text?
-* @param    string  $owner_id       ID of owner
-* @param    string  $group_id       ID of group event belongs to
-* @param    string  $perm_owner     Permissions the owner has on event
-* @param    string  $perm_group     Permissions the groups has on the event
-* @param    string  $perm_members   Permisssions members have on the event
-* @param    string  $perm_anon      Permissions anonymous users have
-* @return   string                  HTML redirect or error message
-*
-*/
-function saveevent ($eid, $title, $event_type, $url, $allday, $start_month, $start_day, $start_year, $start_hour, $start_minute, $start_ampm, $end_month, $end_day, $end_year, $end_hour, $end_minute, $end_ampm, $location, $address1, $address2, $city, $state, $zipcode, $description, $postmode, $owner_id, $group_id, $perm_owner, $perm_group, $perm_members, $perm_anon, $mode)
-{
-    global $_CONF, $_TABLES, $_USER, $LANG22;
-
-    $retval = '';
-
-    // Convert array values to numeric permission values
-    list($perm_owner,$perm_group,$perm_members,$perm_anon) = SEC_getPermissionValues($perm_owner,$perm_group,$perm_members,$perm_anon);
-
-    $access = 0;
-    if (DB_count ($_TABLES['events'], 'eid', $eid) > 0) {
-        $result = DB_query ("SELECT owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon FROM {$_TABLES['events']} WHERE eid = '{$eid}'");
-        $A = DB_fetchArray ($result);
-        $access = SEC_hasAccess ($A['owner_id'], $A['group_id'],
-                $A['perm_owner'], $A['perm_group'], $A['perm_members'],
-                $A['perm_anon']);
-    } else {
-        $access = SEC_hasAccess ($owner_id, $group_id, $perm_owner, $perm_group,
-                $perm_members, $perm_anon);
-    }
-    if (($access < 3) || !SEC_inGroup ($group_id)) {
-        $retval .= COM_siteHeader('menu');
-        $retval .= COM_startBlock ($MESSAGE[30], '',
-                            COM_getBlockTemplate ('_msg_block', 'header'));
-        $retval .= $MESSAGE[31];
-        $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
-        $retval .= COM_siteFooter();
-        COM_accessLog ("User {$_USER['username']} tried to illegally submit or edit event $eid.");
-        return $retval;
-    }
-
-    if ($allday == 'on') {
-        $allday = 1;
-    } else {
-        $allday = 0;
-    }
-
-    // Make sure start date is before end date
-    if (checkdate ($start_month, $start_day, $start_year)) {
-        $datestart = $start_year . '-' . $start_month . '-' . $start_day;
-        $timestart = $start_hour . ':' . $start_minute . ':00';
-    } else {
-        $retval .= COM_siteHeader ('menu');
-        $retval .= COM_startBlock ($LANG22[2], '',
-                            COM_getBlockTemplate ('_msg_block', 'header'));
-        $retval .= $LANG22[23];
-        $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
-        $retval .= COM_siteFooter ();
-
-        return $retval;
-    }
-    if (checkdate ($end_month, $end_day, $end_year)) {
-        $dateend = $end_year . '-' . $end_month . '-' . $end_day;
-        $timeend = $end_hour . ':' . $end_minute . ':00';
-    } else {
-        $retval .= COM_siteHeader ('menu');
-        $retval .= COM_startBlock ($LANG22[2], '',
-                            COM_getBlockTemplate ('_msg_block', 'header'));
-        $retval .= $LANG22[24];
-        $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
-        $retval .= COM_siteFooter ();
-
-        return $retval;
-    }
-    if ($allday == 0) {
-        if ($dateend < $datestart) {
-            $retval .= COM_siteHeader ('menu');
-            $retval .= COM_startBlock ($LANG22[2], '',
-                                COM_getBlockTemplate ('_msg_block', 'header'));
-            $retval .= $LANG22[25];
-            $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
-            $retval .= COM_siteFooter ();
-
-            return $retval;
-        }
-    } else {
-        if ($dateend < $datestart) {
-            // Force end date to be same as start date
-            $dateend = $datestart;
-        }
-    }
-
-    // clean 'em up 
-    if ($postmode == 'html') {
-        $description = COM_checkHTML (COM_checkWords ($description));
-    } else {
-        $description = htmlspecialchars (COM_checkWords ($description));
-    }
-    $description = addslashes ($description);
-    $title = addslashes (COM_checkHTML (COM_checkWords ($title)));
-    $location = addslashes (COM_checkHTML (COM_checkWords ($location)));
-    $address1 = addslashes (COM_checkHTML (COM_checkWords ($address1)));
-    $address2 = addslashes (COM_checkHTML (COM_checkWords ($address2)));
-    $city = addslashes (COM_checkHTML (COM_checkWords ($city)));
-    $zipcode =  addslashes (COM_checkHTML (COM_checkWords ($zipcode)));
-    if ($allday == 0) {
-        // Add 12 to make time on 24 hour clock if needed
-        if ($start_ampm == 'pm' AND $start_hour <> 12) {
-            $start_hour = $start_hour + 12;
-        }
-        // If 12AM set hour to 00
-        if ($start_ampm == 'am' AND $start_hour == 12) {
-            $start_hour = '00';
-        }
-        // Add 12 to make time on 24 hour clock if needed
-        if ($end_ampm == 'pm' AND $end_hour <> 12) {
-           $end_hour = $end_hour + 12;
-        }
-        // If 12AM set hour to 00
-        if ($end_ampm == 'am' AND $end_hour == 12) {
-            $end_hour = '00';
-        }
-        $timestart = $start_hour . ':' . $start_minute . ':00';
-        $timeend = $end_hour . ':' . $end_minute . ':00';
-    }
-
-    if (!empty ($eid) AND !empty ($description) AND !empty ($title)) {
-        DB_delete ($_TABLES['eventsubmission'], 'eid', $eid);
-
-        DB_save($_TABLES['events'],'eid,title,event_type,url,allday,datestart,dateend,timestart,timeend,location,address1,address2,city,state,zipcode,description,postmode,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon',"$eid,'$title','$event_type','$url',$allday,'$datestart','$dateend','$timestart','$timeend','$location','$address1','$address2','$city','$state','$zipcode','$description','$postmode',$owner_id,$group_id,$perm_owner,$perm_group,$perm_members,$perm_anon");
-        if (DB_count ($_TABLES['personal_events'], 'eid', $eid) > 0) {
-            $result = DB_query ("SELECT uid FROM {$_TABLES['personal_events']} WHERE eid = '{$eid}'");
-            $numrows = DB_numRows ($result);
-            for ($i = 1; $i <= $numrows; $i++) {
-                $P = DB_fetchArray ($result);
-                DB_save ($_TABLES['personal_events'], 'eid,title,event_type,datestart,dateend,address1,address2,city,state,zipcode,allday,url,description,postmode,group_id,owner_id,perm_owner,perm_group,perm_members,perm_anon,uid,location,timestart,timeend',
-                    "$eid,'$title','$event_type','$datestart','$dateend','$address1','$address2','$city','$state','$zipcode',$allday,'$url','$description','$postmode',$group_id,$owner_id,$perm_owner,$perm_group,$perm_members,$perm_anon,{$P['uid']},'$location','$timestart','$timeend'");
-            }
-        }
-        COM_rdfUpToDateCheck ('geeklog', '::events', $eid);
-
-        return COM_refresh ($_CONF['site_admin_url'] . '/event.php?msg=17');
-    } else {
-        $retval .= COM_siteHeader ('menu');
-        $retval .= COM_startBlock ($LANG22[2], '',
-                            COM_getBlockTemplate ('_msg_block', 'header'));
-        $retval .= $LANG22[10];
-        $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
-        $retval .= COM_siteFooter ();
-
-        return $retval;
-    }
-}
-
-function listevents()
-{
-    global $_CONF, $_TABLES, $LANG_ADMIN, $LANG22, $LANG_ACCESS, $_IMAGE_TYPE;
-    require_once( $_CONF['path_system'] . 'lib-admin.php' );
-    $retval = '';
-    $header_arr = array(      # dislay 'text' and use table field 'field'
-                    array('text' => $LANG_ADMIN['edit'], 'field' => 'edit', 'sort' => false),
-                    array('text' => $LANG_ADMIN['copy'], 'field' => 'copy', 'sort' => false),
-                    array('text' => $LANG_ADMIN['title'], 'field' => 'title', 'sort' => true),
-                    array('text' => $LANG22[13], 'field' => 'username', 'sort' => true),
-                    array('text' => $LANG_ACCESS['access'], 'field' => 'access', 'sort' => false),
-                    array('text' => $LANG22[14], 'field' => 'datestart', 'sort' => true),
-                    array('text' => $LANG22[15], 'field' => 'dateend', 'sort' => true)
-    );
-
-    $defsort_arr = array('field' => 'datestart', 'direction' => 'desc');
-
-    $menu_arr = array (
-                    array('url' => $_CONF['site_admin_url'] . '/event.php?mode=edit',
-                          'text' => $LANG_ADMIN['create_new']),
-                    array('url' => $_CONF['site_admin_url'],
-                          'text' => $LANG_ADMIN['admin_home'])
-    );
-
-    $text_arr = array('has_menu' =>  true,
-                      'has_extras'   => true,
-                      'title' => $LANG22[11], 'instructions' => $LANG22[12],
-                      'icon' => $_CONF['layout_url'] . '/images/icons/event.'
-                                . $_IMAGE_TYPE,
-                      'form_url' => $_CONF['site_admin_url'] . "/event.php");
-
-    $sql = "SELECT {$_TABLES['events']}.*, {$_TABLES['users']}.username FROM {$_TABLES['events']} "
-          ."LEFT JOIN {$_TABLES['users']} ON {$_TABLES['events']}.owner_id={$_TABLES['users']}.uid "
-          ."WHERE 1 ";
-
-    $query_arr = array('table' => 'events',
-                       'sql' => $sql,
-                       'query_fields' => array('title', 'datestart', 'dateend'),
-                       'default_filter' => COM_getPermSQL('AND'));
-
-    $retval .= ADMIN_list ("events", "ADMIN_getListField_events", $header_arr, $text_arr,
-                            $query_arr, $menu_arr, $defsort_arr);
-    return $retval;
-
-}
-
-/**
-* Delete an event
-*
-* @param    string  $eid    id of event to delete
-* @param    string          HTML redirect
-*/
-function deleteEvent ($eid)
-{
-    global $_CONF, $_TABLES, $_USER;
-
-    $result = DB_query ("SELECT owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon FROM {$_TABLES['events']} WHERE eid = '$eid'");
-    $A = DB_fetchArray ($result);
-    $access = SEC_hasAccess ($A['owner_id'], $A['group_id'], $A['perm_owner'],
-            $A['perm_group'], $A['perm_members'], $A['perm_anon']);
-    if ($access < 3) {
-        COM_accessLog ("User {$_USER['username']} tried to illegally delete event $eid.");
-        return COM_refresh ($_CONF['site_admin_url'] . '/event.php');
-    }
-
-    DB_delete ($_TABLES['events'], 'eid', $eid);
-    DB_delete ($_TABLES['personal_events'], 'eid', $eid);
-
-    return COM_refresh ($_CONF['site_admin_url'] . '/event.php?msg=18');
-}
-
-// MAIN
-$mode = '';
-if (isset($_REQUEST['mode'])) {
-    $mode = $_REQUEST['mode'];
-}
-
-if (($mode == $LANG22[22]) && !empty ($LANG22[22])) { // delete
-    $eid = COM_applyFilter ($_REQUEST['eid']);
-    if (!isset ($eid) || empty ($eid) || ($eid == 0)) {
-        COM_errorLog ('Attempted to delete event eid=\''
-                      . $_REQUEST['eid'] . "'");
-        $display .= COM_refresh ($_CONF['site_admin_url'] . '/event.php');
-    } else {
-        $display .= deleteEvent ($eid);
-    }
-} else if (($mode == $LANG22[20]) && !empty ($LANG22[20])) { // save
-    $display .= saveevent (COM_applyFilter ($_POST['eid']),
-            $_POST['title'], $_POST['event_type'],
-            $_POST['url'], $_POST['allday'],
-            $_POST['start_month'], $_POST['start_day'],
-            $_POST['start_year'], $_POST['start_hour'],
-            $_POST['start_minute'], $_POST['start_ampm'],
-            $_POST['end_month'], $_POST['end_day'],
-            $_POST['end_year'], $_POST['end_hour'],
-            $_POST['end_minute'], $_POST['end_ampm'],
-            $_POST['location'], $_POST['address1'],
-            $_POST['address2'], $_POST['city'],
-            $_POST['state'], $_POST['zipcode'],
-            $_POST['description'], $_POST['postmode'] ,
-            $_POST['owner_id'], $_POST['group_id'],
-            $_POST['perm_owner'], $_POST['perm_group'],
-            $_POST['perm_members'], $_POST['perm_anon'], $mode);
-} else if ($mode == 'editsubmission') {
-    $id = COM_applyFilter ($_REQUEST['id']);
-    $result = DB_query ("SELECT * FROM {$_TABLES['eventsubmission']} WHERE eid ='$id'");
-    $A = DB_fetchArray ($result);
-    $display .= COM_siteHeader ('menu');
-    $display .= editevent ($mode, $A);
-    $display .= COM_siteFooter ();
-} else if ($mode == 'clone') {
-    $eid = COM_applyFilter ($_REQUEST['eid']);
-    $result = DB_query ("SELECT * FROM {$_TABLES['events']} WHERE eid ='$eid'");
-    $A = DB_fetchArray ($result);
-    $A['eid'] = COM_makesid ();
-    $A['owner_id'] = $_USER['uid'];
-    $display .= COM_siteHeader ('menu');
-    $display .= editevent ($mode, $A);
-    $display .= COM_siteFooter ();
-} else if ($mode == 'edit') {
-    $eid = COM_applyFilter ($_REQUEST['eid']);
-    if (empty ($eid)) {
-        $A = array ();
-        $A['datestart'] = COM_applyFilter ($_REQUEST['datestart']);
-        $A['timestart'] = COM_applyFilter ($_REQUEST['timestart']);
-    } else {
-        $result = DB_query ("SELECT * FROM {$_TABLES['events']} WHERE eid ='$eid'");
-        $A = DB_fetchArray ($result);
-    }
-    $display .= COM_siteHeader ('menu', $LANG22[1]);
-    $display .= editevent ($mode, $A);
-    $display .= COM_siteFooter ();
-} else { // 'cancel' or no mode at all
-    $display .= COM_siteHeader ('menu', $LANG22[11]);
-    if (isset ($_REQUEST['msg'])) {
-        $display .= COM_showMessage (COM_applyFilter ($_REQUEST['msg'],
-                                                      true));
-    }
-    $display .= listevents();
-    $display .= COM_siteFooter ();
-}
-
-echo $display;
-
-?>
diff -ruN 1.4.0sr5-1.src/admin/group.php 1.4.1.src/admin/group.php
--- 1.4.0sr5-1.src/admin/group.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/group.php	2006-11-01 13:38:56.000000000 -0600
@@ -2,13 +2,13 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Geeklog 1.3                                                               |
+// | Geeklog 1.4                                                               |
 // +---------------------------------------------------------------------------+
 // | group.php                                                                 |
 // |                                                                           |
 // | Geeklog group administration page.                                        |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
 // |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
@@ -32,7 +32,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: group.php,v 1.63 2005/12/22 14:39:46 ospiess Exp $
+// $Id: group.php,v 1.93 2006/11/01 19:38:56 dhaun Exp $
 
 /**
 * This file is the Geeklog Group administration page
@@ -60,10 +60,10 @@
 
 // Make sure user has rights to access this page
 if (!SEC_hasRights ('group.edit')) {
-    $display .= COM_siteHeader ('menu');
+    $display .= COM_siteHeader ('menu', $MESSAGE[30]);
     $display .= COM_startBlock ($MESSAGE[30], '',
                                 COM_getBlockTemplate ('_msg_block', 'header'));
-    $display .= $MESSAGE[32];
+    $display .= $MESSAGE[37];
     $display .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
     $display .= COM_siteFooter ();
     COM_accessLog ("User {$_USER['username']} tried to illegally access the group administration screen.");
@@ -80,7 +80,8 @@
 */
 function editgroup($grp_id = '')
 {
-    global $_TABLES, $_CONF, $_USER, $LANG_ACCESS, $VERBOSE;
+    global $_TABLES, $_CONF, $_USER, $LANG_ACCESS, $LANG_ADMIN, $MESSAGE,
+           $LANG28, $VERBOSE;
 
     $retval = '';
 
@@ -108,18 +109,24 @@
     $group_templates->set_var('site_url', $_CONF['site_url']);
     $group_templates->set_var('site_admin_url', $_CONF['site_admin_url']);
     $group_templates->set_var('layout_url', $_CONF['layout_url']);
-    $group_templates->set_var('lang_save', $LANG_ACCESS['save']);
-    $group_templates->set_var('lang_cancel', $LANG_ACCESS['cancel']);
+    $group_templates->set_var('lang_save', $LANG_ADMIN['save']);
+    $group_templates->set_var('lang_cancel', $LANG_ADMIN['cancel']);
+    $group_templates->set_var('lang_admingroup',$LANG28[49]);
+    $group_templates->set_var('lang_admingrp_msg', $LANG28[50]);
+    $showall = 0;
+    if (isset ($_GET['chk_showall'])) {
+        $showall =  COM_applyFilter ($_GET['chk_showall'], true);
+    }
+    $group_templates->set_var('show_all', $showall);
 
-    if (!empty($grp_id)) {
-        $result = DB_query("SELECT * FROM {$_TABLES['groups']} WHERE grp_id ='$grp_id'");
-        $A = DB_fetchArray($result);
+    if (!empty ($grp_id)) {
+        $result = DB_query ("SELECT grp_id,grp_name,grp_descr,grp_gl_core FROM {$_TABLES['groups']} WHERE grp_id ='$grp_id'");
+        $A = DB_fetchArray ($result);
+        if ($A['grp_gl_core'] > 0) {
+            $group_templates->set_var ('chk_adminuse', 'checked="checked"');
+        }
     } else {
-        $A['owner_id'] = $_USER['uid'];
-
-        // this is the one instance where we default the group
-        // most topics should belong to the normal user group
-        $A['group_id'] = DB_getItem($_TABLES['groups'],'grp_id',"grp_name = 'Normal User'");
+        // new group, so it's obviously not a core group
         $A['grp_gl_core'] = 0;
     }
 
@@ -127,31 +134,45 @@
                                COM_getBlockTemplate ('_admin_block', 'header'));
 
     if (!empty($grp_id)) {
-        if ($A['grp_gl_core'] == 0) {
-            // Groups tied to Geeklogs functionality shouldn't be deleted
-            $group_templates->set_var('delete_option', '<input type="submit" value="' . $LANG_ACCESS['delete'] . '" name="mode">');
-            $group_templates->set_var('group_core', 0);
+        // Groups tied to Geeklog's functionality shouldn't be deleted
+        if ($A['grp_gl_core'] != 1) {
+            $delbutton = '<input type="submit" value="' . $LANG_ADMIN['delete']
+                       . '" name="mode"%s>';
+            $jsconfirm = ' onclick="return confirm(\'' . $MESSAGE[76] . '\');"';
+            $group_templates->set_var ('delete_option',
+                                       sprintf ($delbutton, $jsconfirm));
+            $group_templates->set_var ('delete_option_no_confirmation',
+                                       sprintf ($delbutton, ''));
+            $group_templates->set_var ('group_core', 0);
         } else {
-            $group_templates->set_var('group_core', 1);
+            $group_templates->set_var ('group_core', 1);
         }
-        $group_templates->set_var('group_id', $A['grp_id']);
+        $group_templates->set_var ('group_id', $A['grp_id']);
     } else {
-        $group_templates->set_var('group_core', 0);
+        $group_templates->set_var ('group_core', 0);
     }
 
     $group_templates->set_var('lang_groupname', $LANG_ACCESS['groupname']);
 
-    if ($A['grp_gl_core'] == 0) {
+    if ($A['grp_gl_core'] != 1) {
         $group_templates->set_var('groupname_inputtype', 'text');
         $group_templates->set_var('groupname_static', '');
     } else {
         $group_templates->set_var('groupname_inputtype', 'hidden');
         $group_templates->set_var('groupname_static', $A['grp_name']);
     }
-    $group_templates->set_var('group_name', $A['grp_name']);
+    if (isset ($A['grp_name'])) {
+        $group_templates->set_var('group_name', $A['grp_name']);
+    } else {
+        $group_templates->set_var('group_name', '');
+    }
 
     $group_templates->set_var('lang_description', $LANG_ACCESS['description']);
-    $group_templates->set_var('group_description', $A['grp_descr']);
+    if (isset ($A['grp_descr'])) {
+        $group_templates->set_var('group_description', $A['grp_descr']);
+    } else {
+        $group_templates->set_var('group_description', '');
+    }
     $group_templates->set_var('lang_securitygroups', $LANG_ACCESS['securitygroups']);
 
     //$groups = SEC_getUserGroups('','',$grp_id);
@@ -170,6 +191,7 @@
     }
     if ($A['grp_gl_core'] == 1) {
         $group_templates->set_var('lang_securitygroupmsg', $LANG_ACCESS['coregroupmsg']);
+        $group_templates->set_var('hide_adminoption',' style="display:none;"');
 
         if (!empty($selected)) {
             $inclause = str_replace(' ',',',$selected);
@@ -192,6 +214,7 @@
         }
     } else {
         $group_templates->set_var('lang_securitygroupmsg', $LANG_ACCESS['groupmsg']);
+        $group_templates->set_var('hide_adminoption','');
         if ($VERBOSE) {
             COM_errorLog("SELECTED: $selected");
         }
@@ -307,6 +330,7 @@
     $features = DB_query ("SELECT ft_id,ft_name,ft_descr FROM {$_TABLES['features']}{$ftWhere} ORDER BY ft_name");
     $nfeatures = DB_numRows($features);
 
+    $grpftarray = array ();
     if (!empty($grp_id)) {
         // now get all the feature this group gets directly
          $directfeatures = DB_query("SELECT acc_ft_id,ft_name FROM {$_TABLES['access']},{$_TABLES['features']} WHERE ft_id = acc_ft_id AND acc_grp_id = $grp_id",1);
@@ -318,7 +342,6 @@
         $indirectfeatures = explode (',', $indirectfeatures);
 
         // Build an array of indirect features
-        $grpftarray = array ();
         for ($i = 0; $i < sizeof($indirectfeatures); $i++) {
             $grpftarray[current($indirectfeatures)] = 'indirect';
             next($indirectfeatures);
@@ -353,17 +376,19 @@
         }
         $A = DB_fetchArray($features);
 
-        if ((($grpftarray[$A['ft_name']] == 'direct') OR empty($grpftarray[$A['ft_name']])) AND ($core == 0)) {
+        if ((empty($grpftarray[$A['ft_name']]) OR ($grpftarray[$A['ft_name']] == 'direct')) AND ($core != 1)) {
             $ftcount++;
             $retval .= '<td><input type="checkbox" name="features[]" value="'. $A['ft_id'] . '"';
-            if ($grpftarray[$A['ft_name']] == 'direct') {
-                $retval .= ' checked="checked"';
+            if (!empty ($grpftarray[$A['ft_name']])) {
+                if ($grpftarray[$A['ft_name']] == 'direct') {
+                    $retval .= ' checked="checked"';
+                }
             }
             $retval .= '><span title="' . $A['ft_descr'] . '">' . $A['ft_name']
                     . '</span></td>';
         } else {
             // either this is an indirect right OR this is a core feature
-            if ((($core == 1) AND ($grpftarray[$A['ft_name']] == 'indirect' OR $grpftarray[$A['ft_name']] == 'direct')) OR ($core == 0)) {
+            if ((($core == 1) AND (isset ($grpftarray[$A['ft_name']]) AND (($grpftarray[$A['ft_name']] == 'indirect') OR ($grpftarray[$A['ft_name']] == 'direct')))) OR ($core != 1)) {
                 $ftcount++;
                 $retval .= '<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<i title="'
                         . $A['ft_descr'] . '">' .  $A['ft_name'] . '</i>)</td>';
@@ -386,13 +411,14 @@
 * @param    string  $grp_id         ID of group to save
 * @param    string  $grp_name       Group Name
 * @param    string  $grp_descr      Description of group
+* @param    boolean $grp_admin      Flag that indicates this is an admin use group  
 * @param    boolean $grp_gl_core    Flag that indicates if this is a core Geeklog group
 * @param    array   $features       Features the group has access to
 * @param    array   $groups         Groups this group will belong to
 * @return   string                  HTML refresh or error message
 *
 */
-function savegroup ($grp_id, $grp_name, $grp_descr, $grp_gl_core, $features, $groups)
+function savegroup ($grp_id, $grp_name, $grp_descr, $grp_admin, $grp_gl_core, $features, $groups)
 {
     global $_CONF, $_TABLES, $_USER, $LANG_ACCESS, $VERBOSE;
 
@@ -433,17 +459,31 @@
 
         $grp_descr = COM_stripslashes ($grp_descr);
         $grp_descr = addslashes ($grp_descr);
+               
         if (empty ($grp_id)) {
-            DB_query("REPLACE INTO {$_TABLES['groups']} (grp_name, grp_descr,grp_gl_core) VALUES ('$grp_name', '$grp_descr',$grp_gl_core)");
-            $grp_id = DB_getItem($_TABLES['groups'],'grp_id',"grp_name = '$grp_name'");
+            DB_save ($_TABLES['groups'], 'grp_name,grp_descr,grp_gl_core',
+                     "'$grp_name','$grp_descr',$grp_gl_core");
+            $grp_id = DB_getItem ($_TABLES['groups'], 'grp_id',
+                                  "grp_name = '$grp_name'");
             $new_group = true;
         } else {
-            DB_query("REPLACE INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES ($grp_id,'$grp_name', '$grp_descr',$grp_gl_core)");
+            DB_save ($_TABLES['groups'],
+                     'grp_id,grp_name,grp_descr,grp_gl_core',
+                     "$grp_id,'$grp_name','$grp_descr',$grp_gl_core");
             $new_group = false;
         }
+        
+        // Use the field grp_gl_core to indicate if this is non-core GL Group is an Admin related group      
+        if ($grp_gl_core != 1 AND $grp_id > 1) {
+            if (COM_applyFilter($grp_admin,true) == 1) {
+                DB_query("UPDATE {$_TABLES['groups']} SET grp_gl_core=2 WHERE grp_id=$grp_id");
+            } else {
+                DB_query("UPDATE {$_TABLES['groups']} SET grp_gl_core=0 WHERE grp_id=$grp_id");
+            }
+        }        
 
         // now save the features
-        DB_query("DELETE FROM {$_TABLES['access']} WHERE acc_grp_id = $grp_id");
+        DB_delete ($_TABLES['access'], 'acc_grp_id', $grp_id);
         if (SEC_inGroup ('Root')) {
             for ($i = 1; $i <= sizeof ($features); $i++) {
                 DB_query ("INSERT INTO {$_TABLES['access']} (acc_ft_id,acc_grp_id) VALUES (" . current ($features) . ",$grp_id)");
@@ -464,7 +504,7 @@
             COM_errorLog("deleting all group_assignments for group $grp_id/$grp_name",1);
         }
 
-        DB_query("DELETE FROM {$_TABLES['group_assignments']} WHERE ug_grp_id = $grp_id");
+        DB_delete ($_TABLES['group_assignments'], 'ug_grp_id', $grp_id);
         if (!empty ($groups)) {
             for ($i = 1; $i <= sizeof ($groups); $i++) {
                 if (in_array ($grp_id, $GroupAdminGroups)) {
@@ -495,8 +535,11 @@
         } else {
             PLG_groupChanged ($grp_id, 'edit');
         }
-
-        echo COM_refresh($_CONF['site_admin_url'] . '/group.php?msg=49');
+        if ($_POST['chk_showall'] == 1) {
+            echo COM_refresh($_CONF['site_admin_url'] . '/group.php?msg=49&showall=1');            
+        } else {
+            echo COM_refresh($_CONF['site_admin_url'] . '/group.php?msg=49');
+        }
     } else {
         $retval .= COM_siteHeader ('menu', $LANG_ACCESS['groupeditor']);
         $retval .= COM_startBlock ($LANG_ACCESS['missingfields'], '',
@@ -556,6 +599,7 @@
 function listusers ($grp_id)
 {
     global $_CONF, $_TABLES, $LANG28, $LANG_ACCESS, $LANG_ADMIN, $_IMAGE_TYPE;
+
     require_once( $_CONF['path_system'] . 'lib-admin.php' );
     $retval = '';
 
@@ -592,19 +636,35 @@
     $defsort_arr = array ('field'     => 'username',
                           'direction' => 'asc'
     );
+    
+    $form_url = $_CONF['site_admin_url'] . '/group.php?mode=listusers&amp;grp_id='.$grp_id;
+    if (isset ($_REQUEST['chk_showall']) && ($_REQUEST['chk_showall'] == 1)) {
+        $form_url .= '&amp;chk_showall=1';
+    }
 
     $groupname = DB_getItem ($_TABLES['groups'], 'grp_name',
                              "grp_id = '$grp_id'");
     $headline = sprintf ($LANG_ACCESS['usersingroup'], $groupname);
+    
+    $url = $_CONF['site_admin_url'] . '/group.php';
+    if (isset ($_REQUEST['chk_showall']) && ($_REQUEST['chk_showall'] == 1)) {
+        $url .= '?chk_showall=1';
+    }
+    $menu_arr = array (
+                    array('url'  => $url,
+                          'text' => $LANG28[38]),
+                    array('url'  => $_CONF['site_admin_url'],
+                          'text' => $LANG_ADMIN['admin_home']));    
 
-    $text_arr = array ('has_menu'     => false,
-                       'has_extras'   => false,
+    $text_arr = array ('has_menu'     => true,
+                       'has_extras'   => true,
                        'title'        => $headline,
-                       'instructions' => '',
-                       'icon'         => '',
-                       'form_url'     => '',
+                       'instructions' => '&nbsp;',
+                       'icon'         => $_CONF['layout_url'] . '/images/icons/group.'
+                                         . $_IMAGE_TYPE,
+                       'form_url'     => $form_url,
                        'help_url'     => ''
-    );
+    );  
 
     $join_userinfo = '';
     $select_userinfo = '';
@@ -616,28 +676,32 @@
     $groups = getGroupList ($grp_id);
     $groupList = implode (',', $groups);
 
-    $sql = "SELECT DISTINCT {$_TABLES['users']}.uid,username,fullname,email,photo,regdate$select_userinfo FROM {$_TABLES['users']},{$_TABLES['group_assignments']} $join_userinfo WHERE {$_TABLES['users']}.uid > 1 AND {$_TABLES['users']}.uid = {$_TABLES['group_assignments']}.ug_uid AND ({$_TABLES['group_assignments']}.ug_main_grp_id IN ({$groupList}))";
+    $sql = "SELECT DISTINCT {$_TABLES['users']}.uid,username,fullname,email,photo,regdate$select_userinfo "
+          ."FROM {$_TABLES['group_assignments']},{$_TABLES['users']} $join_userinfo "
+          ."WHERE {$_TABLES['users']}.uid > 1 "
+          ."AND {$_TABLES['users']}.uid = {$_TABLES['group_assignments']}.ug_uid " 
+          ."AND ({$_TABLES['group_assignments']}.ug_main_grp_id IN ({$groupList}))";
 
     $query_arr = array ('table' => 'users',
                         'sql' => $sql,
                         'query_fields' => array('username', 'email', 'fullname'),
-                        'default_filter' => "AND {$_TABLES['users']}.uid > 1",
-                        'query' => $_REQUEST['q'],
-                        'query_limit' => COM_applyFilter ($_REQUEST['query_limit'], true)
+                        'default_filter' => "AND {$_TABLES['users']}.uid > 1"
     );
 
-    $retval .= ADMIN_list ('user', 'ADMIN_getListField_users', $header_arr, $text_arr, $query_arr, array(), $defsort_arr, "&mode=listusers&grp_id=$grp_id");
+    $retval .= ADMIN_list ('user', 'ADMIN_getListField_users', $header_arr, $text_arr, $query_arr, $menu_arr, $defsort_arr);
 
     return $retval;
 }
 
 function listgroups()
 {
-    global $LANG_ADMIN, $LANG_ACCESS, $_IMAGE_TYPE, $_CONF, $_TABLES;
-    require_once( $_CONF['path_system'] . 'lib-admin.php' );
-    $retval = "";
+    global $_CONF, $_TABLES, $LANG_ADMIN, $LANG_ACCESS, $LANG28, $_IMAGE_TYPE;
+
+    require_once ($_CONF['path_system'] . 'lib-admin.php');
 
-    $header_arr = array(      # display 'text' and use table field 'field'
+    $retval = '';
+
+    $header_arr = array(      // display 'text' and use table field 'field'
                     array('text' => $LANG_ADMIN['edit'], 'field' => 'edit', 'sort' => false),
                     array('text' => $LANG_ACCESS['groupname'], 'field' => 'grp_name', 'sort' => true),
                     array('text' => $LANG_ACCESS['description'], 'field' => 'grp_descr', 'sort' => true),
@@ -646,6 +710,11 @@
     );
 
     $defsort_arr = array('field' => 'grp_name', 'direction' => 'asc');
+    
+    $form_url = $_CONF['site_admin_url'] . '/group.php';
+    if (isset ($_REQUEST['chk_showall']) && ($_REQUEST['chk_showall'] == 1)) {
+        $form_url .= '?chk_showall=1';
+    }    
 
     $menu_arr = array (
                     array('url' => $_CONF['site_admin_url'] . '/group.php?mode=edit',
@@ -659,39 +728,85 @@
                       'instructions' => $LANG_ACCESS['newgroupmsg'],
                       'icon' => $_CONF['layout_url'] . '/images/icons/group.'
                                 . $_IMAGE_TYPE,
-                      'form_url' => $_CONF['site_admin_url'] . "/group.php");
+                      'form_url' => $form_url);
 
-    $query_arr = array('table' => 'groups',
-                       'sql' => "SELECT * FROM {$_TABLES['groups']} WHERE 1",
-                       'query_fields' => array('grp_name', 'grp_descr'),
-                       'default_filter' => "");
+    $filter = '<span style="padding-right:20px;">';
+    
+    // Extra test required to handle that different ways this option is passed and need to be able to
+    // over-ride the option using the posted form when the URL contains the variable as well
+    $show_all_groups = false;   
+    if (isset($_POST['q'])) {   // Form has been posted - test actual option in this form
+        if ($_POST['chk_showall'] == 1) {
+            $show_all_groups = true;
+        }
+    } else if (isset ($_GET['showall']) && ($_GET['showall'] == 1)) {
+        $show_all_groups = true;
+    }
+
+    if (SEC_inGroup('Root')) {
+        $grpFilter = '';
+    } else {
+        $thisUsersGroups = SEC_getUserGroups ();
+        $grpFilter = 'AND (grp_id IN (' . implode (',', $thisUsersGroups) . '))';
+    }
+
+    if ($show_all_groups) {
+        $filter .= '<label for="chk_showall"><input id="chk_showall" type="checkbox" name="chk_showall" value="1" checked="checked">';
+        $query_arr = array('table' => 'groups',
+                           'sql' => "SELECT * FROM {$_TABLES['groups']} WHERE 1=1",
+                           'query_fields' => array('grp_name', 'grp_descr'),
+                           'default_filter' => $grpFilter);
+    } else {
+        $filter .= '<label for="chk_showall"><input id="chk_showall" type="checkbox" name="chk_showall" value="1">';
+        $query_arr = array('table' => 'groups',
+                           'sql' => "SELECT * FROM {$_TABLES['groups']} WHERE (grp_gl_core = 0 OR grp_id in (2,13))",
+                           'query_fields' => array('grp_name', 'grp_descr'),
+                           'default_filter' => $grpFilter);
+    }        
+    $filter .= $LANG28[48] . '</label></span>';
+
+    $retval .= ADMIN_list ('groups', 'ADMIN_getListField_groups', $header_arr,
+                    $text_arr, $query_arr, $menu_arr, $defsort_arr, $filter);
 
-    $retval .= ADMIN_list ("groups", "ADMIN_getListField_groups", $header_arr, $text_arr,
-                            $query_arr, $menu_arr, $defsort_arr);
     return $retval;
 }
 
-function grp_selectUsers ($group_id = '0', $allusers = false)
+function grp_selectUsers ($group_id, $allusers = false)
 {
     global $_TABLES, $_USER;
 
     $retval = '';
-    if($allusers) {    // Show all site members - else users in selected group
-        $result = DB_query( "SELECT uid,username from {$_TABLES['users']} ORDER BY username" );
-        while(list($uid,$username) = DB_fetchArray($result)) {
-            if( DB_count($_TABLES['group_assignments'], array('ug_uid','ug_main_grp_id'), array($uid,$group_id)) == 0 ) {
-                $retval .= '<option value="' . $uid . '">'. $username . '</option>';
-            }
-        }
-    } else {
-        $groups = getGroupList ($group_id);
-        $groupList = implode (',', $groups);
-        $sql = "FROM {$_TABLES['users']},{$_TABLES['group_assignments']}
-            WHERE {$_TABLES['users']}.uid > 1 AND {$_TABLES['users']}.uid = {$_TABLES['group_assignments']}.ug_uid AND ({$_TABLES['group_assignments']}.ug_main_grp_id IN ({$groupList}))";
-        $result = DB_query ("SELECT DISTINCT uid,username " . $sql . " ORDER BY username");
-        while(list($uid,$username) = DB_fetchArray($result)) {
-            $retval .= '<option value="' . $uid . '">'. $username . '</option>';
-        }
+    
+    // Get a list of users in the Root Group and the selected group
+    $sql  = "SELECT DISTINCT uid FROM {$_TABLES['users']} LEFT JOIN {$_TABLES['group_assignments']} ";
+    $sql .= "ON {$_TABLES['group_assignments']}.ug_uid = uid WHERE uid > 1 AND ";
+    $sql .= "({$_TABLES['group_assignments']}.ug_main_grp_id = 1 OR {$_TABLES['group_assignments']}.ug_main_grp_id = $group_id)";
+    $result = DB_query ($sql);
+    $filteredusers = array();
+    while ($A = DB_fetchArray($result)) {
+        $filteredusers[] = $A['uid'];
+    }    
+
+    $groups = getGroupList ($group_id);
+    $grouplist = '(' . implode (',', $groups) . ')';
+    $sql = "SELECT DISTINCT uid,username FROM {$_TABLES['users']} LEFT JOIN {$_TABLES['group_assignments']} ";
+    $sql .= "ON {$_TABLES['group_assignments']}.ug_uid = uid WHERE uid > 1 AND ";
+    $sql .= "{$_TABLES['group_assignments']}.ug_main_grp_id ";
+    if ($allusers) {
+        $sql .= 'NOT ';
+    }
+    $sql .= "IN {$grouplist} ";
+    // Filter out the users that will be in the selected group
+    if ($allusers) {
+        $filteredusers = implode(',',$filteredusers);
+        $sql .= " AND uid NOT IN ($filteredusers) ";
+    }
+    $sql .= "ORDER BY username";   
+    $result = DB_query ($sql);
+    $numUsers = DB_numRows ($result);
+    for ($i = 0; $i < $numUsers; $i++) {
+        list($uid, $username) = DB_fetchArray ($result);
+        $retval .= '<option value="' . $uid . '">' . $username . '</option>';
     }
 
     return $retval;
@@ -700,10 +815,12 @@
 
 function editusers ($group)
 {
-    global $_CONF, $_TABLES, $_USER, $LANG_ACCESS, $LANG28;
+    global $_CONF, $_TABLES, $_USER, $LANG_ACCESS, $LANG_ADMIN, $LANG28;
+
+    $retval = '';
 
     $thisUsersGroups = SEC_getUserGroups ();
-	$groupName = DB_getItem($_TABLES['groups'],'grp_name',"grp_id='$group'");
+    $groupName = DB_getItem($_TABLES['groups'],'grp_name',"grp_id='$group'");
     if (!empty ($group) &&
        ($group > 0) &&
        !in_array ($group, $thisUsersGroups) &&
@@ -722,6 +839,11 @@
 
         return $retval;
     }
+    
+    $group_listing_url = $_CONF['site_admin_url'] . '/group.php';
+    if ($_REQUEST['chk_showall'] == 1) {
+        $group_listing_url .= '?chk_showall=1';
+    }
 
     $retval .= COM_startBlock ($LANG_ACCESS['usergroupadmin'] . " - $groupName" , '',
                        COM_getBlockTemplate ('_admin_block', 'header'));
@@ -729,6 +851,7 @@
     $groupmembers->set_file (array ('groupmembers'=>'groupmembers.thtml'));
     $groupmembers->set_var ('site_url', $_CONF['site_url']);
     $groupmembers->set_var ('site_admin_url', $_CONF['site_admin_url']);
+    $groupmembers->set_var ('group_listing_url', $group_listing_url);    
     $groupmembers->set_var ('layout_url', $_CONF['layout_url']);
     $groupmembers->set_var ('phpself', $_CONF['site_admin_url'] . '/group.php');
     $groupmembers->set_var('lang_adminhome', $LANG_ACCESS['adminhome']);
@@ -739,9 +862,10 @@
     $groupmembers->set_var ('group_list', grp_selectUsers($group) );
     $groupmembers->set_var ('LANG_add',$LANG_ACCESS['add']);
     $groupmembers->set_var ('LANG_remove',$LANG_ACCESS['remove']);
-    $groupmembers->set_var('lang_save', $LANG_ACCESS['save']);
-    $groupmembers->set_var('lang_cancel', $LANG_ACCESS['cancel']);
+    $groupmembers->set_var('lang_save', $LANG_ADMIN['save']);
+    $groupmembers->set_var('lang_cancel', $LANG_ADMIN['cancel']);
     $groupmembers->set_var ('lang_grouplist', $LANG28[38]);
+    $groupmembers->set_var('show_all', COM_applyFilter($_GET['chk_showall'],true));    
     $groupmembers->set_var ('group_id',$group);
     $groupmembers->parse ('output', 'groupmembers');
     $retval .= $groupmembers->finish($groupmembers->get_var('output'));
@@ -753,15 +877,19 @@
 function savegroupusers ($groupid, $groupmembers)
 {
     global $_CONF, $_TABLES;
-
     // Delete all the current buddy records for this user and add all the selected ones
-    DB_query("DELETE FROM {$_TABLES['group_assignments']} WHERE ug_main_grp_id={$groupid} AND ug_uid != 'NULL' ");
+    $sql = "DELETE FROM {$_TABLES['group_assignments']} WHERE ug_main_grp_id={$groupid} AND ug_uid IS NOT NULL";
+    DB_query($sql);
     $adduser = explode("|",$groupmembers);
     for( $i = 0; $i < count($adduser); $i++ )    {
+        $adduser[$i] = COM_applyFilter($adduser[$i], true);
         DB_query("INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid) VALUES ('$groupid', '$adduser[$i]')");
     }
-
-    return COM_refresh($_CONF['site_admin_url'] . '/group.php?msg=49');
+    if ($_POST['chk_showall'] == 1) {
+        echo COM_refresh($_CONF['site_admin_url'] . '/group.php?msg=49&showall=1');            
+    } else {
+        echo COM_refresh($_CONF['site_admin_url'] . '/group.php?msg=49');
+    }
 }
 
 /**
@@ -795,8 +923,11 @@
     DB_delete ($_TABLES['groups'], 'grp_id', $grp_id);
 
     PLG_groupChanged ($grp_id, 'delete');
-
-    return COM_refresh ($_CONF['site_admin_url'] . '/group.php?msg=50');
+    if ($_POST['chk_showall'] == 1) {
+        return COM_refresh($_CONF['site_admin_url'] . '/group.php?msg=50&showall=1');            
+    } else {
+        return COM_refresh($_CONF['site_admin_url'] . '/group.php?msg=50');
+    }
 }
 
 // MAIN
@@ -805,8 +936,7 @@
     $mode = $_REQUEST['mode'];
 }
 
-
-if (($mode == $LANG_ACCESS['delete']) && !empty ($LANG_ACCESS['delete'])) {
+if (($mode == $LANG_ADMIN['delete']) && !empty ($LANG_ADMIN['delete'])) {
     $grp_id = COM_applyFilter ($_REQUEST['grp_id'], true);
     if (!isset ($grp_id) || empty ($grp_id) || ($grp_id == 0)) {
         COM_errorLog ('Attempted to delete group grp_id=' . $grp_id);
@@ -814,28 +944,33 @@
     } else {
         $display .= deleteGroup ($grp_id);
     }
-} else if (($mode == $LANG_ACCESS['save']) && !empty ($LANG_ACCESS['save'])) {
-    $display .= savegroup ($_POST['grp_id'], $_POST['grp_name'],
-                           $_POST['grp_descr'], $_POST['grp_gl_core'],
+} else if (($mode == $LANG_ADMIN['save']) && !empty ($LANG_ADMIN['save'])) {
+    $display .= savegroup (COM_applyFilter ($_POST['grp_id'],true),
+                           COM_applyFilter ($_POST['grp_name']),
+                           $_POST['grp_descr'], 
+                           COM_applyFilter($_POST['chk_grpadmin'],true),
+                           COM_applyFilter ($_POST['grp_gl_core']),
                            $_POST['features'], $_POST[$_TABLES['groups']]);
 } else if ($mode == 'savegroupusers') {
     $grp_id = COM_applyFilter ($_REQUEST['grp_id'], true);
     $display .= savegroupusers ($grp_id, $_POST['groupmembers']);
 } else if ($mode == 'edit') {
-    $grp_id = COM_applyFilter ($_REQUEST['grp_id'], true);
+    $grp_id = 0;
+    if (isset ($_REQUEST['grp_id'])) {
+        $grp_id = COM_applyFilter ($_REQUEST['grp_id'], true);
+    }
     $display .= COM_siteHeader ('menu', $LANG_ACCESS['groupeditor']);
     $display .= editgroup ($grp_id);
     $display .= COM_siteFooter ();
 } else if ($mode == 'listusers') {
     $grp_id = COM_applyFilter ($_REQUEST['grp_id'], true);
-    $display .= COM_siteHeader ('menu');
+    $display .= COM_siteHeader ('menu', $LANG_ACCESS['groupmembers']);
     $display .= listusers ($grp_id);
     $display .= COM_siteFooter ();
 } else if ($mode == 'editusers') {
     $grp_id = COM_applyFilter ($_REQUEST['grp_id'], true);
-    $page = COM_applyFilter ($_REQUEST['page'], true);
-    $display .= COM_siteHeader ('menu');
-    $display .= editusers ($grp_id, $page);
+    $display .= COM_siteHeader ('menu', $LANG_ACCESS['usergroupadmin']);
+    $display .= editusers ($grp_id);
     $display .= COM_siteFooter ();
 } else { // 'cancel' or no mode at all
     $display .= COM_siteHeader ('menu', $LANG28[38]);
diff -ruN 1.4.0sr5-1.src/admin/index.php 1.4.1.src/admin/index.php
--- 1.4.0sr5-1.src/admin/index.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/index.php	2006-10-01 14:13:37.000000000 -0500
@@ -22,12 +22,12 @@
 #
 ###############################################################################
 //
-// $Id: index.php,v 1.8 2002/08/20 13:08:59 dhaun Exp $
+// $Id: index.php,v 1.9 2006/10/01 19:13:37 dhaun Exp $
 
 require_once('../lib-common.php');
 
 // MAIN
-if ($mode == 'logout') {
+if (isset ($_GET['mode']) && ($_GET['mode'] == 'logout')) {
     print COM_refresh($_CONF['site_url'] . '/users.php?mode=logout');
 }
 
diff -ruN 1.4.0sr5-1.src/admin/install/configinfo.php 1.4.1.src/admin/install/configinfo.php
--- 1.4.0sr5-1.src/admin/install/configinfo.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/install/configinfo.php	2006-09-06 00:31:00.000000000 -0500
@@ -1,13 +1,14 @@
 <?php
+
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Geeklog 1.3                                                               |
+// | Geeklog 1.4                                                               |
 // +---------------------------------------------------------------------------+
 // | configinfo.php                                                            |
 // |                                                                           |
 // | Display contents of config.php                                            |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2002-2005 by the following authors:                         |
+// | Copyright (C) 2002-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Jeffrey Schoolcraft  - dream AT dr3amscap3 DOT com               |
 // |          Dirk Haun            - dirk AT haun-online DOT de                |
@@ -29,7 +30,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: configinfo.php,v 1.3 2005/09/09 19:13:21 dhaun Exp $
+// $Id: configinfo.php,v 1.5 2006/09/06 05:31:00 ospiess Exp $
 
 /**
 * This script will display file and permission information based on settings in
@@ -48,8 +49,8 @@
     die ("Sorry, config.php not found ...");
 }
 
-$highlight_on 	= '#EFEFEF';
-$highlight_off	= '#D9D9D9';
+$highlight_on     = '#EFEFEF';
+$highlight_off    = '#D9D9D9';
 
 if (isset ($_CONF['site_url']) &&
         strpos ($_CONF['site_url'], 'example.com') === false) {
@@ -58,33 +59,38 @@
     $docs = '../../docs/config.html#desc_';
 }
 
+if (isset ($_CONF['mail_settings']['password'])) {
+    unset ($_CONF['mail_settings']['password']);
+}
+
 $display = "<html>\n<head><title>config.php</title></head>\n<body>\n";
 $n = 0;
 $display .= '<table width="100%" cellspacing="0" cellpadding="0" border="0" style="border: thin black solid;">';
 
 foreach($_CONF as $option => $value) {
-	$display .= '<tr';
-	if ($n % 2 == 0) {
-		$display .= ' style="background-color: ' . $highlight_on . '">';
-	} else {
-		$display .= ' style="background-color: ' . $highlight_off . '">';
-	}
-	$display .= '<td style="border: thin black solid; padding: 2px;"><strong>$_CONF[\'<a href="' . $docs . $option . '">' . $option . '</a>\']</strong></td>';
-	if (is_array($value)) {
-		ob_start();
-		print_r($value);
-		$value=nl2br(ob_get_contents());
-		ob_end_clean();
+    $display .= '<tr';
+    if ($n % 2 == 0) {
+        $display .= ' style="background-color: ' . $highlight_on . '">';
+    } else {
+        $display .= ' style="background-color: ' . $highlight_off . '">';
+    }
+    $display .= '<td style="border: thin black solid; padding: 2px;"><strong>$_CONF[\'<a href="'
+              . $docs . $option . '">' . $option . '</a>\']</strong></td>';
+    if (is_array($value)) {
+        ob_start();
+        print_r($value);
+        $value=nl2br(ob_get_contents());
+        ob_end_clean();
     } elseif (is_bool ($value)) {
         $value = ($value === false) ? 'false' : 'true';
-	} elseif (eregi('[a-z]+html', $option)) {
-		$value = htmlentities($value);
-	} elseif (!isset($value)) {
-		$value = '&nbsp;';
+    } elseif (eregi('[a-z]+html', $option)) {
+        $value = htmlentities($value);
+    } elseif (!isset($value)) {
+        $value = '&nbsp;';
     }
-	$display .= '<td style="border: thin black solid; padding: 2px;"><strong>' . $value . '</strong></td>';
-	$display .= '</tr>';
-	$n++;
+    $display .= '<td style="border: thin black solid; padding: 2px;"><strong>' . $value . '</strong></td>';
+    $display .= '</tr>';
+    $n++;
 }
 $display .= "</table>\n</body>\n</html>";
 
diff -ruN 1.4.0sr5-1.src/admin/install/install.php 1.4.1.src/admin/install/install.php
--- 1.4.0sr5-1.src/admin/install/install.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/install/install.php	2006-12-10 03:56:40.000000000 -0600
@@ -8,12 +8,13 @@
 // |                                                                           |
 // | Geeklog installation script.                                              |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
 // |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
 // |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
 // |          Dirk Haun         - dirk AT haun-online DOT de                   |
+// |          Randy Kolenko     - randy AT nextide DOT ca
 // +---------------------------------------------------------------------------+
 // |                                                                           |
 // | This program is free software; you can redistribute it and/or             |
@@ -35,7 +36,7 @@
 // | Please read docs/install.html which describes how to install Geeklog.     |
 // +---------------------------------------------------------------------------+
 //
-// $Id: install.php,v 1.83.2.1 2006/07/22 15:20:10 dhaun Exp $
+// $Id: install.php,v 1.92 2006/12/10 09:37:44 dhaun Exp $
 
 // this should help expose parse errors (e.g. in config.php) even when
 // display_errors is set to Off in php.ini
@@ -48,7 +49,7 @@
     define("LB", "\n");
 }
 if (!defined ('VERSION')) {
-    define('VERSION', '1.4.0');
+    define('VERSION', '1.4.1');
 }
 
 
@@ -102,6 +103,17 @@
     return array ($mysqlmajorv, $mysqlminorv, $mysqlrev);
 }
 
+function installOption ($option_value, $option_name, $current_option)
+{
+    $retval = '<option value="' . $option_value . '"';
+    if ($option_value == $current_option) {
+        $retval .= ' selected="selected"';
+    }
+    $retval .= '>' . $option_name . '</option>' . LB;
+
+    return $retval;
+}
+
 /**
 * Shows welcome page and gets location of /path/to/geeklog/. NOTE: this
 * Doesn't use the template class because we need to know the path to geeklog
@@ -126,7 +138,7 @@
     $phpv = php_v ();
     if (($phpv[0] < 4) || (($phpv[0] == 4) && ($phpv[1] < 1))) {
         $retval .= '<h1>PHP 4.1.0 required</h1>' . LB;
-        $retval .= '<p>Sorry, but Geeklog now requires at least PHP 4.1.0 to run. Please upgrade your PHP install or ask your hosting service to do it for you.</p>' . LB;
+        $retval .= '<p>Sorry, but Geeklog requires at least PHP 4.1.0 to run. Please upgrade your PHP install or ask your hosting service to do it for you.</p>' . LB;
         $retval .= '</body>' . LB . '</html>' . LB;
 
         return $retval;
@@ -137,7 +149,7 @@
         if (($myv[0] < 3) || (($myv[0] == 3) && ($myv[1] < 23)) ||
                 (($myv[0] == 3) && ($myv[1] == 23) && ($myv[2] < 2))) {
             $retval .= '<h1>MySQL 3.23.2 required</h1>' . LB;
-            $retval .= '<p>Sorry, but Geeklog now requires at least MySQL 3.23.2 to run. Please upgrade your MySQL install or ask your hosting service to do it for you.</p>' . LB;
+            $retval .= '<p>Sorry, but Geeklog requires at least MySQL 3.23.2 to run. Please upgrade your MySQL install or ask your hosting service to do it for you.</p>' . LB;
             $retval .= '</body>' . LB . '</html>' . LB;
 
             return $retval;
@@ -170,7 +182,7 @@
     $retval .= "<p>If you haven't already done so, you should <strong>edit config.php prior to running this script</strong>. This script will then apply the database structures for both fresh installations and upgrades.</p>" . LB;
 
     $retval .= '<h2>Upgrading</h2>' . LB;
-    $retval .= '<p>Before we get started it is important that if you are upgrading an existing Geeklog installation you back up your database AND your file system.  <strong>This installation script will alter your Geeklog database.</strong> Also, if you are upgrading from version 1.3 or older you may need your old lib-database.php file so be sure to save a copy of this file. <strong>YOU HAVE BEEN WARNED</strong>!</p>' . LB;
+    $retval .= '<p>Before we get started it is important that if you are upgrading an existing Geeklog installation you back up your database AND your file system.  <strong>This installation script will alter your Geeklog database.</strong> So if something goes wrong and you have to do the upgrade again, you will need a backup of your original database. <strong>YOU HAVE BEEN WARNED</strong>!</p>' . LB;
     $retval .= '<p>Please make sure to select the correct Geeklog version you are coming from on the next screen. This script will do incremental upgrades after this version (i.e. you can upgrade directly from any old version to ' . VERSION . ').</p>' . LB;
     $retval .= '<p>Please note this script will <strong>not upgrade</strong> any beta or release candidate versions of Geeklog.</p>' . LB;
 
@@ -204,7 +216,7 @@
     }
 
     if ($globals_off || $long_arrays_off || $public_html) {
-        $retval .= '<h1>Important Note</h1>' . LB;
+        $retval .= '<h2>Important Note</h2>' . LB;
 
         if ($public_html) {
             $retval .= '<p><strong>Note:</strong> "public_html" should never be part of your site\'s URL. Please read the part about public_html in the <a href="../../docs/install.html#public_html">installation instructions</a> again and change your setup accordingly before you proceed.</p>';
@@ -219,9 +231,16 @@
     }
 
     $retval .= '<h2>Installation Options</h2>' . LB;
-    $install_options = '<option value="new_db">New Database</option>'.LB;
-    $install_options .= '<option value="upgrade_db">Upgrade Database</option>'.LB;
-    $retval .= '<form action="install.php" method="post">' . LB;
+    $install_type = '';
+    if (isset ($_POST['install_type'])) {
+        $install_type = $_POST['install_type'];
+    }
+    $install_options = '';
+    $install_options .= installOption ('new_db', 'New MySQL Database', $install_type);
+    $install_options .= installOption ('new_mssql_db', 'New Microsoft SQL Server Database', $install_type);
+    $install_options .= installOption ('upgrade_db', 'Upgrade MySQL Database', $install_type);
+
+    $retval .= '<form action="install.php" method="POST">' . LB;
     $retval .= '<table border="0" cellpadding="0" cellspacing="0" width="100%">' . LB;
     $retval .= '<tr><td align="right">Installation Type:&nbsp;</td><td><select name="install_type">'. LB;
     $retval .= $install_options;
@@ -258,6 +277,7 @@
     // warn the user if they try to run the update again.
 
     $test = array(
+        '1.4.1'  => array("SELECT ft_name FROM {$_TABLES['features']} WHERE ft_name = 'syndication.edit'", 'syndication.edit'),
         '1.4.0'  => array("DESCRIBE {$_TABLES['users']} remoteusername",''),
         '1.3.11' => array("DESCRIBE {$_TABLES['comments']} sid", 'sid,varchar(40)'),
         '1.3.10' => array("DESCRIBE {$_TABLES['comments']} lft",''),
@@ -282,12 +302,20 @@
                     $version = $v;
                     break;
                 } else {
-                    // test for certain type of field
-                    $tst = explode (',', $qarray[1]);
+                    if (substr ($qarray[0], 0, 6) == 'SELECT') {
+                        // text for a certain value
+                        if($A[0] == $qarray[1]) {
+                            $version = $v;
+                            break;
+                        }
+                    } else {
+                        // test for certain type of field
+                        $tst = explode (',', $qarray[1]);
 
-                    if (($A['Field'] == $tst[0]) && ($A['Type'] == $tst[1])) {
-                        $version = $v;
-                        break;
+                        if (($A['Field'] == $tst[0]) && ($A['Type'] == $tst[1])) {
+                            $version = $v;
+                            break;
+                        }
                     }
                 }
             }
@@ -297,6 +325,38 @@
     return $version;
 }
 
+function INST_checkTableExists ($table)
+{
+    global $_TABLES, $_DB_dbms;
+
+    $exists = false;
+
+    if ($_DB_dbms == 'mysql') {
+        $result = DB_query ("SHOW TABLES LIKE '{$_TABLES[$table]}'");
+        if (DB_numRows ($result) > 0) {
+            $exists = true;
+
+            $display = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' . LB;
+            $display .= '<html>' . LB;
+            $display .= '<head><title>Geeklog Installation - Error</title></head>' . LB;
+            $display .= '<body bgcolor="#ffffff">' . LB;
+            $display .= '<h2>Geeklog Installation - Error</h2>' . LB;
+            $display .= '<p>The Geeklog tables already exist in your database. This can be because of one of the following reasons:</p>' . LB;
+            $display .= '<ol>' . LB;
+            $display .= '<li>You already ran the install script before.<br>Please note that you don\'t have to run the install script again if you ran into a problem with your paths or URLs on a previous attempt. If, however, you want to run the install script again now, then please delete the tables from your database first (or drop the database and create it again).</li>' . LB;
+            $display .= '<li>You really want to upgrade your database (for a new Geeklog version) but forgot to select "Upgrade Database" from the drop-down menu on the initial screen.</li>' . LB;
+            $display .= '</ol>' . LB;
+            $display .= '<form action="install.php" method="POST">' . LB;
+            $display .= '<p align="center"><input type="submit" name="action" value="<< Back"><input type="hidden" name="geeklog_path" value="' . $_POST['geeklog_path'] . '"><input type="hidden" name="install_type" value="' . $_POST['install_type'] . '"></p>' . LB . '</form>';
+            $display .= '</body>' . LB . '</html>';
+
+            echo $display;
+        }
+    }
+
+    return $exists;
+}
+
 function INST_getDatabaseSettings($install_type, $geeklog_path)
 {
     global $_CONF, $_TABLES;
@@ -304,11 +364,16 @@
     $db_templates = new Template ($_CONF['path_system'] . 'install_templates');
     $db_templates->set_file (array ('db' => 'databasesettings.tpl'));
     $db_templates->set_var ('geeklog_path', $geeklog_path);
+    if (isset ($_POST['install_type'])) {
+        $db_templates->set_var ('install_type', $_POST['install_type']);
+    } else {
+        $db_templates->set_var ('install_type', '');
+    }
 
     if ($install_type == 'upgrade_db') {
         $db_templates->set_var ('upgrade', 1);
 
-        $old_versions = array('1.2.5-1','1.3','1.3.1','1.3.2','1.3.2-1','1.3.3','1.3.4','1.3.5','1.3.6','1.3.7','1.3.8','1.3.9','1.3.10','1.3.11');
+        $old_versions = array('1.2.5-1','1.3','1.3.1','1.3.2','1.3.2-1','1.3.3','1.3.4','1.3.5','1.3.6','1.3.7','1.3.8','1.3.9','1.3.10','1.3.11','1.4.0');
 
         $curv = INST_identifyGeeklogVersion ();
         if (empty ($curv)) {
@@ -336,21 +401,31 @@
 
     } else {
 
-        // This is a fresh installation
-        $db_templates->set_var ('upgrade', 0);
-
-        if (innodb_supported ()) {
-            $innodb_option = '<tr><td align="left">';
-            $innodb_option .= '<p>Using InnoDB tables may improve performance on (very) large sites, but makes database backups more complicated. Leave the option unchecked unless you know what you\'re doing.</p>';
-            $innodb_option .= '<input type="checkbox" name="innodb"> Use InnoDB tables';
-            $innodb_option .= '</td></tr>';
-            $db_templates->set_var ('UPGRADE_OPTIONS', $innodb_option);
-        } else {
+        // pick off which database we're installing for!
+        if ($install_type == 'new_mssql_db') {
+            // This is a fresh SQL Server installation!
+            $db_templates->set_var ('upgrade', 0);
             $db_templates->set_var ('UPGRADE_OPTIONS',
-                                    '<tr><td>&nbsp;</td></tr>');
+                                        '<tr><td>&nbsp;</td></tr>');
+            $nextbutton = '<input type="hidden" name="install_type" value="new_mssql_db"><input type="submit" name="action" value="Next &gt;&gt;">';
+            $db_templates->set_var ('NEXT_BUTTON', $nextbutton);
+        } else {
+            // This is a fresh MySQL installation
+            $db_templates->set_var ('upgrade', 0);
+    
+            if (innodb_supported ()) {
+                $innodb_option = '<tr><td align="left">';
+                $innodb_option .= '<p>Using InnoDB tables may improve performance on (very) large sites, but makes database backups more complicated. Leave the option unchecked unless you know what you\'re doing.</p>';
+                $innodb_option .= '<input type="checkbox" name="innodb"> Use InnoDB tables';
+                $innodb_option .= '</td></tr>';
+                $db_templates->set_var ('UPGRADE_OPTIONS', $innodb_option);
+            } else {
+                $db_templates->set_var ('UPGRADE_OPTIONS',
+                                        '<tr><td>&nbsp;</td></tr>');
+            }
+            $nextbutton = '<input type="submit" name="action" value="Next &gt;&gt;">';
+            $db_templates->set_var ('NEXT_BUTTON', $nextbutton);
         }
-        $nextbutton = '<input type="submit" name="action" value="Next &gt;&gt;">';
-        $db_templates->set_var ('NEXT_BUTTON', $nextbutton);
     }
 
     return $db_templates->parse('output','db');
@@ -371,23 +446,28 @@
 
     $progress = '';
 
-    if ($_DB_dbms == 'mysql') {
-
-        foreach ($_SQL as $sql) {
+    if (INST_checkTableExists ('access')) {
+        return false;
+    }
 
+    switch($_DB_dbms){
+        case 'mysql':
+            foreach ($_SQL as $sql) {
+                if ($use_innodb) {
+                    $sql = str_replace ('MyISAM', 'InnoDB', $sql);
+                }
+            
+                DB_query ($sql);
+            }
             if ($use_innodb) {
-                $sql = str_replace ('MyISAM', 'InnoDB', $sql);
+                DB_query ("INSERT INTO {$_TABLES['vars']} (name, value) VALUES ('database_engine', 'InnoDB')");
             }
-
-            DB_query ($sql);
-        }
-
-    } else { // in the highly unlikely event that we're not on MySQL ...
-
-        foreach ($_SQL as $sql) {
-            DB_query ($sql);
-        }
-
+            break;
+        case 'mssql';
+            foreach ($_SQL as $sql) {
+                DB_query ($sql);
+            }
+            break;   
     }
 
     // Now insert mandatory data and a small subset of initial data
@@ -396,7 +476,7 @@
         DB_query ($data);
     }
 
-    if ($_DB_dbms == 'mysql') {
+    if ($_DB_dbms == 'mysql' || $_DB_dbms == 'mssql' ) {
 
         // let's try and personalize the Admin account a bit ...
 
@@ -486,7 +566,7 @@
     return $retval;
 }
 
-function INST_doDatabaseUpgrades($current_gl_version, $table_prefix)
+function INST_doDatabaseUpgrades($current_gl_version)
 {
     global $_TABLES, $_CONF, $_SP_CONF, $_DB, $_DB_dbms, $_DB_table_prefix;
 
@@ -835,10 +915,30 @@
             $_SQL = '';
             break;
 
+    case '1.4.0':
+            require_once ($_CONF['path'] . 'sql/updates/' . $_DB_dbms . '_1.4.0_to_1.4.1.php');
+            for ($i = 0; $i < count ($_SQL); $i++) {
+                DB_query (current ($_SQL));
+                next ($_SQL);
+            }
+
+            upgrade_addSyndicationFeature ();
+            upgrade_ensureLastScheduledRunFlag ();
+            upgrade_plugins_141 ();
+
+            $current_gl_version = '1.4.1';
+            $_SQL = '';
+            break;
+
         default:
             $done = true;
         }
     }
+
+    // delete the security check flag on every update to force the user
+    // to run admin/sectest.php again
+    DB_delete ($_TABLES['vars'], 'name', 'security_check');
+
     return true;
 }
 
@@ -849,7 +949,7 @@
     $page = 0;
 }
 
-if (isset ($_POST['action']) && ($_POST['action'] == '<< Previous')) {
+if (isset ($_POST['action']) && ($_POST['action'] == '<< Back')) {
     $page = 0;
 }
 
@@ -899,8 +999,8 @@
             $display .= '<p>Geeklog could not find config.php in the path you just entered: <b>' . $_POST['geeklog_path'] . '</b><br>' . LB;
             $display .= 'Please check this path and try again. Remember that you should be using absolute paths, starting at the root of your file system.</p>' . LB;
         }
-        $display .= '<form action="install.php" method="post">' . LB;
-        $display .= '<p align="center"><input type="submit" name="action" value="<< Previous"><input type="hidden" name="geeklog_path" value="' . $_POST['geeklog_path'] . '"></p>' . LB . '</form>';
+        $display .= '<form action="install.php" method="POST">' . LB;
+        $display .= '<p align="center"><input type="submit" name="action" value="<< Back"><input type="hidden" name="geeklog_path" value="' . $_POST['geeklog_path'] . '"><input type="hidden" name="install_type" value="' . $_POST['install_type'] . '"></p>' . LB . '</form>';
         $display .= '</body>' . LB . '</html>';
         echo $display;
         exit;
@@ -922,7 +1022,7 @@
 
 case 2:
     if (!empty ($_POST['version'])) {
-        if (INST_doDatabaseUpgrades ($_POST['version'], $_POST['prefix'])) {
+        if (INST_doDatabaseUpgrades ($_POST['version'])) {
             // Great, installation is complete
             // Done with installation...redirect to success page
             echo '<html><head><meta http-equiv="refresh" content="0; URL=' . $_CONF['site_admin_url'] . '/install/success.php"></head></html>';
@@ -932,6 +1032,10 @@
         if (isset ($_POST['innodb']) && ($_POST['innodb'] == 'on')) {
             $use_innodb = true;
         }
+        if ($_POST['install_type'] == 'new_mssql_db') {
+            $use_innodb = false;
+        }
+
         if (INST_createDatabaseStructures ($use_innodb)) {
             // Done with installation...redirect to success page
             echo '<html><head><meta http-equiv="refresh" content="0; URL=' . $_CONF['site_admin_url'] . '/install/success.php"></head></html>';
@@ -942,7 +1046,9 @@
 
 default:
     // Ok, let's display a welcome page
+
     $display .= INST_welcomePage();
+
     break;
 }
 
diff -ruN 1.4.0sr5-1.src/admin/install/success.php 1.4.1.src/admin/install/success.php
--- 1.4.0sr5-1.src/admin/install/success.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/install/success.php	2006-06-25 14:28:55.000000000 -0500
@@ -2,6 +2,9 @@
 
 require_once ('../../lib-common.php');
 
+// enable detailed error reporting
+$_CONF['rootdebug'] = true;
+
 $display = COM_siteHeader ('menu', 'Installation complete');
 $display .= COM_startBlock ('Installation complete');
 $display .= '<h2>Installation of Geeklog ' . VERSION . ' complete!</h2>';
diff -ruN 1.4.0sr5-1.src/admin/mail.php 1.4.1.src/admin/mail.php
--- 1.4.0sr5-1.src/admin/mail.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/mail.php	2006-02-26 12:12:10.000000000 -0600
@@ -2,13 +2,13 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Geeklog 1.3                                                               |
+// | Geeklog 1.4                                                               |
 // +---------------------------------------------------------------------------+
 // | mail.php                                                                  |
 // |                                                                           |
 // | Geeklog mail administration page.                                         |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2001-2005 by the following authors:                         |
+// | Copyright (C) 2001-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs - tony AT tonybibbs DOT com                           |
 // |          Dirk Haun  - dirk AT haun-online DOT de                          |
@@ -30,7 +30,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: mail.php,v 1.31 2005/11/05 14:02:11 dhaun Exp $
+// $Id: mail.php,v 1.32 2006/02/26 18:12:10 dhaun Exp $
 
 require_once ('../lib-common.php');
 require_once ('auth.inc.php');
@@ -39,10 +39,10 @@
 
 // Make sure user has access to this page  
 if (!SEC_inGroup ('Mail Admin') && !SEC_hasrights ('user.mail')) {
-    $retval .= COM_siteHeader ('menu');
+    $retval .= COM_siteHeader ('menu', $MESSAGE[30]);
     $retval .= COM_startBlock ($MESSAGE[30], '',
                                COM_getBlockTemplate ('_msg_block', 'header'));
-    $retval .= $MESSAGE[37];
+    $retval .= $MESSAGE[39];
     $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
     $retval .= COM_siteFooter ();
     COM_accessLog ("User {$_USER['username']} tried to illegally access the mail administration screen.");
diff -ruN 1.4.0sr5-1.src/admin/moderation.php 1.4.1.src/admin/moderation.php
--- 1.4.0sr5-1.src/admin/moderation.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/moderation.php	2006-12-09 11:41:56.000000000 -0600
@@ -32,7 +32,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: moderation.php,v 1.87 2006/01/06 11:03:48 dhaun Exp $
+// $Id: moderation.php,v 1.101 2006/12/09 17:41:56 dhaun Exp $
 
 require_once ('../lib-common.php');
 require_once ('auth.inc.php');
@@ -44,6 +44,7 @@
 // the data being passed in a POST operation
 // echo COM_debug($_POST);
 
+// this defines the amount of icons displayed next to another in the CC-block
 define ('ICONS_PER_ROW', 6);
 
 /**
@@ -58,16 +59,16 @@
 */
 function render_cc_item (&$template, $url = '', $image = '', $label = '')
 {
-
     if (!empty ($url)) {
         $template->set_var ('page_url', $url);
         $template->set_var ('page_image', $image);
         $template->set_var ('option_label', $label);
         $template->set_var ('cell_width', ((int)(100 / ICONS_PER_ROW)) . '%');
+
         return $template->parse ('cc_main_options', 'ccitem', false);
-    } else {
-        return '';
     }
+
+    return '';
 }
 
 /**
@@ -76,7 +77,7 @@
 */
 function commandcontrol()
 {
-    global $_CONF, $_TABLES, $LANG01, $LANG29, $_IMAGE_TYPE;
+    global $_CONF, $_TABLES, $LANG01, $LANG29, $_IMAGE_TYPE, $_DB_dbms;
 
     $retval = '';
 
@@ -101,9 +102,6 @@
                   array('condition' => SEC_hasRights('topic.edit'),
                         'url' => $_CONF['site_admin_url'] . '/topic.php',
                         'lang' => $LANG01[13], 'image' => '/images/icons/topic.'),
-                  array('condition' => SEC_hasRights('event.edit'),
-                        'url' => $_CONF['site_admin_url'] . '/event.php',
-                        'lang' => $LANG01[15], 'image' => '/images/icons/event.'),
                   array('condition' => SEC_hasRights('user.edit'),
                         'url' => $_CONF['site_admin_url'] . '/user.php',
                         'lang' => $LANG01[17], 'image' => '/images/icons/user.'),
@@ -113,7 +111,7 @@
                   array('condition' => SEC_hasRights('user.mail'),
                         'url' => $_CONF['site_admin_url'] . '/mail.php',
                         'lang' => $LANG01[105], 'image' => '/images/icons/mail.'),
-                  array('condition' => SEC_inGroup('Root'),
+                  array('condition' => SEC_hasRights ('syndication.edit'),
                         'url' => $_CONF['site_admin_url'] . '/syndication.php',
                         'lang' => $LANG01[38], 'image' => '/images/icons/syndication.'),
                   array('condition' => $showTrackbackIcon,
@@ -145,7 +143,7 @@
 
     // and finally, add the remaining admin items
     $cc_arr = array(
-                  array('condition' => ($_CONF['allow_mysqldump'] == 1) && SEC_inGroup ('Root'),
+                  array('condition' => ($_CONF['allow_mysqldump'] == 1) && ($_DB_dbms == 'mysql') && SEC_inGroup ('Root'),
                         'url' => $_CONF['site_admin_url'] . '/database.php',
                         'lang' => $LANG01[103], 'image' => '/images/icons/database.'),
                   array('condition' => ($_CONF['link_documentation'] == 1),
@@ -165,9 +163,8 @@
         }
     }
 
-    if ($_CONF['sort_admin'])
-    {
-        ksort($items);
+    if ($_CONF['sort_admin']) {
+        uksort ($items, 'strcasecmp');
     }
      // logout is always the last entry
     $item = render_cc_item ($admin_templates,
@@ -178,12 +175,10 @@
     reset($items);
     $cols = 0;
     $cc_main_options = '';
-    while (list($key, $val) = each($items))
-    {
+    foreach ($items as $key => $val) {
         $cc_main_options .= $val . LB;
         $cols++;
-        if ($cols == ICONS_PER_ROW)
-        {
+        if ($cols == ICONS_PER_ROW) {
             $admin_templates->set_var('cc_main_options', $cc_main_options);
             $admin_templates->parse ('cc_rows', 'ccrow', true);
             $admin_templates->clear_var ('cc_main_options');
@@ -191,10 +186,14 @@
             $cols = 0;
         }
     }
-    // "flush out" any unrendered entries
-    $admin_templates->set_var('cc_main_options', $cc_main_options);
-    $admin_templates->parse ('cc_rows', 'ccrow', true);
-    $admin_templates->clear_var ('cc_main_options');
+
+    $admin_templates->set_var('cc_icon_width', floor(100/ICONS_PER_ROW));
+    if($cols > 0) {
+        // "flush out" any unrendered entries
+        $admin_templates->set_var('cc_main_options', $cc_main_options);
+        $admin_templates->parse ('cc_rows', 'ccrow', true);
+        $admin_templates->clear_var ('cc_main_options');
+    }
 
     $retval .= $admin_templates->parse('output','cc');
 
@@ -202,14 +201,13 @@
 
     if (SEC_hasRights('story.moderate')) {
         $retval .= itemlist('story');
+    }
 
+    if (SEC_hasRights('story.edit')) {
         if ($_CONF['listdraftstories'] == 1) {
             $retval .= draftlist ();
         }
     }
-    if (SEC_hasRights('event.moderate')) {
-        $retval .= itemlist('event');
-    }
     if ($_CONF['usersubmission'] == 1) {
         if (SEC_hasRights ('user.edit') && SEC_hasRights ('user.delete')) {
             $retval .= userlist ();
@@ -222,7 +220,7 @@
 }
 
 /**
-* Diplays items needing moderation
+* Displays items needing moderation
 *
 * Displays the moderation list of items from the submission tables
 *
@@ -231,45 +229,38 @@
 */
 function itemlist($type)
 {
-    global $_TABLES, $LANG29, $_CONF, $LANG_ADMIN;
+    global $_CONF, $_TABLES, $LANG29, $LANG_ADMIN;
+
     require_once( $_CONF['path_system'] . 'lib-admin.php' );
-    $isplugin = false;
+
     $retval = '';
+    $isplugin = false;
 
-    switch ($type) {
-    case 'event':
-        $sql = "SELECT eid AS id,title,datestart as day,url FROM {$_TABLES['eventsubmission']} ORDER BY datestart ASC";
-        $H = array($LANG29[10],$LANG29[11],$LANG29[12]);
-        $section_title = $LANG29[37];
-        $section_help = 'cceventsubmission.html';
-        break;
-    default:
-        if ((strlen($type) > 0) && ($type <> 'story')) {
-            $function = 'plugin_itemlist_' . $type;
-            if (function_exists($function)) {
-                // Great, we found the plugin, now call it's itemlist method
-                $plugin = new Plugin();
-                $plugin = $function();
+    if ((strlen ($type) > 0) && ($type <> 'story')) {
+        $function = 'plugin_itemlist_' . $type;
+        if (function_exists ($function)) {
+            // Great, we found the plugin, now call its itemlist method
+            $plugin = new Plugin();
+            $plugin = $function();
+            if (isset ($plugin)) {
                 $helpfile = $plugin->submissionhelpfile;
                 $sql = $plugin->getsubmissionssql;
                 $H = $plugin->submissionheading;
-                $isplugin = true;
                 $section_title = $plugin->submissionlabel;
                 $section_help = $helpfile;
-                break;
+                $isplugin = true;
             }
-        } else { # story submission
-            $sql = "SELECT sid AS id,title,date,tid FROM {$_TABLES['storysubmission']}" . COM_getTopicSQL ('WHERE') . " ORDER BY date ASC";
-            $H =  array($LANG29[10],$LANG29[14],$LANG29[15]);
-            $section_title = $LANG29[35];
-            $section_help = 'ccstorysubmission.html';
-            break;
         }
+    } else { // story submission
+        $sql = "SELECT sid AS id,title,date,tid FROM {$_TABLES['storysubmission']}" . COM_getTopicSQL ('WHERE') . " ORDER BY date ASC";
+        $H =  array($LANG29[10],$LANG29[14],$LANG29[15]);
+        $section_title = $LANG29[35];
+        $section_help = 'ccstorysubmission.html';
     }
 
     // run SQL but this time ignore any errors
     if (!empty ($sql)) {
-        $result = DB_query($sql,1);
+        $result = DB_query($sql, 1);
     }
     if (empty ($sql) || DB_error()) {
         // was more than likely a plugin that doesn't need moderation
@@ -289,10 +280,11 @@
                      . '.php?mode=editsubmission&amp;id=' . $A[0];
         }
         $A['row'] = $i;
+        $A['_moderation_type'] = $type;
         $data_arr[$i] = $A;
     }
 
-    $header_arr = array(      # dislay 'text' and use table field 'field'
+    $header_arr = array(      // display 'text' and use table field 'field'
         array('text' => $LANG_ADMIN['edit'], 'field' => 0),
         array('text' => $H[0], 'field' => 1),
         array('text' => $H[1], 'field' => 2),
@@ -303,21 +295,25 @@
     $text_arr = array('has_menu'    => false,
                       'title'       => $section_title,
                       'help_url'    => $section_help,
-                      'no_data'     => $LANG29[39]);
+                      'no_data'   => $LANG29[39],
+                      'form_url'  => "{$_CONF['site_admin_url']}/moderation.php"
+    );
+
 
-    $table = ADMIN_simpleList("ADMIN_getListField_moderation", $header_arr, $text_arr, $data_arr, array());
+    $listoptions = array('chkdelete' => true, 'chkfield' => 'id');
+    $table = ADMIN_simpleList('ADMIN_getListField_moderation', $header_arr,
+                              $text_arr, $data_arr, array(), $listoptions);
     if ($nrows > 0) {
-        $retval .= LB . '<form action="' . $_CONF['site_admin_url']
-                . '/moderation.php" method="POST">' . LB
+        $retval .= LB . $table . LB
                 . '<input type="hidden" name="type" value="' . $type . '">' . LB
                 . '<input type="hidden" name="mode" value="moderation">' . LB
                 . '<input type="hidden" name="count" value="' . $nrows . '">'
-                . LB . $table . LB
                 . '<p align="center"><input type="submit" value="'
                 . $LANG_ADMIN['submit'] . '"></p></form>' . LB;
     } else {
         $retval .= $table;
     }
+
     return $retval;
 }
 
@@ -336,7 +332,6 @@
     require_once ($_CONF['path_system'] . 'lib-admin.php');
 
     $retval = '';
-
     $sql = "SELECT uid as id,username,fullname,email FROM {$_TABLES['users']} WHERE status = 2";
     $result = DB_query ($sql);
     $nrows = DB_numRows($result);
@@ -358,21 +353,25 @@
         array('text' => $LANG29[1], 'field' => 'approve')
     );
 
-    $text_arr = array('has_menu'    => false,
-                        'title'     => $LANG29[40],
-                        'help_url'  => '',
-                        'no_data'   => $LANG29[39]
+    $text_arr = array('has_menu'  => false,
+                      'title'     => $LANG29[40],
+                      'help_url'  => '',
+                      'no_data'   => $LANG29[39],
+                      'form_url'  => "{$_CONF['site_admin_url']}/moderation.php"
     );
-    $table = ADMIN_simpleList("ADMIN_getListField_moderation", $header_arr, $text_arr, $data_arr, array());
+
+    $listoptions = array('chkdelete' => true, 'chkfield' => 'id');
+
+    $table = ADMIN_simpleList('ADMIN_getListField_moderation', $header_arr,
+                              $text_arr, $data_arr, array(), $listoptions);
     if ($nrows > 0) {
-        $retval .= LB . '<form action="' . $_CONF['site_admin_url']
-                . '/moderation.php" method="POST">' . LB
+        $retval .= LB . $table . LB
                 . '<input type="hidden" name="type" value="user">' . LB
                 . '<input type="hidden" name="mode" value="moderation">' . LB
                 . '<input type="hidden" name="count" value="' . $nrows . '">'
-                . LB . $table . LB
                 . '<p align="center"><input type="submit" value="'
                 . $LANG_ADMIN['submit'] . '"></p></form>' . LB;
+
     } else {
         $retval .= $table;
     }
@@ -391,7 +390,9 @@
 function draftlist ()
 {
     global $_CONF, $_TABLES, $LANG24, $LANG29, $LANG_ADMIN;
+
     require_once( $_CONF['path_system'] . 'lib-admin.php' );
+
     $retval = '';
 
     $result = DB_query ("SELECT sid AS id,title,UNIX_TIMESTAMP(date) AS day,tid FROM {$_TABLES['stories']} WHERE (draft_flag = 1)" . COM_getTopicSQL ('AND') . COM_getPermSQL ('AND', 0, 3) . " ORDER BY date ASC");
@@ -416,18 +417,22 @@
         array('text' => $LANG29[2], 'field' => 'delete'),
         array('text' => $LANG29[1], 'field' => 'approve'));
 
-    $text_arr = array('has_menu'    => false,
-                        'title'     => $LANG29[35] . ' (' . $LANG24[34] . ')',
-                        'help_url'  => '',
-                        'no_data'   => $LANG29[39]);
-
-    $table = ADMIN_simpleList("ADMIN_getListField_moderation", $header_arr, $text_arr, $data_arr, array());
+    $text_arr = array('has_menu'  => false,
+                      'title'     => $LANG29[35] . ' (' . $LANG24[34] . ')',
+                      'help_url'  => '',
+                      'no_data'   => $LANG29[39],
+                      'form_url'  => "{$_CONF['site_admin_url']}/moderation.php");
+
+    $listoptions = array('chkdelete' => true, 'chkfield' => 'id');
+    $table = ADMIN_simpleList('ADMIN_getListField_moderation', $header_arr,
+                              $text_arr, $data_arr, array(), $listoptions);
     if ($nrows > 0) {
-        $retval .= "\n\n<form action=\"{$_CONF['site_admin_url']}/moderation.php\" method=\"POST\">"
-                    ."<input type=\"hidden\" name=\"type\" value=\"draft\">"
-                    ."<input type=\"hidden\" name=\"mode\" value=\"moderation\">"
-                    .$table
-                    ."<center><input type=\"submit\" value=\"{$LANG_ADMIN['submit']}\"></center></form>\n\n";
+        $retval .= LB . $table . LB
+                . '<input type="hidden" name="type" value="draft">' . LB
+                . '<input type="hidden" name="mode" value="moderation">' . LB
+                . '<input type="hidden" name="count" value="' . $nrows . '">'
+                . '<p align="center"><input type="submit" value="'
+                . $LANG_ADMIN['submit'] . '"></p></form>' . LB;
     } else {
         $retval .= $table;
     }
@@ -442,7 +447,7 @@
 *
 * @param    array   $mid        Array of items
 * @param    array   $action     Array of actions to perform on items
-* @param    string  $type       Type of items ('story', 'event', etc.)
+* @param    string  $type       Type of items ('story', etc.)
 * @param    int     $count      Number of items to moderate
 * @return   string              HTML for "command and control" page
 *
@@ -454,12 +459,6 @@
     $retval = '';
 
     switch ($type) {
-    case 'event':
-        $id = 'eid';
-        $table = $_TABLES['events'];
-        $submissiontable = $_TABLES['eventsubmission'];
-        $fields = 'eid,title,description,location,address1,address2,city,state,zipcode,datestart,timestart,dateend,timeend,url';
-        break;
     case 'story':
         $id = 'sid';
         $table = $_TABLES['stories'];
@@ -475,7 +474,9 @@
         list($id, $table, $fields, $submissiontable) = PLG_getModerationValues($type);
     }
 
+    $formaction = false;        // Set true if an valid action other then delete_all is selected
     for ($i = 0; $i < $count; $i++) {
+        if (isset($action[$i]) AND $action[$i] != '') $formaction = true;
         switch ($action[$i]) {
         case 'delete':
             if (!empty ($type) && ($type <> 'story') && ($type <> 'draft')) {
@@ -505,6 +506,8 @@
                 $T = DB_fetchArray ($result);
                 if ($T['archive_flag'] == 1) {
                     $frontpage = 0;
+                } else if (isset ($_CONF['frontpage'])) {
+                    $frontpage = $_CONF['frontpage'];
                 } else {
                     $frontpage = 1;
                 }
@@ -514,15 +517,6 @@
 
                 COM_rdfUpToDateCheck ();
                 COM_olderStuff ();
-            } else if ($type == 'event') {
-                // first, copy entry from the submission to the events table
-                DB_copy ($table, $fields, $fields, $submissiontable, $id,
-                         $mid[$i]);
-                // then set the default permissions
-                $A = array ();
-                SEC_setDefaultPermissions ($A,
-                                           $_CONF['default_permissions_event']);
-                DB_query ("UPDATE {$_TABLES['events']} SET perm_owner = {$A['perm_owner']}, perm_group = {$A['perm_group']}, perm_members = {$A['perm_members']}, perm_anon = {$A['perm_anon']} WHERE eid = {$mid[$i]}");
             } else if ($type == 'draft') {
                 DB_query ("UPDATE {$_TABLES['stories']} SET draft_flag = 0 WHERE sid = '{$mid[$i]}'");
 
@@ -538,6 +532,23 @@
         }
     }
 
+    // Check if there was no direct action used on the form and if the delete_all submit action was used
+    if (!$formaction AND isset($_POST['delitem'])) {
+        foreach($_POST['delitem'] as $delitem) {
+            $delitem = COM_applyFilter($delitem);
+            if (!empty ($type) && ($type <> 'story') && ($type <> 'draft')) {
+                // There may be some plugin specific processing that needs to
+                // happen first.
+                $retval .= PLG_deleteSubmission($type, $delitem);
+            }
+            if ($type == 'draft') {
+                STORY_deleteStory($delitem);
+            } else {
+                DB_delete($submissiontable,"$id",$delitem);
+            }
+        }
+    }
+
     $retval .= commandcontrol();
 
     return $retval;
@@ -560,8 +571,9 @@
     global $_CONF, $_TABLES, $LANG04;
 
     $retval = '';
-
+    $formaction = false;        // Set true if an valid action other then delete_all is selected
     for ($i = 0; $i < $count; $i++) {
+        if (isset($action[$i]) AND $action[$i] != '') $formaction = true;
         switch ($action[$i]) {
             case 'delete': // Ok, delete everything related to this user
                 if ($uid[$i] > 1) {
@@ -569,6 +581,7 @@
                 }
                 break;
             case 'approve':
+                $uid[$i] = COM_applyFilter($uid[$i], true);
                 $result = DB_query ("SELECT email,username, uid FROM {$_TABLES['users']} WHERE uid = $uid[$i]");
                 $nrows = DB_numRows($result);
                 if ($nrows == 1) {
@@ -581,11 +594,50 @@
         }
     }
 
+    // Check if there was no direct action used on the form and if the delete_all submit action was used
+    if (!$formaction AND isset($_POST['delitem'])) {
+        foreach($_POST['delitem'] as $del_uid) {
+            $del_uid = COM_applyFilter($del_uid,true);
+            if ($del_uid > 1) {
+                USER_deleteAccount ($uid[$i]);
+            }
+        }
+    }
+
     $retval .= commandcontrol();
 
     return $retval;
 }
 
+/**
+* Display a reminder to execute the security check script
+*
+*/
+function security_check_reminder ()
+{
+    global $_CONF, $_TABLES, $_IMAGE_TYPE, $MESSAGE;
+
+    $retval = '';
+
+    if (!SEC_inGroup ('Root')) {
+        return $retval;
+    }
+
+    $done = DB_getItem ($_TABLES['vars'], 'value', "name = 'security_check'");
+    if ($done != 1) {
+        $message = 'Please <a href="' . $_CONF['site_admin_url'] . '/sectest.php">check the security of your site</a> before using it!';
+        $retval .= COM_startBlock ($MESSAGE[40], '',
+                           COM_getBlockTemplate ('_msg_block', 'header'))
+            . '<p style="padding:5px"><img src="' . $_CONF['layout_url']
+            . '/images/sysmessage.' . $_IMAGE_TYPE . '" border="0" align="left"'
+            . ' alt="" style="padding-right:5px; padding-bottom:3px">'
+            . $message . '</p>'
+            . COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
+    }
+
+    return $retval;
+}
+
 // MAIN
 
 $display = '';
@@ -599,9 +651,11 @@
         $display .= moderateusers ($_POST['id'], $_POST['action'],
                                   COM_applyFilter ($_POST['count'], true));
     } else {
-        $display .= moderation ($_POST['id'], $_POST['action'], $_POST['type'],                                 COM_applyFilter ($_POST['count'], true));
+        $display .= moderation ($_POST['id'], $_POST['action'], $_POST['type'],
+                                  COM_applyFilter ($_POST['count'], true));
     }
 } else {
+    $display .= security_check_reminder ();
     $display .= commandcontrol();
 }
 
diff -ruN 1.4.0sr5-1.src/admin/plugins/calendar/index.php 1.4.1.src/admin/plugins/calendar/index.php
--- 1.4.0sr5-1.src/admin/plugins/calendar/index.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/admin/plugins/calendar/index.php	2006-09-03 04:43:36.000000000 -0500
@@ -0,0 +1,652 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Calendar Plugin 1.0                                                       |
+// +---------------------------------------------------------------------------+
+// | index.php                                                                 |
+// |                                                                           |
+// | Geeklog Calendar Plugin administration page.                              |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2000-2006 by the following authors:                         |
+// |                                                                           |
+// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
+// |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
+// |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
+// |          Dirk Haun         - dirk AT haun-online DOT de                   |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is free software; you can redistribute it and/or             |
+// | modify it under the terms of the GNU General Public License               |
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
+// | GNU General Public License for more details.                              |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+// $Id: index.php,v 1.26 2006/09/03 09:43:36 dhaun Exp $
+
+require_once ('../../../lib-common.php');
+require_once ('../../auth.inc.php');
+
+// Uncomment the line below if you need to debug the HTTP variables being passed
+// to the script.  This will sometimes cause errors but it will allow you to see
+// the data being passed in a POST operation
+// COM_debug($_POST);
+
+$display = '';
+
+// Ensure user even has the rights to access this page
+if (!SEC_hasRights('calendar.edit')) {
+    $display .= COM_siteHeader('menu', $MESSAGE[30]);
+    $display .= COM_startBlock ($MESSAGE[30], '',
+                                COM_getBlockTemplate ('_msg_block', 'header'));
+    $display .= $MESSAGE[35];
+    $display .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
+    $display .= COM_siteFooter();
+
+    // Log attempt to error.log
+    COM_accessLog("User {$_USER['username']} tried to illegally access the event administration screen.");
+
+    echo $display;
+
+    exit;
+}
+
+
+/**
+* Shows event editor
+*
+* @param    string  $mode   Indicates if this is a submission or a regular entry
+* @param    array   $A      array holding the event's details
+* @param    string  $msg    an optional error message to display
+* @return   string          HTML for event editor or error message
+*
+*/
+function CALENDAR_editEvent ($mode, $A, $msg = '')
+{
+    global $_CONF, $_GROUPS, $_TABLES, $_USER, $_CA_CONF, $LANG_CAL_1,
+           $LANG_CAL_ADMIN, $LANG10, $LANG12, $LANG_ACCESS, $LANG_ADMIN,
+           $MESSAGE;
+
+    $retval = '';
+
+    if (!empty ($msg)) {
+        $retval .= COM_startBlock ($LANG_CAL_ADMIN[2], '',
+                        COM_getBlockTemplate ('_msg_block', 'header'));
+        $retval .= $msg;
+        $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
+    }
+
+    $event_templates = new Template($_CONF['path'] . 'plugins/calendar/templates/admin');
+    $event_templates->set_file('editor','eventeditor.thtml');
+    $event_templates->set_var('site_url', $_CONF['site_url']);
+    $event_templates->set_var('site_admin_url', $_CONF['site_admin_url']);
+    $event_templates->set_var('layout_url',$_CONF['layout_url']);
+    $event_templates->set_var('lang_allowed_html', COM_allowedHTML());
+    $event_templates->set_var('lang_postmode', $LANG_CAL_ADMIN[3]);
+
+    if ($mode <> 'editsubmission' AND !empty($A['eid'])) {
+        // Get what level of access user has to this object
+        $access = SEC_hasAccess($A['owner_id'],$A['group_id'],$A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']);
+        if ($access == 0 OR $access == 2) {
+            // Uh, oh!  User doesn't have access to this object
+            $retval .= COM_startBlock ($LANG_ACCESS['accessdenied'], '',
+                               COM_getBlockTemplate ('_msg_block', 'header'));
+            $retval .= $LANG_CAL_ADMIN[17];
+            $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
+            COM_accessLog("User {$_USER['username']} tried to illegally submit or edit event $eid.");
+            return $retval;
+        }
+    } else {
+        $A['owner_id'] = $_USER['uid'];
+        if (isset ($_GROUPS['Calendar Admin'])) {
+            $A['group_id'] = $_GROUPS['Calendar Admin'];
+        } else {
+            $A['group_id'] = SEC_getFeatureGroup ('calendar.edit');
+        }
+        SEC_setDefaultPermissions ($A, $_CA_CONF['default_permissions']);
+        $access = 3;
+    }
+
+    if ($mode == 'editsubmission') {
+        $event_templates->set_var('post_options', COM_optionList($_TABLES['postmodes'],'code,name','plaintext'));
+    } else {
+        if (!isset ($A['postmode'])) {
+            $A['postmode'] = $_CONF['postmode'];
+        }
+        $event_templates->set_var('post_options', COM_optionList($_TABLES['postmodes'],'code,name',$A['postmode']));
+    }
+
+    $retval .= COM_startBlock($LANG_CAL_ADMIN[1], '',
+                              COM_getBlockTemplate ('_admin_block', 'header'));
+
+    if (!empty($A['eid'])) {
+        $delbutton = '<input type="submit" value="' . $LANG_ADMIN['delete']
+                   . '" name="mode"%s>';
+        $jsconfirm = ' onclick="return confirm(\'' . $MESSAGE[76] . '\');"';
+        $event_templates->set_var ('delete_option',
+                                   sprintf ($delbutton, $jsconfirm));
+        $event_templates->set_var ('delete_option_no_confirmation',
+                                   sprintf ($delbutton, ''));
+    } else { // new event
+        $A['eid'] = COM_makesid ();
+        $A['title'] = '';
+        $A['description'] = '';
+        $A['url'] = '';
+        $A['hits'] = 0;
+
+        // in case a start date/time has been passed from the calendar,
+        // pick it up for the end date/time
+        if (empty ($A['dateend'])) {
+            $A['dateend'] = $A['datestart'];
+        }
+        if (empty ($A['timeend'])) {
+            $A['timeend'] = $A['timestart'];
+        }
+        $A['event_type'] = '';
+        $A['location'] = '';
+        $A['address1'] = '';
+        $A['address2'] = '';
+        $A['city'] = '';
+        $A['state'] = '';
+        $A['zipcode'] = '';
+        $A['allday'] = 0;
+    }
+
+    $event_templates->set_var('event_id', $A['eid']);
+    $event_templates->set_var('lang_eventtitle', $LANG_ADMIN['title']);
+    $A['title'] = str_replace('{','&#123;',$A['title']);
+    $A['title'] = str_replace('}','&#125;',$A['title']);
+    $A['title'] = str_replace('"','&quot;',$A['title']);
+    $event_templates->set_var('event_title', stripslashes ($A['title']));
+
+    $event_templates->set_var('lang_eventtype', $LANG_CAL_1[37]);
+    $event_templates->set_var('lang_editeventtypes', $LANG12[50]);
+    $event_templates->set_var('type_options',
+                              CALENDAR_eventTypeList ($A['event_type']));
+
+    $event_templates->set_var('lang_eventurl', $LANG_CAL_ADMIN[4]);
+    $event_templates->set_var('max_url_length', 255);
+    $event_templates->set_var('event_url', $A['url']);
+    $event_templates->set_var('lang_includehttp', $LANG_CAL_ADMIN[9]);
+    $event_templates->set_var('lang_eventstartdate', $LANG_CAL_ADMIN[5]);
+    //$event_templates->set_var('event_startdate', $A['datestart']);
+    $event_templates->set_var('lang_starttime', $LANG_CAL_1[30]);
+
+    // Combine date/time for easier manipulation
+    $A['datestart'] = trim ($A['datestart'] . ' ' . $A['timestart']);
+    if (empty ($A['datestart'])) {
+        $start_stamp = time ();
+    } else {
+        $start_stamp = strtotime ($A['datestart']);
+    }   
+    $A['dateend'] = trim ($A['dateend'] . ' ' . $A['timeend']);
+    if (empty ($A['dateend'])) {
+        $end_stamp = time ();
+    } else {
+        $end_stamp = strtotime ($A['dateend']);
+    }
+    $start_month = date('m', $start_stamp);
+    $start_day = date('d', $start_stamp);
+    $start_year = date('Y', $start_stamp);
+    $end_month = date('m', $end_stamp);
+    $end_day = date('d', $end_stamp);
+    $end_year = date('Y', $end_stamp);
+
+    $start_hour = date ('H', $start_stamp);
+    $start_minute = intval (date ('i', $start_stamp) / 15) * 15;
+    if ($start_hour >= 12) {
+        $startampm = 'pm';
+    } else {
+        $startampm = 'am';
+    }
+    $start_hour_24 = $start_hour % 24;
+    if ($start_hour > 12) {
+        $start_hour = $start_hour - 12;
+    } else if ($start_hour == 0) {
+        $start_hour = 12;
+    }
+
+    $end_hour = date('H', $end_stamp);
+    $end_minute = intval (date('i', $end_stamp) / 15) * 15;
+    if ($end_hour >= 12) {
+        $endampm = 'pm';
+    } else {
+        $endampm = 'am';
+    }
+    $end_hour_24 = $end_hour % 24;
+    if ($end_hour > 12) {
+        $end_hour = $end_hour - 12;
+    } else if ($end_hour == 0) {
+        $end_hour = 12;
+    }
+
+    $month_options = COM_getMonthFormOptions ($start_month);
+    $event_templates->set_var ('startmonth_options', $month_options);
+
+    $month_options = COM_getMonthFormOptions ($end_month);
+    $event_templates->set_var ('endmonth_options', $month_options);
+
+    $day_options = COM_getDayFormOptions ($start_day);
+    $event_templates->set_var ('startday_options', $day_options);
+
+    $day_options = COM_getDayFormOptions ($end_day);
+    $event_templates->set_var ('endday_options', $day_options);
+
+    $year_options = COM_getYearFormOptions ($start_year);
+    $event_templates->set_var ('startyear_options', $year_options);
+
+    $year_options = COM_getYearFormOptions ($end_year);
+    $event_templates->set_var ('endyear_options', $year_options);
+
+    if (isset ($_CA_CONF['hour_mode']) && ($_CA_CONF['hour_mode'] == 24)) {
+        $hour_options = COM_getHourFormOptions ($start_hour_24, 24);
+        $event_templates->set_var ('starthour_options', $hour_options);
+
+        $hour_options = COM_getHourFormOptions ($end_hour_24, 24);
+        $event_templates->set_var ('endhour_options', $hour_options);
+
+        $event_templates->set_var ('hour_mode', 24);
+    } else {
+        $hour_options = COM_getHourFormOptions ($start_hour);
+        $event_templates->set_var ('starthour_options', $hour_options);
+
+        $hour_options = COM_getHourFormOptions ($end_hour);
+        $event_templates->set_var ('endhour_options', $hour_options);
+
+        $event_templates->set_var ('hour_mode', 12);
+    }
+
+    $event_templates->set_var ('startampm_selection', 
+                        COM_getAmPmFormSelection ('start_ampm', $startampm));
+    $event_templates->set_var ('endampm_selection', 
+                        COM_getAmPmFormSelection ('end_ampm', $endampm));
+
+    $event_templates->set_var ('startminute_options',
+                               COM_getMinuteFormOptions ($start_minute, 15));
+    $event_templates->set_var ('endminute_options',
+                               COM_getMinuteFormOptions ($end_minute, 15));
+
+    $event_templates->set_var('lang_enddate', $LANG12[13]);
+    $event_templates->set_var('lang_eventenddate', $LANG_CAL_ADMIN[6]);
+    $event_templates->set_var('event_enddate', $A['dateend']);
+    $event_templates->set_var('lang_enddate', $LANG12[13]);
+    $event_templates->set_var('lang_endtime', $LANG_CAL_1[29]);
+    $event_templates->set_var('lang_alldayevent', $LANG_CAL_1[31]);
+    if ($A['allday'] == 1) {
+        $event_templates->set_var('allday_checked', 'checked="checked"');
+    }
+    $event_templates->set_var('lang_location',$LANG12[51]);
+    $event_templates->set_var('event_location', stripslashes ($A['location']));
+    $event_templates->set_var('lang_addressline1',$LANG12[44]);
+    $event_templates->set_var('event_address1', stripslashes ($A['address1']));
+    $event_templates->set_var('lang_addressline2',$LANG12[45]);
+    $event_templates->set_var('event_address2', stripslashes ($A['address2']));
+    $event_templates->set_var('lang_city',$LANG12[46]);
+    $event_templates->set_var('event_city', stripslashes ($A['city']));
+    $event_templates->set_var('lang_state',$LANG12[47]);
+    $event_templates->set_var('state_options', CALENDAR_stateList($A['state']));
+    $event_templates->set_var('lang_zipcode',$LANG12[48]);
+    $event_templates->set_var('event_zipcode', $A['zipcode']);
+    $event_templates->set_var('lang_eventlocation', $LANG_CAL_ADMIN[7]);
+    $event_templates->set_var('event_location', stripslashes ($A['location']));
+    $event_templates->set_var('lang_eventdescription', $LANG_CAL_ADMIN[8]);
+    $event_templates->set_var('event_description', stripslashes ($A['description']));
+    $event_templates->set_var('lang_hits', $LANG10[30]);
+    $event_templates->set_var('hits', COM_numberFormat ($A['hits']));
+    $event_templates->set_var('lang_save', $LANG_ADMIN['save']);
+    $event_templates->set_var('lang_cancel', $LANG_ADMIN['cancel']);
+
+    // user access info
+    $event_templates->set_var('lang_accessrights',$LANG_ACCESS['accessrights']);
+    $event_templates->set_var('lang_owner', $LANG_ACCESS['owner']);
+    $ownername = COM_getDisplayName ($A['owner_id']);
+    $event_templates->set_var('owner_username', DB_getItem($_TABLES['users'],
+                              'username', "uid = {$A['owner_id']}"));
+    $event_templates->set_var('owner_name', $ownername);
+    $event_templates->set_var('owner', $ownername);
+    $event_templates->set_var('owner_id', $A['owner_id']);
+    $event_templates->set_var('lang_group', $LANG_ACCESS['group']);
+    $event_templates->set_var('group_dropdown',
+                              SEC_getGroupDropdown ($A['group_id'], $access));
+    $event_templates->set_var('lang_permissions', $LANG_ACCESS['permissions']);
+    $event_templates->set_var('lang_permissionskey', $LANG_ACCESS['permissionskey']);
+    $event_templates->set_var('permissions_editor', SEC_getPermissionsHTML($A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']));
+    $event_templates->parse('output', 'editor');
+    $retval .= $event_templates->finish($event_templates->get_var('output'));
+    $retval .= COM_endBlock (COM_getBlockTemplate ('_admin_block', 'footer'));
+
+    return $retval;
+}
+
+/**
+* Saves an event to the database
+*
+* @param    string  $eid            Event ID
+* @param    string  $title          Event Title
+* @param    string  $url            URL for the event
+* @param    string  $datestart      Date the event begins on
+* @param    string  $dateend        Date the event ends on
+* @param    string  $location       Where the event will be held at
+* @param    string  $description    Description about the event
+* @param    string  $postmode       Is this HTML or plain text?
+* @param    string  $owner_id       ID of owner
+* @param    string  $group_id       ID of group event belongs to
+* @param    string  $perm_owner     Permissions the owner has on event
+* @param    string  $perm_group     Permissions the groups has on the event
+* @param    string  $perm_members   Permisssions members have on the event
+* @param    string  $perm_anon      Permissions anonymous users have
+* @return   string                  HTML redirect or error message
+*
+*/
+function CALENDAR_saveEvent ($eid, $title, $event_type, $url, $allday,
+                             $start_month, $start_day, $start_year, $start_hour,
+                             $start_minute, $start_ampm, $end_month, $end_day,
+                             $end_year, $end_hour, $end_minute, $end_ampm,
+                             $location, $address1, $address2, $city, $state,
+                             $zipcode, $description, $postmode, $owner_id,
+                             $group_id, $perm_owner, $perm_group, $perm_members,
+                             $perm_anon, $hour_mode)
+{
+    global $_CONF, $_TABLES, $_USER, $LANG_CAL_ADMIN, $MESSAGE;
+
+    $retval = '';
+
+    // Convert array values to numeric permission values
+    list($perm_owner,
+        $perm_group,
+        $perm_members,
+        $perm_anon) = SEC_getPermissionValues($perm_owner,
+                                              $perm_group,
+                                              $perm_members,
+                                              $perm_anon);
+
+    $access = 0;
+    if (DB_count ($_TABLES['events'], 'eid', $eid) > 0) {
+        $result = DB_query ("SELECT owner_id,group_id,perm_owner,perm_group,"
+                           ."perm_members,perm_anon FROM {$_TABLES['events']} "
+                           ."WHERE eid = '{$eid}'");
+        $A = DB_fetchArray ($result);
+        $access = SEC_hasAccess ($A['owner_id'], $A['group_id'],
+                $A['perm_owner'], $A['perm_group'], $A['perm_members'],
+                $A['perm_anon']);
+    } else {
+        $access = SEC_hasAccess ($owner_id, $group_id, $perm_owner, $perm_group,
+                $perm_members, $perm_anon);
+    }
+    if (($access < 3) || !SEC_inGroup ($group_id)) {
+        $retval .= COM_siteHeader('menu', $MESSAGE[30]);
+        $retval .= COM_startBlock ($MESSAGE[30], '',
+                            COM_getBlockTemplate ('_msg_block', 'header'));
+        $retval .= $MESSAGE[31];
+        $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
+        $retval .= COM_siteFooter();
+        COM_accessLog ("User {$_USER['username']} tried to illegally submit or edit event $eid.");
+        return $retval;
+    }
+
+    if ($hour_mode == 24) {
+        // to avoid having to mess with the tried and tested code below, map
+        // the 24-hour values onto their 12-hour counterparts and use those
+        if ($start_hour >= 12) {
+            $start_ampm = 'pm';
+            $start_hour = $start_hour - 12;
+        } else {
+            $start_ampm = 'am';
+            $start_hour = $start_hour;
+        }
+        if ($start_hour == 0) {
+            $start_hour = 12;
+        }
+        if ($end_hour >= 12) {
+            $end_ampm = 'pm';
+            $end_hour = $end_hour - 12;
+        } else {
+            $end_ampm = 'am';
+            $end_hour = $end_hour;
+        }
+        if ($end_hour == 0) {
+            $end_hour = 12;
+        }
+    }
+
+    if ($allday == 'on') {
+        $allday = 1;
+    } else {
+        $allday = 0;
+    }
+
+    // Make sure start date is before end date
+    if (checkdate ($start_month, $start_day, $start_year)) {
+        $datestart = $start_year . '-' . $start_month . '-' . $start_day;
+        $timestart = $start_hour . ':' . $start_minute . ':00';
+    } else {
+        $retval .= COM_siteHeader ('menu', $LANG_CAL_ADMIN[2]);
+        $retval .= COM_startBlock ($LANG_CAL_ADMIN[2], '',
+                            COM_getBlockTemplate ('_msg_block', 'header'));
+        $retval .= $LANG_CAL_ADMIN[23];
+        $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
+        $retval .= COM_siteFooter ();
+
+        return $retval;
+    }
+    if (checkdate ($end_month, $end_day, $end_year)) {
+        $dateend = $end_year . '-' . $end_month . '-' . $end_day;
+        $timeend = $end_hour . ':' . $end_minute . ':00';
+    } else {
+        $retval .= COM_siteHeader ('menu', $LANG_CAL_ADMIN[2]);
+        $retval .= COM_startBlock ($LANG_CAL_ADMIN[2], '',
+                            COM_getBlockTemplate ('_msg_block', 'header'));
+        $retval .= $LANG_CAL_ADMIN[24];
+        $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
+        $retval .= COM_siteFooter ();
+
+        return $retval;
+    }
+    if ($allday == 0) {
+        if ($dateend < $datestart) {
+            $retval .= COM_siteHeader ('menu', $LANG_CAL_ADMIN[2]);
+            $retval .= COM_startBlock ($LANG_CAL_ADMIN[2], '',
+                                COM_getBlockTemplate ('_msg_block', 'header'));
+            $retval .= $LANG_CAL_ADMIN[25];
+            $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
+            $retval .= COM_siteFooter ();
+
+            return $retval;
+        }
+    } else {
+        if ($dateend < $datestart) {
+            // Force end date to be same as start date
+            $dateend = $datestart;
+        }
+    }
+
+    // clean 'em up
+    if ($postmode == 'html') {
+        $description = COM_checkHTML (COM_checkWords ($description));
+    } else {
+        $postmode = 'plaintext';
+        $description = htmlspecialchars (COM_checkWords ($description));
+    }
+    $description = addslashes ($description);
+    $title = addslashes (COM_checkHTML (COM_checkWords ($title)));
+    $location = addslashes (COM_checkHTML (COM_checkWords ($location)));
+    $address1 = addslashes (COM_checkHTML (COM_checkWords ($address1)));
+    $address2 = addslashes (COM_checkHTML (COM_checkWords ($address2)));
+    $city = addslashes (COM_checkHTML (COM_checkWords ($city)));
+    $zipcode =  addslashes (COM_checkHTML (COM_checkWords ($zipcode)));
+    $event_type = addslashes (strip_tags (COM_checkWords ($event_type)));
+    $url = addslashes (strip_tags ($url));
+
+    if ($allday == 0) {
+        // Add 12 to make time on 24 hour clock if needed
+        if ($start_ampm == 'pm' AND $start_hour <> 12) {
+            $start_hour = $start_hour + 12;
+        }
+        // If 12AM set hour to 00
+        if ($start_ampm == 'am' AND $start_hour == 12) {
+            $start_hour = '00';
+        }
+        // Add 12 to make time on 24 hour clock if needed
+        if ($end_ampm == 'pm' AND $end_hour <> 12) {
+           $end_hour = $end_hour + 12;
+        }
+        // If 12AM set hour to 00
+        if ($end_ampm == 'am' AND $end_hour == 12) {
+            $end_hour = '00';
+        }
+        $timestart = $start_hour . ':' . $start_minute . ':00';
+        $timeend = $end_hour . ':' . $end_minute . ':00';
+    }
+
+    if (!empty ($eid) AND !empty ($description) AND !empty ($title)) {
+        DB_delete ($_TABLES['eventsubmission'], 'eid', $eid);
+
+        DB_save($_TABLES['events'],
+               'eid,title,event_type,url,allday,datestart,dateend,timestart,'
+               .'timeend,location,address1,address2,city,state,zipcode,description,'
+               .'postmode,owner_id,group_id,perm_owner,perm_group,perm_members,'
+               .'perm_anon',
+               "'$eid','$title','$event_type','$url',$allday,'$datestart',"
+               ."'$dateend','$timestart','$timeend','$location','$address1',"
+               ."'$address2','$city','$state','$zipcode','$description','$postmode',"
+               ."$owner_id,$group_id,$perm_owner,$perm_group,$perm_members,$perm_anon");
+        if (DB_count ($_TABLES['personal_events'], 'eid', $eid) > 0) {
+            $result = DB_query ("SELECT uid FROM {$_TABLES['personal_events']} "
+                               ."WHERE eid = '{$eid}'");
+            $numrows = DB_numRows ($result);
+            for ($i = 1; $i <= $numrows; $i++) {
+                $P = DB_fetchArray ($result);
+                DB_save ($_TABLES['personal_events'],
+                        'eid,title,event_type,datestart,dateend,address1,address2,'
+                       .'city,state,zipcode,allday,url,description,postmode,'
+                       .'group_id,owner_id,perm_owner,perm_group,perm_members,'
+                       .'perm_anon,uid,location,timestart,timeend',
+                        "'$eid','$title','$event_type','$datestart','$dateend',"
+                       ."'$address1','$address2','$city','$state','$zipcode',"
+                       ."$allday,'$url','$description','$postmode',$group_id,"
+                       ."$owner_id,$perm_owner,$perm_group,$perm_members,"
+                       ."$perm_anon,{$P['uid']},'$location','$timestart','$timeend'");
+            }
+        }
+        COM_rdfUpToDateCheck ('geeklog', 'calendar', $eid);
+
+        return COM_refresh ($_CONF['site_admin_url']
+                           .'/plugins/calendar/index.php?msg=17');
+    } else {
+        $retval .= COM_siteHeader ('menu', $LANG_CAL_ADMIN[2]);
+        $retval .= COM_startBlock ($LANG_CAL_ADMIN[2], '',
+                            COM_getBlockTemplate ('_msg_block', 'header'));
+        $retval .= $LANG_CAL_ADMIN[10];
+        $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
+        $retval .= COM_siteFooter ();
+
+        return $retval;
+    }
+}
+
+
+// MAIN
+$mode = '';
+if (isset($_REQUEST['mode'])) {
+    $mode = $_REQUEST['mode'];
+}
+
+if (($mode == $LANG_ADMIN['delete']) && !empty ($LANG_ADMIN['delete'])) {
+    $eid = COM_applyFilter ($_REQUEST['eid']);
+    if (!isset ($eid) || empty ($eid) || ($eid == 0)) {
+        COM_errorLog ('Attempted to delete event eid=\''
+                      . $eid . "'");
+        $display .= COM_refresh ($_CONF['site_admin_url'] . '/plugins/calendar/index.php');
+    } else {
+        $display .= CALENDAR_deleteEvent ($eid);
+    }
+} else if (($mode == $LANG_ADMIN['save']) && !empty ($LANG_ADMIN['save'])) {
+    if (!isset ($_POST['allday'])) {
+        $_POST['allday'] = '';
+    }
+    $hour_mode = 12;
+    if (isset ($_POST['hour_mode']) && ($_POST['hour_mode'] == 24)) {
+        $hour_mode = 24;
+    }
+    $display .= CALENDAR_saveEvent (COM_applyFilter ($_POST['eid']),
+            $_POST['title'], $_POST['event_type'],
+            $_POST['url'], COM_applyFilter ($_POST['allday']),
+            COM_applyFilter ($_POST['start_month'], true),
+            COM_applyFilter ($_POST['start_day'], true),
+            COM_applyFilter ($_POST['start_year'], true),
+            COM_applyFilter ($_POST['start_hour'], true),
+            COM_applyFilter ($_POST['start_minute'], true), $_POST['start_ampm'],
+            COM_applyFilter ($_POST['end_month'], true),
+            COM_applyFilter ($_POST['end_day'], true),
+            COM_applyFilter ($_POST['end_year'], true),
+            COM_applyFilter ($_POST['end_hour'], true),
+            COM_applyFilter ($_POST['end_minute'], true), $_POST['end_ampm'],
+            $_POST['location'], $_POST['address1'], $_POST['address2'],
+            $_POST['city'], $_POST['state'], $_POST['zipcode'],
+            $_POST['description'], $_POST['postmode'] ,
+            COM_applyFilter ($_POST['owner_id'], true),
+            COM_applyFilter ($_POST['group_id'], true),
+            $_POST['perm_owner'], $_POST['perm_group'],
+            $_POST['perm_members'], $_POST['perm_anon'], $hour_mode);
+} else if ($mode == 'editsubmission') {
+    $id = COM_applyFilter ($_REQUEST['id']);
+    $result = DB_query ("SELECT * FROM {$_TABLES['eventsubmission']} WHERE eid ='$id'");
+    $A = DB_fetchArray ($result);
+    $A['hits'] = 0;
+    $display .= COM_siteHeader ('menu', $LANG_CAL_ADMIN[1]);
+    $display .= CALENDAR_editEvent ($mode, $A);
+    $display .= COM_siteFooter ();
+} else if ($mode == 'clone') {
+    $eid = COM_applyFilter ($_REQUEST['eid']);
+    $result = DB_query ("SELECT * FROM {$_TABLES['events']} WHERE eid ='$eid'");
+    $A = DB_fetchArray ($result);
+    $A['eid'] = COM_makesid ();
+    $A['owner_id'] = $_USER['uid'];
+    $display .= COM_siteHeader ('menu', $LANG_CAL_ADMIN[1]);
+    $display .= CALENDAR_editEvent ($mode, $A);
+    $display .= COM_siteFooter ();
+} else if ($mode == 'edit') {
+    $eid = '';
+    if (isset ($_REQUEST['eid'])) {
+        $eid = COM_applyFilter ($_REQUEST['eid']);
+    }
+    if (empty ($eid)) {
+        $A = array ();
+        $A['datestart'] = '';
+        $A['timestart'] = '';
+        if (isset ($_REQUEST['datestart'])) {
+            $A['datestart'] = COM_applyFilter ($_REQUEST['datestart']);
+        }
+        if (isset ($_REQUEST['timestart'])) {
+            $A['timestart'] = COM_applyFilter ($_REQUEST['timestart']);
+        }
+    } else {
+        $result = DB_query ("SELECT * FROM {$_TABLES['events']} WHERE eid ='$eid'");
+        $A = DB_fetchArray ($result);
+    }
+    $display .= COM_siteHeader ('menu', $LANG_CAL_ADMIN[1]);
+    $display .= CALENDAR_editEvent ($mode, $A);
+    $display .= COM_siteFooter ();
+} else { // 'cancel' or no mode at all
+    $display .= COM_siteHeader ('menu', $LANG_CAL_ADMIN[11]);
+    if (isset ($_REQUEST['msg'])) {
+        $display .= COM_showMessage (COM_applyFilter ($_REQUEST['msg'],
+                                                      true), 'calendar');
+    }
+    $display .= CALENDAR_listevents();
+    $display .= COM_siteFooter ();
+}
+
+echo $display;
+
+?>
diff -ruN 1.4.0sr5-1.src/admin/plugins/calendar/install.php 1.4.1.src/admin/plugins/calendar/install.php
--- 1.4.0sr5-1.src/admin/plugins/calendar/install.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/admin/plugins/calendar/install.php	2006-11-12 08:53:06.000000000 -0600
@@ -0,0 +1,357 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Calendar plugin 1.0 for Geeklog                                           |
+// +---------------------------------------------------------------------------+
+// | install.php                                                               |
+// |                                                                           |
+// | This file installs and removes the data structures for the                |
+// | Calendar plugin for Geeklog.                                              |
+// +---------------------------------------------------------------------------+
+// | Based on the Universal Plugin and prior work by the following authors:    |
+// |                                                                           |
+// | Copyright (C) 2002-2006 by the following authors:                         |
+// |                                                                           |
+// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
+// |          Tom Willett       - tom AT pigstye DOT net                       |
+// |          Blaine Lang       - blaine AT portalparts DOT com                |
+// |          Dirk Haun         - dirk AT haun-online DOT de                   |
+// |          Vincent Furia     - vinny01 AT users DOT sourceforge DOT net     |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is free software; you can redistribute it and/or             |
+// | modify it under the terms of the GNU General Public License               |
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
+// | GNU General Public License for more details.                              |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+// $Id: install.php,v 1.10 2006/11/12 14:53:06 dhaun Exp $
+
+require_once ('../../../lib-common.php');
+require_once ($_CONF['path'] . 'plugins/calendar/config.php');
+
+// Plugin information
+//
+// ----------------------------------------------------------------------------
+//
+$pi_display_name = 'Calendar';
+$pi_name         = 'calendar';
+$pi_version      = $_CA_CONF['version'];
+$gl_version      = '1.4.1';
+$pi_url          = 'http://www.geeklog.net/';
+
+// name of the Admin group
+$pi_admin        = 'Calendar Admin';
+
+// the plugin's groups - assumes first group to be the Admin group
+$GROUPS = array();
+$GROUPS[$pi_admin] = 'Has full access to ' . $pi_name . ' features';
+
+$FEATURES = array();
+$FEATURES['calendar.moderate']     = 'Ability to moderate pending events';
+$FEATURES['calendar.edit']         = 'Access to event editor';
+$FEATURES['calendar.submit']       = 'May skip the event submission queue';
+
+$MAPPINGS = array();
+$MAPPINGS['calendar.moderate']     = array ($pi_admin);
+$MAPPINGS['calendar.edit']         = array ($pi_admin);
+$MAPPINGS['calendar.submit']       = array ($pi_admin);
+
+// (optional) data to pre-populate tables with
+// Insert table name and sql to insert default data for your plugin.
+// Note: '#group#' will be replaced with the id of the plugin's admin group.
+$DEFVALUES = array();
+
+/**
+* Checks the requirements for this plugin and if it is compatible with this
+* version of Geeklog.
+*
+* @return   boolean     true = proceed with install, false = not compatible
+*
+*/
+function plugin_compatible_with_this_geeklog_version ()
+{
+    if (function_exists ('COM_printUpcomingEvents')) {
+        // if this function exists, then someone's trying to install the
+        // plugin on Geeklog 1.4.0 or older - sorry, but that won't work
+        return false;
+    }
+
+    if (!function_exists ('MBYTE_strpos')) {
+        // the plugin requires the multi-byte functions
+        return false;
+    }
+
+    return true;
+}
+
+/**
+* When the install went through, give the plugin a chance for any
+* plugin-specific post-install fixes
+*
+* @return   boolean     true = proceed with install, false = an error occured
+*
+*/
+function plugin_postinstall ()
+{
+    global $_CONF, $_TABLES, $LANG_CAL_1;
+
+    // fix Upcoming Events block group ownership
+    $blockAdminGroup = DB_getItem ($_TABLES['groups'], 'grp_id',
+                                   "grp_name = 'Block Admin'");
+    if ($blockAdminGroup > 0) {
+        // set the block's permissions
+        $A = array ();
+        SEC_setDefaultPermissions ($A, $_CONF['default_permissions_block']);
+
+        // set the block's title in the current language, while we're at it
+        $title = addslashes ($LANG_CAL_1[7]);
+
+        // ... and make it the last block on the left side
+        $result = DB_query ("SELECT MAX(blockorder) FROM {$_TABLES['blocks']} WHERE onleft = 1");
+        list($order) = DB_fetchArray ($result);
+        $order += 10;
+
+        DB_query ("UPDATE {$_TABLES['blocks']} SET group_id = $blockAdminGroup, title = '$title', blockorder = $order, perm_owner = {$A['perm_owner']}, perm_group = {$A['perm_group']}, perm_members = {$A['perm_members']}, perm_anon = {$A['perm_anon']} WHERE (type = 'phpblock') AND (phpblockfn = 'phpblock_calendar')");
+
+        return true;
+    }
+
+    return false;
+}
+
+//
+// ----------------------------------------------------------------------------
+//
+// The code below should be the same for most plugins and usually won't
+// require modifications.
+
+$base_path = $_CONF['path'] . 'plugins/' . $pi_name . '/';
+$langfile = $base_path . $_CONF['language'] . '.php';
+if (file_exists ($langfile)) {
+    require_once ($langfile);
+} else {
+    require_once ($base_path . 'language/english.php');
+}
+require_once ($base_path . 'config.php');
+require_once ($base_path . 'functions.inc');
+
+
+// Only let Root users access this page
+if (!SEC_inGroup ('Root')) {
+    // Someone is trying to illegally access this page
+    COM_accessLog ("Someone has tried to illegally access the {$pi_display_name} install/uninstall page.  User id: {$_USER['uid']}, Username: {$_USER['username']}, IP: {$_SERVER['REMOTE_ADDR']}", 1);
+
+    $display = COM_siteHeader ('menu', $LANG_ACCESS['accessdenied'])
+             . COM_startBlock ($LANG_ACCESS['accessdenied'])
+             . $LANG_ACCESS['plugin_access_denied_msg']
+             . COM_endBlock ()
+             . COM_siteFooter ();
+
+    echo $display;
+    exit;
+}
+ 
+
+/**
+* Puts the datastructures for this plugin into the Geeklog database
+*
+*/
+function plugin_install_now()
+{
+    global $_CONF, $_TABLES, $_USER, $_DB_dbms,
+           $GROUPS, $FEATURES, $MAPPINGS, $DEFVALUES, $base_path,
+           $pi_name, $pi_display_name, $pi_version, $gl_version, $pi_url;
+
+    COM_errorLog ("Attempting to install the $pi_display_name plugin", 1);
+
+    $uninstall_plugin = 'plugin_uninstall_' . $pi_name;
+
+    // create the plugin's groups
+    $admin_group_id = 0;
+    foreach ($GROUPS as $name => $desc) {
+        COM_errorLog ("Attempting to create $name group", 1);
+
+        $grp_name = addslashes ($name);
+        $grp_desc = addslashes ($desc);
+        DB_query ("INSERT INTO {$_TABLES['groups']} (grp_name, grp_descr) VALUES ('$grp_name', '$grp_desc')", 1);
+        if (DB_error ()) {
+            $uninstall_plugin ();
+
+            return false;
+        }
+
+        // replace the description with the new group id so we can use it later
+        $GROUPS[$name] = DB_insertId ();
+
+        // assume that the first group is the plugin's Admin group
+        if ($admin_group_id == 0) {
+            $admin_group_id = $GROUPS[$name];
+        }
+    }
+
+    // Create the plugin's table(s)
+    $_SQL = array ();
+    if (file_exists ($base_path . 'sql/' . $_DB_dbms . '_install.php')) {
+        require_once ($base_path . 'sql/' . $_DB_dbms . '_install.php');
+    }
+
+    if (count ($_SQL) > 0) {
+        $use_innodb = false;
+        if (($_DB_dbms == 'mysql') &&
+            (DB_getItem ($_TABLES['vars'], 'value', "name = 'database_engine'")
+                == 'InnoDB')) {
+            $use_innodb = true;
+        }
+        foreach ($_SQL as $sql) {
+            $sql = str_replace ('#group#', $admin_group_id, $sql);
+            if ($use_innodb) {
+                $sql = str_replace ('MyISAM', 'InnoDB', $sql);
+            }
+            DB_query ($sql);
+            if (DB_error ()) {
+                COM_errorLog ('Error creating table', 1);
+                $uninstall_plugin ();
+
+                return false;
+            }
+        }
+    }
+
+    // Add the plugin's features
+    COM_errorLog ("Attempting to add $pi_display_name feature(s)", 1);
+
+    foreach ($FEATURES as $feature => $desc) {
+        $ft_name = addslashes ($feature);
+        $ft_desc = addslashes ($desc);
+        DB_query ("INSERT INTO {$_TABLES['features']} (ft_name, ft_descr) "
+                  . "VALUES ('$ft_name', '$ft_desc')", 1);
+        if (DB_error ()) {
+            $uninstall_plugin ();
+
+            return false;
+        }
+
+        $feat_id = DB_insertId ();
+
+        if (isset ($MAPPINGS[$feature])) {
+            foreach ($MAPPINGS[$feature] as $group) {
+                COM_errorLog ("Adding $feature feature to the $group group", 1);
+                DB_query ("INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES ($feat_id, {$GROUPS[$group]})");
+                if (DB_error ()) {
+                    $uninstall_plugin ();
+
+                    return false;
+                }
+            }
+        }
+    }
+
+    // Add plugin's Admin group to the Root user group
+    // (assumes that the Root group's ID is always 1)
+    COM_errorLog ("Attempting to give all users in the Root group access to the $pi_display_name's Admin group", 1);
+
+    DB_query ("INSERT INTO {$_TABLES['group_assignments']} VALUES "
+              . "($admin_group_id, NULL, 1)");
+    if (DB_error ()) {
+        $uninstall_plugin ();
+
+        return false;
+    }
+
+    // Pre-populate tables or run any other SQL queries
+    COM_errorLog ('Inserting default data', 1);
+    foreach ($DEFVALUES as $sql) {
+        $sql = str_replace ('#group#', $admin_group_id, $sql);
+        DB_query ($sql, 1);
+        if (DB_error ()) {
+            $uninstall_plugin ();
+
+            return false;
+        }
+    }
+
+    // Finally, register the plugin with Geeklog
+    COM_errorLog ("Registering $pi_display_name plugin with Geeklog", 1);
+
+    // silently delete an existing entry
+    DB_delete ($_TABLES['plugins'], 'pi_name', $pi_name);
+
+    DB_query("INSERT INTO {$_TABLES['plugins']} (pi_name, pi_version, pi_gl_version, pi_homepage, pi_enabled) VALUES "
+        . "('$pi_name', '$pi_version', '$gl_version', '$pi_url', 1)");
+
+    if (DB_error ()) {
+        $uninstall_plugin ();
+
+        return false;
+    }
+
+    // give the plugin a chance to perform any post-install operations
+    if (function_exists ('plugin_postinstall')) {
+        if (!plugin_postinstall ()) {
+            $uninstall_plugin ();
+
+            return false;
+        }
+    }
+
+    COM_errorLog ("Successfully installed the $pi_display_name plugin!", 1);
+
+    return true;
+}
+
+
+// MAIN
+$display = '';
+
+if ($_REQUEST['action'] == 'uninstall') {
+    $uninstall_plugin = 'plugin_uninstall_' . $pi_name;
+    if ($uninstall_plugin ()) {
+        $display = COM_refresh ($_CONF['site_admin_url']
+                                . '/plugins.php?msg=45');
+    } else {
+        $display = COM_refresh ($_CONF['site_admin_url']
+                                . '/plugins.php?msg=73');
+    }
+} else if (DB_count ($_TABLES['plugins'], 'pi_name', $pi_name) == 0) {
+    // plugin not installed
+
+    if (plugin_compatible_with_this_geeklog_version ()) {
+        if (plugin_install_now ()) {
+            $display = COM_refresh ($_CONF['site_admin_url']
+                                    . '/plugins.php?msg=44');
+        } else {
+            $display = COM_refresh ($_CONF['site_admin_url']
+                                    . '/plugins.php?msg=72');
+        }
+    } else {
+        // plugin needs a newer version of Geeklog
+        $display .= COM_siteHeader ('menu', $LANG32[8])
+                 . COM_startBlock ($LANG32[8])
+                 . '<p>' . $LANG32[9] . '</p>'
+                 . COM_endBlock ()
+                 . COM_siteFooter ();
+    }
+} else {
+    // plugin already installed
+    $display .= COM_siteHeader ('menu', $LANG01[77])
+             . COM_startBlock ($LANG32[6])
+             . '<p>' . $LANG32[7] . '</p>'
+             . COM_endBlock ()
+             . COM_siteFooter();
+}
+
+echo $display;
+
+?>
diff -ruN 1.4.0sr5-1.src/admin/plugins/links/index.php 1.4.1.src/admin/plugins/links/index.php
--- 1.4.0sr5-1.src/admin/plugins/links/index.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/plugins/links/index.php	2006-09-23 15:52:44.000000000 -0500
@@ -6,7 +6,7 @@
 // +---------------------------------------------------------------------------+
 // | index.php                                                                 |
 // |                                                                           |
-// | Geeklog links administration page.                                        |
+// | Geeklog Links Plugin administration page.                                 |
 // +---------------------------------------------------------------------------+
 // | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
@@ -41,7 +41,7 @@
  * @filesource
  * @version 1.0
  * @since GL 1.4.0
- * @copyright Copyright &copy; 2005
+ * @copyright Copyright &copy; 2005-2006
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License 
  * @author Trinity Bays <trinity93@steubentech.com>
  * @author Tony Bibbs <tony@tonybibbs.com>
@@ -50,7 +50,7 @@
  * @author Dirk Haun <dirk@haun-online.de>
  */
  
-// $Id: index.php,v 1.25 2006/01/28 14:13:48 dhaun Exp $
+// $Id: index.php,v 1.39 2006/09/23 20:52:44 dhaun Exp $
 
 require_once ('../../../lib-common.php');
 require_once ('../../auth.inc.php');
@@ -61,13 +61,10 @@
 // echo COM_debug($_POST);
 // exit;
 
-// number of links to list per page
-define ('LINKS_PER_PAGE', 50);
-
 $display = '';
 
 if (!SEC_hasRights ('links.edit')) {
-    $display .= COM_siteHeader ('menu');
+    $display .= COM_siteHeader ('menu', $MESSAGE[30]);
     $display .= COM_startBlock ($MESSAGE[30], '',
                                 COM_getBlockTemplate ('_msg_block', 'header'));
     $display .= $MESSAGE[34];
@@ -96,7 +93,7 @@
 function editlink ($mode, $lid = '') 
 {
     global $_CONF, $_GROUPS, $_TABLES, $_USER, $_LI_CONF,
-           $LANG_LINKS_ADMIN, $LANG_ACCESS;
+           $LANG_LINKS_ADMIN, $LANG_ACCESS, $LANG_ADMIN, $MESSAGE;
 
     $retval = '';
 
@@ -143,7 +140,13 @@
 
     $link_templates->set_var('link_id', $A['lid']);
     if (!empty($lid) && SEC_hasRights('links.edit')) {
-        $link_templates->set_var ('delete_option', '<input type="submit" value="' . $LANG_LINKS_ADMIN[23] . '" name="mode">');
+        $delbutton = '<input type="submit" value="' . $LANG_ADMIN['delete']
+                   . '" name="mode"%s>';
+        $jsconfirm = ' onclick="return confirm(\'' . $MESSAGE[76] . '\');"';
+        $link_templates->set_var ('delete_option',
+                                  sprintf ($delbutton, $jsconfirm));
+        $link_templates->set_var ('delete_option_no_confirmation',
+                                  sprintf ($delbutton, ''));
     }
     $link_templates->set_var('lang_linktitle', $LANG_LINKS_ADMIN[3]);
     $link_templates->set_var('link_title',
@@ -163,34 +166,21 @@
     $link_templates->set_var('link_hits', $A['hits']);
     $link_templates->set_var('lang_linkdescription', $LANG_LINKS_ADMIN[9]);
     $link_templates->set_var('link_description', stripslashes($A['description']));
-    $link_templates->set_var('lang_save', $LANG_LINKS_ADMIN[21]);
-    $link_templates->set_var('lang_cancel', $LANG_LINKS_ADMIN[22]);
+    $link_templates->set_var('lang_save', $LANG_ADMIN['save']);
+    $link_templates->set_var('lang_cancel', $LANG_ADMIN['cancel']);
 
     // user access info
     $link_templates->set_var('lang_accessrights', $LANG_ACCESS['accessrights']);
     $link_templates->set_var('lang_owner', $LANG_ACCESS['owner']);
-    $link_templates->set_var('owner_username', DB_getItem($_TABLES['users'],'username',"uid = {$A['owner_id']}")); 
+    $ownername = COM_getDisplayName ($A['owner_id']);
+    $link_templates->set_var('owner_username', DB_getItem($_TABLES['users'],
+                             'username', "uid = {$A['owner_id']}")); 
+    $link_templates->set_var('owner_name', $ownername);
+    $link_templates->set_var('owner', $ownername);
     $link_templates->set_var('link_ownerid', $A['owner_id']);
     $link_templates->set_var('lang_group', $LANG_ACCESS['group']);
-
-    $usergroups = SEC_getUserGroups();
-    if ($access == 3) {
-        $groupdd = '<select name="group_id">' . LB;
-        for ($i = 0; $i < count($usergroups); $i++) {
-            $groupdd .= '<option value="' . $usergroups[key($usergroups)] . '"';
-            if ($A['group_id'] == $usergroups[key($usergroups)]) {
-               $groupdd .= ' selected="selected"';
-            }
-            $groupdd.= '>' . key($usergroups) . '</option>' . LB;
-            next($usergroups);
-        }
-        $groupdd .= '</select>' . LB;
-    } else {
-        // they can't set the group then
-        $groupdd .= DB_getItem($_TABLES['groups'],'grp_name',"grp_id = {$A['group_id']}");
-        $groupdd .= '<input type="hidden" name="group_id" value="' . $A['group_id'] . '">';
-    }
-    $link_templates->set_var('group_dropdown', $groupdd);
+    $link_templates->set_var('group_dropdown',
+                             SEC_getGroupDropdown ($A['group_id'], $access));
     $link_templates->set_var('lang_permissions', $LANG_ACCESS['permissions']);
     $link_templates->set_var('lang_permissionskey', $LANG_ACCESS['permissionskey']);
     $link_templates->set_var('permissions_editor', SEC_getPermissionsHTML($A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']));
@@ -259,6 +249,7 @@
         $perm_anon = 2;
     }
 
+    $lid = COM_sanitizeID ($lid);
     if (empty ($lid)) {
         if (empty ($old_lid)) {
             $lid = COM_makeSid ();
@@ -280,7 +271,7 @@
                 $perm_members, $perm_anon);
     }
     if (($access < 3) || !SEC_inGroup ($group_id)) {
-        $display .= COM_siteHeader ('menu');
+        $display .= COM_siteHeader ('menu', $MESSAGE[30]);
         $display .= COM_startBlock ($MESSAGE[30], '',
                             COM_getBlockTemplate ('_msg_block', 'header'));
         $display .= $MESSAGE[31];
@@ -305,7 +296,7 @@
 
         return COM_refresh ($_CONF['site_admin_url'] . '/plugins/links/index.php?msg=2');
     } else { // missing fields
-        $retval .= COM_siteHeader('menu');
+        $retval .= COM_siteHeader('menu', $LANG_LINKS_ADMIN[1]);
         $retval .= COM_errorLog($LANG_LINKS_ADMIN[10],2);
         if (DB_count ($_TABLES['links'], 'lid', $old_lid) > 0) {
             $retval .= editlink ('edit', $old_lid);
@@ -317,6 +308,7 @@
         return $retval;
     }
 }
+
 /**
  * List links
  * @global array core config vars
@@ -332,7 +324,7 @@
     require_once( $_CONF['path_system'] . 'lib-admin.php' );
     $retval = '';
 
-    $header_arr = array(      # dislay 'text' and use table field 'field'
+    $header_arr = array(      # display 'text' and use table field 'field'
                     array('text' => $LANG_ADMIN['edit'], 'field' => 'edit', 'sort' => false),
                     array('text' => $LANG_LINKS_ADMIN[2], 'field' => 'lid', 'sort' => true),
                     array('text' => $LANG_ADMIN['title'], 'field' => 'title', 'sort' => true),
@@ -342,7 +334,7 @@
     $defsort_arr = array('field' => 'title', 'direction' => 'asc');
 
     $menu_arr = array (
-                    array('url' => $_CONF['site_url'] . '/admin/plugins/links/index.php?mode=edit',
+                    array('url' => $_CONF['site_admin_url'] . '/plugins/links/index.php?mode=edit',
                           'text' => $LANG_ADMIN['create_new']),
                     array('url' => $_CONF['site_admin_url'],
                           'text' => $LANG_ADMIN['admin_home']));
@@ -354,14 +346,14 @@
                       'form_url' => $_CONF['site_admin_url'] . "/plugins/links/index.php");
 
     $query_arr = array('table' => 'links',
-                       'sql' => "SELECT * FROM {$_TABLES['links']} WHERE 1",
-                       'query_fields' => array('title', 'category', 'url'),
+                       'sql' => "SELECT * FROM {$_TABLES['links']} WHERE 1=1",
+                       'query_fields' => array('title', 'category', 'url', 'description'),
                        'default_filter' => COM_getPermSql ('AND'));
 
     $retval .= ADMIN_list ("links", "plugin_getListField_links", $header_arr, $text_arr,
                             $query_arr, $menu_arr, $defsort_arr);
-    return $retval;
 
+    return $retval;
 }
 
 /**
@@ -386,7 +378,8 @@
 
     DB_delete ($_TABLES['links'], 'lid', $lid);
 
-    return COM_refresh ($_CONF['site_admin_url'] . '/plugins/links/index.php?msg=3');
+    return COM_refresh ($_CONF['site_admin_url']
+                        . '/plugins/links/index.php?msg=3');
 }
 
 // MAIN
@@ -395,7 +388,7 @@
     $mode = $_REQUEST['mode'];
 }
 
-if (($mode == $LANG_LINKS_ADMIN[23]) && !empty ($LANG_LINKS_ADMIN[23])) { // delete
+if (($mode == $LANG_ADMIN['delete']) && !empty ($LANG_ADMIN['delete'])) {
     $lid = COM_applyFilter ($_POST['lid']);
     if (!isset ($lid) || empty ($lid)) {  // || ($lid == 0)
         COM_errorLog ('Attempted to delete link lid=' . $lid );
@@ -403,13 +396,14 @@
     } else {
         $display .= deleteLink ($lid);
     }
-} else if (($mode == $LANG_LINKS_ADMIN[21]) && !empty ($LANG_LINKS_ADMIN[21])) { // save
+} else if (($mode == $LANG_ADMIN['save']) && !empty ($LANG_ADMIN['save'])) {
     $display .= savelink (COM_applyFilter ($_POST['lid']),
             COM_applyFilter ($_POST['old_lid']),
             $_POST['category'], $_POST['categorydd'],
             $_POST['url'], $_POST['description'], $_POST['title'],
             COM_applyFilter ($_POST['hits'], true),
-            $_POST['owner_id'], $_POST['group_id'],
+            COM_applyFilter ($_POST['owner_id'], true),
+            COM_applyFilter ($_POST['group_id'], true),
             $_POST['perm_owner'], $_POST['perm_group'],
             $_POST['perm_members'], $_POST['perm_anon']);
 } else if ($mode == 'editsubmission') {
diff -ruN 1.4.0sr5-1.src/admin/plugins/links/install.php 1.4.1.src/admin/plugins/links/install.php
--- 1.4.0sr5-1.src/admin/plugins/links/install.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/plugins/links/install.php	2006-11-12 08:53:05.000000000 -0600
@@ -44,9 +44,9 @@
  * @package Links
  * @subpackage admin
  * @filesource
- * @version 1.0
+ * @version 1.0.1
  * @since GL 1.4.0
- * @copyright Copyright &copy; 2005
+ * @copyright Copyright &copy; 2005-2006
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License 
  * @author Trinity Bays <trinity93@steubentech.com>
  * @author Tony Bibbs <tony@tonybibbs.com>
@@ -55,9 +55,10 @@
  * @author Dirk Haun <dirk@haun-online.de>
  * 
  */
-// $Id: install.php,v 1.11 2006/02/11 10:21:05 dhaun Exp $
+// $Id: install.php,v 1.17 2006/11/12 14:53:05 dhaun Exp $
 
 require_once ('../../../lib-common.php');
+require_once ($_CONF['path'] . 'plugins/links/config.php');
 
 // Plugin information
 /**
@@ -74,12 +75,12 @@
  * plugin version
  * @global string $pi_version
  */
-$pi_version      = '1.0';
+$pi_version      = $_LI_CONF['version'];
 /**
  * plugin suported GL version
  * @global string $gl_version
  */
-$gl_version      = '1.4.0';
+$gl_version      = '1.4.1';
 /**
  * plugin suport website url
  * @global string $pi_url
@@ -137,6 +138,10 @@
  */
 function plugin_compatible_with_this_geeklog_version ()
 {
+    if (!function_exists ('COM_truncate') || !function_exists ('MBYTE_strpos')) {
+        return false;
+    }
+
     return true;
 }
 //
@@ -191,8 +196,8 @@
 */
 function plugin_install_now()
 {
-    global $_CONF, $_TABLES, $_USER, $GROUPS, $FEATURES, $MAPPINGS, $DEFVALUES,
-           $base_path,
+    global $_CONF, $_TABLES, $_USER, $_DB_dbms,
+           $GROUPS, $FEATURES, $MAPPINGS, $DEFVALUES, $base_path,
            $pi_name, $pi_display_name, $pi_version, $gl_version, $pi_url;
 
     COM_errorLog ("Attempting to install the $pi_display_name plugin", 1);
@@ -224,18 +229,29 @@
 
     // Create the plugin's table(s)
     $_SQL = array ();
-    if (file_exists ($base_path . 'sql/install.php')) {
-        require_once ($base_path . 'sql/install.php');
+    if (file_exists ($base_path . 'sql/' . $_DB_dbms . '_install.php')) {
+        require_once ($base_path . 'sql/' . $_DB_dbms . '_install.php');
     }
 
-    foreach ($_SQL as $sql) {
-        $sql = str_replace ('#group#', $admin_group_id, $sql);
-        DB_query ($sql);
-        if (DB_error ()) {
-            COM_errorLog ('Error creating table', 1);
-            $uninstall_plugin ();
+    if (count ($_SQL) > 0) {
+        $use_innodb = false;
+        if (($_DB_dbms == 'mysql') &&
+            (DB_getItem ($_TABLES['vars'], 'value', "name = 'database_engine'")
+                == 'InnoDB')) {
+            $use_innodb = true;
+        }
+        foreach ($_SQL as $sql) {
+            $sql = str_replace ('#group#', $admin_group_id, $sql);
+            if ($use_innodb) {
+                $sql = str_replace ('MyISAM', 'InnoDB', $sql);
+            }
+            DB_query ($sql);
+            if (DB_error ()) {
+                COM_errorLog ('Error creating table', 1);
+                $uninstall_plugin ();
 
-            return false;
+                return false;
+            }
         }
     }
 
@@ -307,6 +323,15 @@
         return false;
     }
 
+    // give the plugin a chance to perform any post-install operations
+    if (function_exists ('plugin_postinstall')) {
+        if (!plugin_postinstall ()) {
+            $uninstall_plugin ();
+
+            return false;
+        }
+    }
+
     COM_errorLog ("Successfully installed the $pi_display_name plugin!", 1);
 
     return true;
diff -ruN 1.4.0sr5-1.src/admin/plugins/polls/index.php 1.4.1.src/admin/plugins/polls/index.php
--- 1.4.0sr5-1.src/admin/plugins/polls/index.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/plugins/polls/index.php	2006-12-16 09:03:57.000000000 -0600
@@ -2,13 +2,13 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Geeklog 1.3                                                               |
+// | Geeklog 1.4                                                               |
 // +---------------------------------------------------------------------------+
 // | index.php                                                                 |
 // |                                                                           |
 // | Geeklog poll administration page                                          |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
 // |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
@@ -32,7 +32,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: index.php,v 1.23 2005/12/22 14:39:46 ospiess Exp $
+// $Id: index.php,v 1.40 2006/12/12 09:50:03 ospiess Exp $
 
 // Set this to true if you want to log debug messages to error.log
 $_POLL_VERBOSE = false;
@@ -46,7 +46,7 @@
 $display = '';
 
 if (!SEC_hasRights ('polls.edit')) {
-    $display .= COM_siteHeader ('menu');
+    $display .= COM_siteHeader ('menu', $MESSAGE[30]);
     $display .= COM_startBlock ($MESSAGE[30], '',
                                 COM_getBlockTemplate ('_msg_block', 'header'));
     $display .= $MESSAGE[36];
@@ -65,7 +65,9 @@
 function listpolls()
 {
     global $_CONF, $_TABLES, $_IMAGE_TYPE, $LANG_ADMIN, $LANG25, $LANG_ACCESS;
+
     require_once( $_CONF['path_system'] . 'lib-admin.php' );
+
     $retval = '';
 
     $header_arr = array(      # dislay 'text' and use table field 'field'
@@ -84,18 +86,20 @@
                     array('url' => $_CONF['site_admin_url'],
                           'text' => $LANG_ADMIN['admin_home']));
 
-    $text_arr = array('has_menu' =>  true,
+    $text_arr = array('has_menu' => true,
+                      'has_extras' => true,
                       'title' => $LANG25[18], 'instructions' => $LANG25[19],
                       'icon' => $_CONF['site_url'] . '/polls/images/polls.png',
                       'form_url' => $_CONF['site_admin_url'] . "/plugins/polls/index.php");
 
     $query_arr = array('table' => 'pollquestions',
-                       'sql' => "SELECT *,UNIX_TIMESTAMP(date) AS unixdate FROM {$_TABLES['pollquestions']} WHERE 1",
+                       'sql' => "SELECT *,UNIX_TIMESTAMP(date) AS unixdate FROM {$_TABLES['pollquestions']} WHERE 1=1",
                        'query_fields' => array('question'),
-                       'default_filter' => '');
+                       'default_filter' => COM_getPermSql ('AND'));
+
+    $retval = ADMIN_list ('polls', 'plugin_getListField_polls', $header_arr,
+                          $text_arr, $query_arr, $menu_arr, $defsort_arr);
 
-    $retval = ADMIN_list ("polls", "plugin_getListField_polls", $header_arr, $text_arr,
-                            $query_arr, $menu_arr, $defsort_arr);
     return $retval;
 }
 
@@ -111,7 +115,7 @@
 * @param    int     $statuscode     (unused)
 * @param    int     $commentcode    Indicates if users can comment on poll
 * @param    array   $A              Array of possible answers
-* @param    array   $V              Array of vote per each answer 
+* @param    array   $V              Array of vote per each answer
 * @param    int     $owner_id       ID of poll owner
 * @param    int     $group_id       ID of group poll belongs to
 * @param    int     $perm_owner     Permissions the owner has on poll
@@ -121,10 +125,12 @@
 * @return   string                  HTML redirect or error message
 *
 */
-function savepoll ($qid, $mainpage, $question, $voters, $statuscode, $commentcode, $A, $V, $owner_id, $group_id, $perm_owner, $perm_group, $perm_members, $perm_anon) 
+function savepoll ($qid, $mainpage, $question, $voters, $statuscode, $commentcode, $A, $V, $R, $owner_id, $group_id, $perm_owner, $perm_group, $perm_members, $perm_anon)
 {
     global $_CONF, $_TABLES, $LANG21, $LANG25, $MESSAGE, $_POLL_VERBOSE;
 
+    $retval = '';
+
     // Convert array values to numeric permission values
     list($perm_owner,$perm_group,$perm_members,$perm_anon) = SEC_getPermissionValues($perm_owner,$perm_group,$perm_members,$perm_anon);
 
@@ -155,7 +161,7 @@
                                      $perm_group, $perm_members, $perm_anon);
         }
         if (($access < 3) || !SEC_inGroup ($group_id)) {
-            $display .= COM_siteHeader ('menu');
+            $display .= COM_siteHeader ('menu', $MESSAGE[30]);
             $display .= COM_startBlock ($MESSAGE[30], '',
                                 COM_getBlockTemplate ('_msg_block', 'header'));
             $display .= $MESSAGE[31];
@@ -167,8 +173,8 @@
             exit;
         }
 
-        if (empty ($voters)) { 
-            $voters = '0'; 
+        if (empty ($voters)) {
+            $voters = 0;
         }
 
         if ($_POLL_VERBOSE) {
@@ -184,7 +190,7 @@
         $question = addslashes ($question);
         $sql = "'$qid','$question',$voters,'" . date ('Y-m-d H:i:s');
 
-        if ($mainpage == 'on') { 
+        if ($mainpage == 'on') {
             $sql .= "',1";
         } else {
             $sql .= "',0";
@@ -198,12 +204,13 @@
         // Save poll answers
         for ($i = 0; $i < sizeof($A); $i++) {
             if (strlen ($A[$i]) > 0) {
-                if (empty($V[$i])) { 
-                    $V[$i] = "0"; 
+                if (empty($V[$i]) or !is_numeric($V[$i])) {
+                    $V[$i] = "0";
                 }
                 $A[$i] = addslashes ($A[$i]);
-                DB_save ($_TABLES['pollanswers'], 'qid, aid, answer, votes',
-                         "'$qid', $i+1, '$A[$i]', $V[$i]");
+                $R[$i] = addslashes ($R[$i]);
+                DB_save ($_TABLES['pollanswers'], 'qid, aid, answer, votes, remark',
+                         "'$qid', $i+1, '$A[$i]', $V[$i], '$R[$i]'");
             }
         }
 
@@ -215,7 +222,7 @@
         return COM_refresh($_CONF['site_admin_url'] . '/plugins/polls/index.php?msg=19');
 
     } else {
-        $retval .= COM_siteHeader ('menu');
+        $retval .= COM_siteHeader ('menu', $LANG25[5]);
         $retval .= COM_startBlock ($LANG21[32], '',
                            COM_getBlockTemplate ('_msg_block', 'header'));
         $retval .= $LANG25[2];
@@ -238,25 +245,28 @@
 */
 function editpoll ($qid = '')
 {
-    global $_CONF, $_PO_CONF, $_GROUPS, $_TABLES, $_USER, $LANG25, $LANG_ACCESS;
+    global $_CONF, $_PO_CONF, $_GROUPS, $_TABLES, $_USER, $LANG25, $LANG_ACCESS,
+           $LANG_ADMIN, $MESSAGE;
 
     $retval = '';
 
-    $poll_templates = new Template($_CONF['path'] . 'plugins/polls/templates/admin/');
-    $poll_templates->set_file(array('editor'=>'polleditor.thtml','answer'=>'pollansweroption.thtml'));
-    $poll_templates->set_var('site_url', $_CONF['site_url']);
-    $poll_templates->set_var('site_admin_url', $_CONF['site_admin_url']);
-    $poll_templates->set_var('layout_url', $_CONF['layout_url']);
+    $poll_templates = new Template ($_CONF['path']
+                                    . 'plugins/polls/templates/admin/');
+    $poll_templates->set_file (array ('editor' => 'polleditor.thtml',
+                                      'answer' => 'pollansweroption.thtml'));
+    $poll_templates->set_var ('site_url', $_CONF['site_url']);
+    $poll_templates->set_var ('site_admin_url', $_CONF['site_admin_url']);
+    $poll_templates->set_var ('layout_url', $_CONF['layout_url']);
 
     if (!empty ($qid)) {
         $question = DB_query("SELECT * FROM {$_TABLES['pollquestions']} WHERE qid='$qid'");
-        $answers = DB_query("SELECT answer,aid,votes FROM {$_TABLES['pollanswers']} WHERE qid='$qid' ORDER BY aid");
+        $answers = DB_query("SELECT answer,aid,votes,remark FROM {$_TABLES['pollanswers']} WHERE qid='$qid' ORDER BY aid");
         $Q = DB_fetchArray($question);
 
         // Get permissions for poll
-    
+
         $access = SEC_hasAccess($Q['owner_id'],$Q['group_id'],$Q['perm_owner'],$Q['perm_group'],$Q['perm_members'],$Q['perm_anon']);
-    
+
         if ($access == 0 OR $access == 2) {
             // User doesn't have access...bail
             $retval .= COM_startBlock ($LANG25[21], '',
@@ -272,9 +282,18 @@
                                COM_getBlockTemplate ('_admin_block', 'header'));
 
     if (!empty ($qid) AND ($access == 3) AND !empty ($Q['owner_id'])) {
-        $poll_templates->set_var('delete_option',
-            '<input type="submit" name="mode" value="' . $LANG25[16] . '">');
+        $delbutton = '<input type="submit" value="' . $LANG_ADMIN['delete']
+                   . '" name="mode"%s>';
+        $jsconfirm = ' onclick="return confirm(\'' . $MESSAGE[76] . '\');"';
+        $poll_templates->set_var ('delete_option',
+                                  sprintf ($delbutton, $jsconfirm));
+        $poll_templates->set_var ('delete_option_no_confirmation',
+                                  sprintf ($delbutton, ''));
     } else {
+        $Q['qid'] = COM_makeSid ();
+        $Q['question'] = '';
+        $Q['voters'] = 0;
+        $Q['display'] = 1;
         $Q['owner_id'] = $_USER['uid'];
         if (isset ($_GROUPS['Polls Admin'])) {
             $Q['group_id'] = $_GROUPS['Polls Admin'];
@@ -293,54 +312,53 @@
     $poll_templates->set_var('lang_question', $LANG25[9]);
     $poll_templates->set_var('poll_question', htmlspecialchars ($Q['question']));
     $poll_templates->set_var('lang_mode', $LANG25[1]);
-    $poll_templates->set_var ('status_options', COM_optionList ($_TABLES['statuscodes'], 'code,name', $Q['statuscode'])); 
+    $poll_templates->set_var ('status_options', COM_optionList ($_TABLES['statuscodes'], 'code,name', $Q['statuscode']));
     $poll_templates->set_var('comment_options', COM_optionList($_TABLES['commentcodes'],'code,name',$Q['commentcode']));
     $poll_templates->set_var('lang_appearsonhomepage', $LANG25[8]);
 
-    if ($Q['display'] == 1) { 
-        $poll_templates->set_var('poll_display', 'checked');
+    if ($Q['display'] == 1) {
+        $poll_templates->set_var('poll_display', 'checked="checked"');
     }
 
-    // user access info 
+    // user access info
     $poll_templates->set_var('lang_accessrights', $LANG_ACCESS['accessrights']);
     $poll_templates->set_var('lang_owner', $LANG_ACCESS['owner']);
-    $poll_templates->set_var('owner_username', DB_getItem($_TABLES['users'],'username',"uid = {$Q['owner_id']}"));
+    $ownername = COM_getDisplayName ($Q['owner_id']);
+    $poll_templates->set_var('owner_username', DB_getItem($_TABLES['users'],
+                             'username', "uid = {$Q['owner_id']}"));
+    $poll_templates->set_var('owner_name', $ownername);
+    $poll_templates->set_var('owner', $ownername);
     $poll_templates->set_var('owner_id', $Q['owner_id']);
     $poll_templates->set_var('lang_group', $LANG_ACCESS['group']);
-   
-    $groupdd = ''; 
-    $usergroups = SEC_getUserGroups();
-    if ($access == 3) {
-        $groupdd .= '<select name="group_id">';
-        for ($i = 0; $i < count($usergroups); $i++) {
-            $groupdd .= '<option value="' . $usergroups[key($usergroups)] . '"';
-            if ($Q['group_id'] == $usergroups[key($usergroups)]) {
-                $groupdd .= ' selected';
-            }
-            $groupdd .=  '>' . key($usergroups) . '</option>';
-            next($usergroups);
-        }
-        $groupdd .=  '</SELECT>';
-    } else {
-        // they can't set the group then
-        $groupdd .= DB_getItem($_TABLES['groups'],'grp_name',"grp_id = {$Q['group_id']}");
-        $groupdd .= '<input type="hidden" name="group_id" value="' . $A['group_id'] . '">';
-    }
-    $poll_templates->set_var('group_dropdown', $groupdd);
+    $poll_templates->set_var('group_dropdown',
+                             SEC_getGroupDropdown ($Q['group_id'], $access));
     $poll_templates->set_var('lang_permissions', $LANG_ACCESS['permissions']);
     $poll_templates->set_var('lang_permissionskey', $LANG_ACCESS['permissionskey']);
     $poll_templates->set_var('permissions_editor', SEC_getPermissionsHTML($Q['perm_owner'],$Q['perm_group'],$Q['perm_members'],$Q['perm_anon']));
     $poll_templates->set_var('lang_permissions_msg', $LANG_ACCESS['permmsg']);
-    $poll_templates->set_var('lang_answersvotes', $LANG25[10]);   
-    $poll_templates->set_var('lang_save', $LANG25[14]);   
-    $poll_templates->set_var('lang_cancel', $LANG25[15]);   
- 
-    for ($i = 1; $i <= $_PO_CONF['maxanswers']; $i++) {
-        $A = DB_fetchArray($answers);
-        $poll_templates->set_var('answer_text', htmlspecialchars ($A['answer']));
-        $poll_templates->set_var('answer_votes', $A['votes']);
-        if ($i < $_PO_CONF['maxanswers']) {
-            $poll_templates->parse('answer_option','answer',true);
+    $poll_templates->set_var('lang_answersvotes', $LANG25[10]);
+    $poll_templates->set_var('lang_save', $LANG_ADMIN['save']);
+    $poll_templates->set_var('lang_cancel', $LANG_ADMIN['cancel']);
+
+    if (isset ($answers)) {
+        for ($i = 1; $i <= $_PO_CONF['maxanswers']; $i++) {
+            $A = DB_fetchArray ($answers);
+            $poll_templates->set_var ('answer_text',
+                                      htmlspecialchars ($A['answer']));
+            $poll_templates->set_var ('answer_votes', $A['votes']);
+            $poll_templates->set_var ('remark_text', $A['remark']);
+            if ($i < $_PO_CONF['maxanswers']) {
+                $poll_templates->parse ('answer_option', 'answer', true);
+            }
+        }
+    } else {
+        for ($i = 1; $i <= $_PO_CONF['maxanswers']; $i++) {
+            $poll_templates->set_var ('answer_text', '');
+            $poll_templates->set_var ('answer_votes', '');
+            $poll_templates->set_var ('remark_text', '');
+            if ($i < $_PO_CONF['maxanswers']) {
+                $poll_templates->parse ('answer_option', 'answer', true);
+            }
         }
     }
 
@@ -363,6 +381,7 @@
 {
     global $_CONF, $_TABLES, $_USER;
 
+    $qid = addslashes ($qid);
     $result = DB_query ("SELECT owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon FROM {$_TABLES['pollquestions']} WHERE qid = '$qid'");
     $Q = DB_fetchArray ($result);
     $access = SEC_hasAccess ($Q['owner_id'], $Q['group_id'], $Q['perm_owner'],
@@ -390,28 +409,37 @@
 
 if ($mode == 'edit') {
     $display .= COM_siteHeader ('menu', $LANG25[5]);
-    $display .= editpoll (COM_applyFilter ($_GET['qid']));
+    $qid = '';
+    if (isset ($_GET['qid'])) {
+        $qid = COM_applyFilter ($_GET['qid']);
+    }
+    $display .= editpoll ($qid);
     $display .= COM_siteFooter ();
-} else if (($mode == $LANG25[14]) && !empty ($LANG25[14])) { // save
+} else if (($mode == $LANG_ADMIN['save']) && !empty ($LANG_ADMIN['save'])) {
     $qid = COM_applyFilter ($_POST['qid']);
     if (!empty ($qid)) {
         $voters = 0;
         for ($i = 0; $i < sizeof ($_POST['answer']); $i++) {
-            $voters = $voters + $_POST['votes'][$i];
+            $voters = $voters + COM_applyFilter ($_POST['votes'][$i], true);
+        }
+        $statuscode = 0;
+        if (isset ($_POST['statuscode'])) {
+            $statuscode = COM_applyFilter ($_POST['statuscode'], true);
+        }
+        $mainpage = '';
+        if (isset ($_POST['mainpage'])) {
+            $mainpage = COM_applyFilter ($_POST['mainpage']);
         }
-        $display .= savepoll ($qid, $_POST['mainpage'],
-                        $_POST['question'], $voters,
-                        COM_applyFilter ($_POST['statuscode'], true),
+        $display .= savepoll ($qid, $mainpage, $_POST['question'], $voters,
+                        $statuscode,
                         COM_applyFilter ($_POST['commentcode'], true),
-                        $_POST['answer'], $_POST['votes'],
-                        $_POST['owner_id'],
-                        $_POST['group_id'],
-                        $_POST['perm_owner'],
-                        $_POST['perm_group'],
-                        $_POST['perm_members'],
-                        $_POST['perm_anon']);
+                        $_POST['answer'], $_POST['votes'], $_POST['remark'],
+                        COM_applyFilter ($_POST['owner_id'], true),
+                        COM_applyFilter ($_POST['group_id'], true),
+                        $_POST['perm_owner'], $_POST['perm_group'],
+                        $_POST['perm_members'], $_POST['perm_anon']);
     } else {
-        $display .= COM_siteHeader ('menu');
+        $display .= COM_siteHeader ('menu', $LANG25[5]);
         $display .= COM_startBlock ($LANG21[32], '',
                             COM_getBlockTemplate ('_msg_block', 'header'));
         $display .= $LANG25[17];
@@ -419,10 +447,13 @@
         $display .= editpoll ();
         $display .= COM_siteFooter ();
     }
-} else if (($mode == $LANG25[16]) && !empty ($LANG25[16])) { // delete
-    $qid = COM_applyFilter ($_POST['qid']);
-    if (!isset ($qid) || empty ($qid)) {
-        COM_errorLog ('Attempted to delete poll qid=' . $_POST['qid']);
+} else if (($mode == $LANG_ADMIN['delete']) && !empty ($LANG_ADMIN['delete'])) {
+    $qid = '';
+    if (isset ($_POST['qid'])) {
+        $qid = COM_applyFilter ($_POST['qid']);
+    }
+    if (empty ($qid)) {
+        COM_errorLog ('Ignored possibly manipulated request to delete a poll.');
         $display .= COM_refresh ($_CONF['site_admin_url'] . '/plugins/polls/index.php');
     } else {
         $display .= deletePoll ($qid);
diff -ruN 1.4.0sr5-1.src/admin/plugins/polls/install.php 1.4.1.src/admin/plugins/polls/install.php
--- 1.4.0sr5-1.src/admin/plugins/polls/install.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/plugins/polls/install.php	2006-11-12 08:53:05.000000000 -0600
@@ -2,7 +2,7 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Polls plugin 1.0 for Geeklog                                              |
+// | Polls plugin 1.1 for Geeklog                                              |
 // +---------------------------------------------------------------------------+
 // | install.php                                                               |
 // |                                                                           |
@@ -36,9 +36,10 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: install.php,v 1.8 2006/02/11 10:21:06 dhaun Exp $
+// $Id: install.php,v 1.15 2006/11/12 14:53:05 dhaun Exp $
 
 require_once ('../../../lib-common.php');
+require_once ($_CONF['path'] . 'plugins/polls/config.php');
 
 // Plugin information
 //
@@ -46,8 +47,8 @@
 //
 $pi_display_name = 'Polls';
 $pi_name         = 'polls';
-$pi_version      = '1.0';
-$gl_version      = '1.4.0';
+$pi_version      = $_PO_CONF['version'];
+$gl_version      = '1.4.1';
 $pi_url          = 'http://www.geeklog.net/';
 
 // name of the Admin group
@@ -79,8 +80,51 @@
 */
 function plugin_compatible_with_this_geeklog_version ()
 {
+    if (function_exists ('COM_showPoll') || function_exists ('COM_pollVote')) {
+        // if these functions exist, then someone's trying to install the
+        // plugin on Geeklog 1.3.11 or older - sorry, but that won't work
+        return false;
+    }
+
+    if (!function_exists ('SEC_getGroupDropdown')) {
+        return false;
+    }
+
     return true;
 }
+
+/**
+* When the install went through, give the plugin a chance for any 
+* plugin-specific post-install fixes
+*
+* @return   boolean     true = proceed with install, false = an error occured
+*
+*/
+function plugin_postinstall ()
+{ 
+    global $_CONF, $_TABLES;
+
+    // fix Polls block group ownership
+    $blockAdminGroup = DB_getItem ($_TABLES['groups'], 'grp_id',
+                                   "grp_name = 'Block Admin'");
+    if ($blockAdminGroup > 0) {
+        // set the block's permissions
+        $A = array ();
+        SEC_setDefaultPermissions ($A, $_CONF['default_permissions_block']);
+
+        // ... and make it the last block on the right side
+        $result = DB_query ("SELECT MAX(blockorder) FROM {$_TABLES['blocks']} WHERE onleft = 0");
+        list($order) = DB_fetchArray ($result);
+        $order += 10;
+
+        DB_query ("UPDATE {$_TABLES['blocks']} SET group_id = $blockAdminGroup, blockorder = $order, perm_owner = {$A['perm_owner']}, perm_group = {$A['perm_group']}, perm_members = {$A['perm_members']}, perm_anon = {$A['perm_anon']} WHERE (type = 'phpblock') AND (phpblockfn = 'phpblock_polls')");
+
+        return true;
+    }
+
+    return false;
+}
+
 //
 // ----------------------------------------------------------------------------
 //
@@ -120,8 +164,8 @@
 */
 function plugin_install_now()
 {
-    global $_CONF, $_TABLES, $_USER, $GROUPS, $FEATURES, $MAPPINGS, $DEFVALUES,
-           $base_path,
+    global $_CONF, $_TABLES, $_USER, $_DB_dbms,
+           $GROUPS, $FEATURES, $MAPPINGS, $DEFVALUES, $base_path,
            $pi_name, $pi_display_name, $pi_version, $gl_version, $pi_url;
 
     COM_errorLog ("Attempting to install the $pi_display_name plugin", 1);
@@ -153,18 +197,29 @@
 
     // Create the plugin's table(s)
     $_SQL = array ();
-    if (file_exists ($base_path . 'sql/install.php')) {
-        require_once ($base_path . 'sql/install.php');
+    if (file_exists ($base_path . 'sql/' . $_DB_dbms . '_install.php')) {
+        require_once ($base_path . 'sql/' . $_DB_dbms . '_install.php');
     }
 
-    foreach ($_SQL as $sql) {
-        $sql = str_replace ('#group#', $admin_group_id, $sql);
-        DB_query ($sql);
-        if (DB_error ()) {
-            COM_errorLog ('Error creating table', 1);
-            $uninstall_plugin ();
+    if (count ($_SQL) > 0) {
+         $use_innodb = false;
+        if (($_DB_dbms == 'mysql') &&
+            (DB_getItem ($_TABLES['vars'], 'value', "name = 'database_engine'")
+                == 'InnoDB')) {
+            $use_innodb = true;
+        }
+        foreach ($_SQL as $sql) {
+            $sql = str_replace ('#group#', $admin_group_id, $sql);
+            if ($use_innodb) {
+                $sql = str_replace ('MyISAM', 'InnoDB', $sql);
+            }
+            DB_query ($sql);
+            if (DB_error ()) {
+                COM_errorLog ('Error creating table', 1);
+                $uninstall_plugin ();
 
-            return false;
+                return false;
+            }
         }
     }
 
@@ -236,6 +291,15 @@
         return false;
     }
 
+    // give the plugin a chance to perform any post-install operations
+    if (function_exists ('plugin_postinstall')) {
+        if (!plugin_postinstall ()) {
+            $uninstall_plugin ();
+
+            return false;
+        }
+    }
+
     COM_errorLog ("Successfully installed the $pi_display_name plugin!", 1);
 
     return true;
diff -ruN 1.4.0sr5-1.src/admin/plugins/spamx/index.php 1.4.1.src/admin/plugins/spamx/index.php
--- 1.4.0sr5-1.src/admin/plugins/spamx/index.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/plugins/spamx/index.php	2006-07-08 14:58:43.000000000 -0500
@@ -42,7 +42,7 @@
 if (!SEC_hasRights ('spamx.admin')) {
     // Someone is trying to illegally access this page
     COM_accessLog ("Someone has tried to illegally access the Spam-X Admin page.  User id: {$_USER['uid']}, Username: {$_USER['username']}, IP: {$_SERVER['REMOTE_ADDR']}", 1);
-    $display = COM_siteHeader ();
+    $display = COM_siteHeader ('menu', $LANG_SX00['access_denied']);
     $display .= COM_startBlock ($LANG_SX00['access_denied']);
     $display .= $LANG_SX00['access_denied_msg'];
     $display .= COM_endBlock ();
diff -ruN 1.4.0sr5-1.src/admin/plugins/spamx/install.php 1.4.1.src/admin/plugins/spamx/install.php
--- 1.4.0sr5-1.src/admin/plugins/spamx/install.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/plugins/spamx/install.php	2006-11-12 08:53:05.000000000 -0600
@@ -2,7 +2,7 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Spam-X plugin 1.0.3                                                       |
+// | Spam-X plugin 1.1.0                                                       |
 // +---------------------------------------------------------------------------+
 // | install.php                                                               |
 // |                                                                           |
@@ -36,9 +36,10 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: install.php,v 1.14 2006/02/11 09:25:33 dhaun Exp $
+// $Id: install.php,v 1.19 2006/11/12 14:53:05 dhaun Exp $
 
 require_once ('../../../lib-common.php');
+require_once ($_CONF['path'] . 'plugins/spamx/config.php');
 
 // Plugin information
 //
@@ -46,8 +47,8 @@
 //
 $pi_display_name = 'Spam-X';
 $pi_name         = 'spamx';
-$pi_version      = '1.0.3';
-$gl_version      = '1.4.0';
+$pi_version      = $_SPX_CONF['version'];
+$gl_version      = '1.4.1';
 $pi_url          = 'http://www.pigstye.net/gplugs/staticpages/index.php/spamx';
 
 // name of the Admin group
@@ -78,7 +79,11 @@
 */
 function plugin_compatible_with_this_geeklog_version ()
 {
-    return true;
+    if (function_exists ('PLG_spamAction')) {
+        return true;
+    }
+
+    return false;
 }
 //
 // ----------------------------------------------------------------------------
@@ -119,8 +124,8 @@
 */
 function plugin_install_now()
 {
-    global $_CONF, $_TABLES, $_USER, $GROUPS, $FEATURES, $MAPPINGS, $DEFVALUES,
-           $base_path,
+    global $_CONF, $_TABLES, $_USER, $_DB_dbms,
+           $GROUPS, $FEATURES, $MAPPINGS, $DEFVALUES, $base_path,
            $pi_name, $pi_display_name, $pi_version, $gl_version, $pi_url;
 
     COM_errorLog ("Attempting to install the $pi_display_name plugin", 1);
@@ -152,18 +157,29 @@
 
     // Create the plugin's table(s)
     $_SQL = array ();
-    if (file_exists ($base_path . 'sql/install.php')) {
-        require_once ($base_path . 'sql/install.php');
+    if (file_exists ($base_path . 'sql/' . $_DB_dbms . '_install.php')) {
+        require_once ($base_path . 'sql/' . $_DB_dbms . '_install.php');
     }
 
-    foreach ($_SQL as $sql) {
-        $sql = str_replace ('#group#', $admin_group_id, $sql);
-        DB_query ($sql);
-        if (DB_error ()) {
-            COM_errorLog ('Error creating table', 1);
-            $uninstall_plugin ();
+    if (count ($_SQL) > 0) {
+        $use_innodb = false;
+        if (($_DB_dbms == 'mysql') &&
+            (DB_getItem ($_TABLES['vars'], 'value', "name = 'database_engine'")
+                == 'InnoDB')) {
+            $use_innodb = true;
+        }
+        foreach ($_SQL as $sql) {
+            $sql = str_replace ('#group#', $admin_group_id, $sql);
+            if ($use_innodb) {
+                $sql = str_replace ('MyISAM', 'InnoDB', $sql);
+            }
+            DB_query ($sql);
+            if (DB_error ()) {
+                COM_errorLog ('Error creating table', 1);
+                $uninstall_plugin ();
 
-            return false;
+                return false;
+            }
         }
     }
 
@@ -235,6 +251,15 @@
         return false;
     }
 
+    // give the plugin a chance to perform any post-install operations
+    if (function_exists ('plugin_postinstall')) {
+        if (!plugin_postinstall ()) {
+            $uninstall_plugin ();
+
+            return false;
+        }
+    }
+
     COM_errorLog ("Successfully installed the $pi_display_name plugin!", 1);
 
     return true;
diff -ruN 1.4.0sr5-1.src/admin/plugins/staticpages/index.php 1.4.1.src/admin/plugins/staticpages/index.php
--- 1.4.0sr5-1.src/admin/plugins/staticpages/index.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/plugins/staticpages/index.php	2006-12-09 06:57:03.000000000 -0600
@@ -2,7 +2,7 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Static Pages Geeklog Plugin 1.4.2                                         |
+// | Static Pages Geeklog Plugin 1.4.3                                         |
 // +---------------------------------------------------------------------------+
 // | index.php                                                                 |
 // |                                                                           |
@@ -32,13 +32,13 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: index.php,v 1.59 2006/01/30 14:50:14 dhaun Exp $
+// $Id: index.php,v 1.80 2006/12/09 12:57:03 dhaun Exp $
 
 require_once ('../../../lib-common.php');
 require_once ('../../auth.inc.php');
 
 if (!SEC_hasRights ('staticpages.edit')) {
-    $display = COM_siteHeader ('menu');
+    $display = COM_siteHeader ('menu', $LANG_STATIC['access_denied']);
     $display .= COM_startBlock ($LANG_STATIC['access_denied'], '',
                         COM_getBlockTemplate ('_msg_block', 'header'));
     $display .= $LANG_STATIC['access_denied_msg'];
@@ -51,25 +51,38 @@
 
 
 /**
-* Displays the static page form 
+* Displays the static page form
 *
 * @param    array   $A      Data to display
 * @param    string  $error  Error message to display
 *
-*/ 
-function form ($A, $error = false) 
+*/
+function form ($A, $error = false)
 {
-    global $_CONF, $_TABLES, $_USER, $LANG_STATIC, $_SP_CONF, $LANG_ACCESS;
-    global $mode, $sp_id, $LANG24;
+    global $_CONF, $_TABLES, $_USER, $_GROUPS, $_SP_CONF, $mode, $sp_id,
+           $LANG21, $LANG_STATIC, $LANG_ACCESS, $LANG_ADMIN, $LANG24,
+           $LANG_postmodes, $MESSAGE;
 
     if (!empty($sp_id) && $mode=='edit') {
         $access = SEC_hasAccess($A['owner_id'],$A['group_id'],$A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']);
     } else {
+        if ($mode != 'clone') {
+            $A['sp_inblock'] = $_SP_CONF['in_block'];
+        }
         $A['owner_id'] = $_USER['uid'];
-        $A['group_id'] = DB_getItem($_TABLES['groups'],'grp_id',"grp_name = 'Static Page Admin'");
+        if (isset ($_GROUPS['Static Page Admin'])) {
+            $A['group_id'] = $_GROUPS['Static Page Admin'];
+        } else {
+            $A['group_id'] = SEC_getFeatureGroup ('staticpages.edit');
+        }
         SEC_setDefaultPermissions ($A, $_SP_CONF['default_permissions']);
-        $A['sp_inblock'] = $_SP_CONF['in_block'];
         $access = 3;
+        if (isset ($_CONF['advanced_editor']) &&
+          ($_CONF['advanced_editor'] == 1) &&
+          file_exists ($template_path . '/editor_advanced.thtml'))
+        {
+             $A['advanced_editor_mode'] = 1;
+        }
     }
     $retval = '';
 
@@ -79,14 +92,16 @@
         $error .= $LANG_STATIC['deny_msg'];
         $error .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
     }
-    
+
     if ($error) {
         $retval .= $error . '<br><br>';
     } else {
         $template_path = staticpages_templatePath ('admin');
         $sp_template = new Template ($template_path);
-        if (isset ($_CONF['advanced_editor']) && ($_CONF['advanced_editor'] == 1)
-&& file_exists ($template_path . '/editor_advanced.thtml')) {
+        if (isset ($_CONF['advanced_editor']) &&
+            ($_CONF['advanced_editor'] == 1) &&
+            file_exists ($template_path . '/editor_advanced.thtml'))
+        {
             $sp_template->set_file ('form', 'editor_advanced.thtml');
             $sp_template->set_var ('lang_expandhelp', $LANG24[67]);
             $sp_template->set_var ('lang_reducehelp', $LANG24[68]);
@@ -96,35 +111,39 @@
             $sp_template->set_var ('toolbar3', $LANG24[73]);
             $sp_template->set_var ('toolbar4', $LANG24[74]);
             $sp_template->set_var ('toolbar5', $LANG24[75]);
+            $sp_template->set_var('lang_nojavascript',$LANG24[77]);
+            $sp_template->set_var('lang_postmode', $LANG24[4]);
+            if ($A['postmode'] == 'adveditor') {
+                $sp_template->set_var('show_adveditor','');
+                $sp_template->set_var('show_htmleditor','none');
+            } else {
+                $sp_template->set_var('show_adveditor','none');
+                $sp_template->set_var('show_htmleditor','');
+            }
+            $post_options .= '<option value="html" selected="selected">'.$LANG_postmodes['html'].'</option>';
+            if ($A['postmode'] == 'adveditor') {
+                $post_options .= '<option value="adveditor" selected="selected">'.$LANG24[86].'</option>';
+            } else {
+                $post_options .= '<option value="adveditor">'.$LANG24[86].'</option>';
+            }
+            $sp_template->set_var('post_options',$post_options );
+            $sp_template->set_var ('change_editormode', 'onChange="change_editmode(this);"');
         } else {
             $sp_template->set_file ('form', 'editor.thtml');
         }
         $sp_template->set_var('layout_url', $_CONF['layout_url']);
-        
+
         $sp_template->set_var('lang_accessrights', $LANG_ACCESS['accessrights']);
         $sp_template->set_var('lang_owner', $LANG_ACCESS['owner']);
-        $sp_template->set_var('owner_username', DB_getItem($_TABLES['users'],'username',"uid = {$A['owner_id']}"));
+        $ownername = COM_getDisplayName ($A['owner_id']);
+        $sp_template->set_var('owner_username', DB_getItem($_TABLES['users'],
+                              'username',"uid = {$A['owner_id']}"));
+        $sp_template->set_var('owner_name', $ownername);
+        $sp_template->set_var('owner', $ownername);
         $sp_template->set_var('owner_id', $A['owner_id']);
         $sp_template->set_var('lang_group', $LANG_ACCESS['group']);
-        $usergroups = SEC_getUserGroups();
-        $groupdd = '';
-        if ($access == 3) {
-            $groupdd .= '<select name="group_id">';
-            for ($i = 0; $i < count($usergroups); $i++) {
-                $groupdd .= '<option value="' . $usergroups[key($usergroups)] . '"';
-                if ($A['group_id'] == $usergroups[key($usergroups)]) {
-                    $groupdd .= ' selected="selected"';
-                }
-                $groupdd .= '>' . key($usergroups) . '</option>';
-                next($usergroups);
-            }
-            $groupdd .= '</select>';
-        } else {
-            // they can't set the group then
-            $groupdd .= DB_getItem($_TABLES['groups'],'grp_name',"grp_id = {$A['group_id']}");
-            $groupdd .= '<input type="hidden" name="group_id" value="' . $A['group_id'] . '">';
-        }
-        $sp_template->set_var('group_dropdown', $groupdd);
+        $sp_template->set_var('group_dropdown',
+                              SEC_getGroupDropdown ($A['group_id'], $access));
         $sp_template->set_var('permissions_editor', SEC_getPermissionsHTML($A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']));
         $sp_template->set_var('lang_permissions', $LANG_ACCESS['permissions']);
         $sp_template->set_var('lang_perm_key', $LANG_ACCESS['permissionskey']);
@@ -134,17 +153,27 @@
         $sp_template->set_var('start_block_editor',
                 COM_startBlock($LANG_STATIC['staticpageeditor']), '',
                         COM_getBlockTemplate ('_admin_block', 'header'));
-        $sp_template->set_var('lang_save', $LANG_STATIC['save']);
-        $sp_template->set_var('lang_cancel', $LANG_STATIC['cancel']);
-        $sp_template->set_var('lang_preview', $LANG_STATIC['preview']);
+        $sp_template->set_var('lang_save', $LANG_ADMIN['save']);
+        $sp_template->set_var('lang_cancel', $LANG_ADMIN['cancel']);
+        $sp_template->set_var('lang_preview', $LANG_ADMIN['preview']);
         if (SEC_hasRights ('staticpages.delete') && ($mode != 'clone') &&
                 !empty ($A['sp_old_id'])) {
-            $sp_template->set_var ('delete_option', '<input type="submit" value="' . $LANG_STATIC['delete'] . '" name="mode">');
+            $delbutton = '<input type="submit" value="' . $LANG_ADMIN['delete']
+                       . '" name="mode"%s>';
+            $jsconfirm = ' onclick="return confirm(\'' . $MESSAGE[76] . '\');"';
+            $sp_template->set_var ('delete_option',
+                                   sprintf ($delbutton, $jsconfirm));
+            $sp_template->set_var ('delete_option_no_confirmation',
+                                   sprintf ($delbutton, ''));
         } else {
             $sp_template->set_var('delete_option','');
         }
         $sp_template->set_var('lang_writtenby', $LANG_STATIC['writtenby']);
-        $sp_template->set_var('username', DB_getItem($_TABLES['users'],'username',"uid = {$A['sp_uid']}"));
+        $sp_template->set_var('username', DB_getItem($_TABLES['users'],
+                              'username', "uid = {$A['sp_uid']}"));
+        $authorname = COM_getDisplayName ($A['sp_uid']);
+        $sp_template->set_var ('name', $authorname);
+        $sp_template->set_var ('author', $authorname);
         $sp_template->set_var ('lang_url', $LANG_STATIC['url']);
         $sp_template->set_var ('lang_id', $LANG_STATIC['id']);
         $sp_template->set_var('sp_uid', $A['sp_uid']);
@@ -154,15 +183,22 @@
                                . '/staticpages/index.php?page=' . $A['sp_id']));
 
         $sp_template->set_var ('lang_centerblock', $LANG_STATIC['centerblock']);
+        $sp_template->set_var ('lang_centerblock_help', $LANG_ADMIN['help_url']);
+        $sp_template->set_var ('lang_centerblock_include', $LANG21[51]);
+        $sp_template->set_var ('lang_centerblock_desc', $LANG21[52]);
+        $sp_template->set_var ('centerblock_help', $A['sp_help']);
         $sp_template->set_var ('lang_centerblock_msg', $LANG_STATIC['centerblock_msg']);
-        if ($A['sp_centerblock'] == 1) {
+        if (isset ($A['sp_centerblock']) && ($A['sp_centerblock'] == 1)) {
             $sp_template->set_var('centerblock_checked', 'checked="checked"');
         } else {
             $sp_template->set_var('centerblock_checked', '');
         }
         $sp_template->set_var ('lang_topic', $LANG_STATIC['topic']);
         $sp_template->set_var ('lang_position', $LANG_STATIC['position']);
-        $current_topic = $A['sp_tid'];
+        $current_topic = '';
+        if (isset ($A['sp_tid'])) {
+            $current_topic = $A['sp_tid'];
+        }
         if (empty ($current_topic)) {
             $current_topic = 'none';
         }
@@ -204,6 +240,9 @@
         $sp_template->set_var ('pos_selection', $position);
 
         if (($_SP_CONF['allow_php'] == 1) && SEC_hasRights ('staticpages.PHP')) {
+            if (!isset ($A['sp_php'])) {
+                $A['sp_php'] = 0;
+            }
             $selection = '<select name="sp_php">' . LB;
             $selection .= '<option value="0"';
             if (($A['sp_php'] <= 0) || ($A['sp_php'] > 2)) {
@@ -233,7 +272,7 @@
         $sp_template->set_var ('php_checked', '');
         $sp_template->set_var ('php_type', 'hidden');
 
-        if ($A['sp_nf'] == 1) {
+        if (isset ($A['sp_nf']) && ($A['sp_nf'] == 1)) {
             $sp_template->set_var('exit_checked','checked="checked"');
         } else {
             $sp_template->set_var('exit_checked','');
@@ -249,27 +288,37 @@
         $sp_template->set_var ('inblock_msg', $LANG_STATIC['inblock_msg']);
         $sp_template->set_var ('inblock_info', $LANG_STATIC['inblock_info']);
 
-        $curtime = COM_getUserDateTimeFormat();
+        $curtime = COM_getUserDateTimeFormat ($A['unixdate']);
+        $sp_template->set_var ('lang_lastupdated', $LANG_STATIC['date']);
+        $sp_template->set_var ('sp_formateddate', $curtime[0]);
+        $sp_template->set_var ('sp_date', $curtime[1]);
 
-        $sp_template->set_var('lang_lastupdated', $LANG_STATIC['date']);
-        $sp_template->set_var('sp_formateddate', $curtime[0]);
-        $sp_template->set_var('sp_date', $curtime[1]);
         $sp_template->set_var('lang_title', $LANG_STATIC['title']);
-        $sp_template->set_var('sp_title',
-                htmlspecialchars (stripslashes ($A['sp_title'])));
+        $title = '';
+        if (isset ($A['sp_title'])) {
+            $title = htmlspecialchars (stripslashes ($A['sp_title']));
+        }
+        $sp_template->set_var('sp_title', $title);
         $sp_template->set_var('lang_addtomenu', $LANG_STATIC['addtomenu']);
-        if ($A['sp_onmenu'] == 1) {
+        if (isset ($A['sp_onmenu']) && ($A['sp_onmenu'] == 1)) {
             $sp_template->set_var('onmenu_checked', 'checked="checked"');
         } else {
             $sp_template->set_var('onmenu_checked', '');
         }
         $sp_template->set_var('lang_label', $LANG_STATIC['label']);
-        $sp_template->set_var('sp_label', $A['sp_label']);
+        if (isset ($A['sp_label'])) {
+            $sp_template->set_var('sp_label', $A['sp_label']);
+        } else {
+            $sp_template->set_var('sp_label', '');
+        }
         $sp_template->set_var('lang_pageformat', $LANG_STATIC['pageformat']);
         $sp_template->set_var('lang_blankpage', $LANG_STATIC['blankpage']);
         $sp_template->set_var('lang_noblocks', $LANG_STATIC['noblocks']);
         $sp_template->set_var('lang_leftblocks', $LANG_STATIC['leftblocks']);
         $sp_template->set_var('lang_leftrightblocks', $LANG_STATIC['leftrightblocks']);
+        if (!isset ($A['sp_format'])) {
+            $A['sp_format'] = '';
+        }
         if ($A['sp_format'] == 'noblocks') {
             $sp_template->set_var('noblock_selected', 'selected="selected"');
         } else {
@@ -285,16 +334,20 @@
         } else {
             $sp_template->set_var('blankpage_selected', '');
         }
-        if (($A['sp_format'] == 'allblocks') OR empty($A['sp_format'])) {
+        if (($A['sp_format'] == 'allblocks') OR empty ($A['sp_format'])) {
             $sp_template->set_var('allblocks_selected', 'selected="selected"');
         } else {
             $sp_template->set_var('allblocks_selected', '');
         }
 
         $sp_template->set_var('lang_content', $LANG_STATIC['content']);
-        $sp_template->set_var('sp_content', htmlspecialchars (stripslashes($A['sp_content'])));
+        $content = '';
+        if (isset ($A['sp_content'])) {
+            $content = htmlspecialchars (stripslashes ($A['sp_content']));
+        }
+        $sp_template->set_var('sp_content', $content);
         if ($_SP_CONF['filter_html'] == 1) {
-            $sp_template->set_var('lang_allowedhtml', COM_allowedHTML()); 
+            $sp_template->set_var('lang_allowedhtml', COM_allowedHTML());
         } else {
             $sp_template->set_var('lang_allowedhtml', $LANG_STATIC['all_html_allowed']);
         }
@@ -330,7 +383,7 @@
                     array('text' => $LANG_STATIC['head_centerblock'], 'field' => 'sp_centerblock', 'sort' => true),
                     array('text' => $LANG_STATIC['date'], 'field' => 'unixdate', 'sort' => true)
     );
-    $defsort_arr = array('field' => 'sp_title', 'direction' => 'desc');
+    $defsort_arr = array('field' => 'sp_title', 'direction' => 'asc');
 
     $menu_arr = array (
                     array('url' => $_CONF['site_admin_url'] . '/plugins/staticpages/index.php?mode=edit',
@@ -348,11 +401,11 @@
 
     $query_arr = array('table' => 'staticpage',
                        'sql' => "SELECT *,UNIX_TIMESTAMP(sp_date) AS unixdate "
-                               ."FROM {$_TABLES['staticpage']} WHERE 1 ",
+                               ."FROM {$_TABLES['staticpage']} WHERE 1=1 ",
                        'query_fields' => array('sp_title', 'sp_id'),
                        'default_filter' => COM_getPermSQL ('AND', 0, 3));
 
-    $retval = ADMIN_list ("static pages", "plugin_getListField_staticpages", $header_arr, $text_arr,
+    $retval = ADMIN_list ("static_pages", "plugin_getListField_staticpages", $header_arr, $text_arr,
                             $query_arr, $menu_arr, $defsort_arr);
     return $retval;
 
@@ -377,6 +430,7 @@
         $A['sp_id'] = COM_makesid ();
         $A['sp_uid'] = $_USER['uid'];
         $A['unixdate'] = time ();
+        $A['sp_help'] = '';
         $A['sp_old_id'] = '';
         $A['sp_where'] = 1; // default new pages to "top of page"
     } elseif (!empty ($sp_id) && $mode == 'clone') {
@@ -389,21 +443,26 @@
         $A['sp_old_id'] = '';
     } else {
         $A = $_POST;
+        if (empty ($A['unixdate'])) {
+            $A['unixdate'] = time ();
+        }
         $A['sp_content'] = COM_checkHTML (COM_checkWords ($A['sp_content']));
     }
-    $A['sp_title'] = strip_tags ($A['sp_title']);
+    if (isset ($A['sp_title'])) {
+        $A['sp_title'] = strip_tags ($A['sp_title']);
+    }
     $A['editor'] = $editor;
+
     return form ($A);
 }
 
-/** 
+/**
 * Saves a Static Page to the database
 *
 * @param sp_id           string  ID of static page
 * @param sp_uid          string  ID of user that created page
 * @param sp_title        string  title of page
 * @param sp_content      string  page content
-* @param unixdate        string  date page was last updated
 * @param sp_hits         int     Number of page views
 * @param sp_format       string  HTML or plain text
 * @param sp_onmenu       string  Flag to place entry on menu
@@ -417,14 +476,22 @@
 * @param sp_nf           string  Flag to indicate type of not found message
 * @param sp_old_id       string  original ID of this static page
 * @param sp_centerblock  string  Flag to indicate display as a center block
+* @param sp_help         string  Help URL that displays in the block
 * @param sp_tid          string  topid id (for center block)
 * @param sp_where        int     position of center block
 * @param sp_inblock      string  Flag: wrap page in a block (or not)
 *
 */
-function submitstaticpage ($sp_id, $sp_uid, $sp_title, $sp_content, $unixdate, $sp_hits, $sp_format, $sp_onmenu, $sp_label, $owner_id, $group_id, $perm_owner, $perm_group, $perm_members, $perm_anon, $sp_php, $sp_nf, $sp_old_id, $sp_centerblock, $sp_tid, $sp_where, $sp_inblock)
+function submitstaticpage ($sp_id, $sp_uid, $sp_title, $sp_content, $sp_hits,
+                           $sp_format, $sp_onmenu, $sp_label, $owner_id,
+                           $group_id, $perm_owner, $perm_group, $perm_members,
+                           $perm_anon, $sp_php, $sp_nf, $sp_old_id,
+                           $sp_centerblock, $sp_help, $sp_tid, $sp_where,
+                           $sp_inblock, $postmode)
 {
-    global $_CONF, $LANG12, $LANG_STATIC, $_SP_CONF, $_TABLES;
+    global $_CONF, $_TABLES, $LANG12, $LANG_STATIC, $_SP_CONF;
+
+    $retval = '';
 
     $sp_id = COM_sanitizeID ($sp_id);
 
@@ -442,14 +509,12 @@
     }
 
     if ($duplicate_id) {
-        $retval .= COM_siteHeader ();
+        $retval .= COM_siteHeader ('menu', $LANG_STATIC['staticpageeditor']);
         $retval .= COM_errorLog ($LANG_STATIC['duplicate_id'], 2);
         $retval .= staticpageeditor ($sp_id);
         $retval .= COM_siteFooter ();
         echo $retval;
     } elseif (!empty ($sp_title) && !empty ($sp_content)) {
-        $date = date ('Y-m-d H:i:s', $unixdate);
-
         if (empty ($sp_hits)) {
             $sp_hits = 0;
         }
@@ -477,7 +542,7 @@
 
         // Clean up the text
         if ($_SP_CONF['censor'] == 1) {
-            $sp_content = COM_checkWords ($sp_content); 
+            $sp_content = COM_checkWords ($sp_content);
             $sp_title = COM_checkWords ($sp_title);
         }
         if ($_SP_CONF['filter_html'] == 1) {
@@ -497,18 +562,27 @@
 
         // make sure there's only one "entire page" static page per topic
         if (($sp_centerblock == 1) && ($sp_where == 0)) {
-            DB_query ("UPDATE {$_TABLES['staticpage']} SET sp_centerblock = 0 WHERE sp_centerblock = 1 AND sp_where = 0 AND sp_tid = '$sp_tid'");
+            DB_query ("UPDATE {$_TABLES['staticpage']} SET sp_centerblock = 0 WHERE sp_centerblock = 1 AND sp_where = 0 AND sp_tid = '$sp_tid'" . COM_getLangSQL ('sp_id', 'AND'));
+        }
+
+        $formats = array ('allblocks', 'blankpage', 'leftblocks', 'noblocks');
+        if (!in_array ($sp_format, $formats)) {
+            $sp_format = 'allblocks';
         }
 
         list($perm_owner,$perm_group,$perm_members,$perm_anon) = SEC_getPermissionValues($perm_owner,$perm_group,$perm_members,$perm_anon);
-        DB_save ($_TABLES['staticpage'], 'sp_id,sp_uid,sp_title,sp_content,sp_date,sp_hits,sp_format,sp_onmenu,sp_label,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon,sp_php,sp_nf,sp_centerblock,sp_tid,sp_where,sp_inblock', "'$sp_id',$sp_uid,'$sp_title','$sp_content','$date',$sp_hits,'$sp_format',$sp_onmenu,'$sp_label',$owner_id,$group_id,$perm_owner,$perm_group,$perm_members,$perm_anon,'$sp_php','$sp_nf',$sp_centerblock,'$sp_tid',$sp_where,'$sp_inblock'");
+        DB_save ($_TABLES['staticpage'], 'sp_id,sp_uid,sp_title,sp_content,sp_date,sp_hits,sp_format,sp_onmenu,sp_label,owner_id,group_id,'
+                .'perm_owner,perm_group,perm_members,perm_anon,sp_php,sp_nf,sp_centerblock,sp_help,sp_tid,sp_where,sp_inblock,postmode',
+                "'$sp_id',$sp_uid,'$sp_title','$sp_content',NOW(),$sp_hits,'$sp_format',$sp_onmenu,'$sp_label',$owner_id,$group_id,"
+                ."$perm_owner,$perm_group,$perm_members,$perm_anon,'$sp_php','$sp_nf',$sp_centerblock,'$sp_help','$sp_tid',$sp_where,"
+                ."'$sp_inblock','$postmode'");
         if ($delete_old_page && !empty ($sp_old_id)) {
             DB_delete ($_TABLES['staticpage'], 'sp_id', $sp_old_id);
         }
         echo COM_refresh ($_CONF['site_admin_url']
                           . '/plugins/staticpages/index.php');
     } else {
-        $retval .= COM_siteHeader ();
+        $retval .= COM_siteHeader ('menu', $LANG_STATIC['staticpageeditor']);
         $retval .= COM_errorLog ($LANG_STATIC['no_title_or_content'], 2);
         $retval .= staticpageeditor ($sp_id);
         $retval .= COM_siteFooter ();
@@ -528,7 +602,7 @@
 }
 
 
-if (($mode == $LANG_STATIC['delete']) && !empty ($LANG_STATIC['delete'])) {
+if (($mode == $LANG_ADMIN['delete']) && !empty ($LANG_ADMIN['delete'])) {
     if (empty ($sp_id) || (is_numeric ($sp_id) && ($sp_id == 0))) {
         COM_errorLog ('Attempted to delete static page sp_id=' . $sp_id);
     } else {
@@ -537,10 +611,11 @@
     }
 } else if ($mode == 'edit') {
     $display .= COM_siteHeader ('menu', $LANG_STATIC['staticpageeditor']);
+    $editor = '';
     if (isset ($_GET['editor'])) {
         $editor = COM_applyFilter ($_GET['editor']);
     }
-    $display .= staticpageeditor ($sp_id, $mode,$editor);
+    $display .= staticpageeditor ($sp_id, $mode, $editor);
     $display .= COM_siteFooter ();
 } else if ($mode == 'clone') {
     if (!empty ($sp_id)) {
@@ -550,16 +625,42 @@
     } else {
         $display = COM_refresh ($_CONF['site_admin_url'] . '/index.php');
     }
-} else if (($mode == $LANG_STATIC['save']) && !empty ($LANG_STATIC['save'])) {
+} else if (($mode == $LANG_ADMIN['save']) && !empty ($LANG_ADMIN['save'])) {
     if (!empty ($sp_id)) {
-        submitstaticpage ($sp_id, $_POST['sp_uid'], $_POST['sp_title'],
-            $_POST['sp_content'], $_POST['unixdate'], $_POST['sp_hits'],
-            $_POST['sp_format'], $_POST['sp_onmenu'], $_POST['sp_label'],
-            $_POST['owner_id'], $_POST['group_id'], $_POST['perm_owner'],
+        if (!isset ($_POST['sp_onmenu'])) {
+            $_POST['sp_onmenu'] = '';
+        }
+        if (!isset ($_POST['sp_nf'])) {
+            $_POST['sp_nf'] = '';
+        }
+        if (!isset ($_POST['sp_centerblock'])) {
+            $_POST['sp_centerblock'] = '';
+        }
+        $help = '';
+        if (isset ($_POST['sp_help'])) {
+            $sp_help = COM_sanitizeUrl ($_POST['sp_help'], array ('http', 'https'));
+        }
+        if (!isset ($_POST['sp_inblock'])) {
+            $_POST['sp_inblock'] = '';
+        }
+        $sp_uid = COM_applyFilter ($_POST['sp_uid'], true);
+        if ($sp_uid == 0) {
+            $sp_uid = $_USER['uid'];
+        }
+        if (!isset ($_POST['postmode'])) {
+            $_POST['postmode'] = '';
+        }
+        submitstaticpage ($sp_id, $sp_uid, $_POST['sp_title'],
+            $_POST['sp_content'], COM_applyFilter ($_POST['sp_hits'], true),
+            COM_applyFilter ($_POST['sp_format']), $_POST['sp_onmenu'],
+            $_POST['sp_label'], COM_applyFilter ($_POST['owner_id'], true),
+            COM_applyFilter ($_POST['group_id'], true), $_POST['perm_owner'],
             $_POST['perm_group'], $_POST['perm_members'], $_POST['perm_anon'],
-            $_POST['sp_php'], $_POST['sp_nf'], $_POST['sp_old_id'],
-            $_POST['sp_centerblock'], $_POST['sp_tid'], $_POST['sp_where'],
-            $_POST['sp_inblock']);
+            $_POST['sp_php'], $_POST['sp_nf'],
+            COM_applyFilter ($_POST['sp_old_id']), $_POST['sp_centerblock'],
+            $sp_help, COM_applyFilter ($_POST['sp_tid']),
+            COM_applyFilter ($_POST['sp_where'], true), $_POST['sp_inblock'],
+            COM_applyFilter ($_POST['postmode']));
     } else {
         $display = COM_refresh ($_CONF['site_admin_url'] . '/index.php');
     }
diff -ruN 1.4.0sr5-1.src/admin/plugins/staticpages/install.php 1.4.1.src/admin/plugins/staticpages/install.php
--- 1.4.0sr5-1.src/admin/plugins/staticpages/install.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/plugins/staticpages/install.php	2006-11-12 08:53:05.000000000 -0600
@@ -2,7 +2,7 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Static Pages Plugin 1.4.2                                                 |
+// | Static Pages Plugin 1.4.3                                                 |
 // +---------------------------------------------------------------------------+
 // | install.php                                                               |
 // |                                                                           |
@@ -36,9 +36,10 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: install.php,v 1.20 2006/02/11 10:21:06 dhaun Exp $
+// $Id: install.php,v 1.26 2006/11/12 14:53:05 dhaun Exp $
 
 require_once ('../../../lib-common.php');
+require_once ($_CONF['path'] . 'plugins/staticpages/config.php');
 
 // Plugin information
 //
@@ -46,8 +47,8 @@
 //
 $pi_display_name = 'Static Page';
 $pi_name         = 'staticpages';
-$pi_version      = '1.4.2';
-$gl_version      = '1.4.0';
+$pi_version      = $_SP_CONF['version'];
+$gl_version      = '1.4.1';
 $pi_url          = 'http://www.geeklog.net/';
 
 // name of the Admin group
@@ -82,6 +83,10 @@
 */
 function plugin_compatible_with_this_geeklog_version ()
 {
+    if (!function_exists ('SEC_getGroupDropdown')) {
+        return false;
+    }
+
     return true;
 }
 //
@@ -123,8 +128,8 @@
 */
 function plugin_install_now()
 {
-    global $_CONF, $_TABLES, $_USER, $GROUPS, $FEATURES, $MAPPINGS, $DEFVALUES,
-           $base_path,
+    global $_CONF, $_TABLES, $_USER, $_DB_dbms,
+           $GROUPS, $FEATURES, $MAPPINGS, $DEFVALUES, $base_path,
            $pi_name, $pi_display_name, $pi_version, $gl_version, $pi_url;
 
     COM_errorLog ("Attempting to install the $pi_display_name plugin", 1);
@@ -156,18 +161,29 @@
 
     // Create the plugin's table(s)
     $_SQL = array ();
-    if (file_exists ($base_path . 'sql/install.php')) {
-        require_once ($base_path . 'sql/install.php');
+    if (file_exists ($base_path . 'sql/' . $_DB_dbms . '_install.php')) {
+        require_once ($base_path . 'sql/' . $_DB_dbms . '_install.php');
     }
 
-    foreach ($_SQL as $sql) {
-        $sql = str_replace ('#group#', $admin_group_id, $sql);
-        DB_query ($sql);
-        if (DB_error ()) {
-            COM_errorLog ('Error creating table', 1);
-            $uninstall_plugin ();
+    if (count ($_SQL) > 0) {
+        $use_innodb = false;
+        if (($_DB_dbms == 'mysql') &&
+            (DB_getItem ($_TABLES['vars'], 'value', "name = 'database_engine'")
+                == 'InnoDB')) {
+            $use_innodb = true;
+        }
+        foreach ($_SQL as $sql) {
+            $sql = str_replace ('#group#', $admin_group_id, $sql);
+            if ($use_innodb) {
+                $sql = str_replace ('MyISAM', 'InnoDB', $sql);
+            }
+            DB_query ($sql);
+            if (DB_error ()) {
+                COM_errorLog ('Error creating table', 1);
+                $uninstall_plugin ();
 
-            return false;
+                return false;
+            }
         }
     }
 
@@ -239,6 +255,15 @@
         return false;
     }
 
+    // give the plugin a chance to perform any post-install operations
+    if (function_exists ('plugin_postinstall')) {
+        if (!plugin_postinstall ()) {
+            $uninstall_plugin ();
+
+            return false;
+        }
+    }
+
     COM_errorLog ("Successfully installed the $pi_display_name plugin!", 1);
 
     return true;
diff -ruN 1.4.0sr5-1.src/admin/plugins.php 1.4.1.src/admin/plugins.php
--- 1.4.0sr5-1.src/admin/plugins.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/plugins.php	2006-11-18 07:21:11.000000000 -0600
@@ -8,7 +8,7 @@
 // |                                                                           |
 // | Geeklog plugin administration page.                                       |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
 // |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
@@ -32,7 +32,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: plugins.php,v 1.57 2005/12/22 14:39:46 ospiess Exp $
+// $Id: plugins.php,v 1.67 2006/11/18 13:21:11 dhaun Exp $
 
 require_once ('../lib-common.php');
 require_once ('auth.inc.php');
@@ -50,7 +50,7 @@
 $display = '';
 
 if (!SEC_hasrights ('plugin.edit')) {
-    $display .= COM_siteHeader ('menu');
+    $display .= COM_siteHeader ('menu', $MESSAGE[30]);
     $display .= COM_startBlock ($MESSAGE[30], '',
                                 COM_getBlockTemplate ('_msg_block', 'header'));
     $display .= $MESSAGE[38];
@@ -71,7 +71,7 @@
 */ 
 function plugineditor ($pi_name, $confirmed = 0) 
 {
-    global $_CONF, $_TABLES, $_USER, $LANG32, $_POST;
+    global $_CONF, $_TABLES, $_USER, $LANG32, $LANG_ADMIN;
 
     $retval = '';
 
@@ -106,24 +106,28 @@
     $plg_templates->set_var('layout_url', $_CONF['layout_url']);
     $plg_templates->set_var('start_block_editor', COM_startBlock ($LANG32[13],
             '', COM_getBlockTemplate ('_admin_block', 'header')));
-    $plg_templates->set_var('lang_save', $LANG32[23]);
-    $plg_templates->set_var('lang_cancel', $LANG32[24]);
-    $plg_templates->set_var('lang_delete', $LANG32[25]);
+    $plg_templates->set_var('lang_save', $LANG_ADMIN['save']);
+    $plg_templates->set_var('lang_cancel', $LANG_ADMIN['cancel']);
+    $plg_templates->set_var('lang_delete', $LANG_ADMIN['delete']);
     $plg_templates->set_var ('pi_icon', PLG_getIcon ($pi_name));
     if (!empty($pi_name)) {
         $plg_templates->set_var ('delete_option', '<input type="submit" value="'
-                                 . $LANG32[25] . '" name="mode">');
+                                 . $LANG_ADMIN['delete'] . '" name="mode">');
     }
     $plugin_code_version = PLG_chkVersion($pi_name);
-    if ($plugin_code_version == '') {
-        $plugin_code_version = 'N/A';
+    if (empty ($plugin_code_version)) {
+        $code_version = 'N/A';
+    } else {
+        $code_version = $plugin_code_version;
     }
-    if ($plugin_code_version != 'N/A' AND $plugin_code_version > $A['pi_version']) {
+    $pi_installed_version = $A['pi_version'];
+    if (empty ($plugin_code_version) ||
+            ($pi_installed_version == $code_version)) {
+        $plg_templates->set_var ('update_option', '');
+    } else {
         $plg_templates->set_var ('update_option', '<input type="submit" value="'
                                  . $LANG32[34] . '" name="mode">');
-    } else {
-        $plg_templates->set_var ('update_option', '');
-    }    
+    }
     $plg_templates->set_var('confirmed', $confirmed);
     $plg_templates->set_var('lang_pluginname', $LANG32[26]);
     $plg_templates->set_var('pi_name', $pi_name);
@@ -158,7 +162,7 @@
 */
 function changePluginStatus ($pi_name)
 {
-    global $_TABLES;
+    global $_TABLES, $_DB_table_prefix;
 
     $pi_name = addslashes (COM_applyFilter ($pi_name));
     if (!empty ($pi_name)) {
@@ -166,6 +170,9 @@
         if (DB_getItem ($_TABLES['plugins'], 'pi_enabled', "pi_name = '$pi_name'")) {
             $pi_enabled = 0;
         }
+
+        PLG_enableStateChange ($pi_name, ($pi_enabled == 1) ? true : false);
+
         DB_query ("UPDATE {$_TABLES['plugins']} SET pi_enabled = '$pi_enabled' WHERE pi_name = '$pi_name'");
     }
 }
@@ -199,11 +206,17 @@
         $pi_gl_version = addslashes ($pi_gl_version);
         $pi_homepage = addslashes ($pi_homepage);
 
+        $currentState = DB_getItem ($_TABLES['plugins'], 'pi_enabled',
+                                    "pi_name= '{$pi_name}' LIMIT 1");
+        if ($currentState != $enabled) {
+            PLG_enableStateChange ($pi_name, ($enabled == 1) ? true : false);
+        }
+
         DB_save ($_TABLES['plugins'], 'pi_name, pi_version, pi_gl_version, pi_enabled, pi_homepage', "'$pi_name', '$pi_version', '$pi_gl_version', $enabled, '$pi_homepage'");
 
         $retval = COM_refresh($_CONF['site_admin_url'] . '/plugins.php?msg=28');
     } else {
-        $retval .= COM_siteHeader ('menu');
+        $retval .= COM_siteHeader ('menu', $LANG32[13]);
         $retval .= COM_startBlock ($LANG32[13], '',
                             COM_getBlockTemplate ('_msg_block', 'header'));
         $retval .= COM_errorLog ('error saving plugin, no pi_name provided', 1);
@@ -266,6 +279,7 @@
     }
 
     if (sizeof ($newplugins) > 0) {
+        sort ($newplugins);
         $templdir = $_CONF['path_layout'] . 'admin/plugins';
         if (file_exists ($templdir . '/newpluginlist.thtml') &&
                 file_exists ($templdir . '/newlistitem.thtml')) {
@@ -341,8 +355,9 @@
             $retval .= COM_refresh ($_CONF['site_admin_url']
                     . '/plugins.php?msg=60');
         } else {  // Plugin returned a message number
-            $retval = COM_refresh ($_CONF['site_url'] . '/index.php?msg='
-                    . $result . '&amp;plugin=' . $pi_name);
+            $retval = COM_refresh ($_CONF['site_admin_url']
+                    . '/plugins.php?msg=' . $result . '&amp;plugin='
+                    . $pi_name);
         }
     } else {  // Plugin function returned a false
         $timestamp = strftime ($_CONF['daytime']);
@@ -435,7 +450,7 @@
 
     $query_arr = array('table' => 'plugins',
                        'sql' => "SELECT pi_name, pi_version, pi_gl_version, "
-                               ."pi_enabled, pi_homepage FROM {$_TABLES['plugins']} WHERE 1",
+                               ."pi_enabled, pi_homepage FROM {$_TABLES['plugins']} WHERE 1=1",
                        'query_fields' => array('pi_name'),
                        'default_filter' => '');
 
@@ -459,7 +474,7 @@
 if (isset ($_REQUEST['mode'])) {
     $mode = $_REQUEST['mode'];
 }
-if (($mode == $LANG32[25]) && !empty ($LANG32[25])) { // delete
+if (($mode == $LANG_ADMIN['delete']) && !empty ($LANG_ADMIN['delete'])) {
     $pi_name = COM_applyFilter ($_POST['pi_name']);
     if ($_POST['confirmed'] == 1) {
         $display .= COM_siteHeader ('menu', $LANG32[30]);
@@ -479,7 +494,7 @@
 
 } else if (($mode == $LANG32[34]) && !empty ($LANG32[34])) { // update
         $pi_name = COM_applyFilter ($_POST['pi_name']);
-        $display .= COM_siteHeader ('menu');
+        $display .= COM_siteHeader ('menu', $LANG32[13]);
         $display .= do_update ($pi_name);
         $display .= COM_siteFooter ();
 
@@ -488,7 +503,7 @@
     $display .= plugineditor (COM_applyFilter ($_GET['pi_name']));
     $display .= COM_siteFooter ();
 
-} else if (($mode == $LANG32[23]) && !empty ($LANG32[23])) { // save
+} else if (($mode == $LANG_ADMIN['save']) && !empty ($LANG_ADMIN['save'])) {
     $display .= saveplugin (COM_applyFilter ($_POST['pi_name']),
                             COM_applyFilter ($_POST['pi_version']),
                             COM_applyFilter ($_POST['pi_gl_version']),
@@ -497,9 +512,15 @@
 
 } else { // 'cancel' or no mode at all
     $display .= COM_siteHeader ('menu', $LANG32[5]);
-    $msg = COM_applyFilter ($_REQUEST['msg'], true);
-    if (!empty ($msg)) {
-        $display .= COM_showMessage ($msg);
+    if (isset ($_REQUEST['msg'])) {
+        $msg = COM_applyFilter ($_REQUEST['msg'], true);
+        if (!empty ($msg)) {
+            $plugin = '';
+            if (isset ($_REQUEST['plugin'])) {
+                $plugin = COM_applyFilter ($_REQUEST['plugin']);
+            }
+            $display .= COM_showMessage ($msg, $plugin);
+        }
     }
     $display .= listplugins ();
     $display .= show_newplugins();
diff -ruN 1.4.0sr5-1.src/admin/sectest.php 1.4.1.src/admin/sectest.php
--- 1.4.0sr5-1.src/admin/sectest.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/admin/sectest.php	2006-12-30 09:07:50.000000000 -0600
@@ -0,0 +1,343 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Geeklog 1.4                                                               |
+// +---------------------------------------------------------------------------+
+// | sectest.php                                                               |
+// |                                                                           |
+// | Does a quick security check of the Geeklog install                        |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2002-2006 by the following authors:                         |
+// |                                                                           |
+// | Authors: Dirk Haun            - dirk AT haun-online DOT de                |
+// |          Jeffrey Schoolcraft  - dream AT dr3amscap3 DOT com               |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is free software; you can redistribute it and/or             |
+// | modify it under the terms of the GNU General Public License               |
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
+// | GNU General Public License for more details.                              |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+// $Id: sectest.php,v 1.4 2006/12/30 15:07:50 dhaun Exp $
+
+require_once ('../lib-common.php');
+require_once ('auth.inc.php');
+
+if (!SEC_inGroup ('Root')) {
+    $display .= COM_startBlock ($MESSAGE[30], '',
+                                COM_getBlockTemplate ('_msg_block', 'header'));
+    $display .= $MESSAGE[46];
+    $display .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
+    $display .= COM_siteFooter ();
+    COM_accessLog ("User {$_USER['username']} tried to illegally access the security check.");
+    echo $display;
+    exit;
+}
+
+// ugh, global variable ...
+$failed_tests = 0;
+
+/**
+* Send an HTTP HEAD request for the given URL
+*
+* @param    string  $url        URL to request
+* @param    string  $errmsg     error message, if any (on return)
+* @return   int                 HTTP response code or 777 on error
+*
+*/
+function doHeadRequest ($url, &$errmsg)
+{
+    require_once ('HTTP/Request.php');
+
+    $req = new HTTP_Request ($url);
+    $req->setMethod (HTTP_REQUEST_METHOD_HEAD);
+    $req->addHeader ('User-Agent', 'GeekLog/' . VERSION);
+    $response = $req->sendRequest ();
+    if (PEAR::isError ($response)) {
+        $errmsg = $response->getMessage();
+        return 777;
+    } else {
+        return $req->getResponseCode ();
+    }
+}
+
+/**
+* Determine the site's base URL to check
+*
+* @return   string      site URL or empty string (= nothing to check)
+*
+*/
+function urlToCheck()
+{
+    global $_CONF;
+
+    $url = '';
+    if ($_CONF['path'] == $_CONF['path_html']) {
+        // not good ...
+        $url = $_CONF['site_url'];
+    } else if (substr ($_CONF['path'], 0, strlen ($_CONF['path_html'])) == $_CONF['path_html']) {
+        // "geeklog" dir in the document root
+        $rest = substr ($_CONF['path'], -(strlen ($_CONF['path']) - strlen ($_CONF['path_html'])));
+        $url = $_CONF['site_url'] . '/' . $rest;
+    } else {
+        // check for sites like www.example.com/geeklog
+        $u = $_CONF['site_url'];
+        if (substr ($u, -1) == '/') {
+            $u = substr ($u, 0, -1);
+        }
+        $pos = strpos ($u, ':');
+        if ($pos !== false) {
+            $u2 = substr ($u, $pos + 3);
+        } else {
+            $u2 = $u;
+        }
+        $p = explode ('/', $u2);
+        if (count ($p) > 1) {
+            $cut = strlen ($p[count ($p) - 1]) + 1;
+            $url = substr ($u, 0, -$cut) . '/';
+        }
+    }
+
+    return $url;
+}
+
+/**
+* Give an interpretation of the test result
+*
+* @param    int     $retcode    HTTP response code of the test
+* @param    string  $msg        file or directory that was checked
+* @return   string              text explaining the result of the test
+*
+*/
+function interpretResult ($retcode, $msg)
+{
+    global $failed_tests;
+
+    $retval = '';
+
+    if ($retcode == 200) {
+        $retval = 'Your <strong>' . $msg . '</strong> is reachable from the web.<br><em>This is a security risk and should be fixed!</em>';
+        $failed_tests++;
+    } else if (($retcode == 401) || ($retcode == 404)) {
+        $retval = 'Good! Your ' . $msg . ' is not reachable from the web.';
+    } else if (is_numeric ($retcode)) {
+        $retval = 'Got an HTTP result code ' . $retcode . ' when trying to test your ' . $msg . '. Not sure what to make of it ...';
+        $failed_tests++;
+    } else {
+        $retval = $retcode;
+    }
+
+    return $retval;
+}
+
+/**
+* Create a temporary file
+*
+* @param    string  $file   full path of the file to create
+* @return   boolean         true: success; false: file creation failed
+*
+*/
+function makeTempfile ($file)
+{
+    $retval = false;
+
+    $tempfile = @fopen ($file, 'w');
+    if ($tempfile) {
+        $retval = true;
+        fclose ($tempfile);
+    }
+
+    return $retval;
+}
+
+/**
+* Perform a test
+*
+* @param    string  $baseurl        the site's base URL
+* @param    string  $urltocheck     relative URL to check
+* @param    string  $what           explanatory text: what is being checked
+* @return   string                  test result as a list item
+*
+*/
+function doTest ($baseurl, $urltocheck, $what)
+{
+    global $failed_tests;
+
+    $retval = '';
+
+    $retval .= '<li>';
+    $retcode = doHeadRequest ($baseurl . $urltocheck, $errmsg);
+    if ($retcode == 777) {
+        $retval .= $errmsg;
+        $failed_tests++;
+    } else {
+        $retval .= interpretResult ($retcode, $what);
+    }
+    $retval .= '</li>' . LB;
+
+    return $retval;
+}
+
+/**
+* Check for the existence of the install directory
+*
+* @return   string      text explaining the result of the test
+*
+* @note This test used to be part of the "Get Bent" block in lib-custom.php
+*
+*/
+function checkInstallDir ()
+{
+    global $_CONF, $failed_tests;
+
+    $retval = '';
+
+    // we don't have the path to the admin directory, so try to figure it out
+    // from $_CONF['site_admin_url']
+    $adminurl = $_CONF['site_admin_url'];
+    if (strrpos ($adminurl, '/') == strlen ($adminurl)) {
+        $adminurl = substr ($adminurl, 0, -1);
+    }
+    $pos = strrpos ($adminurl, '/');
+    if ($pos === false) {
+        // only guessing ...
+        $installdir = $_CONF['path_html'] . 'admin/install';
+    } else {
+        $installdir = $_CONF['path_html'] . substr ($adminurl, $pos + 1)
+                    . '/install';
+    }
+
+    if (is_dir ($installdir)) {
+        $retval .= '<li>You should really remove the install directory <b>' . $installdir .'</b> once you have your site up and running without any errors.';
+        $retval .= ' Keeping it around would allow malicious users the ability to destroy your current install, take over your site, or retrieve sensitive information.</li>';
+        $failed_tests++;
+    } else {
+        $retval .= '<li>Good! You seem to have removed the install directory already.</li>';
+    }
+
+    return $retval;
+}
+
+/**
+* Check for accounts that still use the default password
+*
+* @return   string      text explaining the result of the test
+*
+* @note If one of our users is also using "password" as their password, this
+*       test will also detect that, as it checks all accounts.
+*
+*/
+function checkDefaultPassword ()
+{
+    global $_TABLES, $failed_tests;
+
+    $retval = '';
+
+    // check to see if any account still has 'password' as its password.
+    $count = DB_query ("SELECT COUNT(*) AS count FROM {$_TABLES['users']} WHERE passwd='" . md5 ('password') . "'");
+    $A = DB_fetchArray ($count);
+    if ($A['count'] > 0) {
+        $retval .= '<li>You still have not changed the <strong>default password</strong> from "password" on ' . $A['count'] . ' account(s).';
+        $failed_tests++;
+    } else {
+        $retval .= '<li>Good! You seem to have changed the default account password already.</li>';
+    }
+
+    return $retval;
+}
+
+// MAIN
+$display = COM_siteHeader ('menu', 'Geeklog Security Check');
+$display .= COM_startBlock ('Results of the Security Check');
+
+$url = urlToCheck ();
+if (!empty ($url)) {
+
+    $display .= '<ol>';
+
+    if (strpos ($_SERVER['PHP_SELF'], 'public_html') !== false) {
+        $display .= '<li>"public_html" should never be part of your site\'s URL. Please read the part about public_html in the <a href="../docs/install.html#public_html">installation instructions</a> again and change your setup accordingly before you proceed.</li>';
+        $failed_tests++;
+    }
+
+    $display .= checkInstallDir ();
+
+    $urls = array
+        (
+        array ('config.php',                        'config.php' ),
+        array ('logs/error.log',                    'logs directory'),
+        array ('plugins/staticpages/functions.inc', 'plugins directory'),
+        array ('system/lib-security.php',           'system directory')
+        );
+
+    foreach ($urls as $tocheck) {
+        $display .= doTest ($url, $tocheck[0], $tocheck[1]);
+    }
+
+    // Note: We're not testing the 'sql' and 'language' directories.
+
+    if (($_CONF['allow_mysqldump'] == 1) && ($_DB_dbms == 'mysql')) {
+        if (makeTempfile ($_CONF['backup_path'] . 'test.txt')) {
+            $display .= doTest ($url, 'backups/test.txt', 'backups directory');
+            @unlink ($_CONF['backup_path'] . 'test.txt');
+        } else {
+            $display .= '<li>Failed to create a temporary file in your backups directory. Check your directory permissions!</li>';
+        }
+    }
+
+    if (makeTempfile ($_CONF['path_data'] . 'test.txt')) {
+        $display .= doTest ($url, 'data/test.txt', 'data directory');
+        @unlink ($_CONF['path_data'] . 'test.txt');
+    } else {
+        $display .= '<li>Failed to create a temporary file in your data directory. Check your directory permissions!</li>';
+    }
+
+    $display .= checkDefaultPassword ();
+
+    $display .= '</ol>';
+
+} else {
+
+    $resultInstallDirCheck = checkInstallDir ();
+    $resultPasswordCheck = checkDefaultPassword ();
+
+    if ($failed_tests == 0) {
+        $display .= '<p>Everything seems to be in order.</p>';
+    } else {
+        $display .= '<ol>';
+        $display .= $resultInstallDirCheck . LB . $resultPasswordCheck;
+        $display .= '</ol>';
+    }
+
+}
+
+if ($failed_tests > 0) {
+    $display .= '<p class="warningsmall"><strong>Please fix the above issues before using your site!</strong></p>';
+
+    DB_save ($_TABLES['vars'], 'name,value', "'security_check','0'");
+} else {
+    $display .= '<p>Please note that no site is ever 100% secure. This script can only test for obvious security issues.</p>';
+
+    DB_save ($_TABLES['vars'], 'name,value', "'security_check','1'");
+}
+
+$display .= '<p>To stay informed about new Geeklog releases and possible security issues, we suggest that you subscribe to the (low-traffic) <a href="http://lists.geeklog.net/mailman/listinfo/geeklog-announce">geeklog-announce</a> mailing list and/or use the <strong>' . $LANG01[107] . '</strong> option in your Admin menu from time to time to check for available updates.</p>';
+
+$display .= COM_endBlock ();
+$display .= COM_siteFooter ();
+
+echo $display;
+
+?>
diff -ruN 1.4.0sr5-1.src/admin/story.php 1.4.1.src/admin/story.php
--- 1.4.0sr5-1.src/admin/story.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/story.php	2006-12-10 06:08:40.000000000 -0600
@@ -32,13 +32,13 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: story.php,v 1.199 2006/01/28 18:59:46 dhaun Exp $
+// $Id: story.php,v 1.248 2006/12/10 12:08:40 dhaun Exp $
 
 /**
 * This is the Geeklog story administration page.
 *
 * @author   Jason Whittenburg
-* @author   Tony Bibbs <tony@tonybibbs.com>
+* @author   Tony Bibbs <tony AT tonybibbs DOT com>
 *
 */
 
@@ -60,7 +60,7 @@
 $display = '';
 
 if (!SEC_hasRights('story.edit')) {
-    $display .= COM_siteHeader ('menu');
+    $display .= COM_siteHeader ('menu', $MESSAGE[30]);
     $display .= COM_startBlock ($MESSAGE[30], '',
                                 COM_getBlockTemplate ('_msg_block', 'header'));
     $display .= $MESSAGE[31];
@@ -106,14 +106,17 @@
 
 function liststories()
 {
-    global $_CONF, $_TABLES, $_IMAGE_TYPE, $LANG09, $LANG_ADMIN, $LANG_ACCESS, $LANG24;
+    global $_CONF, $_TABLES, $_IMAGE_TYPE,
+           $LANG09, $LANG_ADMIN, $LANG_ACCESS, $LANG24;
+
     require_once( $_CONF['path_system'] . 'lib-admin.php' );
+
     $retval = '';
-    
+
     if (!empty ($_GET['tid'])) {
-        $current_topic = $_GET['tid'];
+        $current_topic = COM_applyFilter($_GET['tid']);
     } elseif (!empty ($_POST['tid'])) {
-        $current_topic = $_POST['tid'];
+        $current_topic = COM_applyFilter($_POST['tid']);
     } else {
         $current_topic = $LANG09[9];
     }
@@ -143,7 +146,7 @@
         }
     } else {
         $excludetopics = " tid = '$current_topic' ";
-        $seltopics = COM_topicList ('tid,topic', $current_topic);
+        $seltopics = COM_topicList ('tid,topic', $current_topic, 1, true);
     }
 
     $alltopics = '<option value="' .$LANG09[9]. '"';
@@ -151,17 +154,20 @@
         $alltopics .= ' selected="selected"';
     }
     $alltopics .= '>' .$LANG09[9]. '</option>' . LB;
-    $filter = $LANG_ADMIN['topic'] . ': <select name="tid" style="width: 125px" onchange="this.form.submit()">' . $alltopics . $seltopics . '</select>';
+    $filter = $LANG_ADMIN['topic']
+        . ': <select name="tid" style="width: 125px" onchange="this.form.submit()">'
+        . $alltopics . $seltopics . '</select>';
 
     $header_arr = array(
-                    array('text' => $LANG_ADMIN['edit'], 'field' => 'edit', 'sort' => false),
-                    array('text' => $LANG_ADMIN['title'], 'field' => 'title', 'sort' => true),
-                    array('text' => $LANG_ACCESS['access'], 'field' => 'access', 'sort' => false),
-                    array('text' => $LANG24[34], 'field' => 'draft_flag', 'sort' => true),
-                    array('text' => $LANG24[7], 'field' => 'username', 'sort' => true), //author
-                    array('text' => $LANG24[15], 'field' => 'unixdate', 'sort' => true), //date
-                    array('text' => $LANG_ADMIN['topic'], 'field' => 'tid', 'sort' => true),
-                    array('text' => $LANG24[32], 'field' => 'featured', 'sort' => true));
+        array('text' => $LANG_ADMIN['edit'], 'field' => 'edit', 'sort' => false));
+
+    $header_arr[] = array('text' => $LANG_ADMIN['title'], 'field' => 'title', 'sort' => true);
+    $header_arr[] = array('text' => $LANG_ACCESS['access'], 'field' => 'access', 'sort' => false);
+    $header_arr[] = array('text' => $LANG24[34], 'field' => 'draft_flag', 'sort' => true);
+    $header_arr[] = array('text' => $LANG24[7], 'field' => 'username', 'sort' => true); //author
+    $header_arr[] = array('text' => $LANG24[15], 'field' => 'unixdate', 'sort' => true); //date
+    $header_arr[] = array('text' => $LANG_ADMIN['topic'], 'field' => 'tid', 'sort' => true);
+    $header_arr[] = array('text' => $LANG24[32], 'field' => 'featured', 'sort' => true);
 
     if (SEC_hasRights ('story.ping') && ($_CONF['trackback_enabled'] ||
             $_CONF['pingback_enabled'] || $_CONF['ping_enabled'])) {
@@ -171,10 +177,12 @@
     $defsort_arr = array('field' => 'unixdate', 'direction' => 'desc');
 
     $menu_arr = array (
-                    array('url' => $_CONF['site_admin_url'] . '/story.php?mode=edit',
-                          'text' => $LANG_ADMIN['create_new']),
-                    array('url' => $_CONF['site_admin_url'],
-                          'text' => $LANG_ADMIN['admin_home']));
+        array('url' => $_CONF['site_admin_url'] . '/story.php?mode=edit',
+              'text' => $LANG_ADMIN['create_new'])
+    );
+
+    $menu_arr[] = array('url' => $_CONF['site_admin_url'],
+                          'text' => $LANG_ADMIN['admin_home']);
 
     $text_arr = array('has_menu' =>  true,
                       'has_extras'   => true,
@@ -182,15 +190,18 @@
                       'icon' => $_CONF['layout_url'] . '/images/icons/story.' . $_IMAGE_TYPE,
                       'form_url' => $_CONF['site_admin_url'] . "/story.php");
 
-    $sql = "SELECT {$_TABLES['stories']}.*, {$_TABLES['users']}.username, "
+    $sql = "SELECT {$_TABLES['stories']}.*, {$_TABLES['users']}.username, {$_TABLES['users']}.fullname, "
           ."UNIX_TIMESTAMP(date) AS unixdate  FROM {$_TABLES['stories']} "
           ."LEFT JOIN {$_TABLES['users']} ON {$_TABLES['stories']}.uid={$_TABLES['users']}.uid "
-          ."WHERE 1 ";
+          ."WHERE 1=1 ";
 
+    if (!empty ($excludetopics)) {
+        $excludetopics = 'AND ' . $excludetopics;
+    }
     $query_arr = array('table' => 'stories',
                        'sql' => $sql,
                        'query_fields' => array('title', 'introtext', 'bodytext', 'sid', 'tid'),
-                       'default_filter' => 'AND ' . $excludetopics . COM_getPermSQL ('AND'),);
+                       'default_filter' => $excludetopics . COM_getPermSQL ('AND'),);
 
     $retval .= ADMIN_list ("story", "ADMIN_getListField_stories", $header_arr, $text_arr,
                             $query_arr, $menu_arr, $defsort_arr, $filter);
@@ -211,10 +222,15 @@
 */
 function storyeditor($sid = '', $mode = '', $errormsg = '', $currenttopic = '')
 {
-    global $_CONF, $_GROUPS, $_TABLES, $_USER, $LANG24, $LANG_ACCESS, $LANG_ADMIN;
+    global $_CONF, $_GROUPS, $_TABLES, $_USER, $LANG24, $LANG_ACCESS,
+           $LANG_ADMIN, $MESSAGE;
 
     $display = '';
 
+    if (!isset ($_CONF['hour_mode'])) {
+        $_CONF['hour_mode'] = 12;
+    }
+
     if (!empty ($errormsg)) {
         $display .= COM_startBlock($LANG24[25], '',
                             COM_getBlockTemplate ('_msg_block', 'header'));
@@ -233,11 +249,21 @@
     }
 
     if (!empty ($sid) && ($mode == 'edit')) {
-        $result = DB_query ("SELECT STRAIGHT_JOIN s.*, UNIX_TIMESTAMP(s.date) AS unixdate, "
+        $msql = array();
+        $msql['mysql'] = "SELECT STRAIGHT_JOIN s.*, UNIX_TIMESTAMP(s.date) AS unixdate, "
          . "u.username, u.fullname, u.photo, t.topic, t.imageurl, UNIX_TIMESTAMP(s.expire) AS expiredate "
          . "FROM {$_TABLES['stories']} AS s, {$_TABLES['users']} AS u, {$_TABLES['topics']} AS t "
-         . "WHERE (s.uid = u.uid) AND (s.tid = t.tid) AND (sid = '$sid')");
-        $A = DB_fetchArray($result);
+         . "WHERE (s.uid = u.uid) AND (s.tid = t.tid) AND (sid = '$sid')";
+
+        $msql['mssql'] = "SELECT STRAIGHT_JOIN s.sid, s.uid, s.draft_flag, s.tid, s.date, s.title, CAST(s.introtext AS text) AS introtext, CAST(s.bodytext AS text) AS bodytext, s.hits, s.numemails, s.comments, s.trackbacks, s.related, s.featured, s.show_topic_icon, s.commentcode, s.trackbackcode, s.statuscode, s.expire, s.postmode, s.frontpage, s.in_transit, s.owner_id, s.group_id, s.perm_owner, s.perm_group, s.perm_members, s.perm_anon, s.advanced_editor_mode,"
+         ." UNIX_TIMESTAMP(s.date) AS unixdate, "
+         . "u.username, u.fullname, u.photo, t.topic, t.imageurl, UNIX_TIMESTAMP(s.expire) AS expiredate "
+         . "FROM {$_TABLES['stories']} AS s, {$_TABLES['users']} AS u, {$_TABLES['topics']} AS t "
+         . "WHERE (s.uid = u.uid) AND (s.tid = t.tid) AND (sid = '$sid')";
+
+        $result = DB_query ($msql);
+        $A = DB_fetchArray ($result);
+
         $access = SEC_hasAccess($A['owner_id'],$A['group_id'],$A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']);
         $access = min ($access, SEC_hasTopicAccess ($A['tid']));
         if ($access == 2) {
@@ -269,6 +295,11 @@
          . "WHERE (s.uid = u.uid) AND (s.tid = t.tid) AND (sid = '$sid')");
         if (DB_numRows ($result) > 0) {
             $A = DB_fetchArray($result);
+            if (isset ($_CONF['draft_flag'])) {
+                $A['draft_flag'] = $_CONF['draft_flag'];
+            } else {
+                $A['draft_flag'] = 0;
+            }
             if (isset ($_CONF['show_topic_icon'])) {
                 $A['show_topic_icon'] = $_CONF['show_topic_icon'];
             } else {
@@ -282,6 +313,8 @@
             if (DB_getItem ($_TABLES['topics'], 'archive_flag',
                     "tid = '{$A['tid']}'") == 1) {
                 $A['frontpage'] = 0;
+            } else if (isset ($_CONF['frontpage'])) {
+                $A['frontpage'] = $_CONF['frontpage'];
             } else {
                 $A['frontpage'] = 1;
             }
@@ -310,6 +343,11 @@
     } elseif ($mode == 'edit') {
         $A['sid'] = COM_makesid();
         $A['old_sid'] = '';
+        if (isset ($_CONF['draft_flag'])) {
+            $A['draft_flag'] = $_CONF['draft_flag'];
+        } else {
+            $A['draft_flag'] = 0;
+        }
         if (isset ($_CONF['show_topic_icon'])) {
             $A['show_topic_icon'] = $_CONF['show_topic_icon'];
         } else {
@@ -323,16 +361,22 @@
         $A['title'] = '';
         $A['introtext'] = '';
         $A['bodytext'] = '';
-        $A['frontpage'] = 1;
+        if (isset ($_CONF['frontpage'])) {
+            $A['frontpage'] = $_CONF['frontpage'];
+        } else {
+            $A['frontpage'] = 1;
+        }
         $A['hits'] = 0;
         $A['comments'] = 0;
         $A['trackbacks'] = 0;
         $A['numemails'] = 0;
 
-        /* @TODO -o"Blaine" Add a user-preference option to set if user wants to`use advanced-editor */
-        if (isset ($_CONF['advanced_editor']) && ($_CONF['advanced_editor'] == 1)) {
-            $A['postmode'] = 'html';
+        if (isset ($_CONF['advanced_editor']) && $_CONF['advanced_editor'] &&
+                ($_CONF['postmode'] != 'plaintext')) {
+            $A['advanced_editor_mode'] = 1;
+            $A['postmode'] = 'adveditor';
         } else {
+            $A['advanced_editor_mode'] = 0;
             $A['postmode'] = $_CONF['postmode'];
         }
 
@@ -350,6 +394,7 @@
         $A = $_POST;
         $res = DB_query("SELECT username, fullname, photo FROM {$_TABLES['users']} WHERE uid = {$A['uid']}");
         $A += DB_fetchArray($res);
+        $A['tid'] = COM_applyFilter ($A['tid']);
         $res = DB_query("SELECT topic, imageurl FROM {$_TABLES['topics']} WHERE tid = '{$A['tid']}'");
         $A += DB_fetchArray($res);
         if (empty ($A['ampm'])) {
@@ -371,7 +416,7 @@
 
         // Convert array values to numeric permission values
         list($A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']) = SEC_getPermissionValues($A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']);
-        if ($A['postmode'] == 'html') {
+        if ($A['postmode'] == 'html' OR $A['postmode'] == 'adveditor') {
             $A['introtext'] = COM_checkHTML(COM_checkWords($A['introtext']));
             $A['bodytext'] = COM_checkHTML(COM_checkWords($A['bodytext']));
             $A['title'] = COM_checkHTML(htmlspecialchars(COM_checkWords($A['title'])));
@@ -386,24 +431,14 @@
 
     // Load HTML templates
     $story_templates = new Template($_CONF['path_layout'] . 'admin/story');
-    if ( $A['postmode'] == 'html' AND isset ($_CONF['advanced_editor'])
-        && ($_CONF['advanced_editor'] == 1 ) && file_exists ($_CONF['path_layout'] . 'admin/story/storyeditor_advanced.thtml')) {
+    if ( isset ($_CONF['advanced_editor']) && ($_CONF['advanced_editor'] == 1 )
+        && file_exists ($_CONF['path_layout'] . 'admin/story/storyeditor_advanced.thtml')) {
         $advanced_editormode = true;
         $story_templates->set_file(array('editor'=>'storyeditor_advanced.thtml'));
         $story_templates->set_var ('change_editormode', 'onChange="change_editmode(this);"');
 
-        include ($_CONF['path_system'] . 'classes/navbar.class.php');
-
-        $navbar = new navbar;
-        $navbar->add_menuitem($LANG24[79],'showhideEditorDiv("preview");return false;',true);
-        $navbar->add_menuitem($LANG24[80],'showhideEditorDiv("editor");return false;',true);
-        $navbar->add_menuitem($LANG24[81],'showhideEditorDiv("publish");return false;',true);
-        $navbar->add_menuitem($LANG24[82],'showhideEditorDiv("images");return false;',true);
-        $navbar->add_menuitem($LANG24[83],'showhideEditorDiv("archive");return false;',true);
-        $navbar->add_menuitem($LANG24[84],'showhideEditorDiv("perms");return false;',true);
-        $navbar->add_menuitem($LANG24[85],'showhideEditorDiv("all");return false',true);
+        require_once ($_CONF['path_system'] . 'classes/navbar.class.php');
 
-        $story_templates->set_var ('navbar', $navbar->generate() );
         $story_templates->set_var ('show_preview', 'none');
         $story_templates->set_var ('lang_expandhelp', $LANG24[67]);
         $story_templates->set_var ('lang_reducehelp', $LANG24[68]);
@@ -414,8 +449,8 @@
         $story_templates->set_var ('toolbar3', $LANG24[73]);
         $story_templates->set_var ('toolbar4', $LANG24[74]);
         $story_templates->set_var ('toolbar5', $LANG24[75]);
- 
-        if ($A['postmode'] == 'html') {
+
+        if ($A['advanced_editor_mode'] == 1 OR $A['postmode'] == 'adveditor') {
             $story_templates->set_var ('show_texteditor', 'none');
             $story_templates->set_var ('show_htmleditor', '');
         } else {
@@ -426,11 +461,12 @@
         $story_templates->set_file(array('editor'=>'storyeditor.thtml'));
         $advanced_editormode = false;
     }
-    $story_templates->set_var('site_url', $_CONF['site_url']);
-    $story_templates->set_var('site_admin_url', $_CONF['site_admin_url']);
-    $story_templates->set_var('layout_url', $_CONF['layout_url']);
+    $story_templates->set_var ('site_url',       $_CONF['site_url']);
+    $story_templates->set_var ('site_admin_url', $_CONF['site_admin_url']);
+    $story_templates->set_var ('layout_url',     $_CONF['layout_url']);
+    $story_templates->set_var ('hour_mode',      $_CONF['hour_mode']);
 
-    if (empty($A['unixdate'])) {
+    if (empty ($A['unixdate'])) {
         $publish_hour = $A['publish_hour'];
         if ($publish_hour == 12) {
             if ($A['ampm'] == 'am') {
@@ -444,7 +480,7 @@
             . $publish_hour . ':' . $A['publish_minute'] . ':00');
     }
 
-    if (!empty($A['title'])) {
+    if (!empty ($A['title'])) {
 
         $A['day'] = $A['unixdate'];
         if (empty ($A['hits'])) {
@@ -458,6 +494,7 @@
             $has_images = false;
         }
 
+        $previewContent = '';
         if ($A['postmode'] == 'plaintext') {
             $B = $A;
 
@@ -484,7 +521,7 @@
             $previewContent = STORY_renderArticle ($A, 'p');
         }
 
-        if ($advanced_editormode) {
+        if ($advanced_editormode AND $previewContent != '' ) {
             $story_templates->set_var('preview_content', $previewContent);
         } else {
             $display = COM_startBlock ($LANG24[26], '',
@@ -494,65 +531,80 @@
         }
     }
 
+    if ($advanced_editormode) {
+        $navbar = new navbar;
+        if (!empty ($previewContent)) {
+            $navbar->add_menuitem($LANG24[79],'showhideEditorDiv("preview",0);return false;',true);
+            $navbar->add_menuitem($LANG24[80],'showhideEditorDiv("editor",1);return false;',true);
+            $navbar->add_menuitem($LANG24[81],'showhideEditorDiv("publish",2);return false;',true);
+            $navbar->add_menuitem($LANG24[82],'showhideEditorDiv("images",3);return false;',true);
+            $navbar->add_menuitem($LANG24[83],'showhideEditorDiv("archive",4);return false;',true);
+            $navbar->add_menuitem($LANG24[84],'showhideEditorDiv("perms",5);return false;',true);
+            $navbar->add_menuitem($LANG24[85],'showhideEditorDiv("all",6);return false;',true);
+        }  else {
+            $navbar->add_menuitem($LANG24[80],'showhideEditorDiv("editor",0);return false;',true);
+            $navbar->add_menuitem($LANG24[81],'showhideEditorDiv("publish",1);return false;',true);
+            $navbar->add_menuitem($LANG24[82],'showhideEditorDiv("images",2);return false;',true);
+            $navbar->add_menuitem($LANG24[83],'showhideEditorDiv("archive",3);return false;',true);
+            $navbar->add_menuitem($LANG24[84],'showhideEditorDiv("perms",4);return false;',true);
+            $navbar->add_menuitem($LANG24[85],'showhideEditorDiv("all",5);return false;',true);
+        }
+
+        $navbar->set_selected($LANG24[80]);
+        $story_templates->set_var ('navbar', $navbar->generate() );
+    }
+
     $display .= COM_startBlock ($LANG24[5], '',
                         COM_getBlockTemplate ('_admin_block', 'header'));
 
-    if ($access == 3) {
+    if (($access == 3) && !empty ($A['old_sid'])) {
+        $delbutton = '<input type="submit" value="' . $LANG_ADMIN['delete']
+                   . '" name="mode"%s>';
+        $jsconfirm = ' onclick="return confirm(\'' . $MESSAGE[76] . '\');"';
         $story_templates->set_var ('delete_option',
-            '<input type="submit" value="' . $LANG24[11] . '" name="mode" onClick="return delconfirm()">');
+                                   sprintf ($delbutton, $jsconfirm));
+        $story_templates->set_var ('delete_option_no_confirmation',
+                                   sprintf ($delbutton, ''));
     }
     if ($mode == 'editsubmission') {
         $story_templates->set_var ('submission_option',
                 '<input type="hidden" name="type" value="submission">');
     }
-    $story_templates->set_var('lang_author', $LANG24[7]);
-    $story_templates->set_var ('story_author', DB_getItem ($_TABLES['users'],
-                               'username', "uid = {$A['uid']}"));
-    $story_templates->set_var('story_uid', $A['uid']);
+    $story_templates->set_var ('lang_author', $LANG24[7]);
+    $storyauthor = COM_getDisplayName ($A['uid']);
+    $story_templates->set_var ('story_author', $storyauthor);
+    $story_templates->set_var ('author', $storyauthor);
+    $story_templates->set_var ('story_uid', $A['uid']);
 
     // user access info
     $story_templates->set_var('lang_accessrights',$LANG_ACCESS['accessrights']);
     $story_templates->set_var('lang_owner', $LANG_ACCESS['owner']);
-    $story_templates->set_var ('owner_username', DB_getItem ($_TABLES['users'],
-                               'username', "uid = {$A['owner_id']}"));
+    $ownername = COM_getDisplayName ($A['owner_id']);
+    $story_templates->set_var('owner_username', DB_getItem ($_TABLES['users'],
+                              'username', "uid = {$A['owner_id']}"));
+    $story_templates->set_var('owner_name', $ownername);
+    $story_templates->set_var('owner', $ownername);
     $story_templates->set_var('owner_id', $A['owner_id']);
     $story_templates->set_var('lang_group', $LANG_ACCESS['group']);
-
-    $usergroups = SEC_getUserGroups();
-    $groupdd = '';
-    if ($access == 3) {
-        $groupdd .= '<select name="group_id">';
-        for ($i = 0; $i < count($usergroups); $i++) {
-            $groupdd .= '<option value="' . $usergroups[key($usergroups)] . '"';
-            if ($A['group_id'] == $usergroups[key($usergroups)]) {
-                $groupdd .= ' selected="selected"';
-            }
-            $groupdd .= '>' . key($usergroups) . '</option>';
-            next($usergroups);
-        }
-        $groupdd .= '</select>';
-    } else {
-        // they can't set the group then
-        $groupdd .= DB_getItem ($_TABLES['groups'], 'grp_name',
-                                "grp_id = {$A['group_id']}");
-        $groupdd .= '<input type="hidden" name="group_id" value="'
-                 . $A['group_id'] . '">';
-    }
-    $story_templates->set_var('group_dropdown', $groupdd);
+    $story_templates->set_var('group_dropdown',
+                              SEC_getGroupDropdown ($A['group_id'], $access));
     $story_templates->set_var('lang_permissions', $LANG_ACCESS['permissions']);
     $story_templates->set_var('lang_perm_key', $LANG_ACCESS['permissionskey']);
     $story_templates->set_var('permissions_editor', SEC_getPermissionsHTML($A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']));
     $story_templates->set_var('permissions_msg', $LANG_ACCESS['permmsg']);
     $curtime = COM_getUserDateTimeFormat($A['unixdate']);
     $story_templates->set_var('lang_date', $LANG24[15]);
-    $publish_month = date('m', $A['unixdate']);
-    $publish_day = date('d', $A['unixdate']);
-    $publish_year = date('Y', $A['unixdate']);
-    $publish_hour = date('H', $A['unixdate']);
-    $publish_minute = date('i', $A['unixdate']);
-    $publish_second = date('s', $A['unixdate']);
+
+    $publish_month  = date ('m', $A['unixdate']);
+    $publish_day    = date ('d', $A['unixdate']);
+    $publish_year   = date ('Y', $A['unixdate']);
+    $publish_hour   = date ('H', $A['unixdate']);
+    $publish_minute = date ('i', $A['unixdate']);
+    $publish_second = date ('s', $A['unixdate']);
     $story_templates->set_var('publish_second', $publish_second);
+
     $publish_ampm = '';
+    $publish_hour_24 = $publish_hour;
     if ($publish_hour >= 12) {
         if ($publish_hour > 12) {
             $publish_hour = $publish_hour - 12;
@@ -561,11 +613,9 @@
     } else {
         $ampm = 'am';
     }
-    if ($ampm == 'pm') {
-        $story_templates->set_var ('publishpm_selected', 'selected="selected"');
-    } else {
-        $story_templates->set_var ('publisham_selected', 'selected="selected"');
-    }
+    $ampm_select = COM_getAmPmFormSelection ('publish_ampm', $ampm);
+    $story_templates->set_var ('publishampm_selection', $ampm_select);
+
     $month_options = COM_getMonthFormOptions($publish_month);
     $story_templates->set_var('publish_month_options', $month_options);
 
@@ -575,27 +625,33 @@
     $year_options = COM_getYearFormOptions($publish_year);
     $story_templates->set_var('publish_year_options', $year_options);
 
-    $hour_options = COM_getHourFormOptions($publish_hour);
+    if ($_CONF['hour_mode'] == 24) {
+        $hour_options = COM_getHourFormOptions ($publish_hour_24, 24);
+    } else {
+        $hour_options = COM_getHourFormOptions ($publish_hour);
+    }
     $story_templates->set_var('publish_hour_options', $hour_options);
 
-    $minute_options = COM_getMinuteOptions($publish_minute);
+    $minute_options = COM_getMinuteFormOptions($publish_minute);
     $story_templates->set_var('publish_minute_options', $minute_options);
 
     $story_templates->set_var('publish_date_explanation', $LANG24[46]);
-
     $story_templates->set_var('story_unixstamp', $A['unixdate']);
-    /* Auto Story Archive or Delete Feature */
+
+    // Auto Story Archive or Delete Feature
     if (empty ($A['expiredate']) or date('Y', $A['expiredate']) < 2000) {
         $A['expiredate'] = time();
     }
-    $expire_month = date('m', $A['expiredate']);
-    $expire_day = date('d', $A['expiredate']);
-    $expire_year = date('Y', $A['expiredate']);
-    $expire_hour = date('H', $A['expiredate']);
+    $expire_month  = date('m', $A['expiredate']);
+    $expire_day    = date('d', $A['expiredate']);
+    $expire_year   = date('Y', $A['expiredate']);
+    $expire_hour   = date('H', $A['expiredate']);
     $expire_minute = date('i', $A['expiredate']);
     $expire_second = date('s', $A['expiredate']);
     $story_templates->set_var('expire_second', $expire_second);
+
     $expire_ampm = '';
+    $expire_hour_24 = $expire_hour;
     if ($expire_hour >= 12) {
         if ($expire_hour > 12) {
             $expire_hour = $expire_hour - 12;
@@ -604,21 +660,32 @@
     } else {
         $ampm = 'am';
     }
-    if ($ampm == 'pm') {
-        $story_templates->set_var ('expirepm_selected', 'selected="selected"');
-    } else {
-        $story_templates->set_var ('expiream_selected', 'selected="selected"');
+    $ampm_select = COM_getAmPmFormSelection ('expire_ampm', $ampm);
+    if (empty ($ampm_select)) {
+        // have a hidden field to 24 hour mode to prevent JavaScript errors
+        $ampm_select = '<input type="hidden" name="expire_ampm" value="">';
     }
+    $story_templates->set_var ('expireampm_selection', $ampm_select);
+
     $month_options = COM_getMonthFormOptions($expire_month);
     $story_templates->set_var('expire_month_options', $month_options);
+
     $day_options = COM_getDayFormOptions($expire_day);
     $story_templates->set_var('expire_day_options', $day_options);
+
     $year_options = COM_getYearFormOptions($expire_year);
     $story_templates->set_var('expire_year_options', $year_options);
-    $hour_options = COM_getHourFormOptions($expire_hour);
+
+    if ($_CONF['hour_mode'] == 24) {
+        $hour_options = COM_getHourFormOptions ($expire_hour_24, 24);
+    } else {
+        $hour_options = COM_getHourFormOptions ($expire_hour);
+    }
     $story_templates->set_var('expire_hour_options', $hour_options);
-    $minute_options = COM_getMinuteOptions($expire_minute);
+
+    $minute_options = COM_getMinuteFormOptions($expire_minute);
     $story_templates->set_var('expire_minute_options', $minute_options);
+
     $story_templates->set_var('expire_date_explanation', $LANG24[46]);
     $story_templates->set_var('story_unixstamp', $A['expiredate']);
     if ($A['statuscode'] == STORY_ARCHIVE_ON_EXPIRE) {
@@ -635,6 +702,7 @@
     $story_templates->set_var('lang_archivetitle', $LANG24[58]);
     $story_templates->set_var('lang_option', $LANG24[59]);
     $story_templates->set_var('lang_enabled', $LANG_ADMIN['enabled']);
+    $story_templates->set_var('lang_story_stats', $LANG24[87]);
     $story_templates->set_var('lang_optionarchive', $LANG24[61]);
     $story_templates->set_var('lang_optiondelete', $LANG24[62]);
     $story_templates->set_var('lang_title', $LANG_ADMIN['title']);
@@ -654,7 +722,8 @@
         $A['tid'] = DB_getItem ($_TABLES['topics'], 'tid',
                                 'is_default = 1' . COM_getPermSQL ('AND'));
     }
-    $story_templates->set_var ('topic_options', COM_topicList ('tid,topic', $A['tid']));
+    $story_templates->set_var ('topic_options',
+                               COM_topicList ('tid,topic', $A['tid'], 1, true));
     $story_templates->set_var('lang_show_topic_icon', $LANG24[56]);
     if ($A['show_topic_icon'] == 1) {
         $story_templates->set_var('show_topic_icon_checked', 'checked="checked"');
@@ -675,9 +744,16 @@
     $story_templates->set_var ('trackback_options',
             COM_optionList ($_TABLES['trackbackcodes'], 'code,name',
                             $A['trackbackcode']));
-    $story_templates->set_var ('featured_options',
-            COM_optionList ($_TABLES['featurecodes'], 'code,name',
-                            $A['featured']));
+
+    if (($_CONF['onlyrootfeatures'] == 1 && SEC_inGroup('Root'))
+        or ($_CONF['onlyrootfeatures'] !== 1)) {
+        $featured_options = "<select name=\"featured\">" . LB
+                          . COM_optionList ($_TABLES['featurecodes'], 'code,name', $A['featured'])
+                          . "</select>" . LB;
+    } else {
+        $featured_options = '<input type="hidden" name="featured" value="0">';
+    }
+    $story_templates->set_var ('featured_options',$featured_options);
     $story_templates->set_var ('frontpage_options',
             COM_optionList ($_TABLES['frontpagecodes'], 'code,name',
                             $A['frontpage']));
@@ -690,35 +766,47 @@
     }
 
     list($newintro, $newbody) = STORY_replace_images ($A['sid'],
-        stripslashes ($A['introtext']), stripslashes ($A['bodytext']));
+              stripslashes ($A['introtext']), stripslashes ($A['bodytext']));
 
-    $story_templates->set_var('lang_introtext', $LANG24[16]);
     if ($A['postmode'] == 'plaintext') {
         $newintro = str_replace('$','&#36;',$newintro);
+        $newbody = str_replace('$','&#36;',$newbody);
     } else {
         // Insert [code] and [/code] if needed
         $newintro = str_replace('<pre><code>','[code]',$newintro);
         $newbody = str_replace('<pre><code>','[code]',$newbody);
         $newintro = str_replace('</code></pre>','[/code]',$newintro);
         $newbody = str_replace('</code></pre>','[/code]',$newbody);
+
+        $newintro = htmlspecialchars ($newintro);
+        $newbody = htmlspecialchars ($newbody);
     }
+
     $newintro = str_replace('{','&#123;',$newintro);
     $newintro = str_replace('}','&#125;',$newintro);
     $story_templates->set_var('story_introtext', $newintro);
-    $story_templates->set_var('lang_bodytext', $LANG24[17]);
-    if ($A['postmode'] == 'plaintext') {
-        $newbody = str_replace('$','&#36;',$newbody);
-    }
 
     $newbody = str_replace('{','&#123;',$newbody);
     $newbody = str_replace('}','&#125;',$newbody);
     $story_templates->set_var('story_bodytext', $newbody);
+
+    $story_templates->set_var('lang_introtext', $LANG24[16]);
+    $story_templates->set_var('lang_bodytext', $LANG24[17]);
     $story_templates->set_var('lang_postmode', $LANG24[4]);
     $story_templates->set_var('lang_publishoptions',$LANG24[76]);
     $story_templates->set_var('lang_nojavascript',$LANG24[77]);
     $story_templates->set_var('no_javascript_return_link',sprintf($LANG24[78],$_CONF['site_admin_url'], $sid));
+    $post_options = COM_optionList($_TABLES['postmodes'],'code,name',$A['postmode']);
 
-    $story_templates->set_var('post_options', COM_optionList($_TABLES['postmodes'],'code,name',$A['postmode']));
+    // If Advanced Mode - add post option and set default if editing story created with Advanced Editor
+    if ($_CONF['advanced_editor'] == 1) {
+        if ($A['advanced_editor_mode'] == 1 OR $A['postmode'] == 'adveditor') {
+            $post_options .= '<option value="adveditor" selected="selected">'.$LANG24[86].'</option>';
+        } else {
+            $post_options .= '<option value="adveditor">'.$LANG24[86].'</option>';
+        }
+    }
+    $story_templates->set_var('post_options',$post_options );
     $story_templates->set_var('lang_allowed_html', COM_allowedHTML());
     $fileinputs = '';
     $saved_images = '';
@@ -760,10 +848,10 @@
     $story_templates->set_var('story_id', $A['sid']);
     $story_templates->set_var('old_story_id', $A['old_sid']);
     $story_templates->set_var('lang_sid', $LANG24[12]);
-    $story_templates->set_var('lang_save', $LANG24[8]);
-    $story_templates->set_var('lang_preview', $LANG24[9]);
-    $story_templates->set_var('lang_cancel', $LANG24[10]);
-    $story_templates->set_var('lang_delete', $LANG24[11]);
+    $story_templates->set_var('lang_save', $LANG_ADMIN['save']);
+    $story_templates->set_var('lang_preview', $LANG_ADMIN['preview']);
+    $story_templates->set_var('lang_cancel', $LANG_ADMIN['cancel']);
+    $story_templates->set_var('lang_delete', $LANG_ADMIN['delete']);
     $story_templates->parse('output','editor');
     $display .= $story_templates->finish($story_templates->get_var('output'));
     $display .= COM_endBlock (COM_getBlockTemplate ('_admin_block', 'footer'));
@@ -783,7 +871,6 @@
 * @param    string      $bodytext       Text of body
 * @param    int         $hits           Number of times story has been viewed
 * @param    string      $unixdate       Date story was originally saved
-* @param    int         $comments       Number of user comments made to this story
 * @param    int         $featured       Flag on whether or not this is a featured article
 * @param    string      $commentcode    Indicates if comments are allowed to be made to article
 * @param    string      $trackbackcode  Indicates if trackbacks are allowed to be made to article
@@ -801,13 +888,17 @@
 * @param    int         $delete         String array of attached images to delete from article
 *
 */
-function submitstory($type='',$sid,$uid,$tid,$title,$introtext,$bodytext,$hits,$unixdate,$expiredate,$comments,$featured,$commentcode,$trackbackcode,$statuscode,$postmode,$frontpage,$draft_flag,$numemails,$owner_id,$group_id,$perm_owner,$perm_group,$perm_members,$perm_anon,$delete,$show_topic_icon,$old_sid)
+function submitstory($type='',$sid,$uid,$tid,$title,$introtext,$bodytext,$hits,$unixdate,$expiredate,$featured,$commentcode,$trackbackcode,$statuscode,$postmode,$frontpage,$draft_flag,$numemails,$owner_id,$group_id,$perm_owner,$perm_group,$perm_members,$perm_anon,$delete,$show_topic_icon,$old_sid)
 {
     global $_CONF, $_TABLES, $_USER, $LANG24, $MESSAGE;
 
     // Convert array values to numeric permission values
     list($perm_owner,$perm_group,$perm_members,$perm_anon) = SEC_getPermissionValues($perm_owner,$perm_group,$perm_members,$perm_anon);
 
+    // fix for bug in advanced editor
+    if ($_CONF['advanced_editor'] && ($bodytext == '<br>')) {
+        $bodytext = '';
+    }
     $sid = COM_sanitizeID ($sid);
 
     $duplicate_sid = false;
@@ -830,7 +921,7 @@
                 $perm_members, $perm_anon);
     }
     if (($access < 3) || (SEC_hasTopicAccess ($tid) < 2) || !SEC_inGroup ($group_id)) {
-        $display .= COM_siteHeader ('menu');
+        $display .= COM_siteHeader ('menu', $MESSAGE[30]);
         $display .= COM_startBlock ($MESSAGE[30], '',
                             COM_getBlockTemplate ('_msg_block', 'header'));
         $display .= $MESSAGE[31];
@@ -840,7 +931,7 @@
         echo $display;
         exit;
     } elseif ($duplicate_sid) {
-        $display .= COM_siteHeader ('menu');
+        $display .= COM_siteHeader ('menu', $LANG24[5]);
         $display .= COM_errorLog ($LANG24[24], 2);
         $display .= storyeditor ($sid);
         $display .= COM_siteFooter ();
@@ -861,6 +952,12 @@
             $draft_flag = 0;
         }
 
+        if (DB_getItem ($_TABLES['topics'], 'tid', "archive_flag=1") == $tid) {
+            $featured = 0;
+            $frontpage = 0;
+            $statuscode = STORY_ARCHIVE_ON_EXPIRE;
+        }
+
         if ($featured == '1') {
             // there can only be one non-draft featured story
             if ($draft_flag == 0 AND $unixdate <= time()) {
@@ -883,9 +980,9 @@
         }
 
         // Clean up the text
-        if ($postmode == 'html') {
+        if ($postmode == 'html' OR $postmode == 'adveditor') {
             // Advanced Editor: Are you editing this story and switching mode from text to html
-            if ( (DB_count($_TABLES['stories'],'sid',$sid) == 1) AND 
+            if ( (DB_count($_TABLES['stories'],'sid',$sid) == 1) AND
                  (DB_getItem($_TABLES['stories'], 'postmode',"sid='$sid'") == 'plaintext') AND
                  ($_CONF['advanced_editor'] == 1) ) {
                      $introtext = str_replace("\n",'<br>',$introtext);
@@ -898,7 +995,10 @@
         }
 
         $title = addslashes(htmlspecialchars(strip_tags(COM_checkWords($title))));
-        $comments = DB_count($_TABLES['comments'],'sid',$sid);
+        $comments   = DB_count ($_TABLES['comments'], array ('sid', 'type'),
+                                array ($sid, 'article'));
+        $trackbacks = DB_count ($_TABLES['trackback'], array ('sid', 'type'),
+                                array ($sid, 'article'));
 
         // Delete any images if needed
         for ($i = 1; $i <= count($delete); $i++) {
@@ -920,7 +1020,10 @@
             require_once($_CONF['path_system'] . 'classes/upload.class.php');
             $upload = new upload();
 
-            $upload->setDebug(true);
+            if (isset ($_CONF['debug_image_upload']) && $_CONF['debug_image_upload']) {
+                $upload->setLogFile ($_CONF['path'] . 'logs/error.log');
+                $upload->setDebug (true);
+            }
             $upload->setMaxFileUploads ($_CONF['maximagesperarticle']);
             if (!empty($_CONF['image_lib'])) {
                 if ($_CONF['image_lib'] == 'imagemagick') {
@@ -952,7 +1055,7 @@
                     'image/png'   => '.png'
                     ));
             if (!$upload->setPath($_CONF['path_images'] . 'articles')) {
-                $display = COM_siteHeader ('menu');
+                $display = COM_siteHeader ('menu', $LANG24[30]);
                 $display .= COM_startBlock ($LANG24[30], '', COM_getBlockTemplate ('_msg_block', 'header'));
                 $display .= $upload->printErrors (false);
                 $display .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
@@ -987,7 +1090,7 @@
             $upload->uploadFiles();
 
             if ($upload->areErrors()) {
-                $retval = COM_siteHeader('menu');
+                $retval = COM_siteHeader('menu', $LANG24[30]);
                 $retval .= COM_startBlock ($LANG24[30], '',
                                COM_getBlockTemplate ('_msg_block', 'header'));
                 $retval .= $upload->printErrors(false);
@@ -1009,10 +1112,6 @@
             $bodytext = COM_makeClickableLinks ($bodytext);
         }
 
-        // Get the related URLs
-        $related = addslashes (implode ("\n",
-                        STORY_extractLinks ("$introtext $bodytext")));
-
         if ($_CONF['maximagesperarticle'] > 0) {
             if ($delete_old_story) {
                 // story id has changed - update article_images table first
@@ -1020,7 +1119,7 @@
             }
             list($errors, $introtext, $bodytext) = STORY_insert_images($sid, $introtext, $bodytext);
             if (count($errors) > 0) {
-                $display = COM_siteHeader ('menu');
+                $display = COM_siteHeader ('menu', $LANG24[54]);
                 $display .= COM_startBlock ($LANG24[54], '',
                                 COM_getBlockTemplate ('_msg_block', 'header'));
                 $display .= $LANG24[55] . '<p>';
@@ -1036,10 +1135,22 @@
             }
         }
 
+        // Get the related URLs
+        $related = addslashes (implode ("\n",
+                        STORY_extractLinks ("$introtext $bodytext")));
+
         $introtext = addslashes ($introtext);
         $bodytext = addslashes ($bodytext);
 
-        DB_save ($_TABLES['stories'], 'sid,uid,tid,title,introtext,bodytext,hits,date,comments,related,featured,commentcode,trackbackcode,statuscode,expire,postmode,frontpage,draft_flag,numemails,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon,show_topic_icon,in_transit', "'$sid',$uid,'$tid','$title','$introtext','$bodytext',$hits,FROM_UNIXTIME($unixdate),'$comments','$related',$featured,'$commentcode','$trackbackcode','$statuscode',FROM_UNIXTIME($expiredate),'$postmode','$frontpage',$draft_flag,$numemails,$owner_id,$group_id,$perm_owner,$perm_group,$perm_members,$perm_anon,$show_topic_icon,1");
+        // Set Advanced Editor Mode option but save it still has html mode
+        if ($postmode == 'adveditor') {
+            $postmode = 'html';
+            $advanced_editor_mode = 1;
+        } else {
+            $advanced_editor_mode = 0;
+        }
+
+        DB_save ($_TABLES['stories'], 'sid,uid,tid,title,introtext,bodytext,hits,date,comments,trackbacks,related,featured,commentcode,trackbackcode,statuscode,expire,postmode,frontpage,draft_flag,numemails,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon,show_topic_icon,in_transit,advanced_editor_mode', "'$sid',$uid,'$tid','$title','$introtext','$bodytext',$hits,FROM_UNIXTIME($unixdate),'$comments','$trackbacks','$related',$featured,'$commentcode','$trackbackcode','$statuscode',FROM_UNIXTIME($expiredate),'$postmode','$frontpage',$draft_flag,$numemails,$owner_id,$group_id,$perm_owner,$perm_group,$perm_members,$perm_anon,$show_topic_icon,1,$advanced_editor_mode");
 
         // If this is done as part of the moderation then delete the submission
         if (empty ($old_sid)) {
@@ -1053,6 +1164,7 @@
         if ($delete_old_story && !empty ($old_sid)) {
             DB_delete ($_TABLES['stories'], 'sid', $old_sid);
             DB_query ("UPDATE {$_TABLES['comments']} SET sid = '$sid' WHERE type = 'article' AND sid = '$old_sid'");
+            DB_query ("UPDATE {$_TABLES['trackback']} SET sid = '$sid' WHERE type = 'article' AND sid = '$old_sid'");
         }
 
         // see if any plugins want to act on that story
@@ -1063,7 +1175,7 @@
 
         // in case of an error go back to the story editor
         if ($plugin_error !== false) {
-            $display .= COM_siteHeader ('menu');
+            $display .= COM_siteHeader ('menu', $LANG24[5]);
             $display .= storyeditor ($sid, 'retry', $plugin_error);
             $display .= COM_siteFooter ();
             echo $display;
@@ -1081,8 +1193,8 @@
         }
         exit;
     } else {
-        $display .= COM_siteHeader('menu');
-        $display .= COM_errorLog($LANG24[31],2);
+        $display .= COM_siteHeader('menu', $LANG24[5]);
+        $display .= COM_errorLog($LANG24[31], 2);
         $display .= storyeditor($sid);
         $display .= COM_siteFooter();
         echo $display;
@@ -1104,9 +1216,12 @@
 }
 
 $display = '';
-if (($mode == $LANG24[11]) && !empty ($LANG24[11])) { // delete
+if (($mode == $LANG_ADMIN['delete']) && !empty ($LANG_ADMIN['delete'])) {
     $sid = COM_applyFilter ($_POST['sid']);
-    $type = COM_applyFilter ($_POST['type']);
+    $type = '';
+    if (isset ($_POST['type'])) {
+        $type = COM_applyFilter ($_POST['type']);
+    }
     if (!isset ($sid) || empty ($sid)) {
         COM_errorLog ('Attempted to delete story sid=' . $sid);
         echo COM_refresh ($_CONF['site_admin_url'] . '/story.php');
@@ -1122,9 +1237,14 @@
     } else {
         echo STORY_deleteStory ($sid);
     }
-} else if (($mode == $LANG24[9]) && !empty ($LANG24[9])) { // preview
+} else if (($mode == $LANG_ADMIN['preview']) && !empty ($LANG_ADMIN['preview'])) {
     $display .= COM_siteHeader('menu', $LANG24[5]);
-    $display .= storyeditor (COM_applyFilter ($_POST['sid']), $mode);
+    $editor = '';
+    if (!empty ($_GET['editor'])) {
+        $editor = COM_applyFilter ($_GET['editor']);
+    }
+    $display .= storyeditor (COM_applyFilter ($_POST['sid']), 'preview', '', '',
+                             $editor);
     $display .= COM_siteFooter();
     echo $display;
 } else if ($mode == 'edit') {
@@ -1133,10 +1253,15 @@
     if (isset ($_GET['sid'])) {
         $sid = COM_applyFilter ($_GET['sid']);
     }
+    $topic = '';
     if (isset ($_GET['topic'])) {
         $topic = COM_applyFilter ($_GET['topic']);
     }
-    $display .= storyeditor ($sid, $mode, '', $topic);
+    $editor = '';
+    if (isset ($_GET['editor'])) {
+        $editor = COM_applyFilter ($_GET['editor']);
+    }
+    $display .= storyeditor ($sid, $mode, '', $topic, $editor);
     $display .= COM_siteFooter();
     echo $display;
 } else if ($mode == 'editsubmission') {
@@ -1144,9 +1269,23 @@
     $display .= storyeditor (COM_applyFilter ($_GET['id']), $mode);
     $display .= COM_siteFooter();
     echo $display;
-} else if (($mode == $LANG24[8]) && !empty ($LANG24[8])) { // save
-    $publish_ampm = COM_applyFilter ($_POST['publish_ampm']);
+} else if (($mode == $LANG_ADMIN['save']) && !empty ($LANG_ADMIN['save'])) {
     $publish_hour = COM_applyFilter ($_POST['publish_hour'], true);
+    if (isset ($_CONF['hour_mode']) && ($_CONF['hour_mode'] == 24)) {
+        if ($publish_hour >= 12) {
+            if ($publish_hour > 12) {
+                $publish_hour -= 12;
+            }
+            $publish_ampm = 'pm';
+        } else {
+            if ($publish_hour == 0) {
+                $publish_hour = 12;
+            }
+            $publish_ampm = 'am';
+        }
+    } else {
+        $publish_ampm = COM_applyFilter ($_POST['publish_ampm']);
+    }
     $publish_minute = COM_applyFilter ($_POST['publish_minute'], true);
     $publish_second = COM_applyFilter ($_POST['publish_second'], true);
     if ($publish_ampm == 'pm') {
@@ -1160,22 +1299,39 @@
     $publish_year = COM_applyFilter ($_POST['publish_year'], true);
     $publish_month = COM_applyFilter ($_POST['publish_month'], true);
     $publish_day = COM_applyFilter ($_POST['publish_day'], true);
-    $archiveflag = COM_applyFilter ($_POST['archiveflag'], true);
-
     $unixdate = strtotime("$publish_month/$publish_day/$publish_year $publish_hour:$publish_minute:$publish_second");
+
+    $archiveflag = 0;
+    if (isset ($_POST['archiveflag'])) {
+        $archiveflag = COM_applyFilter ($_POST['archiveflag'], true);
+    }
     if ($archiveflag != 1) {
         $statuscode = 0;
     }
 
-    $expire_ampm = COM_applyFilter ($_POST['expire_ampm']);
     $expire_hour = COM_applyFilter ($_POST['expire_hour'], true);
+    if (isset ($_CONF['hour_mode']) && ($_CONF['hour_mode'] == 24)) {
+        if ($expire_hour >= 12) {
+            if ($expire_hour > 12) {
+                $expire_hour -= 12;
+            }
+            $expire_ampm = 'pm';
+        } else {
+            if ($expire_hour == 0) {
+                $expire_hour = 12;
+            }
+            $expire_ampm = 'am';
+        }
+    } else {
+        $expire_ampm = COM_applyFilter ($_POST['expire_ampm']);
+    }
     $expire_minute = COM_applyFilter ($_POST['expire_minute'], true);
     $expire_second = COM_applyFilter ($_POST['expire_second'], true);
     $expire_year = COM_applyFilter ($_POST['expire_year'], true);
     $expire_month = COM_applyFilter ($_POST['expire_month'], true);
     $expire_day = COM_applyFilter ($_POST['expire_day'], true);
 
-    if (isset($expire_hour))  {
+    if (isset ($expire_hour))  {
         if ($expire_ampm == 'pm') {
             if ($expire_hour < 12) {
                 $expire_hour = $expire_hour + 12;
@@ -1189,20 +1345,22 @@
         $expiredate = time();
     }
     $uid = COM_applyFilter ($_POST['uid'], true);
+    $type = '';
+    if (isset ($_POST['type'])) {
+        $type = COM_applyFilter ($_POST['type']);
+    }
 
-    submitstory (COM_applyFilter ($_POST['type']),
-                 COM_applyFilter ($_POST['sid']), $uid,
+    submitstory ($type, COM_applyFilter ($_POST['sid']), $uid,
                  COM_applyFilter ($_POST['tid']),
                  COM_stripslashes ($_POST['title']),
                  COM_stripslashes ($_POST['introtext']),
                  COM_stripslashes ($_POST['bodytext']),
                  COM_applyFilter ($_POST['hits'], true), $unixdate, $expiredate,
-                 COM_applyFilter ($_POST['comments'], true),
                  COM_applyFilter ($_POST['featured'], true),
                  COM_applyFilter ($_POST['commentcode'], true),
                  COM_applyFilter ($_POST['trackbackcode'], true),
                  COM_applyFilter ($_POST['statuscode'], true),
-                 COM_applyFilter ($_POST['postmode']),
+                 trim(COM_applyFilter ($_POST['postmode'])),
                  COM_applyFilter ($_POST['frontpage'], true),
                  COM_applyFilter ($_POST['draft_flag']),
                  COM_applyFilter ($_POST['numemails'], true),
diff -ruN 1.4.0sr5-1.src/admin/syndication.php 1.4.1.src/admin/syndication.php
--- 1.4.0sr5-1.src/admin/syndication.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/syndication.php	2006-08-19 08:59:28.000000000 -0500
@@ -30,17 +30,17 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: syndication.php,v 1.34 2006/01/28 12:26:34 dhaun Exp $
+// $Id: syndication.php,v 1.49 2006/08/19 13:59:28 dhaun Exp $
 
 
 require_once ('../lib-common.php');
 require_once ('auth.inc.php');
 
-if (!SEC_inGroup ('Root')) {
-    $display .= COM_siteHeader ()
+if (!SEC_hasRights ('syndication.edit')) {
+    $display .= COM_siteHeader ('menu', $MESSAGE[30])
         . COM_startBlock ($MESSAGE[30], '',
                           COM_getBlockTemplate ('_msg_block', 'header'))
-        . $MESSAGE[31]
+        . $MESSAGE[34]
         . COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'))
         . COM_siteFooter ();
     COM_accessLog("User {$_USER['username']} tried to illegally access the content syndication administration screen.");
@@ -120,8 +120,6 @@
         $options[] = array ('id' => $A['tid'], 'name' => '-- ' . $A['topic']);
     }
 
-    $options[] = array ('id' => '::events', 'name' => $LANG33[42]);
-
     return $options;
 }
 
@@ -158,7 +156,7 @@
                       'form_url' => $_CONF['site_admin_url'] . "/syndication.php");
 
     $query_arr = array('table' => 'syndication',
-                       'sql' => "SELECT *,UNIX_TIMESTAMP(updated) AS date FROM {$_TABLES['syndication']} WHERE 1",
+                       'sql' => "SELECT *,UNIX_TIMESTAMP(updated) AS date FROM {$_TABLES['syndication']} WHERE 1=1",
                        'query_fields' => array('title', 'filename'),
                        'default_filter' => '');
 
@@ -177,7 +175,7 @@
 */
 function editfeed ($fid = 0, $type = '')
 {
-    global $_CONF, $_TABLES, $LANG33;
+    global $_CONF, $_TABLES, $LANG33, $LANG_ADMIN, $MESSAGE;
 
     if ($fid > 0) {
         $result = DB_query ("SELECT *,UNIX_TIMESTAMP(updated) AS date FROM {$_TABLES['syndication']} WHERE fid = '$fid'");
@@ -247,12 +245,18 @@
     $feed_template->set_var('lang_header_all', $LANG33[43]);
     $feed_template->set_var('lang_header_none', $LANG33[44]);
     $feed_template->set_var('lang_header_topic', $LANG33[45]);
-    $feed_template->set_var('header_topic_options', COM_topicList('tid,topic',$A['header_tid']));
-    $feed_template->set_var('lang_save', $LANG33[2]);
-    $feed_template->set_var('lang_cancel', $LANG33[4]);
+    $feed_template->set_var('header_topic_options',
+                        COM_topicList('tid,topic', $A['header_tid'], 1, true));
+    $feed_template->set_var('lang_save', $LANG_ADMIN['save']);
+    $feed_template->set_var('lang_cancel', $LANG_ADMIN['cancel']);
     if ($A['fid'] > 0) {
-        $feed_template->set_var ('delete_option', '<input type="submit" value="'
-                                 . $LANG33[3] . '" name="mode">');
+        $delbutton = '<input type="submit" value="' . $LANG_ADMIN['delete']
+                   . '" name="mode"%s>';
+        $jsconfirm = ' onclick="return confirm(\'' . $MESSAGE[76] . '\');"';
+        $feed_template->set_var ('delete_option',
+                                 sprintf ($delbutton, $jsconfirm));
+        $feed_template->set_var ('delete_option_no_confirmation',
+                                 sprintf ($delbutton, ''));
     }
     $feed_template->set_var ('feed_id', $A['fid']);
     $feed_template->set_var ('feed_title', $A['title']);
@@ -308,6 +312,16 @@
     if ($A['type'] == 'geeklog') {
         $options = get_geeklogFeeds ();
     } else {
+        $result = DB_query("SELECT pi_enabled FROM {$_TABLES['plugins']} WHERE pi_name='{$A['type']}'");
+        if($result)
+        {
+            $P = DB_fetchArray($result);
+            if($P['pi_enabled'] == 0)
+            {
+                echo COM_refresh($_CONF['site_admin_url'].'/syndication.php?msg=80');
+                exit;
+            }
+        }
         $options = PLG_getFeedNames ($A['type']);
     }
     $selection = '<select name="topic">' . LB;
@@ -350,7 +364,7 @@
     if (sizeof ($plugins) == 0) {
         // none of the installed plugins are supporting feeds
         // - go directly to the feed editor
-        $retval = COM_siteHeader ('menu')
+        $retval = COM_siteHeader ('menu', $LANG33[11])
                 . editfeed (0, 'geeklog')
                 . COM_siteFooter ();
     } else {
@@ -407,10 +421,9 @@
     } else {
         $A['is_enabled'] = 0;
     }
-
     if (empty ($A['title']) || empty ($A['description']) ||
             empty ($A['filename'])) {
-        $retval = COM_siteHeader ('menu')
+        $retval = COM_siteHeader ('menu', $LANG33[38])
                 . COM_startBlock ($LANG33[38], '',
                         COM_getBlockTemplate ('_msg_block', 'header'))
                 . $LANG33[39]
@@ -419,8 +432,22 @@
                 . COM_siteFooter ();
         return $retval;
     }
+
+    $result = DB_query("SELECT COUNT(*) AS count FROM {$_TABLES['syndication']} WHERE filename = '{$A['filename']}' AND (fid <> '{$A['fid']}')");
+    $C = DB_fetchArray($result);
+    if ($C['count'] > 0) {
+        $retval = COM_siteHeader ('menu', $LANG33[52])
+                . COM_startBlock ($LANG33[52], '',
+                        COM_getBlockTemplate ('_msg_block', 'header'))
+                . $LANG33[51]
+                . COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'))
+                . editfeed ($A['fid'], $A['type'])
+                . COM_siteFooter ();  
+        return $retval;
+    }
+
     if ($A['limits'] <= 0) {
-        $retval = COM_siteHeader ('menu')
+        $retval = COM_siteHeader ('menu', $LANG33[38])
                 . COM_startBlock ($LANG33[38], '',
                         COM_getBlockTemplate ('_msg_block', 'header'))
                 . $LANG33[40]
@@ -502,29 +529,29 @@
         $display .= newfeed ();
     } else {
         $display .= COM_siteHeader ('menu', $LANG33[24])
-                 . editfeed ($_REQUEST['fid'])
+                 . editfeed (COM_applyFilter($_REQUEST['fid']))
                  . COM_siteFooter ();
     }
 }
 else if (($mode == $LANG33[1]) && !empty ($LANG33[1]))
 {
     $display .= COM_siteHeader ('menu', $LANG33[24])
-             . editfeed (0, $_REQUEST['type'])
+             . editfeed (0, COM_applyFilter($_REQUEST['type']))
              . COM_siteFooter ();
 }
-else if (($mode == $LANG33[2]) && !empty ($LANG33[2]))
+else if (($mode == $LANG_ADMIN['save']) && !empty ($LANG_ADMIN['save']))
 {
     $display .= savefeed ($_POST);
 }
-else if (($mode == $LANG33[3]) && !empty ($LANG33[3]))
+else if (($mode == $LANG_ADMIN['delete']) && !empty ($LANG_ADMIN['delete']))
 {
-    $display .= deletefeed ($_REQUEST['fid']);
+    $display .= deletefeed (COM_applyFilter($_REQUEST['fid']));
 }
 else
 {
     $display .= COM_siteHeader ('menu', $LANG33[10]);
     if (isset ($_REQUEST['msg'])) {
-        $display .= COM_showMessage ($_REQUEST['msg']);
+        $display .= COM_showMessage (COM_applyFilter($_REQUEST['msg']));
     }
     $display .= listfeeds();
     $display .= COM_siteFooter ();
diff -ruN 1.4.0sr5-1.src/admin/topic.php 1.4.1.src/admin/topic.php
--- 1.4.0sr5-1.src/admin/topic.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/topic.php	2006-10-08 11:10:20.000000000 -0500
@@ -32,14 +32,14 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: topic.php,v 1.59 2006/01/28 10:26:44 dhaun Exp $
+// $Id: topic.php,v 1.72 2006/10/08 16:10:20 dhaun Exp $
 
 require_once ('../lib-common.php');
 require_once ('auth.inc.php');
 require_once ($_CONF['path_system'] . 'lib-story.php');
 
 if (!SEC_hasRights('topic.edit')) {
-    $display = COM_siteHeader ('menu');
+    $display = COM_siteHeader ('menu', $MESSAGE[30]);
     $display .= COM_startBlock ($MESSAGE[30], '',
                                 COM_getBlockTemplate ('_msg_block', 'header'));
     $display .= $MESSAGE[32];
@@ -64,7 +64,8 @@
 */ 
 function edittopic ($tid = '')
 {
-    global $_CONF, $_GROUPS, $_TABLES, $_USER, $LANG27, $LANG_ACCESS;
+    global $_CONF, $_GROUPS, $_TABLES, $_USER, $LANG27, $LANG_ACCESS,
+           $LANG_ADMIN, $MESSAGE;
 
     $retval = '';
 
@@ -103,42 +104,30 @@
     $topic_templates->set_var('site_admin_url', $_CONF['site_admin_url']);
     $topic_templates->set_var('layout_url', $_CONF['layout_url']);
     if (!empty($tid) && SEC_hasRights('topic.edit')) {
+        $delbutton = '<input type="submit" value="' . $LANG_ADMIN['delete']
+                   . '" name="mode"%s>';
+        $jsconfirm = ' onclick="return confirm(\'' . $MESSAGE[76] . '\');"';
         $topic_templates->set_var ('delete_option',
-            '<input type="submit" value="' . $LANG27[21] . '" name="mode">');
+                                   sprintf ($delbutton, $jsconfirm));
+        $topic_templates->set_var ('delete_option_no_confirmation',
+                                   sprintf ($delbutton, ''));
     }
     $topic_templates->set_var('lang_topicid', $LANG27[2]);
     $topic_templates->set_var('topic_id', $A['tid']);
     $topic_templates->set_var('lang_donotusespaces', $LANG27[5]);
     $topic_templates->set_var('lang_accessrights',$LANG_ACCESS['accessrights']);
     $topic_templates->set_var('lang_owner', $LANG_ACCESS['owner']);
+    $ownername = COM_getDisplayName ($A['owner_id']);
     $topic_templates->set_var('owner_username', DB_getItem ($_TABLES['users'],
                               'username', "uid = {$A['owner_id']}")); 
+    $topic_templates->set_var('owner_name', $ownername);
+    $topic_templates->set_var('owner', $ownername);
     $topic_templates->set_var('owner_id', $A['owner_id']);
     $topic_templates->set_var('lang_group', $LANG_ACCESS['group']);
-    $topic_templates->set_var('lang_save', $LANG27[19]);
-    $topic_templates->set_var('lang_cancel', $LANG27[20]);
-
-    $usergroups = SEC_getUserGroups();
-
-    if ($access == 3) {
-        $groupdd = '<select name="group_id">';
-        for ($i = 0; $i < count($usergroups); $i++) {
-            $groupdd .= '<option value="' . $usergroups[key($usergroups)] . '"';
-            if ($A['group_id'] == $usergroups[key($usergroups)]) {
-                $groupdd .= ' selected="selected"';
-            }
-            $groupdd .= '>' . key($usergroups) . '</option>';
-            next($usergroups);
-        }
-        $groupdd .= "</select>";
-    } else { 
-        // they can't set the group then
-        $groupdd = DB_getItem ($_TABLES['groups'], 'grp_name',
-                               "grp_id = {$A['group_id']}");
-        $groupdd .= '<input type="hidden" name="group_id" value="' . $A['group_id'] . '">';
-    }
-    $topic_templates->set_var('group_dropdown', $groupdd);
-
+    $topic_templates->set_var('lang_save', $LANG_ADMIN['save']);
+    $topic_templates->set_var('lang_cancel', $LANG_ADMIN['cancel']);
+    $topic_templates->set_var('group_dropdown',
+                              SEC_getGroupDropdown ($A['group_id'], $access));
     $topic_templates->set_var('lang_permissions', $LANG_ACCESS['permissions']);
     $topic_templates->set_var('lang_permissions_key', $LANG_ACCESS['permissionskey']);
     $topic_templates->set_var('permissions_editor', SEC_getPermissionsHTML($A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']));
@@ -165,7 +154,7 @@
     $topic_templates->set_var('lang_topicname', $LANG27[3]);
     $topic_templates->set_var('topic_name', stripslashes ($A['topic']));
     if (empty($A['tid'])) { 
-        $A['imageurl'] = '/images/icons/'; 
+        $A['imageurl'] = '/images/topics/'; 
     }
     $topic_templates->set_var('lang_topicimage', $LANG27[4]);
     $topic_templates->set_var('lang_uploadimage', $LANG27[27]);
@@ -191,7 +180,7 @@
     } else {
         $topic_templates->set_var ('archive_checked', '');
         // Only 1 topic can be the archive topic - so check if there already is one
-        if (DB_count($_TABLES['topics'],'archive_flag', '1') > 0) {
+        if (DB_count($_TABLES['topics'], 'archive_flag', '1') > 0) {
             $topic_templates->set_var ('archive_disabled', 'disabled');
         }
     }
@@ -217,6 +206,7 @@
 * @param    int     $perm_member    Permissions members have
 * @param    int     $perm_anon      Permissions anonymous users have
 * @param    string  $is_default     'on' if this is the default topic
+* @param    string  $is_archive     'on' if this is the archive topic
 * @return   string                  HTML redirect or error message
 */
 function savetopic($tid,$topic,$imageurl,$sortnum,$limitnews,$owner_id,$group_id,$perm_owner,$perm_group,$perm_members,$perm_anon,$is_default,$is_archive)
@@ -242,10 +232,10 @@
                 $perm_members, $perm_anon);
     }
     if (($access < 3) || !SEC_inGroup ($group_id)) {
-        $retval .= COM_siteHeader ('menu');
+        $retval .= COM_siteHeader ('menu', $MESSAGE[30]);
         $retval .= COM_startBlock ($MESSAGE[30], '',
                             COM_getBlockTemplate ('_msg_block', 'header'));
-        $retval .= $MESSAGE[31];
+        $retval .= $MESSAGE[32];
         $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
         $retval .= COM_siteFooter ();
         COM_accessLog("User {$_USER['username']} tried to illegally create or edit topic $tid.");
@@ -262,11 +252,23 @@
             $is_default = 0;
         }
 
-        if ($is_archive == 'on') {
-            $is_archive = 1;
-            DB_query ("UPDATE {$_TABLES['topics']} SET archive_flag = 0 WHERE archive_flag = 1");
+        $is_archive = ($is_archive == 'on') ? 1 : 0;
+
+        $archivetid = DB_getItem ($_TABLES['topics'], 'tid', "archive_flag=1");
+        if ($is_archive) {
+            // $tid is the archive topic
+            // - if it wasn't already, mark all its stories "archived" now
+            if ($archivetid != $tid) {
+                DB_query ("UPDATE {$_TABLES['stories']} SET featured = 0, frontpage = 0, statuscode = " . STORY_ARCHIVE_ON_EXPIRE . " WHERE tid = '$tid'");
+                DB_query ("UPDATE {$_TABLES['topics']} SET archive_flag = 0 WHERE archive_flag = 1");
+            }
         } else {
-            $is_archive = 0;
+            // $tid is not the archive topic
+            // - if it was until now, reset the "archived" status of its stories
+            if ($archivetid == $tid) {
+                DB_query ("UPDATE {$_TABLES['stories']} SET statuscode = 0 WHERE tid = '$tid'");
+                DB_query ("UPDATE {$_TABLES['topics']} SET archive_flag = 0 WHERE archive_flag = 1");
+            }
         }
 
         DB_save($_TABLES['topics'],'tid, topic, imageurl, sortnum, limitnews, is_default, archive_flag, owner_id, group_id, perm_owner, perm_group, perm_members, perm_anon',"'$tid', '$topic', '$imageurl','$sortnum','$limitnews',$is_default,'$is_archive',$owner_id,$group_id,$perm_owner,$perm_group,$perm_members,$perm_anon");
@@ -277,8 +279,8 @@
 
         $retval = COM_refresh ($_CONF['site_admin_url'] . '/topic.php?msg=13');
     } else {
-        $retval .= COM_siteHeader('menu');
-        $retval .= COM_errorLog($LANG27[7],2);
+        $retval .= COM_siteHeader('menu', $LANG27[1]);
+        $retval .= COM_errorLog($LANG27[7], 2);
         $retval .= edittopic($tid);
         $retval .= COM_siteFooter();
     }
@@ -344,7 +346,7 @@
             } else {
                 $imageurl = COM_getTopicImageUrl ($A['imageurl']);
                 $topic_templates->set_var ('image_tag', '<img src="' . $imageurl
-                                           . '" border="0" alt=""><br>');
+                                           . '" border="0" alt="">');
             }
             if ($counter == 5) {
                 $counter = 1;
@@ -393,13 +395,14 @@
     // same with feeds
     DB_query ("UPDATE {$_TABLES['syndication']} SET topic = '::all', is_enabled = 0 WHERE topic = '$tid'");
 
-    // delete comments and images associated with stories in this topic
+    // delete comments, trackbacks, images associated with stories in this topic
     $result = DB_query ("SELECT sid FROM {$_TABLES['stories']} WHERE tid = '$tid'");
     $numStories = DB_numRows ($result);
     for ($i = 0; $i < $numStories; $i++) {
         $A = DB_fetchArray ($result);
         STORY_deleteImages ($A['sid']);
         DB_query("DELETE FROM {$_TABLES['comments']} WHERE sid = '{$A['sid']}' AND type = 'article'");
+        DB_query("DELETE FROM {$_TABLES['trackback']} WHERE sid = '{$A['sid']}' AND type = 'article'");
     }
 
     // delete these
@@ -407,6 +410,10 @@
     DB_delete ($_TABLES['storysubmission'], 'tid', $tid);
     DB_delete ($_TABLES['topics'], 'tid', $tid);
 
+    // update feed(s) and Older Stories block
+    COM_rdfUpToDateCheck ('geeklog');
+    COM_olderStuff ();
+
     return COM_refresh ($_CONF['site_admin_url'] . '/topic.php?msg=14');
 }
 
@@ -449,7 +456,7 @@
                                          'image/png'   => '.png'
                                  )      );
     if (!$upload->setPath ($_CONF['path_images'] . 'topics')) {
-        $display = COM_siteHeader ('menu');
+        $display = COM_siteHeader ('menu', $LANG27[29]);
         $display .= COM_startBlock ($LANG27[29], '',
                 COM_getBlockTemplate ('_msg_block', 'header'));
         $display .= $upload->printErrors (false);
@@ -490,7 +497,7 @@
         $upload->uploadFiles ();
 
         if ($upload->areErrors ()) {
-            $display = COM_siteHeader ('menu');
+            $display = COM_siteHeader ('menu', $LANG27[29]);
             $display .= COM_startBlock ($LANG27[29], '',
                     COM_getBlockTemplate ('_msg_block', 'header'));
             $display .= $upload->printErrors (false);
@@ -515,7 +522,7 @@
     $mode = $_REQUEST['mode'];
 }
 
-if (($mode == $LANG27[21]) && !empty ($LANG27[21])) { // delete
+if (($mode == $LANG_ADMIN['delete']) && !empty ($LANG_ADMIN['delete'])) {
     $tid = COM_applyFilter ($_POST['tid']);
     if (!isset ($tid) || empty ($tid)) {
         COM_errorLog ('Attempted to delete topic tid=' . $tid);
@@ -523,7 +530,7 @@
     } else {
         $display .= deleteTopic ($tid);
     }
-} else if (($mode == $LANG27[19]) && !empty ($LANG27[19])) { // save
+} else if (($mode == $LANG_ADMIN['save']) && !empty ($LANG_ADMIN['save'])) {
     if (empty ($_FILES['newicon']['name'])){
         $imageurl = COM_applyFilter ($_POST['imageurl']);
     } else {
diff -ruN 1.4.0sr5-1.src/admin/trackback.php 1.4.1.src/admin/trackback.php
--- 1.4.0sr5-1.src/admin/trackback.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/trackback.php	2006-08-19 08:59:28.000000000 -0500
@@ -8,7 +8,7 @@
 // |                                                                           |
 // | Admin functions handle Trackback, Pingback, and Ping                      |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2005 by the following authors:                              |
+// | Copyright (C) 2005-2006 by the following authors:                         |
 // |                                                                           |
 // | Author: Dirk Haun - dirk AT haun-online DOT de                            |
 // +---------------------------------------------------------------------------+
@@ -29,7 +29,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: trackback.php,v 1.31 2005/12/22 14:39:46 ospiess Exp $
+// $Id: trackback.php,v 1.43 2006/08/19 13:59:28 dhaun Exp $
 
 require_once ('../lib-common.php');
 
@@ -47,10 +47,10 @@
 $display = '';
 
 if (!SEC_hasRights ('story.ping')) {
-    $display .= COM_siteHeader ('menu');
+    $display .= COM_siteHeader ('menu', $MESSAGE[30]);
     $display .= COM_startBlock ($MESSAGE[30], '',
                                 COM_getBlockTemplate ('_msg_block', 'header')); 
-    $display .= $MESSAGE[31];
+    $display .= $MESSAGE[34];
     $display .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
     $display .= COM_siteFooter ();
     COM_accessLog("User {$_USER['username']} tried to illegally access the trackback administration screen.");
@@ -87,8 +87,8 @@
         $p_blog = TRB_filterBlogname ($blog);
 
         // MT and other weblogs will shorten the excerpt like this
-        if (strlen ($p_excerpt) > 255) {
-            $p_excerpt = substr ($p_excerpt, 0, 252) . '...';
+        if (MBYTE_strlen ($p_excerpt) > 255) {
+            $p_excerpt = MBYTE_substr ($p_excerpt, 0, 252) . '...';
         }
 
         $retval .= COM_startBlock ($LANG_TRB['preview']);
@@ -497,13 +497,13 @@
                       'form_url' => $_CONF['site_admin_url'] . "/trackback.php",
                       'help_url' => $_CONF['site_url'] . '/docs/trackback.html#ping');
 
-    $query_arr = array('table' => 'trackback',
-                       'sql' => "SELECT * FROM {$_TABLES['pingservice']} WHERE 1",
+    $query_arr = array('table' => 'pingservice',
+                       'sql' => "SELECT * FROM {$_TABLES['pingservice']} WHERE 1=1",
                        'query_fields' => array('name', 'ping_url'),
                        'default_filter' => "",
                        'no_data' => $LANG_TRB['no_services']);
 
-    $retval .= ADMIN_list ("groups", "ADMIN_getListField_trackback", $header_arr, $text_arr,
+    $retval .= ADMIN_list ("pingservice", "ADMIN_getListField_trackback", $header_arr, $text_arr,
                             $query_arr, $menu_arr, $defsort_arr);
 
 
@@ -531,7 +531,7 @@
 */
 function editServiceForm ($pid, $msg = '', $new_name = '', $new_site_url = '', $new_ping_url = '', $new_method = '', $new_enabled = -1)
 {
-    global $_CONF, $_TABLES, $LANG_TRB, $LANG_ADMIN;
+    global $_CONF, $_TABLES, $LANG_TRB, $LANG_ADMIN, $MESSAGE;
 
     $retval = '';
 
@@ -589,16 +589,37 @@
     $template->set_var ('lang_cancel', $LANG_ADMIN['cancel']);
 
     if ($pid > 0) {
-        $template->set_var ('delete_option', '<input type="submit" value="'
-                . $LANG_ADMIN['delete'] . '" name="servicemode[2]">');
+        $delbutton = '<input type="submit" value="' . $LANG_ADMIN['delete']
+                   . '" name="servicemode[2]"%s>';
+        $jsconfirm = ' onclick="return confirm(\'' . $MESSAGE[76] . '\');"';
+        $template->set_var ('delete_option',
+                            sprintf ($delbutton, $jsconfirm));
+        $template->set_var ('delete_option_no_confirmation',
+                            sprintf ($delbutton, ''));
     } else {
         $template->set_var ('delete_option', '');
     }
 
-    $template->set_var ('service_id', $A['pid']);
-    $template->set_var ('service_name', $A['name']);
-    $template->set_var ('service_site_url', $A['site_url']);
-    $template->set_var ('service_ping_url', $A['ping_url']);
+    if (isset ($A['pid'])) {
+        $template->set_var ('service_id', $A['pid']);
+    } else {
+        $template->set_var ('service_id', '');
+    }
+    if (isset ($A['name'])) {
+        $template->set_var ('service_name', $A['name']);
+    } else {
+        $template->set_var ('service_name', '');
+    }
+    if (isset ($A['site_url'])) {
+        $template->set_var ('service_site_url', $A['site_url']);
+    } else {
+        $template->set_var ('service_site_url', '');
+    }
+    if (isset ($A['ping_url'])) {
+        $template->set_var ('service_ping_url', $A['ping_url']);
+    } else {
+        $template->set_var ('service_ping_url', '');
+    }
     if ($A['is_enabled'] == 1) {
         $template->set_var ('is_enabled', 'checked="checked"');
     } else {
@@ -835,12 +856,12 @@
     $blog = COM_stripslashes ($_POST['blog_name']);
 
     if (empty ($target)) {
-        $display .= COM_siteHeader ('menu');
+        $display .= COM_siteHeader ('menu', $LANG_TRB['trackback']);
         $display .= showTrackbackMessage ($LANG_TRB['target_missing'],
                                           $LANG_TRB['target_required']);
         $display .= trackback_editor ($target, $url, $title, $excerpt, $blog);
     } else if (empty ($url)) {
-        $display .= COM_siteHeader ('menu');
+        $display .= COM_siteHeader ('menu', $LANG_TRB['trackback']);
         $display .= showTrackbackMessage ($LANG_TRB['url_missing'],
                                           $LANG_TRB['url_required']);
         $display .= trackback_editor ($target, $url, $title, $excerpt, $blog);
@@ -853,7 +874,7 @@
         $result = TRB_sendTrackbackPing ($target, $url, $send_title,
                                          $send_excerpt, $send_blog);
 
-        $display .= COM_siteHeader ('menu');
+        $display .= COM_siteHeader ('menu', $LANG_TRB['trackback']);
         if ($result === true) {
             $display .= COM_showMessage (64);
             $display .= trackback_editor ();
@@ -880,7 +901,7 @@
         $excerpt = trim (strip_tags ($excerpt));
         $blog = TRB_filterBlogname ($_CONF['site_name']);
 
-        $display .= COM_siteHeader ('menu')
+        $display .= COM_siteHeader ('menu', $LANG_TRB['trackback'])
                  . trackback_editor ($target, $url, $title, $excerpt, $blog)
                  . COM_siteFooter ();
     } else {
@@ -907,7 +928,10 @@
         echo COM_refresh ($_CONF['site_admin_url'] . '/index.php');
         exit;
     }
-    $type = COM_applyFilter ($_REQUEST['type']);
+    $type = '';
+    if (isset ($_REQUEST['type'])) {
+        $type = COM_applyFilter ($_REQUEST['type']);
+    }
     if (empty ($type)) {
         $type = 'article';
     }
@@ -1017,7 +1041,10 @@
         echo COM_refresh ($_CONF['site_admin_url'] . '/index.php');
         exit;
     }
-    $type = COM_applyFilter ($_REQUEST['type']);
+    $type = '';
+    if (isset ($_REQUEST['type'])) {
+        $type = COM_applyFilter ($_REQUEST['type']);
+    }
     if (empty ($type)) {
         $type = 'article';
     }
@@ -1037,7 +1064,10 @@
         echo COM_refresh ($_CONF['site_admin_url'] . '/index.php');
         exit;
     }
-    $type = COM_applyFilter ($_REQUEST['type']);
+    $type = '';
+    if (isset ($_REQUEST['type'])) {
+        $type = COM_applyFilter ($_REQUEST['type']);
+    }
     if (empty ($type)) {
         $type = 'article';
     }
@@ -1066,11 +1096,26 @@
         }
     }
 
-    $target = COM_applyFilter ($_REQUEST['target']);
-    $url = COM_applyFilter ($_REQUEST['url']);
-    $title = COM_stripslashes ($_REQUEST['title']);
-    $excerpt = COM_stripslashes ($_REQUEST['excerpt']);
-    $blog = COM_stripslashes ($_REQUEST['blog_name']);
+    $target = '';
+    if (isset ($_REQUEST['target'])) {
+        $target = COM_applyFilter ($_REQUEST['target']);
+    }
+    $url = '';
+    if (isset ($_REQUEST['url'])) {
+        $url = COM_applyFilter ($_REQUEST['url']);
+    }
+    $title = '';
+    if (isset ($_REQUEST['title'])) {
+        $title = COM_stripslashes ($_REQUEST['title']);
+    }
+    $excerpt = '';
+    if (isset ($_REQUEST['excerpt'])) {
+        $excerpt = COM_stripslashes ($_REQUEST['excerpt']);
+    }
+    $blog = '';
+    if (isset ($_REQUEST['blog_name'])) {
+        $blog = COM_stripslashes ($_REQUEST['blog_name']);
+    }
 
     if (isset ($_REQUEST['id']) && isset ($_REQUEST['type'])) {
         $id = COM_applyFilter ($_REQUEST['id']);
@@ -1120,7 +1165,11 @@
                              $_POST['is_enabled']);
 
 } else if ($mode == 'editservice') {
-    $pid = COM_applyFilter ($_GET['service_id'], true);
+    $service_id = 0;
+    if (isset ($_GET['service_id'])) {
+        $service_id = COM_applyFilter ($_GET['service_id'], true);
+    }
+    $pid = COM_applyFilter ($service_id, true);
 
     $display .= editServiceForm ($pid);
 } else if ($mode == 'listservice') {
diff -ruN 1.4.0sr5-1.src/admin/user.php 1.4.1.src/admin/user.php
--- 1.4.0sr5-1.src/admin/user.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/admin/user.php	2006-12-28 07:40:36.000000000 -0600
@@ -32,7 +32,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: user.php,v 1.139.2.1 2006/06/30 12:03:48 dhaun Exp $
+// $Id: user.php,v 1.180 2006/12/28 09:27:54 dhaun Exp $
 
 // Set this to true to get various debug messages from this script
 $_USER_VERBOSE = false;
@@ -45,7 +45,7 @@
 
 // Make sure user has access to this page
 if (!SEC_hasRights('user.edit')) {
-    $retval .= COM_siteHeader ('menu');
+    $retval .= COM_siteHeader ('menu', $MESSAGE[30]);
     $retval .= COM_startBlock ($MESSAGE[30], '',
                COM_getBlockTemplate ('_msg_block', 'header'));
     $retval .= $MESSAGE[37];
@@ -57,6 +57,70 @@
 }
 
 /**
+* Display a list of checkboxes for the user's group assignments
+*
+* @param    string  $table      DB Table to pull data from
+* @param    string  $selection  Comma delimited list of fields to pull from table
+* @param    string  $where      Where clause of SQL statement
+* @param    string  $selected   Value to set to CHECKED
+* @return   string              HTML with Checkbox code
+* @see function COM_checkList
+*
+*/
+function GROUP_checkList ($table, $selection, $where='', $selected='')
+{
+    global $_TABLES, $LANG_ACCESS;
+
+    $retval = '';
+
+    $sql = "SELECT $selection FROM $table";
+    if (!empty ($where)) {
+        $sql .= " WHERE $where";
+    }
+    $result = DB_query ($sql);
+    $nrows = DB_numRows ($result);
+
+    if (empty ($selected)) {
+        $S = array ();
+    } else {
+        $S = explode (' ', $selected);
+    }
+
+    for ($i = 0; $i < $nrows; $i++) {
+        $A = DB_fetchArray ($result, true);
+
+        $readonly = false;
+        $input = '<input type="checkbox"';
+
+        for ($x = 0; $x < count ($S); $x++) {
+            if ($A[0] == $S[$x]) {
+                $input .= ' checked="checked"';
+
+                if (($A[1] == 'All Users') || ($A[1] == 'Logged-in Users')) {
+                    $readonly = true;
+                }
+            }
+        }
+        if ($A[1] == 'Remote Users') {
+            $readonly = true;
+        }
+
+        if ($readonly) {
+            $input .= ' disabled="disabled">'
+                   . '<input type="hidden" name="' . $table . '[]" value="'
+                   . $A[0] . '" checked="checked">';
+            $retval .= '<span title="' . $LANG_ACCESS['readonly'] . '">'
+                    . $input . stripslashes ($A[1]) . '</span><br>' . LB;
+        } else {
+            $input .= ' name="' . $table . '[]" value="' . $A[0] . '"';
+            $retval .= $input . '>' . stripslashes ($A[1]) . '<br>' . LB;
+        }
+    }
+
+    return $retval;
+}
+
+/**
 * Shows the user edit form
 *
 * @param    int     $uid    User to edit
@@ -66,7 +130,8 @@
 */
 function edituser($uid = '', $msg = '')
 {
-    global $_CONF, $_TABLES, $_USER, $LANG28, $LANG_ACCESS, $MESSAGE, $LANG_ADMIN;
+    global $_CONF, $_TABLES, $_USER, $LANG28, $LANG_ACCESS, $LANG_ADMIN,
+           $MESSAGE;
 
     $retval = '';
 
@@ -126,7 +191,13 @@
     $user_templates->set_var('layout_url', $_CONF['layout_url']);
     $user_templates->set_var('lang_save', $LANG_ADMIN['save']);
     if (!empty($uid) && ($A['uid'] != $_USER['uid']) && SEC_hasRights('user.delete')) {
-        $user_templates->set_var('delete_option', '<input type="submit" value="' . $LANG_ADMIN['delete'] . '" name="mode">');
+        $delbutton = '<input type="submit" value="' . $LANG_ADMIN['delete']
+                   . '" name="mode"%s>';
+        $jsconfirm = ' onclick="return confirm(\'' . $MESSAGE[76] . '\');"';
+        $user_templates->set_var ('delete_option',
+                                  sprintf ($delbutton, $jsconfirm));
+        $user_templates->set_var ('delete_option_no_confirmation',
+                                  sprintf ($delbutton, ''));
     }
     $user_templates->set_var('lang_cancel', $LANG_ADMIN['cancel']);
 
@@ -146,7 +217,11 @@
         $user_templates->set_var('user_lastlogin', $lasttime[0]);
     }
     $user_templates->set_var('lang_username', $LANG28[3]);
-    $user_templates->set_var('username', $A['username']);
+    if (isset ($A['username'])) {
+        $user_templates->set_var('username', $A['username']);
+    } else {
+        $user_templates->set_var('username', '');
+    }
 
     if ($_CONF['allow_user_photo'] && ($A['uid'] > 0)) {
         $photo = USER_getPhoto ($A['uid'], $A['photo'], $A['email'], -1);
@@ -166,43 +241,73 @@
     }
 
     $user_templates->set_var('lang_fullname', $LANG28[4]);
-    $user_templates->set_var('user_fullname', htmlspecialchars($A['fullname']));
+    if (isset ($A['fullname'])) {
+        $user_templates->set_var ('user_fullname',
+                                  htmlspecialchars ($A['fullname']));
+    } else {
+        $user_templates->set_var ('user_fullname', '');
+    }
     $user_templates->set_var('lang_password', $LANG28[5]);
     $user_templates->set_var('lang_password_conf', $LANG28[39]);
     $user_templates->set_var('lang_emailaddress', $LANG28[7]);
-    $user_templates->set_var('user_email', htmlspecialchars($A['email']));
+    if (isset ($A['email'])) {
+        $user_templates->set_var('user_email', htmlspecialchars($A['email']));
+    } else {
+        $user_templates->set_var('user_email', '');
+    }
     $user_templates->set_var('lang_homepage', $LANG28[8]);
-    $user_templates->set_var('user_homepage', htmlspecialchars($A['homepage']));
-    $user_templates->set_var('do_not_use_spaces', $LANG28[9]);
+    if (isset ($A['homepage'])) {
+        $user_templates->set_var ('user_homepage',
+                                  htmlspecialchars ($A['homepage']));
+    } else {
+        $user_templates->set_var ('user_homepage', '');
+    }
+    $user_templates->set_var('do_not_use_spaces', '');
 
-    $statusarray = array(USER_ACCOUNT_DISABLED => $LANG28[42],
-                        USER_ACCOUNT_AWAITING_ACTIVATION => $LANG28[43],
-                        USER_ACCOUNT_ACTIVE => $LANG28[45] );
-    if ($_CONF['usersubmission'] == 1)
-    {
+    $statusarray = array (USER_ACCOUNT_AWAITING_ACTIVATION => $LANG28[43],
+                          USER_ACCOUNT_ACTIVE              => $LANG28[45]
+                   );
+
+    $allow_ban = true;
+
+    if ($A['uid'] == $_USER['uid']) {
+        $allow_ban = false; // do not allow to ban yourself
+    } else if (SEC_inGroup('Root',$A['uid'])) { // is this user a root user?
+        $count_root_sql = "SELECT COUNT(ug_uid) AS root_count FROM {$_TABLES['group_assignments']} "
+                    . "WHERE ug_main_grp_id = 1 GROUP BY ug_uid;";
+        $count_root_result = DB_query($count_root_sql);
+        $C = DB_fetchArray($count_root_result); // how many are left?
+        if ($C['root_count'] < 2) {
+            $allow_ban = false; // prevent banning the last root user
+        }
+    }
+
+    if ($allow_ban) {
+        $statusarray[USER_ACCOUNT_DISABLED] = $LANG28[42];
+    }
+
+    if ($_CONF['usersubmission'] == 1) {
         $statusarray[USER_ACCOUNT_AWAITING_APPROVAL] = $LANG28[44];
-        asort($statusarray);
     }
+    asort($statusarray);
     $statusselect = '<select name="userstatus">';
-    while (list($key, $value) = each($statusarray))
-    {
-        if ($key == $A['status'])
-        {
-            $statusselect .= "<option selected=\"true\" value=\"$key\">$value</option>\n";
-        } else {
-            $statusselect .= "<option value=\"$key\">$value</option>\n";
+    foreach ($statusarray as $key => $value) {
+        $statusselect .= '<option value="' . $key . '"';
+        if ($key == $A['status']) {
+            $statusselect .= ' selected="selected"';
         }
+        $statusselect .= '>' . $value . '</option>' . LB;
     }
-    $statusselect .= '</select><input type="hidden" name="oldstatus" value="'.
-                        $A['status'].'"/>';
+    $statusselect .= '</select><input type="hidden" name="oldstatus" value="'
+                  . $A['status'] . '">';
     $user_templates->set_var('user_status', $statusselect);
     $user_templates->set_var('lang_user_status', $LANG28[46]);
 
-    if ($_CONF['custom_registration'] AND (function_exists('custom_useredit'))) {
+    if ($_CONF['custom_registration'] AND (function_exists('CUSTOM_userEdit'))) {
         if (!empty ($uid) && ($uid > 1)) {
-            $user_templates->set_var('customfields', custom_useredit($uid) );
+            $user_templates->set_var('customfields', CUSTOM_userEdit($uid) );
         } else {
-            $user_templates->set_var('customfields', custom_useredit($A['uid']) );
+            $user_templates->set_var('customfields', CUSTOM_userEdit($A['uid']) );
         }
     }
 
@@ -223,14 +328,14 @@
         }
         $thisUsersGroups = SEC_getUserGroups ();
         $remoteGroup = DB_getItem ($_TABLES['groups'], 'grp_id',
-                                   "grp_name='Remote users'");
+                                   "grp_name='Remote Users'");
         if (!empty ($remoteGroup)) {
             $thisUsersGroups[] = $remoteGroup;
         }
         $where = 'grp_id IN (' . implode (',', $thisUsersGroups) . ')';
         $user_templates->set_var ('group_options',
-                COM_checkList ($_TABLES['groups'], 'grp_id,grp_name',
-                               $where, $selected));
+                GROUP_checkList ($_TABLES['groups'], 'grp_id,grp_name',
+                                 $where, $selected));
         $user_templates->parse('group_edit', 'groupedit', true);
     } else {
         // user doesn't have the rights to edit a user's groups so set to -1
@@ -245,36 +350,42 @@
     return $retval;
 }
 
-function listusers() {
-    global $LANG_ADMIN, $_TABLES, $_CONF, $LANG28, $_IMAGE_TYPE;
+function listusers()
+{
+    global $_CONF, $_TABLES, $LANG_ADMIN, $LANG28, $_IMAGE_TYPE;
+
     require_once( $_CONF['path_system'] . 'lib-admin.php' );
+
     $display = '';
 
-    if ($_CONF['lastlogin']==true) {
+    if ($_CONF['lastlogin']) {
         $login_text = $LANG28[41];
         $login_field = 'lastlogin';
     } else {
         $login_text = $LANG28[40];
         $login_field = 'regdate';
     }
-    
+
     $header_arr = array(      # dislay 'text' and use table field 'field'
                     array('text' => $LANG_ADMIN['edit'], 'field' => 'edit', 'sort' => false),
-                    array('text' => $LANG28[37], 'field' => 'uid', 'sort' => true),
+                    array('text' => $LANG28[37], 'field' => $_TABLES['users'] . '.uid', 'sort' => true),
                     array('text' => $LANG28[3], 'field' => 'username', 'sort' => true),
                     array('text' => $LANG28[4], 'field' => 'fullname', 'sort' => true),
-                    array('text' => $login_text, 'field' => $login_field, 'sort' => true),
-                    array('text' => $LANG28[7], 'field' => 'email', 'sort' => true)
+                    array('text' => $login_text, 'field' => $login_field, 'sort' => true)
     );
 
-    $defsort_arr = array('field' => 'uid',
-                         'direction' => 'asc');
+    $header_arr[] = array('text' => $LANG28[7], 'field' => 'email', 'sort' => true);
+
+    $defsort_arr = array('field'     => $_TABLES['users'] . '.uid',
+                         'direction' => 'ASC');
 
     $menu_arr = array (
                     array('url' => $_CONF['site_admin_url'] . '/user.php?mode=edit',
                           'text' => $LANG_ADMIN['create_new']),
                     array('url' => $_CONF['site_admin_url'] . '/user.php?mode=importform',
                           'text' => $LANG28[23]),
+                    array('url' => $_CONF['site_admin_url'] . '/user.php?mode=batchdelete',
+                          'text' => $LANG28[54]),
                     array('url' => $_CONF['site_admin_url'],
                           'text' => $LANG_ADMIN['admin_home'])
     );
@@ -290,9 +401,10 @@
 
     if ($_CONF['lastlogin']) {
         $join_userinfo="LEFT JOIN {$_TABLES['userinfo']} ON {$_TABLES['users']}.uid={$_TABLES['userinfo']}.uid ";
-        $select_userinfo=",lastlogin ";
+        $select_userinfo=",lastlogin";
     }
-    $sql = "SELECT {$_TABLES['users']}.uid,username,fullname,email,photo,regdate$select_userinfo FROM {$_TABLES['users']} $join_userinfo WHERE 1";
+    $sql = "SELECT {$_TABLES['users']}.uid,username,fullname,email,photo,status,regdate$select_userinfo "
+         . "FROM {$_TABLES['users']} $join_userinfo WHERE 1=1";
 
     $query_arr = array('table' => 'users',
                        'sql' => $sql,
@@ -328,7 +440,7 @@
     if ($_USER_VERBOSE) COM_errorLog("**** entering saveusers****",1);
     if ($_USER_VERBOSE) COM_errorLog("group size at beginning = " . sizeof($groups),1);
 
-    if ($passwd!=$passwd_conf) { // passwords dont match
+    if ($passwd != $passwd_conf) { // passwords don't match
         return edituser ($uid, 67);
     }
 
@@ -360,10 +472,10 @@
 
         $emailaddr = addslashes ($email);
         if (empty ($uid)) {
-            $ucount = DB_getItem ($_TABLES['users'], 'count(*)',
+            $ucount = DB_getItem ($_TABLES['users'], 'COUNT(*)',
                                   "email = '$emailaddr'");
         } else {
-            $ucount = DB_getItem ($_TABLES['users'], 'count(*)',
+            $ucount = DB_getItem ($_TABLES['users'], 'COUNT(*)',
                                   "email = '$emailaddr' AND uid <> $uid");
         }
         if ($ucount > 0) {
@@ -389,15 +501,16 @@
 
             $uid = USER_createAccount ($username, $email, $passwd, $fullname,
                                        $homepage);
+            if (($uid > 1) && ($_CONF['usersubmission'] == 1)) {
+                // we don't want to queue new users created by a User Admin
+                DB_query ("UPDATE {$_TABLES['users']} SET status = " . USER_ACCOUNT_AWAITING_ACTIVATION . " WHERE uid = $uid");
+            }
         } else {
             $fullname = addslashes ($fullname);
             $homepage = addslashes ($homepage);
             $curphoto = DB_getItem($_TABLES['users'],'photo',"uid = $uid");
-            if (!empty($curphoto) AND $delete_photo == 'on') {
-                if (!unlink($_CONF['path_html'] . 'images/userphotos/' . $curphoto)) {
-                    echo COM_errorLog('Unable to delete photo ' . $curphoto);
-                    exit;
-                }
+            if (!empty ($curphoto) && ($delete_photo == 'on')) {
+                USER_deletePhoto ($curphoto);
                 $curphoto = '';
             }
 
@@ -411,7 +524,7 @@
                     $imgpath = $_CONF['path_images'] . 'userphotos/';
                     if (rename ($imgpath . $curphoto,
                                 $imgpath . $newphoto) === false) {
-                        $display = COM_siteHeader ('menu');
+                        $display = COM_siteHeader ('menu', $LANG28[22]);
                         $display .= COM_errorLog ('Could not rename userphoto "'
                                         . $curphoto . '" to "' . $newphoto . '".');
                         $display .= COM_siteFooter ();
@@ -423,12 +536,11 @@
 
             $curphoto = addslashes ($curphoto);
             DB_query("UPDATE {$_TABLES['users']} SET username = '$username', fullname = '$fullname', passwd = '$passwd', email = '$email', homepage = '$homepage', photo = '$curphoto', status='$userstatus' WHERE uid = $uid");
-            if ($_CONF['custom_registration'] AND (function_exists('custom_usersave'))) {
-                custom_usersave($uid);
+            if ($_CONF['custom_registration'] AND (function_exists('CUSTOM_userSave'))) {
+                CUSTOM_userSave($uid);
             }
             if( ($_CONF['usersubmission'] == 1) && ($oldstatus == USER_ACCOUNT_AWAITING_APPROVAL)
-                   && ($userstatus == USER_ACCOUNT_ACTIVE) )
-            {
+                   && ($userstatus == USER_ACCOUNT_ACTIVE) ) {
                 //USER_sendActivationEmail($username, $email);
                 USER_createAndSendPassword ($username, $email, $uid);
             }
@@ -446,33 +558,59 @@
                     exit;
                 }
             }
-            if ($_USER_VERBOSE) COM_errorLog("deleting all group_assignments for user $uid/$username",1);
+
+            // make sure the Remote Users group is in $groups
+            if (SEC_inGroup ('Remote Users', $uid)) {
+                $remUsers = DB_getItem ($_TABLES['groups'], 'grp_id',
+                                        "grp_name = 'Remote Users'");
+                if (!in_array ($remUsers, $groups)) {
+                    $groups[] = $remUsers;
+                }
+            }
+
+            if ($_USER_VERBOSE) {
+                COM_errorLog("deleting all group_assignments for user $uid/$username",1);
+            }
+
             // remove user from all groups that the User Admin is a member of
             $UserAdminGroups = SEC_getUserGroups ();
             $whereGroup = 'ug_main_grp_id IN ('
                         . implode (',', $UserAdminGroups) . ')';
             DB_query("DELETE FROM {$_TABLES['group_assignments']} WHERE (ug_uid = $uid) AND " . $whereGroup);
-            if (!empty($groups)) {
-                for ($i = 1; $i <= sizeof($groups); $i++) {
-                    if (in_array (current ($groups), $UserAdminGroups)) {
-                        if ($_USER_VERBOSE) COM_errorLog("adding group_assignment " . current($groups) . " for $username",1);
-                        $sql = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid) VALUES (" . current($groups) . ",$uid)";
-                        DB_query($sql);
+
+            // make sure to add user to All Users and Logged-in Users groups
+            $allUsers = DB_getItem ($_TABLES['groups'], 'grp_id',
+                                    "grp_name = 'All Users'");
+            if (!in_array ($allUsers, $groups)) {
+                $groups[] = $allUsers;
+            }
+            $logUsers = DB_getItem ($_TABLES['groups'], 'grp_id',
+                                    "grp_name = 'Logged-in Users'");
+            if (!in_array ($logUsers, $groups)) {
+                $groups[] = $logUsers;
+            }
+
+            foreach ($groups as $userGroup) {
+                if (in_array ($userGroup, $UserAdminGroups)) {
+                    if ($_USER_VERBOSE) {
+                        COM_errorLog ("adding group_assignment " . $userGroup
+                                      . " for $username", 1);
                     }
-                    next($groups);
+                    $sql = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid) VALUES ($userGroup, $uid)";
+                    DB_query ($sql);
                 }
             }
         }
 
-        if ($userChanged)
-        {
+        if ($userChanged) {
             PLG_userInfoChanged ($uid);
         }
+
         $errors = DB_error();
         if (empty($errors)) {
             echo COM_refresh($_CONF['site_admin_url'] . '/user.php?msg=21');
         } else {
-            $retval .= COM_siteHeader ('menu');
+            $retval .= COM_siteHeader ('menu', $LANG28[22]);
             $retval .= COM_errorLog ('Error in saveusers in '
                                      . $_CONF['site_admin_url'] . '/user.php');
             $retval .= COM_siteFooter ();
@@ -480,7 +618,7 @@
             exit;
         }
     } else {
-        $retval = COM_siteHeader('menu');
+        $retval = COM_siteHeader('menu', $LANG28[1]);
         $retval .= COM_errorLog($LANG28[10]);
         if (DB_count($_TABLES['users'],'uid',$uid) > 0) {
             $retval .= edituser($uid);
@@ -498,6 +636,204 @@
 }
 
 /**
+* This function allows the batch deletion of users that are inactive
+* It shows the form that will filter user that will be deleted
+*
+* @return   string          HTML Form
+*/
+function batchdelete()
+{
+    global $_CONF, $_TABLES, $LANG_ADMIN, $LANG01, $LANG28, $_IMAGE_TYPE;
+
+    $display = '';
+    if (!$_CONF['lastlogin']) {
+        $retval = '<br>'. $_LANG28[55];
+        return $retval;
+    }
+
+    require_once( $_CONF['path_system'] . 'lib-admin.php' );
+
+    $usr_type = '';
+    if (isset($_REQUEST['usr_type'])) {
+        $usr_type = COM_applyFilter($_REQUEST['usr_type']);
+    } else {
+        $usr_type = 'phantom';
+    }
+    $usr_time_arr = array();
+    $usr_time = '';
+    if (isset($_REQUEST['usr_time'])) {
+        $usr_time_arr = $_REQUEST['usr_time'];
+    } else {
+        $usr_time_arr['phantom'] = 2;
+        $usr_time_arr['short'] = 6;
+        $usr_time_arr['old'] = 24;
+        $usr_time_arr['recent'] = 1;
+    }
+    $usr_time = $usr_time_arr[$usr_type];
+
+    // list of options for user display
+    // sel => form-id
+    // desc => title
+    // txt1 => text before input-field
+    // txt2 => text after input field
+    $opt_arr = array(
+        array('sel' => 'phantom', 'desc' => $LANG28[57], 'txt1' => $LANG28[60], 'txt2' => $LANG28[61]),
+        array('sel' => 'short', 'desc' => $LANG28[58], 'txt1' => $LANG28[62], 'txt2' => $LANG28[63]),
+        array('sel' => 'old', 'desc' => $LANG28[59], 'txt1' => $LANG28[64], 'txt2' => $LANG28[65]),
+        array('sel' => 'recent', 'desc' => $LANG28[74], 'txt1' => $LANG28[75], 'txt2' => $LANG28[76])
+    );
+
+    $user_templates = new Template($_CONF['path_layout'] . 'admin/user');
+    $user_templates->set_file (array ('form' => 'batchdelete.thtml',
+                                      'options' => 'batchdelete_options.thtml'));
+    $user_templates->set_var ('site_admin_url', $_CONF['site_admin_url']);
+    $user_templates->set_var ('usr_type', $usr_type);
+    $user_templates->set_var ('usr_time', $usr_time);
+    $user_templates->set_var ('lang_instruction', $LANG28[56]);
+    $user_templates->set_var ('lang_updatelist', $LANG28[66]);
+
+    for ($i = 0; $i < count ($opt_arr); $i++) {
+        $selector = '';
+        if ($usr_type == $opt_arr[$i]['sel']) {
+            $selector = ' checked="checked"';
+        }
+        $user_templates->set_var ('sel_id', $opt_arr[$i]['sel']);
+        $user_templates->set_var ('selector', $selector);
+        $user_templates->set_var ('lang_description', $opt_arr[$i]['desc']);
+        $user_templates->set_var ('lang_text_start', $opt_arr[$i]['txt1']);
+        $user_templates->set_var ('lang_text_end', $opt_arr[$i]['txt2']);
+        $user_templates->set_var ('id_value', $usr_time_arr[$opt_arr[$i]['sel']]);
+        $user_templates->parse('options_list', 'options', true);
+    }
+    $user_templates->parse('form', 'form');
+    $desc = $user_templates->finish($user_templates->get_var('form'));
+
+    $header_arr = array(      # dislay 'text' and use table field 'field'
+                    array('text' => $LANG28[37], 'field' => $_TABLES['users'] . '.uid', 'sort' => true),
+                    array('text' => $LANG28[3], 'field' => 'username', 'sort' => true),
+                    array('text' => $LANG28[4], 'field' => 'fullname', 'sort' => true)
+    );
+
+    switch ($usr_type) {
+        case 'phantom':
+            $header_arr[] = array('text' => $LANG28[14], 'field' => 'regdate', 'sort' => true);
+            $header_arr[] = array('text' => $LANG28[41], 'field' => 'lastlogin_short', 'sort' => true);
+            $header_arr[] = array('text' => $LANG28[67], 'field' => 'phantom_date', 'sort' => true);
+            $list_sql = ", UNIX_TIMESTAMP()- UNIX_TIMESTAMP(regdate) as phantom_date";
+            $filter_sql = "lastlogin = 0 AND UNIX_TIMESTAMP()- UNIX_TIMESTAMP(regdate) > " . ($usr_time * 2592000) . " AND";
+            $sort = 'regdate';
+            break;
+        case 'short':
+            $header_arr[] = array('text' => $LANG28[14], 'field' => 'regdate', 'sort' => true);
+            $header_arr[] = array('text' => $LANG28[41], 'field' => 'lastlogin_short', 'sort' => true);
+            $header_arr[] = array('text' => $LANG28[68], 'field' => 'online_hours', 'sort' => true);
+            $header_arr[] = array('text' => $LANG28[69], 'field' => 'offline_months', 'sort' => true);
+            $list_sql = ", (lastlogin - UNIX_TIMESTAMP(regdate)) AS online_hours, (UNIX_TIMESTAMP() - lastlogin) AS offline_months";
+            $filter_sql = "lastlogin > 0 AND lastlogin - UNIX_TIMESTAMP(regdate) < 86400 "
+                         . "AND UNIX_TIMESTAMP() - lastlogin > " . ($usr_time * 2592000) . " AND";
+            $sort = 'lastlogin';
+            break;
+        case 'old':
+            $header_arr[] = array('text' => $LANG28[41], 'field' => 'lastlogin_short', 'sort' => true);
+            $header_arr[] = array('text' => $LANG28[69], 'field' => 'offline_months', 'sort' => true);
+            $list_sql = ", (UNIX_TIMESTAMP() - lastlogin) AS offline_months";
+            $filter_sql = "lastlogin > 0 AND (UNIX_TIMESTAMP() - lastlogin) > " . ($usr_time * 2592000) . " AND";
+            $sort = 'lastlogin';
+            break;
+        case 'recent':
+            $header_arr[] = array('text' => $LANG28[14], 'field' => 'regdate', 'sort' => true);
+            $header_arr[] = array('text' => $LANG28[41], 'field' => 'lastlogin_short', 'sort' => true);
+            $list_sql = "";
+            $filter_sql = "(UNIX_TIMESTAMP() - UNIX_TIMESTAMP(regdate)) < " . ($usr_time * 2592000) . " AND";
+            $sort = 'regdate';
+            break;
+    }
+
+    $header_arr[] = array('text' => $LANG28[7], 'field' => 'email', 'sort' => true);
+
+    $menu_arr = array (
+                    array('url' => $_CONF['site_admin_url'] . '/user.php',
+                          'text' => $LANG28[11]),
+                    array('url' => $_CONF['site_admin_url'] . '/user.php?mode=importform',
+                          'text' => $LANG28[23]),
+                    array('url' => $_CONF['site_admin_url'],
+                          'text' => $LANG_ADMIN['admin_home'])
+    );
+
+    $text_arr = array('has_menu'     => true,
+                      'has_extras'   => true,
+                      'title'        => $LANG28[54],
+                      'instructions' => "$desc",
+                      'icon'         => $_CONF['layout_url'] . '/images/icons/user.' . $_IMAGE_TYPE,
+                      'form_url'     => $_CONF['site_admin_url'] . "/user.php?mode=batchdelete&amp;usr_type=$usr_type&amp;usr_time=$usr_time",
+                      'help_url'     => ''
+    );
+
+    $defsort_arr = array('field'     => $sort,
+                         'direction' => 'ASC');
+
+    $join_userinfo = "LEFT JOIN {$_TABLES['userinfo']} ON {$_TABLES['users']}.uid={$_TABLES['userinfo']}.uid ";
+    $select_userinfo = ", lastlogin as lastlogin_short $list_sql ";
+
+    $sql = "SELECT {$_TABLES['users']}.uid,username,fullname,email,photo,status,regdate$select_userinfo "
+         . "FROM {$_TABLES['users']} $join_userinfo WHERE 1=1";
+
+    $query_arr = array (
+        'table' => 'users',
+        'sql' => $sql,
+        'query_fields' => array('username', 'email', 'fullname'),
+        'default_filter' => "AND $filter_sql {$_TABLES['users']}.uid > 1"
+    );
+    $listoptions = array('chkdelete' => true, 'chkfield' => 'uid');
+
+    $display .= ADMIN_list ("user", "ADMIN_getListField_users", $header_arr, $text_arr,
+        $query_arr, $menu_arr, $defsort_arr, '', '', $listoptions);
+
+    $display .= "<input type=\"hidden\" name=\"mode\" value=\"batchdeleteexec\"></form>" . LB;
+    return $display;
+//
+
+}
+/**
+* This function deletes the users selected in the batchdeletelist function
+*
+* @return   string          HTML with success or error message
+*
+*/
+function batchdeleteexec()
+{
+    global $_CONF, $LANG28;
+    $msg = '';
+    $user_list = array();
+    if (isset($_POST['delitem'])) {
+        $user_list = $_POST['delitem'];
+    }
+
+    if (count($user_list) == 0) {
+        $msg = $LANG28[72] . "<br>";
+    }
+    $c = 0;
+
+    if (isset($_POST['delitem']) AND is_array($_POST['delitem'])) {
+        foreach($_POST['delitem'] as $delitem) {
+            $delitem = COM_applyFilter($delitem);
+            if (!USER_deleteAccount ($delitem)) {
+                $msg .= "<strong>{$LANG28[2]} $delitem {$LANG28[70]}</strong><br>\n";
+            } else {
+                $c++; // count the deleted users
+            }
+        }
+    }
+
+    // Since this function is used for deletion only, its necessary to say that
+    // zero where deleted instead of just leaving this message away.
+    COM_numberFormat($c); // just in case we have more than 999)..
+    $msg .= "{$LANG28[71]}: $c<br>\n";
+    return $msg;
+}
+
+
+/**
 * This function allows the administrator to import batches of users
 *
 * @param    string  $file   file to import
@@ -514,6 +850,9 @@
 
     $retval = '';
 
+    // Bulk import implies admin authorisation:
+    $_CONF['usersubmission'] = 0;
+
     // First, upload the file
     require_once ($_CONF['path_system'] . 'classes/upload.class.php');
 
@@ -538,7 +877,7 @@
 
     $users = file ($filename);
 
-    $retval .= COM_siteHeader ('menu', $LANG28[22]);
+    $retval .= COM_siteHeader ('menu', $LANG28[24]);
     $retval .= COM_startBlock ($LANG28[31], '',
             COM_getBlockTemplate ('_admin_block', 'header'));
 
@@ -664,9 +1003,16 @@
     $direction =  COM_applyFilter ($_GET['direction']);
 }
 
-if ($_POST['passwd']!=$_POST['passwd_conf']) { // passwords were entered but two
-        $display .= COM_refresh($_CONF['site_admin_url']
-                            . '/user.php?mode=edit&msg=67&uid='.$_POST['uid']);
+if (isset ($_POST['passwd']) && isset ($_POST['passwd_conf']) &&
+        ($_POST['passwd'] != $_POST['passwd_conf'])) {
+    // entered passwords were different
+    $uid = COM_applyFilter ($_POST['uid'], true);
+    if ($uid > 1) {
+        $display .= COM_refresh ($_CONF['site_admin_url']
+                                 . '/user.php?mode=edit&msg=67&uid=' . $uid);
+    } else {
+        $display .= COM_refresh ($_CONF['site_admin_url'] . '/user.php?msg=67');
+    }
 } else if (($mode == $LANG_ADMIN['delete']) && !empty ($LANG_ADMIN['delete'])) { // delete
     $uid = COM_applyFilter ($_POST['uid'], true);
     if ($uid > 1) {
@@ -676,6 +1022,10 @@
         $display = COM_refresh ($_CONF['site_admin_url'] . '/user.php');
     }
 } else if (($mode == $LANG_ADMIN['save']) && !empty ($LANG_ADMIN['save'])) { // save
+    $delphoto = '';
+    if (isset ($_POST['delete_photo'])) {
+        $delphoto = $_POST['delete_photo'];
+    }
     if (!isset ($_POST['oldstatus'])) {
         $_POST['oldstatus'] = USER_ACCOUNT_ACTIVE;
     }
@@ -687,17 +1037,24 @@
             $_POST['passwd'], $_POST['passwd_conf'], $_POST['email'],
             $_POST['regdate'], $_POST['homepage'],
             $_POST[$_TABLES['groups']],
-            $_POST['delete_photo'], $_POST['userstatus'], $_POST['oldstatus']);
+            $delphoto, $_POST['userstatus'], $_POST['oldstatus']);
     if (!empty($display)) {
-        $tmp = COM_siteHeader('menu');
+        $tmp = COM_siteHeader('menu', $LANG28[22]);
         $tmp .= $display;
         $tmp .= COM_siteFooter();
         $display = $tmp;
     }
 } else if ($mode == 'edit') {
     $display .= COM_siteHeader('menu', $LANG28[1]);
-    $display .= edituser (COM_applyFilter ($_GET['uid']),
-                                              COM_applyFilter ($_GET['msg']));
+    $msg = '';
+    if (isset ($_GET['msg'])) {
+        $msg = COM_applyFilter ($_GET['msg'], true);
+    }
+    $uid = '';
+    if (isset ($_GET['uid'])) {
+        $uid = COM_applyFilter ($_GET['uid'], true);
+    }
+    $display .= edituser ($uid, $msg);
     $display .= COM_siteFooter();
 } else if ($mode == 'import') {
     $display .= importusers ($_POST['file']);
@@ -709,6 +1066,23 @@
     $display .= display_form();
     $display .= COM_endBlock (COM_getBlockTemplate ('_admin_block', 'footer'));
     $display .= COM_siteFooter();
+} else if ($mode == 'batchdelete') {
+    $display .= COM_siteHeader ('menu', $LANG28[54]);
+    $display .= batchdelete();
+    $display .= COM_siteFooter();
+} else if ($mode == 'batchdeleteexec') {
+    $msg = batchdeleteexec();
+    $display .= COM_siteHeader ('menu', $LANG28[11]);
+    $timestamp = strftime( $_CONF['daytime'] );
+    $display .= COM_startBlock( $MESSAGE[40] . ' - ' . $timestamp, '',
+                           COM_getBlockTemplate( '_msg_block', 'header' ))
+            . '<p style="padding:5px"><img src="' . $_CONF['layout_url']
+            . '/images/sysmessage.' . $_IMAGE_TYPE . '" border="0" align="left"'
+            . ' alt="" style="padding-right:5px; padding-bottom:3px">'
+            . $msg . '</p>'
+            . COM_endBlock( COM_getBlockTemplate( '_msg_block', 'footer' ));
+    $display .= batchdelete();
+    $display .= COM_siteFooter();
 } else { // 'cancel' or no mode at all
     $display .= COM_siteHeader ('menu', $LANG28[11]);
     if (isset ($_REQUEST['msg'])) {
diff -ruN 1.4.0sr5-1.src/article.php 1.4.1.src/article.php
--- 1.4.0sr5-1.src/article.php	2006-08-08 02:53:59.000000000 -0500
+++ 1.4.1.src/article.php	2006-12-10 06:00:28.000000000 -0600
@@ -2,13 +2,13 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Geeklog 1.3                                                               |
+// | Geeklog 1.4                                                               |
 // +---------------------------------------------------------------------------+
 // | article.php                                                               |
 // |                                                                           |
 // | Shows articles in various formats.                                        |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
 // |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
@@ -32,7 +32,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: article.php,v 1.76 2005/12/03 12:16:28 ospiess Exp $
+// $Id: article.php,v 1.84 2006/12/02 16:39:14 dhaun Exp $
 
 /**
 * This page is responsible for showing a single article in different modes which
@@ -101,12 +101,20 @@
 
 $result = DB_query("SELECT COUNT(*) AS count FROM {$_TABLES['stories']} WHERE sid = '$story'" . COM_getPermSql ('AND'));
 $A = DB_fetchArray($result);
-
+$sql = array();
 if ($A['count'] > 0) {
-    $result = DB_query ("SELECT STRAIGHT_JOIN s.*, UNIX_TIMESTAMP(s.date) AS day, "
-     . "u.username, u.fullname, u.photo, t.topic, t.imageurl "
-     . "FROM {$_TABLES['stories']} as s, {$_TABLES['users']} as u, {$_TABLES['topics']} as t "
-     . "WHERE (s.uid = u.uid) AND (s.tid = t.tid) AND (sid = '$story')");
+    $sql['mysql'] = "SELECT STRAIGHT_JOIN s.*, UNIX_TIMESTAMP(s.date) AS day, "
+     . "u.username, u.fullname, u.photo, u.email, t.topic, t.imageurl "
+     . "FROM {$_TABLES['stories']} AS s, {$_TABLES['users']} AS u, {$_TABLES['topics']} AS t "
+     . "WHERE (s.uid = u.uid) AND (s.tid = t.tid) AND (sid = '$story')";
+
+     $sql['mssql'] = "SELECT STRAIGHT_JOIN s.sid, s.uid, s.draft_flag, s.tid, s.date, s.title, CAST(s.introtext AS text) AS introtext, CAST(s.bodytext AS text) AS bodytext, s.hits, s.numemails, s.comments, s.trackbacks, s.related, s.featured, s.show_topic_icon, s.commentcode, s.trackbackcode, s.statuscode, s.expire, s.postmode, s.frontpage, s.in_transit, s.owner_id, s.group_id, s.perm_owner, s.perm_group, s.perm_members, s.perm_anon, s.advanced_editor_mode, "
+     . " UNIX_TIMESTAMP(s.date) AS day, "
+     . "u.username, u.fullname, u.photo, u.email, t.topic, t.imageurl "
+     . "FROM {$_TABLES['stories']} AS s, {$_TABLES['users']} AS u, {$_TABLES['topics']} AS t "
+     . "WHERE (s.uid = u.uid) AND (s.tid = t.tid) AND (sid = '$story')";
+
+    $result = DB_query ($sql);
     $A = DB_fetchArray ($result);
 
     $access = SEC_hasAccess ($A['owner_id'], $A['group_id'],
@@ -114,33 +122,36 @@
             $A['perm_anon']);
     if (($access == 0) OR !SEC_hasTopicAccess ($A['tid']) OR
         (($A['draft_flag'] == 1) AND !SEC_hasRights ('story.edit'))) {
-        $display .= COM_siteHeader ('menu')
+        $display .= COM_siteHeader ('menu', $LANG_ACCESS['accessdenied'])
                  . COM_startBlock ($LANG_ACCESS['accessdenied'], '',
                            COM_getBlockTemplate ('_msg_block', 'header'))
                  . $LANG_ACCESS['storydenialmsg']
                  . COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'))
                  . COM_siteFooter ();
     } elseif (($mode == 'print') && ($_CONF['hideprintericon'] == 0)) {
-        $story_template = new Template($_CONF['path_layout'] . 'article');
-        $story_template->set_file('article','printable.thtml');
-        $story_template->set_var('page_title',
-                $_CONF['site_name'] . ': ' . stripslashes($A['title'])); 
-        $story_template->set_var('story_title',stripslashes($A['title']));
-        if( empty( $LANG_CHARSET )) {
+        $story_template = new Template ($_CONF['path_layout'] . 'article');
+        $story_template->set_file ('article', 'printable.thtml');
+        $story_template->set_var ('page_title',
+                $_CONF['site_name'] . ': ' . stripslashes ($A['title'])); 
+        $story_template->set_var ('story_title', stripslashes ($A['title']));
+        if (empty ($LANG_CHARSET)) {
             $charset = $_CONF['default_charset'];
-            if( empty( $charset )) {
+            if (empty( $charset)) {
                 $charset = 'iso-8859-1';
             }
         } else {
             $charset = $LANG_CHARSET;
         }
         header ('Content-Type: text/html; charset='. $charset);
-        $curtime = COM_getUserDateTimeFormat($A['day']);
-        $story_template->set_var('story_date', $curtime[0]);
+        $curtime = COM_getUserDateTimeFormat ($A['day']);
+        $story_template->set_var ('story_date', $curtime[0]);
 
         if ($_CONF['contributedbyline'] == 1) {
-            $story_template->set_var('lang_contributedby', $LANG01[1]);
-            $story_template->set_var('story_author', $A['username']);
+            $story_template->set_var ('lang_contributedby', $LANG01[1]);
+            $authorname = COM_getDisplayName ($A['uid']);
+            $story_template->set_var ('author', $authorname);
+            $story_template->set_var ('story_author', $authorname);
+            $story_template->set_var ('story_author_username', $A['username']);
         }
 
         if ($A['postmode'] == 'plaintext') {
@@ -152,16 +163,36 @@
         $story_template->set_var ('story_bodytext',
                 PLG_replaceTags (stripslashes ($A['bodytext'])));
 
-        $story_template->set_var('site_url', $_CONF['site_url']);
-        $story_template->set_var('layout_url', $_CONF['layout_url']);
-        $story_template->set_var('story_id', $A['sid']);
-        $story_template->set_var('story_comments', DB_count($_TABLES['comments'],'sid',$A['sid']));
-        $story_template->set_var('lang_comments', $LANG01[3]);
+        $story_template->set_var ('site_url', $_CONF['site_url']);
+        $story_template->set_var ('layout_url', $_CONF['layout_url']);
+        $story_template->set_var ('site_name', $_CONF['site_name']);
+        $story_template->set_var ('site_slogan', $_CONF['site_slogan']);
+        $story_template->set_var ('story_id', $A['sid']);
         $articleUrl = COM_buildUrl ($_CONF['site_url']
                                     . '/article.php?story=' . $A['sid']);
+        if ($A['commentcode'] >= 0) {
+            $commentsUrl = $articleUrl . '#comments';
+            $comments = $A['comments'];
+            $numComments = COM_numberFormat ($comments);
+            $story_template->set_var ('story_comments', $numComments);
+            $story_template->set_var ('comments_url', $commentsUrl);
+            $story_template->set_var ('comments_text',
+                    $numComments . ' ' . $LANG01[3]);
+            $story_template->set_var ('comments_count', $numComments);
+            $story_template->set_var ('lang_comments', $LANG01[3]);
+            $story_template->set_var ('comments_with_count',
+                    sprintf ($LANG01[121], $numComments));
+
+            if ($comments > 0) {
+                $story_template->set_var ('start_comments_anchortag',
+                        '<a href="' . $commentsUrl . '">');
+                $story_template->set_var ('end_comments_anchortag', '</a>');
+            }
+        }
+        $story_template->set_var ('lang_full_article', $LANG08[33]);
         $story_template->set_var ('article_url', $articleUrl);
-        $story_template->parse('output','article');
-        $display = $story_template->finish($story_template->get_var('output')); 
+        $story_template->parse ('output', 'article');
+        $display = $story_template->finish ($story_template->get_var('output'));
     } else {
         // Set page title
         $pagetitle = stripslashes (str_replace ('$', '&#36;', $A['title']));
@@ -181,6 +212,10 @@
             }
         }
         $display .= COM_siteHeader ('menu', $pagetitle, $rdf);
+        
+        if (isset ($_GET['msg'])) {
+            $display .= COM_showMessage (COM_applyFilter ($_GET['msg'], true));
+        }
 
         DB_query ("UPDATE {$_TABLES['stories']} SET hits = hits + 1 WHERE (sid = '$story') AND (date <= NOW()) AND (draft_flag = 0)");
 
diff -ruN 1.4.0sr5-1.src/backend/geeklog.rss 1.4.1.src/backend/geeklog.rss
--- 1.4.0sr5-1.src/backend/geeklog.rss	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/backend/geeklog.rss	2006-05-15 00:58:55.000000000 -0500
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<rss version="2.0" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<channel>
+<title>Geeklog Site</title>
+<link>http://www.example.com</link>
+<description>Another Nifty Geeklog Site</description>
+<managingEditor>admin@example.com</managingEditor>
+<webMaster>admin@example.com</webMaster>
+<copyright>Copyright 2006 Geeklog Site</copyright>
+<generator>GeekLog</generator>
+<pubDate>Wed, 10 May 2006 01:21:35 China Standard Time</pubDate>
+<language>en-gb</language>
+<item>
+<title>Welcome to Geeklog!</title>
+<link>http://www.example.com/article.php?story=welcome</link>
+<guid isPermaLink="true">http://www.example.com/article.php?story=welcome</guid>
+<pubDate>Wed, 10 May 2006 01:21:31 China Standard Time</pubDate>
+<comments>http://www.example.com/article.php?story=welcome#comments</comments>
+<dc:subject>GeekLog</dc:subject>
+<description>&lt;p&gt;Welcome and let me be the first to congratulate you on installing GeekLog. Please take the time to read everything in the &lt;a href=&quot;docs/index.html&quot;&gt;docs directory&lt;/a&gt;. Geeklog now has enhanced, user-based security.  You should thoroughly understand how these work before you run a production Geeklog Site.&lt;p&gt;To log into your new GeekLog site, please use this account:&lt;p&gt;Username: &lt;b&gt;Admin&lt;/b&gt;&lt;br&gt;Password: &lt;b&gt;password&lt;/b&gt;
+&lt;p&gt;&lt;b&gt;And don't forget to change your password after logging in!&lt;/b&gt;</description>
+<trackback:ping>http://www.example.com/trackback.php?id=welcome</trackback:ping>
+</item>
+</channel>
+</rss>
diff -ruN 1.4.0sr5-1.src/calendar/event.php 1.4.1.src/calendar/event.php
--- 1.4.0sr5-1.src/calendar/event.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/calendar/event.php	2006-12-16 09:03:58.000000000 -0600
@@ -0,0 +1,712 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Calendar Plugin 1.0                                                       |
+// +---------------------------------------------------------------------------+
+// | event.php                                                                 |
+// |                                                                           |
+// | Shows details of an event or events                                       |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2000-2006 by the following authors:                         |
+// |                                                                           |
+// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
+// |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
+// |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
+// |          Dirk Haun         - dirk AT haun-online DOT de                   |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is free software; you can redistribute it and/or             |
+// | modify it under the terms of the GNU General Public License               |
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
+// | GNU General Public License for more details.                              |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+// $Id: event.php,v 1.20 2006/12/11 13:25:31 dhaun Exp $
+
+require_once ('../lib-common.php');
+require_once ($_CONF['path_system'] . 'classes/calendar.class.php');
+
+/**
+* Adds an event to the user's calendar
+*
+* The user has asked that an event be added to their personal
+* calendar.  Show a confirmation screen.
+*
+* @param    string  $eid    event ID to add to user's calendar
+* @return   string          HTML for confirmation form
+*
+*/
+function adduserevent ($eid) 
+{
+    global $_CONF, $_TABLES, $LANG_CAL_1;
+
+    $retval = '';
+
+    $eventsql = "SELECT * FROM {$_TABLES['events']} WHERE eid='$eid'" . COM_getPermSql ('AND');
+    $result = DB_query($eventsql);
+    $nrows = DB_numRows($result);
+    if ($nrows == 1) {
+        $retval .= COM_startBlock (sprintf ($LANG_CAL_1[11],
+                                            COM_getDisplayName()));
+        $A = DB_fetchArray($result);
+        $cal_template = new Template($_CONF['path'] . 'plugins/calendar/templates/');
+        $cal_template->set_file (array ('addevent' => 'addevent.thtml'));
+        $cal_template->set_var('site_url', $_CONF['site_url']);
+        $cal_template->set_var('site_admin_url', $_CONF['site_admin_url']);
+        $cal_template->set_var('layout_url', $_CONF['layout_url']);
+        $cal_template->set_var('intro_msg', $LANG_CAL_1[8]);
+        $cal_template->set_var('lang_event', $LANG_CAL_1[12]);
+        $cal_template->set_var('event_title',stripslashes($A['title']));
+
+        if (!empty ($A['url']) && ($A['url'] != 'http://')) {
+            $cal_template->set_var ('event_url', $A['url']);
+            $cal_template->set_var ('event_begin_anchortag',
+                                    '<a href="' . $A['url'] . '">');
+            $cal_template->set_var ('event_end_anchortag', '</a>');
+        } else {
+            $cal_template->set_var ('event_url', '');
+            $cal_template->set_var ('event_begin_anchortag', '');
+            $cal_template->set_var ('event_end_anchortag', '');
+        }
+
+        $cal_template->set_var('lang_starts', $LANG_CAL_1[13]);
+        $cal_template->set_var('lang_ends', $LANG_CAL_1[14]);
+
+        $thestart = COM_getUserDateTimeFormat($A['datestart'] . ' ' . $A['timestart']);
+        $theend = COM_getUserDateTimeFormat($A['dateend'] . ' ' . $A['timeend']);
+        if ($A['allday'] == 0) {
+            $cal_template->set_var('event_start', $thestart[0]);
+            $cal_template->set_var('event_end', $theend[0]);
+        } else {
+            $cal_template->set_var('event_start', strftime($_CONF['shortdate'], $thestart[1]));
+            $cal_template->set_var('event_end', strftime($_CONF['shortdate'], $theend[1]));
+        }
+
+        $cal_template->set_var('lang_where',$LANG_CAL_1[4]);
+        $location = stripslashes($A['location']) . '<br>'
+                  . stripslashes ($A['address1']) . '<br>'
+                  . stripslashes ($A['address2']) . '<br>'
+                  . stripslashes ($A['city'])
+                  . ', ' . $A['state'] . ' ' . $A['zipcode'];
+        $cal_template->set_var('event_location', $location);
+        $cal_template->set_var('lang_description', $LANG_CAL_1[5]);
+        $description = stripslashes ($A['description']);
+        if ($A['postmode'] == 'plaintext') {
+            $description = nl2br ($description);
+        }
+        $cal_template->set_var ('event_description',
+                                PLG_replaceTags ($description));
+        $cal_template->set_var('event_id', $eid);
+        $cal_template->set_var('lang_addtomycalendar', $LANG_CAL_1[9]);
+        $cal_template->parse('output','addevent');     
+        $retval .= $cal_template->finish($cal_template->get_var('output'));
+        $retval .= COM_endBlock ();
+    } else {
+        $retval .= COM_showMessage(23);
+    }    
+    
+    return $retval;
+}
+
+/**
+* Save an event to user's personal calendar
+*
+* User has seen the confirmation screen and they still want to
+* add this event to their calendar.  Actually save it now.
+*
+* @param    string  $eid    ID of event to save
+* @return   string          HTML refresh
+*
+*/
+function saveuserevent ($eid)
+{
+    global $_CONF, $_TABLES, $_USER;
+
+    if (isset ($_USER['uid']) && ($_USER['uid'] > 1)) {
+
+        // Try to delete the event first in case it has already been added
+        DB_query ("DELETE FROM {$_TABLES['personal_events']} WHERE uid={$_USER['uid']} AND eid='$eid'");
+
+        $result = DB_query ("SELECT eid FROM {$_TABLES['events']} WHERE (eid = '$eid')" . COM_getPermSql ('AND'));
+        if (DB_numRows ($result) == 1) {
+
+            $savesql = "INSERT INTO {$_TABLES['personal_events']} "
+             . "(eid,uid,title,event_type,datestart,dateend,timestart,timeend,allday,location,address1,address2,city,state,"
+             . "zipcode,url,description,group_id,owner_id,perm_owner,perm_group,perm_members,perm_anon) SELECT eid," 
+             . $_USER['uid'] . ",title,event_type,datestart,dateend,timestart,timeend,allday,location,address1,address2,"
+             . "city,state,zipcode,url,description,group_id,owner_id,perm_owner,perm_group,perm_members,perm_anon FROM "
+             . "{$_TABLES['events']} WHERE eid = '{$eid}'";
+
+            DB_query ($savesql);
+
+            return COM_refresh ($_CONF['site_url']
+                                . '/calendar/index.php?mode=personal&amp;msg=24');
+        }
+    }
+
+    return COM_refresh ($_CONF['site_url'] . '/index.php');
+}
+
+/**
+* Allows user to edit a personal calendar event
+*
+* @param    array   $A  Record to display
+* @return   string      HTML for event editor
+*
+*/
+function editpersonalevent ($A)
+{
+    global $_CONF, $_CA_CONF, $LANG_CAL_1;
+
+    $cal_templates = new Template($_CONF['path'] . 'plugins/calendar/templates/');
+    $cal_templates->set_file('form','editpersonalevent.thtml');
+    $cal_templates->set_var('site_url', $_CONF['site_url']);
+    $cal_templates->set_var('site_admin_url', $_CONF['site_admin_url']);
+    $cal_templates->set_var('layout_url', $_CONF['layout_url']);
+
+    $cal_templates->set_var ('lang_title', $LANG_CAL_1[28]);
+    $title = stripslashes ($A['title']);
+    $title = str_replace ('{', '&#123;', $title);
+    $title = str_replace ('}', '&#125;', $title);
+    $title = str_replace ('"', '&quot;', $title);
+    $cal_templates->set_var ('event_title', $title);
+
+    $cal_templates->set_var('lang_eventtype', $LANG_CAL_1[37]);
+    $etypes = explode (',', $_CA_CONF['event_types']);
+    $type_options = '';
+    foreach ($etypes as $evtype) {
+        $type_options .= '<option value="' . $evtype . '"';
+        if ($evtype == $A['event_type']) {
+            $type_options .= ' selected="selected"';
+        }
+        $type_options .= '>' . $evtype . '</option>';
+    }
+    $cal_templates->set_var ('type_options', $type_options);
+
+    // Handle start date/time
+    $cal_templates->set_var('lang_startdate', $LANG_CAL_1[21]);
+    $cal_templates->set_var('lang_starttime', $LANG_CAL_1[30]);
+    $A['startdate'] = $A['datestart'] . ' ' . $A['timestart'];
+
+    $start_month = date ('n', strtotime ($A['startdate']));
+    $month_options = COM_getMonthFormOptions ($start_month);
+    $cal_templates->set_var ('startmonth_options', $month_options);
+
+    $start_day = date ('j', strtotime ($A['startdate']));
+    $day_options = COM_getDayFormOptions ($start_day);
+    $cal_templates->set_var('startday_options', $day_options);
+
+    $start_year = date ('Y', strtotime ($A['startdate']));
+    $year_options = COM_getYearFormOptions ($start_year);
+    $cal_templates->set_var('startyear_options', $year_options);
+
+    if (isset ($_CA_CONF['hour_mode']) && ($_CA_CONF['hour_mode'] == 24)) {
+        $start_hour = date ('H', strtotime ($A['startdate']));
+        $hour_options = COM_getHourFormOptions ($start_hour, 24);
+        $cal_templates->set_var ('starthour_options', $hour_options);
+    } else {
+        $start_hour = date ('g', strtotime ($A['startdate']));
+        $hour_options = COM_getHourFormOptions ($start_hour);
+        $cal_templates->set_var ('starthour_options', $hour_options);
+    }
+
+    $startmin = intval (date ('i', strtotime ($A['startdate'])) / 15) * 15;
+    $cal_templates->set_var ('startminute_options',
+                             COM_getMinuteFormOptions ($startmin, 15));
+
+    $ampm = date ('a', strtotime ($A['startdate']));
+    $cal_templates->set_var ('startampm_selection',
+                     COM_getAmPmFormSelection ('startampm_selection', $ampm));
+
+    // Handle end date/time
+    $cal_templates->set_var('lang_enddate', $LANG_CAL_1[18]);
+    $cal_templates->set_var('lang_endtime', $LANG_CAL_1[29]);
+    $A['enddate'] = $A['dateend'] . ' ' . $A['timeend'];
+
+    $end_month = date ('n', strtotime ($A['enddate']));
+    $month_options = COM_getMonthFormOptions ($end_month);
+    $cal_templates->set_var ('endmonth_options', $month_options);
+
+    $end_day = date ('j', strtotime ($A['enddate']));
+    $day_options = COM_getDayFormOptions ($end_day);
+    $cal_templates->set_var ('endday_options', $day_options);
+
+    $end_year = date ('Y', strtotime ($A['enddate']));
+    $year_options = COM_getYearFormOptions ($end_year);
+    $cal_templates->set_var ('endyear_options', $year_options);
+
+    if (isset ($_CA_CONF['hour_mode']) && ($_CA_CONF['hour_mode'] == 24)) {
+        $end_hour = date ('H', strtotime ($A['enddate']));
+        $hour_options = COM_getHourFormOptions ($end_hour, 24);
+        $cal_templates->set_var ('endhour_options', $hour_options);
+    } else {
+        $end_hour = date ('g', strtotime ($A['enddate']));
+        $hour_options = COM_getHourFormOptions ($end_hour);
+        $cal_templates->set_var ('endhour_options', $hour_options);
+    }
+
+    $endmin = intval (date ('i', strtotime ($A['enddate'])) / 15) * 15;
+    $cal_templates->set_var ('endminute_options',
+                             COM_getMinuteFormOptions ($endmin, 15));
+
+    $ampm = date ('a', strtotime ($A['enddate']));
+    $cal_templates->set_var ('endampm_selection',
+                         COM_getAmPmFormSelection ('endampm_selection', $ampm));
+
+    $cal_templates->set_var ('lang_alldayevent', $LANG_CAL_1[31]);
+    if ($A['allday'] == 1) {
+        $cal_templates->set_var ('allday_checked', 'checked="checked"');
+    } else { 
+        $cal_templates->set_var ('allday_checked', '');
+    }
+
+    $cal_templates->set_var('lang_location',$LANG_CAL_1[39]);
+    $cal_templates->set_var('event_location', stripslashes ($A['location']));
+
+    $cal_templates->set_var('lang_addressline1', $LANG_CAL_1[32]);
+    $cal_templates->set_var('event_address1', stripslashes ($A['address1']));
+    $cal_templates->set_var('lang_addressline2', $LANG_CAL_1[33]);
+    $cal_templates->set_var('event_address2', stripslashes ($A['address2']));
+
+    $cal_templates->set_var('lang_city', $LANG_CAL_1[34]);
+    $cal_templates->set_var('event_city', stripslashes ($A['city']));
+
+    $cal_templates->set_var('lang_state', $LANG_CAL_1[35]);
+    $cal_templates->set_var('state_options', CALENDAR_stateList ($A['state']));
+
+    $cal_templates->set_var('lang_zipcode', $LANG_CAL_1[36]);
+    $cal_templates->set_var('event_zipcode', $A['zipcode']);
+
+    $cal_templates->set_var('lang_link', $LANG_CAL_1[43]);
+    $cal_templates->set_var('event_url', $A['url']);
+
+    $cal_templates->set_var('lang_description', $LANG_CAL_1[5]);
+    $cal_templates->set_var('event_description',
+                            nl2br (stripslashes ($A['description'])));
+
+    $cal_templates->set_var('lang_htmlnotallowed', $LANG_CAL_1[44]);
+    $cal_templates->set_var('lang_submit', $LANG_CAL_1[45]);
+    $cal_templates->set_var('lang_delete', $LANG_CAL_1[51]);
+    $cal_templates->set_var('eid', $A['eid']);
+    $cal_templates->set_var('uid', $A['uid']);
+    if (isset ($_CA_CONF['hour_mode']) && ($_CA_CONF['hour_mode'] == 24)) {
+        $cal_templates->set_var ('hour_mode', 24);
+    } else {
+        $cal_templates->set_var ('hour_mode', 12);
+    }
+
+    return $cal_templates->parse ('output', 'form'); 
+}
+
+/**
+* Set localised day and month names.
+*
+* @param    object  $aCalendar  reference(!) to a Calendar object
+*
+*/
+function setCalendarLanguage (&$aCalendar)
+{ 
+    global $LANG_WEEK, $LANG_MONTH, $LANG_CAL_2;
+
+    $lang_days = array ('sunday'    => $LANG_WEEK[1],
+                        'monday'    => $LANG_WEEK[2],
+                        'tuesday'   => $LANG_WEEK[3],
+                        'wednesday' => $LANG_WEEK[4],
+                        'thursday'  => $LANG_WEEK[5],
+                        'friday'    => $LANG_WEEK[6],
+                        'saturday'  => $LANG_WEEK[7]);
+    $lang_months = array ('january'   => $LANG_MONTH[1],
+                          'february'  => $LANG_MONTH[2],
+                          'march'     => $LANG_MONTH[3],
+                          'april'     => $LANG_MONTH[4],
+                          'may'       => $LANG_MONTH[5],
+                          'june'      => $LANG_MONTH[6],
+                          'july'      => $LANG_MONTH[7],
+                          'august'    => $LANG_MONTH[8],
+                          'september' => $LANG_MONTH[9],
+                          'october'   => $LANG_MONTH[10],
+                          'november'  => $LANG_MONTH[11],
+                          'december'  => $LANG_MONTH[12]);
+    $aCalendar->setLanguage ($lang_days, $lang_months);
+}   
+
+
+// MAIN
+
+$display = '';
+
+$action = '';
+if (isset ($_REQUEST['action'])) {
+    $action = COM_applyFilter ($_REQUEST['action']);
+}
+
+switch ($action) {
+case 'addevent':
+    if (($_CA_CONF['personalcalendars'] == 1) &&
+            isset ($_USER['uid']) && ($_USER['uid'] > 1)) {
+        $display .= COM_siteHeader ();
+
+        $eid = COM_applyFilter ($_GET['eid']);
+        if (!empty ($eid)) {
+            $display .= adduserevent ($eid);
+        } else {
+            $display .= COM_showMessage (23);
+        }
+
+        $display .= COM_siteFooter ();
+    } else {
+        $display = COM_refresh ($_CONF['site_url'] . '/index.php');
+    }
+    break;
+
+case 'saveuserevent':
+    if ($_CA_CONF['personalcalendars'] == 1) {
+        $eid = COM_applyFilter ($_POST['eid']);
+        if (!empty ($eid)) {
+            $display .= saveuserevent ($eid);
+        } else {
+            $display .= COM_siteHeader ();
+            $display .= COM_showMessage (23);
+            $display .= COM_siteFooter ();
+        }
+    } else {
+        $display = COM_refresh ($_CONF['site_url'] . '/index.php');
+    }
+    break;
+
+case $LANG_CAL_1[45]: // save edited personal event
+    if (!empty ($LANG_CAL_1[45]) && ($_CA_CONF['personalcalendars'] == 1) &&
+            (!empty ($_USER['uid']) && ($_USER['uid'] > 1)) &&
+            (isset ($_POST['calendar_type']) &&
+             ($_POST['calendar_type'] == 'personal'))) {
+        $display = plugin_savesubmission_calendar ($_POST);
+    } else {
+        $display = COM_refresh ($_CONF['site_url'] . '/index.php');
+    }
+    break;
+
+case 'deleteevent':
+case $LANG_CAL_1[51]:
+    if ($_CA_CONF['personalcalendars'] == 1) {
+        $eid = COM_applyFilter ($_REQUEST['eid']);
+        if (!empty ($eid) && (isset ($_USER['uid']) && ($_USER['uid'] > 1))) {
+            DB_query ("DELETE FROM {$_TABLES['personal_events']} WHERE uid={$_USER['uid']} AND eid='$eid'");
+            $display .= COM_refresh ($_CONF['site_url']
+                     . '/calendar/index.php?mode=personal&amp;msg=26');
+        } else {
+            $display = COM_refresh ($_CONF['site_url'] . '/index.php');
+        }
+    } else {
+        $display = COM_refresh ($_CONF['site_url'] . '/index.php');
+    }
+    break;
+
+case 'edit':
+    if ($_CA_CONF['personalcalendars'] == 1) {
+        $eid = COM_applyFilter ($_GET['eid']);
+        if (!empty ($eid) && (isset ($_USER['uid']) && ($_USER['uid'] > 1))) {
+            $result = DB_query ("SELECT * FROM {$_TABLES['personal_events']} WHERE (eid = '$eid') AND (uid = {$_USER['uid']})");
+            if (DB_numRows ($result) == 1) {
+                $A = DB_fetchArray ($result);
+                $display .= COM_siteHeader ('menu', $LANG_CAL_2[38])
+                         . COM_startBlock ($LANG_CAL_2[38])
+                         . editpersonalevent ($A)
+                         . COM_endBlock ()
+                         . COM_siteFooter ();
+            } else {
+                $display = COM_refresh ($_CONF['site_url'] . '/index.php');
+            }
+        } else {
+            $display = COM_refresh ($_CONF['site_url'] . '/index.php');
+        }
+    } else {
+        $display = COM_refresh ($_CONF['site_url'] . '/index.php');
+    }
+    break;
+
+default:
+    $mode = '';
+    if (isset ($_GET['mode'])) {
+        $mode = COM_applyFilter ($_GET['mode']);
+    }
+    $eid = '';
+    if (isset ($_GET['eid'])) {
+        $eid = COM_applyFilter ($_GET['eid']);
+    }
+    if (!empty ($eid)) {
+        if (($mode == 'personal') && ($_CA_CONF['personalcalendars'] == 1) &&
+                (isset ($_USER['uid']) && ($_USER['uid'] > 1))) {
+            $datesql = "SELECT * FROM {$_TABLES['personal_events']} "
+                     . "WHERE (eid = '$eid') AND (uid = {$_USER['uid']})";
+            $pagetitle = $LANG_CAL_2[28] . ' ' . COM_getDisplayName();
+        } else {
+            $datesql = "SELECT * FROM {$_TABLES['events']} WHERE eid = '$eid'";
+            if (strpos ($LANG_CAL_2[9], '%') === false) {
+                $pagetitle = $LANG_CAL_2[9];
+            } else {
+                $pagetitle = sprintf ($LANG_CAL_2[9], $_CONF['site_name']);
+            }
+            DB_query ("UPDATE {$_TABLES['events']} SET hits = hits + 1 WHERE eid = '$eid'");
+        }
+
+        $display .= COM_siteHeader ('menu', $pagetitle);
+        $display .= COM_startBlock ($pagetitle);
+
+    } else {
+        $year = 0;
+        if (isset ($_GET['year'])) {
+            $year = COM_applyFilter ($_GET['year'], true);
+        }
+        $month = 0;
+        if (isset ($_GET['month'])) {
+            $month = COM_applyFilter ($_GET['month'], true);
+        }
+        $day = 0;
+        if (isset ($_GET['day'])) {
+            $day = COM_applyFilter ($_GET['day'], true);
+        }
+        if (($year == 0) || ($month == 0) || ($day == 0)) {
+            $year = date ('Y');
+            $month = date ('n');
+            $day = date ('j');
+        }
+
+        $pagetitle = $LANG_CAL_2[10] . ' ' . strftime ($_CONF['shortdate'],
+                                         mktime (0, 0, 0, $month, $day, $year));
+        $display .= COM_siteHeader ('menu', $pagetitle);
+        $display .= COM_startBlock ($pagetitle);
+
+        $thedate = sprintf ('%4d-%02d-%02d', $year, $month, $day);
+        $datesql = "SELECT * FROM {$_TABLES['events']} "
+                 . "WHERE \"$thedate\" BETWEEN DATE_FORMAT(datestart,'%Y-%m-%d') "
+                 . "and DATE_FORMAT(dateend,'%Y-%m-%d') "
+                 . "ORDER BY datestart ASC,timestart ASC,title";
+    }
+    $cal_templates = new Template($_CONF['path'] . 'plugins/calendar/templates/');
+    $cal_templates->set_file (array (
+            'events'    => 'events.thtml',
+            'details'   => 'eventdetails.thtml',
+            'addremove' => 'addremoveevent.thtml'
+            ));
+        
+    $cal_templates->set_var ('lang_addevent', $LANG_CAL_1[6]);
+    $cal_templates->set_var ('lang_backtocalendar', $LANG_CAL_1[15]);
+    if ($mode == 'personal') {
+        $cal_templates->set_var ('calendar_mode', '&amp;mode=personal');
+    } else {
+        $cal_templates->set_var ('calendar_mode', '');
+    }
+
+    $result = DB_query($datesql);
+    $nrows = DB_numRows($result);
+    if ($nrows == 0) {
+        $cal_templates->set_var('lang_month','');
+        $cal_templates->set_var('event_year','');
+        $cal_templates->set_var('event_details','');
+        $cal_templates->set_var('site_url', $_CONF['site_url']);
+        $cal_templates->set_var('site_admin_url', $_CONF['site_admin_url']);
+        $cal_templates->set_var('layout_url', $_CONF['layout_url']);
+        $cal_templates->parse('output','events');
+        $display .= $cal_templates->finish($cal_templates->get_var('output'));
+        $display .= $LANG_CAL_1[2];
+    } else {
+        $cal = new Calendar();
+        setCalendarLanguage ($cal);
+
+        $currentmonth = '';
+        for ($i = 1; $i <= $nrows; $i++) {
+            $A = DB_fetchArray($result);
+            if (SEC_hasAccess($A['owner_id'],$A['group_id'],$A['perm_owner'],
+                              $A['perm_group'],$A['perm_members'],$A['perm_anon']) > 0) {
+                if (strftime('%B',strtotime($A['datestart'])) != $currentmonth) {
+                    $str_month = $cal->getMonthName(strftime('%m',strtotime($A['datestart'])));
+                    $cal_templates->set_var('lang_month', $str_month);
+                    $cal_templates->set_var('event_year', strftime('%Y',strtotime($A['datestart'])));
+                    $currentmonth = strftime('%B',strtotime($A['datestart']));
+                }
+                $cal_templates->set_var('event_title', stripslashes($A['title']));
+                $cal_templates->set_var('site_url', $_CONF['site_url']);
+                $cal_templates->set_var('site_admin_url', $_CONF['site_admin_url']);
+                $cal_templates->set_var('layout_url', $_CONF['layout_url']);
+                if (!empty($A['url'])) {
+                    $cal_templates->set_var('event_begin_anchortag', '<a href="'.$A['url'].'">');
+                    $cal_templates->set_var('event_title', stripslashes($A['title']));
+                    $cal_templates->set_var('event_end_anchortag', '</a>');
+                } else {
+                    $cal_templates->set_var('event_begin_anchortag', '');
+                    $cal_templates->set_var('event_title', stripslashes($A['title']));
+                    $cal_templates->set_var('event_end_anchortag', '');
+                }
+
+                if (!empty ($_USER['uid']) && ($_USER['uid'] > 1) &&
+                        ($_CA_CONF['personalcalendars'] == 1)) {
+                    $tmpresult = DB_query("SELECT * FROM {$_TABLES['personal_events']} "
+                                        . "WHERE eid='{$A['eid']}' AND uid={$_USER['uid']}");
+                    $tmpnrows = DB_numRows($tmpresult);
+                    if ($tmpnrows > 0) {
+                        $cal_templates->set_var('addremove_begin_anchortag','<a href="'
+                            . $_CONF['site_url'] . '/calendar/event.php?eid=' . $A['eid']
+                            . '&amp;mode=personal&amp;action=deleteevent">');
+                        $cal_templates->set_var('lang_addremovefromcal',$LANG_CAL_1[10]);
+                        $cal_templates->set_var('addremove_end_anchortag', '</a>');
+                    } else {
+                        $cal_templates->set_var('addremove_begin_anchortag','<a href="'
+                            . $_CONF['site_url'] . '/calendar/event.php?eid=' . $A['eid']
+                            . '&amp;mode=personal&amp;action=addevent">');
+                        $cal_templates->set_var('lang_addremovefromcal',$LANG_CAL_1[9]);
+                        $cal_templates->set_var('addremove_end_anchortag', '</a>');
+                    }
+                    $cal_templates->parse('addremove_event','addremove');
+                }
+                $cal_templates->set_var('lang_when', $LANG_CAL_1[3]);
+                if ($A['allday'] == 0) {
+                    $thedatetime = COM_getUserDateTimeFormat ($A['datestart'] .
+                                                        ' ' . $A['timestart']);
+                    $cal_templates->set_var ('event_start', $thedatetime[0]);
+
+                    if ($A['datestart'] == $A['dateend']) {
+                        $thedatetime[0] = strftime ($_CONF['timeonly'],
+                            strtotime ($A['dateend'] . ' ' . $A['timeend']));
+                    } else {
+                        $thedatetime = COM_getUserDateTimeFormat ($A['dateend']
+                                                        . ' ' . $A['timeend']);
+                    }
+                    $cal_templates->set_var ('event_end', $thedatetime[0]);
+                } elseif ($A['allday'] == 1 AND $A['datestart'] <> $A['dateend']) {
+                    $thedatetime1 = strftime ('%A, ' . $_CONF['shortdate'],
+                                             strtotime ($A['datestart']));
+                    $cal_templates->set_var ('event_start', $thedatetime1);
+                    $thedatetime2 = strftime ('%A, ' . $_CONF['shortdate'],
+                                                  strtotime ($A['dateend']));
+                    $cal_templates->set_var ('event_end', $thedatetime2
+                                                        . ' ' . $LANG_CAL_2[26]);
+                } else {
+                    $thedatetime = strftime ('%A, ' . $_CONF['shortdate'],
+                                             strtotime ($A['datestart']));
+                    $cal_templates->set_var ('event_start', $thedatetime);
+                    $cal_templates->set_var ('event_end', $LANG_CAL_2[26]);
+                }
+
+                // set the location variables
+                $cal_templates->set_var ('lang_where', $LANG_CAL_1[4]);
+                $cal_templates->set_var ('event_location',
+                                         stripslashes ($A['location']));
+                $cal_templates->set_var ('event_address1',
+                                         stripslashes ($A['address1']));
+                $cal_templates->set_var ('event_address2',
+                                         stripslashes ($A['address2']));
+                $cal_templates->set_var ('event_zip', $A['zipcode']);
+                $cal_templates->set_var ('event_city',
+                                         stripslashes ($A['city']));
+                $cal_templates->set_var ('event_state_only', $A['state']);
+                if (empty ($A['state']) || ($A['state'] == '--')) {
+                    $cal_templates->set_var ('event_state', '');
+                    $cal_templates->set_var ('event_state_name', '');
+                    $cal_templates->set_var ('event_state_name_only', '');
+                } else {
+                    $cal_templates->set_var ('event_state', ', ' . $A['state']);
+                    $cal_templates->set_var ('event_state_name',
+                            ', ' . $_STATES[$A['state']]);
+                    $cal_templates->set_var ('event_state_name_only',
+                            $_STATES[$A['state']]);
+                }
+
+                // now figure out which of the {brX} variables to set ...
+                $hasCityEtc = (!empty ($A['city']) || !empty ($A['zip']) ||
+                               !empty ($A['state']));
+                if (empty ($A['location']) && empty ($A['address1']) &&
+                        empty ($A['address2']) && !$hasCityEtc) {
+                    $cal_templates->set_var ('br0', '');
+                    $cal_templates->set_var ('br1', '');
+                    $cal_templates->set_var ('br2', '');
+                } else {
+                    if (empty ($A['location']) || (empty ($A['address1']) &&
+                                    empty ($A['address2']) && !$hasCityEtc)) {
+                        $cal_templates->set_var ('br0', '');
+                    } else {
+                        $cal_templates->set_var ('br0', '<br>');
+                    }
+                    if (empty ($A['address1']) || (empty ($A['address2']) &&
+                                                   !$hasCityEtc)) {
+                        $cal_templates->set_var ('br1', '');
+                    } else {
+                        $cal_templates->set_var ('br1', '<br>');
+                    }
+                    if (empty ($A['address2']) || !$hasCityEtc) {
+                        $cal_templates->set_var ('br2', '');
+                    } else {
+                        $cal_templates->set_var ('br2', '<br>');
+                    }
+                }
+
+                $cal_templates->set_var ('lang_description', $LANG_CAL_1[5]);
+                $description = stripslashes ($A['description']);
+                if ($A['postmode'] == 'plaintext') {
+                    $description = nl2br ($description);
+                }
+                $cal_templates->set_var ('event_description',
+                                         PLG_replaceTags ($description));
+                $cal_templates->set_var ('lang_event_type', $LANG_CAL_1[37]);
+                $cal_templates->set_var ('event_type', $A['event_type']);
+                $cal_templates->parse ('event_details', 'details', true); 
+            }
+        }
+
+        if ($mode == 'personal') {
+            $editurl = $_CONF['site_url'] . '/calendar/event.php?action=edit'
+                     . '&amp;eid=' . $eid;
+            $cal_templates->set_var ('event_edit', '<a href="' .$editurl . '">'
+                    . $LANG01[4] . '</a>');
+            $cal_templates->set_var ('edit_icon', '<a href="' . $editurl
+                    . '"><img src="' . $_CONF['layout_url']
+                    . '/images/edit.' . $_IMAGE_TYPE . '" alt="' . $LANG01[4]
+                    . '" title="' . $LANG01[4] . '" border="0"></a>');
+        } else if ((SEC_hasAccess ($A['owner_id'], $A['group_id'],
+                $A['perm_owner'], $A['perm_group'], $A['perm_members'],
+                $A['perm_anon']) == 3) && SEC_hasRights ('calendar.edit')) {
+            $editurl = $_CONF['site_admin_url']
+                     . '/plugins/calendar/index.php?mode=edit&amp;eid=' . $eid;
+            $cal_templates->set_var ('event_edit', '<a href="' .$editurl . '">'
+                    . $LANG01[4] . '</a>');
+            $cal_templates->set_var ('edit_icon', '<a href="' . $editurl
+                    . '"><img src="' . $_CONF['layout_url']
+                    . '/images/edit.' . $_IMAGE_TYPE . '" alt="' . $LANG01[4]
+                    . '" title="' . $LANG01[4] . '" border="0"></a>');
+            $cal_templates->set_var ('hits_admin',
+                                     COM_numberFormat ($A['hits']));
+            $cal_templates->set_var ('lang_hits_admin', $LANG10[30]);
+        } else {
+            $cal_templates->set_var ('event_edit', '');
+            $cal_templates->set_var ('edit_icon', '');
+        }
+        if ($mode == 'personal') {
+            // personal events don't have a hits counter
+            $cal_templates->set_var ('lang_hits', '');
+            $cal_templates->set_var ('hits', '');
+        } else {
+            $cal_templates->set_var ('lang_hits', $LANG10[30]);
+            $cal_templates->set_var ('hits', COM_numberFormat ($A['hits']));
+        }
+
+        $cal_templates->parse ('output', 'events');
+        $display .= $cal_templates->finish ($cal_templates->get_var ('output'));
+    }
+
+    $display .= COM_endBlock() . COM_siteFooter();
+
+} // end switch
+
+echo $display;
+
+?>
Binary files 1.4.0sr5-1.src/calendar/images/calendar.png and 1.4.1.src/calendar/images/calendar.png differ
Binary files 1.4.0sr5-1.src/calendar/images/delete_event.gif and 1.4.1.src/calendar/images/delete_event.gif differ
Binary files 1.4.0sr5-1.src/calendar/images/delete_event.png and 1.4.1.src/calendar/images/delete_event.png differ
diff -ruN 1.4.0sr5-1.src/calendar/index.php 1.4.1.src/calendar/index.php
--- 1.4.0sr5-1.src/calendar/index.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/calendar/index.php	2006-09-04 02:40:33.000000000 -0500
@@ -0,0 +1,1052 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Calendar Plugin 1.0                                                       |
+// +---------------------------------------------------------------------------+
+// | index.php                                                                 |
+// |                                                                           |
+// | Geeklog calendar plugin                                                   |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2000-2006 by the following authors:                         |
+// |                                                                           |
+// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
+// |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
+// |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
+// |          Dirk Haun         - dirk AT haun-online DOT de                   |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is free software; you can redistribute it and/or             |
+// | modify it under the terms of the GNU General Public License               |
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
+// | GNU General Public License for more details.                              |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+// $Id: index.php,v 1.18 2006/09/04 07:40:33 dhaun Exp $
+
+require_once ('../lib-common.php');
+require_once ($_CONF['path_system'] . 'classes/calendar.class.php');
+
+$display = '';
+
+if (empty ($_USER['username']) &&
+    (($_CONF['loginrequired'] == 1) || ($_CA_CONF['calendarloginrequired'] == 1))) {
+    $display .= COM_siteHeader('');
+    $display .= COM_startBlock ($LANG_LOGIN[1], '',
+                                COM_getBlockTemplate ('_msg_block', 'header'));
+    $login = new Template($_CONF['path_layout'] . 'submit');
+    $login->set_file (array ('login'=>'submitloginrequired.thtml'));
+    $login->set_var ('login_message', $LANG_LOGIN[2]);
+    $login->set_var ('site_url', $_CONF['site_url']);   
+    $login->set_var ('site_admin_url', $_CONF['site_admin_url']);   
+    $login->set_var ('layout_url', $_CONF['layout_url']);   
+    $login->set_var ('lang_login', $LANG_LOGIN[3]);
+    $login->set_var ('lang_newuser', $LANG_LOGIN[4]);
+    $login->parse ('output', 'login');
+    $display .= $login->finish ($login->get_var('output'));
+    $display .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
+    $display .= COM_siteFooter();
+    echo $display;
+    exit;
+}
+
+function getDayViewData($result, $cur_time = '')
+{
+    $max = 0;
+
+    // If no date/time passed used current timestamp
+    if (empty($cur_time)) {
+        $cur_time = time();
+    }
+
+    // Initialize array
+    $hourcols = array();
+    for ($i = 0; $i <= 23; $i++) {
+        $hourcols[$i] = 0;
+    }
+
+    // Get data and increment counters
+    $thedata = array();
+    $nrows = DB_numRows($result);
+
+    $alldaydata = array ();
+    for ($i = 1; $i <= $nrows; $i++) {
+        $A = DB_fetchArray($result);
+        if ($A['allday'] == 1 OR (($A['datestart'] < date('Y-m-d',$cur_time)) AND ($A['dateend'] > date('Y-m-d',$cur_time)))) {
+            // This is an all day event
+            $alldaydata[$i] = $A;
+        } else {
+            // This is an event with start/end times
+            if ($A['datestart'] < date('Y-m-d', $cur_time) AND $A['dateend'] >= date('Y-m-d', $cur_time)) {
+                $starthour = '00';
+            } else {
+                $starthour = date('G', strtotime($A['datestart'] . ' ' . $A['timestart']));
+            }
+            $endhour = date('G', strtotime($A['dateend'] . ' ' . $A['timeend']));
+            if (date('i', strtotime($A['dateend'] . ' ' . $A['timeend'])) == '00') {
+                $endhour = $endhour - 1; 
+            }
+            $hourcols[$starthour] = $hourcols[$starthour] + 1;
+            if ($hourcols[$starthour] > $max) {
+                $max = $hourcols[$starthour];
+            }
+            $thedata[$i] = $A;
+        }
+    }
+
+    return array($hourcols, $thedata, $max, $alldaydata);
+}
+
+function setCalendarLanguage (&$aCalendar)
+{
+    global $_CONF, $LANG_WEEK, $LANG_MONTH;
+
+    $lang_days = array ('sunday'    => $LANG_WEEK[1],
+                        'monday'    => $LANG_WEEK[2],
+                        'tuesday'   => $LANG_WEEK[3],
+                        'wednesday' => $LANG_WEEK[4],
+                        'thursday'  => $LANG_WEEK[5],
+                        'friday'    => $LANG_WEEK[6],
+                        'saturday'  => $LANG_WEEK[7]);
+
+    $lang_months = array ('january'   => $LANG_MONTH[1],
+                          'february'  => $LANG_MONTH[2],
+                          'march'     => $LANG_MONTH[3],
+                          'april'     => $LANG_MONTH[4],
+                          'may'       => $LANG_MONTH[5],
+                          'june'      => $LANG_MONTH[6],
+                          'july'      => $LANG_MONTH[7],
+                          'august'    => $LANG_MONTH[8],
+                          'september' => $LANG_MONTH[9],
+                          'october'   => $LANG_MONTH[10],
+                          'november'  => $LANG_MONTH[11],
+                          'december'  => $LANG_MONTH[12]);
+
+    $aCalendar->setLanguage ($lang_days, $lang_months, $_CONF['week_start']);
+}
+
+/**                     
+* Returns an abbreviated day's name 
+*                       
+* @param    int     $day    1 = Sunday, 2 = Monday, ...
+* @return   string          abbreviated day's name (3 characters)
+*
+*
+*/
+function shortDaysName ($day)
+{
+    global $LANG_WEEK;
+
+    return MBYTE_substr ($LANG_WEEK[$day], 0, 2);
+}
+
+function makeDaysHeadline ()
+{
+    global $_CONF;
+
+    $retval = '<tr><th>';
+    if ($_CONF['week_start'] == 'Mon') {
+        $retval .= shortDaysName (2) . '</th><th>'
+                . shortDaysName (3) . '</th><th>'
+                . shortDaysName (4) . '</th><th>'
+                . shortDaysName (5) . '</th><th>'
+                . shortDaysName (6) . '</th><th>'
+                . shortDaysName (7) . '</th><th>'
+                . shortDaysName (1) . '</th></tr>';
+    } else {
+        $retval .= shortDaysName (1) . '</th><th>'
+                . shortDaysName (2) . '</th><th>'
+                . shortDaysName (3) . '</th><th>'
+                . shortDaysName (4) . '</th><th>'
+                . shortDaysName (5) . '</th><th>'
+                . shortDaysName (6) . '</th><th>'
+                . shortDaysName (7) . '</th></tr>';
+    }
+
+    return $retval;
+}
+
+/**
+* Add the 'mode=' parameter to a URL
+*
+* @param    string  $mode   the mode ('personal' or empty string)
+* @param    boolean $more   whether there are more parameters in the URL or not
+* @param    string          'mode' parameter for the URL or an empty string
+*
+*/
+function addMode ($mode, $more = true)
+{
+    $retval = '';
+
+    if (!empty ($mode)) {
+        $retval .= 'mode=' . $mode;
+        if ($more) {
+            $retval .= '&amp;';
+        }
+    }
+
+    return $retval;
+}
+
+/**
+* Return link to "delete event" image
+*
+* Note: Personal events can be deleted if the current user is the owner of the
+*       calendar and has _read_ access to them.
+*
+* @param    string  $mode   'personal' for personal events
+* @param    array   $A      event permissions and id
+* @return   string          link or empty string
+*
+*/
+function getDeleteImageLink ($mode, $A)
+{
+    global $_CONF, $LANG_CAL_ADMIN, $LANG_CAL_2, $_IMAGE_TYPE;
+
+    $retval = '';
+
+    if ($mode == 'personal') {
+        if (SEC_hasAccess ($A['owner_id'], $A['group_id'], $A['perm_owner'],
+                $A['perm_group'], $A['perm_members'], $A['perm_anon']) > 0) {
+
+            $retval = '<a href="' . $_CONF['site_url']
+                    . '/calendar/event.php?action=deleteevent&amp;eid='
+                    . $A['eid'] . '"><img src="' . $_CONF['site_url']
+                    . '/calendar/images/delete_event.' . $_IMAGE_TYPE
+                    . '" border="0" alt="' . $LANG_CAL_2[30] . '" title="'
+                    . $LANG_CAL_2[30] . '"></a>';
+        }
+    } else if (SEC_hasRights ('calendar.edit')) {
+        if (SEC_hasAccess ($A['owner_id'], $A['group_id'], $A['perm_owner'],
+                $A['perm_group'], $A['perm_members'], $A['perm_anon']) == 3) {
+
+            $retval = '<a href="' . $_CONF['site_admin_url']
+                    . '/plugins/calendar/index.php?mode=' . $LANG_CAL_ADMIN[22]
+                    . '&amp;eid=' . $A['eid'] . '"><img src="'
+                    . $_CONF['site_url']
+                    . '/calendar/images/delete_event.' . $_IMAGE_TYPE
+                    . '" border="0" alt="' . $LANG_CAL_2[30] . '" title="'
+                    . $LANG_CAL_2[30] . '"></a>';
+        }
+    }
+
+    return $retval;
+}
+
+/**
+* Gets a small, text-only version of a calendar
+*
+* @param    int     $m  Month to display
+* @param    int     $y  Year to display
+* @return   string      HTML for small calendar
+*
+*/
+function getSmallCalendar ($m, $y, $mode = '')
+{
+    global $_CONF;
+
+    $retval = '';
+    $mycal = new Calendar ();
+    setCalendarLanguage ($mycal);
+    $mycal->setCalendarMatrix ($m, $y);
+
+    if (!empty ($mode)) {
+        $mode = '&amp;mode=' . $mode;
+    }
+
+    $retval .= '<table class="smallcal">' . LB 
+            . '<tr class="smallcal-headline"><td align="center" colspan="7">'
+            . '<a href="' . $_CONF['site_url'] . '/calendar/index.php?month='
+            . $m . '&amp;year=' . $y . $mode . '">' . $mycal->getMonthName ($m)
+            . '</a></td></tr>' . makeDaysHeadline () . LB;
+
+    for ($i = 1; $i <= 6; $i++) {
+        if ($i % 2 == 0) {
+            $tr = '<tr class="smallcal-week-even">' . LB;
+        } else {
+            $tr = '<tr class="smallcal-week-odd">' . LB;
+        }
+        $tr_sent = false;
+        for ($j = 1; $j <= 7; $j++) {
+            $curday = $mycal->getDayData ($i, $j);
+            if (!$tr_sent) {
+                if (empty ($curday)) {
+                    $retval .= '<tr class="smallcal-week-empty">' . LB;
+                } else {
+                    $retval .= $tr;
+                }
+                $tr_sent = true;
+            }
+            $retval .= '<td align="right"';
+            if (!empty ($curday)) {
+                if ($j % 2 == 0) {
+                    $retval .= ' class="smallcal-day-even">' . LB;
+                } else {
+                    $retval .= ' class="smallcal-day-odd">' . LB;
+                }
+                $retval .= $curday->daynumber;
+            } else {
+                $retval .= ' class="smallcal-day-empty">&nbsp;';
+            }
+            $retval .= '</td>' . LB;
+        }
+        $retval .= '</tr>' . LB;
+    }
+
+    $retval .= '</table>' . LB;
+    
+    return $retval;
+}
+
+/**
+* Builds Quick Add form
+*
+*/
+function getQuickAdd($tpl, $month, $day, $year)
+{
+    global $_CA_CONF, $LANG_CAL_2;
+
+    $tpl->set_var ('month_options', COM_getMonthFormOptions ($month));
+    $tpl->set_var ('day_options', COM_getDayFormOptions ($day));
+    $tpl->set_var ('year_options', COM_getYearFormOptions ($year));
+
+    $cur_hour = date ('H', time ());
+    if ($cur_hour >= 12) {
+        $ampm = 'pm';
+    } else {
+        $ampm = 'am';
+    }
+    $cur_hour_24 = $cur_hour % 24;
+    if ($cur_hour > 12) {
+        $cur_hour = $cur_hour - 12;
+    } else if ($cur_hour == 0) {
+        $cur_hour = 12;
+    }
+    if (isset ($_CA_CONF['hour_mode']) && ($_CA_CONF['hour_mode'] == 24)) {
+        $tpl->set_var ('hour_mode', 24);
+        $tpl->set_var ('hour_options',
+                       COM_getHourFormOptions ($cur_hour_24, 24));
+    } else {
+        $tpl->set_var ('hour_mode', 12);
+        $tpl->set_var ('hour_options', COM_getHourFormOptions ($cur_hour));
+    }
+    $tpl->set_var ('startampm_selection',
+                   COM_getAmPmFormSelection ('start_ampm', $ampm));
+    $cur_min = intval (date ('i') / 15) * 15;
+    $tpl->set_var ('minute_options', COM_getMinuteFormOptions ($cur_min, 15));
+
+    $tpl->set_var ('lang_event', $LANG_CAL_2[32]);
+    $tpl->set_var ('lang_date', $LANG_CAL_2[33]);
+    $tpl->set_var ('lang_time', $LANG_CAL_2[34]);
+    $tpl->set_var ('lang_add', $LANG_CAL_2[31]);
+    $tpl->set_var ('lang_quickadd', $LANG_CAL_2[35]);
+    $tpl->set_var ('lang_submit', $LANG_CAL_2[36]);
+    $tpl->parse ('quickadd_form', 'quickadd', true);
+
+    return $tpl;
+}
+
+/** 
+* Returns timestamp for the prior sunday of a given day
+*
+*/
+function getPriorSunday($month, $day, $year) 
+{
+    $thestamp = mktime(0, 0, 0, $month, $day, $year);
+    $newday = $day - date('w', $thestamp);
+    $newstamp = mktime(0,0,0,$month,$newday,$year);
+    $newday = date('j',$newstamp);
+    $newmonth = date('n', $newstamp);
+    $newyear = date('Y',$newstamp);
+
+    return array($newmonth, $newday, $newyear);
+}
+
+$mode = '';
+if (isset ($_REQUEST['mode'])) {
+    $mode = COM_applyFilter ($_REQUEST['mode']);
+}
+
+if ($mode != 'personal' && $mode != 'quickadd') {
+    $mode = '';
+}
+
+if ($mode == 'personal') {
+    $display .= COM_siteHeader ('menu', $LANG_CAL_1[42]);
+} else {
+    $display .= COM_siteHeader ('menu', $LANG_CAL_1[41]);
+}
+
+// Set mode back to master if user refreshes screen after their session expires
+if (($mode == 'personal') && (!isset ($_USER['uid']) || ($_USER['uid'] <= 1))) {
+    $mode = '';
+}
+
+if ($mode == 'personal' AND $_CA_CONF['personalcalendars'] == 0) {
+    // User is trying to use the personal calendar feature even though it isn't
+    // turned on.
+    $display .= $LANG_CAL_2[37];
+    $display .= COM_siteFooter();
+    echo $display;
+    exit;
+}
+
+// after this point, we can safely assume that if $mode == 'personal',
+// the current user is actually allowed to use this personal calendar
+
+$msg = 0;
+if (isset ($_REQUEST['msg'])) {
+    $msg = COM_applyFilter ($_REQUEST['msg'], true);
+}
+if ($msg > 0) {
+    $display .= COM_showMessage ($msg, 'calendar');
+}
+
+$view = '';
+if (isset ($_REQUEST['view'])) {
+    $view = COM_applyFilter ($_REQUEST['view']);
+}
+
+if (!in_array ($view, array ('month', 'week', 'day', 'addentry', 'savepersonal'))) {
+    $view = '';
+}
+
+$year = 0;
+if (isset ($_REQUEST['year'])) {
+    $year = COM_applyFilter ($_REQUEST['year'], true);
+}
+$month = 0;
+if (isset ($_REQUEST['month'])) {
+    $month = COM_applyFilter ($_REQUEST['month'], true);
+}
+$day = 0;
+if (isset ($_REQUEST['day'])) {
+    $day = COM_applyFilter ($_REQUEST['day'], true);
+}
+
+// Create new calendar object
+$cal = new Calendar();
+
+if ($view == 'week' AND (empty($month) AND empty($day) AND empty($year))) {
+    list($month, $day, $year) = getPriorSunday(date('m', time()), date('j', time()), date('Y', time()));
+} else {
+    // Get current month
+    $currentmonth = date('m', time());
+    if (empty($month)) {
+        $month = $currentmonth;
+    }
+
+    // Get current year
+    $currentyear = date('Y', time());
+    if (empty($year)) {
+        $year = $currentyear;
+    }
+
+    // Get current day
+    $currentday =  date('j', time());
+    if (empty($day)) {
+        $day = $currentday;
+    }
+}
+
+// Get previous month and year
+$prevmonth = $month - 1;
+if ($prevmonth == 0) {
+    $prevmonth = 12;
+    $prevyear = $year - 1;
+} else {
+    $prevyear = $year;
+}
+
+// Get next month and year
+$nextmonth = $month + 1;
+if ($nextmonth == 13) {
+    $nextmonth = 1;
+    $nextyear = $year + 1;
+} else {
+    $nextyear = $year;
+}
+
+setCalendarLanguage ($cal);
+
+// Build calendar matrix
+$cal->setCalendarMatrix ($month, $year);
+
+switch ($view) {
+case 'day':
+    $cal_templates = new Template($_CONF['path'] . '/plugins/calendar/templates/dayview');
+    $cal_templates->set_file(array('column'=>'column.thtml',
+                                   'event'=>'singleevent.thtml',
+                                   'dayview'=>'dayview.thtml',
+                                   'quickadd'=>'quickaddform.thtml'));
+    $cal_templates->set_var ('site_url', $_CONF['site_url']);
+    $cal_templates->set_var ('site_admin_url', $_CONF['site_admin_url']);
+    $cal_templates->set_var ('layout_url', $_CONF['layout_url']);
+    $cal_templates->set_var('mode', $mode);
+    $cal_templates->set_var('lang_day', $LANG_CAL_2[39]);
+    $cal_templates->set_var('lang_week', $LANG_CAL_2[40]);
+    $cal_templates->set_var('lang_month', $LANG_CAL_2[41]);
+    list($wmonth, $wday, $wyear) = getPriorSunday($month, $day, $year);
+    $cal_templates->set_var('wmonth', $wmonth);
+    $cal_templates->set_var('wday', $wday);
+    $cal_templates->set_var('wyear', $wyear);
+    $cal_templates->set_var('month',$month);
+    $cal_templates->set_var('day', $day);
+    $cal_templates->set_var('year',$year);
+    $prevstamp = mktime(0, 0, 0,$month, $day - 1, $year);
+    $nextstamp = mktime(0, 0, 0,$month, $day + 1, $year);
+    $cal_templates->set_var('prevmonth', strftime('%m',$prevstamp));
+    $cal_templates->set_var('prevday', strftime('%d',$prevstamp));
+    $cal_templates->set_var('prevyear', strftime('%Y',$prevstamp));
+    $cal_templates->set_var('nextmonth', strftime('%m',$nextstamp));
+    $cal_templates->set_var('nextday', strftime('%d',$nextstamp));
+    $cal_templates->set_var('nextyear', strftime('%Y',$nextstamp));
+
+    $cal_templates->set_var('currentday', strftime('%A, %x',mktime(0, 0, 0,$month, $day, $year)));
+    if ($mode == 'personal') {
+        $cal_templates->set_var('calendar_title', '[' . $LANG_CAL_2[28] . ' ' . COM_getDisplayName());
+        $cal_templates->set_var('calendar_toggle', '|&nbsp;<a href="'
+                               . $_CONF['site_url'] . "/calendar/index.php?view=day&amp;month=$month&amp;day=$day&amp;year=$year\">" . $LANG_CAL_2[11] . '</a>]');
+    } else {
+        $cal_templates->set_var('calendar_title', '[' . $_CONF['site_name'] . ' ' . $LANG_CAL_2[29]);
+        if (!empty($_USER['uid']) AND $_CA_CONF['personalcalendars'] == 1) {
+            $cal_templates->set_var('calendar_toggle', '|&nbsp;<a href="'
+                                   . $_CONF['site_url'] . "/calendar/index.php?mode=personal&amp;view=day&amp;month=$month&amp;day=$day&amp;year=$year\">" . $LANG_CAL_2[12] . '</a>]');
+        } else {
+            $cal_templates->set_var('calendar_toggle', ']');
+        }
+    }
+    $thedate = COM_getUserDateTimeFormat(mktime(0,0,0,$month,$day,$year));
+    $cal_templates->set_var('week_num',strftime('%V',$thedate[1]));
+    if ($mode == 'personal') {
+        $calsql = "SELECT eid,title,datestart,dateend,timestart,timeend,allday,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon FROM {$_TABLES['personal_events']} "
+                . "WHERE (uid = {$_USER['uid']}) "
+                . "AND ((allday=1 AND datestart = \"$year-$month-$day\") "
+                . "OR (datestart >= \"$year-$month-$day 00:00:00\" AND datestart <= \"$year-$month-$day 23:59:59\") "
+                . "OR (dateend >= \"$year-$month-$day 00:00:00\" AND dateend <= \"$year-$month-$day 23:59:59\") "
+                . "OR (\"$year-$month-$day\" BETWEEN datestart AND dateend)) "
+                . "ORDER BY datestart,timestart";
+    } else {
+        $calsql = "SELECT eid,title,datestart,dateend,timestart,timeend,allday,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon FROM {$_TABLES['events']} WHERE ((allday=1 "
+                . "AND datestart = \"$year-$month-$day\") "
+                . "OR (datestart >= \"$year-$month-$day 00:00:00\" AND datestart <= \"$year-$month-$day 23:59:59\") "
+                . "OR (dateend >= \"$year-$month-$day 00:00:00\" AND dateend <= \"$year-$month-$day 23:59:59\") "
+                . "OR (\"$year-$month-$day\" BETWEEN datestart AND dateend))" . COM_getPermSql ('AND')
+                . " ORDER BY datestart,timestart";
+    }
+    $result = DB_query($calsql);
+    $nrows = DB_numRows($result);
+    list($hourcols, $thedata, $max, $alldaydata) = getDayViewData($result);
+
+    // Get all day events
+    if (count ($alldaydata) > 0) {
+        for ($i = 1; $i <= count ($alldaydata); $i++) {
+            $A = current($alldaydata);
+            $cal_templates->set_var ('delete_imagelink',
+                                     getDeleteImageLink ($mode, $A));
+            $cal_templates->set_var('event_time', $LANG_CAL_2[26]);
+            $cal_templates->set_var('eid', $A['eid']);
+            $cal_templates->set_var('event_title',stripslashes($A['title']));
+            if ($i < count($alldaydata)) {
+                $cal_templates->set_var('br', '<br>');
+            } else {
+                $cal_templates->set_var('br', '');
+            }
+            $cal_templates->parse('allday_events','event', true); 
+            next($alldaydata);
+        }
+    } else {
+        $cal_templates->set_var('allday_events','&nbsp;');
+    }
+
+    //$cal_templates->set_var('first_colspan', $maxcols);
+    //$cal_templates->set_var('title_colspan', $maxcols + 1);
+    for ($i = 0; $i <= 23; $i++) {
+        $numevents = $hourcols[$i];
+        if ($numevents > 0) {
+            // $colsleft = $maxcols;
+            $cal_templates->set_var ('layout_url', $_CONF['path'] . 'plugins/calendar/templates/');
+            for ($j = 1; $j <= $numevents; $j++) {
+                $A = current ($thedata);
+                $cal_templates->set_var ('event_time',
+                    strftime ($_CONF['timeonly'], strtotime ($A['datestart']
+                            . ' ' . $A['timestart'])) . '-'
+                    . strftime ($_CONF['timeonly'], strtotime ($A['dateend']
+                            . ' ' . $A['timeend'])));
+                $cal_templates->set_var ('delete_imagelink',
+                                         getDeleteImageLink ($mode, $A));
+                $cal_templates->set_var('eid', $A['eid']);
+                $cal_templates->set_var('event_title', stripslashes($A['title']));
+                if ($j < $numevents) {
+                    $cal_templates->set_var('br', '<br>');
+                } else {
+                    $cal_templates->set_var('br', '');
+                }
+                $cal_templates->parse ('event_entry', 'event',
+                                       ($j == 1) ? false : true);
+                // $colsleft = $colsleft - 1;
+                next($thedata);
+            }
+        } else {
+            $cal_templates->set_var('event_entry','&nbsp;');
+        }
+        $cal_templates->set_var ($i . '_hour',
+                strftime ($_CONF['timeonly'], mktime ($i, 0)));
+        $cal_templates->parse ($i . '_cols', 'column', true);
+    }
+
+    if ($mode == 'personal') {
+        $cal_templates = getQuickAdd($cal_templates, $month, $day, $year);
+    } else {
+        $cal_templates->set_var('quickadd_form','');
+    }
+    $display .= $cal_templates->parse('output', 'dayview');
+    $display .= COM_siteFooter();
+    break;
+
+case 'week':
+    $cal_templates = new Template($_CONF['path'] . '/plugins/calendar/templates');
+    $cal_templates->set_file(array('week'=>'weekview/weekview.thtml',
+                                   'events'=>'weekview/events.thtml',
+                                   'quickadd'=>'dayview/quickaddform.thtml'));
+    $cal_templates->set_var ('site_url', $_CONF['site_url']);
+    $cal_templates->set_var ('site_admin_url', $_CONF['site_admin_url']);
+    $cal_templates->set_var ('layout_url', $_CONF['layout_url']);
+    $cal_templates->set_var('mode', $mode);
+    $cal_templates->set_var('lang_week', $LANG_CAL_2[27]);
+    if ($mode == 'personal') {
+        $cal_templates->set_var('calendar_title', '[' . $LANG_CAL_2[28] . ' ' . COM_getDisplayName());
+        $cal_templates->set_var('calendar_toggle', '|&nbsp;<a href="' . $_CONF['site_url']
+                                                 . "/calendar/index.php?view=week&amp;month=$month&amp;day=$day&amp;year=$year\">"
+                                                 . $LANG_CAL_2[11] . '</a>]');
+    } else {
+        $cal_templates->set_var('calendar_title', '[' . $_CONF['site_name'] . ' ' . $LANG_CAL_2[29]);
+        if (!empty($_USER['uid']) AND $_CA_CONF['personalcalendars'] == 1) {
+            $cal_templates->set_var('calendar_toggle', '|&nbsp;<a href="' . $_CONF['site_url']
+                                                     . "/calendar/index.php?mode=personal&amp;view=week&amp;month=$month&amp;day=$day&amp;year=$year\">"
+                                                     . $LANG_CAL_2[12] . '</a>]');
+        } else {
+            $cal_templates->set_var('calendar_toggle', ']');
+        }
+    }
+    if ($mode == 'personal') {
+        $cal_templates = getQuickAdd($cal_templates, $month, $day, $year);
+    } else {
+        $cal_templates->set_var('quickadd_form','');
+    }
+    // Get data for previous week
+    $prevstamp = mktime(0,0,0,$month,$day-7,$year);
+    $nextstamp = mktime(0,0,0,$month,$day+7,$year);
+    $cal_templates->set_var('prevmonth',strftime('%m',$prevstamp));
+    $cal_templates->set_var('prevday',date('j',$prevstamp));
+    $cal_templates->set_var('prevyear',strftime('%Y',$prevstamp));
+    $cal_templates->set_var('nextmonth',strftime('%m',$nextstamp));
+    $cal_templates->set_var('nextday',date('j',$nextstamp));
+    $cal_templates->set_var('nextyear',strftime('%Y',$nextstamp));
+    $cal_templates->set_var ('lang_day', $LANG_CAL_2[39]);
+    $cal_templates->set_var ('lang_week', $LANG_CAL_2[40]);
+    $cal_templates->set_var ('lang_month', $LANG_CAL_2[41]);
+    if ($_CONF['week_start'] == 'Mon') {
+        $time_day1 = mktime (0, 0, 0, $month, $day + 1, $year);
+        $time_day7 = mktime (0, 0, 0, $month, $day + 7, $year);
+        $start_mname = strftime ('%B', $time_day1);
+        $eday = strftime ('%e', $time_day7);
+        $end_mname = strftime ('%B', $time_day7);
+        $end_ynum = strftime ('%Y', $time_day7);
+        $date_range = $start_mname . ' ' . strftime ('%e', $time_day1);
+    } else {
+        $start_mname = strftime ('%B', mktime (0, 0, 0, $month, $day, $year));
+        $time_day6 = mktime (0, 0, 0, $month, $day + 6, $year);
+        $eday = strftime ('%e', $time_day6);
+        $end_mname = strftime ('%B', $time_day6);
+        $end_ynum = strftime ('%Y', $time_day6);
+        $date_range = $start_mname . ' ' . $day;
+    }
+    if ($year <> $end_ynum) {
+        $date_range .= ', ' . $year . ' - ';
+    } else {
+        $date_range .= ' - ';
+    }
+    if ($start_mname <> $end_mname) {
+        $date_range .= $end_mname . ' ' . $eday . ', ' . $end_ynum;
+    } else {
+        $date_range .= $eday . ', ' . $end_ynum;
+    }
+    $cal_templates->set_var('date_range', $date_range);
+    if ($_CONF['week_start'] == 'Mon') {
+        $thedate = COM_getUserDateTimeFormat (mktime (0, 0, 0, $month, $day + 1,$year));
+    } else {
+        $thedate = COM_getUserDateTimeFormat (mktime (0, 0, 0, $month, $day, $year));
+    }
+    $cal_templates->set_var('week_num',$thedate[1]);
+    for ($i = 1; $i <= 7; $i++) {
+        if ($_CONF['week_start'] == 'Mon') {
+            $dayname = (date ('w', $thedate[1]) == 0)
+                     ? $cal->getDayName (7)
+                     : $cal->getDayName (date ('w', $thedate[1]));
+        } else {
+            $dayname = $cal->getDayName (date ('w', $thedate[1]) + 1);
+        }
+        $monthnum = date('m', $thedate[1]);
+        $daynum = date('d', $thedate[1]);
+        $yearnum = date('Y', $thedate[1]);
+        if ($yearnum . '-' . $monthnum . '-' . $daynum == date('Y-m-d',time())) {
+            $cal_templates->set_var('class'.$i,'weekview-curday');
+        } else {
+            $cal_templates->set_var('class'.$i,'weekview-offday');
+        }
+        $monthname = $cal->getMonthName($monthnum);
+        $cal_templates->set_var ('day' . $i, $dayname . ', <a href="'
+            . $_CONF['site_url'] . '/calendar/index.php?' . addMode ($mode)
+            . 'view=day&amp;day=' . $daynum . '&amp;month=' . $monthnum
+            . '&amp;year=' . $yearnum . '">' . strftime ('%x', $thedate[1])
+            . '</a>');
+        if ($mode == 'personal') {
+            $add_str =  $LANG_CAL_2[8];
+        } else {
+            $add_str =  $LANG_CAL_2[42];
+        }    
+        
+        $cal_templates->set_var ('langlink_addevent' . $i, '<a href="'
+            . $_CONF['site_url'] . '/submit.php?type=calendar&amp;'
+            . addMode ($mode) . 'day=' . $daynum . '&amp;month=' . $monthnum
+            . '&amp;year=' . $yearnum . '">' . $add_str . '</a>');
+        if ($mode == 'personal') {
+            $calsql = "SELECT eid,title,datestart,dateend,timestart,timeend,allday,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon FROM {$_TABLES['personal_events']} WHERE (uid = {$_USER['uid']}) AND ((allday=1 AND datestart = \"$yearnum-$monthnum-$daynum\") OR (datestart >= \"$yearnum-$monthnum-$daynum 00:00:00\" AND datestart <= \"$yearnum-$monthnum-$daynum 23:59:59\") OR (dateend >= \"$yearnum-$monthnum-$daynum 00:00:00\" AND dateend <= \"$yearnum-$monthnum-$daynum 23:59:59\") OR (\"$yearnum-$monthnum-$daynum\" BETWEEN datestart AND dateend)) ORDER BY datestart,timestart";
+        } else {
+            $calsql = "SELECT eid,title,datestart,dateend,timestart,timeend,allday,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon FROM {$_TABLES['events']} WHERE ((allday=1 AND datestart = \"$yearnum-$monthnum-$daynum\") OR (datestart >= \"$yearnum-$monthnum-$daynum 00:00:00\" AND datestart <= \"$yearnum-$monthnum-$daynum 23:59:59\") OR (dateend >= \"$yearnum-$monthnum-$daynum 00:00:00\" AND dateend <= \"$yearnum-$monthnum-$daynum 23:59:59\") OR (\"$yearnum-$monthnum-$daynum\" BETWEEN datestart AND dateend))" . COM_getPermSql ('AND') . " ORDER BY datestart,timestart";
+        }
+        $result = DB_query($calsql);
+        $nrows = DB_numRows($result);
+        for ($j = 1; $j <= $nrows; $j++) {
+            $A = DB_fetchArray($result);
+            if ($A['allday'] == 1) {
+                $cal_templates->set_var('event_starttime', $LANG_CAL_2[26]);
+                $cal_templates->set_var('event_endtime','');
+            } else {
+                $startstamp = strtotime($A['datestart'] . ' ' . $A['timestart']);
+                $endstamp = strtotime($A['dateend'] . ' ' . $A['timeend']);
+                $startday = date('d',$startstamp);
+                $startmonth = date('n',$startstamp);
+                $endday = date('d', $endstamp);
+                $endmonth = date('n',$endstamp);
+                if (($startmonth == $monthnum && $daynum > $startday) OR ($startmonth <> $monthnum)) {
+                    $starttime = date('n/j g:i a',$startstamp);
+                } else { 
+                    $starttime = date('g:i a', $startstamp); 
+                }
+                if (($endmonth == $monthnum && $daynum < $endday) OR ($endmonth <> $monthnum)) {
+                    $endtime = date('n/j g:i a', $endstamp);
+                } else { 
+                    $endtime = date('g:i a', $endstamp); 
+                }
+                $cal_templates->set_var('event_starttime', $starttime);
+                $cal_templates->set_var('event_endtime', ' - ' . $endtime);
+            }
+            $cal_templates->set_var ('event_title_and_link', '<a href="'
+                . $_CONF['site_url'] . '/calendar/event.php?' . addMode ($mode)
+                . 'eid=' . $A['eid'] . '">' . stripslashes($A['title'])
+                . '</a>');
+            // Provide delete event link if user has access
+            $cal_templates->set_var ('delete_imagelink',
+                                     getDeleteImageLink ($mode, $A));
+            $cal_templates->parse ('events_day' . $i, 'events', true);
+        }
+        if ($nrows == 0) {
+            $cal_templates->set_var('event_starttime','&nbsp;');
+            $cal_templates->set_var('event_endtime','');
+            $cal_templates->set_var('event_title_and_link','');
+            $cal_templates->set_var('delete_imagelink','');
+            $cal_templates->parse('events_day'.$i,'events',true);
+        }
+        // Go to next day
+        $thedate = COM_getUserDateTimeFormat(mktime(0,0,0,$monthnum, $daynum + 1, $yearnum));
+    }
+
+    $display .= $cal_templates->parse('output','week');
+    $display .= COM_siteFooter();
+    break;
+    
+case 'addentry':
+    $display .= plugin_submit_calendar($mode);
+    break;
+case 'savepersonal':
+    $display = plugin_savesubmission_calendar($_POST);
+    break;
+
+default: // month view
+// Load templates
+
+$cal_templates = new Template($_CONF['path'] . '/plugins/calendar/templates');
+$cal_templates->set_file (array (
+        'calendar'    => 'calendar.thtml',
+        'week'        => 'calendarweek.thtml',
+        'day'         => 'calendarday.thtml',
+        'event'       => 'calendarevent.thtml',
+        'mastercal'   => 'mastercalendaroption.thtml',
+        'personalcal' => 'personalcalendaroption.thtml',
+        'addevent'    => 'addeventoption.thtml'
+        ));
+
+$cal_templates->set_var ('site_url', $_CONF['site_url']);
+$cal_templates->set_var ('site_admin_url', $_CONF['site_admin_url']);
+$cal_templates->set_var ('layout_url', $_CONF['layout_url']);
+$cal_templates->set_var ('mode', $mode);
+if ($mode == 'personal') {
+    $cal_templates->set_var ('start_block', COM_startBlock ($LANG_CAL_2[12]));
+    $cal_templates->set_var ('end_block', COM_endBlock ());
+} else {
+    $cal_templates->set_var ('start_block', COM_startBlock ($LANG_CAL_2[11]));
+    $cal_templates->set_var ('end_block', COM_endBlock ());
+}
+
+$smallcal_prev = getSmallCalendar ($prevmonth, $prevyear, $mode);
+$cal_templates->set_var ('previous_months_calendar', $smallcal_prev);
+$cal_templates->set_var ('previous_months_cal',
+                         '<font size="-2">' . LB . $smallcal_prev . '</font>');
+
+$smallcal_next = getSmallCalendar ($nextmonth, $nextyear, $mode);
+$cal_templates->set_var ('next_months_calendar', $smallcal_next);
+$cal_templates->set_var ('next_months_cal',
+                         '<font size="-2">' . LB . $smallcal_next . '</font>');
+
+$cal_templates->set_var('cal_prevmo_num', $prevmonth);
+$cal_templates->set_var('cal_prevyr_num', $prevyear);
+$cal_templates->set_var('cal_month_and_year', $cal->getMonthName($month) . ' ' . $year);
+$cal_templates->set_var('cal_nextmo_num', $nextmonth);
+$cal_templates->set_var('cal_nextyr_num', $nextyear);
+
+if ($_CONF['week_start'] == 'Mon') {
+    $cal_templates->set_var('lang_sunday', $LANG_WEEK[2]);
+    $cal_templates->set_var('lang_monday', $LANG_WEEK[3]);
+    $cal_templates->set_var('lang_tuesday', $LANG_WEEK[4]);
+    $cal_templates->set_var('lang_wednesday', $LANG_WEEK[5]);
+    $cal_templates->set_var('lang_thursday', $LANG_WEEK[6]);
+    $cal_templates->set_var('lang_friday', $LANG_WEEK[7]);
+    $cal_templates->set_var('lang_saturday', $LANG_WEEK[1]);
+} else {
+    $cal_templates->set_var('lang_sunday', $LANG_WEEK[1]);
+    $cal_templates->set_var('lang_monday', $LANG_WEEK[2]);
+    $cal_templates->set_var('lang_tuesday', $LANG_WEEK[3]);
+    $cal_templates->set_var('lang_wednesday', $LANG_WEEK[4]);
+    $cal_templates->set_var('lang_thursday', $LANG_WEEK[5]);
+    $cal_templates->set_var('lang_friday', $LANG_WEEK[6]);
+    $cal_templates->set_var('lang_saturday', $LANG_WEEK[7]);
+}
+
+$cal_templates->set_var('lang_january', $LANG_MONTH[1]);
+if ($month == 1) $cal_templates->set_var('selected_jan','selected="selected"');
+$cal_templates->set_var('lang_february', $LANG_MONTH[2]);
+if ($month == 2) $cal_templates->set_var('selected_feb','selected="selected"');
+$cal_templates->set_var('lang_march', $LANG_MONTH[3]);
+if ($month == 3) $cal_templates->set_var('selected_mar','selected="selected"');
+$cal_templates->set_var('lang_april', $LANG_MONTH[4]);
+if ($month == 4) $cal_templates->set_var('selected_apr','selected="selected"');
+$cal_templates->set_var('lang_may', $LANG_MONTH[5]);
+if ($month == 5) $cal_templates->set_var('selected_may','selected="selected"');
+$cal_templates->set_var('lang_june', $LANG_MONTH[6]);
+if ($month == 6) $cal_templates->set_var('selected_jun','selected="selected"');
+$cal_templates->set_var('lang_july', $LANG_MONTH[7]);
+if ($month == 7) $cal_templates->set_var('selected_jul','selected="selected"');
+$cal_templates->set_var('lang_august', $LANG_MONTH[8]);
+if ($month == 8) $cal_templates->set_var('selected_aug','selected="selected"');
+$cal_templates->set_var('lang_september', $LANG_MONTH[9]);
+if ($month == 9) $cal_templates->set_var('selected_sep','selected="selected"');
+$cal_templates->set_var('lang_october', $LANG_MONTH[10]);
+if ($month == 10) $cal_templates->set_var('selected_oct','selected="selected"');
+$cal_templates->set_var('lang_november', $LANG_MONTH[11]);
+if ($month == 11) $cal_templates->set_var('selected_nov','selected="selected"');
+$cal_templates->set_var('lang_december', $LANG_MONTH[12]);
+if ($month == 12) $cal_templates->set_var('selected_dec','selected="selected"');
+
+$cal_templates->set_var('lang_day', $LANG_CAL_2[39]);
+$cal_templates->set_var('lang_week', $LANG_CAL_2[40]);
+$cal_templates->set_var('lang_month', $LANG_CAL_2[41]);
+
+if ($mode == 'personal') {
+    $cal_templates->set_var ('calendar_title',
+                             $LANG_CAL_2[28] . ' ' . COM_getDisplayName());
+} else {
+    $cal_templates->set_var ('calendar_title',
+                             $_CONF['site_name'] . ' ' . $LANG_CAL_2[29]);
+}
+
+$yroptions = '';
+for ($y = $currentyear - 5; $y <= $currentyear + 5; $y++) {
+    $yroptions .= '<option value="' . $y . '"';
+    if ($y == $year) {
+        $yroptions .= ' selected="selected"';
+    }
+    $yroptions .= '>' . $y . '</option>'.LB;
+}
+$cal_templates->set_var('year_options', $yroptions);
+
+for ($i = 1; $i <= 6; $i++) {
+    $wday = '';
+    for ($j = 1; $j <= 7; $j++) {
+        $curday = $cal->getDayData($i, $j);
+        if (!empty($curday)) {
+            // Cache first actual day of the week to build week view link
+            if (empty($wday)) {
+                $wday = $curday->daynumber;
+            }
+            if (($currentyear > $year) OR
+                ($currentmonth > $month && $currentyear == $year) OR
+                ($currentmonth == $month && $currentday > $curday->daynumber && $currentyear == $year)) {
+                $cal_templates->set_var('cal_day_style', 'cal-oldday'); 
+            } else {
+                if ($currentyear == $year && $currentmonth == $month && $currentday == $curday->daynumber) {
+                    $cal_templates->set_var('cal_day_style','cal-today');
+                } else {
+                    $cal_templates->set_var('cal_day_style', 'cal-futureday');
+                }
+            }
+
+            if (strlen($curday->daynumber) == 1) {
+                $curday->daynumber = '0' . $curday->daynumber;
+            }
+
+            $cal_templates->set_var ('cal_day_anchortags', '<a href="'
+                . $_CONF['site_url'] . '/calendar/index.php?view=day&amp;'
+                . addMode ($mode) . 'day=' . $curday->daynumber. '&amp;month='
+                . $month . '&amp;year=' . $year . '" class="cal-date">'
+                . $curday->daynumber. '</a><hr>');
+
+            if (strlen($month) == 1) {
+                $month = '0' . $month;
+            }
+
+            if ($mode == 'personal') {
+                $calsql_tbl = $_TABLES['personal_events'];
+                $calsql_filt = "AND (uid = {$_USER['uid']})";
+            } else {
+                $calsql_tbl = $_TABLES['events'];
+                $calsql_filt = COM_getPermSql ('AND');
+            }
+            
+            $calsql = "SELECT eid,title,datestart,dateend,timestart,timeend,allday,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon FROM $calsql_tbl WHERE "
+                    . "((datestart >= \"$year-$month-$curday->daynumber 00:00:00\" "
+                    . "AND datestart <= \"$year-$month-$curday->daynumber 23:59:59\") "
+                    . "OR (dateend >= \"$year-$month-$curday->daynumber 00:00:00\" "
+                    . "AND dateend <= \"$year-$month-$curday->daynumber 23:59:59\") "
+                    . "OR (\"$year-$month-$curday->daynumber\" BETWEEN datestart AND dateend))"
+                    . $calsql_filt . " ORDER BY datestart,timestart";
+
+            $query2 = DB_query($calsql);
+            $q2_numrows = DB_numRows($query2);
+
+            if ($q2_numrows > 0) {
+                $entries = '';
+                for ($z = 1; $z <= $q2_numrows; $z++) {
+                    $results = DB_fetchArray ($query2);
+                    if ($results['title']) {
+                        $cal_templates->set_var ('cal_day_entries', '');
+                        $entries .= '<a href="' . $_CONF['site_url']
+                            . '/calendar/event.php?' . addMode ($mode)
+                            . 'eid=' . $results['eid'] . '" class="cal-event">'
+                            . stripslashes ($results['title']) . '</a><hr>';
+                    }
+                }
+                for ($z = $z; $z <= 4; $z++) {
+                    $entries .= '<br>';
+                }
+
+                $cal_templates->set_var('event_anchortags', $entries);
+
+            } else {
+                if ($q2_numrows < 4) {
+                    for ($t=0; $t < (4 - $q2_numrows); $t++) {
+                        $cal_templates->set_var('cal_day_entries','<br><br><br><br>');
+                    }
+                }
+            }
+
+            $cal_templates->parse('cal_day_entries', 'event', true);
+            $cal_templates->set_var('event_anchortags','');
+        } else {
+            if ($i > 1) {
+                // Close out calendar if needed
+                for ($k = $j; $k <= 7; $k++) {
+                    $cal_templates->set_var('cal_day_style','cal-nullday');
+                    $cal_templates->set_var('cal_day_anchortags', '');
+                    $cal_templates->set_var('cal_day_entries','&nbsp;');
+                    if ($k < 7) $cal_templates->parse('cal_days', 'day', true);
+                }
+                // for looping to stop...we are done now
+                $i = 7;
+                $j = 8;
+            } else {
+                // Print empty box for any days in the first week that occur
+                // before the first day
+                $cal_templates->set_var('cal_day_style','cal-nullday');
+                $cal_templates->set_var('cal_day_anchortags', '');
+                $cal_templates->set_var('cal_day_entries','&nbsp;');
+            }
+        }
+        $cal_templates->parse('cal_days','day',true);
+    }
+    list($wmonth, $wday, $wyear) = getPriorSunday($month, $wday, $year);
+    $cal_templates->set_var('wmonth', $wmonth);
+    $cal_templates->set_var('wday', $wday);
+    $cal_templates->set_var('wyear', $wyear);
+    $cal_templates->parse('cal_week', 'week',true);
+    $cal_templates->set_var('cal_days','');
+
+    // check if we need to render the following week at all
+    if ($i < 6) {
+        $data = $cal->getDayData ($i + 1, 1);
+        if (empty ($data)) {
+            break;     
+        }
+    }
+}
+
+if ($mode == 'personal') {
+    $cal_templates->set_var('lang_mastercal', $LANG_CAL_2[25] . $LANG_CAL_2[11]);
+    $cal_templates->parse('master_calendar_option','mastercal',true); 
+} else {
+    if (isset ($_USER['uid']) && ($_USER['uid'] > 1) &&
+            ($_CA_CONF['personalcalendars'] == 1)) {
+        $cal_templates->set_var('lang_mycalendar', $LANG_CAL_2[12]);
+        $cal_templates->parse('personal_calendar_option','personalcal',true); 
+    } else {
+        $cal_templates->set_var('personal_calendar_option','&nbsp;');
+    }
+}
+
+
+$cal_templates->set_var('lang_cal_curmo', $LANG_MONTH[$currentmonth + 0]);
+$cal_templates->set_var('cal_curmo_num', $currentmonth);
+$cal_templates->set_var('cal_curyr_num', $currentyear);
+$cal_templates->set_var('lang_cal_displaymo', $LANG_MONTH[$month + 0]);
+$cal_templates->set_var('cal_displaymo_num', $month);
+$cal_templates->set_var('cal_displayyr_num', $year);
+if ($mode == 'personal') {
+    $cal_templates->set_var('lang_addevent', $LANG_CAL_2[8]);
+    $cal_templates->set_var('addevent_formurl', '/calendar/index.php');
+} else {
+    $cal_templates->set_var('lang_addevent', $LANG_CAL_2[42]);
+    $cal_templates->set_var('addevent_formurl', '/submit.php?type=calendar');   
+}
+$cal_templates->parse('add_event_option','addevent',true);
+$cal_templates->parse('output','calendar');
+$display .= $cal_templates->finish($cal_templates->get_var('output'));
+
+$display .= COM_siteFooter();
+break;
+
+} // end switch	
+
+echo $display;
+
+?>
diff -ruN 1.4.0sr5-1.src/calendar/style.css 1.4.1.src/calendar/style.css
--- 1.4.0sr5-1.src/calendar/style.css	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/calendar/style.css	2006-10-10 06:37:00.000000000 -0500
@@ -0,0 +1,161 @@
+/* Calendar Plugin */
+
+.cal-body {
+  background:#FFFFFF;
+  border-bottom:#E7E7E7 1px solid;
+  border-left:#E7E7E7 1px solid;
+  border-right:#E7E7E7 1px solid;
+  border-top:#E7E7E7 1px solid;
+  color:#000000;
+  font-weight:bold;
+}
+.cal-day,
+.cal_day {
+  background:transparent;
+  border-bottom:#F7F7F7 1px dashed;
+  border-left:#F7F7F7 1px dashed;
+  border-top:#1A3955 2px solid;
+  color:#000000;
+  font-weight:bold;
+}
+.cal-dayview-times {
+  background:#F7F7F7;
+  border-bottom:#E7E7E7 1px solid;
+  border-left:#E7E7E7 1px solid;
+  border-right:#E7E7E7 1px solid;
+  border-top:#1A3955 1px dashed;
+  color:#000000;
+  font-weight:bold;
+  font-size:.8em;
+}
+.cal-dayx-body {
+  background:#E7E7E7
+}
+.cal-dayx-cur {
+  background:#FFFFFF;
+  color:#000000;
+  font-weight:bold;
+  font-size:.8em;
+}
+.cal-dayx-subcur {
+  background:#FFFFFF;
+  color:#000000;
+  font-weight:bold;
+  font-size:.8em;
+  padding-top:4px;
+}
+.cal-dayx-times {
+  border-bottom:#FFFFFF 1px solid;
+  border-left:#FFFFFF 1px solid;
+  border-right:#FFFFFF 1px solid;
+}
+.cal-dayx-times2 {
+  background:#FFFFFF
+}
+.cal-dayx-weekevent {
+  border-bottom:#FFFFFF 1px solid;
+  border-left:#FFFFFF 1px dashed;
+  border-right:#FFFFFF 1px dashed;
+  border-top:#E7E7E7 1px solid;
+}
+.cal-futureday {
+  background:#F7F7F7
+}
+.cal-header {
+  background:#FFFFFF;
+  border-bottom:#F7F7F7 1px solid;
+  border-left:#F7F7F7 1px solid;
+  border-right:#F7F7F7 1px solid;
+  border-top:#F7F7F7 1px solid;
+}
+.cal-hr {
+  background:#FFFFFF
+}
+.cal-month,
+.cal_month {
+  background:#F7F7F7;
+  color:#000000;
+  font-size:.9em;
+}
+.cal-nullday {
+  background:#FFFFFF;
+  border-bottom:#F7F7F7 1px dashed;
+  border-left:#F7F7F7 1px dashed;
+  border-top:#F7F7F7 1px dashed;
+  color:#000000;
+}
+.cal-oldday {
+  background:#E7E7E7;
+  color:#000000;
+}
+.cal-quickadd,
+.quickadd {
+  background:#F7F7F7;
+  border-bottom:#E7E7E7 1px solid;
+  border-left:#E7E7E7 1px solid;
+  border-right:#E7E7E7 1px solid;
+  border-top:#E7E7E7 1px solid;
+  padding:4px;
+}
+.cal-today {
+  background:#FFFFFF;
+  border-bottom:#1A3955 1px dashed;
+  border-left:#1A3955 1px dashed;
+  border-right:#1A3955 1px dashed;
+  border-top:#1A3955 1px dashed;
+}
+.cal-weekpointers {
+  border-bottom:#F7F7F7 1px dashed;
+  border-left:#F7F7F7 1px dashed;
+}
+.cal-weekview-addevent {
+  background:#FFFFFF;
+  border-right:#E7E7E7 1px solid;
+  border-top:#E7E7E7 1px solid;
+  color:#000000;
+  font-weight:bold;
+  font-size:.8em;
+  padding:4px;
+}
+.cal-weekview-caltitle {
+  background:#FFFFFF;
+  border-bottom:#E7E7E7 1px solid;
+  border-left:#E7E7E7 1px solid;
+  border-right:#E7E7E7 1px solid;
+  color:#000000;
+  font-weight:bold;
+  font-size:.8em;
+  padding:4px;
+}
+.cal-weekview-curday,
+.weekview_curday {
+  background:#F7F7F7;
+  color:#000000;
+}
+.cal-weekview-daterange {
+  background:#FFFFFF;
+  border-left:#E7E7E7 1px solid;
+  border-right:#E7E7E7 1px solid;
+  border-top:#E7E7E7 1px solid;
+  color:#000000;
+  font-weight:bold;
+  font-size:.8em;
+  padding:4px;
+}
+.cal-weekview-dayformat {
+  background:#FFFFFF;
+  border-left:#E7E7E7 1px solid;
+  border-top:#E7E7E7 1px solid;
+  color:#000000;
+  font-weight:bold;
+  font-size:.8em;  padding:4px;
+}
+.cal-weekview-offday,
+.weekview_offday {
+  background:transparent;
+  color:#000000;
+}
+.smallcal-week-even {
+  background:#E7E7E7;
+  color:#000000;
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/calendar_event.php 1.4.1.src/calendar_event.php
--- 1.4.0sr5-1.src/calendar_event.php	2006-08-08 02:53:59.000000000 -0500
+++ 1.4.1.src/calendar_event.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,721 +0,0 @@
-<?php
-
-/* Reminder: always indent with 4 spaces (no tabs). */
-// +---------------------------------------------------------------------------+
-// | Geeklog 1.3                                                               |
-// +---------------------------------------------------------------------------+
-// | calendar_event.php                                                        |
-// |                                                                           |
-// | Shows details of an event or events                                       |
-// +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
-// |                                                                           |
-// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
-// |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
-// |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
-// |          Dirk Haun         - dirk AT haun-online DOT de                   |
-// +---------------------------------------------------------------------------+
-// |                                                                           |
-// | This program is free software; you can redistribute it and/or             |
-// | modify it under the terms of the GNU General Public License               |
-// | as published by the Free Software Foundation; either version 2            |
-// | of the License, or (at your option) any later version.                    |
-// |                                                                           |
-// | This program is distributed in the hope that it will be useful,           |
-// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
-// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
-// | GNU General Public License for more details.                              |
-// |                                                                           |
-// | You should have received a copy of the GNU General Public License         |
-// | along with this program; if not, write to the Free Software Foundation,   |
-// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
-// |                                                                           |
-// +---------------------------------------------------------------------------+
-//
-// $Id: calendar_event.php,v 1.45 2005/11/14 10:28:00 ospiess Exp $
-
-require_once ('lib-common.php');
-require_once ($_CONF['path_system'] . 'classes/calendar.class.php');
-
-/**
-* Adds an event to the user's calendar
-*
-* The user has asked that an event be added to their personal
-* calendar.  Show a confirmation screen.
-*
-* @param    string  $eid    event ID to add to user's calendar
-* @return   string          HTML for confirmation form
-*
-*/
-function adduserevent ($eid) 
-{
-    global $_CONF, $_TABLES, $_USER, $LANG01, $LANG02;
-
-    $eventsql = "SELECT *, datestart AS start, dateend AS end, timestart, timeend, allday FROM {$_TABLES['events']} WHERE eid='$eid'" . COM_getPermSql ('AND');
-    $result = DB_query($eventsql);
-    $nrows = DB_numRows($result);
-    if ($nrows == 1) {
-        $retval .= COM_startBlock($LANG02[11]);
-        $A = DB_fetchArray($result);
-        $cal_template = new Template($_CONF['path_layout'] . 'calendar');
-        $cal_template->set_file (array ('addevent' => 'addevent.thtml'));
-        $cal_template->set_var('site_url', $_CONF['site_url']);
-        $cal_template->set_var('layout_url', $_CONF['layout_url']);
-        $cal_template->set_var('intro_msg', $LANG02[8]);
-        $cal_template->set_var('lang_event', $LANG02[12]);
-        $cal_template->set_var('event_title',stripslashes($A['title']));
-
-        if (!empty ($A['url']) && ($A['url'] != 'http://')) {
-            $cal_template->set_var('event_begin_anchortag', '<a href="' . $A['url'] . '">');
-            $cal_template->set_var('event_end_anchortag', '</a>');
-        } else {
-            $cal_template->set_var('event_begin_anchortag', '');
-            $cal_template->set_var('event_end_anchortag', '');
-        }
-
-        $cal_template->set_var('lang_starts', $LANG02[13]);
-        $cal_template->set_var('lang_ends', $LANG02[14]);
-
-        $thestart = COM_getUserDateTimeFormat($A['start'] . ' ' . $A['timestart']);
-        $theend = COM_getUserDateTimeFormat($A['end'] . ' ' . $A['timeend']);
-        if ($A['allday'] == 0) {
-            $cal_template->set_var('event_start', $thestart[0]);
-            $cal_template->set_var('event_end', $theend[0]);
-        } else {
-            $cal_template->set_var('event_start', strftime($_CONF['shortdate'], $thestart[1]));
-            $cal_template->set_var('event_end', strftime($_CONF['shortdate'], $theend[1]));
-        }
-
-        $cal_template->set_var('lang_where',$LANG02[4]);
-        $location = stripslashes($A['location']) . '<br>'
-                  . stripslashes ($A['address1']) . '<br>'
-                  . stripslashes ($A['address2']) . '<br>'
-                  . stripslashes ($A['city'])
-                  . ', ' . $A['state'] . ' ' . $A['zipcode'];
-        $cal_template->set_var('event_location', $location);
-        $cal_template->set_var('lang_description', $LANG02[5]);
-        $cal_template->set_var('event_description',
-                               nl2br (stripslashes ($A['description'])));
-        $cal_template->set_var('event_id', $eid);
-        $cal_template->set_var('lang_addtomycalendar', $LANG02[9]);
-        $cal_template->parse('output','addevent');     
-        $retval .= $cal_template->finish($cal_template->get_var('output'));
-        $retval .= COM_endBlock ();
-    } else {
-        $retval .= COM_showMessage(23);
-    }    
-    
-    return $retval;
-}
-
-/**
-* Save an event to user's personal calendar
-*
-* User has seen the confirmation screen and they still want to
-* add this event to their calendar.  Actually save it now.
-*
-* @param    string  $eid    ID of event to save
-* @return   string          HTML refresh
-*
-*/
-function saveuserevent ($eid)
-{
-    global $_CONF, $_TABLES, $_USER, $MESSAGE;
-
-    if (isset ($_USER['uid']) && ($_USER['uid'] > 1)) {
-
-        // Try to delete the event first in case it has already been added
-        DB_query ("DELETE FROM {$_TABLES['personal_events']} WHERE uid={$_USER['uid']} AND eid='$eid'");
-
-        $result = DB_query ("SELECT eid FROM {$_TABLES['events']} WHERE (eid = '$eid')" . COM_getPermSql ('AND'));
-        if (DB_numRows ($result) == 1) {
-
-            $savesql = "INSERT INTO {$_TABLES['personal_events']} (eid,uid,title,event_type,datestart,dateend,timestart,timeend,allday,location,address1,address2,city,state,zipcode,url,description,group_id,owner_id,perm_owner,perm_group,perm_members,perm_anon) SELECT eid," . $_USER['uid'] . ",title,event_type,datestart,dateend,timestart,timeend,allday,location,address1,address2,city,state,zipcode,url,description,group_id,owner_id,perm_owner,perm_group,perm_members,perm_anon FROM {$_TABLES['events']} WHERE eid = '{$eid}'";
-
-            DB_query ($savesql);
-
-            return COM_refresh ($_CONF['site_url']
-                                . '/calendar.php?mode=personal&amp;msg=24');
-        }
-    }
-
-    return COM_refresh ($_CONF['site_url'] . '/index.php');
-}
-
-/**
-* Allows user to edit a personal calendar event
-*
-* @param    array   $A  Record to display
-* @return   string      HTML for event editor
-*
-*/
-function editpersonalevent ($A)
-{
-    global $_CONF, $LANG12, $_STATES;
-
-    $cal_templates = new Template($_CONF['path_layout'] . 'calendar');
-    $cal_templates->set_file('form','editpersonalevent.thtml');
-    $cal_templates->set_var('site_url', $_CONF['site_url']);
-    $cal_templates->set_var('layout_url', $_CONF['layout_url']);
-    $cal_templates->set_var('lang_title', $LANG12[10]);
-    $A['title'] = str_replace('{','&#123;',$A['title']);
-    $A['title'] = str_replace('}','&#125;',$A['title']);
-    $A['title'] = str_replace('"','&quot;',$A['title']);
-    $cal_templates->set_var('event_title', stripslashes ($A['title']));
-    $cal_templates->set_var('lang_eventtype', $LANG12[49]);
-    $etypes = explode(',',$_CONF['event_types']);
-    $type_options = '';
-    for ($i = 1; $i <= count($etypes); $i++) {
-        $type_options .= '<option value="' . current($etypes) . '"';
-        if (current($etypes) == $A['event_type']) {
-            $type_options .= ' selected="selected"';
-        }
-        $type_options .= '>' . current($etypes) . '</option>';
-        next($etypes);
-    }
-    $cal_templates->set_var('type_options', $type_options);
-
-    // Handle start date/time
-    $cal_templates->set_var('lang_startdate', $LANG12[12]);
-    $cal_templates->set_var('lang_starttime', $LANG12[42]);
-    $A['startdate'] = $A['datestart'] . ' ' . $A['timestart'];
-    $month_options = '';
-    for ($i = 1; $i <= 12; $i++) {
-        $month_options .= '<option value="' . $i . '"';
-        if ($i == date('n',strtotime($A['startdate']))) {
-            $month_options .= ' selected="selected"';
-        }
-        $month_options .= '>' . $i . '</option>';
-    }
-    $cal_templates->set_var('startmonth_options', $month_options);
-
-    $day_options = '';
-    for ($i = 1; $i <= 31; $i++) {
-        $day_options .= '<option value="' . $i . '"';
-        if ($i == date('j',strtotime($A['startdate']))) {
-            $day_options .= ' selected="selected"';
-        }
-        $day_options .= '>' . $i . '</option>';
-    }
-    $cal_templates->set_var('startday_options', $day_options);
-
-    $year_options = '';
-    for ($i = date('Y',strtotime($A['startdate'])); $i <= (date('Y',time()) + 5); $i++) {
-        $year_options .= '<option value="' .$i .'"';
-        if ($i == date('Y',strtotime($A['startdate']))) {
-            $year_options .= ' selected="selected"';
-        }
-        $year_options .= '>' . $i . '</option>';
-    }
-    $cal_templates->set_var('startyear_options', $year_options);
-
-    $hour_options = '';
-    for ($i = 1; $i <= 12; $i++) {
-        $hour_options .= '<option value="' . $i . '"';
-        if ($i == date('g',strtotime($A['startdate']))) {
-            $hour_options .= ' selected="selected"';
-        }
-        $hour_options .= '>' . $i . '</option>';
-    }
-    $cal_templates->set_var('starthour_options', $hour_options);
-
-    $startmin = date('i',strtotime($A['startdate']));
-    $cal_templates->set_var('start00_selected','');
-    $cal_templates->set_var('start15_selected','');
-    $cal_templates->set_var('start30_selected','');
-    $cal_templates->set_var('start45_selected','');
-    $cal_templates->set_var('start' . $startmin . '_selected', 'selected="selected"');
-    if (date('a',strtotime($A['startdate'])) == 'am') {
-        $cal_templates->set_var('startam_selected', 'selected="selected"');
-        $cal_templates->set_var('startpm_selected', '');
-    } else {
-        $cal_templates->set_var('startam_selected', '');
-        $cal_templates->set_var('startpm_selected', 'selected="selected"');
-    }
-
-    // Handle end date/time
-    $cal_templates->set_var('lang_enddate', $LANG12[13]);
-    $cal_templates->set_var('lang_endtime', $LANG12[41]);
-    $A['enddate'] = $A['dateend'] . ' ' . $A['timeend'];
-    $month_options = '';
-    for ($i = 1; $i <= 12; $i++) {
-        $month_options .= '<option value="' . $i . '"';
-        if ($i == date('n',strtotime($A['enddate']))) {
-            $month_options .= ' selected="selected"';
-        }
-        $month_options .= '>' . $i . '</option>';
-    }
-    $cal_templates->set_var('endmonth_options', $month_options);
-
-    $day_options = '';
-    for ($i = 1; $i <= 31; $i++) {
-        $day_options .= '<option value="' . $i . '"';
-        if ($i == date('j',strtotime($A['enddate']))) {
-            $day_options .= ' selected="selected"';
-        }
-        $day_options .= '>' . $i . '</option>';
-    }
-    $cal_templates->set_var('endday_options', $day_options);
-
-    $year_options = '';
-    for ($i = date('Y',strtotime($A['enddate'])); $i <= (date('Y',time()) + 5); $i++) {
-        $year_options .= '<option value="' .$i .'"';
-        if ($i == date('Y',strtotime($A['enddate']))) {
-            $year_options .= ' selected="selected"';
-        }
-        $year_options .= '>' . $i . '</option>';
-    }
-    $cal_templates->set_var('endyear_options', $year_options);
-
-    $hour_options = '';
-    for ($i = 0; $i <= 11; $i++) {
-        if ($i == 0) {
-            $i = 12;
-        }
-        $hour_options .= '<option value="' . $i . '"';
-        if ($i == date('g',strtotime($A['enddate']))) {
-            $hour_options .= ' selected="selected"';
-        }
-        $hour_options .= '>' . $i . '</option>';
-        if ($i == 12) { 
-            $i = 0;
-        } 
-    }
-    $cal_templates->set_var('endhour_options', $hour_options);
-
-    $endmin = date('i',strtotime($A['enddate']));
-    $cal_templates->set_var('end00_selected','');
-    $cal_templates->set_var('end15_selected','');
-    $cal_templates->set_var('end30_selected','');
-    $cal_templates->set_var('end45_selected','');
-    $cal_templates->set_var('end' . $endmin . '_selected', 'selected="selected"');
-    if (date('a',strtotime($A['enddate'])) == 'am') {
-        $cal_templates->set_var('endam_selected', 'selected="selected"');
-        $cal_templates->set_var('endpm_selected', '');
-    } else {
-        $cal_templates->set_var('endam_selected', '');
-        $cal_templates->set_var('endpm_selected', 'selected="selected"');
-    }
-
-    $cal_templates->set_var('lang_alldayevent',$LANG12[43]);
-    if ($A['allday'] == 1) {
-        $cal_templates->set_var('allday_checked', 'checked="CHECKED"');
-    } else { 
-        $cal_templates->set_var('allday_checked', '');
-    }
-
-    $cal_templates->set_var('lang_location',$LANG12[14]);
-    $cal_templates->set_var('event_location', stripslashes ($A['location']));
-
-    $cal_templates->set_var('lang_addressline1', $LANG12[44]);
-    $cal_templates->set_var('event_address1', stripslashes ($A['address1']));
-    $cal_templates->set_var('lang_addressline2', $LANG12[45]);
-    $cal_templates->set_var('event_address2', stripslashes ($A['address2']));
-
-    $cal_templates->set_var('lang_city', $LANG12[46]);
-    $cal_templates->set_var('event_city', stripslashes ($A['city']));
-
-    $state_options = '';
-    reset($_STATES);
-    for ($i = 1; $i <= count($_STATES); $i++) {
-        $state_options .= '<option value="' . key($_STATES) . '"';
-        if ($A['state'] == key($_STATES)) {
-            $state_options .= ' selected="selected"';
-        }
-        $state_options .= '>' . current($_STATES) . '</option>';
-        next($_STATES);
-    }
-    $cal_templates->set_var('lang_state', $LANG12[47]);
-    $cal_templates->set_var('state_options', $state_options);
-
-    $cal_templates->set_var('lang_zipcode', $LANG12[48]);
-    $cal_templates->set_var('event_zipcode', $A['zipcode']);
-
-    $cal_templates->set_var('lang_link', $LANG12[11]);
-    $cal_templates->set_var('event_url', $A['url']);
-
-    $cal_templates->set_var('lang_description', $LANG12[15]);
-    $cal_templates->set_var('event_description',
-                            nl2br (stripslashes ($A['description'])));
-
-    $cal_templates->set_var('lang_htmlnotallowed', $LANG12[35]);
-    $cal_templates->set_var('lang_submit', $LANG12[8]);
-    $cal_templates->set_var('lang_delete', $LANG12[52]);
-    $cal_templates->set_var('eid', $A['eid']);
-    $cal_templates->set_var('uid', $A['uid']);
-
-    return $cal_templates->parse('output','form'); 
-}
-
-/**
-* Set localised day and month names.
-*
-* @param    object  $aCalendar  reference(!) to a Calendar object
-*
-*/
-function setCalendarLanguage (&$aCalendar)
-{ 
-    global $LANG30;
-
-    $lang_days = array ('sunday'    => $LANG30[1],
-                        'monday'    => $LANG30[2],
-                        'tuesday'   => $LANG30[3],
-                        'wednesday' => $LANG30[4],
-                        'thursday'  => $LANG30[5],
-                        'friday'    => $LANG30[6],
-                        'saturday'  => $LANG30[7]);
-    $lang_months = array ('january'   => $LANG30[13],
-                          'february'  => $LANG30[14],
-                          'march'     => $LANG30[15],
-                          'april'     => $LANG30[16],
-                          'may'       => $LANG30[17],
-                          'june'      => $LANG30[18],
-                          'july'      => $LANG30[19],
-                          'august'    => $LANG30[20],
-                          'september' => $LANG30[21],
-                          'october'   => $LANG30[22],
-                          'november'  => $LANG30[23],
-                          'december'  => $LANG30[24]);
-    $aCalendar->setLanguage ($lang_days, $lang_months);
-}   
-
-
-// MAIN
-
-$display = '';
-
-$action = '';
-if (isset ($_REQUEST['action'])) {
-    $action = COM_applyFilter ($_REQUEST['action']);
-}
-
-switch ($action) {
-case 'addevent':
-    if (($_CONF['personalcalendars'] == 1) &&
-            isset ($_USER['uid']) && ($_USER['uid'] > 1)) {
-        $display .= COM_siteHeader ();
-
-        $eid = COM_applyFilter ($_GET['eid']);
-        if (!empty ($eid)) {
-            $display .= adduserevent ($eid);
-        } else {
-            $display .= COM_showMessage (23);
-        }
-
-        $display .= COM_siteFooter ();
-    } else {
-        $display = COM_refresh ($_CONF['site_url'] . '/index.php');
-    }
-    break;
-
-case 'saveuserevent':
-    if ($_CONF['personalcalendars'] == 1) {
-        $eid = COM_applyFilter ($_POST['eid']);
-        if (!empty ($eid)) {
-            $display .= saveuserevent ($eid);
-        } else {
-            $display .= COM_siteHeader ();
-            $display .= COM_showMessage (23);
-            $display .= COM_siteFooter ();
-        }
-    } else {
-        $display = COM_refresh ($_CONF['site_url'] . '/index.php');
-    }
-    break;
-
-case 'deleteevent':
-    if ($_CONF['personalcalendars'] == 1) {
-        $eid = COM_applyFilter ($_GET['eid']);
-        if (!empty ($eid) && (isset ($_USER['uid']) && ($_USER['uid'] > 1))) {
-            DB_query ("DELETE FROM {$_TABLES['personal_events']} WHERE uid={$_USER['uid']} AND eid='$eid'");
-            $display .= COM_refresh ($_CONF['site_url']
-                     . '/calendar.php?mode=personal&amp;msg=26');
-        } else {
-            $display = COM_refresh ($_CONF['site_url'] . '/index.php');
-        }
-    } else {
-        $display = COM_refresh ($_CONF['site_url'] . '/index.php');
-    }
-    break;
-
-case 'edit':
-    if ($_CONF['personalcalendars'] == 1) {
-        $eid = COM_applyFilter ($_GET['eid']);
-        if (!empty ($eid) && (isset ($_USER['uid']) && ($_USER['uid'] > 1))) {
-            $result = DB_query ("SELECT * FROM {$_TABLES['personal_events']} WHERE (eid = '$eid') AND (uid = {$_USER['uid']})");
-            if (DB_numRows ($result) == 1) {
-                $A = DB_fetchArray ($result);
-                $display .= COM_siteHeader ('menu', $LANG30[38])
-                         . COM_startBlock ($LANG30[38])
-                         . editpersonalevent ($A)
-                         . COM_endBlock ()
-                         . COM_siteFooter ();
-            } else {
-                $display = COM_refresh ($_CONF['site_url'] . '/index.php');
-            }
-        } else {
-            $display = COM_refresh ($_CONF['site_url'] . '/index.php');
-        }
-    } else {
-        $display = COM_refresh ($_CONF['site_url'] . '/index.php');
-    }
-    break;
-
-default:
-    $mode = '';
-    if (isset ($_GET['mode'])) {
-        $mode = COM_applyFilter ($_GET['mode']);
-    }
-    $eid = '';
-    if (isset ($_GET['eid'])) {
-        $eid = COM_applyFilter ($_GET['eid']);
-    }
-    if (!empty ($eid)) {
-        if (($mode == 'personal') && ($_CONF['personalcalendars'] == 1) &&
-                (isset ($_USER['uid']) && ($_USER['uid'] > 1))) {
-            $datesql = "SELECT *,datestart AS start,dateend AS end FROM {$_TABLES['personal_events']} WHERE (eid = '$eid') AND (uid = {$_USER['uid']})";
-            $pagetitle = $LANG30[28] . ' ' . $_USER['username'];
-        } else {
-            $datesql = "SELECT *,datestart AS start,dateend AS end FROM {$_TABLES['events']} WHERE eid = '$eid'";
-            if (strpos ($LANG30[9], '%') === false) {
-                $pagetitle = $LANG30[9];
-            } else {
-                $pagetitle = sprintf ($LANG30[9], $_CONF['site_name']);
-            }
-            DB_query ("UPDATE {$_TABLES['events']} SET hits = hits + 1 WHERE eid = '$eid'");
-        }
-
-        $display .= COM_siteHeader ('menu', $pagetitle);
-        $display .= COM_startBlock ($pagetitle);
-
-    } else {
-        $year = 0;
-        if (isset ($_GET['year'])) {
-            $year = COM_applyFilter ($_GET['year'], true);
-        }
-        $month = 0;
-        if (isset ($_GET['month'])) {
-            $month = COM_applyFilter ($_GET['month'], true);
-        }
-        $day = 0;
-        if (isset ($_GET['day'])) {
-            $day = COM_applyFilter ($_GET['day'], true);
-        }
-        if (($year == 0) || ($month == 0) || ($day == 0)) {
-            $year = date ('Y');
-            $month = date ('n');
-            $day = date ('j');
-        }
-
-        $pagetitle = $LANG30[10] . ' ' . strftime ($_CONF['shortdate'],
-                                         mktime (0, 0, 0, $month, $day, $year));
-        $display .= COM_siteHeader ('menu', $pagetitle);
-        $display .= COM_startBlock ($pagetitle);
-
-        $thedate = sprintf ('%4d-%02d-%02d', $year, $month, $day);
-        $datesql = "SELECT *,datestart AS start,dateend AS end FROM {$_TABLES['events']} WHERE \"$thedate\" BETWEEN DATE_FORMAT(datestart,'%Y-%m-%d') and DATE_FORMAT(dateend,'%Y-%m-%d') ORDER BY datestart ASC,timestart ASC,title";
-    }
-    $cal_templates = new Template($_CONF['path_layout'] . 'calendar');
-    $cal_templates->set_file (array (
-            'events'    => 'events.thtml',
-            'details'   => 'eventdetails.thtml',
-            'addremove' => 'addremoveevent.thtml'
-            ));
-        
-    $cal_templates->set_var ('lang_addevent', $LANG02[6]);
-    $cal_templates->set_var ('lang_backtocalendar', $LANG02[15]);
-    if ($mode == 'personal') {
-        $cal_templates->set_var ('calendar_mode', '&amp;mode=personal');
-    } else {
-        $cal_templates->set_var ('calendar_mode', '');
-    }
-
-    $result = DB_query($datesql);
-    $nrows = DB_numRows($result);
-    if ($nrows == 0) {
-        $cal_templates->set_var('lang_month','');
-        $cal_templates->set_var('event_year','');
-        $cal_templates->set_var('event_details','');
-        $cal_templates->set_var('site_url', $_CONF['site_url']);
-        $cal_templates->set_var('layout_url', $_CONF['layout_url']);
-        $cal_templates->parse('output','events');
-        $display .= $cal_templates->finish($cal_templates->get_var('output'));
-        $display .= $LANG02[2];
-    } else {
-        $cal = new Calendar();
-        setCalendarLanguage ($cal);
-
-        $currentmonth = '';
-        for ($i = 1; $i <= $nrows; $i++) {
-            $A = DB_fetchArray($result);
-            if (SEC_hasAccess($A['owner_id'],$A['group_id'],$A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']) > 0) {
-                if (strftime('%B',strtotime($A['start'])) != $currentmonth) {
-                    $str_month = $cal->getMonthName(strftime('%m',strtotime($A['start'])));
-                    $cal_templates->set_var('lang_month', $str_month);
-                    $cal_templates->set_var('event_year', strftime('%Y',strtotime($A['start'])));
-                    $currentmonth = strftime('%B',strtotime($A['start']));
-                }
-                $cal_templates->set_var('event_title', stripslashes($A['title']));
-                $cal_templates->set_var('site_url', $_CONF['site_url']);
-                $cal_templates->set_var('layout_url', $_CONF['layout_url']);
-                if (!empty($A['url'])) {
-                    $cal_templates->set_var('event_begin_anchortag', '<a href="'.$A['url'].'">');
-                    $cal_templates->set_var('event_title', stripslashes($A['title']));
-                    $cal_templates->set_var('event_end_anchortag', '</a>');
-                } else {
-                    $cal_templates->set_var('event_begin_anchortag', '');
-                    $cal_templates->set_var('event_title', stripslashes($A['title']));
-                    $cal_templates->set_var('event_end_anchortag', '');
-                }
-
-                if (!empty ($_USER['uid']) && ($_USER['uid'] > 1) &&
-                        ($_CONF['personalcalendars'] == 1)) {
-                    $tmpresult = DB_query("SELECT * FROM {$_TABLES['personal_events']} WHERE eid='{$A['eid']}' AND uid={$_USER['uid']}");
-                    $tmpnrows = DB_numRows($tmpresult);
-                    if ($tmpnrows > 0) {
-                        $cal_templates->set_var('addremove_begin_anchortag','<a href="'
-                            . $_CONF['site_url'] . '/calendar_event.php?eid=' . $A['eid'] . '&amp;mode=personal&amp;action=deleteevent">');
-                        $cal_templates->set_var('lang_addremovefromcal',$LANG02[10]);
-                        $cal_templates->set_var('addremove_end_anchortag', '</a>');
-                    } else {
-                        $cal_templates->set_var('addremove_begin_anchortag','<a href="'
-                            . $_CONF['site_url'] . '/calendar_event.php?eid=' . $A['eid'] . '&amp;mode=personal&amp;action=addevent">');
-                        $cal_templates->set_var('lang_addremovefromcal',$LANG02[9]);
-                        $cal_templates->set_var('addremove_end_anchortag', '</a>');
-                    }
-                    $cal_templates->parse('addremove_event','addremove');
-                }
-                $cal_templates->set_var('lang_when', $LANG02[3]);
-                if ($A['allday'] == 0) {
-                    $thedatetime = COM_getUserDateTimeFormat ($A['start'] . ' '
-                                                            . $A['timestart']);
-                    $cal_templates->set_var ('event_start', $thedatetime[0]);
-
-                    if ($A['start'] == $A['end']) {
-                        $thedatetime[0] = strftime ($_CONF['timeonly'],
-                            strtotime ($A['dateend'] . ' ' . $A['timeend']));
-                    } else {
-                        $thedatetime = COM_getUserDateTimeFormat ($A['end']
-                                                        . ' ' . $A['timeend']);
-                    }
-                    $cal_templates->set_var ('event_end', $thedatetime[0]);
-                } elseif ($A['allday'] == 1 AND $A['start'] <> $A['end']) {
-                    $thedatetime1 = strftime ('%A, ' . $_CONF['shortdate'],
-                                             strtotime ($A['start']));
-                    $cal_templates->set_var ('event_start', $thedatetime1);
-                    $thedatetime2 = strftime ('%A, ' . $_CONF['shortdate'],
-                                                  strtotime ($A['end']));
-                    $cal_templates->set_var ('event_end', $thedatetime2
-                                                        . ' ' . $LANG30[26]);
-                } else {
-                    $thedatetime = strftime ('%A, ' . $_CONF['shortdate'],
-                                             strtotime ($A['start']));
-                    $cal_templates->set_var ('event_start', $thedatetime);
-                    $cal_templates->set_var ('event_end', $LANG30[26]);
-                }
-
-                // set the location variables
-                $cal_templates->set_var ('lang_where', $LANG02[4]);
-                $cal_templates->set_var ('event_location',
-                                         stripslashes ($A['location']));
-                $cal_templates->set_var ('event_address1',
-                                         stripslashes ($A['address1']));
-                $cal_templates->set_var ('event_address2',
-                                         stripslashes ($A['address2']));
-                $cal_templates->set_var ('event_zip', $A['zipcode']);
-                $cal_templates->set_var ('event_city',
-                                         stripslashes ($A['city']));
-                $cal_templates->set_var ('event_state_only', $A['state']);
-                if (empty ($A['state']) || ($A['state'] == '--')) {
-                    $cal_templates->set_var ('event_state', '');
-                    $cal_templates->set_var ('event_state_name', '');
-                    $cal_templates->set_var ('event_state_name_only', '');
-                } else {
-                    $cal_templates->set_var ('event_state', ', ' . $A['state']);
-                    $cal_templates->set_var ('event_state_name',
-                                             ', ' . $_STATES[$A['state']]);
-                    $cal_templates->set_var ('event_state_name_only',
-                                             $_STATES[$A['state']]);
-                }
-
-                // now figure out which of the {brX} variables to set ...
-                $hasCityEtc = (!empty ($A['city']) || !empty ($A['zip']) ||
-                               !empty ($A['state']));
-                if (empty ($A['location']) && empty ($A['address1']) &&
-                        empty ($A['address2']) && !$hasCityEtc) {
-                    $cal_templates->set_var ('br0', '');
-                    $cal_templates->set_var ('br1', '');
-                    $cal_templates->set_var ('br2', '');
-                } else {
-                    if (empty ($A['location']) || (empty ($A['address1']) &&
-                                    empty ($A['address2']) && !$hasCityEtc)) {
-                        $cal_templates->set_var ('br0', '');
-                    } else {
-                        $cal_templates->set_var ('br0', '<br>');
-                    }
-                    if (empty ($A['address1']) || (empty ($A['address2']) &&
-                                                   !$hasCityEtc)) {
-                        $cal_templates->set_var ('br1', '');
-                    } else {
-                        $cal_templates->set_var ('br1', '<br>');
-                    }
-                    if (empty ($A['address2']) || !$hasCityEtc) {
-                        $cal_templates->set_var ('br2', '');
-                    } else {
-                        $cal_templates->set_var ('br2', '<br>');
-                    }
-                }
-
-                $cal_templates->set_var ('lang_description', $LANG02[5]);
-                if ($A['postmode'] == 'plaintext') {
-                    $A['description'] = nl2br ($A['description']);
-                }
-                $cal_templates->set_var ('event_description',
-                                            stripslashes ($A['description']));
-                $cal_templates->set_var ('lang_event_type', $LANG12[49]);
-                $cal_templates->set_var ('event_type', $A['event_type']);
-                $cal_templates->parse ('event_details', 'details', true); 
-            }
-        }
-
-        if ($mode == 'personal') {
-            $editurl = $_CONF['site_url'] . '/calendar_event.php?action=edit'
-                     . '&amp;eid=' . $eid;
-            $cal_templates->set_var ('event_edit', '<a href="' .$editurl . '">'
-                    . $LANG01[4] . '</a>');
-            $cal_templates->set_var ('edit_icon', '<a href="' . $editurl
-                    . '"><img src="' . $_CONF['layout_url']
-                    . '/images/edit.' . $_IMAGE_TYPE . '" alt="' . $LANG01[4]
-                    . '" title="' . $LANG01[4] . '" border="0"></a>');
-        } else if ((SEC_hasAccess ($A['owner_id'], $A['group_id'],
-                $A['perm_owner'], $A['perm_group'], $A['perm_members'],
-                $A['perm_anon']) == 3) && SEC_hasRights ('event.edit')) {
-            $editurl = $_CONF['site_admin_url']
-                     . '/event.php?mode=edit&amp;eid=' . $eid;
-            $cal_templates->set_var ('event_edit', '<a href="' .$editurl . '">'
-                    . $LANG01[4] . '</a>');
-            $cal_templates->set_var ('edit_icon', '<a href="' . $editurl
-                    . '"><img src="' . $_CONF['layout_url']
-                    . '/images/edit.' . $_IMAGE_TYPE . '" alt="' . $LANG01[4]
-                    . '" title="' . $LANG01[4] . '" border="0"></a>');
-            $cal_templates->set_var ('hits_admin',
-                                     COM_numberFormat ($A['hits']));
-            $cal_templates->set_var ('lang_hits_admin', $LANG10[30]);
-        } else {
-            $cal_templates->set_var ('event_edit', '');
-            $cal_templates->set_var ('edit_icon', '');
-        }
-        $cal_templates->set_var ('hits', COM_numberFormat ($A['hits']));
-        $cal_templates->set_var ('lang_hits', $LANG10[30]);
-
-        $cal_templates->parse ('output', 'events');
-        $display .= $cal_templates->finish ($cal_templates->get_var ('output'));
-    }
-
-    $display .= COM_endBlock() . COM_siteFooter();
-
-} // end switch
-
-echo $display;
-
-?>
diff -ruN 1.4.0sr5-1.src/calendar.php 1.4.1.src/calendar.php
--- 1.4.0sr5-1.src/calendar.php	2006-08-08 02:53:59.000000000 -0500
+++ 1.4.1.src/calendar.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,1010 +0,0 @@
-<?php
-
-/* Reminder: always indent with 4 spaces (no tabs). */
-// +---------------------------------------------------------------------------+
-// | Geeklog 1.3                                                               |
-// +---------------------------------------------------------------------------+
-// | calendar.php                                                              |
-// |                                                                           |
-// | Geeklog calendar.                                                         |
-// +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
-// |                                                                           |
-// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
-// |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
-// |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
-// |          Dirk Haun         - dirk AT haun-online DOT de                   |
-// +---------------------------------------------------------------------------+
-// |                                                                           |
-// | This program is free software; you can redistribute it and/or             |
-// | modify it under the terms of the GNU General Public License               |
-// | as published by the Free Software Foundation; either version 2            |
-// | of the License, or (at your option) any later version.                    |
-// |                                                                           |
-// | This program is distributed in the hope that it will be useful,           |
-// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
-// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
-// | GNU General Public License for more details.                              |
-// |                                                                           |
-// | You should have received a copy of the GNU General Public License         |
-// | along with this program; if not, write to the Free Software Foundation,   |
-// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
-// |                                                                           |
-// +---------------------------------------------------------------------------+
-//
-// $Id: calendar.php,v 1.57 2005/12/22 09:01:26 dhaun Exp $
-
-require_once ('lib-common.php');
-require_once ($_CONF['path_system'] . 'classes/calendar.class.php');
-
-$display = '';
-
-if (empty ($_USER['username']) &&
-    (($_CONF['loginrequired'] == 1) || ($_CONF['calendarloginrequired'] == 1))) {
-    $display .= COM_siteHeader('');
-    $display .= COM_startBlock ($LANG_LOGIN[1], '',
-                                COM_getBlockTemplate ('_msg_block', 'header'));
-    $login = new Template($_CONF['path_layout'] . 'submit');
-    $login->set_file (array ('login'=>'submitloginrequired.thtml'));
-    $login->set_var ('login_message', $LANG_LOGIN[2]);
-    $login->set_var ('site_url', $_CONF['site_url']);   
-    $login->set_var ('layout_url', $_CONF['layout_url']);   
-    $login->set_var ('lang_login', $LANG_LOGIN[3]);
-    $login->set_var ('lang_newuser', $LANG_LOGIN[4]);
-    $login->parse ('output', 'login');
-    $display .= $login->finish ($login->get_var('output'));
-    $display .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
-    $display .= COM_siteFooter();
-    echo $display;
-    exit;
-}
-
-function getDayViewData($result, $cur_time = '')
-{
-    $max = 0;
-
-    // If no date/time passed used current timestamp
-    if (empty($cur_time)) {
-        $cur_time = time();
-    }
-
-    // Initialize array
-    $hourcols = array();
-    for ($i = 0; $i <= 23; $i++) {
-        $hourcols[$i] = 0;
-    }
-
-    // Get data and increment counters
-    $thedata = array();
-    $nrows = DB_numRows($result);
-
-    $alldaydata = array ();
-    for ($i = 1; $i <= $nrows; $i++) {
-        $A = DB_fetchArray($result);
-        if ($A['allday'] == 1 OR (($A['datestart'] < date('Y-m-d',$cur_time)) AND ($A['dateend'] > date('Y-m-d',$cur_time)))) {
-            // This is an all day event
-            $alldaydata[$i] = $A;
-        } else {
-            // This is an event with start/end times
-            if ($A['datestart'] < date('Y-m-d', $cur_time) AND $A['dateend'] >= date('Y-m-d', $cur_time)) {
-                $starthour = '00';
-            } else {
-                $starthour = date('G', strtotime($A['datestart'] . ' ' . $A['timestart']));
-            }
-            $endhour = date('G', strtotime($A['dateend'] . ' ' . $A['timeend']));
-            if (date('i', strtotime($A['dateend'] . ' ' . $A['timeend'])) == '00') {
-                $endhour = $endhour - 1; 
-            }
-            $hourcols[$starthour] = $hourcols[$starthour] + 1;
-            if ($hourcols[$starthour] > $max) {
-                $max = $hourcols[$starthour];
-            }
-            $thedata[$i] = $A;
-        }
-    }
-
-    return array($hourcols, $thedata, $max, $alldaydata);
-}
-
-function setCalendarLanguage (&$aCalendar)
-{
-    global $_CONF, $LANG30;
-
-    $lang_days = array ('sunday'    => $LANG30[1],
-                        'monday'    => $LANG30[2],
-                        'tuesday'   => $LANG30[3],
-                        'wednesday' => $LANG30[4],
-                        'thursday'  => $LANG30[5],
-                        'friday'    => $LANG30[6],
-                        'saturday'  => $LANG30[7]);
-
-    $lang_months = array ('january'   => $LANG30[13],
-                          'february'  => $LANG30[14],
-                          'march'     => $LANG30[15],
-                          'april'     => $LANG30[16],
-                          'may'       => $LANG30[17],
-                          'june'      => $LANG30[18],
-                          'july'      => $LANG30[19],
-                          'august'    => $LANG30[20],
-                          'september' => $LANG30[21],
-                          'october'   => $LANG30[22],
-                          'november'  => $LANG30[23],
-                          'december'  => $LANG30[24]);
-
-    $aCalendar->setLanguage ($lang_days, $lang_months, $_CONF['week_start']);
-}
-
-/**
-* Returns an abbreviated day's name
-*
-* Note: This is a workaround, to be replaced with something more sensible
-*       in future versions ...
-*
-* @param    int     $day    1 = Sunday, 2 = Monday, ...
-* @return   string          abbreviated day's name (3 characters)
-*
-* The problem here is that substr may return nonsense for UTF-8 strings, but
-* mb_substr may not be available.
-*
-*/
-function shortDaysName ($day)
-{
-    global $LANG_CHARSET, $LANG30;
-
-    static $mb_enabled;
-
-    if (!isset ($mb_enabled)) {
-        $mb_enabled = function_exists ('mb_substr');
-    }
-
-    $shortday = '';
-    if ($mb_enabled) {
-        // when mb_substr is available, use it
-        $shortday = mb_substr ($LANG30[$day], 0, 2, $LANG_CHARSET);
-    } else if ($LANG_CHARSET == 'utf-8') {
-        // no mb_substr, but UTF-8 string: cheat and hope that the locale
-        // matches the current language ...
-        // Note: May 1st, 2005 was a Sunday
-        $shortday = date ('D', mktime (0, 0, 0, 5, $day, 2005));
-    } else {
-        $shortday = substr ($LANG30[$day], 0, 2);
-    }
-
-    return $shortday;
-}
-
-function makeDaysHeadline ()
-{
-    global $_CONF, $LANG30;
-
-    $retval = '<tr><th>';
-    if ($_CONF['week_start'] == 'Mon') {
-        $retval .= shortDaysName (2) . '</th><th>'
-                . shortDaysName (3) . '</th><th>'
-                . shortDaysName (4) . '</th><th>'
-                . shortDaysName (5) . '</th><th>'
-                . shortDaysName (6) . '</th><th>'
-                . shortDaysName (7) . '</th><th>'
-                . shortDaysName (1) . '</th></tr>';
-    } else {
-        $retval .= shortDaysName (1) . '</th><th>'
-                . shortDaysName (2) . '</th><th>'
-                . shortDaysName (3) . '</th><th>'
-                . shortDaysName (4) . '</th><th>'
-                . shortDaysName (5) . '</th><th>'
-                . shortDaysName (6) . '</th><th>'
-                . shortDaysName (7) . '</th></tr>';
-    }
-
-    return $retval;
-}
-
-/**
-* Add the 'mode=' parameter to a URL
-*
-* @param    string  $mode   the mode ('personal' or empty string)
-* @param    boolean $more   whether there are more parameters in the URL or not
-* @param    string          'mode' parameter for the URL or an empty string
-*
-*/
-function addMode ($mode, $more = true)
-{
-    $retval = '';
-
-    if (!empty ($mode)) {
-        $retval .= 'mode=' . $mode;
-        if ($more) {
-            $retval .= '&amp;';
-        }
-    }
-
-    return $retval;
-}
-
-/**
-* Return link to "delete event" image
-*
-* Note: Personal events can be deleted if the current user is the owner of the
-*       calendar and has _read_ access to them.
-*
-* @param    string  $mode   'personal' for personal events
-* @param    array   $A      event permissions and id
-* @return   string          link or empty string
-*
-*/
-function getDeleteImageLink ($mode, $A)
-{
-    global $_CONF, $LANG22, $LANG30, $_IMAGE_TYPE;
-
-    $retval = '';
-
-    if ($mode == 'personal') {
-        if (SEC_hasAccess ($A['owner_id'], $A['group_id'], $A['perm_owner'],
-                $A['perm_group'], $A['perm_members'], $A['perm_anon']) > 0) {
-
-            $retval = '<a href="' . $_CONF['site_url']
-                    . '/calendar_event.php?action=deleteevent&amp;eid='
-                    . $A['eid'] . '"><img src="' . $_CONF['layout_url']
-                    . '/images/icons/delete_event.' . $_IMAGE_TYPE
-                    . '" border="0" alt="' . $LANG30[30] . '" title="'
-                    . $LANG30[30] . '"></a>';
-        }
-    } else if (SEC_hasRights ('event.edit')) {
-        if (SEC_hasAccess ($A['owner_id'], $A['group_id'], $A['perm_owner'],
-                $A['perm_group'], $A['perm_members'], $A['perm_anon']) == 3) {
-
-            $retval = '<a href="' . $_CONF['site_admin_url']
-                    . '/event.php?mode=' . $LANG22[22] . '&amp;eid='
-                    . $A['eid'] . '"><img src="' . $_CONF['layout_url']
-                    . '/images/icons/delete_event.' . $_IMAGE_TYPE
-                    . '" border="0" alt="' . $LANG30[30] . '" title="'
-                    . $LANG30[30] . '"></a>';
-        }
-    }
-
-    return $retval;
-}
-
-/**
-* Gets a small, text-only version of a calendar
-*
-* @param    int     $m  Month to display
-* @param    int     $y  Year to display
-* @return   string      HTML for small calendar
-*
-*/
-function getSmallCalendar ($m, $y, $mode = '')
-{
-    global $_CONF, $LANG30;
-
-    $retval = '';
-    $mycal = new Calendar ();
-    setCalendarLanguage ($mycal);
-    $mycal->setCalendarMatrix ($m, $y);
-
-    if (!empty ($mode)) {
-        $mode = '&amp;mode=' . $mode;
-    }
-
-    $retval .= '<table class="smallcal">' . LB 
-            . '<tr class="smallcal-headline"><td align="center" colspan="7">'
-            . '<a href="' . $_CONF['site_url'] . '/calendar.php?month=' . $m
-            . '&amp;year=' . $y . $mode . '">' . $mycal->getMonthName ($m)
-            . '</a></td></tr>' . makeDaysHeadline () . LB;
-
-    for ($i = 1; $i <= 6; $i++) {
-        if ($i % 2 == 0) {
-            $tr = '<tr class="smallcal-week-even">' . LB;
-        } else {
-            $tr = '<tr class="smallcal-week-odd">' . LB;
-        }
-        $tr_sent = false;
-        for ($j = 1; $j <= 7; $j++) {
-            $curday = $mycal->getDayData ($i, $j);
-            if (!$tr_sent) {
-                if (empty ($curday)) {
-                    $retval .= '<tr class="smallcal-week-empty">' . LB;
-                } else {
-                    $retval .= $tr;
-                }
-                $tr_sent = true;
-            }
-            $retval .= '<td align="right"';
-            if (!empty ($curday)) {
-                if ($j % 2 == 0) {
-                    $retval .= ' class="smallcal-day-even">' . LB;
-                } else {
-                    $retval .= ' class="smallcal-day-odd">' . LB;
-                }
-                $retval .= $curday->daynumber;
-            } else {
-                $retval .= ' class="smallcal-day-empty">&nbsp;';
-            }
-            $retval .= '</td>' . LB;
-        }
-        $retval .= '</tr>' . LB;
-    }
-
-    $retval .= '</table>' . LB;
-    
-    return $retval;
-}
-
-/**
-* Builds Quick Add form
-*
-*/
-function getQuickAdd($tpl, $month, $day, $year)
-{
-    global $LANG30;
-
-    $tpl->set_var ('month_options', COM_getMonthFormOptions ($month));
-    $tpl->set_var ('day_options', COM_getDayFormOptions ($day));
-    $tpl->set_var ('year_options', COM_getYearFormOptions ($year));
-
-    $cur_hour = date ('H', time ());
-    if ($cur_hour >= 12) {
-        $tpl->set_var ('am_selected', '');
-        $tpl->set_var ('pm_selected', 'selected="selected"');
-    } else {
-        $tpl->set_var ('am_selected', 'selected="selected"');
-        $tpl->set_var ('pm_selected', '');
-    }
-    if ($cur_hour > 12) {
-        $cur_hour = $cur_hour - 12;
-    } else if ($cur_hour == 0) {
-        $cur_hour = 12;
-    }
-    $tpl->set_var('hour_options', COM_getHourFormOptions ($cur_hour));
-
-    $tpl->set_var ('lang_event', $LANG30[32]);
-    $tpl->set_var ('lang_date', $LANG30[33]);
-    $tpl->set_var ('lang_time', $LANG30[34]);
-    $tpl->set_var ('lang_add', $LANG30[31]);
-    $tpl->set_var ('lang_quickadd', $LANG30[35]);
-    $tpl->set_var ('lang_submit', $LANG30[36]);
-    $tpl->parse ('quickadd_form', 'quickadd', true);
-
-    return $tpl;
-}
-
-/** 
-* Returns timestamp for the prior sunday of a given day
-*
-*/
-function getPriorSunday($month, $day, $year) 
-{
-    $thestamp = mktime(0, 0, 0, $month, $day, $year);
-    $newday = $day - date('w', $thestamp);
-    $newstamp = mktime(0,0,0,$month,$newday,$year);
-    $newday = date('j',$newstamp);
-    $newmonth = date('n', $newstamp);
-    $newyear = date('Y',$newstamp);
-
-    return array($newmonth, $newday, $newyear);
-}
-
-$mode = '';
-if (isset ($_REQUEST['mode'])) {
-    $mode = COM_applyFilter ($_REQUEST['mode']);
-}
-
-if ($mode != 'personal') {
-    $mode = '';
-}
-
-if ($mode == 'personal') {
-    $display .= COM_siteHeader ('menu', $LANG12[40]);
-} else {
-    $display .= COM_siteHeader ('menu', $LANG12[39]);
-}
-
-// Set mode back to master if user refreshes screen after their session expires
-if (($mode == 'personal') && (!isset ($_USER['uid']) || ($_USER['uid'] <= 1))) {
-    $mode = '';
-}
-
-if ($mode == 'personal' AND $_CONF['personalcalendars'] == 0) {
-    // User is trying to use the personal calendar feature even though it isn't
-    // turned on.
-    $display .= $LANG30[37];
-    $display .= COM_siteFooter();
-    echo $display;
-    exit;
-}
-
-// after this point, we can safely assume that if $mode == 'personal',
-// the current user is actually allowed to use this personal calendar
-
-$msg = 0;
-if (isset ($_REQUEST['msg'])) {
-    $msg = COM_applyFilter ($_REQUEST['msg'], true);
-}
-if ($msg > 0) {
-    $display .= COM_showMessage ($msg);
-}
-
-$view = '';
-if (isset ($_REQUEST['view'])) {
-    $view = COM_applyFilter ($_REQUEST['view']);
-}
-
-if (!in_array ($view, array ('month', 'week', 'day'))) {
-    $view = '';
-}
-
-$year = 0;
-if (isset ($_REQUEST['year'])) {
-    $year = COM_applyFilter ($_REQUEST['year'], true);
-}
-$month = 0;
-if (isset ($_REQUEST['month'])) {
-    $month = COM_applyFilter ($_REQUEST['month'], true);
-}
-$day = 0;
-if (isset ($_REQUEST['day'])) {
-    $day = COM_applyFilter ($_REQUEST['day'], true);
-}
-
-// Create new calendar object
-$cal = new Calendar();
-
-if ($view == 'week' AND (empty($month) AND empty($day) AND empty($year))) {
-    list($month, $day, $year) = getPriorSunday(date('m', time()), date('j', time()), date('Y', time()));
-} else {
-    // Get current month
-    $currentmonth = date('m', time());
-    if (empty($month)) {
-        $month = $currentmonth;
-    }
-
-    // Get current year
-    $currentyear = date('Y', time());
-    if (empty($year)) {
-        $year = $currentyear;
-    }
-
-    // Get current day
-    $currentday =  date('j', time());
-    if (empty($day)) {
-        $day = $currentday;
-    }
-}
-
-// Get previous month and year
-$prevmonth = $month - 1;
-if ($prevmonth == 0) {
-    $prevmonth = 12;
-    $prevyear = $year - 1;
-} else {
-    $prevyear = $year;
-}
-
-// Get next month and year
-$nextmonth = $month + 1;
-if ($nextmonth == 13) {
-    $nextmonth = 1;
-    $nextyear = $year + 1;
-} else {
-    $nextyear = $year;
-}
-
-setCalendarLanguage ($cal);
-
-// Build calendar matrix
-$cal->setCalendarMatrix ($month, $year);
-
-switch ($view) {
-case 'day':
-    $cal_templates = new Template($_CONF['path_layout'] . 'calendar/dayview');
-    $cal_templates->set_file(array('column'=>'column.thtml','event'=>'singleevent.thtml','dayview'=>'dayview.thtml','quickadd'=>'quickaddform.thtml'));
-    $cal_templates->set_var('site_url', $_CONF['site_url']);
-    $cal_templates->set_var ('layout_url', $_CONF['layout_url']);
-    $cal_templates->set_var('mode', $mode);
-    $cal_templates->set_var('lang_day', $LANG30[39]);
-    $cal_templates->set_var('lang_week', $LANG30[40]);
-    $cal_templates->set_var('lang_month', $LANG30[41]);
-    list($wmonth, $wday, $wyear) = getPriorSunday($month, $day, $year);
-    $cal_templates->set_var('wmonth', $wmonth);
-    $cal_templates->set_var('wday', $wday);
-    $cal_templates->set_var('wyear', $wyear);
-    $cal_templates->set_var('month',$month);
-    $cal_templates->set_var('day', $day);
-    $cal_templates->set_var('year',$year);
-    $prevstamp = mktime(0, 0, 0,$month, $day - 1, $year);
-    $nextstamp = mktime(0, 0, 0,$month, $day + 1, $year);
-    $cal_templates->set_var('prevmonth', strftime('%m',$prevstamp));
-    $cal_templates->set_var('prevday', strftime('%d',$prevstamp));
-    $cal_templates->set_var('prevyear', strftime('%Y',$prevstamp));
-    $cal_templates->set_var('nextmonth', strftime('%m',$nextstamp));
-    $cal_templates->set_var('nextday', strftime('%d',$nextstamp));
-    $cal_templates->set_var('nextyear', strftime('%Y',$nextstamp));
-
-    $cal_templates->set_var('currentday', strftime('%A, %x',mktime(0, 0, 0,$month, $day, $year)));
-    if ($mode == 'personal') {
-        $cal_templates->set_var('calendar_title', $LANG30[28] . ' ' . $_USER['username']);
-        $cal_templates->set_var('calendar_toggle', '[<a href="' . $_CONF['site_url'] . "/calendar.php?view=day&amp;month=$month&amp;day=$day&amp;year=$year\">" . $LANG30[11] . '</a>]');
-    } else {
-        $cal_templates->set_var('calendar_title', $_CONF['site_name'] . ' ' . $LANG30[29]);
-        if (!empty($_USER['uid']) AND $_CONF['personalcalendars'] == 1) {
-            $cal_templates->set_var('calendar_toggle', '[<a href="' . $_CONF['site_url'] . "/calendar.php?mode=personal&amp;view=day&amp;month=$month&amp;day=$day&amp;year=$year\">" . $LANG30[12] . '</a>]');
-        } else {
-            $cal_templates->set_var('calendar_toggle', '');
-        }
-    }
-    $thedate = COM_getUserDateTimeFormat(mktime(0,0,0,$month,$day,$year));
-    $cal_templates->set_var('week_num',strftime('%V',$thedate[1]));
-    if ($mode == 'personal') {
-        $calsql = "SELECT * FROM {$_TABLES['personal_events']} WHERE (uid = {$_USER['uid']}) AND ((allday=1 AND datestart = \"$year-$month-$day\") OR (datestart >= \"$year-$month-$day 00:00:00\" AND datestart <= \"$year-$month-$day 23:59:59\") OR (dateend >= \"$year-$month-$day 00:00:00\" AND dateend <= \"$year-$month-$day 23:59:59\") OR (\"$year-$month-$day\" between datestart and dateend)) ORDER BY datestart,timestart";
-    } else {
-        $calsql = "SELECT * FROM {$_TABLES['events']} WHERE ((allday=1 AND datestart = \"$year-$month-$day\") OR (datestart >= \"$year-$month-$day 00:00:00\" AND datestart <= \"$year-$month-$day 23:59:59\") OR (dateend >= \"$year-$month-$day 00:00:00\" AND dateend <= \"$year-$month-$day 23:59:59\") OR (\"$year-$month-$day\" between datestart and dateend))" . COM_getPermSql ('AND') . " ORDER BY datestart,timestart";
-    }
-    $result = DB_query($calsql);
-    $nrows = DB_numRows($result);
-    list($hourcols, $thedata, $max, $alldaydata) = getDayViewData($result);
-
-    // Get all day events
-    if (count ($alldaydata) > 0) {
-        for ($i = 1; $i <= count ($alldaydata); $i++) {
-            $A = current($alldaydata);
-            $cal_templates->set_var ('delete_imagelink',
-                                     getDeleteImageLink ($mode, $A));
-            $cal_templates->set_var('event_time', $LANG30[26]);
-            $cal_templates->set_var('eid', $A['eid']);
-            $cal_templates->set_var('event_title',stripslashes($A['title']));
-            if ($i < count($alldaydata)) {
-                $cal_templates->set_var('br', '<br>');
-            } else {
-                $cal_templates->set_var('br', '');
-            }
-            $cal_templates->parse('allday_events','event', true); 
-            next($alldaydata);
-        }
-    } else {
-        $cal_templates->set_var('allday_events','&nbsp;');
-    }
-
-    //$cal_templates->set_var('first_colspan', $maxcols);
-    //$cal_templates->set_var('title_colspan', $maxcols + 1);
-    for ($i = 0; $i <= 23; $i++) {
-        $numevents = $hourcols[$i];
-        if ($numevents > 0) {
-            // $colsleft = $maxcols;
-            $cal_templates->set_var ('layout_url', $_CONF['layout_url']);
-            for ($j = 1; $j <= $numevents; $j++) {
-                $A = current ($thedata);
-                $cal_templates->set_var ('event_time',
-                    strftime ($_CONF['timeonly'], strtotime ($A['datestart']
-                            . ' ' . $A['timestart'])) . '-'
-                    . strftime ($_CONF['timeonly'], strtotime ($A['dateend']
-                            . ' ' . $A['timeend'])));
-                $cal_templates->set_var ('delete_imagelink',
-                                         getDeleteImageLink ($mode, $A));
-                $cal_templates->set_var('eid', $A['eid']);
-                $cal_templates->set_var('event_title', stripslashes($A['title']));
-                if ($j < $numevents) {
-                    $cal_templates->set_var('br', '<br>');
-                } else {
-                    $cal_templates->set_var('br', '');
-                }
-                $cal_templates->parse ('event_entry', 'event',
-                                       ($j == 1) ? false : true);
-                // $colsleft = $colsleft - 1;
-                next($thedata);
-            }
-        } else {
-            $cal_templates->set_var('event_entry','&nbsp;');
-        }
-        $cal_templates->set_var ($i . '_hour',
-                strftime ($_CONF['timeonly'], mktime ($i, 0)));
-        $cal_templates->parse ($i . '_cols', 'column', true);
-    }
-
-    if ($mode == 'personal') {
-        $cal_templates = getQuickAdd($cal_templates, $month, $day, $year);
-    } else {
-        $cal_templates->set_var('quickadd_form','');
-    }
-    $display .= $cal_templates->parse('output', 'dayview');
-    $display .= COM_siteFooter();
-    break;
-
-case 'week':
-    $cal_templates = new Template($_CONF['path_layout'] . 'calendar');
-    $cal_templates->set_file(array('week'=>'weekview/weekview.thtml','events'=>'weekview/events.thtml','quickadd'=>'dayview/quickaddform.thtml'));
-    $cal_templates->set_var('site_url', $_CONF['site_url']);
-    $cal_templates->set_var ('layout_url', $_CONF['layout_url']);
-    $cal_templates->set_var('mode', $mode);
-    $cal_templates->set_var('lang_week', $LANG30[27]);
-    if ($mode == 'personal') {
-        $cal_templates->set_var('calendar_title', $LANG30[28] . ' ' . $_USER['username']);
-        $cal_templates->set_var('calendar_toggle', '[<a href="' . $_CONF['site_url'] . "/calendar.php?view=week&amp;month=$month&amp;day=$day&amp;year=$year\">" . $LANG30[11] . '</a>]');
-    } else {
-        $cal_templates->set_var('calendar_title', $_CONF['site_name'] . ' ' . $LANG30[29]);
-        if (!empty($_USER['uid']) AND $_CONF['personalcalendars'] == 1) {
-            $cal_templates->set_var('calendar_toggle', '[<a href="' . $_CONF['site_url'] . "/calendar.php?mode=personal&amp;view=week&amp;month=$month&amp;day=$day&amp;year=$year\">" . $LANG30[12] . '</a>]');
-        } else {
-            $cal_templates->set_var('calendar_toggle', '');
-        }
-    }
-    if ($mode == 'personal') {
-        $cal_templates = getQuickAdd($cal_templates, $month, $day, $year);
-    } else {
-        $cal_templates->set_var('quickadd_form','');
-    }
-    // Get data for previous week
-    $prevstamp = mktime(0,0,0,$month,$day-7,$year);
-    $nextstamp = mktime(0,0,0,$month,$day+7,$year);
-    $cal_templates->set_var('prevmonth',strftime('%m',$prevstamp));
-    $cal_templates->set_var('prevday',date('j',$prevstamp));
-    $cal_templates->set_var('prevyear',strftime('%Y',$prevstamp));
-    $cal_templates->set_var('nextmonth',strftime('%m',$nextstamp));
-    $cal_templates->set_var('nextday',date('j',$nextstamp));
-    $cal_templates->set_var('nextyear',strftime('%Y',$nextstamp));
-    $cal_templates->set_var ('lang_day', $LANG30[39]);
-    $cal_templates->set_var ('lang_week', $LANG30[40]);
-    $cal_templates->set_var ('lang_month', $LANG30[41]);
-    if ($_CONF['week_start'] == 'Mon') {
-        $time_day1 = mktime (0, 0, 0, $month, $day + 1, $year);
-        $time_day7 = mktime (0, 0, 0, $month, $day + 7, $year);
-        $start_mname = strftime ('%B', $time_day1);
-        $eday = strftime ('%e', $time_day7);
-        $end_mname = strftime ('%B', $time_day7);
-        $end_ynum = strftime ('%Y', $time_day7);
-        $date_range = $start_mname . ' ' . strftime ('%e', $time_day1);
-    } else {
-        $start_mname = strftime ('%B', mktime (0, 0, 0, $month, $day, $year));
-        $time_day6 = mktime (0, 0, 0, $month, $day + 6, $year);
-        $eday = strftime ('%e', $time_day6);
-        $end_mname = strftime ('%B', $time_day6);
-        $end_ynum = strftime ('%Y', $time_day6);
-        $date_range = $start_mname . ' ' . $day;
-    }
-    if ($year <> $end_ynum) {
-        $date_range .= ', ' . $year . ' - ';
-    } else {
-        $date_range .= ' - ';
-    }
-    if ($start_mname <> $end_mname) {
-        $date_range .= $end_mname . ' ' . $eday . ', ' . $end_ynum;
-    } else {
-        $date_range .= $eday . ', ' . $end_ynum;
-    }
-    $cal_templates->set_var('date_range', $date_range);
-    if ($_CONF['week_start'] == 'Mon') {
-        $thedate = COM_getUserDateTimeFormat (mktime (0, 0, 0, $month, $day + 1,$year));
-    } else {
-        $thedate = COM_getUserDateTimeFormat (mktime (0, 0, 0, $month, $day, $year));
-    }
-    $cal_templates->set_var('week_num',$thedate[1]);
-    for ($i = 1; $i <= 7; $i++) {
-        if ($_CONF['week_start'] == 'Mon') {
-            $dayname = (date ('w', $thedate[1]) == 0)
-                     ? $cal->getDayName (7)
-                     : $cal->getDayName (date ('w', $thedate[1]));
-        } else {
-            $dayname = $cal->getDayName (date ('w', $thedate[1]) + 1);
-        }
-        $monthnum = date('m', $thedate[1]);
-        $daynum = date('d', $thedate[1]);
-        $yearnum = date('Y', $thedate[1]);
-        if ($yearnum . '-' . $monthnum . '-' . $daynum == date('Y-m-d',time())) {
-            $cal_templates->set_var('class'.$i,'weekview-curday');
-        } else {
-            $cal_templates->set_var('class'.$i,'weekview-offday');
-        }
-        $monthname = $cal->getMonthName($monthnum);
-        $cal_templates->set_var ('day' . $i, $dayname . ', <a href="'
-            . $_CONF['site_url'] . '/calendar.php?' . addMode ($mode)
-            . 'view=day&amp;day=' . $daynum . '&amp;month=' . $monthnum
-            . '&amp;year=' . $yearnum . '">' . strftime ('%x', $thedate[1])
-            . '</a>');
-        $cal_templates->set_var ('langlink_addevent' . $i, '<a href="'
-            . $_CONF['site_url'] . '/submit.php?type=event&amp;'
-            . addMode ($mode) . 'day=' . $daynum . '&amp;month=' . $monthnum
-            . '&amp;year=' . $yearnum . '">' . $LANG30[8] . '</a>');
-        if ($mode == 'personal') {
-            $calsql = "SELECT * FROM {$_TABLES['personal_events']} WHERE (uid = {$_USER['uid']}) AND ((allday=1 AND datestart = \"$yearnum-$monthnum-$daynum\") OR (datestart >= \"$yearnum-$monthnum-$daynum 00:00:00\" AND datestart <= \"$yearnum-$monthnum-$daynum 23:59:59\") OR (dateend >= \"$yearnum-$monthnum-$daynum 00:00:00\" AND dateend <= \"$yearnum-$monthnum-$daynum 23:59:59\") OR (\"$yearnum-$monthnum-$daynum\" between datestart and dateend)) ORDER BY datestart,timestart";
-        } else {
-            $calsql = "SELECT * FROM {$_TABLES['events']} WHERE ((allday=1 AND datestart = \"$yearnum-$monthnum-$daynum\") OR (datestart >= \"$yearnum-$monthnum-$daynum 00:00:00\" AND datestart <= \"$yearnum-$monthnum-$daynum 23:59:59\") OR (dateend >= \"$yearnum-$monthnum-$daynum 00:00:00\" AND dateend <= \"$yearnum-$monthnum-$daynum 23:59:59\") OR (\"$yearnum-$monthnum-$daynum\" between datestart and dateend))" . COM_getPermSql ('AND') . " ORDER BY datestart,timestart";
-        }
-        $result = DB_query($calsql);
-        $nrows = DB_numRows($result);
-        for ($j = 1; $j <= $nrows; $j++) {
-            $A = DB_fetchArray($result);
-            if ($A['allday'] == 1) {
-                $cal_templates->set_var('event_starttime', $LANG30[26]);
-                $cal_templates->set_var('event_endtime','');
-            } else {
-                $startstamp = strtotime($A['datestart'] . ' ' . $A['timestart']);
-                $endstamp = strtotime($A['dateend'] . ' ' . $A['timeend']);
-                $startday = date('d',$startstamp);
-                $startmonth = date('n',$startstamp);
-                $endday = date('d', $endstamp);
-                $endmonth = date('n',$endstamp);
-                if (($startmonth == $monthnum && $daynum > $startday) OR ($startmonth <> $monthnum)) {
-                    $starttime = date('n/j g:i a',$startstamp);
-                } else { 
-                    $starttime = date('g:i a', $startstamp); 
-                }
-                if (($endmonth == $monthnum && $daynum < $endday) OR ($endmonth <> $monthnum)) {
-                    $endtime = date('n/j g:i a', $endstamp);
-                } else { 
-                    $endtime = date('g:i a', $endstamp); 
-                }
-                $cal_templates->set_var('event_starttime', $starttime);
-                $cal_templates->set_var('event_endtime', ' - ' . $endtime);
-            }
-            $cal_templates->set_var ('event_title_and_link', '<a href="'
-                . $_CONF['site_url'] . '/calendar_event.php?' . addMode ($mode)
-                . 'eid=' . $A['eid'] . '">' . stripslashes($A['title'])
-                . '</a>');
-            // Provide delete event link if user has access
-            $cal_templates->set_var ('delete_imagelink',
-                                     getDeleteImageLink ($mode, $A));
-            $cal_templates->parse ('events_day' . $i, 'events', true);
-        }
-        if ($nrows == 0) {
-            $cal_templates->set_var('event_starttime','&nbsp;');
-            $cal_templates->set_var('event_endtime','');
-            $cal_templates->set_var('event_title_and_link','');
-            $cal_templates->set_var('delete_imagelink','');
-            $cal_templates->parse('events_day'.$i,'events',true);
-        }
-        // Go to next day
-        $thedate = COM_getUserDateTimeFormat(mktime(0,0,0,$monthnum, $daynum + 1, $yearnum));
-    }
-
-    $display .= $cal_templates->parse('output','week');
-    $display .= COM_siteFooter();
-    break;
-
-default: // month view
-// Load templates
-$cal_templates = new Template($_CONF['path_layout'] . 'calendar');
-$cal_templates->set_file (array (
-        'calendar'    => 'calendar.thtml',
-        'week'        => 'calendarweek.thtml',
-        'day'         => 'calendarday.thtml',
-        'event'       => 'calendarevent.thtml',
-        'mastercal'   => 'mastercalendaroption.thtml',
-        'personalcal' => 'personalcalendaroption.thtml',
-        'addevent'    => 'addeventoption.thtml'
-        ));
-
-$cal_templates->set_var ('site_url', $_CONF['site_url']);
-$cal_templates->set_var ('layout_url', $_CONF['layout_url']);
-$cal_templates->set_var ('mode', $mode);
-if ($mode == 'personal') {
-    $cal_templates->set_var ('start_block', COM_startBlock ($LANG30[12]));
-    $cal_templates->set_var ('end_block', COM_endBlock ());
-} else {
-    $cal_templates->set_var ('start_block', COM_startBlock ($LANG30[11]));
-    $cal_templates->set_var ('end_block', COM_endBlock ());
-}
-
-$smallcal_prev = getSmallCalendar ($prevmonth, $prevyear, $mode);
-$cal_templates->set_var ('previous_months_calendar', $smallcal_prev);
-$cal_templates->set_var ('previous_months_cal',
-                         '<font size="-2">' . LB . $smallcal_prev . '</font>');
-
-$smallcal_next = getSmallCalendar ($nextmonth, $nextyear, $mode);
-$cal_templates->set_var ('next_months_calendar', $smallcal_next);
-$cal_templates->set_var ('next_months_cal',
-                         '<font size="-2">' . LB . $smallcal_next . '</font>');
-
-$cal_templates->set_var('cal_prevmo_num', $prevmonth);
-$cal_templates->set_var('cal_prevyr_num', $prevyear);
-$cal_templates->set_var('cal_month_and_year', $cal->getMonthName($month) . ' ' . $year);
-$cal_templates->set_var('cal_nextmo_num', $nextmonth);
-$cal_templates->set_var('cal_nextyr_num', $nextyear);
-
-if ($_CONF['week_start'] == 'Mon') {
-    $cal_templates->set_var('lang_sunday', $LANG30[2]);
-    $cal_templates->set_var('lang_monday', $LANG30[3]);
-    $cal_templates->set_var('lang_tuesday', $LANG30[4]);
-    $cal_templates->set_var('lang_wednesday', $LANG30[5]);
-    $cal_templates->set_var('lang_thursday', $LANG30[6]);
-    $cal_templates->set_var('lang_friday', $LANG30[7]);
-    $cal_templates->set_var('lang_saturday', $LANG30[1]);
-} else {
-    $cal_templates->set_var('lang_sunday', $LANG30[1]);
-    $cal_templates->set_var('lang_monday', $LANG30[2]);
-    $cal_templates->set_var('lang_tuesday', $LANG30[3]);
-    $cal_templates->set_var('lang_wednesday', $LANG30[4]);
-    $cal_templates->set_var('lang_thursday', $LANG30[5]);
-    $cal_templates->set_var('lang_friday', $LANG30[6]);
-    $cal_templates->set_var('lang_saturday', $LANG30[7]);
-}
-
-$cal_templates->set_var('lang_january', $LANG30[13]);
-if ($month == 1) $cal_templates->set_var('selected_jan','selected="selected"');
-$cal_templates->set_var('lang_february', $LANG30[14]);
-if ($month == 2) $cal_templates->set_var('selected_feb','selected="selected"');
-$cal_templates->set_var('lang_march', $LANG30[15]);
-if ($month == 3) $cal_templates->set_var('selected_mar','selected="selected"');
-$cal_templates->set_var('lang_april', $LANG30[16]);
-if ($month == 4) $cal_templates->set_var('selected_apr','selected="selected"');
-$cal_templates->set_var('lang_may', $LANG30[17]);
-if ($month == 5) $cal_templates->set_var('selected_may','selected="selected"');
-$cal_templates->set_var('lang_june', $LANG30[18]);
-if ($month == 6) $cal_templates->set_var('selected_jun','selected="selected"');
-$cal_templates->set_var('lang_july', $LANG30[19]);
-if ($month == 7) $cal_templates->set_var('selected_jul','selected="selected"');
-$cal_templates->set_var('lang_august', $LANG30[20]);
-if ($month == 8) $cal_templates->set_var('selected_aug','selected="selected"');
-$cal_templates->set_var('lang_september', $LANG30[21]);
-if ($month == 9) $cal_templates->set_var('selected_sep','selected="selected"');
-$cal_templates->set_var('lang_october', $LANG30[22]);
-if ($month == 10) $cal_templates->set_var('selected_oct','selected="selected"');
-$cal_templates->set_var('lang_november', $LANG30[23]);
-if ($month == 11) $cal_templates->set_var('selected_nov','selected="selected"');
-$cal_templates->set_var('lang_december', $LANG30[24]);
-if ($month == 12) $cal_templates->set_var('selected_dec','selected="selected"');
-
-$cal_templates->set_var('lang_day', $LANG30[39]);
-$cal_templates->set_var('lang_week', $LANG30[40]);
-$cal_templates->set_var('lang_month', $LANG30[41]);
-
-if ($mode == 'personal') {
-    $cal_templates->set_var ('calendar_title',
-                             $LANG30[28] . ' ' . $_USER['username']);
-} else {
-    $cal_templates->set_var ('calendar_title',
-                             $_CONF['site_name'] . ' ' . $LANG30[29]);
-}
-
-$yroptions = '';
-for ($y = $currentyear - 5; $y <= $currentyear + 5; $y++) {
-    $yroptions .= '<option value="' . $y . '"';
-    if ($y == $year) {
-        $yroptions .= ' selected="selected"';
-    }
-    $yroptions .= '>' . $y . '</option>'.LB;
-}
-$cal_templates->set_var('year_options', $yroptions);
-
-for ($i = 1; $i <= 6; $i++) {
-    $wday = '';
-    for ($j = 1; $j <= 7; $j++) {
-        $curday = $cal->getDayData($i, $j);
-        if (!empty($curday)) {
-            // Cache first actual day of the week to build week view link
-            if (empty($wday)) {
-                $wday = $curday->daynumber;
-            }
-            if (($currentyear > $year) OR
-                ($currentmonth > $month && $currentyear == $year) OR
-                ($currentmonth == $month && $currentday > $curday->daynumber && $currentyear == $year)) {
-                $cal_templates->set_var('cal_day_style', 'cal-oldday'); 
-            } else {
-                if ($currentyear == $year && $currentmonth == $month && $currentday == $curday->daynumber) {
-                    $cal_templates->set_var('cal_day_style','cal-today');
-                } else {
-                    $cal_templates->set_var('cal_day_style', 'cal-futureday');
-                }
-            }
-
-            if (strlen($curday->daynumber) == 1) {
-                $curday->daynumber = '0' . $curday->daynumber;
-            }
-
-            $cal_templates->set_var ('cal_day_anchortags', '<a href="'
-                . $_CONF['site_url'] . '/calendar.php?view=day&amp;'
-                . addMode ($mode) . 'day=' . $curday->daynumber. '&amp;month='
-                . $month . '&amp;year=' . $year . '" class="cal-date">'
-                . $curday->daynumber. '</a><hr>');
-
-            if ($mode == 'personal') {
-                if (strlen($month) == 1) {
-                    $month = '0' . $month;
-                }
-                $calsql = "SELECT * FROM {$_TABLES['personal_events']} WHERE (uid = {$_USER['uid']}) AND ((datestart >= \"$year-$month-$curday->daynumber 00:00:00\" AND datestart <= \"$year-$month-$curday->daynumber 23:59:59\") OR (dateend >= \"$year-$month-$curday->daynumber 00:00:00\" AND dateend <= \"$year-$month-$curday->daynumber 23:59:59\") OR (\"$year-$month-$curday->daynumber\" between datestart and dateend)) ORDER BY datestart,timestart";
-            } else {
-                if (strlen($month) == 1) {
-                    $month = '0' . $month;
-                }
-                $calsql = "SELECT * FROM {$_TABLES['events']} WHERE ((datestart >= \"$year-$month-$curday->daynumber 00:00:00\" AND datestart <= \"$year-$month-$curday->daynumber 23:59:59\") OR (dateend >= \"$year-$month-$curday->daynumber 00:00:00\" AND dateend <= \"$year-$month-$curday->daynumber 23:59:59\") OR (\"$year-$month-$curday->daynumber\" between datestart and dateend))" . COM_getPermSql ('AND') . " ORDER BY datestart,timestart";
-            }
-
-            $query2 = DB_query($calsql);
-            $q2_numrows = DB_numRows($query2);
-
-            if ($q2_numrows > 0) {
-                $entries = '';
-                for ($z = 1; $z <= $q2_numrows; $z++) {
-                    $results = DB_fetchArray ($query2);
-                    if ($results['title']) {
-                        $cal_templates->set_var ('cal_day_entries', '');
-                        $entries .= '<a href="' . $_CONF['site_url']
-                            . '/calendar_event.php?' . addMode ($mode)
-                            . 'eid=' . $results['eid'] . '" class="cal-event">'
-                            . stripslashes ($results['title']) . '</a><hr>';
-                    }
-                }
-                for ($z = $z; $z <= 4; $z++) {
-                    $entries .= '<br>';
-                }
-
-                $cal_templates->set_var('event_anchortags', $entries);
-
-            } else {
-                if ($q2_numrows < 4) {
-                    for ($t=0; $t < (4 - $q2_numrows); $t++) {
-                        $cal_templates->set_var('cal_day_entries','<br><br><br><br>');
-                    }
-                }
-            }
-
-            $cal_templates->parse('cal_day_entries', 'event', true);
-            $cal_templates->set_var('event_anchortags','');
-        } else {
-            if ($i > 1) {
-                // Close out calendar if needed
-                for ($k = $j; $k <= 7; $k++) {
-                    $cal_templates->set_var('cal_day_style','cal-nullday');
-                    $cal_templates->set_var('cal_day_anchortags', '');
-                    $cal_templates->set_var('cal_day_entries','&nbsp;');
-                    if ($k < 7) $cal_templates->parse('cal_days', 'day', true);
-                }
-                // for looping to stop...we are done now
-                $i = 7;
-                $j = 8;
-            } else {
-                // Print empty box for any days in the first week that occur
-                // before the first day
-                $cal_templates->set_var('cal_day_style','cal-nullday');
-                $cal_templates->set_var('cal_day_anchortags', '');
-                $cal_templates->set_var('cal_day_entries','&nbsp;');
-            }
-        }
-        $cal_templates->parse('cal_days','day',true);
-    }
-    list($wmonth, $wday, $wyear) = getPriorSunday($month, $wday, $year);
-    $cal_templates->set_var('wmonth', $wmonth);
-    $cal_templates->set_var('wday', $wday);
-    $cal_templates->set_var('wyear', $wyear);
-    $cal_templates->parse('cal_week', 'week',true);
-    $cal_templates->set_var('cal_days','');
-
-    // check if we need to render the following week at all
-    if ($i < 6) {
-        $data = $cal->getDayData ($i + 1, 1);
-        if (empty ($data)) {
-            break;     
-        }
-    }
-}
-
-if ($mode == 'personal') {
-    $cal_templates->set_var('lang_mastercal', $LANG30[25] . $LANG30[11]);
-    $cal_templates->parse('master_calendar_option','mastercal',true); 
-} else {
-    if (isset ($_USER['uid']) && ($_USER['uid'] > 1) &&
-            ($_CONF['personalcalendars'] == 1)) {
-        $cal_templates->set_var('lang_mycalendar', $LANG30[12]);
-        $cal_templates->parse('personal_calendar_option','personalcal',true); 
-    } else {
-        $cal_templates->set_var('personal_calendar_option','&nbsp;');
-    }
-}
-$cal_templates->set_var('lang_addevent', $LANG30[8]);
-$cal_templates->set_var('lang_cal_curmo', $LANG30[12 + $currentmonth]);
-$cal_templates->set_var('cal_curmo_num', $currentmonth);
-$cal_templates->set_var('cal_curyr_num', $currentyear);
-$cal_templates->set_var('lang_cal_displaymo', $LANG30[12 + $month]);
-$cal_templates->set_var('cal_displaymo_num', $month);
-$cal_templates->set_var('cal_displayyr_num', $year);
-$cal_templates->parse('add_event_option','addevent',true);
-
-$cal_templates->parse('output','calendar');
-$display .= $cal_templates->finish($cal_templates->get_var('output'));
-
-$display .= COM_siteFooter();
-break;
-
-} // end switch	
-
-echo $display;
-
-?>
diff -ruN 1.4.0sr5-1.src/comment.php 1.4.1.src/comment.php
--- 1.4.0sr5-1.src/comment.php	2006-08-08 02:53:59.000000000 -0500
+++ 1.4.1.src/comment.php	2006-12-11 05:49:17.000000000 -0600
@@ -2,13 +2,13 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Geeklog 1.3                                                               |
+// | Geeklog 1.4                                                               |
 // +---------------------------------------------------------------------------+
 // | comment.php                                                               |
 // |                                                                           |
 // | Let user comment on a story or plugin.                                    |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs        - tony@tonybibbs.com                           |
 // |          Mark Limburg      - mlimburg@users.sourceforge.net               |
@@ -33,7 +33,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: comment.php,v 1.100 2005/12/06 05:03:15 vinny Exp $
+// $Id: comment.php,v 1.112 2006/12/11 11:49:17 dhaun Exp $
 
 /**
 * This file is responsible for letting user enter a comment and saving the
@@ -61,14 +61,17 @@
 // echo COM_debug($_POST);
 
 /**
- * Hanldes a comment submission
+ * Handles a comment submission
  *
  * @copyright Vincent Furia 2005
  * @author Vincent Furia <vinny01 AT users DOT sourceforge DOT net>
  * @return string HTML (possibly a refresh)
  */
-function handleSubmit() {
-    global $_POST, $_TABLES, $_CONF, $LANG03;
+function handleSubmit()
+{
+    global $_CONF, $_TABLES, $_USER, $LANG03;
+
+    $display = '';
 
     $type = COM_applyFilter ($_POST['type']);
     $sid = COM_applyFilter ($_POST['sid']);
@@ -85,10 +88,11 @@
                 'article', COM_applyFilter ($_POST['postmode']));
 
             if ( $ret > 0 ) { // failure //FIXME: some failures should not return to comment form
-                $display .= COM_siteHeader()
-                    . CMT_commentform ($_USER['uid'], $_POST['title'], $_POST['comment'], $sid, 
-                                       $_POST['pid'], $type, $LANG03[14], $_POST['postmode'])
-                    . COM_siteFooter();
+                $display .= COM_siteHeader ('menu', $LANG03[1])
+                         . CMT_commentForm ($_POST['title'], $_POST['comment'],
+                           $sid, COM_applyFilter($_POST['pid']), $type,
+                           $LANG03[14], COM_applyFilter($_POST['postmode']))
+                         . COM_siteFooter();
             } else { // success
                 $comments = DB_count ($_TABLES['comments'], 'sid', $sid);
                 DB_change ($_TABLES['stories'], 'comments', $comments, 'sid', $sid);
@@ -116,8 +120,9 @@
  * @author Vincent Furia <vinny01 AT users DOT sourceforge DOT net>
  * @return string HTML (possibly a refresh)
  */
-function handleDelete() {
-    global $_REQUEST, $_TABLES, $_CONF;
+function handleDelete()
+{
+    global $_CONF, $_TABLES;
 
     $type = COM_applyFilter ($_REQUEST['type']);
     $sid = COM_applyFilter ($_REQUEST['sid']);
@@ -165,6 +170,8 @@
 {
     global $_CONF, $_TABLES, $_USER, $LANG_ACCESS;
 
+    $display = '';
+
     if ($view) {
         $cid = COM_applyFilter ($_REQUEST['cid'], true);
     } else {
@@ -181,7 +188,10 @@
     $title = $A['title'];
     $type  = $A['type'];
 
-    $format = COM_applyFilter ($_REQUEST['format']);
+    $format = $_CONF['comment_mode'];
+    if( isset( $_REQUEST['format'] )) {
+        $format = COM_applyFilter( $_REQUEST['format'] );
+    }
     if ( $format != 'threaded' && $format != 'nested' && $format != 'flat' ) {
         if ( $_USER['uid'] > 1 ) {
             $format = DB_getItem( $_TABLES['usercomment'], 'commentmode', 
@@ -195,8 +205,8 @@
         case 'article':
             $sql = 'SELECT COUNT(*) AS count, owner_id, group_id, perm_owner, perm_group, '
                  . "perm_members, perm_anon FROM {$_TABLES['stories']} WHERE (sid = '$sid') "
-                 . 'AND (draft_flag = 0) AND (date <= NOW())' . COM_getPermSQL('AND') 
-                 . COM_getTopicSQL('AND') . 'GROUP BY sid';
+                 . 'AND (draft_flag = 0) AND (commentcode = 0) AND (date <= NOW())' . COM_getPermSQL('AND') 
+                 . COM_getTopicSQL('AND') . ' GROUP BY sid,owner_id, group_id, perm_owner, perm_group,perm_members, perm_anon ';
             $result = DB_query ($sql);
             $B = DB_fetchArray ($result);
             $allowed = $B['count'];
@@ -206,9 +216,16 @@
                     ( SEC_hasAccess( $B['owner_id'], $B['group_id'],
                         $B['perm_owner'], $B['perm_group'], $B['perm_members'],
                         $B['perm_anon'] ) == 3 ) );
-                $display .= CMT_userComments ($sid, $title, $type, 
-                        COM_applyFilter ($_REQUEST['order']), $format, $cid,
-                        COM_applyFilter ($_REQUEST['page'], true), $view, $delete_option);
+                $order = '';
+                if (isset ( $_REQUEST['order'])) {
+                    $order = COM_applyFilter ($_REQUEST['order']);
+                }
+                $page = 0;
+                if (isset ($_REQUEST['page'])) {
+                    $page = COM_applyFilter ($_REQUEST['page'], true);
+                }
+                $display .= CMT_userComments ($sid, $title, $type, $order,
+                                $format, $cid, $page, $view, $delete_option);
             } else {
                 $display .= COM_startBlock ($LANG_ACCESS['accessdenied'], '',
                                     COM_getBlockTemplate ('_msg_block', 'header'))
@@ -237,14 +254,19 @@
     $_REQUEST['mode'] = '';
 }
 
-switch ( $_REQUEST['mode'] ) {
+$mode = '';
+if (!empty ($_REQUEST['mode'])) {
+    $mode = COM_applyFilter ($_REQUEST['mode']);
+}
+switch ($mode) {
 case $LANG03[14]: // Preview
-    $display .= COM_siteHeader()
-        . CMT_commentForm ( strip_tags ($_POST['title']), $_POST['comment'],
-            COM_applyFilter ($_POST['sid']), COM_applyFilter ($_POST['pid'], true),
-            COM_applyFilter ($_POST['type']), COM_applyFilter ($_POST['mode']),
-            COM_applyFilter ($_POST['postmode']))
-        . COM_siteFooter(); 
+    $display .= COM_siteHeader('menu', $LANG03[14])
+             . CMT_commentForm (strip_tags ($_POST['title']), $_POST['comment'],
+                    COM_applyFilter ($_POST['sid']),
+                    COM_applyFilter ($_POST['pid'], true),
+                    COM_applyFilter ($_POST['type']), $mode,
+                    COM_applyFilter ($_POST['postmode']))
+             . COM_siteFooter(); 
     break;
 
 case $LANG03[11]: // Submit Comment
@@ -264,7 +286,7 @@
     break;
 
 case 'report':
-    $display .= COM_siteHeader ('menu')
+    $display .= COM_siteHeader ('menu', $LANG03[27])
               . CMT_reportAbusiveComment (COM_applyFilter ($_GET['cid'], true),
                                           COM_applyFilter ($_GET['type']))
               . COM_siteFooter ();
@@ -278,7 +300,14 @@
 default:  // New Comment
     $sid = COM_applyFilter ($_REQUEST['sid']);
     $type = COM_applyFilter ($_REQUEST['type']);
-    $title = strip_tags ($_REQUEST['title']);
+    $title = '';
+    if (isset ($_REQUEST['title'])) {
+        $title = strip_tags ($_REQUEST['title']);
+    }
+    $postmode = $_CONF['postmode'];
+    if (isset ($_REQUEST['postmode'])) {
+        $postmode = COM_applyFilter ($_REQUEST['postmode']);
+    }
 
     if (!empty ($sid) && !empty ($type)) { 
         if (empty ($title)) {
@@ -294,9 +323,10 @@
             $title = str_replace ( '&gt;', '>', $title );
         }
         $display .= COM_siteHeader('menu', $LANG03[1])
-            . CMT_commentForm ($title, '', $sid, COM_applyFilter ($_REQUEST['pid'], true),
-                $type, COM_applyFilter ($_REQUEST['mode']), COM_applyFilter ($_REQUEST['postmode']))
-            . COM_siteFooter();
+                 . CMT_commentForm ($title, '', $sid,
+                        COM_applyFilter ($_REQUEST['pid'], true), $type, $mode,
+                        $postmode)
+                 . COM_siteFooter();
     } else {
         $display .= COM_refresh($_CONF['site_url'] . '/index.php');
     }
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/config.php 1.4.1.src/cpanel-glprivate/config.php
--- 1.4.0sr5-1.src/cpanel-glprivate/config.php	2006-11-29 13:50:35.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/config.php	2008-01-18 11:49:30.000000000 -0600
@@ -33,7 +33,7 @@
 // | on configuration.                                                         |
 // +---------------------------------------------------------------------------+
 //
-// $Id: config.php,v 1.208.2.6 2006/07/22 15:10:52 dhaun Exp $
+// $Id: config.php,v 1.240 2006/12/30 17:43:18 dhaun Exp $
 
 // When setting up Geeklog for the first time, you need to make sure the
 // settings in the following 3 sections are correct:
@@ -88,7 +88,8 @@
 // problems accessing Geeklog's admin menu.
 $_CONF['site_admin_url']    = $_CONF['site_url'] . '/admin';
 
-// This is the return address for all email sent by Geeklog:
+// This is the return address for all email sent by Geeklog and contact info
+// displayed in syndication feeds:
 $_CONF['site_mail']         = '[% email %]';
 
 // Name and slogan of your site
@@ -173,19 +174,23 @@
 // | Database type and database backup settings.                               |
 // +---------------------------------------------------------------------------+
 
-$_DB_dbms = 'mysql';   // Do not change (currently, only MySQL is supported)
+$_DB_dbms = 'mysql'; // can be either 'mysql' or 'mssql' (Microsoft SQL Server)
+
+
+// the following options are for MySQL only
 
 // optional settings for making database backups from within Geeklog
 $_CONF['allow_mysqldump']   = 1;      // 1 = on, 0 = off
 
-// full path to mysqldump executable (Windows users: add ".exe"!)
+// full path of the mysqldump executable (Windows users: add ".exe"!)
 $_DB_mysqldump_path = '/usr/bin/mysqldump';
 
 // additional options for mysqldump
-// If you're using InnoDB tables, include the '--single-transaction' or you
+// If you're using InnoDB tables, include '--single-transaction' or you
 // may end up with inconsistent backups!
 $_CONF['mysqldump_options'] = '-Q';
 
+
 // +---------------------------------------------------------------------------+
 // | SITE SETTINGS                                                             |
 // |                                                                           |
@@ -200,7 +205,6 @@
 (
     // 'home',      // link to homepage
     'contribute',   // contribute / "submit a story" link
-    'calendar',     // link to the site calendar
     'search',       // link to advanced search
     'stats',        // link to site stats
     'directory',    // link to list of past stories
@@ -231,10 +235,10 @@
 // hides the list of authors from the preferences
 $_CONF['hide_author_exclusion'] = 0;
 
-// Used by COM_displayName to return Members's Full Name else username  (1 = yes, 0 = no)
-$_CONF['show_fullname'] = 0;
+// Used by COM_getDisplayName to return Members's Full Name else username
+$_CONF['show_fullname'] = 0; // 1 = show user's full name
 
-// Used by COM_displayName to return users remote login service, if they have one.
+// Used by COM_getDisplayName to return users remote login service, if they have one.
 $_CONF['show_servicename'] = true; // Set to false to not show it.
 
 // +---------------------------------------------------------------------------+
@@ -277,7 +281,14 @@
 // |                                                                           |
 // | see docs/config.html#locale for details                                   |
 // +---------------------------------------------------------------------------+
+
 $_CONF['language']        = 'english';
+$_CONF['default_charset'] = 'iso-8859-1';
+
+// Note: You may want to consider using 'utf-8' as the default character set
+// for new sites, especially when using the multi-language support (see below).
+// Make sure to use a matching language file, e.g. 'english_utf-8' then.
+
 $_CONF['locale']          = 'en_GB';
 $_CONF['date']            = '%A, %B %d %Y @ %I:%M %p %Z';
 $_CONF['daytime']         = '%m/%d %I:%M%p';
@@ -285,7 +296,7 @@
 $_CONF['dateonly']        = '%d-%b';
 $_CONF['timeonly']        = '%I:%M%p';
 $_CONF['week_start']      = 'Sun'; // can be 'Sun' or 'Mon'
-$_CONF['default_charset'] = 'iso-8859-1';
+$_CONF['hour_mode']       = 12;    // 12 hour am/pm or 24 hour format
 
 // Number formatting
 $_CONF['thousand_separator'] = ",";  // could be ' , . etc.
@@ -293,6 +304,38 @@
 $_CONF['decimal_count']      = "2";  // if a number has decimals,
                                      //  force to this depth
 
+// Multi-language support
+// (note that this section is commented out - remove the '/*' and '*/' lines
+//  below to activate it and make sure you understand what it does)
+/*
+
+// IMPORTANT!
+// 1) Both the $_CONF['language_files'] and the $_CONF['languages'] arrays
+//    (see below) must have the same number of elements.
+// 2) The shortcuts used must be the same in both arrays.
+// 3) All shortcuts must have the same length, e.g. 2 characters.
+
+// The shortcuts are to be used in IDs of objects that are multi-language
+// aware, e.g. /article.php/introduction_en and /article.php/introduction_de
+// for the English and German version of an introductory article.
+
+// Supported languages
+// Maps a shortcut to a Geeklog language file (without the '.php' extension)
+$_CONF['language_files'] = array (
+    'en' => 'english_utf-8',
+    'de' => 'german_formal_utf-8'
+);
+
+// Display names of supported languages
+// Maps the same shortcuts as above to a language name. The language names
+// are used to let users switch languages, e.g. in a drop-down menu.
+$_CONF['languages'] = array (
+    'en' => 'English',
+    'de' => 'Deutsch'
+);
+
+*/
+
 // "Timezone Hack"
 // If your webserver is located in a different timezone than yourself but you
 // prefer Geeklog to post stories in your local time, then set your local
@@ -316,6 +359,11 @@
 // When this starts with 'http:' visitors are redirected to that URL
 $_CONF['site_disabled_msg'] = 'Geeklog Site is down. Please come back soon.';
 
+// When set to true, this will display /detailed/ debug information in the event
+// of a PHP error. ONLY set this to true with your non-production development
+// environments!
+$_CONF['rootdebug'] = false;
+
 // +---------------------------------------------------------------------------+
 // | SESSION SETTINGS                                                          |
 // |                                                                           |
@@ -388,7 +436,6 @@
 $_CONF['loginrequired'] = 0; // all of them, if set to 1 will override all else
 $_CONF['submitloginrequired']     = 0;
 $_CONF['commentsloginrequired']   = 0;
-$_CONF['calendarloginrequired']   = 0;
 $_CONF['statsloginrequired']      = 0;
 $_CONF['searchloginrequired']     = 0;
 $_CONF['profileloginrequired']    = 0;
@@ -400,7 +447,6 @@
 
 // enable (set to 1) or disable (set to 0) submission queues:
 $_CONF['storysubmission'] = 1;
-$_CONF['eventsubmission'] = 1;
 $_CONF['usersubmission']  = 0; // 1 = new users must be approved
 
 // When set to 1, this will display an additional block on the submissions page
@@ -409,8 +455,8 @@
 
 // Send an email notification when a new submission has been made. The contents
 // of the array can be any combination of 'story', 'comment', 'trackback',
-// 'pingback', 'event', and 'user'.
-// Example: $_CONF['notification'] = array ('story', 'event');
+// 'pingback', and 'user'.
+// Example: $_CONF['notification'] = array ('story', 'comment');
 // The email will be sent to $_CONF['site_mail'] (see above).
 $_CONF['notification'] = array ();
 
@@ -419,7 +465,7 @@
 $_CONF['skip_preview']  = 0; // If = 1, allow user to submit comments and stories without previewing
 
 // +---------------------------------------------------------------------------+
-// | Support for custom templaes to support advanced Rich Text Editor          |
+// | Support for custom templates to support advanced Rich Text Editor         |
 // | Checked in comment.php, submit.php, admin/story.php and                   |
 // | staticpages/index.php. If set true and advanced template exists           |
 // | Note: If enabled, the default postmode will be html                       |
@@ -428,8 +474,8 @@
 
 // +---------------------------------------------------------------------------+
 // | Internal Geeklog CRON or scheduled Task/Function setting                  |
-// | Plugins can use the runSheduledTask API to activate any automated tasks   |
-// | or add code in lib-custom to the CUSTOM_runSheduledTask function          |
+// | Plugins can use the runScheduledTask API to activate any automated tasks  |
+// | or add code in lib-custom to the CUSTOM_runScheduledTask function         |
 // +---------------------------------------------------------------------------+
 $_CONF['cron_schedule_interval']        = 86400;   // Seconds - Default 1 day
 
@@ -481,6 +527,11 @@
 // register without having to go through the submission queue.
 $_CONF['allow_domains'] = ''; // e.g. 'mycompany.com,myothercompany.com'
 
+// Comma-separated list of domain names that are not allowed for new user
+// signups (for all new registrations - not only for the user submission queue)
+$_CONF['disallow_domains'] = ''; // e.g. 'somebaddomain.com,anotherbadone.com'
+
+
 // Following times are in seconds
 $_CONF['newstoriesinterval']   =   86400; // = 24 hours
 $_CONF['newcommentsinterval']  =  172800; // = 48 hours
@@ -492,6 +543,9 @@
 $_CONF['hidenewtrackbacks'] = 0;
 $_CONF['hidenewplugins']    = 0;
 
+// max. length of titles to be displayed in the What's New block
+$_CONF['title_trim_length'] = 20;
+
 // Disable trackback comments by setting this to 'false'
 $_CONF['trackback_enabled'] = true;
 
@@ -505,17 +559,20 @@
 // (can be changed individually for every story)
 $_CONF['trackback_code'] = 0;   // 0 = trackbacks enabled, -1 = disabled
 
+// how to handle multiple trackbacks and pingbacks from the same URL:
+// 0 = reject, 1 = only keep the latest, 2 = allow multiple posts
+$_CONF['multiple_trackbacks'] = 0;
+
 // min. time between trackbacks or pingbacks, in seconds
 $_CONF['trackbackspeedlimit'] = 300;
 
-// whether to check if trackbacks actually link to us:
-// 0 = don't check, 1 = check against $_CONF['site_url'], 2 = check full URL
+// Use this option to check the validity of Trackbacks:
+// 0 = don't check anything,
+// 1 = check against $_CONF['site_url'], 2 = check full URL
+// 4 = check IP address of sender against the site's IP in the Trackback
+// add the values to do more than one check, e.g. 2 + 4 = 6, i.e. check URL + IP
 $_CONF['check_trackback_link'] = 2;
 
-// how to handle multiple trackbacks and pingbacks from the same URL:
-// 0 = reject, 1 = only keep the latest, 2 = allow multiple posts
-$_CONF['multiple_trackbacks'] = 0;
-
 // how to handle pingbacks from one article on our site to another:
 // 0 = skip, 1 = allow, with speed limit, 2 = allow, without speed limit
 $_CONF['pingback_self'] = 0;
@@ -523,12 +580,6 @@
 // Link to the documentation from the Admin block (0 = hide link, 1 = show)
 $_CONF['link_documentation'] = 1;
 
-// Calendar Settings
-$_CONF['personalcalendars']     = 1;
-$_CONF['showupcomingevents']    = 1;
-$_CONF['upcomingeventsrange']   = 14; // days
-$_CONF['event_types']           = 'Anniversary,Appointment,Birthday,Business,Education,Holiday,Meeting,Miscellaneous,Personal,Phone Call,Special Occasion,Travel,Vacation';
-
 // Story Settings
 $_CONF['maximagesperarticle']   = 5;
 $_CONF['limitnews']             = 10;
@@ -543,6 +594,13 @@
                                            //'last' or 'all' pages?
 $_CONF['article_image_align']   = 'right'; // Topic icon on left or right.
 $_CONF['show_topic_icon']       = 1;       // default for new stories
+$_CONF['draft_flag']            = 0;       // default for new stories
+$_CONF['frontpage']             = 1;       // default for new stories
+$_CONF['hide_no_news_msg']      = 0;       // If 1, hide No News To Display msg
+$_CONF['hide_main_page_navigation'] = 0;   // hide "google paging" on index.php
+
+// When set to 1, only root users will be able to feature a story
+$_CONF['onlyrootfeatures'] = 0;
 
 
 // Advanced theme settings
@@ -562,7 +620,7 @@
 
 // When set to 1, this will render the first story on any page using the
 // templates for featured stories - even if that story is not featured.
-$_CONF['showfirstasfeatured']   = 0;
+$_CONF['showfirstasfeatured'] = 0;
 
 // When set to 1, this will make the {left_blocks} variable available in
 // footer.thtml (and disable it in header.thtml). This is really only useful
@@ -646,7 +704,7 @@
 
 // Story image settings
 $_CONF['max_image_width']       = 160;  // In pixels
-$_CONF['max_image_height']      = 120;  // In pixels
+$_CONF['max_image_height']      = 160;  // In pixels
 $_CONF['max_image_size']        = 1048576; // 1048576 = 1MB
 
 // Topic icon settings
@@ -800,21 +858,17 @@
 // 0 = neither read nor write permissions
 // (a value of 1, ie. write-only, does not make sense and is not allowed)
 $_CONF['default_permissions_block'] = array (3, 2, 2, 2);
-$_CONF['default_permissions_event'] = array (3, 2, 2, 2);
 $_CONF['default_permissions_story'] = array (3, 2, 2, 2);
 $_CONF['default_permissions_topic'] = array (3, 2, 2, 2);
 
-// Define a few useful things for GL
 
-// Story Record Options for the STATUS Field
-define('STORY_ARCHIVE_ON_EXPIRE', '10');
-define('STORY_DELETE_ON_EXPIRE', '11');
+// Define a few useful things for GL
 
 if (!defined ('LB')) {
     define('LB',"\n");
 }
 if (!defined ('VERSION')) {
-    define('VERSION', '1.4.0sr5-1');
+    define('VERSION', '1.4.1');
 }
 
 $_STATES = array(
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/afrikaans.php 1.4.1.src/cpanel-glprivate/language/afrikaans.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/afrikaans.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/afrikaans.php	2006-09-17 04:38:03.000000000 -0500
@@ -104,7 +104,7 @@
     61 => 'Skep Nuwe Rekening',
     62 => 'woorde',
     63 => 'Kommentaar Voorkeure',
-    64 => "Epos Artikel aan 'n Vriend",
+    64 => 'Epos Artikel aan \'n Vriend',
     65 => 'Vertoon Drukbare Weergawe',
     66 => 'My Kalender',
     67 => 'Welkom by',
@@ -163,28 +163,10 @@
     120 => 'Permanente skakel na hierdie kommentaar',
     121 => 'Kommentaar (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'Alle HTML word toegelaat'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Kalender van Gebeure',
-    2 => "Ek's jammer daar is geen gebeure om te vertoon nie",
-    3 => 'Wanneer',
-    4 => 'Waar',
-    5 => 'Beskrywing',
-    6 => "Sit 'n Gebeurtenis by",
-    7 => 'Opkomende Gebeure',
-    8 => 'Deur hierdie gebeurtenis by jou kalender te voeg kan jy vinnig die gebeure wat jou interesseer vertoon deur op "My Kalender" by die Gebruikersfunksies te kliek.',
-    9 => 'Sit by My Kalender',
-    10 => 'Verwyder uit My Kalender',
-    11 => "Besig om 'n Gebeurtenis by {$_USER['username']} se Kalender te sit",
-    12 => 'Gebeure',
-    13 => 'Begin',
-    14 => 'Eindig',
-    15 => 'Terug na Kalender'
+    123 => 'Alle HTML word toegelaat',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -221,7 +203,7 @@
 );
 
 ###############################################################################
-# usersettings.php
+# users.php
 
 $LANG04 = array(
     1 => 'Gebruikersprofiel van',
@@ -342,11 +324,44 @@
     116 => 'Rekening Wag op Aktivering',
     117 => 'Jou rekening is tans gelys vir aktivering deur die administrateur. Jy sal nie kan inteken alvorens jou rekening goedgekeur is nie.',
     118 => "Jou {$_CONF['site_name']} rekening is nou geaktiveer deur \'n administrateur. Jy mag nou inteken op die werf by die url hieronder deur jou gebruikernaam en wagwoord te gebruik soos voorheen aan jou ge-epos.",
-    119 => "As jy jou wagwoord vergeet het, kan jy \'n nuwe een aanvra by die volgende url:",
+    119 => 'As jy jou wagwoord vergeet het, kan jy \'n nuwe een aanvra by die volgende url:',
     120 => 'Rekening Geaktiveer',
     121 => 'Diens',
     122 => 'Jammer, nuwe gebruiker registrasie is gedeaktiveer',
-    123 => "Is jy 'n <a href=\"{$_CONF['site_url']}/users.php?mode=new\">nuwe gebruiker</a>?"
+    123 => "Is jy 'n <a href=\"{$_CONF['site_url']}/users.php?mode=new\">nuwe gebruiker</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -663,38 +678,9 @@
     62 => 'Artikel Limiet',
     63 => 'Ongeldige Bloktitel',
     64 => 'Jou Titel mag nie leeg wees of HTML bevat nie!',
-    65 => 'Volgorde'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Gebeure bestuur',
-    2 => 'Fout',
-    3 => 'Post Modus',
-    4 => 'Gebeurtenis URL',
-    5 => 'Gebeurtenis Begindatum',
-    6 => 'Gebeurtenis Einddatum',
-    7 => 'Gebeurtenis Ligging',
-    8 => 'Gebeurtenis Beskrywing',
-    9 => '(sluit http:// in)',
-    10 => 'U moet die datum/tye, gebeurtenistitel en beskrywing verskaf',
-    11 => 'Gebeurtenis Bestuur',
-    12 => 'Om \'n gebeurtenis te wysig of te verwyder, kliek om daardie gebeurtenis se wysig ikoon hierdonder.  Om \'n nuwe gebeurtenis te skep, kliek op "Skep Nuwe" hierbo.  Kliek op die kopie&euml;r ikoon om \'n kopie van \'n bestaande gebeurtenis te skep.',
-    13 => 'Bydraer',
-    14 => 'Begindatum',
-    15 => 'Einddatum',
-    16 => '',
-    17 => "U probeer om toegang te verkry tot 'n gebeurtenis waartoe u nie regte het nie.  Hierdie poging is aangeteken. Gaan asseblief terug <a href=\"{$_CONF['site_admin_url']}/event.php\">na die gebeurtenisbestuurskerm</a>.",
-    18 => '',
-    19 => '',
-    20 => 'stoor',
-    21 => 'kanselleer',
-    22 => 'verwyder',
-    23 => 'Ongeldige begindatum.',
-    24 => 'Ongeldige einddatum.',
-    25 => 'Einddatum is voor die begindatum.'
+    65 => 'Volgorde',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -785,10 +771,11 @@
     82 => 'Beelde',
     83 => 'Argiefvoorkeure',
     84 => 'Regte',
-    85 => 'Wys Alles'
+    85 => 'Wys Alles',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
-
 ###############################################################################
 # admin/topic.php
 
@@ -875,6 +862,35 @@
     45 => 'Aktief',
     46 => 'Gebruikerstatus',
     47 => 'Wysig',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -904,53 +920,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Sondag',
-    2 => 'Maandag',
-    3 => 'Dinsdag',
-    4 => 'Woensdag',
-    5 => 'Donderdag',
-    6 => 'Vrydag',
-    7 => 'Saterdag',
-    8 => 'Sit Gebeurtenis By',
-    9 => '%s Gebeurtenis',
-    10 => 'Gebeure vir',
-    11 => 'MeesterKalender',
-    12 => 'My Kalender',
-    13 => 'Januarie',
-    14 => 'Februarie',
-    15 => 'Maart',
-    16 => 'April',
-    17 => 'Mei',
-    18 => 'Junie',
-    19 => 'Julie',
-    20 => 'Augustus',
-    21 => 'September',
-    22 => 'Oktober',
-    23 => 'November',
-    24 => 'Desember',
-    25 => 'Terug na ',
-    26 => 'Heeldag',
-    27 => 'Week',
-    28 => 'Persoonlike Kalender van',
-    29 => 'Openbare Kalender',
-    30 => 'verwyder gebeurtenis',
-    31 => 'Sit by',
-    32 => 'Gebeurtenis',
-    33 => 'Datum',
-    34 => 'Tyd',
-    35 => 'Vinnig Byvoeg',
-    36 => 'Stuur',
-    37 => 'Jammer, die persoonlike kalender funksie is nie op hierdie werf geaktiveer nie',
-    38 => 'Persoonlike Gebeurtenis Wysiging',
-    39 => 'Dag',
-    40 => 'Week',
-    41 => 'Maand'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1074,7 +1043,9 @@
     47 => 'Soek',
     48 => 'Wysig',
     49 => 'Nuusvoer Logo',
-    50 => "Relatief tot werf se url ({$_CONF['site_url']})"
+    50 => "Relatief tot werf se url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1083,7 +1054,7 @@
 $MESSAGE = array(
     1 => "U wagwoord is aan u gepos en u behoort dit binnekort te ontvang. Volg asseblief die aanwysings in die boodskap.  Dankie dat u {$_CONF['site_name']} gebruik.",
     2 => "Dankie vir die artikel wat u voorgel&ecirc; het vir plasing op {$_CONF['site_name']}.  Dit sal ter goedkeuring aan ons personeel voorgel&ecirc; word. Indien dit goedgekeur word, sal u artikel beskikbaar wees sodat ander dit op ons werf kan lees.",
-    3 => "",
+    3 => '',
     4 => "Dankie vir die gebeurtenis wat u vir plasing op {$_CONF['site_name']} voorgel&ecirc; het.  Dit sal ter goedkeuring aan ons personeel voorgel&ecirc; word.  Indien dit goedgekeur word, sal u gebeurtenis in ons <a href=\"{$_CONF['site_url']}/calendar.php\">kalender</a> verskyn.",
     5 => 'U rekeninginligting is suksesvol gestoor.',
     6 => 'U voorkeure is suksesvol gestoor.',
@@ -1155,7 +1126,16 @@
     72 => '\'n Fout het voorgekom tydens die poging om die prop te installeer.  Sien error.log vir besonderhede.',
     73 => '\'n Fout het voorgekom met die poging om die prop te verwyder.  Sien error.log vir besonderhede.',
     74 => 'Die skakelkennisgewing is suksesvol gestuur.',
-    75 => 'Terugsporings moet gestuur word deur die POST versoek.'
+    75 => 'Terugsporings moet gestuur word deur die POST versoek.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1197,7 +1177,6 @@
     'none' => 'Geen',
     'accessdenied' => 'Toegang Geweier',
     'storydenialmsg' => "U het nie toegang tot hierdie artikel nie.  Dit kan wees omdat u nie 'n lid van {$_CONF['site_name']} is nie.  Registreer asseblief <a href=\"{$_CONF['site_url']}/users.php?mode=new\">as 'n lid</a> of {$_CONF['site_name']} om volle ledetoegang  te verkry!",
-    'eventdenialmsg' => "U het nie toegang om hierdie gebeurtenis te vertoon nie.  Dit kan wees omdat u nie 'n lid van {$_CONF['site_name']} is nie.  Registreer asseblief <a href=\"{$_CONF['site_url']}/users.php?mode=new\">as 'n lid</a> of {$_CONF['site_name']} om volle ledetoegang  te verkry!",
     'nogroupsforcoregroup' => 'Hierdie groep behoort nie aan enige ander groep nie',
     'grouphasnorights' => 'Hierdie groep het nie toegang tot enige van die administratiewe funksies van hierdie werf nie',
     'newgroup' => 'Nuwe Groep',
@@ -1271,6 +1250,7 @@
 );
 
 ###############################################################################
+# login form
 
 $LANG_LOGIN = array(
     1 => 'Intekening word vereis',
@@ -1279,6 +1259,9 @@
     4 => 'Nuwe Gebruiker'
 );
 
+###############################################################################
+# pdfgenerator.php
+
 $LANG_PDF = array(
     1 => 'Die PDF funksie is gedeaktiveer',
     2 => 'Die verskafde dokument is nie vertaal nie.  Die dokument is ontvang maar kon nie verwerk word nie.  Maak seker dat u slegs html formaat dokument voorl&ecirc; wat aan die xHTML standaard voldoen. Neem kennis dat onnodig komplekse html dokumente nie noodwendig korrek of enigsins vertaal sal word nie. Die dokument uit u poging was 0 grepe in lengte en is verwyder. As u seker is dat u dokument behoorlik vertaal behoort te word, stuur dit weereens.',
@@ -1297,183 +1280,221 @@
 );
 
 ###############################################################################
-# trackback
+# trackback.php
 
-$LANG_TRB = array (
-    'trackback'          => 'Terugspoor',
-    'from'               => 'vanaf',
-    'tracked_on'         => 'Gespoor op',
-    'read_more'          => '[lees verder]',
-    'intro_text'         => "Hier is wat ander oor '%s' te s&ecirc; gehad het:",
-    'no_comments'        => 'Geen terugspoorkommentaar vir hierdie inskrywing nie.',
+$LANG_TRB = array(
+    'trackback' => 'Terugspoor',
+    'from' => 'vanaf',
+    'tracked_on' => 'Gespoor op',
+    'read_more' => '[lees verder]',
+    'intro_text' => 'Hier is wat ander oor \'%s\' te s&ecirc; gehad het:',
+    'no_comments' => 'Geen terugspoorkommentaar vir hierdie inskrywing nie.',
     'this_trackback_url' => 'Terugspoor URL vir hierdie inskrywing:',
-    'num_comments'       => '%d terugspoorkommentare',
-    'send_trackback'     => 'Stuur Skakelkennisgewings',
-    'preview'            => 'Voorskou',
-    'editor_title'       => 'Stuur terugspoorkommentaar',
-    'trackback_url'      => 'Terugspoor URL',
-    'entry_url'          => 'Inskrywing URL',
-    'entry_title'        => 'Inskrywing Titel',
-    'blog_name'          => 'Werfnaam',
-    'excerpt'            => 'Uittreksel',
-    'truncate_warning'   => 'Let wel: Die werf wat ontvang kan dalk u uittreksel kortknip',
-    'button_send'        => 'Stuur',
-    'button_preview'     => 'Voorskou',
-    'send_error'         => 'Fout',
+    'num_comments' => '%d terugspoorkommentare',
+    'send_trackback' => 'Stuur Skakelkennisgewings',
+    'preview' => 'Voorskou',
+    'editor_title' => 'Stuur terugspoorkommentaar',
+    'trackback_url' => 'Terugspoor URL',
+    'entry_url' => 'Inskrywing URL',
+    'entry_title' => 'Inskrywing Titel',
+    'blog_name' => 'Werfnaam',
+    'excerpt' => 'Uittreksel',
+    'truncate_warning' => 'Let wel: Die werf wat ontvang kan dalk u uittreksel kortknip',
+    'button_send' => 'Stuur',
+    'button_preview' => 'Voorskou',
+    'send_error' => 'Fout',
     'send_error_details' => 'Fout tydens stuur van terugspoorkommentaar:',
-    'url_missing'        => 'Geen Inskrywing URL',
-    'url_required'       => 'Verskaf asseblief ten minste \'n URL vir die inskrywing.',
-    'target_missing'     => 'Geen Terugspoor URL',
-    'target_required'    => 'Sleutel asseblief \'n terugspoor URL in',
-    'error_socket'       => 'Kon nie socket oopmaak nie.',
-    'error_response'     => 'Terugvoer nie verstaan.',
-    'error_unspecified'  => 'Onbekende fout.',
-    'select_url'         => 'Kies Terugspoor URL',
-    'not_found'          => 'Terugspoor URL nie gevind',
-    'autodetect_failed'  => 'Geeklog kon nie die Terugspoor URL opspoor vir die inskrywing waarna u, u kommentaar wil stuur nie.  Sleutel dit asseblief per hand hieronder in.',
-    'trackback_explain'  => 'Kies asseblief uit die skakels hieronder die URL waarheen u, u Terugspoorkommentaar wil stuur. Geeklog sal dan poog om die korrekte Terugspoor URL vir daardie inskrywing op te spoor. Of u kan <a href="%s">dit met die hand insleutel</a> as u dit reeds ken.',
+    'url_missing' => 'Geen Inskrywing URL',
+    'url_required' => 'Verskaf asseblief ten minste \'n URL vir die inskrywing.',
+    'target_missing' => 'Geen Terugspoor URL',
+    'target_required' => 'Sleutel asseblief \'n terugspoor URL in',
+    'error_socket' => 'Kon nie socket oopmaak nie.',
+    'error_response' => 'Terugvoer nie verstaan.',
+    'error_unspecified' => 'Onbekende fout.',
+    'select_url' => 'Kies Terugspoor URL',
+    'not_found' => 'Terugspoor URL nie gevind',
+    'autodetect_failed' => 'Geeklog kon nie die Terugspoor URL opspoor vir die inskrywing waarna u, u kommentaar wil stuur nie.  Sleutel dit asseblief per hand hieronder in.',
+    'trackback_explain' => 'Kies asseblief uit die skakels hieronder die URL waarheen u, u Terugspoorkommentaar wil stuur. Geeklog sal dan poog om die korrekte Terugspoor URL vir daardie inskrywing op te spoor. Of u kan <a href="%s">dit met die hand insleutel</a> as u dit reeds ken.',
     'no_links_trackback' => 'Geen skakels opgespoor nie.  U kan nie \'n Terugspoorkommentaar vir hierdie inskrywing stuur nie.',
-    'pingback'           => 'Skakelkennisgewing',
-    'pingback_results'   => 'Skakelkennisgewing resultate',
-    'send_pings'         => 'Stuur Skakelkennisgewings',
-    'send_pings_for'     => 'Stuur Skakelkennisgewing vir "%s"',
-    'no_links_pingback'  => 'Geen skakels opgespoor.  Geen Skakelkennisgewing is vir hierdie inskrywing gestuur nie.',
-    'pingback_success'   => 'Skakelkennisgewing gestuur.',
-    'no_pingback_url'    => 'Geen skakelkennisgewing URL gevind.',
-    'resend'             => 'Stuur weer',
-    'ping_all_explain'   => 'U kan nou werwe waarna u skakel daarvan in kennis stel deur (<a href="http://af.wikipedia.org/wiki/Skakelkennisgewing">Skakelkennisgewing</a>), adverteer dat u werf opgedateer is deur boernaalgids dienste te raadpleeg of \'n <a href="http://af.wikipedia.org/wiki/Terugspoorkommentaar">Terugspoorkommentaar</a> te stuur in geval u kommentaar gelewer het op \'n inskrywing op iemand anders se werf.',
-    'pingback_button'    => 'Stuur Skakelkennisgewing',
-    'pingback_short'     => 'Stuur Skakelkennisgewing na al die werwe wat waarna in hierdie inskrywing geskakel word.',
-    'pingback_disabled'  => '(Skakelkennisgewings gedeaktiveer)',
-    'ping_button'        => 'Stuur Kennisgewing',
-    'ping_short'         => 'Stel boernaalgids dienste in kennis.',
-    'ping_disabled'      => '(Kennisgewing  gedeaktiveer)',
-    'trackback_button'   => 'Stuur Terugsporing',
-    'trackback_short'    => 'Stuur \'n Terugspoorkommentaar.',
+    'pingback' => 'Skakelkennisgewing',
+    'pingback_results' => 'Skakelkennisgewing resultate',
+    'send_pings' => 'Stuur Skakelkennisgewings',
+    'send_pings_for' => 'Stuur Skakelkennisgewing vir "%s"',
+    'no_links_pingback' => 'Geen skakels opgespoor.  Geen Skakelkennisgewing is vir hierdie inskrywing gestuur nie.',
+    'pingback_success' => 'Skakelkennisgewing gestuur.',
+    'no_pingback_url' => 'Geen skakelkennisgewing URL gevind.',
+    'resend' => 'Stuur weer',
+    'ping_all_explain' => 'U kan nou werwe waarna u skakel daarvan in kennis stel deur (<a href="http://af.wikipedia.org/wiki/Skakelkennisgewing">Skakelkennisgewing</a>), adverteer dat u werf opgedateer is deur boernaalgids dienste te raadpleeg of \'n <a href="http://af.wikipedia.org/wiki/Terugspoorkommentaar">Terugspoorkommentaar</a> te stuur in geval u kommentaar gelewer het op \'n inskrywing op iemand anders se werf.',
+    'pingback_button' => 'Stuur Skakelkennisgewing',
+    'pingback_short' => 'Stuur Skakelkennisgewing na al die werwe wat waarna in hierdie inskrywing geskakel word.',
+    'pingback_disabled' => '(Skakelkennisgewings gedeaktiveer)',
+    'ping_button' => 'Stuur Kennisgewing',
+    'ping_short' => 'Stel boernaalgids dienste in kennis.',
+    'ping_disabled' => '(Kennisgewing  gedeaktiveer)',
+    'trackback_button' => 'Stuur Terugsporing',
+    'trackback_short' => 'Stuur \'n Terugspoorkommentaar.',
     'trackback_disabled' => '(Terugspoor gedeaktiveer)',
-    'may_take_a_while'   => 'Neem kennis dat Skakelkennisgewings en Kennisgewings \'n tydjie mag neem.',
-    'ping_results'       => 'Kennisgewingresultate',
-    'unknown_method'     => 'Onbekende kennisgewingmetode',
-    'ping_success'       => 'Kennisgewing gestuur.',
-    'error_site_name'    => 'Sleutel die werf se naam in.',
-    'error_site_url'     => 'Sleutel die werf se URL in.',
-    'error_ping_url'     => 'Sleutel \'n geldige Kennisgewing URL in.',
-    'no_services'        => 'Geen boernaalgidsdiens is opgestel nie.',
-    'services_headline'  => 'Boernaalgidsdienste',
-    'service_explain'    => 'Om \'n boernaalgidsdiens te wysig of te verwyder kliek op die wysig ikoon van daardie diens hieronder. Om \'n nuwe boernaal diensgids by te voeg, kliek op "Skep Nuwe" hierbo.',
-    'service'            => 'Diens',
-    'ping_method'        => 'Kennisgewingsmetode',
-    'service_website'    => 'Webwerf',
-    'service_ping_url'   => 'URL om in kennis te stel',
-    'ping_standard'      => 'Standaard Kennisgewing',
-    'ping_extended'      => 'Uitgebreide Kennisgewing',
-    'ping_unknown'       => '(onbekende metode)',
-    'edit_service'       => 'Wysig Boernaalgidsdiens',
-    'trackbacks'         => 'Terugsporings',
-    'editor_intro'       => 'Berei u terugspoorkommentaar vir <a href="%s">%s</a> voor.',
-    'editor_intro_none'  => 'Berei u terugspoorkommentaar voor.',
-    'trackback_note'     => 'Om \'n terugspoorkommentaar vir \'n artikel te stuur, gaan na die lys van artikels en kliek op "' . $LANG24[21] . '" vir die artikel. Om \'n terugspoor te stuur wat nie verband hou met \'n artikel nie, <a href="%s">kliek hier</a>.',
-    'pingback_explain'   => 'Sleutel \'n URL in waarna die Skakelkennisgewing gestuur moet word.  Die kennisgewing sal sal na u werf se tuisblad verwys.',
-    'pingback_url'       => 'Skakelkennisgewing URL',
-    'site_url'           => 'Hierdie werf se URL',
-    'pingback_note'      => 'Om \'n skakelkennisgewing vir \'n artikel te stuur gaan na die lys van artikels en kliek op stories en kliek op "' . $LANG24[21] . '" vir die artikel. Om \'n skakelkennisgewing te stuur wat nie verband hou met \'n artikel nie, <a href="%s">kliek hier</a>.',
-    'pbtarget_missing'   => 'Geen Skakelkennisgewing URL',
-    'pbtarget_required'  => 'Sleutel asseblief \'n skakelkennisgewing URL in',
-    'pb_error_details'   => 'Fout tydens stuur van skakelkennisgewing:'
+    'may_take_a_while' => 'Neem kennis dat Skakelkennisgewings en Kennisgewings \'n tydjie mag neem.',
+    'ping_results' => 'Kennisgewingresultate',
+    'unknown_method' => 'Onbekende kennisgewingmetode',
+    'ping_success' => 'Kennisgewing gestuur.',
+    'error_site_name' => 'Sleutel die werf se naam in.',
+    'error_site_url' => 'Sleutel die werf se URL in.',
+    'error_ping_url' => 'Sleutel \'n geldige Kennisgewing URL in.',
+    'no_services' => 'Geen boernaalgidsdiens is opgestel nie.',
+    'services_headline' => 'Boernaalgidsdienste',
+    'service_explain' => 'Om \'n boernaalgidsdiens te wysig of te verwyder kliek op die wysig ikoon van daardie diens hieronder. Om \'n nuwe boernaal diensgids by te voeg, kliek op "Skep Nuwe" hierbo.',
+    'service' => 'Diens',
+    'ping_method' => 'Kennisgewingsmetode',
+    'service_website' => 'Webwerf',
+    'service_ping_url' => 'URL om in kennis te stel',
+    'ping_standard' => 'Standaard Kennisgewing',
+    'ping_extended' => 'Uitgebreide Kennisgewing',
+    'ping_unknown' => '(onbekende metode)',
+    'edit_service' => 'Wysig Boernaalgidsdiens',
+    'trackbacks' => 'Terugsporings',
+    'editor_intro' => 'Berei u terugspoorkommentaar vir <a href="%s">%s</a> voor.',
+    'editor_intro_none' => 'Berei u terugspoorkommentaar voor.',
+    'trackback_note' => 'Om \'n terugspoorkommentaar vir \'n artikel te stuur, gaan na die lys van artikels en kliek op "Stuur Pieng" vir die artikel. Om \'n terugspoor te stuur wat nie verband hou met \'n artikel nie, <a href="%s">kliek hier</a>.',
+    'pingback_explain' => 'Sleutel \'n URL in waarna die Skakelkennisgewing gestuur moet word.  Die kennisgewing sal sal na u werf se tuisblad verwys.',
+    'pingback_url' => 'Skakelkennisgewing URL',
+    'site_url' => 'Hierdie werf se URL',
+    'pingback_note' => 'Om \'n skakelkennisgewing vir \'n artikel te stuur gaan na die lys van artikels en kliek op stories en kliek op "Stuur Pieng" vir die artikel. Om \'n skakelkennisgewing te stuur wat nie verband hou met \'n artikel nie, <a href="%s">kliek hier</a>.',
+    'pbtarget_missing' => 'Geen Skakelkennisgewing URL',
+    'pbtarget_required' => 'Sleutel asseblief \'n skakelkennisgewing URL in',
+    'pb_error_details' => 'Fout tydens stuur van skakelkennisgewing:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
 # directory.php
 
-$LANG_DIR = array (
-    'title'            => 'Artikelgids',
-    'title_year'       => 'Artikelgids vir  %d',
+$LANG_DIR = array(
+    'title' => 'Artikelgids',
+    'title_year' => 'Artikelgids vir  %d',
     'title_month_year' => 'Artikelgids vir %s %d',
-    'nav_top'          => 'Terug na die Artikelgids',
-    'no_articles'      => 'Geen Artikels.'
+    'nav_top' => 'Terug na die Artikelgids',
+    'no_articles' => 'Geen Artikels.'
 );
 
-################################################################################
+###############################################################################
 # "What's New" Time Strings
+# 
+# For the first two strings, you can use the following placeholders.
+# Order them so it makes sense in your language:
+# %i    item, "Stories"
+# %n    amount, "2", "20" etc.
+# %t    time, "2" (weeks)
+# %s    scale, "hrs", "weeks"
+
+$LANG_WHATSNEW = array(
+    'new_string' => '%n nuwe %i in die laaste %t %s',
+    'new_last' => 'laaste %t %s',
+    'minutes' => 'minute',
+    'hours' => 'ure',
+    'days' => 'dae',
+    'weeks' => 'weke',
+    'months' => 'maande',
+    'minute' => 'minuut',
+    'hour' => 'uur',
+    'day' => 'dag',
+    'week' => 'week',
+    'month' => 'maand'
+);
 
-$LANG_WHATSNEW = array (
-    # This here determines the order of the sentence "No new stories in 2 hrs"
-    # order it so it makes sense in your language:
-    # %i    item, "Stories"
-    # %n    amount, "2", "20" etc
-    # %t    time, "2" (weeks)
-    # %s    scale, "hrs", "weeks"
-    'new_string'  => '%n nuwe %i in die laaste %t %s',
-    'new_last'    => 'laaste %t %s',
-    # other strings
-    'minutes'     => 'minute',
-    'hours'       => 'ure',
-    'days'        => 'dae',
-    'weeks'       => 'weke',
-    'months'      => 'maande',
-    'minute'      => 'minuut',
-    'hour'        => 'uur',
-    'day'         => 'dag',
-    'week'        => 'week',
-    'month'       => 'maand'
+###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Januarie',
+    2 => 'Februarie',
+    3 => 'Maart',
+    4 => 'April',
+    5 => 'Mei',
+    6 => 'Junie',
+    7 => 'Julie',
+    8 => 'Augustus',
+    9 => 'September',
+    10 => 'Oktober',
+    11 => 'November',
+    12 => 'Desember'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Sondag',
+    2 => 'Maandag',
+    3 => 'Dinsdag',
+    4 => 'Woensdag',
+    5 => 'Donderdag',
+    6 => 'Vrydag',
+    7 => 'Saterdag'
 );
 
-################################################################################
+###############################################################################
 # Admin - Strings
-#
+# 
 # These are some standard strings used by core functions as well as plugins to
-# display adminiatration lists and edit pages
+# display administration lists and edit pages
 
-$LANG_ADMIN = array (
-    'search'        => 'Soektog',
+$LANG_ADMIN = array(
+    'search' => 'Soektog',
     'limit_results' => 'Beperk Resultate',
-    'submit'        => 'Stuur',
-    'edit'          => 'Wysig',
-    'admin_home'    => 'Admin Tuisblad',
-    'create_new'    => 'Skryf iets',
-    'enabled'       => 'Aktief',
-    'title'         => 'Titel',
-    'type'          => 'Tipe',
-    'topic'         => 'Onderwerp',
-    'help_url'      => 'Hulpl&ecirc;er URL',
-    'save'          => 'Stoor',
-    'cancel'        => 'Kanselleer',
-    'delete'        => 'Verwyder',
-    'copy'          => 'Kopi&euml;er',
-    'no_results'    => '- Geen inskrywings opgespoor -',
-    'data_error'    => 'Daar was \'n fout tydens die verwerking van die intekenlysdata. Gaan asseblief databron na.'
-
+    'submit' => 'Stuur',
+    'edit' => 'Wysig',
+    'edit_adv' => 'Adv. Edit',
+    'admin_home' => 'Admin Tuisblad',
+    'create_new' => 'Skryf iets',
+    'create_new_adv' => 'Create New (Adv.)',
+    'enabled' => 'Aktief',
+    'title' => 'Titel',
+    'type' => 'Tipe',
+    'topic' => 'Onderwerp',
+    'help_url' => 'Hulpl&ecirc;er URL',
+    'save' => 'Stoor',
+    'cancel' => 'Kanselleer',
+    'delete' => 'Verwyder',
+    'delete_sel' => 'Delete selected',
+    'copy' => 'Kopi&euml;er',
+    'no_results' => '- Geen inskrywings opgespoor -',
+    'data_error' => 'Daar was \'n fout tydens die verwerking van die intekenlysdata. Gaan asseblief databron na.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
+###############################################################################
 # Localisation of the texts for the various drop-down menus that are actually
 # stored in the database. If these exist, they override the texts from the
 # database.
 
 $LANG_commentcodes = array(
-    0   => 'Kommentaar Aktief',
-    -1  => 'Kommentaar Onaktief'
+    0 => 'Kommentaar Aktief',
+    -1 => 'Kommentaar Onaktief'
 );
 
+
 $LANG_commentmodes = array(
-    'flat'      => 'Plat',
-    'nested'    => 'Genestel',
-    'threaded'  => 'Geryg',
+    'flat' => 'Plat',
+    'nested' => 'Genestel',
+    'threaded' => 'Geryg',
     'nocomment' => 'Geen Kommentaar'
 );
 
 $LANG_cookiecodes = array(
-    0       => '(moenie)',
-    3600    => '1 Uur',
-    7200    => '2 Ure',
-    10800   => '3 Ure',
-    28800   => '8 Ure',
-    86400   => '1 Dag',
-    604800  => '1 Week',
+    0 => '(moenie)',
+    3600 => '1 Uur',
+    7200 => '2 Ure',
+    10800 => '3 Ure',
+    28800 => '8 Ure',
+    86400 => '1 Dag',
+    604800 => '1 Week',
     2678400 => '1 Maand'
 );
 
 $LANG_dateformats = array(
-    0   => 'Stelselstandaard'
+    0 => 'Stelselstandaard'
 );
 
 $LANG_featurecodes = array(
@@ -1488,17 +1509,17 @@
 
 $LANG_postmodes = array(
     'plaintext' => 'Gewone Teks',
-    'html'      => 'HTML Formaat'
+    'html' => 'HTML Formaat'
 );
 
 $LANG_sortcodes = array(
-    'ASC'  => 'Oudste Eerste',
+    'ASC' => 'Oudste Eerste',
     'DESC' => 'Nuutste Eerste'
 );
 
 $LANG_trackbackcodes = array(
-    0   => 'Terugsporings Aktief',
-    -1  => 'Terugsporings Onaktief'
+    0 => 'Terugsporings Aktief',
+    -1 => 'Terugsporings Onaktief'
 );
 
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/afrikaans_utf-8.php 1.4.1.src/cpanel-glprivate/language/afrikaans_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/afrikaans_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/afrikaans_utf-8.php	2006-09-17 04:38:03.000000000 -0500
@@ -104,7 +104,7 @@
     61 => 'Skep Nuwe Rekening',
     62 => 'woorde',
     63 => 'Kommentaar Voorkeure',
-    64 => "Epos Artikel aan 'n Vriend",
+    64 => 'Epos Artikel aan \'n Vriend',
     65 => 'Vertoon Drukbare Weergawe',
     66 => 'My Kalender',
     67 => 'Welkom by',
@@ -163,28 +163,10 @@
     120 => 'Permanente skakel na hierdie kommentaar',
     121 => 'Kommentaar (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'Alle HTML word toegelaat'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Kalender van Gebeure',
-    2 => "Ek's jammer daar is geen gebeure om te vertoon nie",
-    3 => 'Wanneer',
-    4 => 'Waar',
-    5 => 'Beskrywing',
-    6 => "Sit 'n Gebeurtenis by",
-    7 => 'Opkomende Gebeure',
-    8 => 'Deur hierdie gebeurtenis by jou kalender te voeg kan jy vinnig die gebeure wat jou interesseer vertoon deur op "My Kalender" by die Gebruikersfunksies te kliek.',
-    9 => 'Sit by My Kalender',
-    10 => 'Verwyder uit My Kalender',
-    11 => "Besig om 'n Gebeurtenis by {$_USER['username']} se Kalender te sit",
-    12 => 'Gebeure',
-    13 => 'Begin',
-    14 => 'Eindig',
-    15 => 'Terug na Kalender'
+    123 => 'Alle HTML word toegelaat',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -221,7 +203,7 @@
 );
 
 ###############################################################################
-# usersettings.php
+# users.php
 
 $LANG04 = array(
     1 => 'Gebruikersprofiel van',
@@ -342,11 +324,44 @@
     116 => 'Rekening Wag op Aktivering',
     117 => 'Jou rekening is tans gelys vir aktivering deur die administrateur. Jy sal nie kan inteken alvorens jou rekening goedgekeur is nie.',
     118 => "Jou {$_CONF['site_name']} rekening is nou geaktiveer deur \'n administrateur. Jy mag nou inteken op die werf by die url hieronder deur jou gebruikernaam en wagwoord te gebruik soos voorheen aan jou ge-epos.",
-    119 => "As jy jou wagwoord vergeet het, kan jy \'n nuwe een aanvra by die volgende url:",
+    119 => 'As jy jou wagwoord vergeet het, kan jy \'n nuwe een aanvra by die volgende url:',
     120 => 'Rekening Geaktiveer',
     121 => 'Diens',
     122 => 'Jammer, nuwe gebruiker registrasie is gedeaktiveer',
-    123 => "Is jy 'n <a href=\"{$_CONF['site_url']}/users.php?mode=new\">nuwe gebruiker</a>?"
+    123 => "Is jy 'n <a href=\"{$_CONF['site_url']}/users.php?mode=new\">nuwe gebruiker</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -663,38 +678,9 @@
     62 => 'Artikel Limiet',
     63 => 'Ongeldige Bloktitel',
     64 => 'Jou Titel mag nie leeg wees of HTML bevat nie!',
-    65 => 'Volgorde'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Gebeure bestuur',
-    2 => 'Fout',
-    3 => 'Post Modus',
-    4 => 'Gebeurtenis URL',
-    5 => 'Gebeurtenis Begindatum',
-    6 => 'Gebeurtenis Einddatum',
-    7 => 'Gebeurtenis Ligging',
-    8 => 'Gebeurtenis Beskrywing',
-    9 => '(sluit http:// in)',
-    10 => 'U moet die datum/tye, gebeurtenistitel en beskrywing verskaf',
-    11 => 'Gebeurtenis Bestuur',
-    12 => 'Om \'n gebeurtenis te wysig of te verwyder, kliek om daardie gebeurtenis se wysig ikoon hierdonder.  Om \'n nuwe gebeurtenis te skep, kliek op "Skep Nuwe" hierbo.  Kliek op die kopie&euml;r ikoon om \'n kopie van \'n bestaande gebeurtenis te skep.',
-    13 => 'Bydraer',
-    14 => 'Begindatum',
-    15 => 'Einddatum',
-    16 => '',
-    17 => "U probeer om toegang te verkry tot 'n gebeurtenis waartoe u nie regte het nie.  Hierdie poging is aangeteken. Gaan asseblief terug <a href=\"{$_CONF['site_admin_url']}/event.php\">na die gebeurtenisbestuurskerm</a>.",
-    18 => '',
-    19 => '',
-    20 => 'stoor',
-    21 => 'kanselleer',
-    22 => 'verwyder',
-    23 => 'Ongeldige begindatum.',
-    24 => 'Ongeldige einddatum.',
-    25 => 'Einddatum is voor die begindatum.'
+    65 => 'Volgorde',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -785,10 +771,11 @@
     82 => 'Beelde',
     83 => 'Argiefvoorkeure',
     84 => 'Regte',
-    85 => 'Wys Alles'
+    85 => 'Wys Alles',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
-
 ###############################################################################
 # admin/topic.php
 
@@ -875,6 +862,35 @@
     45 => 'Aktief',
     46 => 'Gebruikerstatus',
     47 => 'Wysig',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -904,53 +920,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Sondag',
-    2 => 'Maandag',
-    3 => 'Dinsdag',
-    4 => 'Woensdag',
-    5 => 'Donderdag',
-    6 => 'Vrydag',
-    7 => 'Saterdag',
-    8 => 'Sit Gebeurtenis By',
-    9 => '%s Gebeurtenis',
-    10 => 'Gebeure vir',
-    11 => 'MeesterKalender',
-    12 => 'My Kalender',
-    13 => 'Januarie',
-    14 => 'Februarie',
-    15 => 'Maart',
-    16 => 'April',
-    17 => 'Mei',
-    18 => 'Junie',
-    19 => 'Julie',
-    20 => 'Augustus',
-    21 => 'September',
-    22 => 'Oktober',
-    23 => 'November',
-    24 => 'Desember',
-    25 => 'Terug na ',
-    26 => 'Heeldag',
-    27 => 'Week',
-    28 => 'Persoonlike Kalender van',
-    29 => 'Openbare Kalender',
-    30 => 'verwyder gebeurtenis',
-    31 => 'Sit by',
-    32 => 'Gebeurtenis',
-    33 => 'Datum',
-    34 => 'Tyd',
-    35 => 'Vinnig Byvoeg',
-    36 => 'Stuur',
-    37 => 'Jammer, die persoonlike kalender funksie is nie op hierdie werf geaktiveer nie',
-    38 => 'Persoonlike Gebeurtenis Wysiging',
-    39 => 'Dag',
-    40 => 'Week',
-    41 => 'Maand'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1074,7 +1043,9 @@
     47 => 'Soek',
     48 => 'Wysig',
     49 => 'Nuusvoer Logo',
-    50 => "Relatief tot werf se url ({$_CONF['site_url']})"
+    50 => "Relatief tot werf se url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1083,7 +1054,7 @@
 $MESSAGE = array(
     1 => "U wagwoord is aan u gepos en u behoort dit binnekort te ontvang. Volg asseblief die aanwysings in die boodskap.  Dankie dat u {$_CONF['site_name']} gebruik.",
     2 => "Dankie vir die artikel wat u voorgel&ecirc; het vir plasing op {$_CONF['site_name']}.  Dit sal ter goedkeuring aan ons personeel voorgel&ecirc; word. Indien dit goedgekeur word, sal u artikel beskikbaar wees sodat ander dit op ons werf kan lees.",
-    3 => "",
+    3 => '',
     4 => "Dankie vir die gebeurtenis wat u vir plasing op {$_CONF['site_name']} voorgel&ecirc; het.  Dit sal ter goedkeuring aan ons personeel voorgel&ecirc; word.  Indien dit goedgekeur word, sal u gebeurtenis in ons <a href=\"{$_CONF['site_url']}/calendar.php\">kalender</a> verskyn.",
     5 => 'U rekeninginligting is suksesvol gestoor.',
     6 => 'U voorkeure is suksesvol gestoor.',
@@ -1155,7 +1126,16 @@
     72 => '\'n Fout het voorgekom tydens die poging om die prop te installeer.  Sien error.log vir besonderhede.',
     73 => '\'n Fout het voorgekom met die poging om die prop te verwyder.  Sien error.log vir besonderhede.',
     74 => 'Die skakelkennisgewing is suksesvol gestuur.',
-    75 => 'Terugsporings moet gestuur word deur die POST versoek.'
+    75 => 'Terugsporings moet gestuur word deur die POST versoek.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1197,7 +1177,6 @@
     'none' => 'Geen',
     'accessdenied' => 'Toegang Geweier',
     'storydenialmsg' => "U het nie toegang tot hierdie artikel nie.  Dit kan wees omdat u nie 'n lid van {$_CONF['site_name']} is nie.  Registreer asseblief <a href=\"{$_CONF['site_url']}/users.php?mode=new\">as 'n lid</a> of {$_CONF['site_name']} om volle ledetoegang  te verkry!",
-    'eventdenialmsg' => "U het nie toegang om hierdie gebeurtenis te vertoon nie.  Dit kan wees omdat u nie 'n lid van {$_CONF['site_name']} is nie.  Registreer asseblief <a href=\"{$_CONF['site_url']}/users.php?mode=new\">as 'n lid</a> of {$_CONF['site_name']} om volle ledetoegang  te verkry!",
     'nogroupsforcoregroup' => 'Hierdie groep behoort nie aan enige ander groep nie',
     'grouphasnorights' => 'Hierdie groep het nie toegang tot enige van die administratiewe funksies van hierdie werf nie',
     'newgroup' => 'Nuwe Groep',
@@ -1271,6 +1250,7 @@
 );
 
 ###############################################################################
+# login form
 
 $LANG_LOGIN = array(
     1 => 'Intekening word vereis',
@@ -1279,6 +1259,9 @@
     4 => 'Nuwe Gebruiker'
 );
 
+###############################################################################
+# pdfgenerator.php
+
 $LANG_PDF = array(
     1 => 'Die PDF funksie is gedeaktiveer',
     2 => 'Die verskafde dokument is nie vertaal nie.  Die dokument is ontvang maar kon nie verwerk word nie.  Maak seker dat u slegs html formaat dokument voorl&ecirc; wat aan die xHTML standaard voldoen. Neem kennis dat onnodig komplekse html dokumente nie noodwendig korrek of enigsins vertaal sal word nie. Die dokument uit u poging was 0 grepe in lengte en is verwyder. As u seker is dat u dokument behoorlik vertaal behoort te word, stuur dit weereens.',
@@ -1297,183 +1280,221 @@
 );
 
 ###############################################################################
-# trackback
+# trackback.php
 
-$LANG_TRB = array (
-    'trackback'          => 'Terugspoor',
-    'from'               => 'vanaf',
-    'tracked_on'         => 'Gespoor op',
-    'read_more'          => '[lees verder]',
-    'intro_text'         => "Hier is wat ander oor '%s' te s&ecirc; gehad het:",
-    'no_comments'        => 'Geen terugspoorkommentaar vir hierdie inskrywing nie.',
+$LANG_TRB = array(
+    'trackback' => 'Terugspoor',
+    'from' => 'vanaf',
+    'tracked_on' => 'Gespoor op',
+    'read_more' => '[lees verder]',
+    'intro_text' => 'Hier is wat ander oor \'%s\' te s&ecirc; gehad het:',
+    'no_comments' => 'Geen terugspoorkommentaar vir hierdie inskrywing nie.',
     'this_trackback_url' => 'Terugspoor URL vir hierdie inskrywing:',
-    'num_comments'       => '%d terugspoorkommentare',
-    'send_trackback'     => 'Stuur Skakelkennisgewings',
-    'preview'            => 'Voorskou',
-    'editor_title'       => 'Stuur terugspoorkommentaar',
-    'trackback_url'      => 'Terugspoor URL',
-    'entry_url'          => 'Inskrywing URL',
-    'entry_title'        => 'Inskrywing Titel',
-    'blog_name'          => 'Werfnaam',
-    'excerpt'            => 'Uittreksel',
-    'truncate_warning'   => 'Let wel: Die werf wat ontvang kan dalk u uittreksel kortknip',
-    'button_send'        => 'Stuur',
-    'button_preview'     => 'Voorskou',
-    'send_error'         => 'Fout',
+    'num_comments' => '%d terugspoorkommentare',
+    'send_trackback' => 'Stuur Skakelkennisgewings',
+    'preview' => 'Voorskou',
+    'editor_title' => 'Stuur terugspoorkommentaar',
+    'trackback_url' => 'Terugspoor URL',
+    'entry_url' => 'Inskrywing URL',
+    'entry_title' => 'Inskrywing Titel',
+    'blog_name' => 'Werfnaam',
+    'excerpt' => 'Uittreksel',
+    'truncate_warning' => 'Let wel: Die werf wat ontvang kan dalk u uittreksel kortknip',
+    'button_send' => 'Stuur',
+    'button_preview' => 'Voorskou',
+    'send_error' => 'Fout',
     'send_error_details' => 'Fout tydens stuur van terugspoorkommentaar:',
-    'url_missing'        => 'Geen Inskrywing URL',
-    'url_required'       => 'Verskaf asseblief ten minste \'n URL vir die inskrywing.',
-    'target_missing'     => 'Geen Terugspoor URL',
-    'target_required'    => 'Sleutel asseblief \'n terugspoor URL in',
-    'error_socket'       => 'Kon nie socket oopmaak nie.',
-    'error_response'     => 'Terugvoer nie verstaan.',
-    'error_unspecified'  => 'Onbekende fout.',
-    'select_url'         => 'Kies Terugspoor URL',
-    'not_found'          => 'Terugspoor URL nie gevind',
-    'autodetect_failed'  => 'Geeklog kon nie die Terugspoor URL opspoor vir die inskrywing waarna u, u kommentaar wil stuur nie.  Sleutel dit asseblief per hand hieronder in.',
-    'trackback_explain'  => 'Kies asseblief uit die skakels hieronder die URL waarheen u, u Terugspoorkommentaar wil stuur. Geeklog sal dan poog om die korrekte Terugspoor URL vir daardie inskrywing op te spoor. Of u kan <a href="%s">dit met die hand insleutel</a> as u dit reeds ken.',
+    'url_missing' => 'Geen Inskrywing URL',
+    'url_required' => 'Verskaf asseblief ten minste \'n URL vir die inskrywing.',
+    'target_missing' => 'Geen Terugspoor URL',
+    'target_required' => 'Sleutel asseblief \'n terugspoor URL in',
+    'error_socket' => 'Kon nie socket oopmaak nie.',
+    'error_response' => 'Terugvoer nie verstaan.',
+    'error_unspecified' => 'Onbekende fout.',
+    'select_url' => 'Kies Terugspoor URL',
+    'not_found' => 'Terugspoor URL nie gevind',
+    'autodetect_failed' => 'Geeklog kon nie die Terugspoor URL opspoor vir die inskrywing waarna u, u kommentaar wil stuur nie.  Sleutel dit asseblief per hand hieronder in.',
+    'trackback_explain' => 'Kies asseblief uit die skakels hieronder die URL waarheen u, u Terugspoorkommentaar wil stuur. Geeklog sal dan poog om die korrekte Terugspoor URL vir daardie inskrywing op te spoor. Of u kan <a href="%s">dit met die hand insleutel</a> as u dit reeds ken.',
     'no_links_trackback' => 'Geen skakels opgespoor nie.  U kan nie \'n Terugspoorkommentaar vir hierdie inskrywing stuur nie.',
-    'pingback'           => 'Skakelkennisgewing',
-    'pingback_results'   => 'Skakelkennisgewing resultate',
-    'send_pings'         => 'Stuur Skakelkennisgewings',
-    'send_pings_for'     => 'Stuur Skakelkennisgewing vir "%s"',
-    'no_links_pingback'  => 'Geen skakels opgespoor.  Geen Skakelkennisgewing is vir hierdie inskrywing gestuur nie.',
-    'pingback_success'   => 'Skakelkennisgewing gestuur.',
-    'no_pingback_url'    => 'Geen skakelkennisgewing URL gevind.',
-    'resend'             => 'Stuur weer',
-    'ping_all_explain'   => 'U kan nou werwe waarna u skakel daarvan in kennis stel deur (<a href="http://af.wikipedia.org/wiki/Skakelkennisgewing">Skakelkennisgewing</a>), adverteer dat u werf opgedateer is deur boernaalgids dienste te raadpleeg of \'n <a href="http://af.wikipedia.org/wiki/Terugspoorkommentaar">Terugspoorkommentaar</a> te stuur in geval u kommentaar gelewer het op \'n inskrywing op iemand anders se werf.',
-    'pingback_button'    => 'Stuur Skakelkennisgewing',
-    'pingback_short'     => 'Stuur Skakelkennisgewing na al die werwe wat waarna in hierdie inskrywing geskakel word.',
-    'pingback_disabled'  => '(Skakelkennisgewings gedeaktiveer)',
-    'ping_button'        => 'Stuur Kennisgewing',
-    'ping_short'         => 'Stel boernaalgids dienste in kennis.',
-    'ping_disabled'      => '(Kennisgewing  gedeaktiveer)',
-    'trackback_button'   => 'Stuur Terugsporing',
-    'trackback_short'    => 'Stuur \'n Terugspoorkommentaar.',
+    'pingback' => 'Skakelkennisgewing',
+    'pingback_results' => 'Skakelkennisgewing resultate',
+    'send_pings' => 'Stuur Skakelkennisgewings',
+    'send_pings_for' => 'Stuur Skakelkennisgewing vir "%s"',
+    'no_links_pingback' => 'Geen skakels opgespoor.  Geen Skakelkennisgewing is vir hierdie inskrywing gestuur nie.',
+    'pingback_success' => 'Skakelkennisgewing gestuur.',
+    'no_pingback_url' => 'Geen skakelkennisgewing URL gevind.',
+    'resend' => 'Stuur weer',
+    'ping_all_explain' => 'U kan nou werwe waarna u skakel daarvan in kennis stel deur (<a href="http://af.wikipedia.org/wiki/Skakelkennisgewing">Skakelkennisgewing</a>), adverteer dat u werf opgedateer is deur boernaalgids dienste te raadpleeg of \'n <a href="http://af.wikipedia.org/wiki/Terugspoorkommentaar">Terugspoorkommentaar</a> te stuur in geval u kommentaar gelewer het op \'n inskrywing op iemand anders se werf.',
+    'pingback_button' => 'Stuur Skakelkennisgewing',
+    'pingback_short' => 'Stuur Skakelkennisgewing na al die werwe wat waarna in hierdie inskrywing geskakel word.',
+    'pingback_disabled' => '(Skakelkennisgewings gedeaktiveer)',
+    'ping_button' => 'Stuur Kennisgewing',
+    'ping_short' => 'Stel boernaalgids dienste in kennis.',
+    'ping_disabled' => '(Kennisgewing  gedeaktiveer)',
+    'trackback_button' => 'Stuur Terugsporing',
+    'trackback_short' => 'Stuur \'n Terugspoorkommentaar.',
     'trackback_disabled' => '(Terugspoor gedeaktiveer)',
-    'may_take_a_while'   => 'Neem kennis dat Skakelkennisgewings en Kennisgewings \'n tydjie mag neem.',
-    'ping_results'       => 'Kennisgewingresultate',
-    'unknown_method'     => 'Onbekende kennisgewingmetode',
-    'ping_success'       => 'Kennisgewing gestuur.',
-    'error_site_name'    => 'Sleutel die werf se naam in.',
-    'error_site_url'     => 'Sleutel die werf se URL in.',
-    'error_ping_url'     => 'Sleutel \'n geldige Kennisgewing URL in.',
-    'no_services'        => 'Geen boernaalgidsdiens is opgestel nie.',
-    'services_headline'  => 'Boernaalgidsdienste',
-    'service_explain'    => 'Om \'n boernaalgidsdiens te wysig of te verwyder kliek op die wysig ikoon van daardie diens hieronder. Om \'n nuwe boernaal diensgids by te voeg, kliek op "Skep Nuwe" hierbo.',
-    'service'            => 'Diens',
-    'ping_method'        => 'Kennisgewingsmetode',
-    'service_website'    => 'Webwerf',
-    'service_ping_url'   => 'URL om in kennis te stel',
-    'ping_standard'      => 'Standaard Kennisgewing',
-    'ping_extended'      => 'Uitgebreide Kennisgewing',
-    'ping_unknown'       => '(onbekende metode)',
-    'edit_service'       => 'Wysig Boernaalgidsdiens',
-    'trackbacks'         => 'Terugsporings',
-    'editor_intro'       => 'Berei u terugspoorkommentaar vir <a href="%s">%s</a> voor.',
-    'editor_intro_none'  => 'Berei u terugspoorkommentaar voor.',
-    'trackback_note'     => 'Om \'n terugspoorkommentaar vir \'n artikel te stuur, gaan na die lys van artikels en kliek op "' . $LANG24[21] . '" vir die artikel. Om \'n terugspoor te stuur wat nie verband hou met \'n artikel nie, <a href="%s">kliek hier</a>.',
-    'pingback_explain'   => 'Sleutel \'n URL in waarna die Skakelkennisgewing gestuur moet word.  Die kennisgewing sal sal na u werf se tuisblad verwys.',
-    'pingback_url'       => 'Skakelkennisgewing URL',
-    'site_url'           => 'Hierdie werf se URL',
-    'pingback_note'      => 'Om \'n skakelkennisgewing vir \'n artikel te stuur gaan na die lys van artikels en kliek op stories en kliek op "' . $LANG24[21] . '" vir die artikel. Om \'n skakelkennisgewing te stuur wat nie verband hou met \'n artikel nie, <a href="%s">kliek hier</a>.',
-    'pbtarget_missing'   => 'Geen Skakelkennisgewing URL',
-    'pbtarget_required'  => 'Sleutel asseblief \'n skakelkennisgewing URL in',
-    'pb_error_details'   => 'Fout tydens stuur van skakelkennisgewing:'
+    'may_take_a_while' => 'Neem kennis dat Skakelkennisgewings en Kennisgewings \'n tydjie mag neem.',
+    'ping_results' => 'Kennisgewingresultate',
+    'unknown_method' => 'Onbekende kennisgewingmetode',
+    'ping_success' => 'Kennisgewing gestuur.',
+    'error_site_name' => 'Sleutel die werf se naam in.',
+    'error_site_url' => 'Sleutel die werf se URL in.',
+    'error_ping_url' => 'Sleutel \'n geldige Kennisgewing URL in.',
+    'no_services' => 'Geen boernaalgidsdiens is opgestel nie.',
+    'services_headline' => 'Boernaalgidsdienste',
+    'service_explain' => 'Om \'n boernaalgidsdiens te wysig of te verwyder kliek op die wysig ikoon van daardie diens hieronder. Om \'n nuwe boernaal diensgids by te voeg, kliek op "Skep Nuwe" hierbo.',
+    'service' => 'Diens',
+    'ping_method' => 'Kennisgewingsmetode',
+    'service_website' => 'Webwerf',
+    'service_ping_url' => 'URL om in kennis te stel',
+    'ping_standard' => 'Standaard Kennisgewing',
+    'ping_extended' => 'Uitgebreide Kennisgewing',
+    'ping_unknown' => '(onbekende metode)',
+    'edit_service' => 'Wysig Boernaalgidsdiens',
+    'trackbacks' => 'Terugsporings',
+    'editor_intro' => 'Berei u terugspoorkommentaar vir <a href="%s">%s</a> voor.',
+    'editor_intro_none' => 'Berei u terugspoorkommentaar voor.',
+    'trackback_note' => 'Om \'n terugspoorkommentaar vir \'n artikel te stuur, gaan na die lys van artikels en kliek op "Stuur Pieng" vir die artikel. Om \'n terugspoor te stuur wat nie verband hou met \'n artikel nie, <a href="%s">kliek hier</a>.',
+    'pingback_explain' => 'Sleutel \'n URL in waarna die Skakelkennisgewing gestuur moet word.  Die kennisgewing sal sal na u werf se tuisblad verwys.',
+    'pingback_url' => 'Skakelkennisgewing URL',
+    'site_url' => 'Hierdie werf se URL',
+    'pingback_note' => 'Om \'n skakelkennisgewing vir \'n artikel te stuur gaan na die lys van artikels en kliek op stories en kliek op "Stuur Pieng" vir die artikel. Om \'n skakelkennisgewing te stuur wat nie verband hou met \'n artikel nie, <a href="%s">kliek hier</a>.',
+    'pbtarget_missing' => 'Geen Skakelkennisgewing URL',
+    'pbtarget_required' => 'Sleutel asseblief \'n skakelkennisgewing URL in',
+    'pb_error_details' => 'Fout tydens stuur van skakelkennisgewing:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
 # directory.php
 
-$LANG_DIR = array (
-    'title'            => 'Artikelgids',
-    'title_year'       => 'Artikelgids vir  %d',
+$LANG_DIR = array(
+    'title' => 'Artikelgids',
+    'title_year' => 'Artikelgids vir  %d',
     'title_month_year' => 'Artikelgids vir %s %d',
-    'nav_top'          => 'Terug na die Artikelgids',
-    'no_articles'      => 'Geen Artikels.'
+    'nav_top' => 'Terug na die Artikelgids',
+    'no_articles' => 'Geen Artikels.'
 );
 
-################################################################################
+###############################################################################
 # "What's New" Time Strings
+# 
+# For the first two strings, you can use the following placeholders.
+# Order them so it makes sense in your language:
+# %i    item, "Stories"
+# %n    amount, "2", "20" etc.
+# %t    time, "2" (weeks)
+# %s    scale, "hrs", "weeks"
+
+$LANG_WHATSNEW = array(
+    'new_string' => '%n nuwe %i in die laaste %t %s',
+    'new_last' => 'laaste %t %s',
+    'minutes' => 'minute',
+    'hours' => 'ure',
+    'days' => 'dae',
+    'weeks' => 'weke',
+    'months' => 'maande',
+    'minute' => 'minuut',
+    'hour' => 'uur',
+    'day' => 'dag',
+    'week' => 'week',
+    'month' => 'maand'
+);
 
-$LANG_WHATSNEW = array (
-    # This here determines the order of the sentence "No new stories in 2 hrs"
-    # order it so it makes sense in your language:
-    # %i    item, "Stories"
-    # %n    amount, "2", "20" etc
-    # %t    time, "2" (weeks)
-    # %s    scale, "hrs", "weeks"
-    'new_string'  => '%n nuwe %i in die laaste %t %s',
-    'new_last'    => 'laaste %t %s',
-    # other strings
-    'minutes'     => 'minute',
-    'hours'       => 'ure',
-    'days'        => 'dae',
-    'weeks'       => 'weke',
-    'months'      => 'maande',
-    'minute'      => 'minuut',
-    'hour'        => 'uur',
-    'day'         => 'dag',
-    'week'        => 'week',
-    'month'       => 'maand'
+###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Januarie',
+    2 => 'Februarie',
+    3 => 'Maart',
+    4 => 'April',
+    5 => 'Mei',
+    6 => 'Junie',
+    7 => 'Julie',
+    8 => 'Augustus',
+    9 => 'September',
+    10 => 'Oktober',
+    11 => 'November',
+    12 => 'Desember'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Sondag',
+    2 => 'Maandag',
+    3 => 'Dinsdag',
+    4 => 'Woensdag',
+    5 => 'Donderdag',
+    6 => 'Vrydag',
+    7 => 'Saterdag'
 );
 
-################################################################################
+###############################################################################
 # Admin - Strings
-#
+# 
 # These are some standard strings used by core functions as well as plugins to
-# display adminiatration lists and edit pages
+# display administration lists and edit pages
 
-$LANG_ADMIN = array (
-    'search'        => 'Soektog',
+$LANG_ADMIN = array(
+    'search' => 'Soektog',
     'limit_results' => 'Beperk Resultate',
-    'submit'        => 'Stuur',
-    'edit'          => 'Wysig',
-    'admin_home'    => 'Admin Tuisblad',
-    'create_new'    => 'Skryf iets',
-    'enabled'       => 'Aktief',
-    'title'         => 'Titel',
-    'type'          => 'Tipe',
-    'topic'         => 'Onderwerp',
-    'help_url'      => 'Hulpl&ecirc;er URL',
-    'save'          => 'Stoor',
-    'cancel'        => 'Kanselleer',
-    'delete'        => 'Verwyder',
-    'copy'          => 'Kopi&euml;er',
-    'no_results'    => '- Geen inskrywings opgespoor -',
-    'data_error'    => 'Daar was \'n fout tydens die verwerking van die intekenlysdata. Gaan asseblief databron na.'
-
+    'submit' => 'Stuur',
+    'edit' => 'Wysig',
+    'edit_adv' => 'Adv. Edit',
+    'admin_home' => 'Admin Tuisblad',
+    'create_new' => 'Skryf iets',
+    'create_new_adv' => 'Create New (Adv.)',
+    'enabled' => 'Aktief',
+    'title' => 'Titel',
+    'type' => 'Tipe',
+    'topic' => 'Onderwerp',
+    'help_url' => 'Hulpl&ecirc;er URL',
+    'save' => 'Stoor',
+    'cancel' => 'Kanselleer',
+    'delete' => 'Verwyder',
+    'delete_sel' => 'Delete selected',
+    'copy' => 'Kopi&euml;er',
+    'no_results' => '- Geen inskrywings opgespoor -',
+    'data_error' => 'Daar was \'n fout tydens die verwerking van die intekenlysdata. Gaan asseblief databron na.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
+###############################################################################
 # Localisation of the texts for the various drop-down menus that are actually
 # stored in the database. If these exist, they override the texts from the
 # database.
 
 $LANG_commentcodes = array(
-    0   => 'Kommentaar Aktief',
-    -1  => 'Kommentaar Onaktief'
+    0 => 'Kommentaar Aktief',
+    -1 => 'Kommentaar Onaktief'
 );
 
+
 $LANG_commentmodes = array(
-    'flat'      => 'Plat',
-    'nested'    => 'Genestel',
-    'threaded'  => 'Geryg',
+    'flat' => 'Plat',
+    'nested' => 'Genestel',
+    'threaded' => 'Geryg',
     'nocomment' => 'Geen Kommentaar'
 );
 
 $LANG_cookiecodes = array(
-    0       => '(moenie)',
-    3600    => '1 Uur',
-    7200    => '2 Ure',
-    10800   => '3 Ure',
-    28800   => '8 Ure',
-    86400   => '1 Dag',
-    604800  => '1 Week',
+    0 => '(moenie)',
+    3600 => '1 Uur',
+    7200 => '2 Ure',
+    10800 => '3 Ure',
+    28800 => '8 Ure',
+    86400 => '1 Dag',
+    604800 => '1 Week',
     2678400 => '1 Maand'
 );
 
 $LANG_dateformats = array(
-    0   => 'Stelselstandaard'
+    0 => 'Stelselstandaard'
 );
 
 $LANG_featurecodes = array(
@@ -1488,17 +1509,17 @@
 
 $LANG_postmodes = array(
     'plaintext' => 'Gewone Teks',
-    'html'      => 'HTML Formaat'
+    'html' => 'HTML Formaat'
 );
 
 $LANG_sortcodes = array(
-    'ASC'  => 'Oudste Eerste',
+    'ASC' => 'Oudste Eerste',
     'DESC' => 'Nuutste Eerste'
 );
 
 $LANG_trackbackcodes = array(
-    0   => 'Terugsporings Aktief',
-    -1  => 'Terugsporings Onaktief'
+    0 => 'Terugsporings Aktief',
+    -1 => 'Terugsporings Onaktief'
 );
 
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/bosnian.php 1.4.1.src/cpanel-glprivate/language/bosnian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/bosnian.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/bosnian.php	2006-09-17 03:58:43.000000000 -0500
@@ -167,28 +167,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Kalendar dogadjaja',
-    2 => 'Zao nam je, trenutno nema nikakvih dogadjanja.',
-    3 => 'Kada',
-    4 => 'Gdje',
-    5 => 'Opis',
-    6 => 'Dodaj dogadjaj',
-    7 => 'Nadolazeca dogadjanja',
-    8 => 'Dodavanjem ovog dogadjanja vasem kalendaru, mozete brzo pregledati samo ona dogadjanja koja vas interesiraju pritiskom na  "Moj kalendar" u korisnickim funkcijama.',
-    9 => 'Dodaj u Moj kalendar',
-    10 => 'Makni iz Moj kalendar',
-    11 => "Dodaj dogadjaj u {$_USER['username']} kalendar",
-    12 => 'Dogadjaji',
-    13 => 'Pocetak',
-    14 => 'Kraj',
-    15 => 'Natrag na kalendar'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -350,7 +332,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -667,38 +682,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editiranje dogaaja',
-    2 => 'Error',
-    3 => 'Naziv dogadjaja',
-    4 => 'URL dogadjaja',
-    5 => 'Datum opcetka dogadjaja',
-    6 => 'Datum zavrsetka dogadjaja',
-    7 => 'Lokacija dogadjaja',
-    8 => 'Opis dogadjaja',
-    9 => '(ukljucujuci http://)',
-    10 => 'Moras omoguciti datum/vrijeme, opis i lokaciju dogadjaja!',
-    11 => 'Menadzer dogadjaja',
-    12 => 'Da biste uredili ili dodali dogadjaj, kliknite dole na zeljeni link. Da biste kreirali novi dogadjaj kliknite iznad na novi dogadjaj. Pritisnite na [C] da biste kreirali ili napravili postojeci dogadjaj.',
-    13 => 'Naziv dogadjaja',
-    14 => 'Pocetak (datum)',
-    15 => 'Kraj (datum)',
-    16 => 'Pristup Odbijen',
-    17 => "Pokusavas pristupati dogadjaju za koji nemas prava pristupa. Ovaj pokusaj pristupa je zabiljezen. Molimo <a href=\"{$_CONF['site_admin_url']}/event.php\">vratite se nazad</a>.",
-    18 => 'Novi dogadjaj',
-    19 => 'Admin Home',
-    20 => 'snimi',
-    21 => 'ponisti',
-    22 => 'obrisi',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -789,7 +775,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -877,7 +865,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -907,53 +924,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Nedelja',
-    2 => 'Ponedeljak',
-    3 => 'Utorak',
-    4 => 'Srijeda',
-    5 => 'Cetvrtak',
-    6 => 'Petak',
-    7 => 'Subota',
-    8 => 'Dodaj dogaaj',
-    9 => '%s Event',
-    10 => 'Events for',
-    11 => 'Master Calendar',
-    12 => 'Moj kalendar',
-    13 => 'Januar',
-    14 => 'Februar',
-    15 => 'Mart',
-    16 => 'April',
-    17 => 'Maj',
-    18 => 'Juni',
-    19 => 'Juli',
-    20 => 'August',
-    21 => 'Septembar',
-    22 => 'Oktobar',
-    23 => 'Novembar',
-    24 => 'Decembar',
-    25 => 'Natrag na ',
-    26 => 'Cijeli dan',
-    27 => 'Sedmica',
-    28 => 'Osobni kalendar za',
-    29 => 'Javni kalendar',
-    30 => 'obrisi dogadjaj',
-    31 => 'Dodaj',
-    32 => 'Dogadjaj',
-    33 => 'Datum',
-    34 => 'Vrijeme',
-    35 => 'Brzo dodavanje',
-    36 => 'Potvrdi',
-    37 => 'Zao mi je. Mogucnost uporabe osobnog kalendara na ovim stranicama nije dozvoljena.',
-    38 => 'Osobni editor dogadjaja',
-    39 => 'Dan',
-    40 => 'Sedmica',
-    41 => 'Mjesec'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1077,7 +1047,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1158,7 +1130,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1189,7 +1170,7 @@
     'no' => 'Ne',
     'corerightsdescr' => "This group is a core {$_CONF['site_name']} Group.  Therefore the rights for this group cannot be edited.  Below is a read-only list of the rights this group has access to.",
     'groupmsg' => 'Security Groups on this site are hierarchical.  By adding this group to any of the groups below you will giving this group the same rights that those groups have.  Where possible it is encouraged you use the groups below to give rights to a group.  If you need this group to have custom rights then you can select the rights to various site features in the section below called \'Rights\'.  To add this group to any of the ones below simply check the box next to the group(s) that you want.',
-    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this groups belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
+    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this group belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
     'rightsdescr' => 'A groups access to a certain right below can be given directly to the group OR to a different group that this group is a part of.  The ones you see below without a checkbox are the rights that have been given to this group because it belongs to another group with that right.  The rights with checkboxes below are rights that can be given directly to this group.',
     'lock' => 'Zakljucaj',
     'members' => 'Clanovi',
@@ -1200,7 +1181,6 @@
     'none' => 'None',
     'accessdenied' => 'Pristup odbijen',
     'storydenialmsg' => "You do not have access to view this story.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
-    'eventdenialmsg' => "You do not have access to view this event.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
     'nogroupsforcoregroup' => 'This group doesn\'t belong to any of the other groups',
     'grouphasnorights' => 'This group doesn\'t have access to any of the administrative features of this site',
     'newgroup' => 'Nova Grupa',
@@ -1386,7 +1366,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1426,6 +1407,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Januar',
+    2 => 'Februar',
+    3 => 'Mart',
+    4 => 'April',
+    5 => 'Maj',
+    6 => 'Juni',
+    7 => 'Juli',
+    8 => 'August',
+    9 => 'Septembar',
+    10 => 'Oktobar',
+    11 => 'Novembar',
+    12 => 'Decembar'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Nedelja',
+    2 => 'Ponedeljak',
+    3 => 'Utorak',
+    4 => 'Srijeda',
+    5 => 'Cetvrtak',
+    6 => 'Petak',
+    7 => 'Subota'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1436,8 +1448,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1446,9 +1460,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/bosnian_utf-8.php 1.4.1.src/cpanel-glprivate/language/bosnian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/bosnian_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/bosnian_utf-8.php	2006-09-17 03:58:43.000000000 -0500
@@ -167,28 +167,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Kalendar dogadjaja',
-    2 => 'Zao nam je, trenutno nema nikakvih dogadjanja.',
-    3 => 'Kada',
-    4 => 'Gdje',
-    5 => 'Opis',
-    6 => 'Dodaj dogadjaj',
-    7 => 'Nadolazeca dogadjanja',
-    8 => 'Dodavanjem ovog dogadjanja vasem kalendaru, mozete brzo pregledati samo ona dogadjanja koja vas interesiraju pritiskom na  "Moj kalendar" u korisnickim funkcijama.',
-    9 => 'Dodaj u Moj kalendar',
-    10 => 'Makni iz Moj kalendar',
-    11 => "Dodaj dogadjaj u {$_USER['username']} kalendar",
-    12 => 'Dogadjaji',
-    13 => 'Pocetak',
-    14 => 'Kraj',
-    15 => 'Natrag na kalendar'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -350,7 +332,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -667,38 +682,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editiranje dogaðaja',
-    2 => 'Error',
-    3 => 'Naziv dogadjaja',
-    4 => 'URL dogadjaja',
-    5 => 'Datum opcetka dogadjaja',
-    6 => 'Datum zavrsetka dogadjaja',
-    7 => 'Lokacija dogadjaja',
-    8 => 'Opis dogadjaja',
-    9 => '(ukljucujuci http://)',
-    10 => 'Moras omoguciti datum/vrijeme, opis i lokaciju dogadjaja!',
-    11 => 'Menadzer dogadjaja',
-    12 => 'Da biste uredili ili dodali dogadjaj, kliknite dole na zeljeni link. Da biste kreirali novi dogadjaj kliknite iznad na novi dogadjaj. Pritisnite na [C] da biste kreirali ili napravili postojeci dogadjaj.',
-    13 => 'Naziv dogadjaja',
-    14 => 'Pocetak (datum)',
-    15 => 'Kraj (datum)',
-    16 => 'Pristup Odbijen',
-    17 => "Pokusavas pristupati dogadjaju za koji nemas prava pristupa. Ovaj pokusaj pristupa je zabiljezen. Molimo <a href=\"{$_CONF['site_admin_url']}/event.php\">vratite se nazad</a>.",
-    18 => 'Novi dogadjaj',
-    19 => 'Admin Home',
-    20 => 'snimi',
-    21 => 'ponisti',
-    22 => 'obrisi',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -789,7 +775,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -877,7 +865,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -907,53 +924,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Nedelja',
-    2 => 'Ponedeljak',
-    3 => 'Utorak',
-    4 => 'Srijeda',
-    5 => 'Cetvrtak',
-    6 => 'Petak',
-    7 => 'Subota',
-    8 => 'Dodaj dogaðaj',
-    9 => '%s Event',
-    10 => 'Events for',
-    11 => 'Master Calendar',
-    12 => 'Moj kalendar',
-    13 => 'Januar',
-    14 => 'Februar',
-    15 => 'Mart',
-    16 => 'April',
-    17 => 'Maj',
-    18 => 'Juni',
-    19 => 'Juli',
-    20 => 'August',
-    21 => 'Septembar',
-    22 => 'Oktobar',
-    23 => 'Novembar',
-    24 => 'Decembar',
-    25 => 'Natrag na ',
-    26 => 'Cijeli dan',
-    27 => 'Sedmica',
-    28 => 'Osobni kalendar za',
-    29 => 'Javni kalendar',
-    30 => 'obrisi dogadjaj',
-    31 => 'Dodaj',
-    32 => 'Dogadjaj',
-    33 => 'Datum',
-    34 => 'Vrijeme',
-    35 => 'Brzo dodavanje',
-    36 => 'Potvrdi',
-    37 => 'Zao mi je. Mogucnost uporabe osobnog kalendara na ovim stranicama nije dozvoljena.',
-    38 => 'Osobni editor dogadjaja',
-    39 => 'Dan',
-    40 => 'Sedmica',
-    41 => 'Mjesec'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1077,7 +1047,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1158,7 +1130,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1189,7 +1170,7 @@
     'no' => 'Ne',
     'corerightsdescr' => "This group is a core {$_CONF['site_name']} Group.  Therefore the rights for this group cannot be edited.  Below is a read-only list of the rights this group has access to.",
     'groupmsg' => 'Security Groups on this site are hierarchical.  By adding this group to any of the groups below you will giving this group the same rights that those groups have.  Where possible it is encouraged you use the groups below to give rights to a group.  If you need this group to have custom rights then you can select the rights to various site features in the section below called \'Rights\'.  To add this group to any of the ones below simply check the box next to the group(s) that you want.',
-    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this groups belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
+    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this group belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
     'rightsdescr' => 'A groups access to a certain right below can be given directly to the group OR to a different group that this group is a part of.  The ones you see below without a checkbox are the rights that have been given to this group because it belongs to another group with that right.  The rights with checkboxes below are rights that can be given directly to this group.',
     'lock' => 'Zakljucaj',
     'members' => 'Clanovi',
@@ -1200,7 +1181,6 @@
     'none' => 'None',
     'accessdenied' => 'Pristup odbijen',
     'storydenialmsg' => "You do not have access to view this story.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
-    'eventdenialmsg' => "You do not have access to view this event.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
     'nogroupsforcoregroup' => 'This group doesn\'t belong to any of the other groups',
     'grouphasnorights' => 'This group doesn\'t have access to any of the administrative features of this site',
     'newgroup' => 'Nova Grupa',
@@ -1386,7 +1366,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1426,6 +1407,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Januar',
+    2 => 'Februar',
+    3 => 'Mart',
+    4 => 'April',
+    5 => 'Maj',
+    6 => 'Juni',
+    7 => 'Juli',
+    8 => 'August',
+    9 => 'Septembar',
+    10 => 'Oktobar',
+    11 => 'Novembar',
+    12 => 'Decembar'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Nedelja',
+    2 => 'Ponedeljak',
+    3 => 'Utorak',
+    4 => 'Srijeda',
+    5 => 'Cetvrtak',
+    6 => 'Petak',
+    7 => 'Subota'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1436,8 +1448,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1446,9 +1460,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/bulgarian.php 1.4.1.src/cpanel-glprivate/language/bulgarian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/bulgarian.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/bulgarian.php	2006-09-17 03:58:43.000000000 -0500
@@ -163,28 +163,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => '  ',
-    2 => '   .',
-    3 => '',
-    4 => '',
-    5 => '',
-    6 => ' ',
-    7 => ' ',
-    8 => '              ,    .',
-    9 => '  \' \'',
-    10 => '  \' \'',
-    11 => "      {$_USER['username']}'",
-    12 => '',
-    13 => '',
-    14 => '',
-    15 => '  \' \''
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -346,7 +328,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -663,38 +678,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => '  ',
-    2 => 'Error',
-    3 => '  ',
-    4 => 'URL  ',
-    5 => ' ',
-    6 => ' ',
-    7 => '',
-    8 => '',
-    9 => '( http://)',
-    10 => '   /,   !',
-    11 => '  ',
-    12 => '     ,    -.         \' \' .  [C]        .',
-    13 => '  ',
-    14 => ' ',
-    15 => ' ',
-    16 => ' ',
-    17 => "         .     .  <a href=\"{$_CONF['site_admin_url']}/event.php\">    </a>.",
-    18 => ' ',
-    19 => 'Admin Home',
-    20 => '',
-    21 => '',
-    22 => '',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -785,7 +771,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -873,7 +861,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -903,53 +920,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => '',
-    2 => '',
-    3 => '',
-    4 => '',
-    5 => '',
-    6 => '',
-    7 => '',
-    8 => 'Add Event',
-    9 => '%s Event',
-    10 => 'Events for',
-    11 => 'Master Calendar',
-    12 => 'My Calendar',
-    13 => 'January',
-    14 => 'February',
-    15 => 'March',
-    16 => 'April',
-    17 => 'May',
-    18 => 'June',
-    19 => 'July',
-    20 => 'August',
-    21 => 'September',
-    22 => 'October',
-    23 => 'November',
-    24 => 'December',
-    25 => 'Back to ',
-    26 => 'All Day',
-    27 => 'Week',
-    28 => '  ',
-    29 => 'Public Calendar',
-    30 => ' ',
-    31 => '',
-    32 => 'Event',
-    33 => 'Date',
-    34 => 'Time',
-    35 => 'Quick Add',
-    36 => 'Submit',
-    37 => 'Sorry, the personal calendar feature is not enabled on this site',
-    38 => 'Personal Event Editor',
-    39 => 'Day',
-    40 => 'Week',
-    41 => 'Month'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1073,7 +1043,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1154,7 +1126,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1185,7 +1166,7 @@
     'no' => 'No',
     'corerightsdescr' => "This group is a core {$_CONF['site_name']} Group.  Therefore the rights for this group cannot be edited.  Below is a read-only list of the rights this group has access to.",
     'groupmsg' => 'Security Groups on this site are hierarchical.  By adding this group to any of the groups below you will giving this group the same rights that those groups have.  Where possible it is encouraged you use the groups below to give rights to a group.  If you need this group to have custom rights then you can select the rights to various site features in the section below called \'Rights\'.  To add this group to any of the ones below simply check the box next to the group(s) that you want.',
-    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this groups belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
+    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this group belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
     'rightsdescr' => 'A groups access to a certain right below can be given directly to the group OR to a different group that this group is a part of.  The ones you see below without a checkbox are the rights that have been given to this group because it belongs to another group with that right.  The rights with checkboxes below are rights that can be given directly to this group.',
     'lock' => 'Lock',
     'members' => 'Members',
@@ -1196,7 +1177,6 @@
     'none' => 'None',
     'accessdenied' => 'Access Denied',
     'storydenialmsg' => "You do not have access to view this story.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
-    'eventdenialmsg' => "You do not have access to view this event.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
     'nogroupsforcoregroup' => 'This group doesn\'t belong to any of the other groups',
     'grouphasnorights' => 'This group doesn\'t have access to any of the administrative features of this site',
     'newgroup' => 'New Group',
@@ -1382,7 +1362,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1422,6 +1403,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'January',
+    2 => 'February',
+    3 => 'March',
+    4 => 'April',
+    5 => 'May',
+    6 => 'June',
+    7 => 'July',
+    8 => 'August',
+    9 => 'September',
+    10 => 'October',
+    11 => 'November',
+    12 => 'December'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => '',
+    2 => '',
+    3 => '',
+    4 => '',
+    5 => '',
+    6 => '',
+    7 => ''
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1432,8 +1444,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1442,9 +1456,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/bulgarian_utf-8.php 1.4.1.src/cpanel-glprivate/language/bulgarian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/bulgarian_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/bulgarian_utf-8.php	2006-09-17 03:58:43.000000000 -0500
@@ -163,28 +163,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Календар на събитията',
-    2 => 'Нямате събития в календара.',
-    3 => 'Кога',
-    4 => 'Къде',
-    5 => 'Описание',
-    6 => 'Добави събитие',
-    7 => 'Предстоящи събития',
-    8 => 'Посредством прибавянето на това събитие към вашия календар вие можете бързо да видите само събитията, от които се интересувате.',
-    9 => 'Добави към \'Моят календар\'',
-    10 => 'Изтрий от \'Моят календар\'',
-    11 => "Добавянето на събитие към календара на {$_USER['username']}'",
-    12 => 'Събитие',
-    13 => 'от',
-    14 => 'до',
-    15 => 'Назад към \'Моят календар\''
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -346,7 +328,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -663,38 +678,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Редактор на събития',
-    2 => 'Error',
-    3 => 'Име на събитието',
-    4 => 'URL към събитието',
-    5 => 'Стартова дата',
-    6 => 'Крайна дата',
-    7 => 'Местоположение',
-    8 => 'Описание',
-    9 => '(включително http://)',
-    10 => 'Трябва да попълните дните/времето, описание и местоположение!',
-    11 => 'Мениджър на събития',
-    12 => 'За да модифицирате или изтриете събитие, кликнете върху него по-долу.  За да създадете ново събитие кликнете на \'ново събитие\' отгоре. Натиснете [C] за да създадете копие на вече съществуващо събитие.',
-    13 => 'Заглавие на събитието',
-    14 => 'Стартова дата',
-    15 => 'Крайна дата',
-    16 => 'Достъпът отказан',
-    17 => "Опитвате се да влезете в събитие до когото нямате достъп.  Този опит бе записан. Моля <a href=\"{$_CONF['site_admin_url']}/event.php\">върнете се на административния екран</a>.",
-    18 => 'Ново събитие',
-    19 => 'Admin Home',
-    20 => 'запази',
-    21 => 'откажи',
-    22 => 'изтрий',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -785,7 +771,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -873,7 +861,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -903,53 +920,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Неделя',
-    2 => 'Понеделник',
-    3 => 'Вторник',
-    4 => 'Сряда',
-    5 => 'Четвъртък',
-    6 => 'Петък',
-    7 => 'Събота',
-    8 => 'Add Event',
-    9 => '%s Event',
-    10 => 'Events for',
-    11 => 'Master Calendar',
-    12 => 'My Calendar',
-    13 => 'January',
-    14 => 'February',
-    15 => 'March',
-    16 => 'April',
-    17 => 'May',
-    18 => 'June',
-    19 => 'July',
-    20 => 'August',
-    21 => 'September',
-    22 => 'October',
-    23 => 'November',
-    24 => 'December',
-    25 => 'Back to ',
-    26 => 'All Day',
-    27 => 'Week',
-    28 => 'Персонален календар за',
-    29 => 'Public Calendar',
-    30 => 'събитие изтриване',
-    31 => 'Добави',
-    32 => 'Event',
-    33 => 'Date',
-    34 => 'Time',
-    35 => 'Quick Add',
-    36 => 'Submit',
-    37 => 'Sorry, the personal calendar feature is not enabled on this site',
-    38 => 'Personal Event Editor',
-    39 => 'Day',
-    40 => 'Week',
-    41 => 'Month'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1073,7 +1043,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1154,7 +1126,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1185,7 +1166,7 @@
     'no' => 'No',
     'corerightsdescr' => "This group is a core {$_CONF['site_name']} Group.  Therefore the rights for this group cannot be edited.  Below is a read-only list of the rights this group has access to.",
     'groupmsg' => 'Security Groups on this site are hierarchical.  By adding this group to any of the groups below you will giving this group the same rights that those groups have.  Where possible it is encouraged you use the groups below to give rights to a group.  If you need this group to have custom rights then you can select the rights to various site features in the section below called \'Rights\'.  To add this group to any of the ones below simply check the box next to the group(s) that you want.',
-    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this groups belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
+    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this group belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
     'rightsdescr' => 'A groups access to a certain right below can be given directly to the group OR to a different group that this group is a part of.  The ones you see below without a checkbox are the rights that have been given to this group because it belongs to another group with that right.  The rights with checkboxes below are rights that can be given directly to this group.',
     'lock' => 'Lock',
     'members' => 'Members',
@@ -1196,7 +1177,6 @@
     'none' => 'None',
     'accessdenied' => 'Access Denied',
     'storydenialmsg' => "You do not have access to view this story.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
-    'eventdenialmsg' => "You do not have access to view this event.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
     'nogroupsforcoregroup' => 'This group doesn\'t belong to any of the other groups',
     'grouphasnorights' => 'This group doesn\'t have access to any of the administrative features of this site',
     'newgroup' => 'New Group',
@@ -1382,7 +1362,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1422,6 +1403,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'January',
+    2 => 'February',
+    3 => 'March',
+    4 => 'April',
+    5 => 'May',
+    6 => 'June',
+    7 => 'July',
+    8 => 'August',
+    9 => 'September',
+    10 => 'October',
+    11 => 'November',
+    12 => 'December'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Неделя',
+    2 => 'Понеделник',
+    3 => 'Вторник',
+    4 => 'Сряда',
+    5 => 'Четвъртък',
+    6 => 'Петък',
+    7 => 'Събота'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1432,8 +1444,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1442,9 +1456,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/catalan.php 1.4.1.src/cpanel-glprivate/language/catalan.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/catalan.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/catalan.php	2006-09-17 03:58:43.000000000 -0500
@@ -161,28 +161,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendari d\'Esdeveniments',
-    2 => 'Disculpa, no hi ha esdeveniments a mostrar.',
-    3 => 'Quan',
-    4 => 'On',
-    5 => 'Descripci',
-    6 => 'Afegeix un esdeveniment',
-    7 => 'Prxims esdeveniments',
-    8 => 'A l\'afegir aquest esdeveniment al calendari podrs veure rapidament els esdeveniments que t\'interessin. Per fer-ho escull "El meu Calendari" a l\'rea de Funcions de l\'usuari/a.',
-    9 => 'Afegir a "El meu Calendari"',
-    10 => 'Treure de "El meu Calendari"',
-    11 => "Afegint l\'Esdeveniment al calendari de {$_USER['username']}",
-    12 => 'Esdeveniment',
-    13 => 'Comena',
-    14 => 'Acaba',
-    15 => 'Tornar al Calendari'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -344,7 +326,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -661,38 +676,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editor d\'Esdeveniments',
-    2 => 'Error',
-    3 => 'Ttol',
-    4 => 'URL',
-    5 => 'Data d\'Inici',
-    6 => 'Data de Finalitzaci',
-    7 => 'Lloc',
-    8 => 'Descripci',
-    9 => '(inclou http://)',
-    10 => 'Has de completar tots els camps d\'aquest formulari.',
-    11 => 'Administrador de l\'Esdeveniment',
-    12 => 'Per modificar o borrar un esdeveniment, clica sobre ell a sota. Per crear un Nou Esdeveniment clica sobre Nou Esdeveniment a dalt. Clica sobre [C] per crear una cpia d\'un esdeveniment ja existent.',
-    13 => 'Ttol',
-    14 => 'Data d\'Inici',
-    15 => 'Data de Finalitzaci',
-    16 => 'Accs Denegat',
-    17 => "No tens perms per accedir a aquest Esdeveniment. Tot intent d\'accs ser registrat. Siusplau, torna a <a href=\"{$_CONF['site_admin_url']}/event.php\">la pgina d\'Administraci d\'Esdeveniments</a>.",
-    18 => 'Nou Esdeveniment',
-    19 => 'Pgina d\'Inici - Administrador',
-    20 => 'guardar',
-    21 => 'cancelar',
-    22 => 'borrar',
-    23 => 'Data d\'inici incorrecta.',
-    24 => 'Data de finalitzaci incorrecta.',
-    25 => 'La data de finalitzaci es anterior a la d\'inici.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -783,7 +769,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -871,7 +859,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -901,53 +918,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Diumenge',
-    2 => 'Dilluns',
-    3 => 'Dimarts',
-    4 => 'Dimecres',
-    5 => 'Dijous',
-    6 => 'Divendres',
-    7 => 'Dissabte',
-    8 => 'Afegeix un esdeveniment',
-    9 => 'Esdeveniment de %s',
-    10 => 'Esdeveniments per',
-    11 => 'Calendari Mestre',
-    12 => 'El meu Calendari',
-    13 => 'Gener',
-    14 => 'Febrer',
-    15 => 'Mar',
-    16 => 'Abril',
-    17 => 'Maig',
-    18 => 'Juny',
-    19 => 'Juliol',
-    20 => 'Agost',
-    21 => 'Setembre',
-    22 => 'Octubre',
-    23 => 'Novembre',
-    24 => 'Desembre',
-    25 => 'Tornar a ',
-    26 => 'Tot el dia',
-    27 => 'Setmana',
-    28 => 'Calendari Personal per',
-    29 => 'Calendari Pblic',
-    30 => 'borra l\'esdeveniment',
-    31 => 'Afegeix',
-    32 => 'Esdeveniment',
-    33 => 'Data',
-    34 => 'Hora',
-    35 => 'Afegit rpid',
-    36 => 'Enva',
-    37 => 'Disculpa, l\'opci de calendari personal no es troba habilitada en aquest lloc',
-    38 => 'Editor Personal d\'Esdeveniments',
-    39 => 'Dia',
-    40 => 'Setmana',
-    41 => 'Mes'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1071,7 +1041,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1152,7 +1124,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1194,7 +1175,6 @@
     'none' => 'Cap',
     'accessdenied' => 'Accs Denegat',
     'storydenialmsg' => "No tens accs per veure aquesta Notcia. Aix pot ser perqu no ets membre de {$_CONF['site_name']}. Siusplau <a href=users.php?mode=new>entra entra com a membre</a> de {$_CONF['site_name']} per tenir accs.",
-    'eventdenialmsg' => "No tens accs per veure aquest Esdeveniment. Aix pot ser perqu no ets membre de {$_CONF['site_name']}. Siusplau <a href=users.php?mode=new>entra com a membre</a> de {$_CONF['site_name']} per tenir accs.",
     'nogroupsforcoregroup' => 'Aquest grup no pertany a cap dels altres grups',
     'grouphasnorights' => 'Aquest grup no t accs a les funcions d\'administraci',
     'newgroup' => 'Nou Grupo',
@@ -1380,7 +1360,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1420,6 +1401,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Gener',
+    2 => 'Febrer',
+    3 => 'Mar',
+    4 => 'Abril',
+    5 => 'Maig',
+    6 => 'Juny',
+    7 => 'Juliol',
+    8 => 'Agost',
+    9 => 'Setembre',
+    10 => 'Octubre',
+    11 => 'Novembre',
+    12 => 'Desembre'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Diumenge',
+    2 => 'Dilluns',
+    3 => 'Dimarts',
+    4 => 'Dimecres',
+    5 => 'Dijous',
+    6 => 'Divendres',
+    7 => 'Dissabte'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1430,8 +1442,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1440,9 +1454,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/catalan_utf-8.php 1.4.1.src/cpanel-glprivate/language/catalan_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/catalan_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/catalan_utf-8.php	2006-09-17 03:58:43.000000000 -0500
@@ -161,28 +161,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendari d\'Esdeveniments',
-    2 => 'Disculpa, no hi ha esdeveniments a mostrar.',
-    3 => 'Quan',
-    4 => 'On',
-    5 => 'Descripció',
-    6 => 'Afegeix un esdeveniment',
-    7 => 'Pròxims esdeveniments',
-    8 => 'A l\'afegir aquest esdeveniment al calendari podràs veure rapidament els esdeveniments que t\'interessin. Per fer-ho escull "El meu Calendari" a l\'àrea de Funcions de l\'usuari/a.',
-    9 => 'Afegir a "El meu Calendari"',
-    10 => 'Treure de "El meu Calendari"',
-    11 => "Afegint l\'Esdeveniment al calendari de {$_USER['username']}",
-    12 => 'Esdeveniment',
-    13 => 'Comença',
-    14 => 'Acaba',
-    15 => 'Tornar al Calendari'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -344,7 +326,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -661,38 +676,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editor d\'Esdeveniments',
-    2 => 'Error',
-    3 => 'Títol',
-    4 => 'URL',
-    5 => 'Data d\'Inici',
-    6 => 'Data de Finalització',
-    7 => 'Lloc',
-    8 => 'Descripció',
-    9 => '(inclou http://)',
-    10 => 'Has de completar tots els camps d\'aquest formulari.',
-    11 => 'Administrador de l\'Esdeveniment',
-    12 => 'Per modificar o borrar un esdeveniment, clica sobre ell a sota. Per crear un Nou Esdeveniment clica sobre Nou Esdeveniment a dalt. Clica sobre [C] per crear una còpia d\'un esdeveniment ja existent.',
-    13 => 'Títol',
-    14 => 'Data d\'Inici',
-    15 => 'Data de Finalització',
-    16 => 'Accés Denegat',
-    17 => "No tens permís per accedir a aquest Esdeveniment. Tot intent d\'accés serà registrat. Siusplau, torna a <a href=\"{$_CONF['site_admin_url']}/event.php\">la pàgina d\'Administració d\'Esdeveniments</a>.",
-    18 => 'Nou Esdeveniment',
-    19 => 'Pàgina d\'Inici - Administrador',
-    20 => 'guardar',
-    21 => 'cancelar',
-    22 => 'borrar',
-    23 => 'Data d\'inici incorrecta.',
-    24 => 'Data de finalització incorrecta.',
-    25 => 'La data de finalització es anterior a la d\'inici.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -783,7 +769,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -871,7 +859,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -901,53 +918,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Diumenge',
-    2 => 'Dilluns',
-    3 => 'Dimarts',
-    4 => 'Dimecres',
-    5 => 'Dijous',
-    6 => 'Divendres',
-    7 => 'Dissabte',
-    8 => 'Afegeix un esdeveniment',
-    9 => 'Esdeveniment de %s',
-    10 => 'Esdeveniments per',
-    11 => 'Calendari Mestre',
-    12 => 'El meu Calendari',
-    13 => 'Gener',
-    14 => 'Febrer',
-    15 => 'Març',
-    16 => 'Abril',
-    17 => 'Maig',
-    18 => 'Juny',
-    19 => 'Juliol',
-    20 => 'Agost',
-    21 => 'Setembre',
-    22 => 'Octubre',
-    23 => 'Novembre',
-    24 => 'Desembre',
-    25 => 'Tornar a ',
-    26 => 'Tot el dia',
-    27 => 'Setmana',
-    28 => 'Calendari Personal per',
-    29 => 'Calendari Públic',
-    30 => 'borra l\'esdeveniment',
-    31 => 'Afegeix',
-    32 => 'Esdeveniment',
-    33 => 'Data',
-    34 => 'Hora',
-    35 => 'Afegit ràpid',
-    36 => 'Envía',
-    37 => 'Disculpa, l\'opció de calendari personal no es troba habilitada en aquest lloc',
-    38 => 'Editor Personal d\'Esdeveniments',
-    39 => 'Dia',
-    40 => 'Setmana',
-    41 => 'Mes'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1071,7 +1041,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1152,7 +1124,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1194,7 +1175,6 @@
     'none' => 'Cap',
     'accessdenied' => 'Accés Denegat',
     'storydenialmsg' => "No tens accés per veure aquesta Notícia. Això pot ser perquè no ets membre de {$_CONF['site_name']}. Siusplau <a href=users.php?mode=new>entra entra com a membre</a> de {$_CONF['site_name']} per tenir accés.",
-    'eventdenialmsg' => "No tens accés per veure aquest Esdeveniment. Això pot ser perquè no ets membre de {$_CONF['site_name']}. Siusplau <a href=users.php?mode=new>entra com a membre</a> de {$_CONF['site_name']} per tenir accés.",
     'nogroupsforcoregroup' => 'Aquest grup no pertany a cap dels altres grups',
     'grouphasnorights' => 'Aquest grup no té accés a les funcions d\'administració',
     'newgroup' => 'Nou Grupo',
@@ -1380,7 +1360,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1420,6 +1401,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Gener',
+    2 => 'Febrer',
+    3 => 'Març',
+    4 => 'Abril',
+    5 => 'Maig',
+    6 => 'Juny',
+    7 => 'Juliol',
+    8 => 'Agost',
+    9 => 'Setembre',
+    10 => 'Octubre',
+    11 => 'Novembre',
+    12 => 'Desembre'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Diumenge',
+    2 => 'Dilluns',
+    3 => 'Dimarts',
+    4 => 'Dimecres',
+    5 => 'Dijous',
+    6 => 'Divendres',
+    7 => 'Dissabte'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1430,8 +1442,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1440,9 +1454,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/chinese_big5.php 1.4.1.src/cpanel-glprivate/language/chinese_big5.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/chinese_big5.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/chinese_big5.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,1511 +0,0 @@
-<?php
-
-###############################################################################
-# chinese_traditional_big5.php
-#
-# Last Modified: 2004-10-26
-# Version: 1.3.10
-#
-# This is the Chinese Traditional (big5) language set for GeekLog 1.3.10
-#
-# Copyright (C) 2003 Samuel M. Stone
-# sam@stonemicro.com
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-#
-###############################################################################
-
-$LANG_CHARSET = 'Big5';
-
-###############################################################################
-# Array Format:
-# $LANGXX[YY]:  $LANG - variable name
-#               XX    - file id number
-#               YY    - phrase id number
-###############################################################################
-
-###############################################################################
-# USER PHRASES - These are file phrases used in end user scripts
-###############################################################################
-
-###############################################################################
-# lib-common.php
-
-$LANG01 = array(
-    1 => '@̡J',
-    2 => 'Ū',
-    3 => 'ӵ',
-    4 => 's',
-    5 => '벼',
-    6 => 'G',
-    7 => '벼G',
-    8 => '벼',
-    9 => '޲z̥\J',
-    10 => '檫',
-    11 => '峹',
-    12 => 'ե',
-    13 => 'DD',
-    14 => 's',
-    15 => 'ƥ',
-    16 => '벼',
-    17 => 'Τ',
-    18 => 'SQL ',
-    19 => 'hX',
-    20 => 'ΤTJ',
-    21 => 'ΤW',
-    22 => 'ΤѧO',
-    23 => 'w',
-    24 => 'ΦW',
-    25 => '^_',
-    26 => 'HUץuݱiK̭ӤH[IC',
-    27 => '̪o',
-    28 => 'R',
-    29 => 'SסC',
-    30 => 'ª峹',
-    31 => '\ HTML аO:',
-    32 => '~ALĪΤW',
-    33 => '~AgtΤx;',
-    34 => '~',
-    35 => 'hX',
-    36 => '',
-    37 => 'S峹',
-    38 => 'e}[',
-    39 => 'Ϸs',
-    40 => 'AA <tt>php.ini</tt> س]w <tt>register_globals = Off</tt>. iOnݭnN <tt>register_globals</tt> ]w <strong>on</strong>. ҥHbA~HeAN]w<strong>on</strong>AM᭫s}.',
-    41 => 'ȤH',
-    42 => '@:',
-    43 => '^_o',
-    44 => '',
-    45 => 'MySQL ~X',
-    46 => 'MySQL ~T',
-    47 => 'Τ\',
-    48 => 'bT',
-    49 => '',
-    50 => '~ SQL statement',
-    51 => 'U',
-    52 => 's',
-    53 => '޲z̭',
-    54 => 'ॴ}ɡC',
-    55 => 'B',
-    56 => '벼',
-    57 => 'KX',
-    58 => 'nJ',
-    59 => "SbH<a href=\"{$_CONF['site_url']}/users.php?mode=new\">bnO</a>",
-    60 => 'o',
-    61 => 'sWb',
-    62 => 'r',
-    63 => '׳]w',
-    64 => '峹qlB',
-    65 => '[ݥiCL',
-    66 => 'ڪ',
-    67 => 'wӨ',
-    68 => '',
-    69 => 'p',
-    70 => 'jM',
-    71 => 'Z',
-    72 => '귽',
-    73 => '벼',
-    74 => '',
-    75 => 'ij',
-    76 => 'έp',
-    77 => '',
-    78 => 'YNoͪ',
-    79 => 'sAF',
-    80 => 'ӷs峹(',
-    81 => 's峹(',
-    82 => ' pɤ)',
-    83 => '',
-    84 => 's',
-    85 => '̪|QKp',
-    86 => 'Ss',
-    87 => '̪ӬP',
-    88 => 'Sss',
-    89 => 'SƵo',
-    90 => '',
-    91 => 'JoΤF',
-    92 => '',
-    93 => 'v',
-    94 => 'ҦӼЩMvݩL̦U۪Ҧ.',
-    95 => 'ʤO',
-    96 => 'p',
-    97 => 'r',
-    98 => '',
-    99 => '峹',
-    100 => 'Ss峹',
-    101 => 'Aƥ',
-    102 => 'ƥ',
-    103 => 'Ʈwƥ',
-    104 => '',
-    105 => 'HΤ',
-    106 => '[',
-    107 => 'GL ',
-    108 => 'MwĶJs',
-    109 => 'iݥ',
-    110 => 'iݵn嵹޲z',
-    111 => 'PDF ',
-    112 => 'nOΤ',
-    113 => 'ϥλ',
-    114 => 'TRACKBACKS',
-    115 => 'No new trackback comments',
-    116 => 'Trackback',
-    117 => 'Directory',
-    118 => 'Please continue reading on the next page:',
-    119 => "Lost your <a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">password</a>?",
-    120 => 'Permanent link to this comment',
-    121 => 'Comments (%d)',
-    122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'ƥ',
-    2 => 'pASƥC',
-    3 => '',
-    4 => 'a',
-    5 => '',
-    6 => 'sWƥ',
-    7 => 'YNoͪ',
-    8 => 'bNoƥ[iA䤧AAiI "ڪ" [',
-    9 => '[iڪ',
-    10 => 'qڪ䤤h',
-    11 => "oƥ[i {$_USER['username']} ",
-    12 => 'ƥ',
-    13 => '}l',
-    14 => '',
-    15 => '^'
-);
-
-###############################################################################
-# comment.php
-
-$LANG03 = array(
-    1 => 'o',
-    2 => 'o覡',
-    3 => 'hX',
-    4 => 'sWb',
-    5 => 'ΤW',
-    6 => 'ݭnnJ~ioסAеnJCpGASbAШϥΤUnOC',
-    7 => 'A̫o׬Ob ',
-    8 => " eCwܤ {$_CONF['commentspeedlimit']} ~iAo",
-    9 => '',
-    10 => 'eXi',
-    11 => 'o',
-    12 => 'жgD`',
-    13 => 'ѧAѦ',
-    14 => 'w',
-    15 => 'iogݵn',
-    16 => 'D',
-    17 => '~',
-    18 => 'nF',
-    19 => 'оqnDC',
-    20 => 'ɥi^_OHסAӤO}sסC',
-    21 => 'קKơAoפeХŪOHҼgC',
-    22 => 'оq²䪺DC',
-    23 => 'ڭ̤|}Aqla}C',
-    24 => 'ΦWΤ',
-    25 => 'A֩wQniݵn嵹޲z_?',
-    26 => '%s iHUݵn:',
-    27 => 'ݥγi'
-);
-
-###############################################################################
-# users.php
-
-$LANG04 = array(
-    1 => 'Τᷧp',
-    2 => 'ΤW',
-    3 => 'W',
-    4 => 'KX',
-    5 => 'qll',
-    6 => '',
-    7 => 'p',
-    8 => 'PGP _',
-    9 => 'Os]w',
-    10 => 'Τ᪺̫Qӵ',
-    11 => 'S',
-    12 => 'Τ]w',
-    13 => 'C]qlK',
-    14 => 'oOHKXAо֧CnKXХnJtΡAMIbTC',
-    15 => "Ab {$_CONF['site_name']} bwإߤFCШϥΥHUTnJtΨëOdol@ѦҡC",
-    16 => 'AbT',
-    17 => 'bäsb',
-    18 => 'AѪO@ӦĪql',
-    19 => 'ΤWιqlwgsb',
-    20 => 'ѪO@ӦĪql',
-    21 => '~',
-    22 => "nO {$_CONF['site_name']} I",
-    23 => "b {$_CONF['site_name']} nOΤiɦ|nBCL̥iHΦۤvWroשMs귽CЪ`N<b><i>|</i></b>}Τ᪺qlC",
-    24 => 'AKXNQeAJqlHc',
-    25 => 'ѰOFAKXܡH',
-    26 => 'ЧAJΤWMIqlKXAڭ̷|oe@ӷsKXAqlHcC',
-    27 => '{bNnOI',
-    28 => 'qlKX',
-    29 => 'hX',
-    30 => 'nJ',
-    31 => 'ݭnnJ~i',
-    32 => 'pW',
-    33 => '|}',
-    34 => 'oOAuW',
-    35 => 'nܽпJKX',
-    36 => '}lO http://',
-    37 => 'N|[bAoפW',
-    38 => 'A²',
-    39 => 'A@ PGP _',
-    40 => 'SDDϥ',
-    41 => '@ND',
-    42 => '榡',
-    43 => '峹',
-    44 => 'Sե',
-    45 => 'ܳ]w',
-    46 => ']A',
-    47 => 'stm',
-    48 => 'DD',
-    49 => '峹بSϹ',
-    50 => 'n_pGAP',
-    51 => 'uOs峹',
-    52 => 'w]ȬO',
-    53 => 'C߱骺峹',
-    54 => '_pGAݳoǥDDΧ@̡C',
-    55 => 'pGASܡAoNAnιw]եCpGAܤAҦw]cNQCw]F|βʵܡC',
-    56 => '@',
-    57 => 'ܤ覡',
-    58 => 'ƧǤ覡',
-    59 => '׭()',
-    60 => 'iܧA׶ܡH',
-    61 => '̷sγªH',
-    62 => 'w]O100',
-    63 => 'KXwQoeAA|ܧ֦쪺C',
-    64 => '׳]w',
-    65 => 'йզAnJ',
-    66 => "AiॴFAйզAnJCAO_<a href=\"{$_CONF['site_url']}/users.php?mode=new\">sΤ</a>H",
-    67 => '',
-    68 => 'Oڬ',
-    69 => 'bnJHAڭӰOAh[H',
-    70 => "w {$_CONF['site_name']} GMe",
-    71 => "@ {$_CONF['site_name']} DnSIOAiHwۤvGMeAOAO|C<a href=\"{$_CONF['site_url']}/users.php?mode=new\">bnO</a>CpGAwgOnOAШϥΥ䪺ϰnJC",
-    72 => 'D',
-    73 => 'y',
-    74 => 'ܥ~',
-    75 => 'DDwql',
-    76 => 'ХuܧAP쪺DDA]ҦsiK峹N|qlAHcC',
-    77 => 'ۤ',
-    78 => 'AۤvϤ',
-    79 => 'nRϤAboإ_',
-    80 => 'nJ',
-    81 => 'oeqll',
-    82 => 'Τ̪oQӤ峹',
-    83 => 'Τoέp',
-    84 => '峹`ơJ',
-    85 => '`ơJ',
-    86 => 'MҦoL峹J',
-    87 => 'AnJW',
-    88 => "H(]\OA)nFsKX \"%s\"  {$_CONF['site_name']}, <{$_CONF['site_url']}>.\n\nYAuno˧@, ЧAIHUp:\n\n",
-    89 => "AYQno˧@, ЩoTCoƴNN|Q߱AӧAKXNO즳.\n\n",
-    90 => 'AibUJ@ӷsKXCЪ`NA±KXMĪANC',
-    91 => ']wsKX',
-    92 => 'JsKX',
-    93 => 'Ab %d enF@ӷsKX. Ww̤֭n %d H~iAnDsKXC',
-    94 => 'NΤ \'%s\' R',
-    95 => 'ڤU \'RΤ\' KNAbڭ̸ƮwتΤCЪ`NAAHΤҵnL峹Mפ|RAiO|HLW@̪ܡC',
-    96 => 'RΤ',
-    97 => 'TwΤR',
-    98 => 'A֩wnRAΤ? ANbϥΦ,DAs]wsΤ. YA֩wܽЦAڤU RΤᡨ.',
-    99 => 'pﶵ',
-    100 => '޲zӫH',
-    101 => '\޲zӫH',
-    102 => 'ΤӫH',
-    103 => '\LΤӫH',
-    104 => 'pp',
-    105 => 'b֦bp',
-    106 => 'm',
-    107 => 'ܦbA}²',
-    108 => 'Confirm new password',
-    109 => 'Enter the New password again here',
-    110 => 'Current Password',
-    111 => 'Please enter your Current password',
-    112 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
-    113 => 'Login Attempt Failed',
-    114 => 'Account Disabled',
-    115 => 'Your account has been disabled, you may not login. Please contact an Administrator.',
-    116 => 'Account Awaiting Activation',
-    117 => 'Your account is currently awaiting activation by an administrator. You will not be able to login until your account has been approved.',
-    118 => "Your {$_CONF['site_name']} account has now been activated by an administrator. You may now login to the site at the url below using your username (<username>) and password as previously emailed to you.",
-    119 => 'If you have forgotten your password, you may request a new one at this url:',
-    120 => 'Account Activated',
-    121 => 'Service',
-    122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
-);
-
-###############################################################################
-# index.php
-
-$LANG05 = array(
-    1 => 'SsDi',
-    2 => 'Ss峹iܡC',
-    3 => 'o]\OuSsDDάOA %s ]woӹLʡC',
-    4 => 'Y',
-    5 => 'U',
-    6 => 'W',
-    7 => 'Ĥ@',
-    8 => '̲'
-);
-
-###############################################################################
-# profiles.php
-
-$LANG08 = array(
-    1 => 'oeqllɵoͿ~CЦAաC',
-    2 => 'qlweXC',
-    3 => 'нTwAb^_榳@ӥiΪqll}C',
-    4 => 'жgAWrB^_BDDMe',
-    5 => '~GSoΤC',
-    6 => 'oͿ~C',
-    7 => 'Τ',
-    8 => 'ΤW',
-    9 => 'ΤW URL',
-    10 => 'oel',
-    11 => 'AWrG',
-    12 => '^_G',
-    13 => 'DDG',
-    14 => 'eG',
-    15 => 'HTML |Q½ĶC',
-    16 => 'oel',
-    17 => '峹qlB',
-    18 => 'HWr',
-    19 => 'Hql',
-    20 => 'HHWr',
-    21 => 'HHql',
-    22 => 'Ҧ泣ng',
-    23 => "oqllO %s (%s) HAAL{A]\ogb {$_CONF['site_url']} 峹PCoOUl(SPAM)AAql}]|QC",
-    24 => 'oӤ峹צb',
-    25 => 'Uڭ̨tγQݥΡAAnJC',
-    26 => 'oӪ椹\AeqllAܪΤᤤCжgҦC',
-    27 => 'uH',
-    28 => '%s gDG',
-    29 => "Ӧ۩ {$_CONF['site_name']} CKAG",
-    30 => ' C骺ɨƳqTAG',
-    31 => 'D',
-    32 => '',
-    33 => '㪺峹bG',
-    34 => 'ql',
-    35 => '藍_AΤᤣ@NqH.'
-);
-
-###############################################################################
-# search.php
-
-$LANG09 = array(
-    1 => 'ijM',
-    2 => 'r',
-    3 => 'DD',
-    4 => 'Ҧ',
-    5 => '',
-    6 => '峹',
-    7 => '',
-    8 => '@',
-    9 => 'Ҧ',
-    10 => 'jM',
-    11 => 'jMG',
-    12 => '۰t',
-    13 => 'jMGGS۰t',
-    14 => 'SAM䪺FJ',
-    15 => 'ЦA',
-    16 => 'DD',
-    17 => '',
-    18 => '@',
-    19 => "jM {$_CONF['site_name']} s¤峹Ʈw",
-    20 => '',
-    21 => '',
-    22 => '(榡 ~-- YYYY-MM-DD)',
-    23 => 'ļ˼',
-    24 => '',
-    25 => 'Ӭ۰tb',
-    26 => 'ӶؤA@ΤF',
-    27 => '',
-    28 => 'SAҴM䪺峹ε',
-    29 => '峹MתG',
-    30 => 'SAҴM䪺s',
-    31 => 'SAҴM䪺',
-    32 => 'ƥ',
-    33 => 'URL',
-    34 => 'aI',
-    35 => 'Ҧl',
-    36 => 'SAҴM䪺ƥ',
-    37 => 'ƥ󪺵G',
-    38 => 'sG',
-    39 => 's',
-    40 => 'ƥ',
-    41 => 'jMr̤֭nTӦrC',
-    42 => 'Шϥ YYYY-MM-DD (~--) 榡C',
-    43 => 'ӵuy',
-    44 => 'Ҧr',
-    45 => '䤤r',
-    46 => 'HU',
-    47 => 'HW',
-    48 => '@',
-    49 => '',
-    50 => 'ļ˼',
-    51 => 'p',
-    52 => 'm',
-    53 => '峹G',
-    54 => '׵G',
-    55 => 'yl',
-    56 => 'M',
-    57 => '',
-    58 => 'More results &gt;&gt;',
-    59 => 'Results',
-    60 => 'per page',
-    61 => 'Refine search'
-);
-
-###############################################################################
-# stats.php
-
-$LANG10 = array(
-    1 => 'έp',
-    2 => 'tI`',
-    3 => '峹()`',
-    4 => '벼(o벼)`',
-    5 => 's(I)`',
-    6 => 'ƥ`',
-    7 => '̦h[ݪQӤ峹',
-    8 => '峹D',
-    9 => '[',
-    10 => 'ݨӥS峹άOSH[ݹL峹C',
-    11 => '̦hתQӤ峹',
-    12 => '',
-    13 => 'ݨӥS峹άOSH׹L峹C',
-    14 => '̦hH벼Qӿ|',
-    15 => '벼D',
-    16 => '벼',
-    17 => 'ݨӥS벼άOSHLC',
-    18 => '̦hHIQӳs',
-    19 => 's',
-    20 => 'I',
-    21 => 'ݨӥSsάOSHILsC',
-    22 => '̦hHHXQӤ峹',
-    23 => 'ql',
-    24 => 'ݨӨSHHXL峹',
-    25 => 'Top Ten Trackback Commented Stories',
-    26 => 'No trackback comments found.',
-    27 => 'Number of active users',
-    28 => 'Top Ten Events',
-    29 => 'Event',
-    30 => 'Hits',
-    31 => 'It appears that there are no events on this site or no one has ever clicked on one.'
-);
-
-###############################################################################
-# article.php
-
-$LANG11 = array(
-    1 => '?O',
-    2 => 'H峹B',
-    3 => 'iL峹榡',
-    4 => '峹ﶵ',
-    5 => 'PDF 峹'
-);
-
-###############################################################################
-# submit.php
-
-$LANG12 = array(
-    1 => 'AݭnnJ~io %s ',
-    2 => 'nJ',
-    3 => 'sΤ',
-    4 => 'o@',
-    5 => 'o@ӳs',
-    6 => 'o@Ӥ峹',
-    7 => 'AݭnnJ',
-    8 => 'o',
-    9 => 'boFɽиHHUĳ...<ul><li>gҦ<li>ѧMǽTT<li>ATˬd URLs</ul>',
-    10 => 'D',
-    11 => 's',
-    12 => '}l',
-    13 => '',
-    14 => 'aI',
-    15 => 'yz',
-    16 => 'pGOLAЫw',
-    17 => 'O',
-    18 => 'L',
-    19 => 'Ūo',
-    20 => '~GʤO',
-    21 => '"L"дѤ@OW',
-    22 => '~Gʤ',
-    23 => 'жgҦ',
-    24 => 'AowQOsF',
-    25 => 'A %s wQOsF',
-    26 => 't',
-    27 => 'ΤW',
-    28 => 'DD',
-    29 => '峹',
-    30 => 'A̫oO',
-    31 => " eCwܤ {$_CONF['speedlimit']} ~iAo",
-    32 => 'w',
-    33 => '峹 w',
-    34 => 'hX',
-    35 => '\ HTML аO',
-    36 => 'oҦ',
-    37 => "[ƥ {$_CONF['site_name']} |NAƥ[D䤤ALΤiHNa⥦[iۤvӤHC<b>n</b>AӤHƥĴpͤMP~[ihC<br><br>un޲zAƥ󥦱NX{bDWC",
-    38 => '[ƥ',
-    39 => 'D',
-    40 => 'ӤH',
-    41 => 'ɶ',
-    42 => '}lɶ',
-    43 => '骺ƥ',
-    44 => 'a} 1',
-    45 => 'a} 2',
-    46 => '/',
-    47 => '{',
-    48 => 'lϸ',
-    49 => 'ƥ',
-    50 => 'sƥ',
-    51 => 'aI',
-    52 => 'R',
-    53 => 's[b'
-);
-
-###############################################################################
-# ADMIN PHRASES - These are file phrases used in admin scripts
-###############################################################################
-
-###############################################################################
-# admin/auth.inc.php
-
-$LANG20 = array(
-    1 => 'nD{',
-    2 => 'ڵITnJ',
-    3 => 'LĪKX',
-    4 => 'ΤWG',
-    5 => 'KXG',
-    6 => 'ouѱvHϥΡC<br>ҦsNQOMˬdC',
-    7 => 'nJ'
-);
-
-###############################################################################
-# admin/block.php
-
-$LANG21 = array(
-    1 => 'vO',
-    2 => 'ASvhsoӤC',
-    3 => 'եs边',
-    4 => 'Ūyɵo{~AЦbA~Oɮ error.log جݲӸ`.',
-    5 => 'եD',
-    6 => 'DD',
-    7 => 'Ҧ',
-    8 => 'w',
-    9 => 'ե󦸧',
-    10 => 'ե',
-    11 => 'Jfե',
-    12 => '`',
-    13 => 'Jfﶵ',
-    14 => 'y RDF  URL',
-    15 => '̫᪺y RDF s',
-    16 => '`ﶵ',
-    17 => '󤺮e',
-    18 => 'жg󪺼DMeC',
-    19 => 'ե޲z',
-    20 => 'եD',
-    21 => 'w',
-    22 => 'ե',
-    23 => 'ե󦸧',
-    24 => 'DD',
-    25 => 'IUեiקΧRAIWsiгy@ӷsC',
-    26 => 'ե',
-    27 => 'PHP ե',
-    28 => 'PHP ﶵ',
-    29 => '',
-    30 => 'pGAQΦۤv PHP ƤAЦbWJƪWrCʪsXAPHP ƦWH "phpblock_" @}l (e.g. phpblock_getweather)CФnŪA "()" bƫC̫AĳAҦ PHP եb /path/to/geeklog/system/lib-custom.php إHKtΤɯšC',
-    31 => 'PHP ~J %s äsbC',
-    32 => '~Jʤ줸C',
-    33 => 'bJfA URL J .rdf ɮ',
-    34 => 'b PHP AJDDM',
-    35 => 'b`AJDDMe',
-    36 => 'bAJe',
-    37 => 'A PHP ƦW',
-    38 => 'ʪsXAPHP ƦWH "phpblock_" @}l (e.g. phpblock_getweather)C',
-    39 => 'b',
-    40 => '',
-    41 => 'k',
-    42 => 'btΪw]AJDM',
-    43 => 'uiO',
-    44 => 'sQڵ',
-    45 => "Ϧs\wQOC<a href=\"{$_CONF['site_admin_url']}/block.php\">Ϧ^ե޲zޭ</a>C",
-    46 => 'sե',
-    47 => '޲z',
-    48 => 'եW',
-    49 => ' (iŹjMOߤ@)',
-    50 => 'DU URL',
-    51 => ']A http://',
-    52 => 'pGoدdաA󪺨DUɹϥܱNQ',
-    53 => 'Ϧ',
-    54 => 'Os',
-    55 => '',
-    56 => 'R',
-    57 => 'Uե',
-    58 => 'Wե',
-    59 => 'եk',
-    60 => 'ե쥪',
-    61 => 'No Title',
-    62 => 'Article Limit',
-    63 => 'Bad Block Title',
-    64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'ƥs边',
-    2 => 'Error',
-    3 => 'ƥD',
-    4 => 'ƥ URL',
-    5 => 'ƥ}l',
-    6 => 'ƥ󵲧',
-    7 => 'ƥaI',
-    8 => 'ƥyz',
-    9 => '(]A http://)',
-    10 => 'AѤɶBƥDDBPƥyzI',
-    11 => 'ƥ޲z',
-    12 => 'IUƥiקΧRAIWsƥiгy@ӷsC',
-    13 => 'ƥD',
-    14 => '}l',
-    15 => '',
-    16 => 'sQڵ',
-    17 => "Ϧs\ƥwQOC<a href=\"{$_CONF['site_admin_url']}/event.php\">Ϧ^ƥ޲zޭ</a>C",
-    18 => 'sƥ',
-    19 => '޲z',
-    20 => 'Os',
-    21 => '',
-    22 => 'R',
-    23 => '~}l.',
-    24 => '~.',
-    25 => 'b}le.'
-);
-
-###############################################################################
-# admin/story.php
-
-$LANG24 = array(
-    1 => 'Wg峹',
-    2 => 'Ug峹',
-    3 => 'Ҧ',
-    4 => 'oҦ',
-    5 => '峹s边',
-    6 => 'S峹',
-    7 => '@',
-    8 => 'Os',
-    9 => 'w',
-    10 => '',
-    11 => 'R',
-    12 => 'ID',
-    13 => 'D',
-    14 => 'DD',
-    15 => '',
-    16 => '峹²',
-    17 => '峹e',
-    18 => 'I',
-    19 => '',
-    20 => 'Ping',
-    21 => 'Send Ping',
-    22 => '峹M',
-    23 => 'IU峹siקΧRAIU峹Di[ݥAIWs峹iгy@ӷsC',
-    24 => 'A諸ΤWHHbΡCХΥt@ӥΤWC',
-    25 => 'Error when saving story',
-    26 => '峹w',
-    27 => 'If you use [unscaledX] instead of [imageX], the image will be inserted at its original dimensions.',
-    28 => '<p><b>PREVIEWING</b>: Previewing a story with images attached is best done by saving the article as a draft INSTEAD OF hitting the preview button.  Use the preview button only when images are not attached.',
-    29 => 'Trackbacks',
-    30 => 'W~',
-    31 => 'Aݭnѧ@̡BDM峹²I',
-    32 => 'Y',
-    33 => 'ui@Y峹',
-    34 => 'Z',
-    35 => 'O',
-    36 => '_',
-    37 => 'hӦ۩',
-    38 => 'ho',
-    39 => 'ql',
-    40 => 'sQڵ',
-    41 => "Ϧs\峹wQOCAiHHŪҦ[ݤU峹Cݧ<a href=\"{$_CONF['site_admin_url']}/story.php\">Ϧ^峹޲zޭ</a>C",
-    42 => "Ϧs\峹wQOC<a href=\"{$_CONF['site_admin_url']}/story.php\">Ϧ^峹޲zޭ</a>C",
-    43 => 's峹',
-    44 => '޲z',
-    45 => 'sv',
-    46 => '<b>`NJ</b>pGA令NӡAbӤeog峹N|QoCåB N۳og峹|]AbA RDF DAbjMMέp|QC',
-    47 => 'Ϲ',
-    48 => 'Ϲ',
-    49 => 'k',
-    50 => '',
-    51 => 'ХίSO榡r([imageX]B[imageX_right]  [imageX_left])ӴJϹA X OA[ϹsC`NJAuiϥΧA[Ϲ_hANLkOsA峹C<BR><P><B>w</B>J̨ιw峹kO峹OsZӤOwsCuS[Ϲɤ~ιwsC',
-    52 => 'R',
-    53 => 'SQϥΡCOseAAoӹϹ]tb峹²Τ峹eC',
-    54 => '[ϹQϥ',
-    55 => 'OsA峹ɵoͥHU~CЧ勵oǿ~AOs',
-    56 => 'ܥDDϥ',
-    57 => 'ݨSYpϹ',
-    58 => '峹޲z',
-    59 => 'ﶵ',
-    60 => 'wҰ',
-    61 => '۰ʫOs',
-    62 => '۰ʧR',
-    63 => '',
-    64 => '',
-    65 => '',
-    66 => '',
-    67 => 'Expand the Content Edit Area size',
-    68 => 'Reduce the Content Edit Area size',
-    69 => 'Publish Story Date',
-    70 => 'Toolbar Selection',
-    71 => 'Basic Toolbar',
-    72 => 'Common Toolbar',
-    73 => 'Advanced Toolbar',
-    74 => 'Advanced II Toolbar',
-    75 => 'Full Featured',
-    76 => 'Publish Options',
-    77 => 'Javascript needs to be enabled for Advanced Editor. Option can be disabled in the main site config.php',
-    78 => 'Click <a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default">here</a> to use default editor',
-    79 => 'Preview',
-    80 => 'Editor',
-    81 => 'Publish Options',
-    82 => 'Images',
-    83 => 'Archive Options',
-    84 => 'Permissions',
-    85 => 'Show All'
-);
-
-###############################################################################
-# admin/topic.php
-
-$LANG27 = array(
-    1 => 'DDs边',
-    2 => 'DDs',
-    3 => 'DDW',
-    4 => 'DDϹ',
-    5 => '(iŹj)',
-    6 => 'RDD|PɧRҦ峹MեI',
-    7 => 'AݭnѥDDsMDDWI',
-    8 => 'DD޲z',
-    9 => 'IUDDiקΧRAIWsDDiгy@ӷsCbAاANo{AsŧOC',
-    10 => 'ƧǦ',
-    11 => '峹 / ',
-    12 => 'sQڵ',
-    13 => "Ϧs\DDwQOC<a href=\"{$_CONF['site_admin_url']}/topic.php\">Ϧ^DD޲zޭ</a>.",
-    14 => 'ƧǤk',
-    15 => 'rƧ',
-    16 => 'w]O',
-    17 => 'sDD',
-    18 => '޲z',
-    19 => 'Os',
-    20 => '',
-    21 => 'R',
-    22 => 'w]',
-    23 => 'ΦDD@sZw]D',
-    24 => '(*)',
-    25 => 'OsɪD',
-    26 => 'ΦDا@Osɪq{DءCu\@DءC',
-    27 => 'Or Upload Topic Icon',
-    28 => 'Maximum',
-    29 => 'File Upload Errors'
-);
-
-###############################################################################
-# admin/user.php
-
-$LANG28 = array(
-    1 => 'Τs边',
-    2 => 'Τs',
-    3 => 'ΤW',
-    4 => 'W',
-    5 => 'KX',
-    6 => 'wŧO',
-    7 => 'qla}',
-    8 => '',
-    9 => '(iŹj)',
-    10 => 'AݭnѥΤWBWBwŧOMqla}C',
-    11 => 'Τ޲z',
-    12 => 'IUΤiקΧRAIWsΤiгy@ӷsCbU椤JΤWBql}ΥW (e.g.*son* or *.edu) Ai²檺MC',
-    13 => 'wŧO',
-    14 => 'nO',
-    15 => 'sΤ',
-    16 => '޲z',
-    17 => 'KX',
-    18 => '',
-    19 => 'R',
-    20 => 'Os',
-    21 => 'ΤWwgsb',
-    22 => '~',
-    23 => 'jqW[',
-    24 => 'jqJΤ',
-    25 => 'Ai@LJjqΤ Geeklog CJɮץO@ӥ tab jrɮסA줸ǬOJWBΤWBqla}CC@ӳQJΤN|@ӥHqlloeHKXCɮפC@O@ӥΤCSuoǭnDNyDA]\ݭnʧ@~AЦATˬdAɮסI',
-    26 => 'M',
-    27 => 'Gd',
-    28 => 'boإ_iRoiϤ',
-    29 => '|',
-    30 => 'J',
-    31 => 'sΤ',
-    32 => 'BzCJF %d ӡF%d ӥ',
-    33 => '',
-    34 => '~JAwWɮסC',
-    35 => '̫@nJ',
-    36 => '(q)',
-    37 => 'UID',
-    38 => 'Group Listing',
-    39 => 'Password (again)',
-    40 => 'Registration Date',
-    41 => 'Last login Date',
-    42 => 'Banned',
-    43 => 'Awaiting Activation',
-    44 => 'Awaiting Authorization',
-    45 => 'Active',
-    46 => 'User Status',
-    47 => 'Edit'
-);
-
-###############################################################################
-# admin/moderation.php
-
-$LANG29 = array(
-    1 => '',
-    2 => 'R',
-    3 => 's',
-    4 => '²nyz',
-    10 => 'D',
-    11 => '}l',
-    12 => 'URL',
-    13 => 'O',
-    14 => '',
-    15 => 'DD',
-    16 => 'ΤW',
-    17 => 'W',
-    18 => 'qll',
-    34 => 'ROM',
-    35 => 'w檺峹',
-    36 => 'w檺s',
-    37 => 'w檺ƥ',
-    38 => '',
-    39 => 'ɨS檺F',
-    40 => 'ӽЪΤ'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Sunday',
-    2 => 'Monday',
-    3 => 'Tuesday',
-    4 => 'Wednesday',
-    5 => 'Thursday',
-    6 => 'Friday',
-    7 => 'Saturday',
-    8 => 'sWƥ',
-    9 => 'Geeklog ƥ',
-    10 => 'ƥ',
-    11 => 'D',
-    12 => 'ڪ',
-    13 => '@',
-    14 => 'G',
-    15 => 'T',
-    16 => '|',
-    17 => '',
-    18 => '',
-    19 => 'C',
-    20 => 'K',
-    21 => 'E',
-    22 => 'Q',
-    23 => 'Q@',
-    24 => 'QG',
-    25 => '^',
-    26 => '',
-    27 => 'P',
-    28 => 'ӤHJ',
-    29 => '',
-    30 => 'Rƥ',
-    31 => 'sW',
-    32 => 'ƥ',
-    33 => 'P',
-    34 => 'ɶ',
-    35 => 'tW[',
-    36 => '',
-    37 => 'pAäѭӤHC',
-    38 => 'ӤHƥs边',
-    39 => '',
-    40 => 'P',
-    41 => ''
-);
-
-###############################################################################
-# admin/mail.php
-
-$LANG31 = array(
-    1 => "{$_CONF['site_name']} l{",
-    2 => 'HH',
-    3 => '^_',
-    4 => 'DD',
-    5 => 'e',
-    6 => 'HJ',
-    7 => 'ҦΤ',
-    8 => '޲z',
-    9 => 'ﶵ',
-    10 => 'HTML',
-    11 => 'TI',
-    12 => 'oe',
-    13 => ']',
-    14 => 'Τ]w',
-    15 => '~AoeJ',
-    16 => 'TwoeJ',
-    17 => "<a href={$_CONF['site_admin_url']}/mail.php>oeLH</a>",
-    18 => 'H',
-    19 => '`NJpGAƱoeT쥻ҦAЦbpտ줤 Logged-in Users groupC',
-    20 => "woe <successcount> ӰTA <failcount> ӤoeCoeӸ`bUCpQݲӸ`AAi<a href=\"{$_CONF['site_admin_url']}/mail.php\">oeLT</a>  <a href=\"{$_CONF['site_admin_url']}/moderation.php\">Ϧ^޲z</a>C",
-    21 => '',
-    22 => '\ ',
-    23 => '\ ',
-    24 => '',
-    25 => '-- пp --',
-    26 => 'жgҦW줸Mܤ@ӤpաC'
-);
-
-###############################################################################
-# admin/plugins.php
-
-$LANG32 = array(
-    1 => 'w˴laADtΡC ݭnSOpߡC ̦nnw˥AAѪC',
-    2 => 'wn',
-    3 => 'w˪',
-    4 => 'ɮ',
-    5 => 'M',
-    6 => 'ĵiJwgQw˹LI',
-    7 => 'AQw˪wgsbAХ⥦RAwˡC',
-    8 => '󤣯qLۮeʮC',
-    9 => 'onD@ӧs Geeklog. AiHɯŧA<a href="http://www.geeklog.net">Geeklog</a>άOt@ӾAXC',
-    10 => '<br><b>Sw˪C</b><br><br>',
-    11 => 'YQקΧRAIHU󪺦W١Co|ܴ󪺸ԲӤeMs@̪Cw˪MqNXӪ|XӡCo|ADO_ӧsCYnw˩ΤɯŴпԸߥC',
-    12 => 'plugineditor() 䤣촡W',
-    13 => 's边',
-    14 => 's',
-    15 => '޲z',
-    16 => 'Wr',
-    17 => '󪩥',
-    18 => 'Geeklog ',
-    19 => 'Ϧ',
-    20 => 'O',
-    21 => '_',
-    22 => 'w',
-    23 => 'Os',
-    24 => '',
-    25 => 'R',
-    26 => 'W',
-    27 => '󭺭',
-    28 => 'ww˪󪩥',
-    29 => 'Geeklog ',
-    30 => 'RH',
-    31 => 'A֩wnRoӴܡHo?|RҦoɡBƩMƵcCpGA֩wAЦAIU椤RsC',
-    32 => '<p><b>Error AutoLink tag not correct format</b></p>',
-    33 => 'NX',
-    34 => 's',
-    35 => 'Edit',
-    36 => 'Code',
-    37 => 'Data',
-    38 => 'Update!'
-);
-
-###############################################################################
-# admin/syndication.php
-
-$LANG33 = array(
-    1 => 'إߤy',
-    2 => 'Os',
-    3 => 'R',
-    4 => '',
-    10 => 'e}[',
-    11 => 'sy',
-    12 => '޲zB',
-    13 => 'YnקΧR@Ӥy, A@UDDWI. Ynإ߷sy, IHWsy.',
-    14 => 'D',
-    15 => '',
-    16 => 'ɮצW',
-    17 => '榡',
-    18 => '̫@s',
-    19 => 'Ұ',
-    20 => 'O',
-    21 => '_',
-    22 => '<i>(Ly)</i>',
-    23 => 'Ҧ峹',
-    24 => 'ys',
-    25 => 'yD',
-    26 => 'w',
-    27 => 'ت',
-    28 => '(0 = L, 1 = , other = w󦹦r.)',
-    29 => '',
-    30 => '̫@s',
-    31 => 'r',
-    32 => 'y',
-    33 => 'e',
-    34 => '',
-    35 => 'p',
-    36 => 'ܤy',
-    37 => 'A̤֤@ӦwˤFtXe}[.@UAݭnܧAO_nإߤ@ӥDtΤyδy.',
-    38 => '~: ʤָT',
-    39 => 'жJyD, , MɮצW.',
-    40 => 'пJؼƥةΤpɼƥ.',
-    41 => 's',
-    42 => 'ƥ',
-    43 => 'All',
-    44 => 'None',
-    45 => 'Header-link in topic',
-    46 => 'Limit Results',
-    47 => 'Search',
-    48 => 'Edit',
-    49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
-);
-
-###############################################################################
-# confirmation and error messages
-
-$MESSAGE = array(
-    1 => "ڭ̤wqlFAKXAqlHcAиHl󤤪ܡCh¨ϥ {$_CONF['site_name']}",
-    2 => "h»A峹 {$_CONF['site_name']} CungLڭ̭uֹAA峹NX{bڭ̪WC",
-    3 => "h»s {$_CONF['site_name']} CungLڭ̭uֹAAsNX{bڭ̪WC",
-    4 => "h»ƥ {$_CONF['site_name']} CungLڭ̭uֹAAƥNX{bڭ̪<a href={$_CONF['site_url']}/calendar.php></a>WC",
-    5 => 'Ab]wwQOsFC',
-    6 => 'AӤH]wwQOsFC',
-    7 => 'Aפ]wwQOsFC',
-    8 => 'AwhXC',
-    9 => 'A峹wQOsFC',
-    10 => 'A峹wQRFC',
-    11 => 'AեwQOsFC',
-    12 => 'AեwQRFC',
-    13 => 'ADDwQOsFC',
-    14 => 'ADDMҦ峹wQRFC',
-    15 => 'AswQOsFC',
-    16 => 'AswQRFC',
-    17 => 'AƥwQOsFC',
-    18 => 'AƥwQRFC',
-    19 => 'A벼wQOsFC',
-    20 => 'A벼wQRFC',
-    21 => 'ΤwQOsFC',
-    22 => 'ΤwQRFC',
-    23 => 'W[ƥAɵoͿ~Aʤ֤FƥsC',
-    24 => 'ƥwW[A䤤C',
-    25 => 'AnnJ~i}ҧAӤHC',
-    26 => 'ƥwqA䤤C',
-    27 => 'TwoeC',
-    28 => 'wQOsFC',
-    29 => 'pAäѭӤHC',
-    30 => 'sQڵ',
-    31 => 'pAAiJ峹޲zCЪ`NAϤwQOC',
-    32 => 'pAAiJDD޲zCЪ`NAϤwQOC',
-    33 => 'pAAiJե޲zCЪ`NAϤwQOC',
-    34 => 'pAAiJs޲zCЪ`NAϤwQOC',
-    35 => 'pAAiJƥ޲zCЪ`NAϤwQOC',
-    36 => 'pAAiJ벼޲zCЪ`NAϤwQOC',
-    37 => 'pAAiJΤ޲zCЪ`NAϤwQOC',
-    38 => 'pAAiJ Plug-in ޲zCЪ`NAϤwQOC',
-    39 => 'pAAiJql޲zCЪ`NAϤwQOC',
-    40 => 'tΰT',
-    41 => 'pAAiJrCЪ`NAϤwQOC',
-    42 => 'ArwQOsFC',
-    43 => 'ArwQRFC',
-    44 => 'wQwˤFC',
-    45 => 'wQRFC',
-    46 => 'pAAiJƮwƥ{CЪ`NAϤwQOC',
-    47 => 'ouAΩ *nix pGA@~tάO *nixA?AwľwQMFCpGA@~tάO WindowsAAnʴMɩRW adodb _ *.php ɮרç⥦̰hC',
-    48 => "P§AӽЦ {$_CONF['site_name']} |CungLڭ̭uֹAڭ̷|KXHAҵnOqlC",
-    49 => 'ApդwQOsFC',
-    50 => 'pդwQRFC',
-    51 => 'ΤWwHbΡCпܥt@ӡC',
-    52 => 'AqH}OġC',
-    53 => 'AsKXwQC{bHUХΧAsKXӵnJ.',
-    54 => 'AnDsKXHLCЦbUqsnDC',
-    55 => 'wgAHF@ʹqHCзӦHӳ]wsKXC',
-    56 => 'AѵqH}wOΤbϥΡC',
-    57 => 'AΤwg\aRFC',
-    58 => 'Ayw\OsF.',
-    59 => 'Ayw\RF.',
-    60 => 'wgs',
-    61 => ' %s: WTe줸',
-    62 => 'The trackback comment has been deleted.',
-    63 => 'An error occurred when deleting the trackback comment.',
-    64 => 'Your trackback comment has been successfully sent.',
-    65 => 'Weblog directory service successfully saved.',
-    66 => 'The weblog directory service has been deleted.',
-    67 => 'The new password does not match the confirmation password!',
-    68 => 'You have to enter the correct current password.',
-    69 => 'Your account has been blocked!',
-    70 => 'Your account is awaiting administrator approval.',
-    71 => 'Your account has now been confirmed and is awaiting administrator approval.',
-    72 => 'An error occured while attempting to install the plugin. See error.log for details.',
-    73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
-    74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
-);
-
-###############################################################################
-
-$LANG_ACCESS = array(
-    'access' => 's',
-    'ownerroot' => 'Ҧ/Root',
-    'group' => 'p',
-    'readonly' => 'Ū',
-    'accessrights' => 'sv',
-    'owner' => 'Ҧ',
-    'grantgrouplabel' => 'WpսsvQ',
-    'permmsg' => '`NJ|OҦUMnJΤFӰΦWOҦDUy̩ΨSnJΤC',
-    'securitygroups' => 'wp',
-    'editrootmsg' => "YϧAOΤ޲zFAs root ΤCAsҦΤᰣF root ΤCЪ`NҦϫDkas root Τ᪺ʧ@wQOCЦ^<a href=\"{$_CONF['site_admin_url']}/user.php\">Τ޲z</a>hC",
-    'securitygroupsmsg' => 'ܳoΤݩ󪺤pաC',
-    'groupeditor' => 'pսs边',
-    'description' => 'yz',
-    'name' => 'Wr',
-    'rights' => '\iv',
-    'missingfields' => 'ʤ',
-    'missingfieldsmsg' => 'AѤpժWrMyz',
-    'groupmanager' => 'pպ޲z',
-    'newgroupmsg' => 'IUpեiקΧRAIWspեiгy@ӷsCЪ`NҮ֤ߤpդQRC',
-    'groupname' => 'զW',
-    'coregroup' => '֤ߤp',
-    'yes' => 'O',
-    'no' => '_',
-    'corerightsdescr' => "oӤpժ\ivQsA]oO {$_CONF['site_name']} ֤ߤpաCHUOopժ\ivM(Ū)C",
-    'groupmsg' => 'wpզboOŨתCW[oӤpըt@էOAoӤpձNo쨺էO\ivCкɥipե[UCէOhCpGopջݭnSO\ivAAiHbHU"vQ"ϰ줤DCnpե[էOhAAuݭnbէO䪺Dﲰ_C',
-    'coregroupmsg' => "]oO {$_CONF['site_name']} ֤ߤpաAoӤpժ\ivQsCHUOopժէOM(Ū)C",
-    'rightsdescr' => 'pժ\iviHOӦ۩pեάOopթݪէOCHU\ivpS粰YNo\ivOӦ۩pթݪէOFp粰YNAiH\ivopաC',
-    'lock' => '',
-    'members' => '',
-    'anonymous' => 'ΦW',
-    'permissions' => '\iv',
-    'permissionskey' => 'R = ŪA E = sAsvYŪv',
-    'edit' => 's',
-    'none' => 'S',
-    'accessdenied' => 'sQڵ',
-    'storydenialmsg' => "]QAAiH[ݳoӤ峹CoOiO]AäO {$_CONF['site_name']} |C<a href=users.php?mode=new>|</a>C",
-    'eventdenialmsg' => "]QAAiH[ݳoӨƥCoOiO]AäO {$_CONF['site_name']} |C<a href=users.php?mode=new>|</a>C",
-    'nogroupsforcoregroup' => 'opդݩLp',
-    'grouphasnorights' => ' opըS޲zvC',
-    'newgroup' => 'sp',
-    'adminhome' => '޲z',
-    'save' => 'Os',
-    'cancel' => '',
-    'delete' => 'R',
-    'canteditroot' => ']Aݩ Root pաAҥHA Root pժקQڵFCpDлPtκ޲zpôC',
-    'listusers' => 'CXΤ',
-    'listthem' => 'CX',
-    'usersingroup' => 'ݩ "%s" pժΤ',
-    'usergroupadmin' => 'Τpպ޲z',
-    'add' => '[J',
-    'remove' => 'K',
-    'availmembers' => 'iΪ',
-    'groupmembers' => 'pզ',
-    'canteditgroup' => 'Ynק惡p, AnɳoӤpժ. YA{oO~, ЧAptκ޲z.',
-    'cantlistgroup' => 'nݦpժ|AAOpժ|CAY{oO~Aptκ޲zC',
-    'editgroupmsg' => 'To modify the group membership, click on the member names(s) and use the add or remove buttons. If the member is a member of the group, their name will appear on the right side only. Once you are complete - press <b>Save</b> to update the group and return to the main group admin page.',
-    'listgroupmsg' => 'Listing of all current members in the group: <b>%s</b>',
-    'search' => 'Search',
-    'submit' => 'Submit',
-    'limitresults' => 'Limit Results',
-    'group_id' => 'Group ID',
-    'plugin_access_denied_msg' => 'You are illegally trying access a plugin administration page.  Please note that all attempts to illegally access this page are logged.',
-    'groupexists' => 'Group name already exists',
-    'groupexistsmsg' => 'There is already a group with this name. Group names must be unique.'
-);
-
-###############################################################################
-# admin/database.php
-
-$LANG_DB_BACKUP = array(
-    'last_ten_backups' => '̫Qӳƥ',
-    'do_backup' => 'ƥ',
-    'backup_successful' => 'ƮwƥC',
-    'db_explanation' => 'ns Geeklog ƥAIHUs',
-    'not_found' => "T| mysqldump {iC<br>ˬd<strong>\$_DB_mysqldump_path</strong>wqb config.php.<br>ܼƲ{bQwqJ<var>{$_DB_mysqldump_path}</var>",
-    'zero_size' => 'ƥѡJɮ׬O 0 jp',
-    'path_not_found' => "{$_CONF['backup_path']} sbΤOؿ",
-    'no_access' => "~Jؿ {$_CONF['backup_path']} AsC",
-    'backup_file' => 'ƥɮ',
-    'size' => 'jp',
-    'bytes' => '줸',
-    'total_number' => '`ƥ: %d'
-);
-
-###############################################################################
-
-$LANG_BUTTONS = array(
-    1 => '',
-    2 => 'p',
-    3 => 'Z',
-    4 => 's',
-    5 => '벼',
-    6 => '',
-    7 => 'έp',
-    8 => 'ӤH',
-    9 => 'j',
-    10 => 'ijM',
-    11 => 'Directory'
-);
-
-###############################################################################
-# 404.php
-
-$LANG_404 = array(
-    1 => '404 ~',
-    2 => 'xAڨBݹLF䤣<b>%s</b>.',
-    3 => "<p>ܩpAAnDɤsbCˬd<a href=\"{$_CONF['site_url']}\">D</a><a href=\"{$_CONF['site_url']}/search.php\">j</a>ݬݯo{?C"
-);
-
-###############################################################################
-# login form
-
-$LANG_LOGIN = array(
-    1 => 'nDnJ',
-    2 => 'pAnDnJ~isoӰϰC',
-    3 => 'nJ',
-    4 => 'sΤ'
-);
-
-###############################################################################
-# pdfgenerator.php
-
-$LANG_PDF = array(
-    1 => 'PDF @ΤwQT',
-    2 => 'ҴѪɨSeCɤwAOLkBzCЪ֩wAҴ檺ɬO html 榡ɼg xHTML зǡCЪ`NL html ɤ]iLkTeCAɴ檺GO 0 bytes ӥBwQRCAY֩wAӶQeAAC',
-    3 => 'WPDF ɻs@~C',
-    4 => 'SѭƸƩΧAnΥHUSO PDF s@uCYA{Aұo쪺oO~C ptκ޲zCnMAAiΥHUӯSOs@ PDFC',
-    5 => 'b˸mAɡC',
-    6 => 'AɳQ˸mɽеݡC',
-    7 => 'AiΥkHUsAM \'save target...\' or \'save link location...\' ӦsAɪ@ӫC',
-    8 => 'btmɮت HTMLDocGiɮ׸|~AΦtεLk榹ɮסCYD~o͡Ap޲zC',
-    9 => 'PDF s@',
-    10 => 'oOSO PDF s@uC|N URL ഫ PDF CЪ`NAǺ|TQouBz\CoO HTMLDoc PDF s@u㪺BAӳo˪~ݭni޲zC',
-    11 => 'URL',
-    12 => 's@ PDF!',
-    13 => 'A PHP tm\ fopen() ROΦb URL WC tκ޲zק  php.ini ɮסAM]w allow_url_fopen  On',
-    14 => 'AnD PDF sbΧAbDkJ@ɮסC'
-);
-
-###############################################################################
-# trackback.php
-
-$LANG_TRB = array(
-    'trackback' => 'Trackback',
-    'from' => 'from',
-    'tracked_on' => 'Tracked on',
-    'read_more' => '[read more]',
-    'intro_text' => 'Here\'s what others have to say about \'%s\':',
-    'no_comments' => 'No trackback comments for this entry.',
-    'this_trackback_url' => 'Trackback URL for this entry:',
-    'num_comments' => '%d trackback comments',
-    'send_trackback' => 'Send Pings',
-    'preview' => 'Preview',
-    'editor_title' => 'Send trackback comment',
-    'trackback_url' => 'Trackback URL',
-    'entry_url' => 'Entry URL',
-    'entry_title' => 'Entry Title',
-    'blog_name' => 'Site Name',
-    'excerpt' => 'Excerpt',
-    'truncate_warning' => 'Note: The receiving site may truncate your excerpt',
-    'button_send' => 'Send',
-    'button_preview' => 'Preview',
-    'send_error' => 'Error',
-    'send_error_details' => 'Error when sending trackback comment:',
-    'url_missing' => 'No Entry URL',
-    'url_required' => 'Please enter at least a URL for the entry.',
-    'target_missing' => 'No Trackback URL',
-    'target_required' => 'Please enter a trackback URL',
-    'error_socket' => 'Could not open socket.',
-    'error_response' => 'Response not understood.',
-    'error_unspecified' => 'Unspecified error.',
-    'select_url' => 'Select Trackback URL',
-    'not_found' => 'Trackback URL not found',
-    'autodetect_failed' => 'Geeklog could not detect the Trackback URL for the post you want to send your comment to. Please enter it manually below.',
-    'trackback_explain' => 'From the links below, please select the URL you want to send your Trackback comment to. Geeklog will then try to determine the correct Trackback URL for that post. Or you can <a href="%s">enter it manually</a> if you know it already.',
-    'no_links_trackback' => 'No links found. You can not send a Trackback comment for this entry.',
-    'pingback' => 'Pingback',
-    'pingback_results' => 'Pingback results',
-    'send_pings' => 'Send Pings',
-    'send_pings_for' => 'Send Pings for "%s"',
-    'no_links_pingback' => 'No links found. No Pingbacks were sent for this entry.',
-    'pingback_success' => 'Pingback sent.',
-    'no_pingback_url' => 'No pingback URL found.',
-    'resend' => 'Resend',
-    'ping_all_explain' => 'You can now notify the sites you linked to (<a href="http://en.wikipedia.org/wiki/Pingback">Pingback</a>), advertise that your site has been updated by pinging weblog directory services, or send a <a href="http://en.wikipedia.org/wiki/Trackback">Trackback</a> comment in case you wrote about a post on someone else\'s site.',
-    'pingback_button' => 'Send Pingback',
-    'pingback_short' => 'Send Pingbacks to all sites linked from this entry.',
-    'pingback_disabled' => '(Pingback disabled)',
-    'ping_button' => 'Send Ping',
-    'ping_short' => 'Ping weblog directory services.',
-    'ping_disabled' => '(Ping disabled)',
-    'trackback_button' => 'Send Trackback',
-    'trackback_short' => 'Send a Trackback comment.',
-    'trackback_disabled' => '(Trackback disabled)',
-    'may_take_a_while' => 'Please note that sending Pingbacks and Pings may take a while.',
-    'ping_results' => 'Ping results',
-    'unknown_method' => 'Unknown ping method',
-    'ping_success' => 'Ping sent.',
-    'error_site_name' => 'Please enter the site\'s name.',
-    'error_site_url' => 'Please enter the site\'s URL.',
-    'error_ping_url' => 'Please enter a valid Ping URL.',
-    'no_services' => 'No weblog directory services configured.',
-    'services_headline' => 'Weblog Directory Services',
-    'service_explain' => 'To modify or delete a weblog directory service, click on the edit icon of that service below. To add a new weblog directory service, click on "Create New" above.',
-    'service' => 'Service',
-    'ping_method' => 'Ping method',
-    'service_website' => 'Website',
-    'service_ping_url' => 'URL to ping',
-    'ping_standard' => 'Standard Ping',
-    'ping_extended' => 'Extended Ping',
-    'ping_unknown' => '(unknown method)',
-    'edit_service' => 'Edit Weblog Directory Service',
-    'trackbacks' => 'Trackbacks',
-    'editor_intro' => 'Prepare your trackback comment for <a href="%s">%s</a>.',
-    'editor_intro_none' => 'Prepare your trackback comment.',
-    'trackback_note' => 'To send a trackback comment for a story, go to the list of stories and click on "Send Ping" for the story. To send a trackback that is not related to a story, <a href="%s">click here</a>.',
-    'pingback_explain' => 'Enter a URL to send the Pingback to. The pingback will point to your site\'s homepage.',
-    'pingback_url' => 'Pingback URL',
-    'site_url' => 'This site\'s URL',
-    'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
-    'pbtarget_missing' => 'No Pingback URL',
-    'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
-);
-
-###############################################################################
-# directory.php
-
-$LANG_DIR = array(
-    'title' => 'Article Directory',
-    'title_year' => 'Article Directory for %d',
-    'title_month_year' => 'Article Directory for %s %d',
-    'nav_top' => 'Back to Article Directory',
-    'no_articles' => 'No articles.'
-);
-
-###############################################################################
-# "What's New" Time Strings
-# 
-# For the first two strings, you can use the following placeholders.
-# Order them so it makes sense in your language:
-# %i    item, "Stories"
-# %n    amount, "2", "20" etc.
-# %t    time, "2" (weeks)
-# %s    scale, "hrs", "weeks"
-
-$LANG_WHATSNEW = array(
-    'new_string' => '%n new %i in the last %t %s',
-    'new_last' => 'last %t %s',
-    'minutes' => 'minutes',
-    'hours' => 'hours',
-    'days' => 'days',
-    'weeks' => 'weeks',
-    'months' => 'months',
-    'minute' => 'minute',
-    'hour' => 'hour',
-    'day' => 'day',
-    'week' => 'week',
-    'month' => 'month'
-);
-
-###############################################################################
-# Admin - Strings
-# 
-# These are some standard strings used by core functions as well as plugins to
-# display administration lists and edit pages
-
-$LANG_ADMIN = array(
-    'search' => 'Search',
-    'limit_results' => 'Limit Results',
-    'submit' => 'Submit',
-    'edit' => 'Edit',
-    'admin_home' => 'Admin Home',
-    'create_new' => 'Create New',
-    'enabled' => 'Enabled',
-    'title' => 'Title',
-    'type' => 'Type',
-    'topic' => 'Topic',
-    'help_url' => 'Help File URL',
-    'save' => 'Save',
-    'cancel' => 'Cancel',
-    'delete' => 'Delete',
-    'copy' => 'Copy',
-    'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
-);
-
-###############################################################################
-# Localisation of the texts for the various drop-down menus that are actually
-# stored in the database. If these exist, they override the texts from the
-# database.
-
-$LANG_commentcodes = array(
-    0 => 'Comments Enabled',
-    -1 => 'Comments Disabled'
-);
-
-
-$LANG_commentmodes = array(
-    'flat' => 'Flat',
-    'nested' => 'Nested',
-    'threaded' => 'Threaded',
-    'nocomment' => 'No Comments'
-);
-
-$LANG_cookiecodes = array(
-    0 => '(don\'t)',
-    3600 => '1 Hour',
-    7200 => '2 Hours',
-    10800 => '3 Hours',
-    28800 => '8 Hours',
-    86400 => '1 Day',
-    604800 => '1 Week',
-    2678400 => '1 Month'
-);
-
-$LANG_dateformats = array(
-    0 => 'System Default'
-);
-
-$LANG_featurecodes = array(
-    0 => 'Not Featured',
-    1 => 'Featured'
-);
-
-$LANG_frontpagecodes = array(
-    0 => 'Show Only in Topic',
-    1 => 'Show on Front Page'
-);
-
-$LANG_postmodes = array(
-    'plaintext' => 'Plain Old Text',
-    'html' => 'HTML Formatted'
-);
-
-$LANG_sortcodes = array(
-    'ASC' => 'Oldest First',
-    'DESC' => 'Newest First'
-);
-
-$LANG_trackbackcodes = array(
-    0 => 'Trackback Enabled',
-    -1 => 'Trackback Disabled'
-);
-
-?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/chinese_gb2312.php 1.4.1.src/cpanel-glprivate/language/chinese_gb2312.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/chinese_gb2312.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/chinese_gb2312.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,1511 +0,0 @@
-<?php
-
-###############################################################################
-# chinese_simplified_gb2312.php
-#
-# Last Modified: 2004-10-26
-# Version: 1.3.10
-#
-# This is the Chinese Simplified (GB2312) language set for GeekLog 1.3.10
-#
-# Copyright (C) 2003 Samuel M. Stone
-# sam@stonemicro.com
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-#
-###############################################################################
-
-$LANG_CHARSET = 'GB2312';
-
-###############################################################################
-# Array Format:
-# $LANGXX[YY]:  $LANG - variable name
-#               XX    - file id number
-#               YY    - phrase id number
-###############################################################################
-
-###############################################################################
-# USER PHRASES - These are file phrases used in end user scripts
-###############################################################################
-
-###############################################################################
-# lib-common.php
-
-$LANG01 = array(
-    1 => 'ߩU',
-    2 => '',
-    3 => '',
-    4 => '༭',
-    5 => 'ͶƱ',
-    6 => '',
-    7 => 'ͶƱ',
-    8 => 'ͶƱ',
-    9 => '߹ܩU',
-    10 => 'ύ',
-    11 => '',
-    12 => '',
-    13 => '',
-    14 => '',
-    15 => '¼',
-    16 => 'ͶƱ',
-    17 => 'û',
-    18 => 'SQL ',
-    19 => '˳',
-    20 => 'ûѶϢU',
-    21 => 'û',
-    22 => 'ûʶ',
-    23 => 'ȫȼ',
-    24 => '',
-    25 => 'ظ',
-    26 => 'ֻ߸˹۵㡣',
-    27 => '',
-    28 => 'ɾ',
-    29 => 'ûۡ',
-    30 => 'ɵ',
-    31 => ' HTML :',
-    32 => 'Чû',
-    33 => '󣬲дϵͳ־;',
-    34 => '',
-    35 => '˳',
-    36 => '',
-    37 => 'û',
-    38 => 'ϼ',
-    39 => 'ʹ',
-    40 => 'ķ <tt>php.ini</tt> 趨Ϊ <tt>register_globals = Off</tt>. ǴҪ <tt>register_globals</tt> 趨 <strong>on</strong>. ǰ뽫趨Ϊ<strong>on</strong>Ȼ¿.',
-    41 => '',
-    42 => ':',
-    43 => 'ظ',
-    44 => 'ĸ',
-    45 => 'MySQL ',
-    46 => 'MySQL ѶϢ',
-    47 => 'û',
-    48 => 'ʻѶϢ',
-    49 => 'ѡ',
-    50 => ' SQL statement',
-    51 => '',
-    52 => '',
-    53 => 'ҳ',
-    54 => 'ܴļ',
-    55 => '',
-    56 => 'ͶƱ',
-    57 => '',
-    58 => '',
-    59 => "ûʻ<a href=\"{$_CONF['site_url']}/users.php?mode=new\">ڴ˵Ǽ</a>",
-    60 => '',
-    61 => 'ʻ',
-    62 => '',
-    63 => '趨',
-    64 => 'µʸ',
-    65 => 'ۿӡİ汾',
-    66 => 'ҵ',
-    67 => 'ӭ',
-    68 => 'ҳ',
-    69 => '',
-    70 => 'Ѱ',
-    71 => 'Ͷ',
-    72 => '·Դ',
-    73 => 'ͶƱ',
-    74 => '',
-    75 => '',
-    76 => 'վͳ',
-    77 => '',
-    78 => '',
-    79 => 'ʵĶ',
-    80 => '(',
-    81 => 'µ(',
-    82 => ' Сʱ)',
-    83 => '',
-    84 => '',
-    85 => 'ʮСʱ',
-    86 => 'ûµ',
-    87 => '',
-    88 => 'ûµ',
-    89 => 'û·',
-    90 => 'ҳ',
-    91 => 'ҳ',
-    92 => '',
-    93 => 'Ȩ',
-    94 => 'վе̱ͰȨǸԵ.',
-    95 => '',
-    96 => 'С',
-    97 => 'ִʵ',
-    98 => '',
-    99 => '',
-    100 => 'ûµ',
-    101 => '¼',
-    102 => 'վ¼',
-    103 => 'Ͽⱸ',
-    104 => '',
-    105 => 'ĸû',
-    106 => 'ۿ',
-    107 => 'GL 汾',
-    108 => '',
-    109 => '',
-    110 => 'ĵĸվԱ',
-    111 => 'PDF 汾',
-    112 => 'Ǽû',
-    113 => 'ʹ˵',
-    114 => 'TRACKBACKS',
-    115 => 'No new trackback comments',
-    116 => 'Trackback',
-    117 => 'Directory',
-    118 => 'Please continue reading on the next page:',
-    119 => "Lost your <a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">password</a>?",
-    120 => 'Permanent link to this comment',
-    121 => 'Comments (%d)',
-    122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => '¼',
-    2 => 'Ǹû¼',
-    3 => 'ʱ',
-    4 => '',
-    5 => '',
-    6 => '¼',
-    7 => '',
-    8 => 'ڽ¼ӽ֮ᣬɵ "ҵ" ۿ',
-    9 => 'ӽҵ',
-    10 => 'ҵȥ',
-    11 => "¼ӽ {$_USER['username']} ",
-    12 => '¼',
-    13 => 'ʼ',
-    14 => '',
-    15 => 'ص'
-);
-
-###############################################################################
-# comment.php
-
-$LANG03 = array(
-    1 => '',
-    2 => 'ʽ',
-    3 => '˳',
-    4 => 'ʻ',
-    5 => 'û',
-    6 => 'վҪſɷۣ롣ûʻʹıǼǡ',
-    7 => 'ᷢ ',
-    8 => " ֮ǰվ޶ {$_CONF['commentspeedlimit']} ſٷ",
-    9 => '',
-    10 => 'ͳ',
-    11 => '',
-    12 => 'дע',
-    13 => 'ο',
-    14 => 'Ԥ',
-    15 => 'ƪĵ',
-    16 => '',
-    17 => '',
-    18 => 'ҪĶ',
-    19 => '뾡Ҫ⡣',
-    20 => 'ܻظ˵ۣǿµۡ',
-    21 => 'Ϊظ֮ǰȶдġ',
-    22 => '뾡üı⡣',
-    23 => 'ǲṫĵʵַ',
-    24 => 'û',
-    25 => '϶ҪĵĸվԱ?',
-    26 => '%s ĵǵ:',
-    27 => 'ñ'
-);
-
-###############################################################################
-# users.php
-
-$LANG04 = array(
-    1 => 'ûſ',
-    2 => 'û',
-    3 => 'ȫ',
-    4 => '',
-    5 => 'ʼ',
-    6 => 'ҳ',
-    7 => 'С',
-    8 => 'PGP Կ',
-    9 => '趨',
-    10 => 'ûʮ',
-    11 => 'û',
-    12 => 'û趨',
-    13 => 'ÿҹժ',
-    14 => 'Ǹ룬뾡ġҪȵϵͳȻʻѶϢ',
-    15 => " {$_CONF['site_name']} ʻѽˡʹѶϢϵͳʼο",
-    16 => 'ʻѶϢ',
-    17 => 'ʻ',
-    18 => 'ṩĲһЧĵĵ',
-    19 => 'ûѾ',
-    20 => 'ṩĲһЧĵĵ',
-    21 => '',
-    22 => "Ǽ {$_CONF['site_name']} ",
-    23 => " {$_CONF['site_name']} ǼǵûеĻԱôǿԼַۺʹȡվԴעⱾվ<b><i></i></b>ûĵʡ",
-    24 => '뽫͵ĵ',
-    25 => '',
-    26 => 'û͵룬ǻᷢһµ뵽ĵ䡣',
-    27 => 'ھ͵Ǽǣ',
-    28 => '',
-    29 => '˳ʱ',
-    30 => 'ʱ',
-    31 => 'Ҫſ',
-    32 => '',
-    33 => 'ṫ',
-    34 => '',
-    35 => 'Ҫı',
-    36 => 'ʼ http://',
-    37 => 'ḽ㷢',
-    38 => 'ļ',
-    39 => 'Ĺ PGP Կ',
-    40 => 'ûͼʾ',
-    41 => 'Ը',
-    42 => 'ڸʽ',
-    43 => '޶',
-    44 => 'û',
-    45 => 'ʾ趨',
-    46 => '',
-    47 => 'Ϊ',
-    48 => '',
-    49 => 'ûͼ',
-    50 => 'Ҫ㲻Ȥ',
-    51 => 'ֻ',
-    52 => 'Ԥֵ',
-    53 => 'ÿյյ',
-    54 => '㲻Щߡ',
-    55 => 'ûѡζҪԤѡԤ佫ԡԤĶôֱʻʾ',
-    56 => '',
-    57 => 'ʾʽ',
-    58 => 'ʽ',
-    59 => '()',
-    60 => 'ʾ',
-    61 => '»ɵȣ',
-    62 => 'Ԥ100',
-    63 => 'ѱͣܿյġ',
-    64 => '趨',
-    65 => '볢ٵ',
-    66 => "ܴˣ볢ٵ롣Ƿ<a href=\"{$_CONF['site_url']}/users.php?mode=new\">û</a>",
-    67 => 'Ա',
-    68 => 'סΪ',
-    69 => 'ڵᣬӦüסã',
-    70 => " {$_CONF['site_name']} Ĳֺ",
-    71 => "һ {$_CONF['site_name']} ҪصԶԼĲֺݣǱվĻԱ<a href=\"{$_CONF['site_url']}/users.php?mode=new\">ڴ˵Ǽ</a>ѾǵǼǣʹߵ롣",
-    72 => '',
-    73 => '',
-    74 => 'ı䱾վ',
-    75 => 'ѵʸ',
-    76 => 'ֻѡȤ⣬Ϊе½ʵ䡣',
-    77 => 'Ƭ',
-    78 => 'ԼͼƬ',
-    79 => 'ҪɾͼƬ',
-    80 => '',
-    81 => '͵ʼ',
-    82 => 'ûʮΪ',
-    83 => 'ûͳ',
-    84 => 'U',
-    85 => 'U',
-    86 => 'Ѱз©U',
-    87 => 'ĵ',
-    88 => "(Ҳ)Ҫ \"%s\"  {$_CONF['site_name']}, <{$_CONF['site_url']}>.\n\nҪ, :\n\n",
-    89 => "Ҫ, Ϣ¾ͽᱻͱԭ.\n\n",
-    90 => 'һµ롣עľȻЧֱ㽫˱ύ',
-    91 => '趨',
-    92 => '',
-    93 => ' %d ǰҪһ. վ涨Ҫ %d ԺſٴҪ롣',
-    94 => 'û \'%s\' ɾ',
-    95 => ' \'ɾû\' 㽫Ͽûע⣬ûعº۲ɾǻߵʾ',
-    96 => 'ɾû',
-    97 => 'ȷûɾ',
-    98 => '϶Ҫɾû? Ͳʹôվ,趨û. ϶Ļٴε ɾû.',
-    99 => '˽ѡ',
-    100 => 'Ա',
-    101 => '׼Ա',
-    102 => 'û',
-    103 => '׼û',
-    104 => 'ʾ״',
-    105 => 'ڡ˭ʾ',
-    106 => 'λ',
-    107 => 'ʾĹ',
-    108 => 'Confirm new password',
-    109 => 'Enter the New password again here',
-    110 => 'Current Password',
-    111 => 'Please enter your Current password',
-    112 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
-    113 => 'Login Attempt Failed',
-    114 => 'Account Disabled',
-    115 => 'Your account has been disabled, you may not login. Please contact an Administrator.',
-    116 => 'Account Awaiting Activation',
-    117 => 'Your account is currently awaiting activation by an administrator. You will not be able to login until your account has been approved.',
-    118 => "Your {$_CONF['site_name']} account has now been activated by an administrator. You may now login to the site at the url below using your username (<username>) and password as previously emailed to you.",
-    119 => 'If you have forgotten your password, you may request a new one at this url:',
-    120 => 'Account Activated',
-    121 => 'Service',
-    122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
-);
-
-###############################################################################
-# index.php
-
-$LANG05 = array(
-    1 => 'ûſʾ',
-    2 => 'û¿ʾ',
-    3 => 'Ҳû %s 趨̫ԡ',
-    4 => 'ͷ',
-    5 => 'ҳ',
-    6 => 'ҳ',
-    7 => 'һ',
-    8 => ''
-);
-
-###############################################################################
-# profiles.php
-
-$LANG08 = array(
-    1 => '͵ʼʱٳԡ',
-    2 => 'ͳ',
-    3 => 'ȷڻظһõĵʼַ',
-    4 => 'д֡ظ',
-    5 => 'ûû',
-    6 => '',
-    7 => 'û',
-    8 => 'û',
-    9 => 'û URL',
-    10 => 'ʼ',
-    11 => '֣',
-    12 => 'ظ',
-    13 => '⣺',
-    14 => 'ݣ',
-    15 => 'HTML ᱻ롣',
-    16 => 'ʼ',
-    17 => 'µʸ',
-    18 => 'ռ',
-    19 => 'ռ˵',
-    20 => 'ļ',
-    21 => 'ļ˵',
-    22 => 'Ҫд',
-    23 => "ʼ %s (%s) ĸģΪҲƪ {$_CONF['site_url']} ¸Ȥⲻʼ(SPAM)ĵʵַҲᱻ¼",
-    24 => 'µ',
-    25 => 'ΪǷֹϵͳã롣',
-    26 => '͵ʼѡûСдеλ',
-    27 => '',
-    28 => '%s д',
-    29 => " {$_CONF['site_name']} ÿժ裺",
-    30 => ' ÿյʱͨѶ裺',
-    31 => '',
-    32 => '',
-    33 => 'ڣ',
-    34 => 'ʽ',
-    35 => 'Բ𣬴ûԸյ.'
-);
-
-###############################################################################
-# search.php
-
-$LANG09 = array(
-    1 => 'Ѱ',
-    2 => 'ؼ',
-    3 => '',
-    4 => '',
-    5 => '',
-    6 => '',
-    7 => '',
-    8 => '',
-    9 => '',
-    10 => 'Ѱ',
-    11 => 'Ѱ',
-    12 => '',
-    13 => 'Ѱû',
-    14 => 'ûѰҵĶU',
-    15 => 'ٳ',
-    16 => '',
-    17 => '',
-    18 => '',
-    19 => "Ѱ {$_CONF['site_name']} ¾Ͽ",
-    20 => '',
-    21 => '',
-    22 => '(ڸʽ -- YYYY-MM-DD)',
-    23 => '',
-    24 => 'ҵ',
-    25 => '',
-    26 => 'ĿУ',
-    27 => '',
-    28 => 'ûѰҵ»',
-    29 => 'º۵Ľ',
-    30 => 'ûѰҵ',
-    31 => 'ûѰҵĲ',
-    32 => '¼',
-    33 => 'URL',
-    34 => 'ص',
-    35 => '',
-    36 => 'ûѰҵ¼',
-    37 => '¼Ľ',
-    38 => 'Ľ',
-    39 => '',
-    40 => '¼',
-    41 => 'ѰĹؼҪ֡',
-    42 => 'ʹ YYYY-MM-DD (--) ڸʽ',
-    43 => '',
-    44 => 'ִ',
-    45 => 'κִ',
-    46 => '',
-    47 => '',
-    48 => '',
-    49 => '',
-    50 => '',
-    51 => '',
-    52 => 'λ',
-    53 => '½',
-    54 => '۽',
-    55 => '',
-    56 => '',
-    57 => '',
-    58 => 'More results &gt;&gt;',
-    59 => 'Results',
-    60 => 'per page',
-    61 => 'Refine search'
-);
-
-###############################################################################
-# stats.php
-
-$LANG10 = array(
-    1 => 'վͳ',
-    2 => 'ϵͳ',
-    3 => '()',
-    4 => 'ͶƱ(ͶƱ)',
-    5 => '()',
-    6 => '¼',
-    7 => 'ۿʮ',
-    8 => '±',
-    9 => 'ۿ',
-    10 => 'վû»û˹ۿվ¡',
-    11 => '۵ʮ',
-    12 => '',
-    13 => 'վû»û۹վ¡',
-    14 => 'ͶƱʮѡ',
-    15 => 'ͶƱ',
-    16 => 'ͶƱ',
-    17 => 'վûͶƱûͶƱ',
-    18 => '˵ʮ',
-    19 => '',
-    20 => '',
-    21 => 'վûû˵վᡣ',
-    22 => '˼ĳʮ',
-    23 => '',
-    24 => 'û˼ĳվ',
-    25 => 'Top Ten Trackback Commented Stories',
-    26 => 'No trackback comments found.',
-    27 => 'Number of active users',
-    28 => 'Top Ten Events',
-    29 => 'Event',
-    30 => 'Hits',
-    31 => 'It appears that there are no events on this site or no one has ever clicked on one.'
-);
-
-###############################################################################
-# article.php
-
-$LANG11 = array(
-    1 => 'ʲص',
-    2 => '¸',
-    3 => 'ӡ¸ʽ',
-    4 => 'ѡ',
-    5 => 'PDF °汾'
-);
-
-###############################################################################
-# submit.php
-
-$LANG12 = array(
-    1 => 'Ҫſɷ %s ',
-    2 => '',
-    3 => 'û',
-    4 => 'һ',
-    5 => 'һ',
-    6 => 'һ',
-    7 => 'Ҫ',
-    8 => '',
-    9 => 'ڱվʱ½...<ul><li>де<li>ṩȫ׼ȷѶϢ<li>Щ URLs</ul>',
-    10 => '',
-    11 => '',
-    12 => 'ʼ',
-    13 => '',
-    14 => 'ص',
-    15 => '',
-    16 => 'ָ',
-    17 => '',
-    18 => '',
-    19 => '',
-    20 => 'ȱ',
-    21 => 'ѡ""ṩһ',
-    22 => 'ȱλ',
-    23 => 'деλ',
-    24 => '㷢ѱ',
-    25 => ' %s ѱ',
-    26 => '',
-    27 => 'û',
-    28 => '',
-    29 => '',
-    30 => 'ᷢ',
-    31 => " ֮ǰվ޶ {$_CONF['speedlimit']} ſٷ",
-    32 => 'Ԥ',
-    33 => ' Ԥ',
-    34 => '˳',
-    35 => '׼ HTML ',
-    36 => 'ģʽ',
-    37 => "¼ {$_CONF['site_name']} Ὣ¼ӵУûذӽԼĸ<b>Ҫ</b>ĸ¼Ʃպӽȥ<br><br>ֻҪԱ׼¼ϡ",
-    38 => '¼',
-    39 => '',
-    40 => '',
-    41 => 'ʱ',
-    42 => 'ʼʱ',
-    43 => 'յ¼',
-    44 => 'ַ 1',
-    45 => 'ַ 2',
-    46 => '/',
-    47 => '',
-    48 => '',
-    49 => '¼',
-    50 => '༭¼',
-    51 => 'ص',
-    52 => 'ɾ',
-    53 => '¼ʻ'
-);
-
-###############################################################################
-# ADMIN PHRASES - These are file phrases used in admin scripts
-###############################################################################
-
-###############################################################################
-# admin/auth.inc.php
-
-$LANG20 = array(
-    1 => 'Ҫ֤',
-    2 => 'ܾȷĵ',
-    3 => 'Ч',
-    4 => 'û',
-    5 => '룺',
-    6 => 'ҳֻȨԱʹá<br>дȡ¼ͼ顣',
-    7 => ''
-);
-
-###############################################################################
-# admin/block.php
-
-$LANG21 = array(
-    1 => 'Ȩ',
-    2 => 'ûȨȥ༭',
-    3 => '༭',
-    4 => 'ȡʱִĴ¼ error.log ￴ϸ.',
-    5 => '',
-    6 => '',
-    7 => '',
-    8 => 'ȫˮƽ',
-    9 => '',
-    10 => '',
-    11 => '',
-    12 => '',
-    13 => 'ѡ',
-    14 => ' RDF  URL',
-    15 => ' RDF ',
-    16 => 'ѡ',
-    17 => '',
-    18 => 'дıݡ',
-    19 => 'Ա',
-    20 => '',
-    21 => 'ȫˮƽ',
-    22 => '',
-    23 => '',
-    24 => '',
-    25 => '޸Ļɾɴһµġ',
-    26 => '',
-    27 => 'PHP ',
-    28 => 'PHP ѡ',
-    29 => '',
-    30 => 'Լ PHP 뺯֡ΪִֹԵı룬PHP  "phpblock_" ʼ (e.g. phpblock_getweather)벻ҪѿյԲ "()" ںᡣᣬе PHP  /path/to/geeklog/system/lib-custom.php Էϵͳ',
-    31 => 'PHP U %s ڡ',
-    32 => 'Uȱλ',
-    33 => ' URL 뵽 .rdf ',
-    34 => ' PHP ͺ',
-    35 => '',
-    36 => 'ڰ',
-    37 => 'ʵ PHP ',
-    38 => 'ΪִֹԵı룬PHP  "phpblock_" ʼ (e.g. phpblock_getweather)',
-    39 => 'Ǳ',
-    40 => '',
-    41 => '',
-    42 => 'ڱϵͳԤʹ',
-    43 => 'ֻҳ',
-    44 => 'ȡܾ',
-    45 => "ͼȡѱ¼<a href=\"{$_CONF['site_admin_url']}/block.php\">Ա</a>",
-    46 => '',
-    47 => 'Աҳ',
-    48 => '',
-    49 => ' (пոͱΨһ)',
-    50 => 'ļ URL',
-    51 => ' http://',
-    52 => 'ףļͼʾʾ',
-    53 => 'ʹЧ',
-    54 => '',
-    55 => 'ȡ',
-    56 => 'ɾ',
-    57 => '',
-    58 => '',
-    59 => 'ұ',
-    60 => '',
-    61 => 'No Title',
-    62 => 'Article Limit',
-    63 => 'Bad Block Title',
-    64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => '¼༭',
-    2 => 'Error',
-    3 => '¼',
-    4 => '¼ URL',
-    5 => '¼ʼ',
-    6 => '¼',
-    7 => '¼ص',
-    8 => '¼',
-    9 => '( http://)',
-    10 => 'ṩʱ䡢¼⡢¼',
-    11 => '¼Ա',
-    12 => '¼޸Ļɾ¼ɴһµġ',
-    13 => '¼',
-    14 => 'ʼ',
-    15 => '',
-    16 => 'ȡܾ',
-    17 => "ͼȡ¼ѱ¼<a href=\"{$_CONF['site_admin_url']}/event.php\">¼Ա</a>",
-    18 => '¼',
-    19 => 'Աҳ',
-    20 => '',
-    21 => 'ȡ',
-    22 => 'ɾ',
-    23 => 'Ŀʼ.',
-    24 => 'Ľ.',
-    25 => 'ڿʼǰ.'
-);
-
-###############################################################################
-# admin/story.php
-
-$LANG24 = array(
-    1 => 'ƪ',
-    2 => 'ƪ',
-    3 => 'ģʽ',
-    4 => 'ģʽ',
-    5 => '±༭',
-    6 => 'û',
-    7 => '',
-    8 => '',
-    9 => 'Ԥ',
-    10 => 'ȡ',
-    11 => 'ɾ',
-    12 => 'ID',
-    13 => '',
-    14 => '',
-    15 => '',
-    16 => '¼',
-    17 => '',
-    18 => '',
-    19 => '',
-    20 => 'Ping',
-    21 => 'Send Ping',
-    22 => '嵥',
-    23 => '±ſ޸Ļɾ±ɹۿ¿ɴһµġ',
-    24 => 'ѡûáһû',
-    25 => 'Error when saving story',
-    26 => 'Ԥ',
-    27 => 'If you use [unscaledX] instead of [imageX], the image will be inserted at its original dimensions.',
-    28 => '<p><b>PREVIEWING</b>: Previewing a story with images attached is best done by saving the article as a draft INSTEAD OF hitting the preview button.  Use the preview button only when images are not attached.',
-    29 => 'Trackbacks',
-    30 => 'ش',
-    31 => 'Ҫṩߡ¼飡',
-    32 => 'ͷ',
-    33 => 'ֻһͷ',
-    34 => 'ݸ',
-    35 => '',
-    36 => '',
-    37 => '',
-    38 => '෢',
-    39 => '',
-    40 => 'ȡܾ',
-    41 => "ͼȡѱ¼Ψģʽۿ¡<a href=\"{$_CONF['site_admin_url']}/story.php\">¹Ա</a>",
-    42 => "ͼȡѱ¼<a href=\"{$_CONF['site_admin_url']}/story.php\">¹Ա</a>",
-    43 => '',
-    44 => 'Աҳ',
-    45 => 'ȡȨ',
-    46 => '<b>עU</b>ڸĳɽǸǰƪ½ᱻ ζƪ² RDF ڣѰͳҳлᱻԡ',
-    47 => 'ͼ',
-    48 => 'ͼ',
-    49 => '',
-    50 => '',
-    51 => 'رʽ([imageX][imageX_right]  [imageX_left])ͼ X 㸽ͼıšעUֻʹ㸽ӵͼ㽫޷¡<BR><P><B>Ԥ</B>UԤµķǰ±ɲݸֱԤťֻûиͼʱԤť',
-    52 => 'ɾ',
-    53 => 'ûбʹáǰͼ¼С',
-    54 => 'ͼδʹ',
-    55 => 'ʱ´Щٱ',
-    56 => 'ʾͼʾ',
-    57 => 'ûζСͼ',
-    58 => '¹',
-    59 => 'ѡ',
-    60 => '',
-    61 => 'Զ',
-    62 => 'Զɾ',
-    63 => '',
-    64 => '',
-    65 => '',
-    66 => '',
-    67 => 'Expand the Content Edit Area size',
-    68 => 'Reduce the Content Edit Area size',
-    69 => 'Publish Story Date',
-    70 => 'Toolbar Selection',
-    71 => 'Basic Toolbar',
-    72 => 'Common Toolbar',
-    73 => 'Advanced Toolbar',
-    74 => 'Advanced II Toolbar',
-    75 => 'Full Featured',
-    76 => 'Publish Options',
-    77 => 'Javascript needs to be enabled for Advanced Editor. Option can be disabled in the main site config.php',
-    78 => 'Click <a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default">here</a> to use default editor',
-    79 => 'Preview',
-    80 => 'Editor',
-    81 => 'Publish Options',
-    82 => 'Images',
-    83 => 'Archive Options',
-    84 => 'Permissions',
-    85 => 'Show All'
-);
-
-###############################################################################
-# admin/topic.php
-
-$LANG27 = array(
-    1 => '༭',
-    2 => '',
-    3 => '',
-    4 => 'ͼ',
-    5 => '(пո)',
-    6 => 'ɾͬʱɾйصº',
-    7 => 'Ҫṩź',
-    8 => 'Ա',
-    9 => '޸Ļɾɴһµġ㽫Ĵȡ',
-    10 => '',
-    11 => ' / ҳ',
-    12 => 'ȡܾ',
-    13 => "ͼȡѱ¼<a href=\"{$_CONF['site_admin_url']}/topic.php\">Ա</a>.",
-    14 => '򷽷',
-    15 => 'ĸ',
-    16 => 'Ԥ',
-    17 => '',
-    18 => 'Աҳ',
-    19 => '',
-    20 => 'ȡ',
-    21 => 'ɾ',
-    22 => 'Ԥ',
-    23 => 'ôΪ¸Ԥ',
-    24 => '(*)',
-    25 => 'ļĿ',
-    26 => 'ôĿļĬĿֻ׼һĿ',
-    27 => 'Or Upload Topic Icon',
-    28 => 'Maximum',
-    29 => 'File Upload Errors'
-);
-
-###############################################################################
-# admin/user.php
-
-$LANG28 = array(
-    1 => 'û༭',
-    2 => 'û',
-    3 => 'û',
-    4 => 'ȫ',
-    5 => '',
-    6 => 'ȫ',
-    7 => 'ʵַ',
-    8 => 'ҳ',
-    9 => '(пո)',
-    10 => 'Ҫṩûȫȫ͵ʵַ',
-    11 => 'ûԱ',
-    12 => 'û޸Ļɾûɴһµġı벿ݵûʵַȫ (e.g.*son* or *.edu) 򵥵Ѱҡ',
-    13 => 'ȫ',
-    14 => 'Ǽ',
-    15 => 'û',
-    16 => 'Աҳ',
-    17 => '',
-    18 => 'ȡ',
-    19 => 'ɾ',
-    20 => '',
-    21 => 'ûѾ',
-    22 => '',
-    23 => '',
-    24 => 'û',
-    25 => 'һιû Geeklog 뵵һ tab ֵָλ˳ǩUȫûʵַÿһûյһԵʼ͵롣ÿһһûûЩҪ⣬ҲҪֶҵ㵵',
-    26 => 'Ѱ',
-    27 => 'Χ',
-    28 => '򹳿ɾͼƬ',
-    29 => '·',
-    30 => '',
-    31 => 'û',
-    32 => 'ɡ %d %d ʧ',
-    33 => 'ݽ',
-    34 => 'Uָص',
-    35 => 'һε',
-    36 => '(δ)',
-    37 => 'UID',
-    38 => 'Group Listing',
-    39 => 'Password (again)',
-    40 => 'Registration Date',
-    41 => 'Last login Date',
-    42 => 'Banned',
-    43 => 'Awaiting Activation',
-    44 => 'Awaiting Authorization',
-    45 => 'Active',
-    46 => 'User Status',
-    47 => 'Edit'
-);
-
-###############################################################################
-# admin/moderation.php
-
-$LANG29 = array(
-    1 => '׼',
-    2 => 'ɾ',
-    3 => '༭',
-    4 => 'Ҫ',
-    10 => '',
-    11 => 'ʼ',
-    12 => 'URL',
-    13 => '',
-    14 => '',
-    15 => '',
-    16 => 'û',
-    17 => 'ȫ',
-    18 => 'ʼ',
-    34 => 'Ϳ',
-    35 => 'ѵݽ',
-    36 => 'ѵݽ',
-    37 => 'ѵݽ¼',
-    38 => 'ݽ',
-    39 => 'ʱûеݽĶ',
-    40 => 'û'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Sunday',
-    2 => 'Monday',
-    3 => 'Tuesday',
-    4 => 'Wednesday',
-    5 => 'Thursday',
-    6 => 'Friday',
-    7 => 'Saturday',
-    8 => '¼',
-    9 => 'Geeklog ¼',
-    10 => '¼',
-    11 => '',
-    12 => 'ҵ',
-    13 => 'һ',
-    14 => '',
-    15 => '',
-    16 => '',
-    17 => '',
-    18 => '',
-    19 => '',
-    20 => '',
-    21 => '',
-    22 => 'ʮ',
-    23 => 'ʮһ',
-    24 => 'ʮ',
-    25 => 'ص',
-    26 => '',
-    27 => '',
-    28 => 'U',
-    29 => '',
-    30 => 'ɾ¼',
-    31 => '',
-    32 => '¼',
-    33 => '',
-    34 => 'ʱ',
-    35 => 'Ѹ',
-    36 => 'ݽ',
-    37 => 'Ǹվṩ',
-    38 => '¼༭',
-    39 => '',
-    40 => '',
-    41 => ''
-);
-
-###############################################################################
-# admin/mail.php
-
-$LANG31 = array(
-    1 => "{$_CONF['site_name']} ʼʽ",
-    2 => 'ļ',
-    3 => 'ظ',
-    4 => '',
-    5 => '',
-    6 => 'ռ˩U',
-    7 => 'û',
-    8 => 'Ա',
-    9 => 'ѡ',
-    10 => 'HTML',
-    11 => 'еѶϢ',
-    12 => '',
-    13 => '',
-    14 => 'û趨',
-    15 => '󣬵͵U',
-    16 => 'ѶϢѷ͵U',
-    17 => "<a href={$_CONF['site_admin_url']}/mail.php>ż</a>",
-    18 => 'ռ',
-    19 => 'עUϣѶϢվеĳԱСѡλѡ Logged-in Users group',
-    20 => "ѷ <successcount> ѶϢ <failcount> ܷ͡͵ϸ档粻뿴ϸڣ<a href=\"{$_CONF['site_admin_url']}/mail.php\">ѶϢ</a>  <a href=\"{$_CONF['site_admin_url']}/moderation.php\">عԱҳ</a>",
-    21 => 'ʧ',
-    22 => 'ɹ ',
-    23 => 'ȫɹ ',
-    24 => 'ȫʧ',
-    25 => '-- ѡС --',
-    26 => 'дбϵλѡһС顣'
-);
-
-###############################################################################
-# admin/plugins.php
-
-$LANG32 = array(
-    1 => 'װϵͳ ҪرСġ òҪװκ㲻˽Ĳ',
-    2 => 'װ',
-    3 => 'װ',
-    4 => '',
-    5 => '嵥',
-    6 => 'UѾװ',
-    7 => '밲װĲѾڣȰɾٰװ',
-    8 => 'ͨУ顣',
-    9 => 'Ҫһ°汾 Geeklog. <a href="http://www.geeklog.net">Geeklog</a>һʺϵİ汾',
-    10 => '<br><b>ûаװĲ</b><br><br>',
-    11 => '޸Ļɾ²ơʾϸݺߵվװİ汾ʹӴİ汾Գ֪˲ǷӦø¡Ҫװѯ˵ļ',
-    12 => 'plugineditor() Ҳ',
-    13 => '༭',
-    14 => '²',
-    15 => 'Աҳ',
-    16 => '',
-    17 => '汾',
-    18 => 'Geeklog 汾',
-    19 => 'ʹЧ',
-    20 => '',
-    21 => '',
-    22 => 'װ',
-    23 => '',
-    24 => 'ȡ',
-    25 => 'ɾ',
-    26 => '',
-    27 => 'ҳ',
-    28 => 'ѰװĲ汾',
-    29 => 'Geeklog 汾',
-    30 => 'ɾ',
-    31 => '϶ҪɾɾйļϺϽṹ϶ģٵеɾť',
-    32 => '<p><b>Error AutoLink tag not correct format</b></p>',
-    33 => '汾',
-    34 => '',
-    35 => 'Edit',
-    36 => 'Code',
-    37 => 'Data',
-    38 => 'Update!'
-);
-
-###############################################################################
-# admin/syndication.php
-
-$LANG33 = array(
-    1 => '',
-    2 => '',
-    3 => 'ɾ',
-    4 => 'ȡ',
-    10 => 'ϼ',
-    11 => '',
-    12 => 'ҳ',
-    13 => 'Ҫ޸Ļɾһ, һϵ. Ҫµ, ϵ.',
-    14 => '',
-    15 => '',
-    16 => 'ļ',
-    17 => 'ʽ',
-    18 => 'һθ',
-    19 => '',
-    20 => '',
-    21 => '',
-    22 => '<i>()</i>',
-    23 => '',
-    24 => '༭',
-    25 => '',
-    26 => '޶',
-    27 => 'Ŀ',
-    28 => '(0 = , 1 = , other = ޶ڴ.)',
-    29 => '˵',
-    30 => 'һθ',
-    31 => 'ַ',
-    32 => '',
-    33 => '',
-    34 => 'Ŀ',
-    35 => 'Сʱ',
-    36 => 'ѡ',
-    37 => 'һװ˵Ĳϼ.һҪѡǷҪһϵͳ.',
-    38 => ': ȱϢ',
-    39 => ', ˵, ļ.',
-    40 => 'ĿĿСʱĿ.',
-    41 => '',
-    42 => '¼',
-    43 => 'All',
-    44 => 'None',
-    45 => 'Header-link in topic',
-    46 => 'Limit Results',
-    47 => 'Search',
-    48 => 'Edit',
-    49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
-);
-
-###############################################################################
-# confirmation and error messages
-
-$MESSAGE = array(
-    1 => "ѵ뵽ĵ䣬ʼеָʾлʹ {$_CONF['site_name']}",
-    2 => "лݽµ {$_CONF['site_name']} ֻҪԱĺ˶ԣ½ǵĸҳϡ",
-    3 => "лݽᵽ {$_CONF['site_name']} ֻҪԱĺ˶ԣὫǵĸҳϡ",
-    4 => "лݽ¼ {$_CONF['site_name']} ֻҪԱĺ˶ԣ¼ǵ<a href={$_CONF['site_url']}/calendar.php></a>ϡ",
-    5 => 'ʻ趨ѱˡ',
-    6 => 'ĸ趨ѱˡ',
-    7 => '۽趨ѱˡ',
-    8 => '˳',
-    9 => 'ѱˡ',
-    10 => 'ѱɾˡ',
-    11 => 'ѱˡ',
-    12 => 'ѱɾˡ',
-    13 => 'ѱˡ',
-    14 => 'صѱɾˡ',
-    15 => 'ѱˡ',
-    16 => 'ѱɾˡ',
-    17 => '¼ѱˡ',
-    18 => '¼ѱɾˡ',
-    19 => 'ͶƱѱˡ',
-    20 => 'ͶƱѱɾˡ',
-    21 => 'ûѱˡ',
-    22 => 'ûѱɾˡ',
-    23 => '¼ʱȱ¼š',
-    24 => '¼ӵС',
-    25 => 'Ҫſɿĸ',
-    26 => '¼ѴƳ',
-    27 => 'Ϣѷ͡',
-    28 => 'ѱˡ',
-    29 => 'Ǹվṩ',
-    30 => 'ȡܾ',
-    31 => 'Ǹ㲻ܽ¹ҳעͼѱ¼',
-    32 => 'Ǹ㲻ܽҳעͼѱ¼',
-    33 => 'Ǹ㲻ܽҳעͼѱ¼',
-    34 => 'Ǹ㲻ܽҳעͼѱ¼',
-    35 => 'Ǹ㲻ܽ¼ҳעͼѱ¼',
-    36 => 'Ǹ㲻ܽͶƱҳעͼѱ¼',
-    37 => 'Ǹ㲻ܽûҳעͼѱ¼',
-    38 => 'Ǹ㲻ܽ Plug-in ҳעͼѱ¼',
-    39 => 'Ǹ㲻ܽʹҳעͼѱ¼',
-    40 => 'ϵͳѶϢ',
-    41 => 'Ǹ㲻ִܽ滻ҳעͼѱ¼',
-    42 => 'ִѱˡ',
-    43 => 'ִѱɾˡ',
-    44 => 'ѱװˡ',
-    45 => 'ѱɾˡ',
-    46 => 'Ǹ㲻ܽϿⱸݳʽעͼѱ¼',
-    47 => 'ֻ *nix ҵϵͳ *nixĻѱˡҵϵͳ WindowsҪֶѰļΪ adodb _ *.php ĵǳȥ',
-    48 => "лΪ {$_CONF['site_name']} ĻԱֻҪԱĺ˶ԣǻĵǼǵĵС",
-    49 => 'Сѱˡ',
-    50 => 'Сѱɾˡ',
-    51 => 'ûáѡһ',
-    52 => 'ĵŵַЧ',
-    53 => 'ѱܡ.',
-    54 => 'ҪԹҪ',
-    55 => 'Ѿһšմŵ˵趨롣',
-    56 => '㹩ĵŵַбûʹá',
-    57 => 'ûѾɹɾˡ',
-    58 => 'ѳɹı.',
-    59 => 'ѳɹɾ.',
-    60 => 'Ѿ³ɹ',
-    61 => ' %s: ֪Ϣռλ',
-    62 => 'The trackback comment has been deleted.',
-    63 => 'An error occurred when deleting the trackback comment.',
-    64 => 'Your trackback comment has been successfully sent.',
-    65 => 'Weblog directory service successfully saved.',
-    66 => 'The weblog directory service has been deleted.',
-    67 => 'The new password does not match the confirmation password!',
-    68 => 'You have to enter the correct current password.',
-    69 => 'Your account has been blocked!',
-    70 => 'Your account is awaiting administrator approval.',
-    71 => 'Your account has now been confirmed and is awaiting administrator approval.',
-    72 => 'An error occured while attempting to install the plugin. See error.log for details.',
-    73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
-    74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
-);
-
-###############################################################################
-
-$LANG_ACCESS = array(
-    'access' => 'ȡ',
-    'ownerroot' => '/Root',
-    'group' => 'С',
-    'readonly' => 'Ψ',
-    'accessrights' => 'ȡȨ',
-    'owner' => '',
-    'grantgrouplabel' => '֮С༭Ȩ',
-    'permmsg' => 'עUԱָע͵ûָзע߻ûеû',
-    'securitygroups' => 'ȫС',
-    'editrootmsg' => "ʹûԱ㲻ܱ༭ root ûܱ༭еû root ûעͼǷر༭ root ûĶѱ¼ص<a href=\"{$_CONF['site_admin_url']}/user.php\">ûҳ</a>ȥ",
-    'securitygroupsmsg' => 'ѡλû춵С顣',
-    'groupeditor' => 'С༭',
-    'description' => '',
-    'name' => '',
-    'rights' => 'Ȩ',
-    'missingfields' => 'ȱλ',
-    'missingfieldsmsg' => 'ṩСֺ',
-    'groupmanager' => 'СԱ',
-    'newgroupmsg' => 'С޸ĻɾСɴһµġעС鲻ܱɾ',
-    'groupname' => '',
-    'coregroup' => 'С',
-    'yes' => '',
-    'no' => '',
-    'corerightsdescr' => "СȨ޲ܱ༭ΪǸ {$_CONF['site_name']} ĺС顣СȨ嵥(Ψ)",
-    'groupmsg' => 'ȫСվеȼƶȵġС鵽һС齫õȨޡ뾡СеȥСҪرȨޣµ"Ȩ"ѡҪСӵȥֻҪԱߵѡд򹳡',
-    'coregroupmsg' => "ΪǸ {$_CONF['site_name']} ĺС飬СȨ޲ܱ༭С嵥(Ψ)",
-    'rightsdescr' => 'СȨ޿С鱾СµȨûммȨСммֱӰȨ޸С顣',
-    'lock' => 'ס',
-    'members' => 'Ա',
-    'anonymous' => '',
-    'permissions' => 'Ȩ',
-    'permissionskey' => 'R = Ψ E = ༭б༭ȨΨȨ',
-    'edit' => '༭',
-    'none' => 'û',
-    'accessdenied' => 'ȡܾ',
-    'storydenialmsg' => "δ׼㲻Թۿ¡ǿΪ㲢 {$_CONF['site_name']} ĻԱ<a href=users.php?mode=new>ΪԱ</a>",
-    'eventdenialmsg' => "δ׼㲻Թۿ¼ǿΪ㲢 {$_CONF['site_name']} ĻԱ<a href=users.php?mode=new>ΪԱ</a>",
-    'nogroupsforcoregroup' => 'С鲻κС',
-    'grouphasnorights' => ' СûйȨ',
-    'newgroup' => 'С',
-    'adminhome' => 'Աҳ',
-    'save' => '',
-    'cancel' => 'ȡ',
-    'delete' => 'ɾ',
-    'canteditroot' => 'Ϊ㲻 Root С飬 Root С޸ıܾˡϵͳԱϵ',
-    'listusers' => 'гû',
-    'listthem' => 'г',
-    'usersingroup' => ' "%s" Сû',
-    'usergroupadmin' => 'ûС',
-    'add' => '',
-    'remove' => '',
-    'availmembers' => 'õĳԱ',
-    'groupmembers' => 'СԱ',
-    'canteditgroup' => 'Ҫ޸ĴС, ҪʱСĳԱ. ΪǴ, ϵͳԱ.',
-    'cantlistgroup' => 'ҪСĻԱǴСĻԱΪǴϵͳԱ',
-    'editgroupmsg' => 'To modify the group membership, click on the member names(s) and use the add or remove buttons. If the member is a member of the group, their name will appear on the right side only. Once you are complete - press <b>Save</b> to update the group and return to the main group admin page.',
-    'listgroupmsg' => 'Listing of all current members in the group: <b>%s</b>',
-    'search' => 'Search',
-    'submit' => 'Submit',
-    'limitresults' => 'Limit Results',
-    'group_id' => 'Group ID',
-    'plugin_access_denied_msg' => 'You are illegally trying access a plugin administration page.  Please note that all attempts to illegally access this page are logged.',
-    'groupexists' => 'Group name already exists',
-    'groupexistsmsg' => 'There is already a group with this name. Group names must be unique.'
-);
-
-###############################################################################
-# admin/database.php
-
-$LANG_DB_BACKUP = array(
-    'last_ten_backups' => 'ʮ',
-    'do_backup' => '',
-    'backup_successful' => 'Ͽⱸɡ',
-    'db_explanation' => 'Ҫµ Geeklog ݣµİť',
-    'not_found' => "ȷ· mysqldump ʽִС<br><strong>\$_DB_mysqldump_path</strong> config.php.<br>ڱΪU<var>{$_DB_mysqldump_path}</var>",
-    'zero_size' => 'ʧܩU 0 С',
-    'path_not_found' => "{$_CONF['backup_path']} ڻĿ¼",
-    'no_access' => "UĿ¼ {$_CONF['backup_path']} ܴȡ",
-    'backup_file' => 'ݵ',
-    'size' => 'С',
-    'bytes' => 'λԪ',
-    'total_number' => 'ܱݴ: %d'
-);
-
-###############################################################################
-
-$LANG_BUTTONS = array(
-    1 => 'ҳ',
-    2 => '',
-    3 => 'Ͷ',
-    4 => '',
-    5 => 'ͶƱ',
-    6 => '',
-    7 => 'վͳ',
-    8 => '˻',
-    9 => '',
-    10 => 'Ѱ',
-    11 => 'Directory'
-);
-
-###############################################################################
-# 404.php
-
-$LANG_404 = array(
-    1 => '404 ',
-    2 => 'ףҵ˵Ҳ<b>%s</b>.',
-    3 => "<p>ܱǸҪļڡ<a href=\"{$_CONF['site_url']}\">ҳ</a><a href=\"{$_CONF['site_url']}/search.php\">ҳ</a>ܷʲᡣ"
-);
-
-###############################################################################
-# login form
-
-$LANG_LOGIN = array(
-    1 => 'Ҫ',
-    2 => 'ǸҪſɴȡ',
-    3 => '',
-    4 => 'û'
-);
-
-###############################################################################
-# pdfgenerator.php
-
-$LANG_PDF = array(
-    1 => 'PDF 汾ѱֹ',
-    2 => 'ṩļûгʵݡļյ޷϶ύļ html ʽļд xHTML ı׼עָӵ html ļҲ޷ȷʵݡļύĽ 0 bytes ѱɾ϶ļӦ˳ĳʵݣٴύ',
-    3 => '֪PDF ļ',
-    4 => 'ûṩҳϻҪµر PDF ߡΪõҳǴ ϵͳԱҪȻµıر PDF',
-    5 => 'װļ',
-    6 => 'ļװʱȴ',
-    7 => 'һµİťȻѡ \'save target...\' or \'save link location...\' ļһ',
-    8 => 'õ HTMLDocƵ·д󣬻ϵͳ޷ִд˵վԱ',
-    9 => 'PDF ',
-    10 => 'ر PDF ߡὫκ URL ת PDF 汾ע⣬Щҳȷı⹤ߴɹ HTMLDoc PDF ߵ֮ĴҪվĹԱ',
-    11 => 'URL',
-    12 => ' PDF!',
-    13 => '˷ PHP ò׼ fopen()  URL ϡ ϵͳԱ޸  php.ini Ȼ趨 allow_url_fopen  On',
-    14 => 'Ҫ PDF ڻڷǷȡһ'
-);
-
-###############################################################################
-# trackback.php
-
-$LANG_TRB = array(
-    'trackback' => 'Trackback',
-    'from' => 'from',
-    'tracked_on' => 'Tracked on',
-    'read_more' => '[read more]',
-    'intro_text' => 'Here\'s what others have to say about \'%s\':',
-    'no_comments' => 'No trackback comments for this entry.',
-    'this_trackback_url' => 'Trackback URL for this entry:',
-    'num_comments' => '%d trackback comments',
-    'send_trackback' => 'Send Pings',
-    'preview' => 'Preview',
-    'editor_title' => 'Send trackback comment',
-    'trackback_url' => 'Trackback URL',
-    'entry_url' => 'Entry URL',
-    'entry_title' => 'Entry Title',
-    'blog_name' => 'Site Name',
-    'excerpt' => 'Excerpt',
-    'truncate_warning' => 'Note: The receiving site may truncate your excerpt',
-    'button_send' => 'Send',
-    'button_preview' => 'Preview',
-    'send_error' => 'Error',
-    'send_error_details' => 'Error when sending trackback comment:',
-    'url_missing' => 'No Entry URL',
-    'url_required' => 'Please enter at least a URL for the entry.',
-    'target_missing' => 'No Trackback URL',
-    'target_required' => 'Please enter a trackback URL',
-    'error_socket' => 'Could not open socket.',
-    'error_response' => 'Response not understood.',
-    'error_unspecified' => 'Unspecified error.',
-    'select_url' => 'Select Trackback URL',
-    'not_found' => 'Trackback URL not found',
-    'autodetect_failed' => 'Geeklog could not detect the Trackback URL for the post you want to send your comment to. Please enter it manually below.',
-    'trackback_explain' => 'From the links below, please select the URL you want to send your Trackback comment to. Geeklog will then try to determine the correct Trackback URL for that post. Or you can <a href="%s">enter it manually</a> if you know it already.',
-    'no_links_trackback' => 'No links found. You can not send a Trackback comment for this entry.',
-    'pingback' => 'Pingback',
-    'pingback_results' => 'Pingback results',
-    'send_pings' => 'Send Pings',
-    'send_pings_for' => 'Send Pings for "%s"',
-    'no_links_pingback' => 'No links found. No Pingbacks were sent for this entry.',
-    'pingback_success' => 'Pingback sent.',
-    'no_pingback_url' => 'No pingback URL found.',
-    'resend' => 'Resend',
-    'ping_all_explain' => 'You can now notify the sites you linked to (<a href="http://en.wikipedia.org/wiki/Pingback">Pingback</a>), advertise that your site has been updated by pinging weblog directory services, or send a <a href="http://en.wikipedia.org/wiki/Trackback">Trackback</a> comment in case you wrote about a post on someone else\'s site.',
-    'pingback_button' => 'Send Pingback',
-    'pingback_short' => 'Send Pingbacks to all sites linked from this entry.',
-    'pingback_disabled' => '(Pingback disabled)',
-    'ping_button' => 'Send Ping',
-    'ping_short' => 'Ping weblog directory services.',
-    'ping_disabled' => '(Ping disabled)',
-    'trackback_button' => 'Send Trackback',
-    'trackback_short' => 'Send a Trackback comment.',
-    'trackback_disabled' => '(Trackback disabled)',
-    'may_take_a_while' => 'Please note that sending Pingbacks and Pings may take a while.',
-    'ping_results' => 'Ping results',
-    'unknown_method' => 'Unknown ping method',
-    'ping_success' => 'Ping sent.',
-    'error_site_name' => 'Please enter the site\'s name.',
-    'error_site_url' => 'Please enter the site\'s URL.',
-    'error_ping_url' => 'Please enter a valid Ping URL.',
-    'no_services' => 'No weblog directory services configured.',
-    'services_headline' => 'Weblog Directory Services',
-    'service_explain' => 'To modify or delete a weblog directory service, click on the edit icon of that service below. To add a new weblog directory service, click on "Create New" above.',
-    'service' => 'Service',
-    'ping_method' => 'Ping method',
-    'service_website' => 'Website',
-    'service_ping_url' => 'URL to ping',
-    'ping_standard' => 'Standard Ping',
-    'ping_extended' => 'Extended Ping',
-    'ping_unknown' => '(unknown method)',
-    'edit_service' => 'Edit Weblog Directory Service',
-    'trackbacks' => 'Trackbacks',
-    'editor_intro' => 'Prepare your trackback comment for <a href="%s">%s</a>.',
-    'editor_intro_none' => 'Prepare your trackback comment.',
-    'trackback_note' => 'To send a trackback comment for a story, go to the list of stories and click on "Send Ping" for the story. To send a trackback that is not related to a story, <a href="%s">click here</a>.',
-    'pingback_explain' => 'Enter a URL to send the Pingback to. The pingback will point to your site\'s homepage.',
-    'pingback_url' => 'Pingback URL',
-    'site_url' => 'This site\'s URL',
-    'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
-    'pbtarget_missing' => 'No Pingback URL',
-    'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
-);
-
-###############################################################################
-# directory.php
-
-$LANG_DIR = array(
-    'title' => 'Article Directory',
-    'title_year' => 'Article Directory for %d',
-    'title_month_year' => 'Article Directory for %s %d',
-    'nav_top' => 'Back to Article Directory',
-    'no_articles' => 'No articles.'
-);
-
-###############################################################################
-# "What's New" Time Strings
-# 
-# For the first two strings, you can use the following placeholders.
-# Order them so it makes sense in your language:
-# %i    item, "Stories"
-# %n    amount, "2", "20" etc.
-# %t    time, "2" (weeks)
-# %s    scale, "hrs", "weeks"
-
-$LANG_WHATSNEW = array(
-    'new_string' => '%n new %i in the last %t %s',
-    'new_last' => 'last %t %s',
-    'minutes' => 'minutes',
-    'hours' => 'hours',
-    'days' => 'days',
-    'weeks' => 'weeks',
-    'months' => 'months',
-    'minute' => 'minute',
-    'hour' => 'hour',
-    'day' => 'day',
-    'week' => 'week',
-    'month' => 'month'
-);
-
-###############################################################################
-# Admin - Strings
-# 
-# These are some standard strings used by core functions as well as plugins to
-# display administration lists and edit pages
-
-$LANG_ADMIN = array(
-    'search' => 'Search',
-    'limit_results' => 'Limit Results',
-    'submit' => 'Submit',
-    'edit' => 'Edit',
-    'admin_home' => 'Admin Home',
-    'create_new' => 'Create New',
-    'enabled' => 'Enabled',
-    'title' => 'Title',
-    'type' => 'Type',
-    'topic' => 'Topic',
-    'help_url' => 'Help File URL',
-    'save' => 'Save',
-    'cancel' => 'Cancel',
-    'delete' => 'Delete',
-    'copy' => 'Copy',
-    'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
-);
-
-###############################################################################
-# Localisation of the texts for the various drop-down menus that are actually
-# stored in the database. If these exist, they override the texts from the
-# database.
-
-$LANG_commentcodes = array(
-    0 => 'Comments Enabled',
-    -1 => 'Comments Disabled'
-);
-
-
-$LANG_commentmodes = array(
-    'flat' => 'Flat',
-    'nested' => 'Nested',
-    'threaded' => 'Threaded',
-    'nocomment' => 'No Comments'
-);
-
-$LANG_cookiecodes = array(
-    0 => '(don\'t)',
-    3600 => '1 Hour',
-    7200 => '2 Hours',
-    10800 => '3 Hours',
-    28800 => '8 Hours',
-    86400 => '1 Day',
-    604800 => '1 Week',
-    2678400 => '1 Month'
-);
-
-$LANG_dateformats = array(
-    0 => 'System Default'
-);
-
-$LANG_featurecodes = array(
-    0 => 'Not Featured',
-    1 => 'Featured'
-);
-
-$LANG_frontpagecodes = array(
-    0 => 'Show Only in Topic',
-    1 => 'Show on Front Page'
-);
-
-$LANG_postmodes = array(
-    'plaintext' => 'Plain Old Text',
-    'html' => 'HTML Formatted'
-);
-
-$LANG_sortcodes = array(
-    'ASC' => 'Oldest First',
-    'DESC' => 'Newest First'
-);
-
-$LANG_trackbackcodes = array(
-    0 => 'Trackback Enabled',
-    -1 => 'Trackback Disabled'
-);
-
-?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/chinese_simplified_utf-8.php 1.4.1.src/cpanel-glprivate/language/chinese_simplified_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/chinese_simplified_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/chinese_simplified_utf-8.php	2006-12-16 15:16:15.000000000 -0600
@@ -3,10 +3,10 @@
 ###############################################################################
 # chinese_simplified_utf-8.php
 #
-# Last Modified: 2006-01-10
-# Version: 1.4.0
+# Last Modified: 2006-12-12
+# Version: 1.4.1
 #
-# This is the Chinese Simplified (UTF-8) language set for GeekLog 1.4.0
+# This is the Chinese Simplified (UTF-8) language set for GeekLog 1.4.1
 #
 # Copyright (C) 2003 Samuel M. Stone
 # sam@stonemicro.com
@@ -91,9 +91,9 @@
     45 => 'MySQL 错误号码',
     46 => 'MySQL 错误讯息',
     47 => '用户功能',
-    48 => '帐户讯息',
+    48 => '我的帐户',
     49 => '风格选择',
-    50 => '错误的 SQL statement',
+    50 => '错误的 SQL 句子',
     51 => '帮助',
     52 => '新',
     53 => '管理者首页',
@@ -161,34 +161,15 @@
     115 => '没有新迹回的评论',
     116 => '迹回',
     117 => '目录',
-    118 => '请继续看下页',	
+    118 => '请继续看下页',
     119 => "丢失了<a ref=\"{$_CONF['site_url']}/users.php?mode=getpassword\">密码</a>?",
-    120 => '永久联结此评论',	
+    120 => '永久联结此评论',
     121 => '评论 (%d)',
-    122 => '迹回 (%d)',	
-    123 => '准许用所有的HTML'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-
-    1 => '事件日历',
-    2 => '抱歉，没有事件。',
-    3 => '时',
-    4 => '地',
-    5 => '事',
-    6 => '新增事件',
-    7 => '即将发生的事',
-    8 => '在将这事加进你的日历之後，你可点击 "我的日历" 来观看',
-    9 => '加进我的日历',
-    10 => '从我的日历中去除',
-    11 => "把这事加进 {$_USER['username']} 的日历",
-    12 => '事件',
-    13 => '开始',
-    14 => '结束',
-    15 => '回到日历'
+    122 => '迹回 (%d)',
+    123 => '准许用所有的HTML',
+    124 => '点击删除所选的项目',
+    125 => '你肯定要删除所选的项目吗？',
+    126 => '选 或 不选 所有的项目'
 );
 
 ###############################################################################
@@ -208,7 +189,6 @@
     11 => '发表评论',
     12 => '请填写标题注评论栏',
     13 => '供你参考',
-
     14 => '预览',
     15 => '报告这篇滥登文',
     16 => '标题',
@@ -347,11 +327,44 @@
     116 => '等待启动的账户',
     117 => '你的账户现在等待管理员的启动. 在账户未批准以前, 你还不能登入.',
     118 => "你的 {$_CONF['site_name']} 账户已被启动. 你可通过以下的url 用先前以电信寄给你的用户名 (<username>) 和密码来登入.",
-    119 => "你若已忘记了你的密码你可通过此 url 来要求一个新密码",
+    119 => '你若已忘记了你的密码你可通过此 url 来要求一个新密码',
     120 => '帐户已被启动',
     121 => '服务',
     122 => '对不起, 目前禁止新用户登记',
-    123 => "你是否 <a href=\"{$_CONF['site_url']}/users.php?mode=new\">新用户</a>?"
+    123 => "你是否 <a href=\"{$_CONF['site_url']}/users.php?mode=new\">新用户</a>?",
+    124 => '确认电信',
+    125 => '你必需要输入同样的电信地址!',
+    126 => '请重复输入来确认',
+    127 => '你必须输入目前的密码来做任何修改.',
+    128 => '姓名',
+    129 => '密码 &amp; 电信',
+    130 => '关于你',
+    131 => '每日摘要选项',
+    132 => '每日摘要功能',
+    133 => '评论显示',
+    134 => '评论选项',
+    135 => '<li>显示评论的默认模式</li><li>显示评论的默认次序</li><li>设定显示评论的极大数字 – 默认数字是 100</li>',
+    136 => '排除标题和作者',
+    137 => '过滤文章内容',
+    138 => '其他设定',
+    139 => '版面和语言',
+    140 => '<li>不要标题的图标：勾此处就不会显示标题的图标</li><li>不要组件：勾了此处就不会显示组件，只会显示管理菜单，用户菜单，和主题菜单<li>设定每页显示的极大文章数字</li><li>设定你的版面主题和喜欢的日期格式</li>',
+    141 => '隐私设定',
+    142 => '默认设定的是让用户和管理员们彼此可用电信交通而显示你的在线状态。取消这设定可保护你的隐私权.',
+    143 => '过滤组件内容',
+    144 => '显示或隐藏组件',
+    145 => '你的公开简介',
+    146 => '密码和电信',
+    147 => '修改你的用户密码，电信，和自动登入作用。你需要输入你的密码或电信地址两次来避免错误。',
+    148 => '用户信息',
+    149 => '修改要显示给其他用户的你的用户信息.<li>你的签名会显示在你的评论或论坛标语的下面</li><li>个人简历是用来分享你自己的简介</li><li>分享你得 PGP 钥匙</li>',
+    150 => '注意: 建议用Javascript 来提高功能',
+    151 => '预览',
+    152 => '用户和密码',
+    153 => '版面和语言',
+    154 => '内容',
+    155 => '隐私',
+    156 => '删除用户'
 );
 
 ###############################################################################
@@ -428,7 +441,7 @@
     13 => '搜寻结果：没有相配的',
     14 => '没有你寻找的东西︰',
     15 => '请再尝试',
-    16 => '主题',
+    16 => '标题',
     17 => '日期',
     18 => '作者',
     19 => "搜寻整个 {$_CONF['site_name']} 的新旧文章资料库",
@@ -637,14 +650,13 @@
     31 => 'PHP 组件错误︰函数 %s 并不存在。',
     32 => '错误︰缺少栏位。',
     33 => '在入口组件你必须把 URL 输入到 .rdf 档案',
-    34 => '在 PHP 组件你必须输入主题和函数',
-    35 => '在正常组件你必须输入主题和内容',
+    34 => '在 PHP 组件你必须输入标题和函数',
+    35 => '在正常组件你必须输入标题和内容',
     36 => '在版面组件你必须输入内容',
     37 => '不适当的 PHP 组件函数名',
     38 => '为防止执行任性的编码，PHP 组件函数名必须以 "phpblock_" 作开始 (e.g. phpblock_getweather)。',
     39 => '放在那边',
     40 => '左',
-
     41 => '右',
     42 => '在本系统的预设组件你必须输入组件标题和次序',
     43 => '只可是首页',
@@ -669,38 +681,9 @@
     62 => '文章限制',
     63 => '错误组件标题',
     64 => '你的标题不能空白或有HTML!',
-    65 => '次序'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => '事件编辑器',
-    2 => 'Error',
-    3 => '事件标题',
-    4 => '事件 URL',
-    5 => '事件开始日期',
-    6 => '事件结束日期',
-    7 => '事件地点',
-    8 => '事件描述',
-    9 => '(包括 http://)',
-    10 => '你必须提供日期时间、事件主题、与事件描述！',
-    11 => '事件管理员',
-    12 => '点击下面的事件可修改或删除它，点击上面的新事件可创造一个新的。',
-    13 => '事件标题',
-    14 => '开始日期',
-    15 => '结束日期',
-    16 => '存取被拒绝',
-    17 => "企图存取不允许的事件已被记录。请<a href=\"{$_CONF['site_admin_url']}/event.php\">反回事件管理员昼面</a>。",
-    18 => '新事件',
-    19 => '管理员首页',
-    20 => '保存',
-    21 => '取消',
-    22 => '删除',
-    23 => '错误的开始日期.',
-    24 => '错误的结束日期.',
-    25 => '结束日期在开始日期前.'
+    65 => '次序',
+    66 => '自动标签',
+    67 => '打勾来准许自动标签'
 );
 
 ###############################################################################
@@ -791,7 +774,9 @@
     82 => '图像处理',
     83 => '有期文章管理',
     84 => '权限',
-    85 => '完全显示'
+    85 => '完全显示',
+    86 => '高等编辑器',
+    87 => '文章统计'
 );
 
 ###############################################################################
@@ -832,7 +817,6 @@
 ###############################################################################
 # admin/user.php
 
-
 $LANG28 = array(
     1 => '用户编辑器',
     2 => '用户编号',
@@ -881,6 +865,35 @@
     45 => '有效的',
     46 => '用户状态',
     47 => '编辑',
+    48 => '显示管理组',
+    49 => '管理组',
+    50 => '打勾来准许过滤此组为管理组',
+    51 => '在线日',
+    52 => '<br>注: "在线日" 是从登记的第一天到最后一次登入.',
+    53 => '登记过的',
+    54 => '批量的删除',
+    55 => '这功能只会有效若你已在 config.php 里设定为 <code>$_CONF[\'lastlogin\'] = true;</code>',
+    56 => '请选你想要删除的用户种类，然后按 "更新名单". 然后, 取消那些你不想删除的用户，再按删除. 请注意，你只会删除你现在所看见的用户。若有多页，后页不会删除。',
+    57 => '幻影用户',
+    58 => '短期用户',
+    59 => '老用户',
+    60 => '用户登记超过 ',
+    61 => ' 个月, 但未曾登入过.',
+    62 => '用户登记超过 ',
+    63 => ' 个月, 然后在24小时内登入过, 但从此就未曾回来过.',
+    64 => '正常用户, 但已经没有回来 ',
+    65 => ' 个月.',
+    66 => '更新名单',
+    67 => '登记月数',
+    68 => '在线时数',
+    69 => '离线月数',
+    70 => '无法删除',
+    71 => '删除成功',
+    72 => '为选任何要删除的用户',
+    73 => '你肯定要将所选的用户永久删除吗？',
+    74 => '最近用户',
+    75 => '在最近',
+    76 => ' 月内登记的用户。'
 );
 
 ###############################################################################
@@ -910,53 +923,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Sunday',
-    2 => 'Monday',
-    3 => 'Tuesday',
-    4 => 'Wednesday',
-    5 => 'Thursday',
-    6 => 'Friday',
-    7 => 'Saturday',
-    8 => '新增事件',
-    9 => '志乐事件',
-    10 => '事件给',
-    11 => '主日历',
-    12 => '我的日历',
-    13 => '一月',
-    14 => '二月',
-    15 => '三月',
-    16 => '四月',
-    17 => '五月',
-    18 => '六月',
-    19 => '七月',
-    20 => '八月',
-    21 => '九月',
-    22 => '十月',
-    23 => '十一月',
-    24 => '十二月',
-    25 => '回到',
-    26 => '整日',
-    27 => '星期',
-    28 => '个人日历︰',
-    29 => '公众日历',
-    30 => '删除事件',
-    31 => '新增',
-    32 => '事件',
-    33 => '星期',
-    34 => '时间',
-    35 => '迅速增加',
-    36 => '递交',
-    37 => '抱歉，本站并不提供个人日历。',
-    38 => '个人事件编辑器',
-    39 => '日',
-    40 => '周',
-    41 => '月'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1080,7 +1046,9 @@
     47 => '搜寻',
     48 => '编辑',
     49 => '新闻 Feed 的标志',
-    50 => "跟网址有关 ({$_CONF['site_url']})"
+    50 => "跟网址有关 ({$_CONF['site_url']})",
+    51 => '你所选的文件名已经在另一个文流中用着了。请选另一个。',
+    52 => '错误: 文件名已存在'
 );
 
 ###############################################################################
@@ -1122,7 +1090,6 @@
     33 => '抱歉，你不能进入组件管理的首页。请注意你的企图已被记录。',
     34 => '抱歉，你不能进入连结管理的首页。请注意你的企图已被记录。',
     35 => '抱歉，你不能进入事件管理的首页。请注意你的企图已被记录。',
-
     36 => '抱歉，你不能进入投票管理的首页。请注意你的企图已被记录。',
     37 => '抱歉，你不能进入用户管理的首页。请注意你的企图已被记录。',
     38 => '抱歉，你不能进入 Plug-in 管理的首页。请注意你的企图已被记录。',
@@ -1162,7 +1129,16 @@
     72 => '安装插件时发生错误，细节请看 error.log.',
     73 => '卸载插件时发生错误，细节请看error.log.',
     74 => 'Ping 回已成功地送出.',
-    75 => '迹回必须用 POST 要求.'
+    75 => '迹回必须用 POST 要求.',
+    76 => '你真的要删除这项目吗？',
+    77 => '警告:<br>你已默认UTF-8 为语文编码。 但是，你的服务器不支持多字节编码。请安装 mbstring 入 PHP 或选另一种语文编码。',
+    78 => '请确定你的电信地址跟你的确认电信地址是完全同样的。',
+    79 => '你想打开的网页提交到已经在这网站不存在的功能。',
+    80 => '建立此文流的插件已被关闭。你不能修改此文流除非你从新启动有关插件。',
+    81 => '你可能错误的输入了你的用户资料。请在下面再次登入。',
+    82 => '你已超过准许的登入次数。 等会儿再试。',
+    83 => '要改密码，电信地址，或要记得你多久，请输入你的目前密码。',
+    84 => '要删除你的用户帐号，请输入你的目前密码。'
 );
 
 ###############################################################################
@@ -1204,7 +1180,6 @@
     'none' => '没有',
     'accessdenied' => '存取被拒绝',
     'storydenialmsg' => "因未被批准，你不可以观看这个文章。这是可能是因为你并不是 {$_CONF['site_name']} 的会员。请<a href=users.php?mode=new>成为会员</a>。",
-    'eventdenialmsg' => "因未被批准，你不可以观看这个事件。这是可能是因为你并不是 {$_CONF['site_name']} 的会员。请<a href=users.php?mode=new>成为会员</a>。",
     'nogroupsforcoregroup' => '这小组不属於任何其它的小组',
     'grouphasnorights' => ' 这小组没有管理权。',
     'newgroup' => '新小组',
@@ -1310,98 +1285,99 @@
 ###############################################################################
 # trackback.php
 
-$LANG_TRB = array (
-    'trackback'          => '迹回',
-    'from'               => '从',
-    'tracked_on'         => '迹回于',
-    'read_more'          => '[读下文]',
-    'intro_text'         => "这是别人对 '%s' 的看法:",
-    'no_comments'        => '此登录无迹回评论.',
+$LANG_TRB = array(
+    'trackback' => '迹回',
+    'from' => '从',
+    'tracked_on' => '迹回于',
+    'read_more' => '[读下文]',
+    'intro_text' => '这是别人对 \'%s\' 的看法:',
+    'no_comments' => '此登录无迹回评论.',
     'this_trackback_url' => '此登录的迹回 URL:',
-    'num_comments'       => '%d 迹回评论',
-    'send_trackback'     => '送出 Ping',
-    'preview'            => '预览',
-    'editor_title'       => '送出迹回评论',
-    'trackback_url'      => '迹回 URL',
-    'entry_url'          => '登录 URL',
-    'entry_title'        => '登录标题',
-    'blog_name'          => '网站名',
-    'excerpt'            => '摘录',
-    'truncate_warning'   => '注: 目的站可能将你的摘录缩短',
-    'button_send'        => '送出',
-    'button_preview'     => '预览',
-    'send_error'         => '错误',
+    'num_comments' => '%d 迹回评论',
+    'send_trackback' => '送出 Ping',
+    'preview' => '预览',
+    'editor_title' => '送出迹回评论',
+    'trackback_url' => '迹回 URL',
+    'entry_url' => '登录 URL',
+    'entry_title' => '登录标题',
+    'blog_name' => '网站名',
+    'excerpt' => '摘录',
+    'truncate_warning' => '注: 目的站可能将你的摘录缩短',
+    'button_send' => '送出',
+    'button_preview' => '预览',
+    'send_error' => '错误',
     'send_error_details' => '送出迹回评论时发生错误:',
-    'url_missing'        => '无登录 URL',
-    'url_required'       => '请输入登录的最少一个 URL.',
-    'target_missing'     => '无迹回 URL',
-    'target_required'    => '请输入一个迹回 URL',
-    'error_socket'       => '无法打开 socket.',
-    'error_response'     => '不明白你的反应.',
-    'error_unspecified'  => '为指明的错误.',
-    'select_url'         => '选择迹回 URL',
-    'not_found'          => '找不到迹回 URL',
-    'autodetect_failed'  => '志乐探测不到关于你要送出评论的迹回 URL. 以下请输入.',
-    'trackback_explain'  => '从以下的联结中，请选你要送出评论的 URL. 志乐将会决定正确的迹回 URL. 或者你若已知道的话，可 <a href="%s">在此输入它</a>.',
+    'url_missing' => '无登录 URL',
+    'url_required' => '请输入登录的最少一个 URL.',
+    'target_missing' => '无迹回 URL',
+    'target_required' => '请输入一个迹回 URL',
+    'error_socket' => '无法打开 socket.',
+    'error_response' => '不明白你的反应.',
+    'error_unspecified' => '为指明的错误.',
+    'select_url' => '选择迹回 URL',
+    'not_found' => '找不到迹回 URL',
+    'autodetect_failed' => '志乐探测不到关于你要送出评论的迹回 URL. 以下请输入.',
+    'trackback_explain' => '从以下的联结中，请选你要送出评论的 URL. 志乐将会决定正确的迹回 URL. 或者你若已知道的话，可 <a href="%s">在此输入它</a>.',
     'no_links_trackback' => '找不到联结. 你不能送出此登录的迹回评论.',
-    'pingback'           => 'Ping 回',
-    'pingback_results'   => 'Ping 回的结果',
-    'send_pings'         => '送出 ping',
-    'send_pings_for'     => '送出ping 于 "%s"',
-    'no_links_pingback'  => '找不到联结. 为此登录无 Ping 回送出.',
-    'pingback_success'   => 'Ping 回已送出.',
-    'no_pingback_url'    => '无 ping 回 URL.',
-    'resend'             => '重送',
-    'ping_all_explain'   => '你现在可通知你所联结的网站 (<a href="http://en.wikipedia.org/wiki/Pingback">Ping 回</a>), 广告你的站已经被更新于ping 过网志目录服务, 或送出一个 <a href="http://en.wikipedia.org/wiki/Trackback">迹回</a> 评论若你写过有关一个在别人的网站上的登录.',
-    'pingback_button'    => '送出Ping 回',
-    'pingback_short'     => '送出Ping 回到所有跟此登录联结的网站.',
-    'pingback_disabled'  => '(Ping 回已中止)',
-    'ping_button'        => '送出Ping',
-    'ping_short'         => 'Ping 网志目录服务.',
-    'ping_disabled'      => '(Ping 已中止)',
-    'trackback_button'   => '送出迹回',
-    'trackback_short'    => '送出一个迹回评论.',
+    'pingback' => 'Ping 回',
+    'pingback_results' => 'Ping 回的结果',
+    'send_pings' => '送出 ping',
+    'send_pings_for' => '送出ping 于 "%s"',
+    'no_links_pingback' => '找不到联结. 为此登录无 Ping 回送出.',
+    'pingback_success' => 'Ping 回已送出.',
+    'no_pingback_url' => '无 ping 回 URL.',
+    'resend' => '重送',
+    'ping_all_explain' => '你现在可通知你所联结的网站 (<a href="http://en.wikipedia.org/wiki/Pingback">Ping 回</a>), 广告你的站已经被更新于ping 过网志目录服务, 或送出一个 <a href="http://en.wikipedia.org/wiki/Trackback">迹回</a> 评论若你写过有关一个在别人的网站上的登录.',
+    'pingback_button' => '送出Ping 回',
+    'pingback_short' => '送出Ping 回到所有跟此登录联结的网站.',
+    'pingback_disabled' => '(Ping 回已中止)',
+    'ping_button' => '送出Ping',
+    'ping_short' => 'Ping 网志目录服务.',
+    'ping_disabled' => '(Ping 已中止)',
+    'trackback_button' => '送出迹回',
+    'trackback_short' => '送出一个迹回评论.',
     'trackback_disabled' => '(迹回一中止)',
-    'may_take_a_while'   => '请注意，送出 Ping回 和 Ping 可需要一段时间.',
-    'ping_results'       => 'Ping 的结果',
-    'unknown_method'     => '无知 ping 法',
-    'ping_success'       => 'Ping 已送出.',
-    'error_site_name'    => '请输入网站名.',
-    'error_site_url'     => '请输入网站 URL.',
-    'error_ping_url'     => '请输入正确的 Ping URL.',
-    'no_services'        => '未设定网志目录服务.',
-    'services_headline'  => '网志目录服务',
-    'service_explain'    => '若要更改或删除网志目录服务，请点击一下服务的编辑标图. 要增加一个新的网志目录服务，请点击以上的 "建新".',
-    'service'            => '服务',
-    'ping_method'        => 'Ping 法',
-    'service_website'    => '网站',
-    'service_ping_url'   => '要ping 的URL',
-    'ping_standard'      => '标准 Ping',
-    'ping_extended'      => '扩大的 Ping',
-    'ping_unknown'       => '(无知法)',
-    'edit_service'       => '编辑网志目录服务',
-    'trackbacks'         => '迹回',
-    'editor_intro'       => '准备你的迹回评论于 <a href="%s">%s</a>.',
-    'editor_intro_none'  => '准备你的迹回评论.',
-    'trackback_note'     => '若要送出一个迹回评论于一个文章，去到文章目录然后点击那文章的"' . $LANG24[21] . '". 若要送出跟任何文章都无关的迹回, <a href="%s">请点击此处</a>.',
-    'pingback_explain'   => '输入一个 URL 来送出 Ping回. Ping回将会指到你的网站主页.',
-    'pingback_url'       => 'Ping回 URL',
-    'site_url'           => '此站的 URL',
-    'pingback_note'      => '若要给一个文章送出 ping回, 去到文章目录然后点击那文章的 "' . $LANG24[21] . '". 要送出一个跟任何文章都无关的 ping回, <a href="%s">请点击此处</a>.',
-    'pbtarget_missing'   => '无 Ping回 URL',
-    'pbtarget_required'  => '请输入一个ping回 URL',
-    'pb_error_details'   => '送出 ping回时发生错误:'
+    'may_take_a_while' => '请注意，送出 Ping回 和 Ping 可需要一段时间.',
+    'ping_results' => 'Ping 的结果',
+    'unknown_method' => '无知 ping 法',
+    'ping_success' => 'Ping 已送出.',
+    'error_site_name' => '请输入网站名.',
+    'error_site_url' => '请输入网站 URL.',
+    'error_ping_url' => '请输入正确的 Ping URL.',
+    'no_services' => '未设定网志目录服务.',
+    'services_headline' => '网志目录服务',
+    'service_explain' => '若要更改或删除网志目录服务，请点击一下服务的编辑标图. 要增加一个新的网志目录服务，请点击以上的 "建新".',
+    'service' => '服务',
+    'ping_method' => 'Ping 法',
+    'service_website' => '网站',
+    'service_ping_url' => '要ping 的URL',
+    'ping_standard' => '标准 Ping',
+    'ping_extended' => '扩大的 Ping',
+    'ping_unknown' => '(无知法)',
+    'edit_service' => '编辑网志目录服务',
+    'trackbacks' => '迹回',
+    'editor_intro' => '准备你的迹回评论于 <a href="%s">%s</a>.',
+    'editor_intro_none' => '准备你的迹回评论.',
+    'trackback_note' => '若要送出一个迹回评论于一个文章，去到文章目录然后点击那文章的"传送 Ping". 若要送出跟任何文章都无关的迹回, <a href="%s">请点击此处</a>.',
+    'pingback_explain' => '输入一个 URL 来送出 Ping回. Ping回将会指到你的网站主页.',
+    'pingback_url' => 'Ping回 URL',
+    'site_url' => '此站的 URL',
+    'pingback_note' => '若要给一个文章送出 ping回, 去到文章目录然后点击那文章的 "传送 Ping". 要送出一个跟任何文章都无关的 ping回, <a href="%s">请点击此处</a>.',
+    'pbtarget_missing' => '无 Ping回 URL',
+    'pbtarget_required' => '请输入一个ping回 URL',
+    'pb_error_details' => '送出 ping回时发生错误:',
+    'delete_trackback' => '要删除这迹回请按: '
 );
 
 ###############################################################################
 # directory.php
 
 $LANG_DIR = array(
-    'title'            => '文章目录',
-    'title_year'       => '文章目录为 %d',
+    'title' => '文章目录',
+    'title_year' => '文章目录为 %d',
     'title_month_year' => '文章目录为 %s %d',
-    'nav_top'          => '回到文章目录',
-    'no_articles'      => '没有文章.'
+    'nav_top' => '回到文章目录',
+    'no_articles' => '没有文章.'
 );
 
 ###############################################################################
@@ -1417,16 +1393,47 @@
 $LANG_WHATSNEW = array(
     'new_string' => '%n 新 %i 在最后 %t %s',
     'new_last' => '最后 %t %s',
-    'minutes'     => '分钟',
-    'hours'       => '小时',
-    'days'        => '日',
-    'weeks'       => '周',
-    'months'      => '月',
-    'minute'      => '分钟',
-    'hour'        => '小时',
-    'day'         => '日',
-    'week'        => '周',
-    'month'       => '月'
+    'minutes' => '分钟',
+    'hours' => '小时',
+    'days' => '日',
+    'weeks' => '周',
+    'months' => '月',
+    'minute' => '分钟',
+    'hour' => '小时',
+    'day' => '日',
+    'week' => '周',
+    'month' => '月'
+);
+
+###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => '一月',
+    2 => '二月',
+    3 => '三月',
+    4 => '四月',
+    5 => '五月',
+    6 => '六月',
+    7 => '七月',
+    8 => '八月',
+    9 => '九月',
+    10 => '十月',
+    11 => '十一月',
+    12 => '十二月'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Sunday',
+    2 => 'Monday',
+    3 => 'Tuesday',
+    4 => 'Wednesday',
+    5 => 'Thursday',
+    6 => 'Friday',
+    7 => 'Saturday'
 );
 
 ###############################################################################
@@ -1436,23 +1443,28 @@
 # display administration lists and edit pages
 
 $LANG_ADMIN = array(
-    'search'        => '搜寻',
+    'search' => '搜寻',
     'limit_results' => '限制结果',
-    'submit'        => '提交',
-    'edit'          => '编辑',
-    'admin_home'    => '管理主页',
-    'create_new'    => '建新',
-    'enabled'       => '启动',
-    'title'         => '标题',
-    'type'          => '类型',
-    'topic'         => '题目',
-    'help_url'      => '帮助文 URL',
-    'save'          => '存续',
-    'cancel'        => '取消',
-    'delete'        => '删除',
-    'copy'          => '复制',
-    'no_results'    => '- 找不到任何登录 -',
-    'data_error' => '处理订阅资料时发现错误. 请检查资料来源.'
+    'submit' => '提交',
+    'edit' => '编辑',
+    'edit_adv' => 'Adv. 编辑',
+    'admin_home' => '管理主页',
+    'create_new' => '建新',
+    'create_new_adv' => '建新 (Adv.)',
+    'enabled' => '启动',
+    'title' => '标题',
+    'type' => '类型',
+    'topic' => '题目',
+    'help_url' => '帮助文 URL',
+    'save' => '存续',
+    'cancel' => '取消',
+    'delete' => '删除',
+    'delete_sel' => '删除所选的',
+    'copy' => '复制',
+    'no_results' => '- 找不到任何登录 -',
+    'data_error' => '处理订阅资料时发现错误. 请检查资料来源.',
+    'preview' => '预览',
+    'records_found' => '已找到的资料'
 );
 
 ###############################################################################
@@ -1470,7 +1482,6 @@
     'flat' => '平面的',
     'nested' => '嵌套的',
     'threaded' => '线状的',
-
     'nocomment' => '勿评论'
 );
 
@@ -1514,4 +1525,4 @@
     -1 => '迹回已关掉'
 );
 
-?>
\ No newline at end of file
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/chinese_traditional_utf-8.php 1.4.1.src/cpanel-glprivate/language/chinese_traditional_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/chinese_traditional_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/chinese_traditional_utf-8.php	2006-12-16 15:15:38.000000000 -0600
@@ -3,10 +3,10 @@
 ###############################################################################
 # chinese_traditional_utf-8.php
 #
-# Last Modified: 2006-01-10
-# Version: 1.4.0
+# Last Modified: 2006-12-12
+# Version: 1.4.1
 #
-# This is the Chinese Traditional (UTF-8) language set for GeekLog 1.4.0
+# This is the Chinese Simplified (UTF-8) language set for GeekLog 1.4.1
 #
 # Copyright (C) 2003 Samuel M. Stone
 # sam@stonemicro.com
@@ -91,9 +91,9 @@
     45 => 'MySQL 錯誤號碼',
     46 => 'MySQL 錯誤訊息',
     47 => '用戶功能',
-    48 => '帳戶訊息',
+    48 => '我的帳戶',
     49 => '風格選擇',
-    50 => '錯誤的 SQL statement',
+    50 => '錯誤的 SQL 句子',
     51 => '幫助',
     52 => '新',
     53 => '管理者首頁',
@@ -161,35 +161,15 @@
     115 => '沒有新跡回的評論',
     116 => '跡回',
     117 => '目錄',
-    118 => '請繼續看下頁',	
+    118 => '請繼續看下頁',
     119 => "丟失了<a ref=\"{$_CONF['site_url']}/users.php?mode=getpassword\">密碼</a>?",
-    120 => '永久聯結此評論',	
+    120 => '永久聯結此評論',
     121 => '評論 (%d)',
-    122 => '跡回 (%d)',	
-    123 => '准許用所有的HTML'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-
-
-    1 => '事件日曆',
-    2 => '抱歉，沒有事件。',
-    3 => '時',
-    4 => '地',
-    5 => '事',
-    6 => '新增事件',
-    7 => '即將發生的事',
-    8 => '在將這事加進你的日曆之後，你可點擊 "我的日曆" 來觀看',
-    9 => '加進我的日曆',
-    10 => '從我的日曆中去除',
-    11 => "把這事加進 {$_USER['username']} 的日曆",
-    12 => '事件',
-    13 => '開始',
-    14 => '結束',
-    15 => '回到日曆'
+    122 => '跡回 (%d)',
+    123 => '准許用所有的HTML',
+    124 => '點擊刪除所選的項目',
+    125 => '你肯定要刪除所選的項目嗎？',
+    126 => '選 或 不選 所有的項目'
 );
 
 ###############################################################################
@@ -209,7 +189,6 @@
     11 => '發表評論',
     12 => '請填寫標題注評論欄',
     13 => '供你參考',
-
     14 => '預覽',
     15 => '報告這篇濫登文',
     16 => '標題',
@@ -348,11 +327,44 @@
     116 => '等待啟動的賬戶',
     117 => '你的賬戶現在等待管理員的啟動. 在賬戶未批准以前, 你還不能登入.',
     118 => "你的 {$_CONF['site_name']} 賬戶已被啟動. 你可通過以下的url 用先前以電信寄給你的用戶名 (<username>) 和密碼來登入.",
-    119 => "你若已忘記了你的密碼你可通過此 url 來要求一個新密碼",
+    119 => '你若已忘記了你的密碼你可通過此 url 來要求一個新密碼',
     120 => '帳戶已被啟動',
     121 => '服務',
     122 => '對不起, 目前禁止新用戶登記',
-    123 => "你是否 <a href=\"{$_CONF['site_url']}/users.php?mode=new\">新用戶</a>?"
+    123 => "你是否 <a href=\"{$_CONF['site_url']}/users.php?mode=new\">新用戶</a>?",
+    124 => '確認電信',
+    125 => '你必需要輸入同樣的電信地址!',
+    126 => '請重複輸入來確認',
+    127 => '你必須輸入目前的密碼來做任何修改.',
+    128 => '姓名',
+    129 => '密碼 &amp; 電信',
+    130 => '關於你',
+    131 => '每日摘要選項',
+    132 => '每日摘要功能',
+    133 => '評論顯示',
+    134 => '評論選項',
+    135 => '<li>顯示評論的默認模式</li><li>顯示評論的默認次序</li><li>設定顯示評論的極大數字 – 默認數字是 100</li>',
+    136 => '排除標題和作者',
+    137 => '過濾文章內容',
+    138 => '其他設定',
+    139 => '版面和語言',
+    140 => '<li>不要標題的圖標：勾此處就不會顯示標題的圖標</li><li>不要組件：勾了此處就不會顯示組件，只會顯示管理菜單，用戶菜單，和主題菜單<li>設定每頁顯示的極大文章數字</li><li>設定你的版面主題和喜歡的日期格式</li>',
+    141 => '隱私設定',
+    142 => '默認設定的是讓用戶和管理員們彼此可用電信交通而顯示你的在線狀態。取消這設定可保護你的隱私權.',
+    143 => '過濾組件內容',
+    144 => '顯示或隱藏組件',
+    145 => '你的公開簡介',
+    146 => '密碼和電信',
+    147 => '修改你的用戶密碼，電信，和自動登入作用。你需要輸入你的密碼或電信地址兩次來避免錯誤。',
+    148 => '用戶信息',
+    149 => '修改要顯示給其他用戶的你的用戶信息.<li>你的簽名會顯示在你的評論或論壇標語的下面</li><li>個人簡歷是用來分享你自己的簡介</li><li>分享你得 PGP 鑰匙</li>',
+    150 => '注意: 建議用Javascript 來提高功能',
+    151 => '預覽',
+    152 => '用戶和密碼',
+    153 => '版面和語言',
+    154 => '內容',
+    155 => '隱私',
+    156 => '刪除用戶'
 );
 
 ###############################################################################
@@ -429,7 +441,7 @@
     13 => '搜尋結果：沒有相配的',
     14 => '沒有你尋找的東西︰',
     15 => '請再嘗試',
-    16 => '主題',
+    16 => '標題',
     17 => '日期',
     18 => '作者',
     19 => "搜尋整個 {$_CONF['site_name']} 的新舊文章資料庫",
@@ -638,14 +650,13 @@
     31 => 'PHP 組件錯誤︰函數 %s 並不存在。',
     32 => '錯誤︰缺少欄位。',
     33 => '在入口組件你必須把 URL 輸入到 .rdf 檔案',
-    34 => '在 PHP 組件你必須輸入主題和函數',
-    35 => '在正常組件你必須輸入主題和內容',
+    34 => '在 PHP 組件你必須輸入標題和函數',
+    35 => '在正常組件你必須輸入標題和內容',
     36 => '在版面組件你必須輸入內容',
     37 => '不適當的 PHP 組件函數名',
     38 => '為防止執行任性的編碼，PHP 組件函數名必須以 "phpblock_" 作開始 (e.g. phpblock_getweather)。',
     39 => '放在那邊',
     40 => '左',
-
     41 => '右',
     42 => '在本系統的預設組件你必須輸入組件標題和次序',
     43 => '只可是首頁',
@@ -670,38 +681,9 @@
     62 => '文章限制',
     63 => '錯誤組件標題',
     64 => '你的標題不能空白或有HTML!',
-    65 => '次序'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => '事件編輯器',
-    2 => 'Error',
-    3 => '事件標題',
-    4 => '事件 URL',
-    5 => '事件開始日期',
-    6 => '事件結束日期',
-    7 => '事件地點',
-    8 => '事件描述',
-    9 => '(包括 http://)',
-    10 => '你必須提供日期時間、事件主題、與事件描述！',
-    11 => '事件管理員',
-    12 => '點擊下面的事件可修改或刪除它，點擊上面的新事件可創造一個新的。',
-    13 => '事件標題',
-    14 => '開始日期',
-    15 => '結束日期',
-    16 => '存取被拒絕',
-    17 => "企圖存取不允許的事件已被記錄。請<a href=\"{$_CONF['site_admin_url']}/event.php\">反回事件管理員晝面</a>。",
-    18 => '新事件',
-    19 => '管理員首頁',
-    20 => '保存',
-    21 => '取消',
-    22 => '刪除',
-    23 => '錯誤的開始日期.',
-    24 => '錯誤的結束日期.',
-    25 => '結束日期在開始日期前.'
+    65 => '次序',
+    66 => '自動標簽',
+    67 => '打勾來准許自動標簽'
 );
 
 ###############################################################################
@@ -792,7 +774,9 @@
     82 => '圖像處理',
     83 => '有期文章管理',
     84 => '權限',
-    85 => '完全顯示'
+    85 => '完全顯示',
+    86 => '高等編輯器',
+    87 => '文章統計'
 );
 
 ###############################################################################
@@ -833,7 +817,6 @@
 ###############################################################################
 # admin/user.php
 
-
 $LANG28 = array(
     1 => '用戶編輯器',
     2 => '用戶編號',
@@ -882,6 +865,35 @@
     45 => '有效的',
     46 => '用戶狀態',
     47 => '編輯',
+    48 => '顯示管理組',
+    49 => '管理組',
+    50 => '打勾來准許過濾此組為管理組',
+    51 => '在線日',
+    52 => '<br>注: "在線日" 是從登記的第一天到最後一次登入.',
+    53 => '登記過的',
+    54 => '批量的刪除',
+    55 => '這功能只會有效若你已在 config.php 裏設定為 <code>$_CONF[\'lastlogin\'] = true;</code>',
+    56 => '請選你想要刪除的用戶種類，然後按 "更新名單". 然後, 取消那些你不想刪除的用戶，再按刪除. 請注意，你只會刪除你現在所看見的用戶。若有多頁，後頁不會刪除。',
+    57 => '幻影用戶',
+    58 => '短期用戶',
+    59 => '老用戶',
+    60 => '用戶登記超過 ',
+    61 => ' 個月, 但未曾登入過.',
+    62 => '用戶登記超過 ',
+    63 => ' 個月, 然後在24小時內登入過, 但從此就未曾回來過.',
+    64 => '正常用戶, 但已經沒有回來 ',
+    65 => ' 個月.',
+    66 => '更新名單',
+    67 => '登記月數',
+    68 => '在線時數',
+    69 => '離線月數',
+    70 => '無法刪除',
+    71 => '刪除成功',
+    72 => '為選任何要刪除的用戶',
+    73 => '你肯定要將所選的用戶永久刪除嗎？',
+    74 => '最近用戶',
+    75 => '在最近',
+    76 => ' 月內登記的用戶。'
 );
 
 ###############################################################################
@@ -911,53 +923,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Sunday',
-    2 => 'Monday',
-    3 => 'Tuesday',
-    4 => 'Wednesday',
-    5 => 'Thursday',
-    6 => 'Friday',
-    7 => 'Saturday',
-    8 => '新增事件',
-    9 => '志樂事件',
-    10 => '事件給',
-    11 => '主日曆',
-    12 => '我的日曆',
-    13 => '一月',
-    14 => '二月',
-    15 => '三月',
-    16 => '四月',
-    17 => '五月',
-    18 => '六月',
-    19 => '七月',
-    20 => '八月',
-    21 => '九月',
-    22 => '十月',
-    23 => '十一月',
-    24 => '十二月',
-    25 => '回到',
-    26 => '整日',
-    27 => '星期',
-    28 => '個人日曆︰',
-    29 => '公眾日曆',
-    30 => '刪除事件',
-    31 => '新增',
-    32 => '事件',
-    33 => '星期',
-    34 => '時間',
-    35 => '迅速增加',
-    36 => '遞交',
-    37 => '抱歉，本站並不提供個人日曆。',
-    38 => '個人事件編輯器',
-    39 => '日',
-    40 => '周',
-    41 => '月'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1081,7 +1046,9 @@
     47 => '搜尋',
     48 => '編輯',
     49 => '新聞 Feed 的標誌',
-    50 => "跟網址有關 ({$_CONF['site_url']})"
+    50 => "跟網址有關 ({$_CONF['site_url']})",
+    51 => '你所選的文件名已經在另一個文流中用著了。請選另一個。',
+    52 => '錯誤: 文件名已存在'
 );
 
 ###############################################################################
@@ -1123,7 +1090,6 @@
     33 => '抱歉，你不能進入組件管理的首頁。請注意你的企圖已被記錄。',
     34 => '抱歉，你不能進入連結管理的首頁。請注意你的企圖已被記錄。',
     35 => '抱歉，你不能進入事件管理的首頁。請注意你的企圖已被記錄。',
-
     36 => '抱歉，你不能進入投票管理的首頁。請注意你的企圖已被記錄。',
     37 => '抱歉，你不能進入用戶管理的首頁。請注意你的企圖已被記錄。',
     38 => '抱歉，你不能進入 Plug-in 管理的首頁。請注意你的企圖已被記錄。',
@@ -1163,7 +1129,16 @@
     72 => '安裝插件時發生錯誤，細節請看 error.log.',
     73 => '卸載插件時發生錯誤，細節請看error.log.',
     74 => 'Ping 回已成功地送出.',
-    75 => '跡回必須用 POST 要求.'
+    75 => '跡回必須用 POST 要求.',
+    76 => '你真的要刪除這項目嗎？',
+    77 => '警告:<br>你已默認UTF-8 為語文編碼。 但是，你的服務器不支持多字節編碼。請安裝 mbstring 入 PHP 或選另一種語文編碼。',
+    78 => '請確定你的電信地址跟你的確認電信地址是完全同樣的。',
+    79 => '你想打開的網頁提交到已經在這網站不存在的功能。',
+    80 => '建立此文流的插件已被關閉。你不能修改此文流除非你從新啟動有關插件。',
+    81 => '你可能錯誤的輸入了你的用戶資料。請在下面再次登入。',
+    82 => '你已超過准許的登入次數。 等會兒再試。',
+    83 => '要改密碼，電信地址，或要記得你多久，請輸入你的目前密碼。',
+    84 => '要刪除你的用戶帳號，請輸入你的目前密碼。'
 );
 
 ###############################################################################
@@ -1180,7 +1155,6 @@
     'securitygroups' => '安全小組',
     'editrootmsg' => "即使你是用戶管理員；但你不能編輯 root 用戶。你能編輯所有的用戶除了 root 用戶。請注意所有企圖非法地編輯 root 用戶的動作已被記錄。請回到<a href=\"{$_CONF['site_admin_url']}/user.php\">用戶管理頁</a>去。",
     'securitygroupsmsg' => '選擇這位用戶屬於的小組。',
-
     'groupeditor' => '小組編輯器',
     'description' => '描述',
     'name' => '名字',
@@ -1205,9 +1179,7 @@
     'edit' => '編輯',
     'none' => '沒有',
     'accessdenied' => '存取被拒絕',
-
     'storydenialmsg' => "因未被批准，你不可以觀看這個文章。這是可能是因為你並不是 {$_CONF['site_name']} 的會員。請<a href=users.php?mode=new>成為會員</a>。",
-    'eventdenialmsg' => "因未被批准，你不可以觀看這個事件。這是可能是因為你並不是 {$_CONF['site_name']} 的會員。請<a href=users.php?mode=new>成為會員</a>。",
     'nogroupsforcoregroup' => '這小組不屬於任何其它的小組',
     'grouphasnorights' => ' 這小組沒有管理權。',
     'newgroup' => '新小組',
@@ -1313,98 +1285,99 @@
 ###############################################################################
 # trackback.php
 
-$LANG_TRB = array (
-    'trackback'          => '跡回',
-    'from'               => '從',
-    'tracked_on'         => '跡回於',
-    'read_more'          => '[讀下文]',
-    'intro_text'         => "這是別人對 '%s' 的看法:",
-    'no_comments'        => '此登錄無跡回評論.',
+$LANG_TRB = array(
+    'trackback' => '跡回',
+    'from' => '從',
+    'tracked_on' => '跡回於',
+    'read_more' => '[讀下文]',
+    'intro_text' => '這是別人對 \'%s\' 的看法:',
+    'no_comments' => '此登錄無跡回評論.',
     'this_trackback_url' => '此登錄的跡回 URL:',
-    'num_comments'       => '%d 跡回評論',
-    'send_trackback'     => '送出 Ping',
-    'preview'            => '預覽',
-    'editor_title'       => '送出跡回評論',
-    'trackback_url'      => '跡回 URL',
-    'entry_url'          => '登錄 URL',
-    'entry_title'        => '登錄標題',
-    'blog_name'          => '網站名',
-    'excerpt'            => '摘錄',
-    'truncate_warning'   => '注: 目的站可能將你的摘錄縮短',
-    'button_send'        => '送出',
-    'button_preview'     => '預覽',
-    'send_error'         => '錯誤',
+    'num_comments' => '%d 跡回評論',
+    'send_trackback' => '送出 Ping',
+    'preview' => '預覽',
+    'editor_title' => '送出跡回評論',
+    'trackback_url' => '跡回 URL',
+    'entry_url' => '登錄 URL',
+    'entry_title' => '登錄標題',
+    'blog_name' => '網站名',
+    'excerpt' => '摘錄',
+    'truncate_warning' => '注: 目的站可能將你的摘錄縮短',
+    'button_send' => '送出',
+    'button_preview' => '預覽',
+    'send_error' => '錯誤',
     'send_error_details' => '送出跡回評論時發生錯誤:',
-    'url_missing'        => '無登錄 URL',
-    'url_required'       => '請輸入登錄的最少一個 URL.',
-    'target_missing'     => '無跡回 URL',
-    'target_required'    => '請輸入一個跡回 URL',
-    'error_socket'       => '無法打開 socket.',
-    'error_response'     => '不明白你的反應.',
-    'error_unspecified'  => '為指明的錯誤.',
-    'select_url'         => '選擇跡回 URL',
-    'not_found'          => '找不到跡回 URL',
-    'autodetect_failed'  => '志樂探測不到關於你要送出評論的跡回 URL. 以下請輸入.',
-    'trackback_explain'  => '從以下的聯結中，請選你要送出評論的 URL. 志樂將會決定正確的跡回 URL. 或者你若已知道的話，可 <a href="%s">在此輸入它</a>.',
+    'url_missing' => '無登錄 URL',
+    'url_required' => '請輸入登錄的最少一個 URL.',
+    'target_missing' => '無跡回 URL',
+    'target_required' => '請輸入一個跡回 URL',
+    'error_socket' => '無法打開 socket.',
+    'error_response' => '不明白你的反應.',
+    'error_unspecified' => '為指明的錯誤.',
+    'select_url' => '選擇跡回 URL',
+    'not_found' => '找不到跡回 URL',
+    'autodetect_failed' => '志樂探測不到關於你要送出評論的跡回 URL. 以下請輸入.',
+    'trackback_explain' => '從以下的聯結中，請選你要送出評論的 URL. 志樂將會決定正確的跡回 URL. 或者你若已知道的話，可 <a href="%s">在此輸入它</a>.',
     'no_links_trackback' => '找不到聯結. 你不能送出此登錄的跡回評論.',
-    'pingback'           => 'Ping 回',
-    'pingback_results'   => 'Ping 回的結果',
-    'send_pings'         => '送出 ping',
-    'send_pings_for'     => '送出ping 於 "%s"',
-    'no_links_pingback'  => '找不到聯結. 為此登錄無 Ping 回送出.',
-    'pingback_success'   => 'Ping 回已送出.',
-    'no_pingback_url'    => '無 ping 回 URL.',
-    'resend'             => '重送',
-    'ping_all_explain'   => '你現在可通知你所聯結的網站 (<a href="http://en.wikipedia.org/wiki/Pingback">Ping 回</a>), 廣告你的站已經被更新於ping 過網志目錄服務, 或送出一個 <a href="http://en.wikipedia.org/wiki/Trackback">跡回</a> 評論若你寫過有關一個在別人的網站上的登錄.',
-    'pingback_button'    => '送出Ping 回',
-    'pingback_short'     => '送出Ping 回到所有跟此登錄聯結的網站.',
-    'pingback_disabled'  => '(Ping 回已中止)',
-    'ping_button'        => '送出Ping',
-    'ping_short'         => 'Ping 網志目錄服務.',
-    'ping_disabled'      => '(Ping 已中止)',
-    'trackback_button'   => '送出跡回',
-    'trackback_short'    => '送出一個跡回評論.',
+    'pingback' => 'Ping 回',
+    'pingback_results' => 'Ping 回的結果',
+    'send_pings' => '送出 ping',
+    'send_pings_for' => '送出ping 於 "%s"',
+    'no_links_pingback' => '找不到聯結. 為此登錄無 Ping 回送出.',
+    'pingback_success' => 'Ping 回已送出.',
+    'no_pingback_url' => '無 ping 回 URL.',
+    'resend' => '重送',
+    'ping_all_explain' => '你現在可通知你所聯結的網站 (<a href="http://en.wikipedia.org/wiki/Pingback">Ping 回</a>), 廣告你的站已經被更新於ping 過網志目錄服務, 或送出一個 <a href="http://en.wikipedia.org/wiki/Trackback">跡回</a> 評論若你寫過有關一個在別人的網站上的登錄.',
+    'pingback_button' => '送出Ping 回',
+    'pingback_short' => '送出Ping 回到所有跟此登錄聯結的網站.',
+    'pingback_disabled' => '(Ping 回已中止)',
+    'ping_button' => '送出Ping',
+    'ping_short' => 'Ping 網志目錄服務.',
+    'ping_disabled' => '(Ping 已中止)',
+    'trackback_button' => '送出跡回',
+    'trackback_short' => '送出一個跡回評論.',
     'trackback_disabled' => '(跡回一中止)',
-    'may_take_a_while'   => '請注意，送出 Ping回 和 Ping 可需要一段時間.',
-    'ping_results'       => 'Ping 的結果',
-    'unknown_method'     => '無知 ping 法',
-    'ping_success'       => 'Ping 已送出.',
-    'error_site_name'    => '請輸入網站名.',
-    'error_site_url'     => '請輸入網站 URL.',
-    'error_ping_url'     => '請輸入正確的 Ping URL.',
-    'no_services'        => '未設定網志目錄服務.',
-    'services_headline'  => '網志目錄服務',
-    'service_explain'    => '若要更改或刪除網志目錄服務，請點擊一下服務的編輯標圖. 要增加一個新的網志目錄服務，請點擊以上的 "建新".',
-    'service'            => '服務',
-    'ping_method'        => 'Ping 法',
-    'service_website'    => '網站',
-    'service_ping_url'   => '要ping 的URL',
-    'ping_standard'      => '標準 Ping',
-    'ping_extended'      => '擴大的 Ping',
-    'ping_unknown'       => '(無知法)',
-    'edit_service'       => '編輯網志目錄服務',
-    'trackbacks'         => '跡回',
-    'editor_intro'       => '準備你的跡回評論於 <a href="%s">%s</a>.',
-    'editor_intro_none'  => '準備你的跡回評論.',
-    'trackback_note'     => '若要送出一個跡回評論于一個文章，去到文章目錄然後點擊那文章的"' . $LANG24[21] . '". 若要送出跟任何文章都無關的跡回, <a href="%s">請點擊此處</a>.',
-    'pingback_explain'   => '輸入一個 URL 來送出 Ping回. Ping回將會指到你的網站主頁.',
-    'pingback_url'       => 'Ping回 URL',
-    'site_url'           => '此站的 URL',
-    'pingback_note'      => '若要給一個文章送出 ping回, 去到文章目錄然後點擊那文章的 "' . $LANG24[21] . '". 要送出一個跟任何文章都無關的 ping回, <a href="%s">請點擊此處</a>.',
-    'pbtarget_missing'   => '無 Ping回 URL',
-    'pbtarget_required'  => '請輸入一個ping回 URL',
-    'pb_error_details'   => '送出 ping回時發生錯誤:'
+    'may_take_a_while' => '請注意，送出 Ping回 和 Ping 可需要一段時間.',
+    'ping_results' => 'Ping 的結果',
+    'unknown_method' => '無知 ping 法',
+    'ping_success' => 'Ping 已送出.',
+    'error_site_name' => '請輸入網站名.',
+    'error_site_url' => '請輸入網站 URL.',
+    'error_ping_url' => '請輸入正確的 Ping URL.',
+    'no_services' => '未設定網志目錄服務.',
+    'services_headline' => '網志目錄服務',
+    'service_explain' => '若要更改或刪除網志目錄服務，請點擊一下服務的編輯標圖. 要增加一個新的網志目錄服務，請點擊以上的 "建新".',
+    'service' => '服務',
+    'ping_method' => 'Ping 法',
+    'service_website' => '網站',
+    'service_ping_url' => '要ping 的URL',
+    'ping_standard' => '標準 Ping',
+    'ping_extended' => '擴大的 Ping',
+    'ping_unknown' => '(無知法)',
+    'edit_service' => '編輯網志目錄服務',
+    'trackbacks' => '跡回',
+    'editor_intro' => '準備你的跡回評論於 <a href="%s">%s</a>.',
+    'editor_intro_none' => '準備你的跡回評論.',
+    'trackback_note' => '若要送出一個跡回評論于一個文章，去到文章目錄然後點擊那文章的"傳送 Ping". 若要送出跟任何文章都無關的跡回, <a href="%s">請點擊此處</a>.',
+    'pingback_explain' => '輸入一個 URL 來送出 Ping回. Ping回將會指到你的網站主頁.',
+    'pingback_url' => 'Ping回 URL',
+    'site_url' => '此站的 URL',
+    'pingback_note' => '若要給一個文章送出 ping回, 去到文章目錄然後點擊那文章的 "傳送 Ping". 要送出一個跟任何文章都無關的 ping回, <a href="%s">請點擊此處</a>.',
+    'pbtarget_missing' => '無 Ping回 URL',
+    'pbtarget_required' => '請輸入一個ping回 URL',
+    'pb_error_details' => '送出 ping回時發生錯誤:',
+    'delete_trackback' => '要刪除這跡回請按: '
 );
 
 ###############################################################################
 # directory.php
 
 $LANG_DIR = array(
-    'title'            => '文章目錄',
-    'title_year'       => '文章目錄為 %d',
+    'title' => '文章目錄',
+    'title_year' => '文章目錄為 %d',
     'title_month_year' => '文章目錄為 %s %d',
-    'nav_top'          => '回到文章目錄',
-    'no_articles'      => '沒有文章.'
+    'nav_top' => '回到文章目錄',
+    'no_articles' => '沒有文章.'
 );
 
 ###############################################################################
@@ -1420,16 +1393,47 @@
 $LANG_WHATSNEW = array(
     'new_string' => '%n 新 %i 在最後 %t %s',
     'new_last' => '最後 %t %s',
-    'minutes'     => '分鐘',
-    'hours'       => '小時',
-    'days'        => '日',
-    'weeks'       => '周',
-    'months'      => '月',
-    'minute'      => '分鐘',
-    'hour'        => '小時',
-    'day'         => '日',
-    'week'        => '周',
-    'month'       => '月'
+    'minutes' => '分鐘',
+    'hours' => '小時',
+    'days' => '日',
+    'weeks' => '周',
+    'months' => '月',
+    'minute' => '分鐘',
+    'hour' => '小時',
+    'day' => '日',
+    'week' => '周',
+    'month' => '月'
+);
+
+###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => '一月',
+    2 => '二月',
+    3 => '三月',
+    4 => '四月',
+    5 => '五月',
+    6 => '六月',
+    7 => '七月',
+    8 => '八月',
+    9 => '九月',
+    10 => '十月',
+    11 => '十一月',
+    12 => '十二月'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Sunday',
+    2 => 'Monday',
+    3 => 'Tuesday',
+    4 => 'Wednesday',
+    5 => 'Thursday',
+    6 => 'Friday',
+    7 => 'Saturday'
 );
 
 ###############################################################################
@@ -1439,23 +1443,28 @@
 # display administration lists and edit pages
 
 $LANG_ADMIN = array(
-    'search'        => '搜尋',
+    'search' => '搜尋',
     'limit_results' => '限制結果',
-    'submit'        => '提交',
-    'edit'          => '編輯',
-    'admin_home'    => '管理主頁',
-    'create_new'    => '建新',
-    'enabled'       => '啟動',
-    'title'         => '標題',
-    'type'          => '類型',
-    'topic'         => '題目',
-    'help_url'      => '幫助文 URL',
-    'save'          => '存續',
-    'cancel'        => '取消',
-    'delete'        => '刪除',
-    'copy'          => '複製',
-    'no_results'    => '- 找不到任何登錄 -',
-    'data_error' => '處理訂閱資料時發現錯誤. 請檢查資料來源.'
+    'submit' => '提交',
+    'edit' => '編輯',
+    'edit_adv' => 'Adv. 編輯',
+    'admin_home' => '管理主頁',
+    'create_new' => '建新',
+    'create_new_adv' => '建新 (Adv.)',
+    'enabled' => '啟動',
+    'title' => '標題',
+    'type' => '類型',
+    'topic' => '題目',
+    'help_url' => '幫助文 URL',
+    'save' => '存續',
+    'cancel' => '取消',
+    'delete' => '刪除',
+    'delete_sel' => '刪除所選的',
+    'copy' => '複製',
+    'no_results' => '- 找不到任何登錄 -',
+    'data_error' => '處理訂閱資料時發現錯誤. 請檢查資料來源.',
+    'preview' => '預覽',
+    'records_found' => '已找到的資料'
 );
 
 ###############################################################################
@@ -1473,7 +1482,6 @@
     'flat' => '平面的',
     'nested' => '嵌套的',
     'threaded' => '線狀的',
-
     'nocomment' => '勿評論'
 );
 
@@ -1517,4 +1525,4 @@
     -1 => '跡回已關掉'
 );
 
-?>
\ No newline at end of file
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/croatian.php 1.4.1.src/cpanel-glprivate/language/croatian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/croatian.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/croatian.php	2006-09-17 03:58:43.000000000 -0500
@@ -163,28 +163,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Kalendar dogaaja',
-    2 => 'ao nam je, trenutno nema nikakvih dogaanja.',
-    3 => 'Kada',
-    4 => 'Gdje',
-    5 => 'Opis',
-    6 => 'Dodaj dogaaj',
-    7 => 'Nadolazea dogaanja',
-    8 => 'Dodavanjem ovog dogaanja vaem kalendaru, moete brzo pregledati samo ona dogaanja koja vas interesiraju pritiskom na  "Moj kalendar" u korisnikim funkcijama.',
-    9 => 'Dodaj u Moj kalendar',
-    10 => 'Makni iz Moj kalendar',
-    11 => "Dodaj dogaaj u {$_USER['username']} kalendar",
-    12 => 'Dogaaji',
-    13 => 'Poetak',
-    14 => 'Kraj',
-    15 => 'Natrag na kalendar'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -346,7 +328,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -663,38 +678,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editiranje dogaaja',
-    2 => 'Error',
-    3 => 'Event Title',
-    4 => 'Event URL',
-    5 => 'Event Start Date',
-    6 => 'Event End Date',
-    7 => 'Event Location',
-    8 => 'Event Description',
-    9 => '(include http://)',
-    10 => 'You must provide the dates/times, description and event location!',
-    11 => 'Event Manager',
-    12 => 'To modify or delete an event, click on that event below.  To create a new event click on new event above. Click on [C] to create a copy of an existing event.',
-    13 => 'Naziv dogaaja',
-    14 => 'Poetak (datum)',
-    15 => 'Kraj (datum)',
-    16 => 'Pristup Odbijen',
-    17 => "You are trying to access an event that you don't have rights to.  This attempt has been logged. Please <a href=\"{$_CONF['site_admin_url']}/event.php\">go back to the event administration screen</a>.",
-    18 => 'New Event',
-    19 => 'Admin Home',
-    20 => 'snimi',
-    21 => 'poniti',
-    22 => 'obrii',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -785,7 +771,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -873,7 +861,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -903,53 +920,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Nedelja',
-    2 => 'Ponedeljak',
-    3 => 'Utorak',
-    4 => 'Srijeda',
-    5 => 'etvrtak',
-    6 => 'Petak',
-    7 => 'Subota',
-    8 => 'Dodaj dogaaj',
-    9 => '%s Event',
-    10 => 'Events for',
-    11 => 'Master Calendar',
-    12 => 'Moj kalendar',
-    13 => 'Sijeanj',
-    14 => 'Veljaa',
-    15 => 'Oujak',
-    16 => 'Travanj',
-    17 => 'Svibanj',
-    18 => 'Lipanj',
-    19 => 'Srpanj',
-    20 => 'Kolovoz',
-    21 => 'Rujan',
-    22 => 'Listopad',
-    23 => 'Studeni',
-    24 => 'Prosinac',
-    25 => 'Natrag na ',
-    26 => 'Cijeli dan',
-    27 => 'Tjedan',
-    28 => 'Osobni kalendar za',
-    29 => 'Javni kalendar',
-    30 => 'obrii dogaaj',
-    31 => 'Dodaj',
-    32 => 'Event',
-    33 => 'Datum',
-    34 => 'Vrijeme',
-    35 => 'Brzo dodavanje',
-    36 => 'Potvrdi',
-    37 => 'ao mi je. Mogunost uporabe osobnog kalendara na ovim stranicama nije dozvoljena.',
-    38 => 'Personal Event Editor',
-    39 => 'Dan',
-    40 => 'Tjedan',
-    41 => 'Mjesec'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1073,7 +1043,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1154,7 +1126,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1185,7 +1166,7 @@
     'no' => 'Ne',
     'corerightsdescr' => "This group is a core {$_CONF['site_name']} Group.  Therefore the rights for this group cannot be edited.  Below is a read-only list of the rights this group has access to.",
     'groupmsg' => 'Security Groups on this site are hierarchical.  By adding this group to any of the groups below you will giving this group the same rights that those groups have.  Where possible it is encouraged you use the groups below to give rights to a group.  If you need this group to have custom rights then you can select the rights to various site features in the section below called \'Rights\'.  To add this group to any of the ones below simply check the box next to the group(s) that you want.',
-    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this groups belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
+    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this group belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
     'rightsdescr' => 'A groups access to a certain right below can be given directly to the group OR to a different group that this group is a part of.  The ones you see below without a checkbox are the rights that have been given to this group because it belongs to another group with that right.  The rights with checkboxes below are rights that can be given directly to this group.',
     'lock' => 'Lock',
     'members' => 'lanovi',
@@ -1196,7 +1177,6 @@
     'none' => 'None',
     'accessdenied' => 'Pristup odbijen',
     'storydenialmsg' => "You do not have access to view this story.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
-    'eventdenialmsg' => "You do not have access to view this event.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
     'nogroupsforcoregroup' => 'This group doesn\'t belong to any of the other groups',
     'grouphasnorights' => 'This group doesn\'t have access to any of the administrative features of this site',
     'newgroup' => 'Nova Grupa',
@@ -1382,7 +1362,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1422,6 +1403,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Sijeanj',
+    2 => 'Veljaa',
+    3 => 'Oujak',
+    4 => 'Travanj',
+    5 => 'Svibanj',
+    6 => 'Lipanj',
+    7 => 'Srpanj',
+    8 => 'Kolovoz',
+    9 => 'Rujan',
+    10 => 'Listopad',
+    11 => 'Studeni',
+    12 => 'Prosinac'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Nedelja',
+    2 => 'Ponedeljak',
+    3 => 'Utorak',
+    4 => 'Srijeda',
+    5 => 'etvrtak',
+    6 => 'Petak',
+    7 => 'Subota'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1432,8 +1444,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1442,9 +1456,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/croatian_utf-8.php 1.4.1.src/cpanel-glprivate/language/croatian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/croatian_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/croatian_utf-8.php	2006-09-17 03:58:43.000000000 -0500
@@ -165,28 +165,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Kalendar dogaðaja',
-    2 => '®ao nam je, trenutno nema nikakvih dogaðanja.',
-    3 => 'Kada',
-    4 => 'Gdje',
-    5 => 'Opis',
-    6 => 'Dodaj dogaðaj',
-    7 => 'Nadolazeæa dogaðanja',
-    8 => 'Dodavanjem ovog dogaðanja va¹em kalendaru, mo¾ete brzo pregledati samo ona dogaðanja koja vas interesiraju pritiskom na  "Moj kalendar" u korisnièkim funkcijama.',
-    9 => 'Dodaj u Moj kalendar',
-    10 => 'Makni iz Moj kalendar',
-    11 => "Dodaj dogaðaj u {$_USER['username']} kalendar",
-    12 => 'Dogaðaji',
-    13 => 'Poèetak',
-    14 => 'Kraj',
-    15 => 'Natrag na kalendar'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -348,7 +330,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -665,38 +680,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Event Editor',
-    2 => 'Error',
-    3 => 'Event Title',
-    4 => 'Event URL',
-    5 => 'Event Start Date',
-    6 => 'Event End Date',
-    7 => 'Event Location',
-    8 => 'Event Description',
-    9 => '(include http://)',
-    10 => 'You must provide the dates/times, description and event location!',
-    11 => 'Event Manager',
-    12 => 'To modify or delete an event, click on that event below.  To create a new event click on new event above. Click on [C] to create a copy of an existing event.',
-    13 => 'Event Title',
-    14 => 'Start Date',
-    15 => 'End Date',
-    16 => 'Access Denied',
-    17 => "You are trying to access an event that you don't have rights to.  This attempt has been logged. Please <a href=\"{$_CONF['site_admin_url']}/event.php\">go back to the event administration screen</a>.",
-    18 => 'New Event',
-    19 => 'Admin Home',
-    20 => 'save',
-    21 => 'cancel',
-    22 => 'delete',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -787,7 +773,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -875,7 +863,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -905,53 +922,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Nedelja',
-    2 => 'Ponedeljak',
-    3 => 'Utorak',
-    4 => 'Srijeda',
-    5 => 'Èetvrtak',
-    6 => 'Petak',
-    7 => 'Subota',
-    8 => 'Dodaj dogaðaj',
-    9 => '%s Event',
-    10 => 'Events for',
-    11 => 'Master Calendar',
-    12 => 'Moj kalendar',
-    13 => 'Sijeèanj',
-    14 => 'Veljaèa',
-    15 => 'O¾ujak',
-    16 => 'Travanj',
-    17 => 'Svibanj',
-    18 => 'Lipanj',
-    19 => 'Srpanj',
-    20 => 'Kolovoz',
-    21 => 'Rujan',
-    22 => 'Listopad',
-    23 => 'Studeni',
-    24 => 'Prosinac',
-    25 => 'Natrag na ',
-    26 => 'Cijeli dan',
-    27 => 'Tjedan',
-    28 => 'Osobni kalendar za',
-    29 => 'Public Calendar',
-    30 => 'delete event',
-    31 => 'Dodaj',
-    32 => 'Event',
-    33 => 'Datum',
-    34 => 'Vrijeme',
-    35 => 'Brzo dodavanje',
-    36 => 'Potvrdi',
-    37 => 'Sorry, the personal calendar feature is not enabled on this site',
-    38 => 'Personal Event Editor',
-    39 => 'Dan',
-    40 => 'Tjedan',
-    41 => 'Mjesec'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1075,7 +1045,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1156,7 +1128,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1187,7 +1168,7 @@
     'no' => 'Ne',
     'corerightsdescr' => "This group is a core {$_CONF['site_name']} Group.  Therefore the rights for this group cannot be edited.  Below is a read-only list of the rights this group has access to.",
     'groupmsg' => 'Security Groups on this site are hierarchical.  By adding this group to any of the groups below you will giving this group the same rights that those groups have.  Where possible it is encouraged you use the groups below to give rights to a group.  If you need this group to have custom rights then you can select the rights to various site features in the section below called \'Rights\'.  To add this group to any of the ones below simply check the box next to the group(s) that you want.',
-    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this groups belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
+    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this group belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
     'rightsdescr' => 'A groups access to a certain right below can be given directly to the group OR to a different group that this group is a part of.  The ones you see below without a checkbox are the rights that have been given to this group because it belongs to another group with that right.  The rights with checkboxes below are rights that can be given directly to this group.',
     'lock' => 'Lock',
     'members' => 'èlanovi',
@@ -1198,7 +1179,6 @@
     'none' => 'None',
     'accessdenied' => 'Pristup odbijen',
     'storydenialmsg' => "You do not have access to view this story.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
-    'eventdenialmsg' => "You do not have access to view this event.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
     'nogroupsforcoregroup' => 'This group doesn\'t belong to any of the other groups',
     'grouphasnorights' => 'This group doesn\'t have access to any of the administrative features of this site',
     'newgroup' => 'Nova Grupa',
@@ -1384,7 +1364,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1424,6 +1405,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Sijeèanj',
+    2 => 'Veljaèa',
+    3 => 'O¾ujak',
+    4 => 'Travanj',
+    5 => 'Svibanj',
+    6 => 'Lipanj',
+    7 => 'Srpanj',
+    8 => 'Kolovoz',
+    9 => 'Rujan',
+    10 => 'Listopad',
+    11 => 'Studeni',
+    12 => 'Prosinac'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Nedelja',
+    2 => 'Ponedeljak',
+    3 => 'Utorak',
+    4 => 'Srijeda',
+    5 => 'Èetvrtak',
+    6 => 'Petak',
+    7 => 'Subota'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1434,8 +1446,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1444,9 +1458,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/czech.php 1.4.1.src/cpanel-glprivate/language/czech.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/czech.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/czech.php	2006-09-17 03:58:43.000000000 -0500
@@ -162,28 +162,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Kalend',
-    2 => 'Nejsou dn udlosti k zobrazen.',
-    3 => 'Kdy',
-    4 => 'Kde',
-    5 => 'Popis',
-    6 => 'Pidat udlost',
-    7 => 'Blc se udlosti',
-    8 => 'Kdy toto pidte do Osobnho kalende, uvidte je jen Vy ve svm Osobnm kalendi v Uivatelskch funkcch.',
-    9 => 'Pidat do osobnho kalende',
-    10 => 'Odebrat z osobnho kalende',
-    11 => "Pidn udlosti do kalende {$_USER['username']}'",
-    12 => 'Udlost',
-    13 => 'Zan',
-    14 => 'Kon',
-    15 => 'Zpt na kalend'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -345,7 +327,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -662,38 +677,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editor udlost',
-    2 => 'Error',
-    3 => 'Titulek udlosti',
-    4 => 'URL udlosti',
-    5 => 'Datum zatku',
-    6 => 'Datum konce&nbsp;&nbsp;&nbsp;',
-    7 => 'Umstn udlosti',
-    8 => 'Popis udlosti',
-    9 => '(vetn http://)',
-    10 => 'Muste zadat datum/as, popis a umstn udlosti!',
-    11 => 'Manaer udlost',
-    12 => 'Pro zmnu a smazn udlosti, klepnte na tuto ne.  Pro vytvoen nov udlosti klepnte na Nov udlost ve.',
-    13 => 'Titulek udlosti',
-    14 => 'Datum zatku',
-    15 => 'Datum konce&nbsp;&nbsp;&nbsp;',
-    16 => 'Pstup odepen',
-    17 => "Pokoute se editovat udlost na n nemte dostaten prva.  Tento pokus byl zaznamenn. Prosm <a href=\"{$_CONF['site_admin_url']}/event.php\">vrate se na administraci udlost</a>.",
-    18 => 'Nov udlost',
-    19 => 'Administrace',
-    20 => 'uloit',
-    21 => 'zruit akci',
-    22 => 'smazat',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -784,7 +770,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -872,7 +860,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -902,53 +919,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'nedle',
-    2 => 'pondl',
-    3 => 'ter',
-    4 => 'steda',
-    5 => 'tvrtek',
-    6 => 'ptek',
-    7 => 'sobota',
-    8 => 'Pidat udlost',
-    9 => 'Udlosti weblogu',
-    10 => 'Udlosti uivatele',
-    11 => 'Veejn kalend',
-    12 => 'Osobn kalend',
-    13 => 'leden',
-    14 => 'nor',
-    15 => 'bezen',
-    16 => 'duben',
-    17 => 'kvten',
-    18 => 'erven',
-    19 => 'ervenec',
-    20 => 'srpen',
-    21 => 'z',
-    22 => 'jen',
-    23 => 'listopad',
-    24 => 'prosinec',
-    25 => 'Zpt na ',
-    26 => 'Kad den',
-    27 => 'Tden',
-    28 => 'Osobn kalend pro',
-    29 => 'Veejn kalend',
-    30 => 'smazat udlost',
-    31 => 'Pidat udlost',
-    32 => 'Udlost',
-    33 => 'Datum',
-    34 => 'as',
-    35 => 'Rychl pidn',
-    36 => 'Potvrdit',
-    37 => 'Promite, Osobn kalend nen na tchto strnkch podporovn',
-    38 => 'Editor osobnch udlost',
-    39 => 'Den',
-    40 => 'Tden',
-    41 => 'Msc'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1072,7 +1042,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1153,7 +1125,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1184,7 +1165,7 @@
     'no' => 'Ne',
     'corerightsdescr' => "This group is a core {$_CONF['site_name']} Group.  Therefore the rights for this group cannot be edited.  Below is a read-only list of the rights this group has access to.",
     'groupmsg' => 'Security Groups on this site are hierarchical.  By adding this group to any of the groups below you will giving this group the same rights that those groups have.  Where possible it is encouraged you use the groups below to give rights to a group.  If you need this group to have custom rights then you can select the rights to various site features in the section below called \'Rights\'.  To add this group to any of the ones below simply check the box next to the group(s) that you want.',
-    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this groups belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
+    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this group belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
     'rightsdescr' => 'A groups access to a certain right below can be given directly to the group OR to a different group that this group is a part of.  The ones you see below without a checkbox are the rights that have been given to this group because it belongs to another group with that right.  The rights with checkboxes below are rights that can be given directly to this group.',
     'lock' => 'Uzameno',
     'members' => 'Uivatel',
@@ -1195,7 +1176,6 @@
     'none' => 'Nen',
     'accessdenied' => 'Pstup odepen',
     'storydenialmsg' => "You do not have access to view this story.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
-    'eventdenialmsg' => "You do not have access to view this event.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
     'nogroupsforcoregroup' => 'This group doesn\'t belong to any of the other groups',
     'grouphasnorights' => 'This group doesn\'t have access to any of the administrative features of this site',
     'newgroup' => 'Nov skupina uivatel',
@@ -1381,7 +1361,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1421,6 +1402,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'leden',
+    2 => 'nor',
+    3 => 'bezen',
+    4 => 'duben',
+    5 => 'kvten',
+    6 => 'erven',
+    7 => 'ervenec',
+    8 => 'srpen',
+    9 => 'z',
+    10 => 'jen',
+    11 => 'listopad',
+    12 => 'prosinec'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'nedle',
+    2 => 'pondl',
+    3 => 'ter',
+    4 => 'steda',
+    5 => 'tvrtek',
+    6 => 'ptek',
+    7 => 'sobota'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1431,8 +1443,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1441,9 +1455,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/czech_utf-8.php 1.4.1.src/cpanel-glprivate/language/czech_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/czech_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/czech_utf-8.php	2006-09-17 03:58:43.000000000 -0500
@@ -162,28 +162,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Kalendář',
-    2 => 'Nejsou žádné události k zobrazení.',
-    3 => 'Kdy',
-    4 => 'Kde',
-    5 => 'Popis',
-    6 => 'Přidat událost',
-    7 => 'Blížící se události',
-    8 => 'Když toto přidáte do Osobního kalendáře, uvidíte je jen Vy ve svém Osobním kalendáři v Uživatelských funkcích.',
-    9 => 'Přidat do osobního kalendáře',
-    10 => 'Odebrat z osobního kalendáře',
-    11 => "Přidání události do kalendáře {$_USER['username']}'",
-    12 => 'Událost',
-    13 => 'Začíná',
-    14 => 'Končí',
-    15 => 'Zpět na kalendář'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -345,7 +327,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -662,38 +677,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editor událostí',
-    2 => 'Error',
-    3 => 'Titulek události',
-    4 => 'URL události',
-    5 => 'Datum začátku',
-    6 => 'Datum konce&nbsp;&nbsp;&nbsp;',
-    7 => 'Umístění události',
-    8 => 'Popis události',
-    9 => '(včetně http://)',
-    10 => 'Musíte zadat datum/čas, popis a umístění události!',
-    11 => 'Manažer událostí',
-    12 => 'Pro změnu a smazání události, klepněte na tuto níže.  Pro vytvoření nové události klepněte na Nová událost výše.',
-    13 => 'Titulek události',
-    14 => 'Datum začátku',
-    15 => 'Datum konce&nbsp;&nbsp;&nbsp;',
-    16 => 'Přístup odepřen',
-    17 => "Pokoušíte se editovat událost na níž nemáte dostatečná práva.  Tento pokus byl zaznamenán. Prosím <a href=\"{$_CONF['site_admin_url']}/event.php\">vraťte se na administraci událostí</a>.",
-    18 => 'Nová událost',
-    19 => 'Administrace',
-    20 => 'uložit',
-    21 => 'zrušit akci',
-    22 => 'smazat',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -784,7 +770,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -872,7 +860,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -902,53 +919,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'neděle',
-    2 => 'pondělí',
-    3 => 'úterý',
-    4 => 'středa',
-    5 => 'čtvrtek',
-    6 => 'pátek',
-    7 => 'sobota',
-    8 => 'Přidat událost',
-    9 => 'Události weblogu',
-    10 => 'Události uživatele',
-    11 => 'Veřejný kalendář',
-    12 => 'Osobní kalendář',
-    13 => 'leden',
-    14 => 'únor',
-    15 => 'březen',
-    16 => 'duben',
-    17 => 'květen',
-    18 => 'červen',
-    19 => 'červenec',
-    20 => 'srpen',
-    21 => 'září',
-    22 => 'říjen',
-    23 => 'listopad',
-    24 => 'prosinec',
-    25 => 'Zpět na ',
-    26 => 'Každý den',
-    27 => 'Týden',
-    28 => 'Osobní kalendář pro',
-    29 => 'Veřejný kalendář',
-    30 => 'smazat událost',
-    31 => 'Přidat událost',
-    32 => 'Událost',
-    33 => 'Datum',
-    34 => 'Čas',
-    35 => 'Rychlé přidání',
-    36 => 'Potvrdit',
-    37 => 'Promiňte, Osobní kalendář není na tšchto stránkách podporován',
-    38 => 'Editor osobních událostí',
-    39 => 'Den',
-    40 => 'Týden',
-    41 => 'Měsíc'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1072,7 +1042,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1153,7 +1125,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1184,7 +1165,7 @@
     'no' => 'Ne',
     'corerightsdescr' => "This group is a core {$_CONF['site_name']} Group.  Therefore the rights for this group cannot be edited.  Below is a read-only list of the rights this group has access to.",
     'groupmsg' => 'Security Groups on this site are hierarchical.  By adding this group to any of the groups below you will giving this group the same rights that those groups have.  Where possible it is encouraged you use the groups below to give rights to a group.  If you need this group to have custom rights then you can select the rights to various site features in the section below called \'Rights\'.  To add this group to any of the ones below simply check the box next to the group(s) that you want.',
-    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this groups belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
+    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this group belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
     'rightsdescr' => 'A groups access to a certain right below can be given directly to the group OR to a different group that this group is a part of.  The ones you see below without a checkbox are the rights that have been given to this group because it belongs to another group with that right.  The rights with checkboxes below are rights that can be given directly to this group.',
     'lock' => 'Uzamčeno',
     'members' => 'Uživatelé',
@@ -1195,7 +1176,6 @@
     'none' => 'Není',
     'accessdenied' => 'Přístup odepřen',
     'storydenialmsg' => "You do not have access to view this story.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
-    'eventdenialmsg' => "You do not have access to view this event.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
     'nogroupsforcoregroup' => 'This group doesn\'t belong to any of the other groups',
     'grouphasnorights' => 'This group doesn\'t have access to any of the administrative features of this site',
     'newgroup' => 'Nová skupina uživatelů',
@@ -1381,7 +1361,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1421,6 +1402,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'leden',
+    2 => 'únor',
+    3 => 'březen',
+    4 => 'duben',
+    5 => 'květen',
+    6 => 'červen',
+    7 => 'červenec',
+    8 => 'srpen',
+    9 => 'září',
+    10 => 'říjen',
+    11 => 'listopad',
+    12 => 'prosinec'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'neděle',
+    2 => 'pondělí',
+    3 => 'úterý',
+    4 => 'středa',
+    5 => 'čtvrtek',
+    6 => 'pátek',
+    7 => 'sobota'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1431,8 +1443,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1441,9 +1455,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/danish.php 1.4.1.src/cpanel-glprivate/language/danish.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/danish.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/danish.php	2006-09-17 03:58:43.000000000 -0500
@@ -162,28 +162,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Kalender',
-    2 => 'Desvrre, der er ingen begivenheder at vise.',
-    3 => 'Hvornr',
-    4 => 'Hvor',
-    5 => 'Beskrivelse',
-    6 => 'Tilfj En Begivenhed',
-    7 => 'Kommende Begivenheder',
-    8 => 'Hvis du tilfjer denne begivenhed til din kalender, kan du hurtigt f et overblik over kun de begivenheder du er interesseret i, ved at klikke "Min Kalender" i Brugerkassen.',
-    9 => 'Tilfj til Min Kalender',
-    10 => 'Fjern fra Min Kalender',
-    11 => "Tilfjer Begivenhed til {$_USER['username']}'s Kalender",
-    12 => 'Begivenhed',
-    13 => 'Begynder',
-    14 => 'Slutter',
-    15 => 'Tilbage til Kalenderen'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -345,7 +327,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -662,38 +677,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Begivenhed Editor',
-    2 => 'Error',
-    3 => 'Begivenhed Titel',
-    4 => 'Begivenhed URL',
-    5 => 'Begivenhed Start Dato',
-    6 => 'Begivenhed Slut Dato',
-    7 => 'Begivenhed Sted',
-    8 => 'Begivenhed Beskrivelse',
-    9 => '(inkluder http://)',
-    10 => 'Du skal angive dato/tid, beskrivelse og sted!',
-    11 => 'Begivenhed Manager',
-    12 => 'For at redigere eller slette en begivenhed klik p begivenheden herunder. For at oprette en ny begivenhed, klik p ny begivenhed herover.',
-    13 => 'Begivenhed Titel',
-    14 => 'Start Dato',
-    15 => 'Slut Dato',
-    16 => 'Adgang Ngtet',
-    17 => "Du prver at f adgang til en begivenhed, hvilket du ikke har rettigheder til! Dette forsg er blevet logget. G tilbage til <a href=\"{$_CONF['site_url']}/admin/event.php\">administrations interfacet</a>.",
-    18 => 'Ny Begivenhed',
-    19 => 'Admin Hjem',
-    20 => 'gem',
-    21 => 'fortryd',
-    22 => 'slet',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -784,7 +770,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -872,7 +860,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -902,53 +919,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Sndag',
-    2 => 'Mandag',
-    3 => 'Tirsdag',
-    4 => 'Onsdag',
-    5 => 'Torsdag',
-    6 => 'Fredag',
-    7 => 'Lrdag',
-    8 => 'Tilfj Begivenhed',
-    9 => 'Geeklog Begivenhed',
-    10 => 'Begivenheder for',
-    11 => 'Overordnet Kalender',
-    12 => 'Min Kalender',
-    13 => 'Januar',
-    14 => 'Februar',
-    15 => 'Marts',
-    16 => 'April',
-    17 => 'Maj',
-    18 => 'Juni',
-    19 => 'Juli',
-    20 => 'August',
-    21 => 'September',
-    22 => 'Oktober',
-    23 => 'November',
-    24 => 'December',
-    25 => 'Tilbage til ',
-    26 => 'Hele Dagen',
-    27 => 'Uge',
-    28 => 'Personlig Kalender for',
-    29 => 'Offentlig Kalender',
-    30 => 'slet begivenhed',
-    31 => 'Tilfj',
-    32 => 'Begivenhed',
-    33 => 'Dato',
-    34 => 'Tid',
-    35 => 'Tilfj Hurtig',
-    36 => 'Tilfj',
-    37 => 'Desvrre, den personlige kalenderfunktion er ikke aktiveret p denne side',
-    38 => 'Personlig Begivenhed Editor',
-    39 => 'Dag',
-    40 => 'Uge',
-    41 => 'Mned'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1072,7 +1042,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1153,7 +1125,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1184,7 +1165,7 @@
     'no' => 'Nej',
     'corerightsdescr' => "This group is a core {$_CONF['site_name']} Group.  Therefore the rights for this group cannot be edited.  Below is a read-only list of the rights this group has access to.",
     'groupmsg' => 'Security Groups on this site are hierarchical.  By adding this group to any of the groups below you will giving this group the same rights that those groups have.  Where possible it is encouraged you use the groups below to give rights to a group.  If you need this group to have custom rights then you can select the rights to various site features in the section below called \'Rights\'.  To add this group to any of the ones below simply check the box next to the group(s) that you want.',
-    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this groups belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
+    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this group belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
     'rightsdescr' => 'A groups access to a certain right below can be given directly to the group OR to a different group that this group is a part of.  The ones you see below without a checkbox are the rights that have been given to this group because it belongs to another group with that right.  The rights with checkboxes below are rights that can be given directly to this group.',
     'lock' => 'Ls',
     'members' => 'Medlemmer',
@@ -1195,7 +1176,6 @@
     'none' => 'Igrn',
     'accessdenied' => 'Adgang ngtet',
     'storydenialmsg' => "You do not have access to view this story.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
-    'eventdenialmsg' => "You do not have access to view this event.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
     'nogroupsforcoregroup' => 'This group doesn\'t belong to any of the other groups',
     'grouphasnorights' => 'This group doesn\'t have access to any of the administrative features of this site',
     'newgroup' => 'Ny gruppe',
@@ -1381,7 +1361,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1421,6 +1402,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Januar',
+    2 => 'Februar',
+    3 => 'Marts',
+    4 => 'April',
+    5 => 'Maj',
+    6 => 'Juni',
+    7 => 'Juli',
+    8 => 'August',
+    9 => 'September',
+    10 => 'Oktober',
+    11 => 'November',
+    12 => 'December'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Sndag',
+    2 => 'Mandag',
+    3 => 'Tirsdag',
+    4 => 'Onsdag',
+    5 => 'Torsdag',
+    6 => 'Fredag',
+    7 => 'Lrdag'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1431,8 +1443,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1441,9 +1455,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/danish_utf-8.php 1.4.1.src/cpanel-glprivate/language/danish_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/danish_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/danish_utf-8.php	2006-09-17 03:58:43.000000000 -0500
@@ -162,28 +162,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Kalender',
-    2 => 'Desværre, der er ingen begivenheder at vise.',
-    3 => 'Hvornår',
-    4 => 'Hvor',
-    5 => 'Beskrivelse',
-    6 => 'Tilføj En Begivenhed',
-    7 => 'Kommende Begivenheder',
-    8 => 'Hvis du tilføjer denne begivenhed til din kalender, kan du hurtigt få et overblik over kun de begivenheder du er interesseret i, ved at klikke "Min Kalender" i Brugerkassen.',
-    9 => 'Tilføj til Min Kalender',
-    10 => 'Fjern fra Min Kalender',
-    11 => "Tilføjer Begivenhed til {$_USER['username']}'s Kalender",
-    12 => 'Begivenhed',
-    13 => 'Begynder',
-    14 => 'Slutter',
-    15 => 'Tilbage til Kalenderen'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -345,7 +327,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -662,38 +677,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Begivenhed Editor',
-    2 => 'Error',
-    3 => 'Begivenhed Titel',
-    4 => 'Begivenhed URL',
-    5 => 'Begivenhed Start Dato',
-    6 => 'Begivenhed Slut Dato',
-    7 => 'Begivenhed Sted',
-    8 => 'Begivenhed Beskrivelse',
-    9 => '(inkluder http://)',
-    10 => 'Du skal angive dato/tid, beskrivelse og sted!',
-    11 => 'Begivenhed Manager',
-    12 => 'For at redigere eller slette en begivenhed klik på begivenheden herunder. For at oprette en ny begivenhed, klik på ny begivenhed herover.',
-    13 => 'Begivenhed Titel',
-    14 => 'Start Dato',
-    15 => 'Slut Dato',
-    16 => 'Adgang Nægtet',
-    17 => "Du prøver at få adgang til en begivenhed, hvilket du ikke har rettigheder til! Dette forsøg er blevet logget. Gå tilbage til <a href=\"{$_CONF['site_url']}/admin/event.php\">administrations interfacet</a>.",
-    18 => 'Ny Begivenhed',
-    19 => 'Admin Hjem',
-    20 => 'gem',
-    21 => 'fortryd',
-    22 => 'slet',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -784,7 +770,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -872,7 +860,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -902,53 +919,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Søndag',
-    2 => 'Mandag',
-    3 => 'Tirsdag',
-    4 => 'Onsdag',
-    5 => 'Torsdag',
-    6 => 'Fredag',
-    7 => 'Lørdag',
-    8 => 'Tilføj Begivenhed',
-    9 => 'Geeklog Begivenhed',
-    10 => 'Begivenheder for',
-    11 => 'Overordnet Kalender',
-    12 => 'Min Kalender',
-    13 => 'Januar',
-    14 => 'Februar',
-    15 => 'Marts',
-    16 => 'April',
-    17 => 'Maj',
-    18 => 'Juni',
-    19 => 'Juli',
-    20 => 'August',
-    21 => 'September',
-    22 => 'Oktober',
-    23 => 'November',
-    24 => 'December',
-    25 => 'Tilbage til ',
-    26 => 'Hele Dagen',
-    27 => 'Uge',
-    28 => 'Personlig Kalender for',
-    29 => 'Offentlig Kalender',
-    30 => 'slet begivenhed',
-    31 => 'Tilføj',
-    32 => 'Begivenhed',
-    33 => 'Dato',
-    34 => 'Tid',
-    35 => 'Tilføj Hurtig',
-    36 => 'Tilføj',
-    37 => 'Desværre, den personlige kalenderfunktion er ikke aktiveret på denne side',
-    38 => 'Personlig Begivenhed Editor',
-    39 => 'Dag',
-    40 => 'Uge',
-    41 => 'Måned'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1072,7 +1042,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1153,7 +1125,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1184,7 +1165,7 @@
     'no' => 'Nej',
     'corerightsdescr' => "This group is a core {$_CONF['site_name']} Group.  Therefore the rights for this group cannot be edited.  Below is a read-only list of the rights this group has access to.",
     'groupmsg' => 'Security Groups on this site are hierarchical.  By adding this group to any of the groups below you will giving this group the same rights that those groups have.  Where possible it is encouraged you use the groups below to give rights to a group.  If you need this group to have custom rights then you can select the rights to various site features in the section below called \'Rights\'.  To add this group to any of the ones below simply check the box next to the group(s) that you want.',
-    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this groups belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
+    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this group belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
     'rightsdescr' => 'A groups access to a certain right below can be given directly to the group OR to a different group that this group is a part of.  The ones you see below without a checkbox are the rights that have been given to this group because it belongs to another group with that right.  The rights with checkboxes below are rights that can be given directly to this group.',
     'lock' => 'Lås',
     'members' => 'Medlemmer',
@@ -1195,7 +1176,6 @@
     'none' => 'Igrn',
     'accessdenied' => 'Adgang nægtet',
     'storydenialmsg' => "You do not have access to view this story.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
-    'eventdenialmsg' => "You do not have access to view this event.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
     'nogroupsforcoregroup' => 'This group doesn\'t belong to any of the other groups',
     'grouphasnorights' => 'This group doesn\'t have access to any of the administrative features of this site',
     'newgroup' => 'Ny gruppe',
@@ -1381,7 +1361,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1421,6 +1402,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Januar',
+    2 => 'Februar',
+    3 => 'Marts',
+    4 => 'April',
+    5 => 'Maj',
+    6 => 'Juni',
+    7 => 'Juli',
+    8 => 'August',
+    9 => 'September',
+    10 => 'Oktober',
+    11 => 'November',
+    12 => 'December'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Søndag',
+    2 => 'Mandag',
+    3 => 'Tirsdag',
+    4 => 'Onsdag',
+    5 => 'Torsdag',
+    6 => 'Fredag',
+    7 => 'Lørdag'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1431,8 +1443,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1441,9 +1455,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/dutch.php 1.4.1.src/cpanel-glprivate/language/dutch.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/dutch.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/dutch.php	2006-09-17 03:58:43.000000000 -0500
@@ -168,28 +168,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Evenementen Kalender',
-    2 => 'Er zijn geen evenementen om weer te geven.',
-    3 => 'Wanneer',
-    4 => 'Waar',
-    5 => 'Omschrijving',
-    6 => 'Voeg evenement toe',
-    7 => 'Komende evenementen',
-    8 => 'Door evenementen aan <strong>uw</strong> kalender toe te voegen, kunt u de voor u interessante evenementen verzamelen en snel inzien door op \'Mijn Kalender\' te klikken in het Gebruikersmenu.',
-    9 => 'Voeg toe aan \'Mijn Kalender\'',
-    10 => 'Verwijder van \'Mijn Kalender\'',
-    11 => "Voeg evenement toe aan {$_USER['username']}\'s Kalender",
-    12 => 'Evenement',
-    13 => 'Begint',
-    14 => 'Eindigt',
-    15 => 'Terug naar Kalender'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -351,7 +333,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -668,38 +683,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Evenement Editor',
-    2 => 'Fout',
-    3 => 'Evenement Titel',
-    4 => 'Evenement URL',
-    5 => 'Startdatum',
-    6 => 'Einddatum',
-    7 => 'Evenementlocatie',
-    8 => 'Evenementbeschrijving',
-    9 => '(inclusief http://)',
-    10 => 'U dient de datums/tijden, de evenementtitel en de beschrijving te vermelden!',
-    11 => 'Evenement Manager',
-    12 => 'Om een evenement te wijzigen of te verwijderen, klik dan op dat evenement hieronder. Om een evenement aan te maken, klik dan op \'Nieuw Evenement\' hierboven.',
-    13 => 'Evenement Titel',
-    14 => 'Startdatum',
-    15 => 'Einddatum',
-    16 => 'Geen toegang',
-    17 => "U heeft geprobeerd een evenement op te roepen zonder geldige autorisatie. De poging is vastgelegd. <a href=\'{$_CONF['site_url']}/admin/event.php\'>Terug naar de evenement administratie pagina</a>.",
-    18 => 'Nieuw Evenement',
-    19 => 'Beheerder Home',
-    20 => 'opslaan',
-    21 => 'annuleren',
-    22 => 'verwijderen',
-    23 => 'Onjuiste startdatum.',
-    24 => 'Onjuiste einddatum.',
-    25 => 'Einddatum is eerder dan de startdatum.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -790,7 +776,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -878,7 +866,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -908,53 +925,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Zondag',
-    2 => 'Maandag',
-    3 => 'Dinsdag',
-    4 => 'Woensdag',
-    5 => 'Donderdag',
-    6 => 'Vrijdag',
-    7 => 'Zaterdag',
-    8 => 'Evenement Toevoegen',
-    9 => 'Evenement',
-    10 => 'Evenementen voor',
-    11 => 'Hoofdkalender',
-    12 => 'Mijn Kalender',
-    13 => 'Januari',
-    14 => 'Februari',
-    15 => 'Maart',
-    16 => 'April',
-    17 => 'Mei',
-    18 => 'Juni',
-    19 => 'Juli',
-    20 => 'Augustus',
-    21 => 'September',
-    22 => 'Oktober',
-    23 => 'November',
-    24 => 'December',
-    25 => 'Terug naar',
-    26 => 'Gehele Dag',
-    27 => 'Week',
-    28 => 'Persoonlijke Kalender voor',
-    29 => 'Publieke Kalender',
-    30 => 'verwijder evenement',
-    31 => 'Voeg toe',
-    32 => 'Evenement',
-    33 => 'Datum',
-    34 => 'Tijd',
-    35 => 'Snel toevoegen',
-    36 => 'Voorstellen',
-    37 => 'Helaas, de persoonlijke kalender optie is niet beschikbaar op het portaal',
-    38 => 'Persoonlijke Evenementen Editor',
-    39 => 'Dag',
-    40 => 'Week',
-    41 => 'Maand'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1078,7 +1048,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1159,7 +1131,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1201,7 +1182,6 @@
     'none' => 'Geen',
     'accessdenied' => 'Geen toegang',
     'storydenialmsg' => "Dit artikel is niet toegankelijk voor u. Dit kan veroorzaakt worden doordat u niet aangemeld bent bij {$_CONF['site_name']}. Gelieve uzelve <a href=users.php?mode=new> aan te melden </a> bij {$_CONF['site_name']} voor soorgelijke toegangsrechten.",
-    'eventdenialmsg' => "Dit evenement is niet toegankelijk voor u. Dit kan veroorzaakt worden doordat u niet aangemeld bent bij {$_CONF['site_name']}. Gelieve uzelve <a href=users.php?mode=new> aan te melden </a> bij {$_CONF['site_name']} voor soorgelijke toegangsrechten.",
     'nogroupsforcoregroup' => 'Deze groep heeft geen relatie met enige andere groep !!',
     'grouphasnorights' => 'Deze groep kan geen administratieve functies op het portaal oproepen en/of uitvoeren.',
     'newgroup' => 'Nieuwe Groep',
@@ -1387,7 +1367,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1427,6 +1408,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Januari',
+    2 => 'Februari',
+    3 => 'Maart',
+    4 => 'April',
+    5 => 'Mei',
+    6 => 'Juni',
+    7 => 'Juli',
+    8 => 'Augustus',
+    9 => 'September',
+    10 => 'Oktober',
+    11 => 'November',
+    12 => 'December'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Zondag',
+    2 => 'Maandag',
+    3 => 'Dinsdag',
+    4 => 'Woensdag',
+    5 => 'Donderdag',
+    6 => 'Vrijdag',
+    7 => 'Zaterdag'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1437,8 +1449,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1447,9 +1461,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/dutch_utf-8.php 1.4.1.src/cpanel-glprivate/language/dutch_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/dutch_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/dutch_utf-8.php	2006-09-17 03:58:43.000000000 -0500
@@ -168,28 +168,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Evenementen Kalender',
-    2 => 'Er zijn geen evenementen om weer te geven.',
-    3 => 'Wanneer',
-    4 => 'Waar',
-    5 => 'Omschrijving',
-    6 => 'Voeg evenement toe',
-    7 => 'Komende evenementen',
-    8 => 'Door evenementen aan <strong>uw</strong> kalender toe te voegen, kunt u de voor u interessante evenementen verzamelen en snel inzien door op \'Mijn Kalender\' te klikken in het Gebruikersmenu.',
-    9 => 'Voeg toe aan \'Mijn Kalender\'',
-    10 => 'Verwijder van \'Mijn Kalender\'',
-    11 => "Voeg evenement toe aan {$_USER['username']}\'s Kalender",
-    12 => 'Evenement',
-    13 => 'Begint',
-    14 => 'Eindigt',
-    15 => 'Terug naar Kalender'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -351,7 +333,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -668,38 +683,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Evenement Editor',
-    2 => 'Fout',
-    3 => 'Evenement Titel',
-    4 => 'Evenement URL',
-    5 => 'Startdatum',
-    6 => 'Einddatum',
-    7 => 'Evenementlocatie',
-    8 => 'Evenementbeschrijving',
-    9 => '(inclusief http://)',
-    10 => 'U dient de datums/tijden, de evenementtitel en de beschrijving te vermelden!',
-    11 => 'Evenement Manager',
-    12 => 'Om een evenement te wijzigen of te verwijderen, klik dan op dat evenement hieronder. Om een evenement aan te maken, klik dan op \'Nieuw Evenement\' hierboven.',
-    13 => 'Evenement Titel',
-    14 => 'Startdatum',
-    15 => 'Einddatum',
-    16 => 'Geen toegang',
-    17 => "U heeft geprobeerd een evenement op te roepen zonder geldige autorisatie. De poging is vastgelegd. <a href=\'{$_CONF['site_url']}/admin/event.php\'>Terug naar de evenement administratie pagina</a>.",
-    18 => 'Nieuw Evenement',
-    19 => 'Beheerder Home',
-    20 => 'opslaan',
-    21 => 'annuleren',
-    22 => 'verwijderen',
-    23 => 'Onjuiste startdatum.',
-    24 => 'Onjuiste einddatum.',
-    25 => 'Einddatum is eerder dan de startdatum.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -790,7 +776,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -878,7 +866,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -908,53 +925,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Zondag',
-    2 => 'Maandag',
-    3 => 'Dinsdag',
-    4 => 'Woensdag',
-    5 => 'Donderdag',
-    6 => 'Vrijdag',
-    7 => 'Zaterdag',
-    8 => 'Evenement Toevoegen',
-    9 => 'Evenement',
-    10 => 'Evenementen voor',
-    11 => 'Hoofdkalender',
-    12 => 'Mijn Kalender',
-    13 => 'Januari',
-    14 => 'Februari',
-    15 => 'Maart',
-    16 => 'April',
-    17 => 'Mei',
-    18 => 'Juni',
-    19 => 'Juli',
-    20 => 'Augustus',
-    21 => 'September',
-    22 => 'Oktober',
-    23 => 'November',
-    24 => 'December',
-    25 => 'Terug naar',
-    26 => 'Gehele Dag',
-    27 => 'Week',
-    28 => 'Persoonlijke Kalender voor',
-    29 => 'Publieke Kalender',
-    30 => 'verwijder evenement',
-    31 => 'Voeg toe',
-    32 => 'Evenement',
-    33 => 'Datum',
-    34 => 'Tijd',
-    35 => 'Snel toevoegen',
-    36 => 'Voorstellen',
-    37 => 'Helaas, de persoonlijke kalender optie is niet beschikbaar op het portaal',
-    38 => 'Persoonlijke Evenementen Editor',
-    39 => 'Dag',
-    40 => 'Week',
-    41 => 'Maand'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1078,7 +1048,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1159,7 +1131,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1201,7 +1182,6 @@
     'none' => 'Geen',
     'accessdenied' => 'Geen toegang',
     'storydenialmsg' => "Dit artikel is niet toegankelijk voor u. Dit kan veroorzaakt worden doordat u niet aangemeld bent bij {$_CONF['site_name']}. Gelieve uzelve <a href=users.php?mode=new> aan te melden </a> bij {$_CONF['site_name']} voor soorgelijke toegangsrechten.",
-    'eventdenialmsg' => "Dit evenement is niet toegankelijk voor u. Dit kan veroorzaakt worden doordat u niet aangemeld bent bij {$_CONF['site_name']}. Gelieve uzelve <a href=users.php?mode=new> aan te melden </a> bij {$_CONF['site_name']} voor soorgelijke toegangsrechten.",
     'nogroupsforcoregroup' => 'Deze groep heeft geen relatie met enige andere groep !!',
     'grouphasnorights' => 'Deze groep kan geen administratieve functies op het portaal oproepen en/of uitvoeren.',
     'newgroup' => 'Nieuwe Groep',
@@ -1387,7 +1367,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1427,6 +1408,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Januari',
+    2 => 'Februari',
+    3 => 'Maart',
+    4 => 'April',
+    5 => 'Mei',
+    6 => 'Juni',
+    7 => 'Juli',
+    8 => 'Augustus',
+    9 => 'September',
+    10 => 'Oktober',
+    11 => 'November',
+    12 => 'December'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Zondag',
+    2 => 'Maandag',
+    3 => 'Dinsdag',
+    4 => 'Woensdag',
+    5 => 'Donderdag',
+    6 => 'Vrijdag',
+    7 => 'Zaterdag'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1437,8 +1449,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1447,9 +1461,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/english.php 1.4.1.src/cpanel-glprivate/language/english.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/english.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/english.php	2006-12-16 14:50:06.000000000 -0600
@@ -47,16 +47,16 @@
     4 => 'Edit',
     5 => 'Vote',
     6 => 'Results',
-    7 => 'Poll Results',
+    7 => '',
     8 => 'votes',
     9 => 'Admin Functions:',
     10 => 'Submissions',
     11 => 'Stories',
     12 => 'Blocks',
     13 => 'Topics',
-    14 => 'Links',
-    15 => 'Events',
-    16 => 'Polls',
+    14 => '',
+    15 => '',
+    16 => '',
     17 => 'Users',
     18 => 'SQL Query',
     19 => 'Log Out',
@@ -88,7 +88,7 @@
     45 => 'MySQL Error Number',
     46 => 'MySQL Error Message',
     47 => 'User Functions',
-    48 => 'Account Information',
+    48 => 'My Account',
     49 => 'Preferences',
     50 => 'Error with SQL statement',
     51 => 'help',
@@ -106,30 +106,30 @@
     63 => 'Comment Preferences',
     64 => 'Email Article To a Friend',
     65 => 'View Printable Version',
-    66 => 'My Calendar',
+    66 => '',
     67 => 'Welcome to ',
     68 => 'Home',
     69 => 'Contact',
     70 => 'Search',
     71 => 'Contribute',
     72 => 'Web Resources',
-    73 => 'Past Polls',
-    74 => 'Calendar',
+    73 => '',
+    74 => '',
     75 => 'Advanced Search',
     76 => 'Site Statistics',
     77 => 'Plugins',
-    78 => 'Upcoming Events',
+    78 => '',
     79 => 'What\'s New',
     80 => 'stories in last',
     81 => 'story in last',
     82 => 'hours',
     83 => 'COMMENTS',
-    84 => 'LINKS',
+    84 => '',
     85 => 'last 48 hrs',
     86 => 'No new comments',
     87 => 'last 2 wks',
-    88 => 'No recent new links',
-    89 => 'There are no upcoming events',
+    88 => '',
+    89 => '',
     90 => 'Home',
     91 => 'Created this page in',
     92 => 'seconds',
@@ -141,8 +141,8 @@
     98 => 'Plugins',
     99 => 'STORIES',
     100 => 'No new stories',
-    101 => 'Your Events',
-    102 => 'Site Events',
+    101 => '',
+    102 => '',
     103 => 'DB Backups',
     104 => 'by',
     105 => 'Mail Users',
@@ -163,28 +163,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendar of Events',
-    2 => 'I\'m sorry, there are no events to display.',
-    3 => 'When',
-    4 => 'Where',
-    5 => 'Description',
-    6 => 'Add An Event',
-    7 => 'Upcoming Events',
-    8 => 'By adding this event to your calendar you can quickly view only the events you are interested in by clicking "My Calendar" from the User Functions area.',
-    9 => 'Add to My Calendar',
-    10 => 'Remove from My Calendar',
-    11 => "Adding Event to {$_USER['username']}'s Calendar",
-    12 => 'Event',
-    13 => 'Starts',
-    14 => 'Ends',
-    15 => 'Back to Calendar'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -237,7 +219,7 @@
     11 => 'No User Comments',
     12 => 'User Preferences for',
     13 => 'Email Nightly Digest',
-    14 => 'This password is generated by a randomizer. It is recommended that you change this password immediately. To change your password, log in and then click Account Information from the User Functions menu.',
+    14 => 'This password is generated by a randomizer. It is recommended that you change this password immediately. To change your password, log in and then click My Account from the User Functions menu.',
     15 => "Your {$_CONF['site_name']} account has been created successfully. To be able to use it, you must login using the information below. Please save this mail for further reference.",
     16 => 'Your Account Information',
     17 => 'Account does not exist',
@@ -346,7 +328,41 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account',
+    157 => 'Delete Option'
 );
 
 ###############################################################################
@@ -437,17 +453,17 @@
     27 => 'seconds',
     28 => 'No story or comment matches for your search',
     29 => 'Story and Comment Results',
-    30 => 'No links matched your search',
+    30 => '',
     31 => 'This plugin returned no matches',
-    32 => 'Event',
+    32 => '',
     33 => 'URL',
     34 => 'Location',
     35 => 'All Day',
-    36 => 'No events matched your search',
-    37 => 'Event Results',
-    38 => 'Link Results',
-    39 => 'Links',
-    40 => 'Events',
+    36 => '',
+    37 => '',
+    38 => '',
+    39 => '',
+    40 => '',
     41 => 'Your query string should have at least 3 characters.',
     42 => 'Please use a date formatted as YYYY-MM-DD (year-month-day).',
     43 => 'exact phrase',
@@ -458,7 +474,7 @@
     48 => 'Author',
     49 => 'Date',
     50 => 'Hits',
-    51 => 'Link',
+    51 => '',
     52 => 'Location',
     53 => 'Story Results',
     54 => 'Comment Results',
@@ -480,7 +496,7 @@
     3 => 'Stories (Comments) in the system',
     4 => '',
     5 => '',
-    6 => 'Events in the system',
+    6 => '',
     7 => 'Top Ten Viewed Stories',
     8 => 'Story Title',
     9 => 'Views',
@@ -495,17 +511,17 @@
     18 => '',
     19 => '',
     20 => '',
-    21 => 'It appears that there are no links on this site or no one has ever clicked on one.',
+    21 => '',
     22 => 'Top Ten Emailed Stories',
     23 => 'Emails',
     24 => 'It appears that no one has emailed a story on this site',
     25 => 'Top Ten Trackback Commented Stories',
     26 => 'No trackback comments found.',
     27 => 'Number of active users',
-    28 => 'Top Ten Events',
-    29 => 'Event',
+    28 => '',
+    29 => '',
     30 => 'Hits',
-    31 => 'It appears that there are no events on this site or no one has ever clicked on one.'
+    31 => ''
 );
 
 ###############################################################################
@@ -526,14 +542,14 @@
     1 => 'To submit a %s you are required to be logged in as a user.',
     2 => 'Login',
     3 => 'New User',
-    4 => 'Submit an Event',
+    4 => '',
     5 => '',
     6 => 'Submit a Story',
     7 => 'Login is Required',
     8 => 'Submit',
     9 => 'When submitting information for use on this site we ask that you follow the following suggestions...<ul><li>Fill in all the fields, they\'re required<li>Provide complete and accurate information<li>Double check those URLs</ul>',
     10 => 'Title',
-    11 => 'Link',
+    11 => '',
     12 => 'Start Date',
     13 => 'End Date',
     14 => 'Location',
@@ -559,20 +575,20 @@
     34 => 'Log Out',
     35 => 'HTML tags are not allowed',
     36 => 'Post Mode',
-    37 => "Submitting an event to {$_CONF['site_name']} will put your event on the master calendar where users can optionally add your event to their personal calendar. This feature is <b>NOT</b> meant to store your personal events such as birthdays and anniversaries.<br><br>Once you submit your event it will be sent to our administrators and if approved, your event will appear on the master calendar.",
-    38 => 'Add Event To',
-    39 => 'Master Calendar',
-    40 => 'Personal Calendar',
-    41 => 'End Time',
-    42 => 'Start Time',
-    43 => 'All Day Event',
+    37 => '',
+    38 => '',
+    39 => '',
+    40 => '',
+    41 => '',
+    42 => '',
+    43 => '',
     44 => 'Address Line 1',
     45 => 'Address Line 2',
     46 => 'City/Town',
     47 => 'State',
     48 => 'Zip Code',
-    49 => 'Event Type',
-    50 => 'Edit Event Types',
+    49 => '',
+    50 => '',
     51 => 'Location',
     52 => 'Delete',
     53 => 'Create Account'
@@ -663,38 +679,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Event Editor',
-    2 => 'Error',
-    3 => 'Post Mode',
-    4 => 'Event URL',
-    5 => 'Event Start Date',
-    6 => 'Event End Date',
-    7 => 'Event Location',
-    8 => 'Event Description',
-    9 => '(include http://)',
-    10 => 'You must provide the dates/times, event title, and description',
-    11 => 'Event Manager',
-    12 => 'To modify or delete an event, click on that event\'s edit icon below.  To create a new event, click on "Create New" above. Click on the copy icon to create a copy of an existing event.',
-    13 => 'Author',
-    14 => 'Start Date',
-    15 => 'End Date',
-    16 => '',
-    17 => "You are trying to access an event that you don't have rights to.  This attempt has been logged. Please <a href=\"{$_CONF['site_admin_url']}/event.php\">go back to the event administration screen</a>.",
-    18 => '',
-    19 => '',
-    20 => 'save',
-    21 => 'cancel',
-    22 => 'delete',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -727,8 +714,8 @@
     24 => 'The ID you chose for this story is already in use. Please use another ID.',
     25 => 'Error when saving story',
     26 => 'Story Preview',
-    27 => 'If you use [unscaledX] instead of [imageX], the image will be inserted at its original dimensions.',
-    28 => '<p><b>PREVIEWING</b>: Previewing a story with images attached is best done by saving the article as a draft INSTEAD OF hitting the preview button.  Use the preview button only when images are not attached.',
+    27 => '<p>If you use [unscaledX] instead of [imageX], the image will be inserted at its original dimensions.',
+    28 => '<p><b>PREVIEWING</b>: Previewing a story with images attached is best done by saving the article as a draft INSTEAD OF hitting the preview button.  Use the preview button only when images are not attached.</p>',
     29 => 'Trackbacks',
     30 => 'File Upload Errors',
     31 => 'Please fill in the Title and Intro Text fields',
@@ -751,7 +738,7 @@
     48 => 'image',
     49 => 'right',
     50 => 'left',
-    51 => 'To add one of the images you are attaching to this article you need to insert specially formatted text.  The specially formatted text is [imageX], [imageX_right] or [imageX_left] where X is the number of the image you have attached.  NOTE: You must use the images you attach.  If you do not you will be unable to save your story.<br>',
+    51 => '<p>To add one of the images you are attaching to this article you need to insert specially formatted text.  The specially formatted text is [imageX], [imageX_right] or [imageX_left] where X is the number of the image you have attached.  NOTE: You must use the images you attach.  If you do not you will be unable to save your story.</p>',
     52 => '',
     53 => 'was not used.  You must include this image in the intro or body before you can save your changes',
     54 => 'Attached Images Not Used',
@@ -785,7 +772,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 
@@ -839,7 +828,7 @@
     9 => '(do not use spaces)',
     10 => 'Please fill in the Username and Email Address fields',
     11 => 'User Manager',
-    12 => 'To modify or delete a user, click on that user\'s edit icon below. To view a user, click on the username you wish to view. To create a new user, click on "Create New" above. You can do simple searches by entering parts of a username, email address or fullname (e.g. *son* or *.edu) in the form below.',
+    12 => 'To modify or delete a user, click on that user\'s edit icon below. To view a user, click on the username you wish to view. To create a new user, click on "Create New" above.',
     13 => 'SecLev',
     14 => 'Reg. Date',
     15 => '',
@@ -863,7 +852,7 @@
     33 => 'submit',
     34 => 'Error: You must specify a file to upload.',
     35 => 'Last Login',
-    36 => '(never)',
+    36 => 'never',
     37 => 'UID',
     38 => 'Group Listing',
     39 => 'Password (again)',
@@ -875,6 +864,35 @@
     45 => 'Active',
     46 => 'User Status',
     47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => "This only works if you have <code>\$_CONF['lastlogin'] = true;</code> in your config.php",
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -897,60 +915,13 @@
     34 => 'Command and Control',
     35 => 'Story Submissions',
     36 => '',
-    37 => 'Event Submissions',
+    37 => '',
     38 => 'Submit',
     39 => 'There are no submissions to moderate at this time',
     40 => 'User Submissions'
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Sunday',
-    2 => 'Monday',
-    3 => 'Tuesday',
-    4 => 'Wednesday',
-    5 => 'Thursday',
-    6 => 'Friday',
-    7 => 'Saturday',
-    8 => 'Add Event',
-    9 => '%s Event',
-    10 => 'Events for',
-    11 => 'Master Calendar',
-    12 => 'My Calendar',
-    13 => 'January',
-    14 => 'February',
-    15 => 'March',
-    16 => 'April',
-    17 => 'May',
-    18 => 'June',
-    19 => 'July',
-    20 => 'August',
-    21 => 'September',
-    22 => 'October',
-    23 => 'November',
-    24 => 'December',
-    25 => 'Back to ',
-    26 => 'All Day',
-    27 => 'Week',
-    28 => 'Personal Calendar for',
-    29 => 'Public Calendar',
-    30 => 'delete event',
-    31 => 'Add',
-    32 => 'Event',
-    33 => 'Date',
-    34 => 'Time',
-    35 => 'Quick Add',
-    36 => 'Submit',
-    37 => 'Sorry, the personal calendar feature is not enabled on this site',
-    38 => 'Personal Event Editor',
-    39 => 'Day',
-    40 => 'Week',
-    41 => 'Month'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1066,7 +1037,7 @@
     39 => 'Please fill in the Feed Title, Description, and Filename.',
     40 => 'Please enter a  number of entries or number of hours.',
     41 => 'Submit',
-    42 => 'Events',
+    42 => '',
     43 => 'All',
     44 => 'None',
     45 => 'Header-link in topic',
@@ -1074,7 +1045,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1084,7 +1057,7 @@
     1 => "Your password has been emailed to you and should arrive momentarily. Please follow the directions in the message and we thank-you for using {$_CONF['site_name']}",
     2 => "Thank-you for submitting your story to {$_CONF['site_name']}.  It has been submitted to our staff for approval. If approved, your story will be available for others to read on our site.",
     3 => "",
-    4 => "Thank-you for submitting an event to {$_CONF['site_name']}.  It has been submitted to our staff for approval.  If approved, your event will be seen in our <a href=\"{$_CONF['site_url']}/calendar.php\">calendar</a> section.",
+    4 => "",
     5 => 'Your account information has been successfully saved.',
     6 => 'Your preferences have been successfully saved.',
     7 => 'Your comment preferences have been successfully saved.',
@@ -1097,26 +1070,26 @@
     14 => 'The topic and all its stories and blocks have been successfully deleted.',
     15 => '',
     16 => '',
-    17 => 'Your event has been successfully saved.',
-    18 => 'The event has been successfully deleted.',
-    19 => 'Your poll has been successfully saved.',
-    20 => 'The poll has been successfully deleted.',
+    17 => '',
+    18 => '',
+    19 => '',
+    20 => '',
     21 => 'The user has been successfully saved.',
     22 => 'The user has been successfully deleted.',
-    23 => 'Error trying to add an event to your calendar. There was no event id passed.',
-    24 => 'The event has been saved to your calendar',
-    25 => 'Cannot open your personal calendar until you login',
-    26 => 'Event was successfully removed from your personal calendar',
+    23 => '',
+    24 => '',
+    25 => '',
+    26 => '',
     27 => 'Message successfully sent.',
     28 => 'The plugin has been successfully saved',
-    29 => 'Sorry, personal calendars are not enabled on this site',
+    29 => '',
     30 => 'Access Denied',
     31 => 'Sorry, you do not have access to the story administration page.  Please note that all attempts to access unauthorized features are logged',
     32 => 'Sorry, you do not have access to the topic administration page.  Please note that all attempts to access unauthorized features are logged',
     33 => 'Sorry, you do not have access to the block administration page.  Please note that all attempts to access unauthorized features are logged',
-    34 => 'Sorry, you do not have access to the link administration page.  Please note that all attempts to access unauthorized features are logged',
-    35 => 'Sorry, you do not have access to the event administration page.  Please note that all attempts to access unauthorized features are logged',
-    36 => 'Sorry, you do not have access to the poll administration page.  Please note that all attempts to access unauthorized features are logged',
+    34 => '',
+    35 => '',
+    36 => '',
     37 => 'Sorry, you do not have access to the user administration page.  Please note that all attempts to access unauthorized features are logged',
     38 => 'Sorry, you do not have access to the plugin administration page.  Please note that all attempts to access unauthorized features are logged',
     39 => 'Sorry, you do not have access to the mail administration page.  Please note that all attempts to access unauthorized features are logged',
@@ -1155,7 +1128,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1185,9 +1167,9 @@
     'yes' => 'Yes',
     'no' => 'No',
     'corerightsdescr' => "This group is a core {$_CONF['site_name']} Group.  Therefore the rights for this group cannot be edited.  Below is a read-only list of the rights this group has access to.",
-    'groupmsg' => 'Security Groups on this site are hierarchical.  By adding this group to any of the groups below you will giving this group the same rights that those groups have.  Where possible it is encouraged you use the groups below to give rights to a group.  If you need this group to have custom rights then you can select the rights to various site features in the section below called \'Rights\'.  To add this group to any of the ones below simply check the box next to the group(s) that you want.',
-    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this groups belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
-    'rightsdescr' => 'A groups access to a certain right below can be given directly to the group OR to a different group that this group is a part of.  The ones you see below without a checkbox are the rights that have been given to this group because it belongs to another group with that right.  The rights with checkboxes below are rights that can be given directly to this group.',
+    'groupmsg' => 'Security Groups on this site are hierarchical.  By adding this group to any of the groups below you will be giving this group the same rights that those groups have.  Where possible it is encouraged you use the groups below to give rights to a group.  If you need this group to have custom rights then you can select the rights to various site features in the section below called \'Rights\'.  To add this group to any of the ones below simply check the box next to the group(s) that you want.',
+    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this group belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
+    'rightsdescr' => 'A group\'s access to a certain right below can be given directly to the group OR to a different group that this group is a part of.  The ones you see below without a checkbox are the rights that have been given to this group because it belongs to another group with that right.  The rights with checkboxes below are rights that can be given directly to this group.',
     'lock' => 'Lock',
     'members' => 'Members',
     'anonymous' => 'Anonymous',
@@ -1197,7 +1179,6 @@
     'none' => 'None',
     'accessdenied' => 'Access Denied',
     'storydenialmsg' => "You do not have access to view this story.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=\"{$_CONF['site_url']}/users.php?mode=new\">become a member</a> of {$_CONF['site_name']} to receive full membership access!",
-    'eventdenialmsg' => "You do not have access to view this event.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=\"{$_CONF['site_url']}/users.php?mode=new\">become a member</a> of {$_CONF['site_name']} to receive full membership access!",
     'nogroupsforcoregroup' => 'This group doesn\'t belong to any of the other groups',
     'grouphasnorights' => 'This group doesn\'t have access to any of the administrative features of this site',
     'newgroup' => 'New Group',
@@ -1251,9 +1232,9 @@
     1 => 'Home',
     2 => 'Contact',
     3 => 'Get Published',
-    4 => 'Links',
-    5 => 'Polls',
-    6 => 'Calendar',
+    4 => '',
+    5 => '',
+    6 => '',
     7 => 'Site Stats',
     8 => 'Personalize',
     9 => 'Search',
@@ -1379,7 +1360,8 @@
     'pingback_note'      => 'To send a pingback for a story, go to the list of stories and click on "' . $LANG24[21] . '" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing'   => 'No Pingback URL',
     'pbtarget_required'  => 'Please enter a pingback URL',
-    'pb_error_details'   => 'Error when sending the pingback:'
+    'pb_error_details'   => 'Error when sending the pingback:',
+    'delete_trackback'   => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1418,19 +1400,46 @@
     'month'       => 'month'
 );
 
+$LANG_MONTH = array(
+    1 => 'January',
+    2 => 'February',
+    3 => 'March',
+    4 => 'April',
+    5 => 'May',
+    6 => 'June',
+    7 => 'July',
+    8 => 'August',
+    9 => 'September',
+    10 => 'October',
+    11 => 'November',
+    12 => 'December'
+);
+
+$LANG_WEEK = array(
+    1 => 'Sunday',
+    2 => 'Monday',
+    3 => 'Tuesday',
+    4 => 'Wednesday',
+    5 => 'Thurdsay',
+    6 => 'Friday',
+    7 => 'Saturday'
+);
+
 ################################################################################
 # Admin - Strings
 #
 # These are some standard strings used by core functions as well as plugins to
-# display adminiatration lists and edit pages
+# display administration lists and edit pages
 
 $LANG_ADMIN = array (
     'search'        => 'Search',
     'limit_results' => 'Limit Results',
     'submit'        => 'Submit',
     'edit'          => 'Edit',
+    'edit_adv'      => 'Adv. Edit',
     'admin_home'    => 'Admin Home',
     'create_new'    => 'Create New',
+    'create_new_adv'=> 'Create New (Adv.)',
     'enabled'       => 'Enabled',
     'title'         => 'Title',
     'type'          => 'Type',
@@ -1439,10 +1448,12 @@
     'save'          => 'Save',
     'cancel'        => 'Cancel',
     'delete'        => 'Delete',
+    'delete_sel'    => 'Delete selected',
     'copy'          => 'Copy',
     'no_results'    => '- No entries found -',
-    'data_error'    => 'There was an error processing the subscription data. Please check the data source.'
-
+    'data_error'    => 'There was an error processing the subscription data. Please check the data source.',
+    'preview'       => 'Preview',
+    'records_found' => 'Records found'
 );
 
 # Localisation of the texts for the various drop-down menus that are actually
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/english_utf-8.php 1.4.1.src/cpanel-glprivate/language/english_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/english_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/english_utf-8.php	2006-12-16 14:50:23.000000000 -0600
@@ -8,8 +8,6 @@
 # Copyright (C) 2000 Jason Whittenburg
 # jwhitten AT securitygeeks DOT com
 #
-# Converted to Unicode (UTF-8) by Samuel M Stone <sam AT stonemicro DOT com>
-#
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
 # as published by the Free Software Foundation; either version 2
@@ -49,16 +47,16 @@
     4 => 'Edit',
     5 => 'Vote',
     6 => 'Results',
-    7 => 'Poll Results',
+    7 => '',
     8 => 'votes',
     9 => 'Admin Functions:',
     10 => 'Submissions',
     11 => 'Stories',
     12 => 'Blocks',
     13 => 'Topics',
-    14 => 'Links',
-    15 => 'Events',
-    16 => 'Polls',
+    14 => '',
+    15 => '',
+    16 => '',
     17 => 'Users',
     18 => 'SQL Query',
     19 => 'Log Out',
@@ -90,7 +88,7 @@
     45 => 'MySQL Error Number',
     46 => 'MySQL Error Message',
     47 => 'User Functions',
-    48 => 'Account Information',
+    48 => 'My Account',
     49 => 'Preferences',
     50 => 'Error with SQL statement',
     51 => 'help',
@@ -108,30 +106,30 @@
     63 => 'Comment Preferences',
     64 => 'Email Article To a Friend',
     65 => 'View Printable Version',
-    66 => 'My Calendar',
+    66 => '',
     67 => 'Welcome to ',
     68 => 'Home',
     69 => 'Contact',
     70 => 'Search',
     71 => 'Contribute',
     72 => 'Web Resources',
-    73 => 'Past Polls',
-    74 => 'Calendar',
+    73 => '',
+    74 => '',
     75 => 'Advanced Search',
     76 => 'Site Statistics',
     77 => 'Plugins',
-    78 => 'Upcoming Events',
+    78 => '',
     79 => 'What\'s New',
     80 => 'stories in last',
     81 => 'story in last',
     82 => 'hours',
     83 => 'COMMENTS',
-    84 => 'LINKS',
+    84 => '',
     85 => 'last 48 hrs',
     86 => 'No new comments',
     87 => 'last 2 wks',
-    88 => 'No recent new links',
-    89 => 'There are no upcoming events',
+    88 => '',
+    89 => '',
     90 => 'Home',
     91 => 'Created this page in',
     92 => 'seconds',
@@ -143,8 +141,8 @@
     98 => 'Plugins',
     99 => 'STORIES',
     100 => 'No new stories',
-    101 => 'Your Events',
-    102 => 'Site Events',
+    101 => '',
+    102 => '',
     103 => 'DB Backups',
     104 => 'by',
     105 => 'Mail Users',
@@ -165,28 +163,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendar of Events',
-    2 => 'I\'m sorry, there are no events to display.',
-    3 => 'When',
-    4 => 'Where',
-    5 => 'Description',
-    6 => 'Add An Event',
-    7 => 'Upcoming Events',
-    8 => 'By adding this event to your calendar you can quickly view only the events you are interested in by clicking "My Calendar" from the User Functions area.',
-    9 => 'Add to My Calendar',
-    10 => 'Remove from My Calendar',
-    11 => "Adding Event to {$_USER['username']}'s Calendar",
-    12 => 'Event',
-    13 => 'Starts',
-    14 => 'Ends',
-    15 => 'Back to Calendar'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -239,7 +219,7 @@
     11 => 'No User Comments',
     12 => 'User Preferences for',
     13 => 'Email Nightly Digest',
-    14 => 'This password is generated by a randomizer. It is recommended that you change this password immediately. To change your password, log in and then click Account Information from the User Functions menu.',
+    14 => 'This password is generated by a randomizer. It is recommended that you change this password immediately. To change your password, log in and then click My Account from the User Functions menu.',
     15 => "Your {$_CONF['site_name']} account has been created successfully. To be able to use it, you must login using the information below. Please save this mail for further reference.",
     16 => 'Your Account Information',
     17 => 'Account does not exist',
@@ -344,11 +324,45 @@
     116 => 'Account Awaiting Activation',
     117 => 'Your account is currently awaiting activation by an administrator. You will not be able to login until your account has been approved.',
     118 => "Your {$_CONF['site_name']} account has now been activated by an administrator. You may now login to the site at the url below using your username (<username>) and password as previously emailed to you.",
-    119 => "If you have forgotten your password, you may request a new one at this url:",
+    119 => 'If you have forgotten your password, you may request a new one at this url:',
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account',
+    157 => 'Delete Option'
 );
 
 ###############################################################################
@@ -439,17 +453,17 @@
     27 => 'seconds',
     28 => 'No story or comment matches for your search',
     29 => 'Story and Comment Results',
-    30 => 'No links matched your search',
+    30 => '',
     31 => 'This plugin returned no matches',
-    32 => 'Event',
+    32 => '',
     33 => 'URL',
     34 => 'Location',
     35 => 'All Day',
-    36 => 'No events matched your search',
-    37 => 'Event Results',
-    38 => 'Link Results',
-    39 => 'Links',
-    40 => 'Events',
+    36 => '',
+    37 => '',
+    38 => '',
+    39 => '',
+    40 => '',
     41 => 'Your query string should have at least 3 characters.',
     42 => 'Please use a date formatted as YYYY-MM-DD (year-month-day).',
     43 => 'exact phrase',
@@ -460,7 +474,7 @@
     48 => 'Author',
     49 => 'Date',
     50 => 'Hits',
-    51 => 'Link',
+    51 => '',
     52 => 'Location',
     53 => 'Story Results',
     54 => 'Comment Results',
@@ -482,7 +496,7 @@
     3 => 'Stories (Comments) in the system',
     4 => '',
     5 => '',
-    6 => 'Events in the system',
+    6 => '',
     7 => 'Top Ten Viewed Stories',
     8 => 'Story Title',
     9 => 'Views',
@@ -497,17 +511,17 @@
     18 => '',
     19 => '',
     20 => '',
-    21 => 'It appears that there are no links on this site or no one has ever clicked on one.',
+    21 => '',
     22 => 'Top Ten Emailed Stories',
     23 => 'Emails',
     24 => 'It appears that no one has emailed a story on this site',
     25 => 'Top Ten Trackback Commented Stories',
     26 => 'No trackback comments found.',
     27 => 'Number of active users',
-    28 => 'Top Ten Events',
-    29 => 'Event',
+    28 => '',
+    29 => '',
     30 => 'Hits',
-    31 => 'It appears that there are no events on this site or no one has ever clicked on one.'
+    31 => ''
 );
 
 ###############################################################################
@@ -528,14 +542,14 @@
     1 => 'To submit a %s you are required to be logged in as a user.',
     2 => 'Login',
     3 => 'New User',
-    4 => 'Submit an Event',
+    4 => '',
     5 => '',
     6 => 'Submit a Story',
     7 => 'Login is Required',
     8 => 'Submit',
     9 => 'When submitting information for use on this site we ask that you follow the following suggestions...<ul><li>Fill in all the fields, they\'re required<li>Provide complete and accurate information<li>Double check those URLs</ul>',
     10 => 'Title',
-    11 => 'Link',
+    11 => '',
     12 => 'Start Date',
     13 => 'End Date',
     14 => 'Location',
@@ -561,20 +575,20 @@
     34 => 'Log Out',
     35 => 'HTML tags are not allowed',
     36 => 'Post Mode',
-    37 => "Submitting an event to {$_CONF['site_name']} will put your event on the master calendar where users can optionally add your event to their personal calendar. This feature is <b>NOT</b> meant to store your personal events such as birthdays and anniversaries.<br><br>Once you submit your event it will be sent to our administrators and if approved, your event will appear on the master calendar.",
-    38 => 'Add Event To',
-    39 => 'Master Calendar',
-    40 => 'Personal Calendar',
-    41 => 'End Time',
-    42 => 'Start Time',
-    43 => 'All Day Event',
+    37 => '',
+    38 => '',
+    39 => '',
+    40 => '',
+    41 => '',
+    42 => '',
+    43 => '',
     44 => 'Address Line 1',
     45 => 'Address Line 2',
     46 => 'City/Town',
     47 => 'State',
     48 => 'Zip Code',
-    49 => 'Event Type',
-    50 => 'Edit Event Types',
+    49 => '',
+    50 => '',
     51 => 'Location',
     52 => 'Delete',
     53 => 'Create Account'
@@ -665,38 +679,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Event Editor',
-    2 => 'Error',
-    3 => 'Post Mode',
-    4 => 'Event URL',
-    5 => 'Event Start Date',
-    6 => 'Event End Date',
-    7 => 'Event Location',
-    8 => 'Event Description',
-    9 => '(include http://)',
-    10 => 'You must provide the dates/times, event title, and description',
-    11 => 'Event Manager',
-    12 => 'To modify or delete an event, click on that event\'s edit icon below.  To create a new event, click on "Create New" above. Click on the copy icon to create a copy of an existing event.',
-    13 => 'Author',
-    14 => 'Start Date',
-    15 => 'End Date',
-    16 => '',
-    17 => "You are trying to access an event that you don't have rights to.  This attempt has been logged. Please <a href=\"{$_CONF['site_admin_url']}/event.php\">go back to the event administration screen</a>.",
-    18 => '',
-    19 => '',
-    20 => 'save',
-    21 => 'cancel',
-    22 => 'delete',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -729,8 +714,8 @@
     24 => 'The ID you chose for this story is already in use. Please use another ID.',
     25 => 'Error when saving story',
     26 => 'Story Preview',
-    27 => 'If you use [unscaledX] instead of [imageX], the image will be inserted at its original dimensions.',
-    28 => '<p><b>PREVIEWING</b>: Previewing a story with images attached is best done by saving the article as a draft INSTEAD OF hitting the preview button.  Use the preview button only when images are not attached.',
+    27 => '<p>If you use [unscaledX] instead of [imageX], the image will be inserted at its original dimensions.',
+    28 => '<p><b>PREVIEWING</b>: Previewing a story with images attached is best done by saving the article as a draft INSTEAD OF hitting the preview button.  Use the preview button only when images are not attached.</p>',
     29 => 'Trackbacks',
     30 => 'File Upload Errors',
     31 => 'Please fill in the Title and Intro Text fields',
@@ -753,7 +738,7 @@
     48 => 'image',
     49 => 'right',
     50 => 'left',
-    51 => 'To add one of the images you are attaching to this article you need to insert specially formatted text.  The specially formatted text is [imageX], [imageX_right] or [imageX_left] where X is the number of the image you have attached.  NOTE: You must use the images you attach.  If you do not you will be unable to save your story.<br>',
+    51 => '<p>To add one of the images you are attaching to this article you need to insert specially formatted text.  The specially formatted text is [imageX], [imageX_right] or [imageX_left] where X is the number of the image you have attached.  NOTE: You must use the images you attach.  If you do not you will be unable to save your story.</p>',
     52 => '',
     53 => 'was not used.  You must include this image in the intro or body before you can save your changes',
     54 => 'Attached Images Not Used',
@@ -780,14 +765,16 @@
     75 => 'Full Featured',
     76 => 'Publish Options',
     77 => 'Javascript needs to be enabled for Advanced Editor. Option can be disabled in the main site config.php',
-    78 => 'Click <a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default">here</a> to use default editor',
+    78 => 'Click <a href="%s/story.php?mode=edit&sid=%s&editopt=default">here</a> to use default editor',
     79 => 'Preview',
     80 => 'Editor',
     81 => 'Publish Options',
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 
@@ -841,7 +828,7 @@
     9 => '(do not use spaces)',
     10 => 'Please fill in the Username and Email Address fields',
     11 => 'User Manager',
-    12 => 'To modify or delete a user, click on that user\'s edit icon below. To view a user, click on the username you wish to view. To create a new user, click on "Create New" above. You can do simple searches by entering parts of a username, email address or fullname (e.g. *son* or *.edu) in the form below.',
+    12 => 'To modify or delete a user, click on that user\'s edit icon below. To view a user, click on the username you wish to view. To create a new user, click on "Create New" above.',
     13 => 'SecLev',
     14 => 'Reg. Date',
     15 => '',
@@ -865,7 +852,7 @@
     33 => 'submit',
     34 => 'Error: You must specify a file to upload.',
     35 => 'Last Login',
-    36 => '(never)',
+    36 => 'never',
     37 => 'UID',
     38 => 'Group Listing',
     39 => 'Password (again)',
@@ -877,6 +864,35 @@
     45 => 'Active',
     46 => 'User Status',
     47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => "This only works if you have <code>\$_CONF['lastlogin'] = true;</code> in your config.php",
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -899,60 +915,13 @@
     34 => 'Command and Control',
     35 => 'Story Submissions',
     36 => '',
-    37 => 'Event Submissions',
+    37 => '',
     38 => 'Submit',
     39 => 'There are no submissions to moderate at this time',
     40 => 'User Submissions'
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Sunday',
-    2 => 'Monday',
-    3 => 'Tuesday',
-    4 => 'Wednesday',
-    5 => 'Thursday',
-    6 => 'Friday',
-    7 => 'Saturday',
-    8 => 'Add Event',
-    9 => '%s Event',
-    10 => 'Events for',
-    11 => 'Master Calendar',
-    12 => 'My Calendar',
-    13 => 'January',
-    14 => 'February',
-    15 => 'March',
-    16 => 'April',
-    17 => 'May',
-    18 => 'June',
-    19 => 'July',
-    20 => 'August',
-    21 => 'September',
-    22 => 'October',
-    23 => 'November',
-    24 => 'December',
-    25 => 'Back to ',
-    26 => 'All Day',
-    27 => 'Week',
-    28 => 'Personal Calendar for',
-    29 => 'Public Calendar',
-    30 => 'delete event',
-    31 => 'Add',
-    32 => 'Event',
-    33 => 'Date',
-    34 => 'Time',
-    35 => 'Quick Add',
-    36 => 'Submit',
-    37 => 'Sorry, the personal calendar feature is not enabled on this site',
-    38 => 'Personal Event Editor',
-    39 => 'Day',
-    40 => 'Week',
-    41 => 'Month'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1068,7 +1037,7 @@
     39 => 'Please fill in the Feed Title, Description, and Filename.',
     40 => 'Please enter a  number of entries or number of hours.',
     41 => 'Submit',
-    42 => 'Events',
+    42 => '',
     43 => 'All',
     44 => 'None',
     45 => 'Header-link in topic',
@@ -1076,7 +1045,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1085,8 +1056,8 @@
 $MESSAGE = array(
     1 => "Your password has been emailed to you and should arrive momentarily. Please follow the directions in the message and we thank-you for using {$_CONF['site_name']}",
     2 => "Thank-you for submitting your story to {$_CONF['site_name']}.  It has been submitted to our staff for approval. If approved, your story will be available for others to read on our site.",
-    3 => "",
-    4 => "Thank-you for submitting an event to {$_CONF['site_name']}.  It has been submitted to our staff for approval.  If approved, your event will be seen in our <a href=\"{$_CONF['site_url']}/calendar.php\">calendar</a> section.",
+    3 => '',
+    4 => '',
     5 => 'Your account information has been successfully saved.',
     6 => 'Your preferences have been successfully saved.',
     7 => 'Your comment preferences have been successfully saved.',
@@ -1099,26 +1070,26 @@
     14 => 'The topic and all its stories and blocks have been successfully deleted.',
     15 => '',
     16 => '',
-    17 => 'Your event has been successfully saved.',
-    18 => 'The event has been successfully deleted.',
-    19 => 'Your poll has been successfully saved.',
-    20 => 'The poll has been successfully deleted.',
+    17 => '',
+    18 => '',
+    19 => '',
+    20 => '',
     21 => 'The user has been successfully saved.',
     22 => 'The user has been successfully deleted.',
-    23 => 'Error trying to add an event to your calendar. There was no event id passed.',
-    24 => 'The event has been saved to your calendar',
-    25 => 'Cannot open your personal calendar until you login',
-    26 => 'Event was successfully removed from your personal calendar',
+    23 => '',
+    24 => '',
+    25 => '',
+    26 => '',
     27 => 'Message successfully sent.',
     28 => 'The plugin has been successfully saved',
-    29 => 'Sorry, personal calendars are not enabled on this site',
+    29 => '',
     30 => 'Access Denied',
     31 => 'Sorry, you do not have access to the story administration page.  Please note that all attempts to access unauthorized features are logged',
     32 => 'Sorry, you do not have access to the topic administration page.  Please note that all attempts to access unauthorized features are logged',
     33 => 'Sorry, you do not have access to the block administration page.  Please note that all attempts to access unauthorized features are logged',
-    34 => 'Sorry, you do not have access to the link administration page.  Please note that all attempts to access unauthorized features are logged',
-    35 => 'Sorry, you do not have access to the event administration page.  Please note that all attempts to access unauthorized features are logged',
-    36 => 'Sorry, you do not have access to the poll administration page.  Please note that all attempts to access unauthorized features are logged',
+    34 => '',
+    35 => '',
+    36 => '',
     37 => 'Sorry, you do not have access to the user administration page.  Please note that all attempts to access unauthorized features are logged',
     38 => 'Sorry, you do not have access to the plugin administration page.  Please note that all attempts to access unauthorized features are logged',
     39 => 'Sorry, you do not have access to the mail administration page.  Please note that all attempts to access unauthorized features are logged',
@@ -1157,7 +1128,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1187,9 +1167,9 @@
     'yes' => 'Yes',
     'no' => 'No',
     'corerightsdescr' => "This group is a core {$_CONF['site_name']} Group.  Therefore the rights for this group cannot be edited.  Below is a read-only list of the rights this group has access to.",
-    'groupmsg' => 'Security Groups on this site are hierarchical.  By adding this group to any of the groups below you will giving this group the same rights that those groups have.  Where possible it is encouraged you use the groups below to give rights to a group.  If you need this group to have custom rights then you can select the rights to various site features in the section below called \'Rights\'.  To add this group to any of the ones below simply check the box next to the group(s) that you want.',
-    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this groups belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
-    'rightsdescr' => 'A groups access to a certain right below can be given directly to the group OR to a different group that this group is a part of.  The ones you see below without a checkbox are the rights that have been given to this group because it belongs to another group with that right.  The rights with checkboxes below are rights that can be given directly to this group.',
+    'groupmsg' => 'Security Groups on this site are hierarchical.  By adding this group to any of the groups below you will be giving this group the same rights that those groups have.  Where possible it is encouraged you use the groups below to give rights to a group.  If you need this group to have custom rights then you can select the rights to various site features in the section below called \'Rights\'.  To add this group to any of the ones below simply check the box next to the group(s) that you want.',
+    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this group belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
+    'rightsdescr' => 'A group\'s access to a certain right below can be given directly to the group OR to a different group that this group is a part of.  The ones you see below without a checkbox are the rights that have been given to this group because it belongs to another group with that right.  The rights with checkboxes below are rights that can be given directly to this group.',
     'lock' => 'Lock',
     'members' => 'Members',
     'anonymous' => 'Anonymous',
@@ -1199,7 +1179,6 @@
     'none' => 'None',
     'accessdenied' => 'Access Denied',
     'storydenialmsg' => "You do not have access to view this story.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=\"{$_CONF['site_url']}/users.php?mode=new\">become a member</a> of {$_CONF['site_name']} to receive full membership access!",
-    'eventdenialmsg' => "You do not have access to view this event.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=\"{$_CONF['site_url']}/users.php?mode=new\">become a member</a> of {$_CONF['site_name']} to receive full membership access!",
     'nogroupsforcoregroup' => 'This group doesn\'t belong to any of the other groups',
     'grouphasnorights' => 'This group doesn\'t have access to any of the administrative features of this site',
     'newgroup' => 'New Group',
@@ -1253,9 +1232,9 @@
     1 => 'Home',
     2 => 'Contact',
     3 => 'Get Published',
-    4 => 'Links',
-    5 => 'Polls',
-    6 => 'Calendar',
+    4 => '',
+    5 => '',
+    6 => '',
     7 => 'Site Stats',
     8 => 'Personalize',
     9 => 'Search',
@@ -1381,7 +1360,8 @@
     'pingback_note'      => 'To send a pingback for a story, go to the list of stories and click on "' . $LANG24[21] . '" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing'   => 'No Pingback URL',
     'pbtarget_required'  => 'Please enter a pingback URL',
-    'pb_error_details'   => 'Error when sending the pingback:'
+    'pb_error_details'   => 'Error when sending the pingback:',
+    'delete_trackback'   => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1420,19 +1400,46 @@
     'month'       => 'month'
 );
 
+$LANG_MONTH = array(
+    1 => 'January',
+    2 => 'February',
+    3 => 'March',
+    4 => 'April',
+    5 => 'May',
+    6 => 'June',
+    7 => 'July',
+    8 => 'August',
+    9 => 'September',
+    10 => 'October',
+    11 => 'November',
+    12 => 'December'
+);
+
+$LANG_WEEK = array(
+    1 => 'Sunday',
+    2 => 'Monday',
+    3 => 'Tuesday',
+    4 => 'Wednesday',
+    5 => 'Thurdsay',
+    6 => 'Friday',
+    7 => 'Saturday'
+);
+
 ################################################################################
 # Admin - Strings
 #
 # These are some standard strings used by core functions as well as plugins to
-# display adminiatration lists and edit pages
+# display administration lists and edit pages
 
 $LANG_ADMIN = array (
     'search'        => 'Search',
     'limit_results' => 'Limit Results',
     'submit'        => 'Submit',
     'edit'          => 'Edit',
+    'edit_adv'      => 'Adv. Edit',
     'admin_home'    => 'Admin Home',
     'create_new'    => 'Create New',
+    'create_new_adv'=> 'Create New (Adv.)',
     'enabled'       => 'Enabled',
     'title'         => 'Title',
     'type'          => 'Type',
@@ -1441,10 +1448,12 @@
     'save'          => 'Save',
     'cancel'        => 'Cancel',
     'delete'        => 'Delete',
+    'delete_sel'    => 'Delete selected',
     'copy'          => 'Copy',
     'no_results'    => '- No entries found -',
-    'data_error'    => 'There was an error processing the subscription data. Please check the data source.'
-
+    'data_error'    => 'There was an error processing the subscription data. Please check the data source.',
+    'preview'       => 'Preview',
+    'records_found' => 'Records found'
 );
 
 # Localisation of the texts for the various drop-down menus that are actually
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/estonian.php 1.4.1.src/cpanel-glprivate/language/estonian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/estonian.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/language/estonian.php	2006-12-31 02:43:27.000000000 -0600
@@ -0,0 +1,1516 @@
+<?php
+
+###############################################################################
+# estonian.php
+# This is the estonian language page for GeekLog!
+#
+# Copyright (C) 2000 Jason Whittenburg
+# jwhitten@securitygeeks.com
+#
+# Estonian translation by Artur Rpp <rtr AT planet DOT ee>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+$LANG_CHARSET = 'iso-8859-1';
+
+###############################################################################
+# Array Format:
+# $LANGXX[YY]:  $LANG - variable name
+#               XX    - file id number
+#               YY    - phrase id number
+###############################################################################
+
+###############################################################################
+# USER PHRASES - These are file phrases used in end user scripts
+###############################################################################
+
+###############################################################################
+# lib-common.php
+
+$LANG01 = array(
+    1 => 'Postitajaks:',
+    2 => 'loe lisaks',
+    3 => 'kommentaari',
+    4 => 'Toimeta',
+    5 => 'Hleta',
+    6 => 'Tulemused',
+    7 => 'Hletuse tulemused',
+    8 => 'hletanut',
+    9 => 'Admini funktsioonid:',
+    10 => 'Sisestused',
+    11 => 'Lugu',
+    12 => 'Blokid',
+    13 => 'Rubriigid',
+    14 => 'Lingid',
+    15 => 'Sndmused',
+    16 => 'Ksitlused',
+    17 => 'Kasutajad',
+    18 => 'SQL pring',
+    19 => 'Logi vlja',
+    20 => 'Kasutaja info',
+    21 => 'Kasutajanimi',
+    22 => 'Kasutaja ID',
+    23 => 'Turvatase',
+    24 => 'Anonmne',
+    25 => 'Vasta',
+    26 => 'Jrgnevate kommentaaride omanikuks on need, kes iganes need postitas. See leht ei vastuta nende poolt eldu eest.',
+    27 => 'Vrskeim postitus',
+    28 => 'Kustuta',
+    29 => 'Pole kommentaare.',
+    30 => 'Vanemad lood',
+    31 => 'Lubatud HTML sildid:',
+    32 => 'Viga, sobimatu kasutajanimi',
+    33 => 'Viga, ei saanud kirjutada logifaili',
+    34 => 'Viga',
+    35 => 'Logi vlja',
+    36 => 'Aeg',
+    37 => 'Pole kasutaja lugusid',
+    38 => 'Sisu jagamine',
+    39 => 'Vrskenda',
+    40 => 'Sul on <tt>php.ini</tt> failis <tt>register_globals = Off</tt>. Kuid Geeklogi jaoks peab olema <tt>register_globals</tt> = <strong>on</strong>. Enne jtkamist sea selle vrtuseks <strong>"on"</strong> ja taaskivita veebiserver.',
+    41 => 'Klaliskasutajaid',
+    42 => 'Autoriks:',
+    43 => 'Vasta sellele',
+    44 => 'Tase krgemal',
+    45 => 'MySQL vea number',
+    46 => 'MySQL veateade',
+    47 => 'Lehe kasutajale',
+    48 => 'Konto info',
+    49 => 'eelistused',
+    50 => 'Viga SQL lauses',
+    51 => 'abi',
+    52 => 'Uus',
+    53 => 'Admin avaleht',
+    54 => 'Ei saanud avada faili.',
+    55 => 'Viga: koht',
+    56 => 'Hleta',
+    57 => 'Salasna',
+    58 => 'Logi sisse',
+    59 => "Pole veel kontot? Logi sisse <a href=\"{$_CONF['site_url']}/users.php?mode=new\">uue kasutajana</a>",
+    60 => 'Postita kommentaar',
+    61 => 'Loo uus kasutajakonto',
+    62 => 'sna',
+    63 => 'Kommentaaride eelistused',
+    64 => 'Saada artikkel sbrale E-postiga',
+    65 => 'Nita printversiooni',
+    66 => 'Minu kalender',
+    67 => 'Tere siia - ',
+    68 => 'Avaleht',
+    69 => 'Kontakt',
+    70 => 'Otsi',
+    71 => 'Lisa lehele lugu',
+    72 => 'Veebi kohad',
+    73 => 'Vanemad ksitlused',
+    74 => 'Kalender',
+    75 => 'Otsing', // tpsem otsing
+    76 => 'Lehe statistika',
+    77 => 'Pluginad',
+    78 => 'Tulevased sndmused',
+    79 => 'Mida uut',
+    80 => 'viimased lood',
+    81 => 'viimane lugu',
+    82 => 'tundi',
+    83 => 'KOMMENTAARE',
+    84 => 'LINKE',
+    85 => 'viimased 48 t',
+    86 => 'Pole uusi kommentaare',
+    87 => 'viimased 2 n',
+    88 => 'Pole uusi linke',
+    89 => 'Pole tulevasi sndmusi',
+    90 => 'Avaleht',
+    91 => 'Leht valmis',
+    92 => 'sekundiga',
+    93 => '(C)', // copyright
+    94 => 'Kik sellel lehel olevad kaubamrgid ja autorikaitsega materjalid kuuluvad nende igustatud omanikele.',
+    95 => 'Mootoriks on',
+    96 => 'Grupid',
+    97 => 'Snade loetelu',
+    98 => 'Pluginad',
+    99 => 'LOOD',
+    100 => 'Pole uusi lugusid',
+    101 => 'Sinu sndmused',
+    102 => 'Sndmused',
+    103 => 'DB Backupid',
+    104 => '',// by
+    105 => 'E-post kasutajatele',
+    106 => 'Vaatamisi',
+    107 => 'GL versiooni test',
+    108 => 'Thjenda puhvermlu',
+    109 => 'Teata kuritahtlikkusest',
+    110 => 'Teata sellest postitusest lehe administraatorile',
+    111 => 'Vaata PDF versiooni',
+    112 => 'Registreeritud kasutajaid',
+    113 => 'Dokumentatsioon',
+    114 => 'TRACKBACKID',
+    115 => 'Pole uusi trackback kommentaare',
+    116 => 'Trackback',
+    117 => 'Lood ajalises jrjekorras',
+    118 => 'Palun jtka lugemist jrgmisel lehel:',
+    119 => "Kaotasid oma <a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">salasna?</a>",
+    120 => 'Psilink sellele kommentaarile',
+    121 => 'Kommentaare (%d)',
+    122 => 'Trackbacke (%d)',
+    123 => 'Kogu HTML on lubatud',
+    124 => 'Klpsa kigi mrgitute kustutamiseks',
+    125 => 'Kas oled kindel, et soovid kiki neid kustutada?',
+    126 => 'Mrgi/eemalda mrge kigilt'
+);
+
+###############################################################################
+# comment.php
+
+$LANG03 = array(
+    1 => 'Postita kommentaar',
+    2 => 'Postituse viis',
+    3 => 'Logi vlja',
+    4 => 'Loo konto',
+    5 => 'Kasutajanimi',
+    6 => 'Sellel lehel peate kommentaaride postitamiseks eelnevalt sisse logima. Kui sul ei ole veel kasutajakontot, vid alloleva vormi abiga endale konto luua.',
+    7 => 'Sinu viimane kommentaar oli ',
+    8 => " sekundit tagasi.  Sellel lehel  peab kommentaaride vahe olema vhemalt {$_CONF['commentspeedlimit']} sekundit",
+    9 => 'kommentaar',
+    10 => 'Saada raport',
+    11 => 'Saada kommentaar',
+    12 => 'Palun tida tiitli ja kommentaari vljad. Need on kommentaari postitamisel kohustuslikud.',
+    13 => 'Info sinu kohta',
+    14 => 'Eelvaade',
+    15 => 'Teata sellest postitusest',
+    16 => 'Tiitel',
+    17 => 'Viga',
+    18 => 'Oluline',
+    19 => 'Hoia snum vastavuses teemaga.',
+    20 => 'Proovi uue teema algatamise asemel pigem vastata teiste postitustele',
+    21 => 'Loe enne postitamist teiste poolt eldut, vltides nii juba eldu kordamist.',
+    22 => 'Kasuta sinu snumit selgelt kirjeldavat tiitlit.',
+    23 => 'Sinu E-postiaadressi ei tehta avalikuks.',
+    24 => 'Anonmne kasutaja',
+    25 => 'Kas oled kindel, et soovid teatada sellest postitusest lehe administraatorile?',
+    26 => '%s teatas jrgmisest kuritahtlikust postitusest:',
+    27 => 'Kuritahtlikkusest teatamine'
+);
+
+###############################################################################
+# usersettings.php
+
+$LANG04 = array(
+    1 => 'Kasutaja profiil, omanik',
+    2 => 'Kasutajanimi',
+    3 => 'Tisnimi',
+    4 => 'Salasna',
+    5 => 'E-postiaadress',
+    6 => 'Koduleht',
+    7 => 'Bio',
+    8 => 'PGP vti',
+    9 => 'Salvesta info',
+    10 => 'Viimased 10 kommentaari, kommenteerijaks',
+    11 => 'Pole kasutaja kommentaare',
+    12 => 'Kasutaja eelistused, kasutaja -',
+    13 => 'Saada siti kokkuvtted',
+    14 => 'See salasna on genereeritud juhusliku smbolite kombinatsioonina. On soovitav, et sa vahetad koheselt salasna. Salasna muutmiseks logi oma kasutajanime ja salasna abil sisse ja ava "Lehe kasutajale" alt "Konto info".',
+    15 => "Sinu {$_CONF['site_name']} konto on edukalt loodud. Selle kasutamiseks pead sa allpool oleva info abil sisse logima. Palun salvesta see kiri edaspidiseks kasutamiseks.",
+    16 => 'Sinu kasutajakonto info',
+    17 => 'Kontot ei ole',
+    18 => 'Sisestatud E-postiaadress tundub olevat ebakorrektne E-postiaadress',
+    19 => 'Kasutajanimi vi E-postiaadress on juba olemas',
+    20 => 'Sisestatud E-postiaadress tundub olevat ebakorrektne E-postiaadress',
+    21 => 'Viga',
+    22 => "Registreeri {$_CONF['site_name']} lehel!",
+    23 => "Kasutajakonto loomine annab sulle kik {$_CONF['site_name']} lehe poolt kasutajale pakutavad vimalused. Sa vid postitada oma nimega  kommentaare ja uusi lugusid. Kui sul ei ole kontot, ei saa sa neid postitada. Sinu E-postiaadressi <i><b>ei nidata kunagi</b></i> sellel lehel avalikult.",
+    24 => 'Sinu salasna saadetakse siin sisestatud E-postiaadressil.',
+    25 => 'Kas unustasid oma salasna?',
+    26 => 'Sisesta <em>kas</em> oma kasutajanimi <em> vi </em> registreerimisel antud E-postiaadress ning klpsa Saada salasna. Antud E-postiaadressile saadetakse juhendid, kuidas mrata uus salasna.',
+    27 => 'Registreeri nd!',
+    28 => 'Saada salasna',
+    29 => 'vlja logitud',
+    30 => 'logitud sisse lehelt',
+    31 => 'Sinu valitud ksk vajab, et oleksid sisse logitud',
+    32 => 'Allkiri',
+    33 => 'Ei nidata kunagi avalikel lehtedel',
+    34 => 'See on sinu tegelik nimi',
+    35 => 'Sisesta uus salasna',
+    36 => 'Koos http://',
+    37 => 'Rakendatakse sinu kommentaaridele',
+    38 => 'See on kik sinu kohta! Kik saavad seda lugeda',
+    39 => 'Sinu avalik/public PGP vti levitamiseks',
+    40 => 'Pole rubriikide ikoone',
+    41 => 'Soovid modereerida',
+    42 => 'Kuupeva formaat',
+    43 => 'Lugude maksimum',
+    44 => 'pole kaste',
+    45 => 'Nita eelistusi - kasutaja',
+    46 => 'Vljaarvatud asjad - kasutaja',
+    47 => 'Uudistekasti hlestus - kasutaja',
+    48 => 'Rubriigid',
+    49 => 'Lugudes pole ikoone',
+    50 => 'Eemalda mrge, kui pole huvitatud',
+    51 => 'Ainult uudislood',
+    52 => 'Vaikimisi on',
+    53 => 'Saada igal sel peval postitatud lood .',
+    54 => 'Mrgi (rubriigid/autorid), mida sa ei soovi nha',
+    55 => 'Kui sa jtad kik mrkimata, siis rakendatakse ssteemi vaikimisi hlestust. Kui aga alustad mrkimist, siis mrgi kindlasti kik soovitud, sest ssteemi vaikeseadistust sinule ei rakendata. Ssteemi vaikevalikud on rasvases kirjas.',
+    56 => 'Autorid',
+    57 => 'Nitamise viis',
+    58 => 'Sorteerimisjrjekord',
+    59 => 'Kommentaaride limiit',
+    60 => 'Kuidas soovid, et kommentaare nitan?',
+    61 => 'Uuemad vi vanemad enne',
+    62 => 'Vaikimisi on 100',
+    63 => "Sinu salasna saadeti sulle E-postiga ja peaks kohe kohale judma. Palun jrgi snumis olevaid juhendeid. Me tname sind {$_CONF['site_name']} kasutamise eest.",
+    64 => 'Kommentaaride eelistused - kasutaja',
+    65 => 'Proovi uuesti sisse logida',
+    66 => "Vib-olla kirjutasid kasutajatunnuse vi salasna valesti. Palun proovi alloleva vormi abil uuesti. Vi oled <a href=\"{$_CONF['site_url']}/users.php?mode=new\">uus kasutaja?</a>",
+    67 => 'Liige alates',
+    68 => 'Mleta mind',
+    69 => 'Kui kaua peale sisselogimist peaksin sind mletama?',
+    70 => "Kohanda {$_CONF['site_name']} sisu ja vlimust",
+    71 => "{$_CONF['site_name']} lehe ks headest omadustest on see, et sa vid mrata, millist sisu sulle nidatakse ja sa saad muuta lehe ldist vlimust. Selle kasutamiseks pead sa kigepealt <a href=\"{$_CONF['site_url']}/users.php?mode=new\">registreeruma</a> {$_CONF['site_name']} lehel.   Kui sa oled juba registreerinud, siis logi palun sisse.",
+    72 => 'Teema',
+    73 => 'Keel',
+    74 => 'Saidi vlimus',
+    75 => 'Rubriigid E-postiga kasutajale',
+    76 => 'Kui valid allpool olevast loetelust rubriigi, saadetakse peva lpus sulle kik antud teemas postitatud lood. Vali ainult sind huvitavad teemad!',
+    77 => 'Foto',
+    78 => 'Lisa pilt endast!',
+    79 => 'tee mrge selle pilti kustutamiseks', //'Check here to delete this picture',
+    80 => 'Logi sisse',
+    81 => 'Saada E-kiri',
+    82 => 'Viimased 10 lugu, postitajaks',
+    83 => 'Postituste statistika, autor',
+    84 => 'Artiklite koguarv:',
+    85 => 'Kommentaaride koguarv:',
+    86 => 'Leia kik postitused - autoriks',
+    87 => 'Sinu kasutajanimi',
+    88 => "Keegi, vimalik, et sa ise, tellis {$_CONF['site_name']} lehel aadressiga {$_CONF['site_url']}\n\n asuva kasutajakonto \"%s\" jaoks uue salasna. Kui sa soovid seda testi teha, siis kliki alloleval lingil vi ava see leht oma veebilehitsejas:\n\n",
+    89 => "Kui sa ei soovi salasna vahetada, siis ignoreeri seda E-kirja ning salasna vahetuse tellimus thistatakse (sinu salasna jb muutmata)\n\n",
+    90 => 'Sa vid allpool sisestada oma konto jaoks uue salasna. Pane thele, et vana salasna on kehtiv kuni oled selle vormi titnud ja uus salasna on serveri poolt kinnitatud.',
+    91 => 'Kinnita uus salasna',
+    92 => 'Sisesta uus salasna',
+    93 => 'Sinu viimane uue salasna tellimine toimus %d sekundit tagasi. Sellel lehel peab aga salasna tellimiste vahe olema vhemalt %d sekundit.',
+    94 => 'Kustuta konto "%s"',
+    95 => 'Oma kasutajakonto kustutamiseks klpsa allpool nupul Kustuta konto. Pane thele, et koos sellega ei kustutata selle kasutajakonto alt postitatud kommentaare ega jutte. Neid nidatakse edaspidi kui anonmse kasutaja poolt postitatuid.',
+    96 => 'kustuta konto',
+    97 => 'Kinnita kasutajakonto kustutamine',
+    98 => 'Kas oled kindel, et soovid oma kasutajakonto kustutada? Prast kustutamist ei saa sa enam sellel lehel kasutajana sisse logida (kuni sa pole uut kasutajakontot loonud). Kui oled kindel, klpsa uuesti allpool olevat nuppu "Kustuta konto"',
+    99 => 'Privaatsusvalikud - kasutaja',
+    100 => 'E-kiri administraatorilt',
+    101 => 'Luba lehe administraatoritelt E-kirju',
+    102 => 'E-kirjad kasutajatelt',
+    103 => 'Luba teistelt kasutajatelt E-kirju',
+    104 => 'Nita online staatust',
+    105 => 'Nita "Kes on online" blokis',
+    106 => 'Asukoht',
+    107 => 'Nidatakse sinu avalikus profiilis',
+    108 => 'Kontrolliks uus salasna uuesti',
+    109 => 'Kirjuta siia uuesti oma uus salasna',
+    110 => 'Praegune salasna',
+    111 => 'Palun sisesta oma praegune salasna',
+    112 => 'Liiga mitu jrjestikust ebannestunud sisselogimist. Palun proovi hiljem uuesti.',
+    113 => 'Ebannestunud sisselogimine',
+    114 => 'Kontole on ligips tkestatud',
+    115 => 'Ligips sinu kasutajakontole on tkestatud. Palun kontakteeru administraatoriga.',
+    116 => 'Konto ootab aktiveerimist',
+    117 => 'Sinu konto ootab hetkel administraatoripoolt aktiveerimist. Sa ei saa enne konto aktiveerimist sisse logida.',
+    118 => "Sinu {$_CONF['site_name']} lehe konto on nd administraatori poolt aktiveeritud. Sa saad nd alloleval aadressil oma kasutajanime <username>) ja eelnevalt saadetud salasnaga sisse logida.",
+    119 => "Kui sa unustasid oma salasna vid tellida uue salasna URL-ilt",
+    120 => 'Konto on aktiveeritud',
+    121 => 'Teenus',
+    122 => 'Kahjuks uute kasutajate registreerimine on suletud',
+    123 => "Kas sa oled <a href=\"{$_CONF['site_url']}/users.php?mode=new\">uus kasutaja?</a>",
+    124 => 'Kinnita E-postiaadress',
+    125 => 'Sa pead sisestama sama E-postiaadressi mlemale vljale!',
+    126 => 'Palun korda vigade vltimiseks',
+    127 => 'Neist seadistustest kskik millise muutmiseks pead sa sisestama oma kehtiva salasna.',
+    128 => 'Sinu nimi',
+    129 => 'Salasna ja E-post',
+    130 => 'Sinust',
+    131 => 'Peva kokkuvttekirjade valikud',
+    132 => 'Peva kokkuvttekirjade vimalused',
+    133 => 'Kommentaaride nitamine',
+    134 => 'Kommentaaride valikud',
+    135 => '<li>Vaikimisi seatud kommentaaride nitamisviis</li><li>Kommentaaride sorteerimise vaikejrjekord</li><li>Sea kommentaaride maksimumarv, vaikimisi on 100</li>',
+    136 => 'Arva vlja rubriigid ja autorid',
+    137 => 'Filtreeri lugusid',
+    138 => 'Mitmesugused valikud',
+    139 => 'Vlimus ja keel',
+    140 => '<li>Pole ikoone, Kui mrgitud, ei nidata rubriikide ikoone</li><li>Pole kaste, kui mrgitud nidatakse ainult Kasutaja valikuid, rubriike ja administraatoritele administraatori valikuid</li><li>Mra hel lehel maksimaalselt nidatavate lugude arv</li><li>Mra kasutatav vlimuse teema ja kuupeva formaat</li>',
+    141 => 'Privaatsusseadistused',
+    142 => 'Vaikimisi on mratud, et kasutajad ja administraatorid vivad saata "lehekaaslastele" E-kirju ja lehel nidatakse kui sa oled online. Eemalda mrked, et kaitsta oma privaatsust.',
+    143 => 'Filtreeri kaste',
+    144 => 'Nita/peida kaste',
+    145 => 'Sinu avalik profiil',
+    146 => 'Salasna ja E-post',
+    147 => 'Muuda oma salasna, E-postiaadressi vi autologimist. Salasna ja E-postiaadressi muutmisel pead sa vigade vltimiseks sisestama need topelt.',
+    148 => 'Kasutaja info',
+    149 => 'Muuda teistele kasutajatele nhtavat kasutajainfot. <li>Allkiri lisatakse sinu kommentaaridele</li><li>Bio on lhike sinu kirjeldus teistele</li><li>Jaga oma PGP vtit</li>',
+    150 => 'Mrkus: mugavamaks kasutamiseks on soovitav JavaScript.',
+    151 => 'Eelvaade',
+    152 => 'Kasutajanimi ja salasna',
+    153 => 'Vlimus ja keel',
+    154 => 'Sisu',
+    155 => 'Privaatsus',
+    156 => 'Kustuta konto',
+    157 => 'Kustutamisvalik'
+);
+
+###############################################################################
+# index.php
+
+$LANG05 = array(
+    1 => 'Pole midagi nidata',
+    2 => 'Pole midagi nidata. Vimalik, et selles rubriigis pole htegi lugu, mida nidata vi on sinu kasutajaeelistused liiga kitsendavad, et nidata neid',
+    3 => " rubriigis %s",
+    4 => 'Tnane peaartikkel',
+    5 => 'Jrgmine',
+    6 => 'Eelmine',
+    7 => 'Esimene',
+    8 => 'Viimane'
+);
+
+###############################################################################
+# profiles.php
+
+$LANG08 = array(
+    1 => 'Sinu kirja saatmisel tekkis viga. Palun proovi uuesti.',
+    2 => 'Snum on edukalt saadetud.',
+    3 => 'Palun veendu, et saatja E-postiaadressiks oleks toimiv E-postiaadress.',
+    4 => 'Palun tida "Sinu nimi", "Sinu E-postiaadress", "Teema" ja snumi vljad.',
+    5 => 'Viga: pole sellist kasutajat.',
+    6 => 'Oli viga..',
+    7 => 'Kasutajaprofiil, omanik ',
+    8 => 'Kasutaja nimi',
+    9 => 'Kasutaja URL',
+    10 => 'Saada E-post, kirja saajaks',
+    11 => 'Sinu nimi:',
+    12 => 'Sinu E-postiaadress:',
+    13 => 'Teema:',
+    14 => 'Snum:',
+    15 => 'HTML-i ei transleerita .',
+    16 => 'Valmis',
+    17 => 'Saada lugu sbrale',
+    18 => 'Saaja nimi',
+    19 => 'E-postiaadress',
+    20 => 'Saatja nimi',
+    21 => 'Saatja E-postiaadress',
+    22 => 'Kik vljad on kohustuslikud',
+    23 => "See E-kiri saadeti sulle %s %s poolt, sest ta arvas, et sa oled huvitatud artiklist {$_CONF['site_url']} lehel.  See ei ole rmpskiri. Antud kirjaga seotud E-postiaadresseid ei silitata hilisemaks kasutamiseks!",
+    24 => 'Kommenteeri seda lugu aadressil',
+    25 => 'Selle vimaluse kasutamiseks pead sa lehele sisse logima. See nue aitab meil kaitsta lehte vrkasutuste eest.',
+    26 => 'Selle vormi abil saad saata E-kirja valitud inimesele. Kik vljad on kohustuslikud.',
+    27 => 'Lhike snum',
+    28 => "%s kirjutas: ",
+    29 => "See on pevane kokkuvte {$_CONF['site_name']} lehelt kasutajale.",
+    30 => 'Igapevane uudiskiri kasutajale  ',
+    31 => 'Tiitel',
+    32 => 'Pev',
+    33 => 'Loe kogu artiklit aadressil',
+    34 => 'Snumi lpp',
+    35 => 'Kahjuks see kasutaja ei soovi kirju saada.',
+);
+
+###############################################################################
+# search.php
+
+$LANG09 = array(
+    1 => 'Otsing', // tpsem otsing
+    2 => 'Mrksnad',
+    3 => 'Rubriik',
+    4 => 'Kik',
+    5 => 'Tp',
+    6 => 'Lood',
+    7 => 'Kommentaarid',
+    8 => 'Autorid',
+    9 => 'Kik',
+    10 => 'Otsi',
+    11 => 'Otsingu tulemused',
+    12 => 'Sobivaid',
+    13 => 'Otsingu tulemused: ei leitud sobivaid',
+    14 => 'Ei leitud sobivat otsitavale',
+    15 => 'Palun proovi uuesti.',
+    16 => 'Tiitel',
+    17 => 'pev',
+    18 => 'Postitaja',
+    19 => "Otsi kigist {$_CONF['site_name']} praegustest ja eelmistest lugudest",
+    20 => 'kuupev',
+    21 => 'kuni',
+    22 => '(kuupeva formaat AAAA-KK-PP)',
+    23 => 'Vaatamisi',
+    24 => 'Leidsin %d sobivat',
+    25 => 'Otsiti',
+    26 => 'asja ',
+    27 => 'sekundit',
+    28 => 'kski lugu ega kommentaar ei sobinud otsitavaga',
+    29 => 'Lugude ja kommentaaride tulemus',
+    30 => 'kski link ei sobinud otsitavaga',
+    31 => 'See plugin ei leidnud sobivaid',
+    32 => 'Sndmus',
+    33 => 'URL',
+    34 => 'Asukoht',
+    35 => 'Kogu pev',
+    36 => 'kski sndmus ei sobinud otsinguga',
+    37 => 'Sndmuste tulemus',
+    38 => 'Linkide tulemus',
+    39 => 'Linke',
+    40 => 'Sndmused',
+    41 => 'Otsitav peab olema vhemalt 3 mrki pikk',
+    42 => 'Palun kasuta kuupeva kujul AAAA-KK-PP(aasta-kuu-pev)',
+    43 => 'tpne fraas',
+    44 => 'Kik need snad',
+    45 => 'vhemalt ks neist snadest',
+    46 => 'Jrgmine',
+    47 => 'Eelmine',
+    48 => 'Autor',
+    49 => 'Pev',
+    50 => 'Klikke',
+    51 => 'Link',
+    52 => 'Asukoht',
+    53 => 'Lugude tulemus',
+    54 => 'Kommentaaride tulemus',
+    55 => 'fraasi',
+    56 => 'JA',
+    57 => 'VI',
+    58 => 'Rohkem tulemusi &gt;&gt;',
+    59 => 'Tulemused',
+    60 => 'lehel',
+    61 => ' tpsusta otsingut'
+);
+
+###############################################################################
+# stats.php
+
+$LANG10 = array(
+    1 => 'Lehe statistika',
+    2 => 'Klikkide koguarv lehtedel',
+    3 => 'Lugusid (kommentaare lehtedel',
+    4 => 'Ksitlusi (vastuseid)',
+    5 => 'Linke (klikke)',
+    6 => 'Sndmusi',
+    7 => '10 enim vaadatud lugu',
+    8 => 'Loo tiitel',
+    9 => 'Vaatamisi',
+    10 => 'Nib, et saidil pole htegi lugu vi mitte keegi pole neid vaadanud.',
+    11 => '10 enim kommenteeritud lugu',
+    12 => 'Kommentaare',
+    13 => 'Nib, et saidil pole htegi lugu vi mitte keegi pole neile postitanud htegi kommentaari.',
+    14 => 'Top 10 ksitlust',
+    15 => 'Ksitluse ksimus',
+    16 => 'Hli',
+    17 => 'Nib, et saidil pole htegi ksitlust vi mitte keegi pole neil hletanud.',
+    18 => 'Top 10 linki',
+    19 => 'Linke',
+    20 => 'Klikke',
+    21 => 'Nib, et saidil pole htegi linki vi mitte keegi pole helgi neist klpsanud.',
+    22 => 'Top 10 E-postiga saadetud lugu',
+    23 => 'E-kirju',
+    24 => 'Nib, et mitte keegi pole saidil saatnud htegi lugu E-postiga.',
+    25 => 'Top 10 trackback abil kommenteeritud lugu',
+    26 => 'Ei leidnud trackback kommentaare.',
+    27 => 'Aktiivseid kasutajaid',
+    28 => 'Top 10 sndmust',
+    29 => 'Sndmus',
+    30 => 'Klikke',
+    31 => ''
+);
+
+###############################################################################
+# article.php
+
+$LANG11 = array(
+    1 => 'Seotud',
+    2 => 'Saada lugu sbrale',
+    3 => 'Lugu prinditaval kujul',
+    4 => 'Loo valikud',
+    5 => 'PDF lugude formaat'
+);
+
+###############################################################################
+# submit.php
+
+$LANG12 = array(
+    1 => "Selleks et lisada %s pead sa kasutajana sisse logima.",
+    2 => 'Logi sisse',
+    3 => 'Uus kasutaja',
+    4 => 'Lisa sndmus',
+    5 => 'Lisa link',
+    6 => 'Lisa lugu',
+    7 => 'Nutav on sisselogimine',
+    8 => 'Sisesta',
+    9 => 'Kui lisad meie saidile uut infot, palume jrgida jrgmisi soovitusi ...<ul><li>Tida kik vljad, mis on kohustuslikud</li><li>Anna tielik ja tpne info</li><li>Kontrolli hoolikalt kirjutatud URL-id (veebiaadressid)</li></ul>',
+    10 => 'Tiitel',
+    11 => 'Link',
+    12 => 'Alguskuupev',
+    13 => 'Lpukuupev',
+    14 => 'Asukoht',
+    15 => 'Kirjeldus',
+    16 => 'Kui "Muu", siis tpsusta',
+    17 => 'Kategooria',
+    18 => 'Muu',
+    19 => 'Loe enne',
+    20 => 'Viga: kategooria on puudu',
+    21 => 'Kui valisid Muu, sisesta palun ka kategooria nimi.',
+    22 => 'Viga: puuduvad vljad',
+    23 => 'Palun tida kik vormi vljad. Kik vljad on kohustuslikud.',
+    24 => 'Sisestus on salvestatud',
+    25 => "Sinu sisestatud %s on edukalt salvestatud.",
+    26 => 'Kiiruse piirang',
+    27 => 'Kasutajanimi',
+    28 => 'Rubriik',
+    29 => 'Lugu',
+    30 => 'Sinu viimane postitus oli',
+    31 => " sekundit tagasi.  Sellel lehel   peab sisestuste vahe olema vhemalt {$_CONF['speedlimit']} sekundit.",
+    32 => 'Eelvaade',
+    33 => 'Loo eelvaade',
+    34 => 'Logi vlja',
+    35 => 'HTML sildid pole lubatud',
+    36 => 'Postituse tp',
+    37 => "Lisades {$_CONF['site_name']} lehele sndmuse, paigutub see peakalendrisse, kust kasutajad saavad soovi korral lisada selle oma enda isiklikku kalendrisse. Lehe kalender <b>ei ole </b> meldud teieisiklike sndmuste, nagu snnipevade vi thtpevade jaoks.<br><br>Sndmuse lisamisel saadetakse see meie administraatoritele. Prast administraatorite poolset kinnitamist ilmub lisatud sndmus peakalendrisse.",
+    38 => 'Lisa sndmus',
+    39 => 'peakalender',
+    40 => 'Isiklik kalender',
+    41 => 'lpuaeg',
+    42 => 'algusaeg',
+    43 => 'Kogu pev',
+    44 => 'aadressrida 1',
+    45 => 'aadressrida 2',
+    46 => 'linn',
+    47 => 'Piirkond',
+    48 => 'postiindeks',
+    49 => 'Sndmuse tp',
+    50 => 'Toimeta sndmuste tpe',
+    51 => 'Asukoht',
+    52 => 'Kustuta',
+    53 => 'Loo konto'
+);
+
+###############################################################################
+# ADMIN PHRASES - These are file phrases used in admin scripts
+###############################################################################
+
+###############################################################################
+# admin/auth.inc.php
+
+$LANG20 = array(
+    1 => 'Nutav on autoriseerimine',
+    2 => 'Tkestatud! Ebakorrektne info logimisel',
+    3 => 'vigane salasna, kasutajanimi',
+    4 => 'Kasutajanimi:',
+    5 => 'Salasna:',
+    6 => 'Kik katsed pseda ligi selle lehe administreerimisosadele logitakse ja vaadatakse lbi. <br> See leht on meldud ainult autoriseeritud kasutajatele.',
+    7 => 'logi sisse'
+);
+
+###############################################################################
+# admin/block.php
+
+$LANG21 = array(
+    1 => 'Ebapiisavalt administreerimisiguseid',
+    2 => 'Sul ei ole piisavalt igusi selle bloki toimetamiseks.',
+    3 => 'Bloki toimetaja',
+    4 => 'Tekkis probleem selle lime lugemisel. Tpsemalt loe error.log failist.',
+    5 => 'Bloki tiitel',
+    6 => 'rubriik',
+    7 => 'Kik',
+    8 => 'Bloki turvatase',
+    9 => 'Bloki jrjekord',
+    10 => 'Bloki tp',
+    11 => 'Portaalblokk',
+    12 => 'Normaalblokk',
+    13 => 'Portaalbloki valikud',
+    14 => 'RSS URL',
+    15 => 'Viimane RSS uuendus',
+    16 => 'Normaalbloki valikud',
+    17 => 'Bloki sisu',
+    18 => 'Palun tida bloki tiitli ja sisu vljad',
+    19 => 'Bloki haldur',
+    20 => 'Bloki tiitel',
+    21 => 'Bloki turva..',
+    22 => 'Bloki tp',
+    23 => 'Bloki jrjekord',
+    24 => 'Bloki rubriik',
+    25 => 'Bloki toimetamiseks vi kustutamiseks klpsa allpool selle tiitlil. Uue bloki loomiseks klpsa Tee uus lal.',
+    26 => 'Kujundusblokk',
+    27 => 'PHP blokk',
+    28 => 'PHP bloki valikud',
+    29 => 'Bloki funktsioon',
+    30 => 'Kui sa soovid oma blokis kasutada PHP kske, sisesta allolevasse kasti PHP funktsiooni nimi. See peab algama eesliitega "phpblock_" (n. phpblock_getweather). Ilma selle eesliiteta funktsiooni ei kivitata. Me oleme lisanud selle kitsenduse kaitsmaks sinu saiti juhuks, kui keegi on sellele sisse hkkinud ja lisanud lehe koodi kontrollimata kske. Jlgi, et sa ei lisaks funktsiooni nime lppu sulge "()". On soovitav panna oma PHP blokkide jaoks meldud funktsioonid faili /path/to/geeklog/system/lib-custom.php. See lubab silitada lisatud PHP blockide funktsioonid ka Geeklogi uuendamisel.',
+    31 => 'Viga PHP blokis.  Funktsiooni %s pole olemas.',
+    32 => 'Viga: puuduvad vljad',
+    33 => 'Sa pead portaalbloki jaoks sisestama RSS faili URL-i.',
+    34 => 'Sa pead sisestama PHP bloki tiitli ja funktsiooni',
+    35 => 'Sa pead normaalbloki jaoks sisestama tiitli ja sisu',
+    36 => 'Sa pead kujundusblokkide jaoks sisestama bloki sisu',
+    37 => 'Sobimatu PHP bloki funktsiooni nimi',
+    38 => 'PHP blokkide jaoks meldud funktsioonid peavad algama \'phpblock_\' (n. phpblock_getweather).  \'phpblock_\' algus on kasutuses turvakaalutlustel, takistamaks kontrollimata koodi kivitamist',
+    39 => 'Klg',
+    40 => 'Vasak',
+    41 => 'Parem',
+    42 => 'Sa pead Geeklogi vaikeblokkide jaoks sisestama bloki tiitli ja jrjekorra.',
+    43 => 'Ainult avaleht',
+    44 => 'Ligips tkestatud',
+    45 => "Sa ritasid ligi pseda blokile, milleks polnud sul igust. See katse logiti. Palun <a href=\"{$_CONF['site_admin_url']}/block.php\">mine tagasi blokkide administreerimislehele. </a>",
+    46 => 'Uus blokk',
+    47 => 'Admin avaleht',
+    48 => 'Bloki nimi',
+    49 => ' (ilma thikuteta ja erinev teistest)',
+    50 => 'Abifaili URL',
+    51 => 'koos http://',
+    52 => 'Kui sa jtad selle vlja thjaks, siis selle bloki jaoks ei nidata abiikooni.',
+    53 => 'kasutuses',
+    54 => 'salvesta',
+    55 => 'thista',
+    56 => 'kustuta',
+    57 => 'vii allapoole',
+    58 => 'Vii lespoole',
+    59 => 'Vii blokk paremale',
+    60 => 'Vii blokk vasakule',
+    61 => 'Pole tiitlit',
+    62 => 'Artikli limiit',
+    63 => 'Sobimatu bloki tiitel',
+    64 => 'Tiitel peab olema ja ei tohi sisaldada HTML-i!',
+    65 => 'Jrjekord',
+    66 => 'Autosildid',
+    67 => 'Autosiltide lubamiseks tee mrge',
+);
+
+###############################################################################
+# admin/story.php
+
+$LANG24 = array(
+    1 => 'Eelmised lood',
+    2 => 'Jrgmised lood',
+    3 => 'laad',
+    4 => 'Postituse viis',
+    5 => 'Lugude toimetaja',
+    6 => 'Ssteemis pole lugusid',
+    7 => 'Autor',
+    8 => 'Salvesta',
+    9 => 'eelvaade',
+    10 => 'thista',
+    11 => 'kustuta',
+    12 => 'ID',
+    13 => 'Tiitel',
+    14 => 'Rubriik',
+    15 => 'Pev',
+    16 => 'Tutvustustekst',
+    17 => 'Sisutekst',
+    18 => 'Klikke',
+    19 => 'Kommentaare',
+    20 => '',
+    21 => '',
+    22 => 'Lugude nimekiri',
+    23 => 'Loo toimetamiseks vi kustutamiseks klpsa allpool loo numbril. Loo vaatamiseks klpsa selle tiitlil. Uue loo tegemiseks klpsa Tee uus lal.',
+    24 => 'Loo jaoks valitud ID on juba kasutuses. Palun vali loo jaoks teine ID.',
+    25 => '',
+    26 => 'Loo eelvaade',
+    27 => '',
+    28 => '',
+    29 => '',
+    30 => 'Faili leslaadimise vead',
+    31 => 'Palun tida loo tiitli ja tutvustusteksti vljad',
+    32 => 'Pealugu',
+    33 => 'Korraga saab olla vaid ks pealugu',
+    34 => 'Mustand',
+    35 => 'Ja',
+    36 => 'Ei',
+    37 => 'Rohkem postitajalt',
+    38 => 'Rohkem rubriigis',
+    39 => 'E-kirju',
+    40 => 'Ligips tkestatud',
+    41 => "Sa proovisid ligi pseda loole, millele pole sul igust. See katse on logitud. Sa vid vaadata seda artiklit allpool ainult loetaval kujul. Palun <a href=\"{$_CONF['site_admin_url']}/story.php\">mine prast lugemist tagasi lugude administreerimislehele. </a>",
+    42 => "Sa proovisid ligi pseda loole, millele pole sul igust. See katse on logitud. Palun <a href=\"{$_CONF['site_admin_url']}/story.php\">mine tagasi lugude administreerimislehele. </a>",
+    43 => 'Uus lugu',
+    44 => 'Admin avaleht',
+    45 => 'Ligips',
+    46 => '<b>MRKUS:</b> Kui sa mrad selle kuupeva tulevikku, siis seda artiklit ei avaldata enne seda peva. See thendab ka seda, et seda artiklit ei lisata varem sinu RSS voogu ja seda ignoreeritakse otsingu ja statistika lehtede poolt.',
+    47 => 'Pildid',
+    48 => 'pilt',
+    49 => 'parem',
+    50 => 'vasak',
+    51 => 'Loosse lisatud piltide lehel nhtavaks tegemiseks pead sa teksti kirjutama spetsiaalsed thistused. Need thistused on kujul: [imageX], [imageX_right] vi [imageX_left], kus the X asemele tuleb panna lisatava pildi jrjenumber. Mrkus: sa pead iga lisatud pildi jaoks kirjutama vastava thistuse. Kui sa ei mra laetud piltidele asukohta, ei saa sa lugu salvestada. <p><b>Eelvaade</b>: Piltidega loo puhul on Eelvaate nupul klpsamise asemel parem lugu salvestada mustandina. Kasuta eelvaate nuppu vaid siis, kui loos pole pilte.',
+    52 => 'Kustuta',
+    53 => 'pole kasutuses. Sa pead enne muudatuste salvestamist lisama selle pildi kas tutvustusteksti vi sisu teksti.',
+    54 => 'Lisatud pildid pole kasutuses',
+    55 => 'Loo salvestamisel tekkisid jrgmised vead. Palun paranda need enne loo salvestamist',
+    56 => 'Nita rubriigi ikooni',
+    57 => 'Vaata originaalsuuruses pilti',
+    58 => 'Lugude haldamine',
+    59 => 'Valik',
+    60 => 'Kasutuses',
+    61 => 'Autoarhiiv',
+    62 => 'Autokustuta',
+    63 => '',
+    64 => '',
+    65 => '',
+    66 => '',
+    67 => 'Laienda sisu toimetamise ala suurust',
+    68 => 'Vhenda sisu toimetamise ala suurust',
+    69 => 'Publish Story Date', // tlkimata
+    70 => 'Triistariba valik',
+    71 => 'Lihtne triistariba',
+    72 => 'Harilik triistariba',
+    73 => 'Suur triistariba',
+    74 => 'Suur II triistariba',
+    75 => 'Tis philugu',
+    76 => 'Avaldamise valikud',
+    77 => 'Keerukama toimetaja jaoks peab lubatud olema JavaScript. Valiku saab vlja llitada saidi pea config.php failis.',
+    78 => '<a href="%s/story.php?mode=edit&sid=%s&editopt=default">vaiketoimetaja kasutamiseks klpsa siia</a>',
+    79 => 'Eelvaade',
+    80 => 'Toimetaja',
+    81 => 'Avaldamise valikud',
+    82 => 'Pildid',
+    83 => 'Arhiveerimisvalikud',
+    84 => 'igused', // permissions
+    85 => 'Nita kik',
+    86 => 'Keerukam toimetaja',
+    87 => 'Lugude statistika'
+);
+
+
+###############################################################################
+# admin/topic.php
+
+$LANG27 = array(
+    1 => 'Rubriikide toimetaja',
+    2 => 'Rubriigi ID',
+    3 => 'Rubriigi nimi',
+    4 => 'Rubriigi pilt',
+    5 => '(ra kasuta thikuid)',
+    6 => 'Kustutades rubriigi, kustutatakse ka kik sellega seotud lood ja blokid.',
+    7 => 'Palun tida rubriigi ID ja kirjelduse vljad',
+    8 => 'Rubriikide haldaja',
+    9 => 'Rubriigi toimetamiseks vi kustutamiseks klpsa selle nimel. Uue rubriigi lisamiseks klpsa Tee uus lal. Sa ned iga rubriigi krval sulgudes antud rubriigi jaoks oma ligipsuiguseid. Trn (*) mrgib vaikimisi valitud rubriiki.',
+    10 => 'Sorteerimise jrjekord',
+    11 => 'Lugusid lehel',
+    12 => 'Ligips tkestatud',
+    13 => "Sa proovisid pseda ligi rubriigile, milleks polnud sul igust. See ligipsukatse on logitud. Palun <a href=\"{$_CONF['site_admin_url']}/topic.php\">mine tagasi rubriikide administreerimislehele. </a>",
+    14 => 'Sorteerimismeetod',
+    15 => 'thestikuline',
+    16 => 'vaikimisi',
+    17 => 'Uus rubriik',
+    18 => 'Admin avaleht',
+    19 => 'salvesta',
+    20 => 'thista',
+    21 => 'kustuta',
+    22 => 'Vaikimisi',
+    23 => 'Mra see uute lugude jaoks vaikerubriigiks',
+    24 => '(*)',
+    25 => 'Arhiivi rubriik',
+    26 => 'mra see rubriik arhiveeritud lugude  jaoks vaikerubriigiks. Ainult ks rubriik on lubatud.',
+    27 => 'vi lae rubriigi ikoon',
+    28 => 'Maksimum',
+    29 => 'Vead faili leslaadimisel'
+);
+
+###############################################################################
+# admin/user.php
+
+$LANG28 = array(
+    1 => 'Kasutajate toimetaja',
+    2 => 'Kasutaja ID',
+    3 => 'kasutaja nimi',
+    4 => 'Tisnimi',
+    5 => 'Salasna',
+    6 => 'Turvatase',
+    7 => 'E-postiaadress',
+    8 => 'Koduleht',
+    9 => '(ra kasuta thikuid)',
+    10 => 'Palun tida kasutajanime ja E-postiaadressi vljad',
+    11 => 'Kasutajate haldur',
+    12 => 'Kasutaja andmete toimetamiseks vi konto kustutamiseks klpsa allpool soovitud kasutajal. Uue kasutajakonto loomiseks klpsa lal Tee uus. Vid teha kasutajate lihtotsingut sisestades otsingukasti osa nende kasutajanimest, E-postiaadressist vi tisnimest (niteks: mart* vi *.com).',
+    13 => 'Turva..',
+    14 => 'Reg. aeg',
+    15 => 'Uus kasutaja',
+    16 => 'Admin avaleht',
+    17 => 'muuda',
+    18 => 'thista',
+    19 => 'kustuta',
+    20 => 'salvesta',
+    21 => 'See kasutajanimi on juba olemas',
+    22 => 'Viga',
+    23 => 'Masslisamine',
+    24 => 'Mass kasutajate importimine',
+    25 => 'Sa vid Geeklogi importida korraga mitu kasutajat. Imporditavas tekstifailis peab vljade eraldajaks olema tabulaator ja selles peavad vljad olema jrgmises jrjekorras: tisnimi, kasutajanimi, E-postiaadress. Igale imporditud kasutajale saadetakse E-postiga salasnageneraatoriga genereeritud juhuslik salasna. hel real tohib olla vaid tpselt ks kasutaja. Selle reegli rikkumine toob kaasa probleeme, mille krvaldamine nuab lehe ksitsi hlestamist, nii et kontrolli hoolikalt ja mitu korda imporditava faili sissekandeid!',
+    26 => 'Otsi',
+     27 => 'Piira tulemused',
+    28 => 'Pildi kustutamiseks mrgi see',
+    29 => 'tee',
+    30 => 'Import',
+    31 => 'Uued kasutajad',
+    32 => 'Ttlus lpetatud. Imporditi %d ja oli %d trget',
+    33 => 'sisesta',
+    34 => 'Viga: pead mrama laetava faili.',
+    35 => 'Viimati logitud',
+    36 => '(pole)',
+    37 => 'UID',
+    38 => 'Gruppide nimekiri',
+    39 => 'salasna (uuesti)',
+    40 => 'Registreerimise aeg',
+    41 => 'Viimane logimisaeg',
+    42 => 'Blokeeritud',
+    43 => 'Ootab aktiveerimist',
+    44 => 'Ootab autoriseerimist',
+    45 => 'Aktiivne',
+    46 => 'Kasutaja staatus',
+    47 => 'Toimeta',
+    48 => 'Nita administreerimisgruppe',
+    49 => 'Administreerimisgrupp',
+    50 => 'Mrgi, et seda gruppi filtreeritaks administreerimisgrupina',
+    51 => 'Online pevad',
+    52 => '<br>Mrkus: Online pevad on pevade arv  registreerimisest viimase sisselogimiseni.',
+    53 => 'registreeritud',
+    54 => 'Masskustutamine',
+    55 => "See ttab vaid siis kui sul on config.php failis <code>\$_CONF['lastlogin'] = true;</code>",
+    56 => 'Palun vali kasutajate rhm, mida soovid kustutada ja klpsa seejrel "Uuenda loetelu". Avanenud lehel  eemalda mrge nende kasutajate eest, keda sa ei soovi kustutada ning vajuta "Kustuta". Pane thele, et kui kasutajate loetelu on jaotatud mitmele lehele, kustutad sa ainult neid kasutajaid, mis on nhtavad antud lehel.',
+    57 => 'Fantoomkasutajad',
+    58 => 'Lhiaegsed kasutajad',
+    59 => 'Vanad kasutajad',
+    60 => 'Kasutajad, kes on registreerunud rohkem kui',
+    61 => ' kuud tagasi kuid pole kunagi sisse loginud.',
+    62 => 'Kasutajad, kes on registreerunud rohkem kui ',
+    63 => ' kuud tagasi, seejrel loginud sisse 24 tunni jooksul kuid pole prast seda enam kordagi sinu lehele naasnud.',
+    64 => 'Tavalised kasutajad, kes lihtsalt pole sinu lehele tulnud juba ',
+    65 => ' kuud.',
+    66 => 'Uuenda loetelu',
+    67 => 'Kuud registreerimisest',
+    68 => 'Online tunde',
+    69 => 'Offline kuud',
+    70 => 'Ei kustutatud',
+    71 => 'Edukalt kustutatud',
+    72 => 'Kustutamiseks pole htegi kasutajat valitud',
+    73 => 'Kas sa oled kindel, et soovid lplikult kustutada kik valitud kasutajad?',
+    74 => 'Viimased registreerijad',
+    75 => 'Kasutajad, kes on viimati registreerunud ',
+    76 => ' kuud'
+);
+
+###############################################################################
+# admin/moderation.php
+
+$LANG29 = array(
+    1 => 'Kinnita',
+    2 => 'Kustuta',
+    3 => 'Toimeta',
+    4 => 'Profiil',
+    10 => 'Tiitel',
+    11 => 'Alguspev',
+    12 => 'URL',
+    13 => 'Kategooria',
+    14 => 'Pev',
+    15 => 'Rubriik',
+    16 => 'Kasutajanimi',
+    17 => 'Tisnimi',
+    18 => 'E-post',
+    34 => 'Kontrolli ja otsusta',
+    35 => 'Sisestatud lood',
+    36 => 'Sisestatud lingid',
+    37 => 'Sisestatud sndmused',
+    38 => 'Sisesta',
+    39 => 'Hetkel pole levaatamist (modereerimist) vajavaid sisestusi.',
+    40 => 'Kasutajate sisestused'
+);
+
+###############################################################################
+# admin/mail.php
+
+$LANG31 = array(
+    1 => "{$_CONF['site_name']} E-posti triist",
+    2 => 'Kellelt',
+    3 => 'Vasta',
+    4 => 'Teema',
+    5 => 'Sisu',
+    6 => 'Saada :',
+    7 => 'Kik kasutajad',
+    8 => 'Administraator',
+    9 => 'Valikud',
+    10 => 'HTML',
+    11 => 'Oluline teade!',
+    12 => 'Saada',
+    13 => 'Puhasta',
+    14 => 'Ignoreeri kasutaja seadistusi',
+    15 => 'Viga saatmisel: ',
+    16 => 'Edukalt saadetud: ',
+    17 => "<a href={$_CONF['site_admin_url']}/mail.php>Saada jrgmine kiri</a>",
+    18 => 'Kellele',
+    19 => 'Kui soovid saata kirja kigile registreeritud kasutajatele, vali valikukastist Logged-in kasutajagrupp.',
+    20 => "Edukalt saadetud <successcount> snumit ja ebannestus saata <failcount> snumit.  Kui sa vajad iga snumi kohta detailset infot, siis leiad selle info allpool. Kuid sa vid <a href=\"{$_CONF['site_admin_url']}/mail.php\">saata jrgmise snumi</a> vi vid <a href=\"{$_CONF['site_admin_url']}/moderation.php\">mine tagasi administreerimislehele. </a>",
+    21 => 'Trked',
+    22 => 'Edukalt',
+    23 => 'Polnud trkeid',
+    24 => 'Polnud nnestunuid',
+    25 => '-- Vali grupp --',
+    26 => 'Palun tida kik vljad ja vali valikukastist kasutajate grupp.'
+);
+
+###############################################################################
+# admin/plugins.php
+
+$LANG32 = array(
+    1 => 'Pluginate installeerimine vib kahjustada sinu Geeklogi installatsiooni ja lisaks kahjustada ka sinu ssteemi. On oluline, et sa installeeriksid vaid <a href="http://www.geeklog.net">Geeklogi kodulehelt</a> laetud pluginaid, sest me kontrollime hoolikalt meie lehele laetud pluginaid erinevates operatsioonissteemides. On oluline mista, et plugina installeerimine nuab mitmete ssteemikskude kasutamist, mis vib kaasa tuua turvalisusprobleeme, eriti siis, kui sa kasutad kolmandatelt lehtedelt laetud pluginaid. Sellest hoiatusest hoolimata ei taga me plugina installeerimise edukust ega vastuta selle installeerimise tagajrjena phjustatud kahju eest. Teiste snadega - installeeri oma vastutusel. Lisaks on iga plugina paketi juures juhend, kuidas installeerida plugin ksitsi.',
+    2 => 'Plug-in Installation Disclaimer', // tlkida
+    3 => 'Plugina installeerimisvorm',
+    4 => 'Plugina fail',
+    5 => 'Pluginate loetelu',
+    6 => 'Hoiatus, plugin on juba installeeritud!',
+    7 => 'Plugin, mida sa soovid installeerida, on juba installeeritud. Palun kustuta see plugin enne taasinstalleerimist.',
+    8 => 'Plugina sobivuse kontroll  ebannestus',
+    9 => 'See plugin vajab uuemat Geeklogi versiooni. Kas uuenda <a href="http://www.geeklog.net">Geeklog</a> vi hangi plugina sobiv versioon.',
+    10 => '<br><b>Hetkel pole installeeritud htegi pluginat.</b><br><br>',
+    11 => 'Plugina muutmiseks vi kustutamiseks klpsa allpool selle nimel. Sulle nidatakse plugina kohta tpsemat infot koos autori veebilehe aadressiga. Nidatakse nii installeeritud versiooni numbrit kui ka plugina koodist saadud plugina versioon. Selle phjal saad otsustada, kas plugin vajab uuendamist vi mitte. Plugina installeerimise vi uuendamise kohta loe tpsemalt plugina dokumentatsioonist.',
+    12 => 'plugineditor () ei saanud plugina nime',
+    13 => 'Plugina toimetaja',
+    14 => 'Uus plugin',
+    15 => 'Admin avaleht',
+    16 => 'Plugina nimi',
+    17 => 'Plugina versioon',
+    18 => 'Geeklogi versioon',
+    19 => 'Kasutuses',
+    20 => 'Ja',
+    21 => 'Ei',
+    22 => 'Installeeri',
+    23 => 'Salvesta',
+    24 => 'Thista',
+    25 => 'Kustuta',
+    26 => 'Plugina nimi',
+    27 => 'Plugina koduleht',
+    28 => 'Installeeritud versioonid',
+    29 => 'Geeklogi versioon',
+    30 => 'Kustuta plugin?',
+    31 => 'Kas sa oled kindel, et soovid  kustutada  selle plugina?  Jtkates kustutad sa ka kik selle pluginaga seotud andmed ja andmestruktuurid. Kui sa oled kindel, siis klpsa uuesti allpool "kustuta" nuppu.',
+    32 => '<p><b>Viga: AutoLink silt on ebakorrektse formaadiga</b></p>',
+    33 => 'Koodi versioon',
+    34 => 'Uuenda',
+    35 => 'Toimeta',
+    36 => 'Kood',
+    37 => 'andmed', // data
+    38 => 'Uuenda!'
+);
+
+###############################################################################
+# admin/syndication.php
+
+$LANG33 = array(
+    1 => 'loo lim',
+    2 => 'salvesta',
+    3 => 'kustuta',
+    4 => 'thista',
+    10 => 'Sisu jagamine',
+    11 => 'Uus lim',
+    12 => 'Admin avaleht',
+    13 => 'Lime toimetamiseks vi kustutamiseks klpsa allpool selle nimel. Uue lime loomiseks klpsa Tee uus lalpool.',
+    14 => 'Tiitel',
+    15 => 'Tp',
+    16 => 'Faili nimi',
+    17 => 'Formaat',
+    18 => 'viimati uuendatud',
+    19 => 'Kasutuses',
+    20 => 'Ja',
+    21 => 'Ei',
+    22 => '<i>(pole limi)</i>',
+    23 => 'kik lood',
+    24 => 'Lime toimetaja',
+    25 => 'Lime tiitel',
+    26 => 'Limiit',
+    27 => 'Kannete pikkus',
+    28 => '(0 = pole  teksti, 1 = tistekst, muu = piira antud mrkide arvuni.)',
+    29 => 'Kirjeldus',
+    30 => 'Viimane uuendus',
+    31 => 'kooditabel',
+    32 => 'Keel',
+    33 => 'Sisu',
+    34 => 'Kanded',
+    35 => 'tundi',
+    36 => 'Vali lime tp',
+    37 => 'Sa oled installeerinud vhemalt he plugina, mis toetab sisu jaotamist. Allpool pead sa valima, kas lood Geeklogi lime vi mne plugina poolt toetatud lime.',
+    38 => 'Viga: puuduvad vljad',
+    39 => 'Palun tida lime tiitli, kirjelduse ja faili nime vljad.',
+    40 => 'Palun sisesta lugude  vi tundide arv.',
+    41 => 'Sisesta',
+    42 => 'Sndmused',
+    43 => 'Igas rubriigis.',
+    44 => 'Mitte heski.',
+    45 => 'Rubriigi lehepises on link?',
+    46 => 'Piira tulemused',
+    47 => 'Otsi',
+    48 => 'Toimeta',
+    49 => 'Lime logo',
+    50 => "Suhteline saidi urli suhtes ({$_CONF['site_url']})",
+    51 => 'Sinu valitud limefailinimi on juba teise lime poolt kasutuses. Palun vali teine nimi.',
+    52 => 'Viga: failinimi on juba kasutuses'
+);
+
+###############################################################################
+# confirmation and error messages
+
+$MESSAGE = array(
+    1 => "Sinu salasna saadeti sulle E-postiga ja peaks kohe kohale judma. Palun jrgi kirjas olevaid juhiseid ja me tname sind {$_CONF['site_name']} lehe kasutamise eest",
+    2 => "Tname sind {$_CONF['site_name']} lehele loo sisestamise eest. See saadeti meie meeskonnale kinnitamiseks. Prast meie lehe meeskonna poolset kinnitamist saavad kik seda meie lehel lugeda.",
+    3 => "Tname sind {$_CONF['site_name']} lehele lingi lisamise eest.  See saadeti meie meeskonnale kinnitamiseks. Kui see kinnitatakse, vid sa seda nha <a href={$_CONF['site_url']}/links.php>linkide</a> osas.",
+    4 => "Tname sind {$_CONF['site_name']} lehele sndmuse sisestamise eest.  See saadeti meie meeskonnale kinnitamiseks. Prast kinnitamist on see sndmus nha <a href={$_CONF['site_url']}/calendar.php>kalendri</a> osas.",
+    5 => 'Sinu konto info on edukalt salvestatud.',
+    6 => 'Sinu eelistused on edukalt salvestatud.',
+    7 => 'Sinu kommentaaride eelistused on edukalt salvestatud.',
+    8 => 'Sa oled edukalt vlja logitud.',
+    9 => 'Sinu lugu on edukalt salvestatud.',
+    10 => 'Lugu on edukalt kustutatud.',
+    11 => 'Sinu blokk on edukalt salvestatud.',
+    12 => 'Blokk on edukalt kustutatud.',
+    13 => 'Rubriik on edukalt salvestatud.',
+    14 => 'Rubriik ja kik sellega seotud lood ja blokid on edukalt kustutatud.',
+    15 => 'Sinu link on edukalt salvestatud.',
+    16 => 'Link on edukalt kustutatud.',
+    17 => 'Sndmus on edukalt salvestatud.',
+    18 => 'Sndmus on edukalt kustutatud.',
+    19 => 'Ksitlus on edukalt salvestatud.',
+    20 => 'Ksitlus on edukalt kustutatud.',
+    21 => 'Kasutaja on edukalt salvestatud.',
+    22 => 'Kasutaja on edukalt kustutatud.',
+    23 => 'Sinu kalendrisse sndmuse lisamisel tekkis viga. Ei olnud sndmuse ID-d.',
+    24 => 'Sndmus on sinu kalendrisse salvestatud.',
+    25 => 'Ei saa enne sinu sisselogimist isiklikku kalendrit avada',
+    26 => 'Sndmus on sinu isiklikust kalendrist edukalt eemaldatud',
+    27 => 'Snum on edukalt saadetud.',
+    28 => 'plugin on edukalt salvestatud',
+    29 => 'Sellel lehel pole kahjuks isiklikud kalendrid kasutuses.',
+    30 => 'Ligips tkestatud',
+    31 => 'Kahjuks pole sul ligipsu lugude haldamise lehele. Pane thele, et kik sellised lubamatud katsed logitakse',
+    32 => 'Kahjuks pole sul ligipsu rubriikide haldamise lehele. Pane thele, et kik sellised lubamatud katsed logitakse',
+    33 => 'Kahjuks pole sul ligipsu blokkide haldamise lehele. Pane thele, et kik sellised lubamatud katsed logitakse',
+    34 => 'Kahjuks pole sul ligipsu linkide haldamise lehele. Pane thele, et kik sellised lubamatud katsed logitakse',
+    35 => 'Kahjuks pole sul ligipsu sndmuste haldamise lehele. Pane thele, et kik sellised lubamatud katsed logitakse',
+    36 => 'Kahjuks pole sul ligipsu ksitluste haldamise lehele. Pane thele, et kik sellised lubamatud katsed logitakse',
+    37 => 'Kahjuks pole sul ligipsu kasutajate haldamise lehele. Pane thele, et kik sellised lubamatud katsed logitakse',
+    38 => 'Kahjuks pole sul ligipsu pluginate haldamise lehele. Pane thele, et kik sellised lubamatud katsed logitakse',
+    39 => 'Kahjuks pole sul ligipsu E-posti haldamise lehele. Pane thele, et kik sellised lubamatud katsed logitakse',
+    40 => 'Ssteemi teade',
+    41 => 'Kahjuks pole sul ligipsu snade asendamise lehele. Pane thele, et kik sellised lubamatud katsed logitakse',
+    42 => 'Sna on edukalt salvestatud',
+    43 => 'Sna on edukalt kustutatud.',
+    44 => 'Plugin on edukalt installeeritud!',
+    45 => 'Plugin on edukalt kustutatud.',
+    46 => 'Kahjuks pole sul ligipsu  andmebaasi bakupi triista juurde. Pane thele, et kik sellised lubamatud katsed logitakse',
+    47 => 'Selliseid vimalusi saab kasutada vaid *nix keskkonnas. Kui ssteem ttab *nix operatsioonissteemis, siis puhvermlu on edukalt thjendatud. Kui operatsioonissteemiks on Windows, pead sa otsima faile nimekujuga adodb_*.php ja need failid ksitsi kustutama.',
+    48 => "Tname sind oma liikmelisuse kinnitamise eest {$_CONF['site_name']} lehel. Meie meeskond vaatab sinu taotluse lbi. Kui see kinnitatakse, saadetakse sinu poolt antud E-postiaadressile E-kirjaga sinu salasna.",
+    49 => 'Grupp on edukalt salvestatud.',
+    50 => 'Grupp on edukalt kustutatud.',
+    51 => 'See kasutajanimi on juba kasutuses. Palun vali mni teine.',
+    52 => 'Sisestatud E-postiaadress tundub olevat ebakorrektne.',
+    53 => 'Sinu uus salasna on aktsepteeritud. Palun logi uut salasna kasutades allpool oleva vormi kaudu sisse.',
+    54 => 'Sinu tellimus uue salasna saamiseks on aegunud. Palun proovi alloleva vormi abil uuesti.',
+    55 => 'Sulle saadeti E-kiri, mis peaks kohe sinu postkasti judma. Uue salasna mramiseks jrgi selles olevaid juhiseid.',
+    56 => 'Sisestatud E-postiaadress on juba kasutuses teises kasutajakontos.',
+    57 => 'Sinu kasutajakonto on edukalt kustutatud.',
+    58 => 'Lim on edukalt salvestatud.',
+    59 => 'Lim on edukalt kustutatud.',
+    60 => 'Plugin on edukalt uuendatud.',
+    61 => 'Plugin %s: Tundmatu teate jrjenumber',
+    62 => 'Trackback kommentaar on kustutatud.',
+    63 => 'Trackback kommentaari kustutamisel tekkis viga.',
+    64 => 'Sinu trackback kommentaar on edukalt saadetud.',
+    65 => 'Veebilogi kataloogi teenus on edukalt salvestatud.',
+    66 => 'See Veebilogi kataloogi teenus on kustutatud.',
+    67 => 'Uus salasna ei kattu kontrolliks sisestatud teise salasnaga!',
+    68 => 'Sa pead sisestama praeguse kehtiva salasna.',
+    69 => 'Sinu kasutajakonto on blokeeritud!',
+    70 => 'Sinu konto ootab administraatori kinnitust.',
+    71 => 'Sinu kasutajakonto loomise soov on nd kinnitatud ja ootab administraatoripoolset kinnitamist.',
+    72 => 'Plugina installeerimisel tekkis viga. Tpsemalt vaata error.log failist.',
+    73 => 'Plugina eemaldamisel tekkis viga. Tpsemalt vaata error.log failist.',
+    74 => 'Pingback on edukalt saadetud.',
+    75 => 'Trackbackid tuleb saata post meetodiga.',
+    76 => 'Kas sa testi soovid seda kustutada?',
+    77 => 'Hoiatus: <br>sa mrasid vaikekooditabeliks UTF-8, kuid sinu server ei toeta mitmebaidilist kooditabelit. Palun installeeri PHP jaoks mbstring funktsioonid vi vali mni teine kooditabel/keel.',
+    78 => 'Palun kontrolli, et E-postiaadress ja kontrolliks sisestatud E-postiaadress oleksid samad.',
+    79 => 'Leht, mida soovid avada, vajab tks funktsiooni, mida kahjuks sellel saidil enam kasutuses ei ole.',
+    80 => 'Selle lime teinud plugina t on hetkel vlja llitatud. Sa ei saa seda lime toimetada enne kui oled antud plugina uuesti tle llitanud.',
+    81 => 'Vimalik, et sa kirjutasid oma sisselogimisinfo valesti. Palun proovi alloleva vormi abil  uuesti sisse logida.',
+    82 => 'Sa oled letanud lubatud sisselogimiskatsete limiidi. Palun proovi hiljem uuesti.',
+    83 => 'Et muuta oma salasna, E-postiaadressi vi kui kaua sind peaks sait mletama, pead sa sisestama oma kehtiva salasna.',
+    84 => 'Oma konto kustutamiseks sisesta oma kehtiv salasna.'
+);
+
+###############################################################################
+
+$LANG_ACCESS = array(
+    'access' => 'Ligips',
+    'ownerroot' => 'omanik (root)',
+    'group' => 'Grupp',
+    'readonly' => 'Ainult loetav',
+    'accessrights' => 'Ligipsuigused',
+    'owner' => 'Omanik',
+    'grantgrouplabel' => 'Grant Above Group Edit Rights', // tlkida
+    'permmsg' => 'Mrkus: liikmed on kik lehele sisse loginud lehe kasutajad ja anonmsed on kik lehel olevad ja mitte sisse loginud lehe lugejad.',
+    'securitygroups' => 'Turvalisusgrupid',
+    'editrootmsg' => "Kuigi sa oled kasutajate administraator, ei saa sa muuta root kasutajate andmeid, kui sa ei ole ise root kasutaja. Sa vid toimetada kiki teisi kasutajaid, vlja arvatud root kasutajaid. Pane thele, et kik igustamata katsed muuta root kasutajate andmeid logitakse.  Palun mine tagasi <a href=\"{$_CONF['site_admin_url']}/user.php\">Kasutajate administreerimislehele. </a>",
+    'securitygroupsmsg' => 'Mrgi grupid, millesse soovid, et see kasutaja kuuluks.',
+    'groupeditor' => 'Grupi toimetaja',
+    'description' => 'Kirjeldus',
+    'name' => 'Nimi',
+    'rights' => 'igused',
+    'missingfields' => 'Puuduvad vljad',
+    'missingfieldsmsg' => 'Sa pead grupi jaoks sisestama grupi nime ja kirjelduse',
+    'groupmanager' => 'Grupi haldur',
+    'newgroupmsg' => 'Grupi toimetamiseks vi kustutamiseks klpsa selle nimel allpool. Uue grupi loomiseks klpsa Tee uus lal. Pane thele, et phigruppe (core group) ei saa kustutada, sest need on ssteemis kasutusel.',
+    'groupname' => 'Grupi nimi',
+    'coregroup' => 'Phigrupp',
+    'yes' => 'Ja',
+    'no' => 'Ei',
+    'corerightsdescr' => "See grupp on {$_CONF['site_name']} phigrupp (Core Group).  Seetttu selle grupi igusi ei saa muuta. Allpool on ainult loetaval kujul loetelu antud grupi igustest.",
+    'groupmsg' => 'Sellel lehel on turvalisusgrupid hierarhilised.  Lisades antud grupi mnda alloleva grupi koosseisu, annad sa antud grupile samad igused kui neilgi gruppidel. On eelistatavam kasutada allolevaid gruppe antud grupile iguste mramisel.  Kui vajad kohandatud igustega gruppi, siis saad sa selle lehe "igused" osas mrata mitmeid igusi. iguste mramiseks mrgi lihtsalt vastava grupi vi iguse juures olev mrkeruut.',
+    'coregroupmsg' => "See grupp on {$_CONF['site_name']} phigrupp (Core Group).  Seetttu ei saa selle grupi kuulumist teistesse gruppidesse muuta. Allpool on ainult loetaval kujul loetelu gruppidest, kuhu see grupp kuulub.",
+    'rightsdescr' => 'Grupile vib mrata igusi otse, mrates neid just antud grupile,  vi andes vastavad igused mnele neist gruppidest, kuhu antud grupp kuulub. Need igused, mis on ilma mrkeruuduta, on antud grupile juba mratud nende gruppide kaudu, kuhu see hetkel kuulub. Neid igusi, mille krval on mrkeruut, vib mrata otse antud grupile.',
+    'lock' => 'Lukk',
+    'members' => 'Liikmed',
+    'anonymous' => 'Anonmne',
+    'permissions' => 'Lubatud',
+    'permissionskey' => 'R =lugemis-, E = toimetamis-, toimetamisigus annab ka  lugemisiguse', // tlkida
+    'edit' => 'Toimeta',
+    'none' => 'Mitte midagi',
+    'accessdenied' => 'Ligips tkestatud',
+    'storydenialmsg' => "Sul ei ole igust seda lugu vaadata. Selle phjuseks vib olla, et sa ei ole {$_CONF['site_name']} lehel registreerunud kasutaja.  Palun <a href=\"users.php?mode=new\"> registreeru {$_CONF['site_name']} lehe kasutajaks </a>, et saada kiki registreerunud kasutaja igusi",
+    'nogroupsforcoregroup' => 'See grupp ei kuulu htegi teise gruppi',
+    'grouphasnorights' => 'Sellel grupil pole ligipsu helegi administreerimisfunktsioonile antud saidil',
+    'newgroup' => 'Uus grupp',
+    'adminhome' => 'Admin avaleht',
+    'save' => 'salvesta',
+    'cancel' => 'thista',
+    'delete' => 'kustuta',
+    'canteditroot' => 'Sa ritasid toimetada root gruppi, kuid sa pole ise root grupi liige. Selletttu tkestati sinu ligips antud grupile. Kui sa arvad, et tegu on veaga, siis palun kontakteeru lehe administraatoriga.',
+    'listusers' => 'Nita kasutajad',
+    'listthem' => 'loetelu',
+    'usersingroup' => 'Kasutajad grupis "%s"',
+    'usergroupadmin' => 'Kasutajagrupi administreerimine',
+    'add' => 'Lisa',
+    'remove' => 'Eemalda',
+    'availmembers' => 'Vimalikud liikmed',
+    'groupmembers' => 'Grupi liikmed',
+    'canteditgroup' => 'Grupi toimetamiseks pead sa ise olema selle grupi liige. Kui arvad, et tegu on veaga, siis palun kontakteeru lehe administraatoriga.',
+    'cantlistgroup' => 'Grupi liikmete ngemiseks pead sa ise olema selle grupi liige. Kui sa arvad, et tegu on veaga, palun kontakteeru lehe administraatoriga.',
+    'editgroupmsg' => 'Grupi liikmeskonna muutmiseks klpsa kasutaja nimel ja kasuta kas Lisa vi Eemalda nuppu. Kui kasutaja on grupi liige, on tema nimi ainult parempoolses loetelus. Kui oled lpetanud, klpsa grupi koosseisu uuendamiseks ja gruppide haldamise pealehele judmiseks <b>Salvesta</b> nuppu.',
+    'listgroupmsg' => 'Loetelu kigist grupi <b>%s</b> hetke liikmetest:',
+    'search' => 'Otsi',
+    'submit' => 'Sisesta',
+    'limitresults' => 'Piira tulemused',
+    'group_id' => 'Grupi ID',
+    'plugin_access_denied_msg' => 'Sa ritasid ligi pseda pluginate administreerimislehele, milleks polnud sul igust. Pane thele, et kik igustamata katsed sellele lehele ligi pseda logitakse.',
+    'groupexists' => 'Grupi nimi on juba olemas',
+    'groupexistsmsg' => 'Sama nimega grupp on juba olemas. Grupi nimed peavad olema ksteisest erinevad.',
+);
+
+###############################################################################
+# admin/database.php
+
+$LANG_DB_BACKUP = array(
+    'last_ten_backups' => 'Viimased 10 bakupit',
+    'do_backup' => 'Tee bakkup',
+    'backup_successful' => 'Andmebaasi bakkup oli edukas.',
+    'db_explanation' => 'Sinu Geeklogist uue bakupi tegemiseks klpsa allolevat nuppu',
+    'not_found' => "Ebakorrektne tee programmini vi mysqldump pole kivitatav.<br>Kontrolli config.php failis <strong>\$_DB_mysqldump_path</strong> definitsiooni.<br>Hetkel on muutuja vrtuseks: <var>{$_DB_mysqldump_path}</var>",
+    'zero_size' => 'Bakkup ebannestus, faili suurus on 0 baiti',
+    'path_not_found' => "{$_CONF['backup_path']} pole olemas vi pole kataloog.",
+    'no_access' => "Viga: bakkupkataloog, {$_CONF['backup_path']}, pole ligipsetav.",
+    'backup_file' => 'Backupfail',
+    'size' => 'suurus',
+    'bytes' => 'baiti',
+    'total_number' => 'Bakupite ldarv: %d'
+);
+
+###############################################################################erefo$
+
+$LANG_BUTTONS = array(
+    1 => 'Avaleht',
+    2 => 'Kontakt',
+    3 => 'Avalda',
+    4 => 'Lingid',
+    5 => 'Ksitlused',
+    6 => 'Kalender',
+    7 => 'Lehe statistika',
+    8 => 'Kohanda',
+    9 => 'Otsi',
+    10 => 'tpsem otsing',
+    11 => 'Artiklid'
+);
+
+###############################################################################
+# 404.php
+
+$LANG_404 = array(
+    1 => 'Viga/Error 404',
+    2 => 'Ma otsisin igalt poolt, kuid ei leidnud otsitud lehte: <b>%s</b>.',
+    3 => "<p>Mul on kahju, kuid soovitud  faili ei ole. Palun vaata kindlasti <a href=\"{$_CONF['site_url']}\">pealehele </a> vi <a href=\"{$_CONF['site_url']}/search.php\">otsimislehele,</a> et otsitavat leida.",
+);
+
+###############################################################################
+
+$LANG_LOGIN = array(
+    1 => 'Nutav sisselogimine',
+    2 => 'Selle lehe osa vaatamiseks pead kasutajana sisse logima.',
+    3 => 'Logi sisse',
+    4 => 'Uus kasutaja'
+);
+
+$LANG_PDF = array(
+    1 => 'PDF oskused on vlja llitatud',
+    2 => 'Etteantud faili ei teisendatud. Dokument laeti korrektselt, kuid seda ei suudetud tdelda. Jlgi hoolikalt, et laeksid vaid XHTML standardile vastavaid HTML dokumente. Pea meeles, et keeruka kujundusega HTML dokumente vidakse teisendada ebakorrektselt vi ldse mitte teisendada. Sinu faili ttluse tulemusena loodi 0 baidi suurusega fail ja see kustutati. Kui sa oled kindel, et sinu faili saab edukalt tdelda, siis lae see uuesti.',
+    3 => 'PDF-i genereerimisel tekkis tundmatu viga',
+    4 => 'No page data was given or you want to use the ad-hoc PDF generation tool below.  If you think you are getting this page in error then please contact the system administrator.  Otherwise, you may use the form below to generate PDF\'s in an ad-hoc fashion.',// tlkida
+    5 => 'Laen dokumenti.',
+    6 => 'Palun oota, kuni sinu dokumenti laetakse.',
+    7 => 'Sa vid oma dokumendi salvestamiseks teha alloleval lingil hiirega paremklpsu ning valida menst kas "Save target...", "Salvesta sihtmrk...", "Save Link location..." vms.',
+    8 => 'Konfiguratsioonis mratud tee HTMLDoc rakenduseni on kas vale vi seda rakendust ei saa kivitada. Palun prdu probleemi psimisel lehe administraatori poole.',
+    9 => 'PDF-i genereerija',
+    10 => 'This is the Ad-hoc PDF Generation tool. It will attempt to convert any URL you give into a PDF.  Please note that some web pages will not render properly with this feature.  This is a limitation of the HTMLDoc PDF generation tool and such errors should not be reported to the administrators of this site', // tlkida
+    11 => 'URL',
+    12 => 'Genereeri PDF!',
+    13 => 'Selle lehe hlestus ei luba kasutada PHP funktsiooni fopen(). Ssteemiadministraator peab selle funktsiooni lubamiseks muutma php.ini faili ning selles allow_url_fopen sisse llitama.',
+    14 => 'PDF faili, mida soovid vaadata kas pole olemas vi ritad sa seda vaadata ilma selleks piisavaid igusi omamata.',
+);
+
+###############################################################################
+# trackback
+
+$LANG_TRB = array (
+    'trackback'          => 'Trackback',
+    'from'               => 'kust',
+    'tracked_on'         => 'Kommenteeritud', // Tracked on
+    'read_more'          => '[loe lisaks]',
+    'intro_text'         => 'Siin on see, mida teised tlevad "%s" kohta:',
+    'no_comments'        => 'Selle sisestuse kohta pole trackbackkommentaare.',
+    'this_trackback_url' => 'Selle sisestuse trackback URL:',
+    'num_comments'       => '%d trackbackkommentaari',
+    'send_trackback'     => 'Saada Ping',
+    'preview'            => 'Eelvaade',
+    'editor_title'       => 'Saada trackbackkommentaar',
+    'trackback_url'      => 'Trackbacki URL',
+    'entry_url'          => 'Sisestuse URL',
+    'entry_title'        => 'Sisestuse tiitel',
+    'blog_name'          => 'Saidi nimi',
+    'excerpt'            => 'katkend',
+    'truncate_warning'   => 'Mrkus: vastuvttev leht vib sinu katkendit lhendada.',
+    'button_send'        => 'Saada',
+    'button_preview'     => 'Eelvaade',
+    'send_error'         => 'Viga',
+    'send_error_details' => 'Viga trackbackkommentaari saatmisel:',
+    'url_missing'        => 'Puudub sisestuse URL',
+    'url_required'       => 'Palun kirjuta sisestuse jaoks vhemalt URL.',
+    'target_missing'     => 'Pole Trackback URL-i',
+    'target_required'    => 'Palun kirjuta trackbacki URL',
+    'error_socket'       => 'Ei saanud avada vratit.',
+    'error_response'     => 'Serveri vastus oli arusaamatu.',
+    'error_unspecified'  => 'Mratlemata viga.',
+    'select_url'         => 'Vali trackbacki URL',
+    'not_found'          => 'Ei leidnud trackback URL-i',
+    'autodetect_failed'  => 'Geeklog ei suutnud tuvastada saadetava kommentaari jaoks trackback URL-i. Palun kirjuta see ksitsi allolevasse vormi.',
+    'trackback_explain'  => 'Vali allolevast loetelust link, kuhu soovid oma trackback kommentaari saata. Prast seda ritab Geeklog tuvastada trackback kommentaari jaoks ige URL-i. Kui sa tead iget URL-i, vid sa <a href="%s">sisestada selle ksitsi. </a>',
+    'no_links_trackback' => 'Ei leidnud linke. Sa ei saa selle sisestuse kohta saata trackback kommentaari.',
+    'pingback'           => 'Pingback',
+    'pingback_results'   => 'Pingback tulemused',
+    'send_pings'         => 'Saada Ping-id',
+    'send_pings_for'     => 'Saada Ping-id "%s"', // tlkida
+    'no_links_pingback'  => 'Ei leidnud linke. Selle sisestuse kohta ei saadetud  pingbacke.',
+    'pingback_success'   => 'Pingback on saadetud.',
+    'no_pingback_url'    => 'Ei leidnud pingback URL-i.',
+    'resend'             => 'Saada uuesti',
+    'ping_all_explain'   => 'Sa vid teavitada lehti, millele sinu leht viitab saates (<a href="http://en.wikipedia.org/wiki/Pingback"> Pingbacki</a>), teavitada lehe uuendamisest saates pingi veebi logikataloogidesse (weblog directory) vi saata <a href="http://en.wikipedia.org/wiki/Trackback"> Trackbackkommentaari,</a> viimast juhul, kui oled oma lehel kommenteerinud mnel teisel saidil olnud kellegi teise kirjutist.',
+    'pingback_button'    => 'Saada Pingback',
+    'pingback_short'     => 'Saada pingback kigile kesolevalt  lehelt lingitud lehtedele.',
+    'pingback_disabled'  => '(Pingback on vlja llitatud)',
+    'ping_button'        => 'Saada Ping',
+    'ping_short'         => 'Pingi veebi logikatalooge',
+    'ping_disabled'      => '(Ping on vlja llitatud)',
+    'trackback_button'   => 'Saada Trackback',
+    'trackback_short'    => 'Saada trackbackkommentaar.',
+    'trackback_disabled' => '(Trackback on vlja llitatud)',
+    'may_take_a_while'   => 'Pane thele, et pingi ja pingbacki saatmine vib vtta aega.',
+    'ping_results'       => 'Ping tulemused',
+    'unknown_method'     => 'Tundmatu ping meetod',
+    'ping_success'       => 'Ping on saadetud.',
+    'error_site_name'    => 'Palun kirjuta saidi nimi.',
+    'error_site_url'     => 'Palun sisesta lehe URL.',
+    'error_ping_url'     => 'Palun kirjuta toimiv ping URL.',
+    'no_services'        => 'Pole hlestatud veebi logikataloogide kasutamine (weblog directory services).',
+    'services_headline'  => 'Veebi logikataloogide teenused',
+    'service_explain'    => 'Veebi logikataloogi teenusepakkuja andmete toimetamiseks klpsa allpool vastavat nuppu logikataloogi nime krval. Uue logikataloogi lisamiseks klpsa Tee uus lal.',
+    'service'            => 'Teenus',
+    'ping_method'        => 'Ping meetod',
+    'service_website'    => 'Veebileht',
+    'service_ping_url'   => 'Pingi URL',
+    'ping_standard'      => 'Standard Ping',
+    'ping_extended'      => 'Laiendatud ping',
+    'ping_unknown'       => '(tundmatu meetod)',
+    'edit_service'       => 'Toimeta veebi logikataloogi andmeid',
+    'trackbacks'         => 'Trackbackid',
+    'editor_intro'       => 'Valmista oma trackbackkommentaar  <a href="%s">%s jaoks ette</a>.',
+    'editor_intro_none'  => 'Valmista trackback kommentaar ette.',
+    'trackback_note'     => 'Trackbakkommentaari saatmiseks mine lugude loetelusse ja klpsa loo juures "' . $LANG24[21] . '". Klpsa jrgmisel lingil, et <a href="%s"> saata lugudega sidumata trackbackkommentaari.</a>',
+    'pingback_explain'   => 'Kirjuta URL, kuhu pingback saata. Pingback viitab tagasi sinu saidi pealehele.',
+    'pingback_url'       => 'Pingbacki URL',
+    'site_url'           => 'Antud saidi URL',
+    'pingback_note'     => 'Pingbacki saatmiseks mine lugude loetelusse ja klpsa loo juures "' . $LANG24[21] . '". Klpsa jrgmisel lingil, et <a href="%s"> saata lugudega sidumata pingbacki.</a>',
+    'pbtarget_missing'   => 'Pole pingbacki URL-i',
+    'pbtarget_required'  => 'Palun kirjuta pingbacki URL',
+    'pb_error_details'   => 'Pingbacki saatmisel tekkis viga:',
+    'delete_trackback'   => 'Selle trackbacki kustutamiseks klpsa: ',
+);
+
+###############################################################################
+# directory.php
+
+$LANG_DIR = array (
+    'title'            => 'Artiklite kataloog',
+    'title_year'       => '%d artiklid',
+    'title_month_year' => '%s %d artiklid',
+    'nav_top'          => 'Tagasi peakataloogi',
+    'no_articles'      => 'Pole artikleid'
+);
+
+################################################################################
+# "What's New" Time Strings
+
+$LANG_WHATSNEW = array (
+    # This here determines the order of the sentence "No new stories in 2 hrs"
+    # order it so it makes sense in your language:
+    # %i    item, "Stories"
+    # %n    amount, "2", "20" etc
+    # %t    time, "2" (weeks)
+    # %s    scale, "hrs", "weeks"
+    'new_string'  => '%n uut %i viimase %t %s jooksul',
+    'new_last'    => ' viimase %t %s jooksul',
+    # other strings
+    'minutes'     => 'minuti',
+    'hours'       => 'tunni',
+    'days'        => 'peva',
+    'weeks'       => 'ndala',
+    'months'      => 'kuu',
+    'minute'      => 'minut',
+    'hour'        => 'tund',
+    'day'         => 'peva',
+    'week'        => 'ndala',
+    'month'       => 'kuu'
+);
+
+$LANG_MONTH = array(
+    1 => 'Jaanuar',
+    2 => 'Veebruar',
+    3 => 'Mrts',
+    4 => 'Aprill',
+    5 => 'Mai',
+    6 => 'Juuni',
+    7 => 'Juuli',
+    8 => 'August',
+    9 => 'September',
+    10 => 'Oktoober',
+    11 => 'November',
+    12 => 'Detsember'
+);
+
+$LANG_WEEK = array(
+    1 => 'Phapev',
+    2 => 'Esmaspev',
+    3 => 'Teisipev',
+    4 => 'Kolmapev',
+    5 => 'Neljapev',
+    6 => 'Reede',
+    7 => 'Laupev'
+);
+
+################################################################################
+# Admin - Strings
+#
+# These are some standard strings used by core functions as well as plugins to
+# display administration lists and edit pages
+
+$LANG_ADMIN = array (
+    'search'        => 'Otsi',
+    'limit_results' => 'Piira tulemused',
+    'submit'        => 'Valmis',
+    'edit'          => 'Toimeta',
+    'edit_adv'      => 'Toimeta lisa',
+    'admin_home'    => 'Admin avaleht',
+    'create_new'    => 'Tee uus',
+    'create_new_adv' => 'Tee uus (lisa)',
+    'enabled'       => 'Kasutuses',
+    'title'         => 'Tiitel',
+    'type'          => 'Tp',
+    'topic'         => 'Rubriik',
+    'help_url'      => 'Abifaili URL',
+    'save'          => 'Salvesta',
+    'cancel'        => 'Thista',
+    'delete'        => 'Kustuta',
+    'delete_sel'    => 'Kustuta valitud',
+    'copy'          => 'Koopia',
+    'no_results'    => '- Ei leidnud midagi -',
+    'data_error'    => 'Liitumiste andmetega tekkis viga. Palun kontrolli algandmeid.',
+    'preview'       => 'Eelvaade',
+    'records_found' => 'Leitud kirjed'
+);
+
+# Localisation of the texts for the various drop-down menus that are actually
+# stored in the database. If these exist, they override the texts from the
+# database.
+
+$LANG_commentcodes = array(
+    0   => 'On kommentaarid',
+    -1  => 'Pole kommentaare'
+);
+
+$LANG_commentmodes = array(
+    'flat'      => 'lihtne',
+    'nested'    => 'ksteise sees',
+    'threaded'  => 'Limedena',
+    'nocomment' => 'pole kommentaare'
+);
+
+$LANG_cookiecodes = array(
+    0       => 'ra mleta',
+    3600    => '1 tund',
+    7200    => '2 tundi',
+    10800   => '3 tundi',
+    28800   => '8 tundi',
+    86400   => '1 pev',
+    604800  => '1 ndal',
+    2678400 => '1 kuu'
+);
+
+$LANG_dateformats = array(
+    0   => 'Ssteemi seadistus'
+);
+
+$LANG_featurecodes = array(
+    0 => 'Pole pealugu',
+    1 => 'Pealugu'
+);
+
+$LANG_frontpagecodes = array(
+    0 => 'Ainult rubriigis',
+    1 => 'Avalehel ja rubriigis'
+);
+
+$LANG_postmodes = array(
+    'plaintext' => 'Puhas tekst',
+    'html'      => 'HTML kujundusega'
+);
+
+$LANG_sortcodes = array(
+    'ASC'  => 'Vanemad enne',
+    'DESC' => 'Uuemad enne'
+);
+
+$LANG_trackbackcodes = array(
+    0   => 'Trackback lubatud',
+    -1  => 'Trackback keelatud'
+);
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/estonian_utf-8.php 1.4.1.src/cpanel-glprivate/language/estonian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/estonian_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/language/estonian_utf-8.php	2006-12-31 03:39:16.000000000 -0600
@@ -0,0 +1,1516 @@
+<?php
+
+###############################################################################
+# estonian_utf-8.php
+# This is the estonian language page for GeekLog!
+#
+# Copyright (C) 2000 Jason Whittenburg
+# jwhitten@securitygeeks.com
+#
+# Estonian translation by Artur Räpp <rtr AT planet DOT ee>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+$LANG_CHARSET = 'utf-8';
+
+###############################################################################
+# Array Format:
+# $LANGXX[YY]:  $LANG - variable name
+#               XX    - file id number
+#               YY    - phrase id number
+###############################################################################
+
+###############################################################################
+# USER PHRASES - These are file phrases used in end user scripts
+###############################################################################
+
+###############################################################################
+# lib-common.php
+
+$LANG01 = array(
+    1 => 'Postitajaks:',
+    2 => 'loe lisaks',
+    3 => 'kommentaari',
+    4 => 'Toimeta',
+    5 => 'Hääleta',
+    6 => 'Tulemused',
+    7 => 'Hääletuse tulemused',
+    8 => 'hääletanut',
+    9 => 'Admini funktsioonid:',
+    10 => 'Sisestused',
+    11 => 'Lugu',
+    12 => 'Blokid',
+    13 => 'Rubriigid',
+    14 => 'Lingid',
+    15 => 'Sündmused',
+    16 => 'Küsitlused',
+    17 => 'Kasutajad',
+    18 => 'SQL päring',
+    19 => 'Logi välja',
+    20 => 'Kasutaja info',
+    21 => 'Kasutajanimi',
+    22 => 'Kasutaja ID',
+    23 => 'Turvatase',
+    24 => 'Anonüümne',
+    25 => 'Vasta',
+    26 => 'Järgnevate kommentaaride omanikuks on need, kes iganes need postitas. See leht ei vastuta nende poolt öeldu eest.',
+    27 => 'Värskeim postitus',
+    28 => 'Kustuta',
+    29 => 'Pole kommentaare.',
+    30 => 'Vanemad lood',
+    31 => 'Lubatud HTML sildid:',
+    32 => 'Viga, sobimatu kasutajanimi',
+    33 => 'Viga, ei saanud kirjutada logifaili',
+    34 => 'Viga',
+    35 => 'Logi välja',
+    36 => 'Aeg',
+    37 => 'Pole kasutaja lugusid',
+    38 => 'Sisu jagamine',
+    39 => 'Värskenda',
+    40 => 'Sul on <tt>php.ini</tt> failis <tt>register_globals = Off</tt>. Kuid Geeklogi jaoks peab olema <tt>register_globals</tt> = <strong>on</strong>. Enne jätkamist sea selle väärtuseks <strong>"on"</strong> ja taaskäivita veebiserver.',
+    41 => 'Külaliskasutajaid',
+    42 => 'Autoriks:',
+    43 => 'Vasta sellele',
+    44 => 'Tase kõrgemal',
+    45 => 'MySQL vea number',
+    46 => 'MySQL veateade',
+    47 => 'Lehe kasutajale',
+    48 => 'Konto info',
+    49 => 'eelistused',
+    50 => 'Viga SQL lauses',
+    51 => 'abi',
+    52 => 'Uus',
+    53 => 'Admin avaleht',
+    54 => 'Ei saanud avada faili.',
+    55 => 'Viga: koht',
+    56 => 'Hääleta',
+    57 => 'Salasõna',
+    58 => 'Logi sisse',
+    59 => "Pole veel kontot? Logi sisse <a href=\"{$_CONF['site_url']}/users.php?mode=new\">uue kasutajana</a>",
+    60 => 'Postita kommentaar',
+    61 => 'Loo uus kasutajakonto',
+    62 => 'sõna',
+    63 => 'Kommentaaride eelistused',
+    64 => 'Saada artikkel sõbrale E-postiga',
+    65 => 'Näita printversiooni',
+    66 => 'Minu kalender',
+    67 => 'Tere siia - ',
+    68 => 'Avaleht',
+    69 => 'Kontakt',
+    70 => 'Otsi',
+    71 => 'Lisa lehele lugu',
+    72 => 'Veebi kohad',
+    73 => 'Vanemad küsitlused',
+    74 => 'Kalender',
+    75 => 'Otsing', // täpsem otsing
+    76 => 'Lehe statistika',
+    77 => 'Pluginad',
+    78 => 'Tulevased sündmused',
+    79 => 'Mida uut',
+    80 => 'viimased lood',
+    81 => 'viimane lugu',
+    82 => 'tundi',
+    83 => 'KOMMENTAARE',
+    84 => 'LINKE',
+    85 => 'viimased 48 t',
+    86 => 'Pole uusi kommentaare',
+    87 => 'viimased 2 n',
+    88 => 'Pole uusi linke',
+    89 => 'Pole tulevasi sündmusi',
+    90 => 'Avaleht',
+    91 => 'Leht valmis',
+    92 => 'sekundiga',
+    93 => '(C)', // copyright
+    94 => 'Kõik sellel lehel olevad kaubamärgid ja autorikaitsega materjalid kuuluvad nende õigustatud omanikele.',
+    95 => 'Mootoriks on',
+    96 => 'Grupid',
+    97 => 'Sõnade loetelu',
+    98 => 'Pluginad',
+    99 => 'LOOD',
+    100 => 'Pole uusi lugusid',
+    101 => 'Sinu sündmused',
+    102 => 'Sündmused',
+    103 => 'DB Backupid',
+    104 => '',// by
+    105 => 'E-post kasutajatele',
+    106 => 'Vaatamisi',
+    107 => 'GL versiooni test',
+    108 => 'Tühjenda puhvermälu',
+    109 => 'Teata kuritahtlikkusest',
+    110 => 'Teata sellest postitusest lehe administraatorile',
+    111 => 'Vaata PDF versiooni',
+    112 => 'Registreeritud kasutajaid',
+    113 => 'Dokumentatsioon',
+    114 => 'TRACKBACKID',
+    115 => 'Pole uusi trackback kommentaare',
+    116 => 'Trackback',
+    117 => 'Lood ajalises järjekorras',
+    118 => 'Palun jätka lugemist järgmisel lehel:',
+    119 => "Kaotasid oma <a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">salasõna?</a>",
+    120 => 'Püsilink sellele kommentaarile',
+    121 => 'Kommentaare (%d)',
+    122 => 'Trackbacke (%d)',
+    123 => 'Kogu HTML on lubatud',
+    124 => 'Klõpsa kõigi märgitute kustutamiseks',
+    125 => 'Kas oled kindel, et soovid kõiki neid kustutada?',
+    126 => 'Märgi/eemalda märge kõigilt'
+);
+
+###############################################################################
+# comment.php
+
+$LANG03 = array(
+    1 => 'Postita kommentaar',
+    2 => 'Postituse viis',
+    3 => 'Logi välja',
+    4 => 'Loo konto',
+    5 => 'Kasutajanimi',
+    6 => 'Sellel lehel peate kommentaaride postitamiseks eelnevalt sisse logima. Kui sul ei ole veel kasutajakontot, võid alloleva vormi abiga endale konto luua.',
+    7 => 'Sinu viimane kommentaar oli ',
+    8 => " sekundit tagasi.  Sellel lehel  peab kommentaaride vahe olema vähemalt {$_CONF['commentspeedlimit']} sekundit",
+    9 => 'kommentaar',
+    10 => 'Saada raport',
+    11 => 'Saada kommentaar',
+    12 => 'Palun täida tiitli ja kommentaari väljad. Need on kommentaari postitamisel kohustuslikud.',
+    13 => 'Info sinu kohta',
+    14 => 'Eelvaade',
+    15 => 'Teata sellest postitusest',
+    16 => 'Tiitel',
+    17 => 'Viga',
+    18 => 'Oluline',
+    19 => 'Hoia sõnum vastavuses teemaga.',
+    20 => 'Proovi uue teema algatamise asemel pigem vastata teiste postitustele',
+    21 => 'Loe enne postitamist teiste poolt öeldut, vältides nii juba öeldu kordamist.',
+    22 => 'Kasuta sinu sõnumit selgelt kirjeldavat tiitlit.',
+    23 => 'Sinu E-postiaadressi ei tehta avalikuks.',
+    24 => 'Anonüümne kasutaja',
+    25 => 'Kas oled kindel, et soovid teatada sellest postitusest lehe administraatorile?',
+    26 => '%s teatas järgmisest kuritahtlikust postitusest:',
+    27 => 'Kuritahtlikkusest teatamine'
+);
+
+###############################################################################
+# usersettings.php
+
+$LANG04 = array(
+    1 => 'Kasutaja profiil, omanik',
+    2 => 'Kasutajanimi',
+    3 => 'Täisnimi',
+    4 => 'Salasõna',
+    5 => 'E-postiaadress',
+    6 => 'Koduleht',
+    7 => 'Bio',
+    8 => 'PGP võti',
+    9 => 'Salvesta info',
+    10 => 'Viimased 10 kommentaari, kommenteerijaks',
+    11 => 'Pole kasutaja kommentaare',
+    12 => 'Kasutaja eelistused, kasutaja -',
+    13 => 'Saada öösiti kokkuvõtted',
+    14 => 'See salasõna on genereeritud juhusliku sümbolite kombinatsioonina. On soovitav, et sa vahetad koheselt salasõna. Salasõna muutmiseks logi oma kasutajanime ja salasõna abil sisse ja ava "Lehe kasutajale" alt "Konto info".',
+    15 => "Sinu {$_CONF['site_name']} konto on edukalt loodud. Selle kasutamiseks pead sa allpool oleva info abil sisse logima. Palun salvesta see kiri edaspidiseks kasutamiseks.",
+    16 => 'Sinu kasutajakonto info',
+    17 => 'Kontot ei ole',
+    18 => 'Sisestatud E-postiaadress tundub olevat ebakorrektne E-postiaadress',
+    19 => 'Kasutajanimi või E-postiaadress on juba olemas',
+    20 => 'Sisestatud E-postiaadress tundub olevat ebakorrektne E-postiaadress',
+    21 => 'Viga',
+    22 => "Registreeri {$_CONF['site_name']} lehel!",
+    23 => "Kasutajakonto loomine annab sulle kõik {$_CONF['site_name']} lehe poolt kasutajale pakutavad võimalused. Sa võid postitada oma nimega  kommentaare ja uusi lugusid. Kui sul ei ole kontot, ei saa sa neid postitada. Sinu E-postiaadressi <i><b>ei näidata kunagi</b></i> sellel lehel avalikult.",
+    24 => 'Sinu salasõna saadetakse siin sisestatud E-postiaadressil.',
+    25 => 'Kas unustasid oma salasõna?',
+    26 => 'Sisesta <em>kas</em> oma kasutajanimi <em> või </em> registreerimisel antud E-postiaadress ning klõpsa Saada salasõna. Antud E-postiaadressile saadetakse juhendid, kuidas määrata uus salasõna.',
+    27 => 'Registreeri nüüd!',
+    28 => 'Saada salasõna',
+    29 => 'välja logitud',
+    30 => 'logitud sisse lehelt',
+    31 => 'Sinu valitud käsk vajab, et oleksid sisse logitud',
+    32 => 'Allkiri',
+    33 => 'Ei näidata kunagi avalikel lehtedel',
+    34 => 'See on sinu tegelik nimi',
+    35 => 'Sisesta uus salasõna',
+    36 => 'Koos http://',
+    37 => 'Rakendatakse sinu kommentaaridele',
+    38 => 'See on kõik sinu kohta! Kõik saavad seda lugeda',
+    39 => 'Sinu avalik/public PGP võti levitamiseks',
+    40 => 'Pole rubriikide ikoone',
+    41 => 'Soovid modereerida',
+    42 => 'Kuupäeva formaat',
+    43 => 'Lugude maksimum',
+    44 => 'pole kaste',
+    45 => 'Näita eelistusi - kasutaja',
+    46 => 'Väljaarvatud asjad - kasutaja',
+    47 => 'Uudistekasti häälestus - kasutaja',
+    48 => 'Rubriigid',
+    49 => 'Lugudes pole ikoone',
+    50 => 'Eemalda märge, kui pole huvitatud',
+    51 => 'Ainult uudislood',
+    52 => 'Vaikimisi on',
+    53 => 'Saada igal öösel päeval postitatud lood .',
+    54 => 'Märgi (rubriigid/autorid), mida sa ei soovi näha',
+    55 => 'Kui sa jätad kõik märkimata, siis rakendatakse süsteemi vaikimisi häälestust. Kui aga alustad märkimist, siis märgi kindlasti kõik soovitud, sest süsteemi vaikeseadistust sinule ei rakendata. Süsteemi vaikevalikud on rasvases kirjas.',
+    56 => 'Autorid',
+    57 => 'Näitamise viis',
+    58 => 'Sorteerimisjärjekord',
+    59 => 'Kommentaaride limiit',
+    60 => 'Kuidas soovid, et kommentaare näitan?',
+    61 => 'Uuemad või vanemad enne',
+    62 => 'Vaikimisi on 100',
+    63 => "Sinu salasõna saadeti sulle E-postiga ja peaks kohe kohale jõudma. Palun järgi sõnumis olevaid juhendeid. Me täname sind {$_CONF['site_name']} kasutamise eest.",
+    64 => 'Kommentaaride eelistused - kasutaja',
+    65 => 'Proovi uuesti sisse logida',
+    66 => "Võib-olla kirjutasid kasutajatunnuse või salasõna valesti. Palun proovi alloleva vormi abil uuesti. Või oled <a href=\"{$_CONF['site_url']}/users.php?mode=new\">uus kasutaja?</a>",
+    67 => 'Liige alates',
+    68 => 'Mäleta mind',
+    69 => 'Kui kaua peale sisselogimist peaksin sind mäletama?',
+    70 => "Kohanda {$_CONF['site_name']} sisu ja välimust",
+    71 => "{$_CONF['site_name']} lehe üks headest omadustest on see, et sa võid määrata, millist sisu sulle näidatakse ja sa saad muuta lehe üldist välimust. Selle kasutamiseks pead sa kõigepealt <a href=\"{$_CONF['site_url']}/users.php?mode=new\">registreeruma</a> {$_CONF['site_name']} lehel.   Kui sa oled juba registreerinud, siis logi palun sisse.",
+    72 => 'Teema',
+    73 => 'Keel',
+    74 => 'Saidi välimus',
+    75 => 'Rubriigid E-postiga kasutajale',
+    76 => 'Kui valid allpool olevast loetelust rubriigi, saadetakse päeva lõpus sulle kõik antud teemas postitatud lood. Vali ainult sind huvitavad teemad!',
+    77 => 'Foto',
+    78 => 'Lisa pilt endast!',
+    79 => 'tee märge selle pilti kustutamiseks', //'Check here to delete this picture',
+    80 => 'Logi sisse',
+    81 => 'Saada E-kiri',
+    82 => 'Viimased 10 lugu, postitajaks',
+    83 => 'Postituste statistika, autor',
+    84 => 'Artiklite koguarv:',
+    85 => 'Kommentaaride koguarv:',
+    86 => 'Leia kõik postitused - autoriks',
+    87 => 'Sinu kasutajanimi',
+    88 => "Keegi, võimalik, et sa ise, tellis {$_CONF['site_name']} lehel aadressiga {$_CONF['site_url']}\n\n asuva kasutajakonto \"%s\" jaoks uue salasõna. Kui sa soovid seda tõesti teha, siis kliki alloleval lingil või ava see leht oma veebilehitsejas:\n\n",
+    89 => "Kui sa ei soovi salasõna vahetada, siis ignoreeri seda E-kirja ning salasõna vahetuse tellimus tühistatakse (sinu salasõna jääb muutmata)\n\n",
+    90 => 'Sa võid allpool sisestada oma konto jaoks uue salasõna. Pane tähele, et vana salasõna on kehtiv kuni oled selle vormi täitnud ja uus salasõna on serveri poolt kinnitatud.',
+    91 => 'Kinnita uus salasõna',
+    92 => 'Sisesta uus salasõna',
+    93 => 'Sinu viimane uue salasõna tellimine toimus %d sekundit tagasi. Sellel lehel peab aga salasõna tellimiste vahe olema vähemalt %d sekundit.',
+    94 => 'Kustuta konto "%s"',
+    95 => 'Oma kasutajakonto kustutamiseks klõpsa allpool nupul Kustuta konto. Pane tähele, et koos sellega ei kustutata selle kasutajakonto alt postitatud kommentaare ega jutte. Neid näidatakse edaspidi kui anonüümse kasutaja poolt postitatuid.',
+    96 => 'kustuta konto',
+    97 => 'Kinnita kasutajakonto kustutamine',
+    98 => 'Kas oled kindel, et soovid oma kasutajakonto kustutada? Pärast kustutamist ei saa sa enam sellel lehel kasutajana sisse logida (kuni sa pole uut kasutajakontot loonud). Kui oled kindel, klõpsa uuesti allpool olevat nuppu "Kustuta konto"',
+    99 => 'Privaatsusvalikud - kasutaja',
+    100 => 'E-kiri administraatorilt',
+    101 => 'Luba lehe administraatoritelt E-kirju',
+    102 => 'E-kirjad kasutajatelt',
+    103 => 'Luba teistelt kasutajatelt E-kirju',
+    104 => 'Näita online staatust',
+    105 => 'Näita "Kes on online" blokis',
+    106 => 'Asukoht',
+    107 => 'Näidatakse sinu avalikus profiilis',
+    108 => 'Kontrolliks uus salasõna uuesti',
+    109 => 'Kirjuta siia uuesti oma uus salasõna',
+    110 => 'Praegune salasõna',
+    111 => 'Palun sisesta oma praegune salasõna',
+    112 => 'Liiga mitu järjestikust ebaõnnestunud sisselogimist. Palun proovi hiljem uuesti.',
+    113 => 'Ebaõnnestunud sisselogimine',
+    114 => 'Kontole on ligipääs tõkestatud',
+    115 => 'Ligipääs sinu kasutajakontole on tõkestatud. Palun kontakteeru administraatoriga.',
+    116 => 'Konto ootab aktiveerimist',
+    117 => 'Sinu konto ootab hetkel administraatoripoolt aktiveerimist. Sa ei saa enne konto aktiveerimist sisse logida.',
+    118 => "Sinu {$_CONF['site_name']} lehe konto on nüüd administraatori poolt aktiveeritud. Sa saad nüüd alloleval aadressil oma kasutajanime <username>) ja eelnevalt saadetud salasõnaga sisse logida.",
+    119 => "Kui sa unustasid oma salasõna võid tellida uue salasõna URL-ilt",
+    120 => 'Konto on aktiveeritud',
+    121 => 'Teenus',
+    122 => 'Kahjuks uute kasutajate registreerimine on suletud',
+    123 => "Kas sa oled <a href=\"{$_CONF['site_url']}/users.php?mode=new\">uus kasutaja?</a>",
+    124 => 'Kinnita E-postiaadress',
+    125 => 'Sa pead sisestama sama E-postiaadressi mõlemale väljale!',
+    126 => 'Palun korda vigade vältimiseks',
+    127 => 'Neist seadistustest ükskõik millise muutmiseks pead sa sisestama oma kehtiva salasõna.',
+    128 => 'Sinu nimi',
+    129 => 'Salasõna ja E-post',
+    130 => 'Sinust',
+    131 => 'Päeva kokkuvõttekirjade valikud',
+    132 => 'Päeva kokkuvõttekirjade võimalused',
+    133 => 'Kommentaaride näitamine',
+    134 => 'Kommentaaride valikud',
+    135 => '<li>Vaikimisi seatud kommentaaride näitamisviis</li><li>Kommentaaride sorteerimise vaikejärjekord</li><li>Sea kommentaaride maksimumarv, vaikimisi on 100</li>',
+    136 => 'Arva välja rubriigid ja autorid',
+    137 => 'Filtreeri lugusid',
+    138 => 'Mitmesugused valikud',
+    139 => 'Välimus ja keel',
+    140 => '<li>Pole ikoone, Kui märgitud, ei näidata rubriikide ikoone</li><li>Pole kaste, kui märgitud näidatakse ainult Kasutaja valikuid, rubriike ja administraatoritele administraatori valikuid</li><li>Määra ühel lehel maksimaalselt näidatavate lugude arv</li><li>Määra kasutatav välimuse teema ja kuupäeva formaat</li>',
+    141 => 'Privaatsusseadistused',
+    142 => 'Vaikimisi on määratud, et kasutajad ja administraatorid võivad saata "lehekaaslastele" E-kirju ja lehel näidatakse kui sa oled online. Eemalda märked, et kaitsta oma privaatsust.',
+    143 => 'Filtreeri kaste',
+    144 => 'Näita/peida kaste',
+    145 => 'Sinu avalik profiil',
+    146 => 'Salasõna ja E-post',
+    147 => 'Muuda oma salasõna, E-postiaadressi või autologimist. Salasõna ja E-postiaadressi muutmisel pead sa vigade vältimiseks sisestama need topelt.',
+    148 => 'Kasutaja info',
+    149 => 'Muuda teistele kasutajatele nähtavat kasutajainfot. <li>Allkiri lisatakse sinu kommentaaridele</li><li>Bio on lühike sinu kirjeldus teistele</li><li>Jaga oma PGP võtit</li>',
+    150 => 'Märkus: mugavamaks kasutamiseks on soovitav JavaScript.',
+    151 => 'Eelvaade',
+    152 => 'Kasutajanimi ja salasõna',
+    153 => 'Välimus ja keel',
+    154 => 'Sisu',
+    155 => 'Privaatsus',
+    156 => 'Kustuta konto',
+    157 => 'Kustutamisvalik'
+);
+
+###############################################################################
+# index.php
+
+$LANG05 = array(
+    1 => 'Pole midagi näidata',
+    2 => 'Pole midagi näidata. Võimalik, et selles rubriigis pole ühtegi lugu, mida näidata või on sinu kasutajaeelistused liiga kitsendavad, et näidata neid',
+    3 => " rubriigis %s",
+    4 => 'Tänane peaartikkel',
+    5 => 'Järgmine',
+    6 => 'Eelmine',
+    7 => 'Esimene',
+    8 => 'Viimane'
+);
+
+###############################################################################
+# profiles.php
+
+$LANG08 = array(
+    1 => 'Sinu kirja saatmisel tekkis viga. Palun proovi uuesti.',
+    2 => 'Sõnum on edukalt saadetud.',
+    3 => 'Palun veendu, et saatja E-postiaadressiks oleks toimiv E-postiaadress.',
+    4 => 'Palun täida "Sinu nimi", "Sinu E-postiaadress", "Teema" ja sõnumi väljad.',
+    5 => 'Viga: pole sellist kasutajat.',
+    6 => 'Oli viga..',
+    7 => 'Kasutajaprofiil, omanik ',
+    8 => 'Kasutaja nimi',
+    9 => 'Kasutaja URL',
+    10 => 'Saada E-post, kirja saajaks',
+    11 => 'Sinu nimi:',
+    12 => 'Sinu E-postiaadress:',
+    13 => 'Teema:',
+    14 => 'Sõnum:',
+    15 => 'HTML-i ei transleerita .',
+    16 => 'Valmis',
+    17 => 'Saada lugu sõbrale',
+    18 => 'Saaja nimi',
+    19 => 'E-postiaadress',
+    20 => 'Saatja nimi',
+    21 => 'Saatja E-postiaadress',
+    22 => 'Kõik väljad on kohustuslikud',
+    23 => "See E-kiri saadeti sulle %s %s poolt, sest ta arvas, et sa oled huvitatud artiklist {$_CONF['site_url']} lehel.  See ei ole rämpskiri. Antud kirjaga seotud E-postiaadresseid ei säilitata hilisemaks kasutamiseks!",
+    24 => 'Kommenteeri seda lugu aadressil',
+    25 => 'Selle võimaluse kasutamiseks pead sa lehele sisse logima. See nõue aitab meil kaitsta lehte väärkasutuste eest.',
+    26 => 'Selle vormi abil saad saata E-kirja valitud inimesele. Kõik väljad on kohustuslikud.',
+    27 => 'Lühike sõnum',
+    28 => "%s kirjutas: ",
+    29 => "See on päevane kokkuvõte {$_CONF['site_name']} lehelt kasutajale.",
+    30 => 'Igapäevane uudiskiri kasutajale  ',
+    31 => 'Tiitel',
+    32 => 'Päev',
+    33 => 'Loe kogu artiklit aadressil',
+    34 => 'Sõnumi lõpp',
+    35 => 'Kahjuks see kasutaja ei soovi kirju saada.',
+);
+
+###############################################################################
+# search.php
+
+$LANG09 = array(
+    1 => 'Otsing', // täpsem otsing
+    2 => 'Märksõnad',
+    3 => 'Rubriik',
+    4 => 'Kõik',
+    5 => 'Tüüp',
+    6 => 'Lood',
+    7 => 'Kommentaarid',
+    8 => 'Autorid',
+    9 => 'Kõik',
+    10 => 'Otsi',
+    11 => 'Otsingu tulemused',
+    12 => 'Sobivaid',
+    13 => 'Otsingu tulemused: ei leitud sobivaid',
+    14 => 'Ei leitud sobivat otsitavale',
+    15 => 'Palun proovi uuesti.',
+    16 => 'Tiitel',
+    17 => 'päev',
+    18 => 'Postitaja',
+    19 => "Otsi kõigist {$_CONF['site_name']} praegustest ja eelmistest lugudest",
+    20 => 'kuupäev',
+    21 => 'kuni',
+    22 => '(kuupäeva formaat AAAA-KK-PP)',
+    23 => 'Vaatamisi',
+    24 => 'Leidsin %d sobivat',
+    25 => 'Otsiti',
+    26 => 'asja ',
+    27 => 'sekundit',
+    28 => 'Ükski lugu ega kommentaar ei sobinud otsitavaga',
+    29 => 'Lugude ja kommentaaride tulemus',
+    30 => 'Ükski link ei sobinud otsitavaga',
+    31 => 'See plugin ei leidnud sobivaid',
+    32 => 'Sündmus',
+    33 => 'URL',
+    34 => 'Asukoht',
+    35 => 'Kogu päev',
+    36 => 'Ükski sündmus ei sobinud otsinguga',
+    37 => 'Sündmuste tulemus',
+    38 => 'Linkide tulemus',
+    39 => 'Linke',
+    40 => 'Sündmused',
+    41 => 'Otsitav peab olema vähemalt 3 märki pikk',
+    42 => 'Palun kasuta kuupäeva kujul AAAA-KK-PP(aasta-kuu-päev)',
+    43 => 'täpne fraas',
+    44 => 'Kõik need sõnad',
+    45 => 'vähemalt üks neist sõnadest',
+    46 => 'Järgmine',
+    47 => 'Eelmine',
+    48 => 'Autor',
+    49 => 'Päev',
+    50 => 'Klikke',
+    51 => 'Link',
+    52 => 'Asukoht',
+    53 => 'Lugude tulemus',
+    54 => 'Kommentaaride tulemus',
+    55 => 'fraasi',
+    56 => 'JA',
+    57 => 'VÕI',
+    58 => 'Rohkem tulemusi &gt;&gt;',
+    59 => 'Tulemused',
+    60 => 'lehel',
+    61 => ' täpsusta otsingut'
+);
+
+###############################################################################
+# stats.php
+
+$LANG10 = array(
+    1 => 'Lehe statistika',
+    2 => 'Klikkide koguarv lehtedel',
+    3 => 'Lugusid (kommentaare lehtedel',
+    4 => 'Küsitlusi (vastuseid)',
+    5 => 'Linke (klikke)',
+    6 => 'Sündmusi',
+    7 => '10 enim vaadatud lugu',
+    8 => 'Loo tiitel',
+    9 => 'Vaatamisi',
+    10 => 'Näib, et saidil pole ühtegi lugu või mitte keegi pole neid vaadanud.',
+    11 => '10 enim kommenteeritud lugu',
+    12 => 'Kommentaare',
+    13 => 'Näib, et saidil pole ühtegi lugu või mitte keegi pole neile postitanud ühtegi kommentaari.',
+    14 => 'Top 10 küsitlust',
+    15 => 'Küsitluse küsimus',
+    16 => 'Hääli',
+    17 => 'Näib, et saidil pole ühtegi küsitlust või mitte keegi pole neil hääletanud.',
+    18 => 'Top 10 linki',
+    19 => 'Linke',
+    20 => 'Klikke',
+    21 => 'Näib, et saidil pole ühtegi linki või mitte keegi pole ühelgi neist klõpsanud.',
+    22 => 'Top 10 E-postiga saadetud lugu',
+    23 => 'E-kirju',
+    24 => 'Näib, et mitte keegi pole saidil saatnud ühtegi lugu E-postiga.',
+    25 => 'Top 10 trackback abil kommenteeritud lugu',
+    26 => 'Ei leidnud trackback kommentaare.',
+    27 => 'Aktiivseid kasutajaid',
+    28 => 'Top 10 sündmust',
+    29 => 'Sündmus',
+    30 => 'Klikke',
+    31 => ''
+);
+
+###############################################################################
+# article.php
+
+$LANG11 = array(
+    1 => 'Seotud',
+    2 => 'Saada lugu sõbrale',
+    3 => 'Lugu prinditaval kujul',
+    4 => 'Loo valikud',
+    5 => 'PDF lugude formaat'
+);
+
+###############################################################################
+# submit.php
+
+$LANG12 = array(
+    1 => "Selleks et lisada %s pead sa kasutajana sisse logima.",
+    2 => 'Logi sisse',
+    3 => 'Uus kasutaja',
+    4 => 'Lisa sündmus',
+    5 => 'Lisa link',
+    6 => 'Lisa lugu',
+    7 => 'Nõutav on sisselogimine',
+    8 => 'Sisesta',
+    9 => 'Kui lisad meie saidile uut infot, palume järgida järgmisi soovitusi ...<ul><li>Täida kõik väljad, mis on kohustuslikud</li><li>Anna täielik ja täpne info</li><li>Kontrolli hoolikalt kirjutatud URL-id (veebiaadressid)</li></ul>',
+    10 => 'Tiitel',
+    11 => 'Link',
+    12 => 'Alguskuupäev',
+    13 => 'Lõpukuupäev',
+    14 => 'Asukoht',
+    15 => 'Kirjeldus',
+    16 => 'Kui "Muu", siis täpsusta',
+    17 => 'Kategooria',
+    18 => 'Muu',
+    19 => 'Loe enne',
+    20 => 'Viga: kategooria on puudu',
+    21 => 'Kui valisid Muu, sisesta palun ka kategooria nimi.',
+    22 => 'Viga: puuduvad väljad',
+    23 => 'Palun täida kõik vormi väljad. Kõik väljad on kohustuslikud.',
+    24 => 'Sisestus on salvestatud',
+    25 => "Sinu sisestatud %s on edukalt salvestatud.",
+    26 => 'Kiiruse piirang',
+    27 => 'Kasutajanimi',
+    28 => 'Rubriik',
+    29 => 'Lugu',
+    30 => 'Sinu viimane postitus oli',
+    31 => " sekundit tagasi.  Sellel lehel   peab sisestuste vahe olema vähemalt {$_CONF['speedlimit']} sekundit.",
+    32 => 'Eelvaade',
+    33 => 'Loo eelvaade',
+    34 => 'Logi välja',
+    35 => 'HTML sildid pole lubatud',
+    36 => 'Postituse tüüp',
+    37 => "Lisades {$_CONF['site_name']} lehele sündmuse, paigutub see peakalendrisse, kust kasutajad saavad soovi korral lisada selle oma enda isiklikku kalendrisse. Lehe kalender <b>ei ole </b> mõeldud teieisiklike sündmuste, nagu sünnipäevade või tähtpäevade jaoks.<br><br>Sündmuse lisamisel saadetakse see meie administraatoritele. Pärast administraatorite poolset kinnitamist ilmub lisatud sündmus peakalendrisse.",
+    38 => 'Lisa sündmus',
+    39 => 'peakalender',
+    40 => 'Isiklik kalender',
+    41 => 'lõpuaeg',
+    42 => 'algusaeg',
+    43 => 'Kogu päev',
+    44 => 'aadressrida 1',
+    45 => 'aadressrida 2',
+    46 => 'linn',
+    47 => 'Piirkond',
+    48 => 'postiindeks',
+    49 => 'Sündmuse tüüp',
+    50 => 'Toimeta sündmuste tüüpe',
+    51 => 'Asukoht',
+    52 => 'Kustuta',
+    53 => 'Loo konto'
+);
+
+###############################################################################
+# ADMIN PHRASES - These are file phrases used in admin scripts
+###############################################################################
+
+###############################################################################
+# admin/auth.inc.php
+
+$LANG20 = array(
+    1 => 'Nõutav on autoriseerimine',
+    2 => 'Tõkestatud! Ebakorrektne info logimisel',
+    3 => 'vigane salasõna, kasutajanimi',
+    4 => 'Kasutajanimi:',
+    5 => 'Salasõna:',
+    6 => 'Kõik katsed pääseda ligi selle lehe administreerimisosadele logitakse ja vaadatakse läbi. <br> See leht on mõeldud ainult autoriseeritud kasutajatele.',
+    7 => 'logi sisse'
+);
+
+###############################################################################
+# admin/block.php
+
+$LANG21 = array(
+    1 => 'Ebapiisavalt administreerimisõiguseid',
+    2 => 'Sul ei ole piisavalt õigusi selle bloki toimetamiseks.',
+    3 => 'Bloki toimetaja',
+    4 => 'Tekkis probleem selle lõime lugemisel. Täpsemalt loe error.log failist.',
+    5 => 'Bloki tiitel',
+    6 => 'rubriik',
+    7 => 'Kõik',
+    8 => 'Bloki turvatase',
+    9 => 'Bloki järjekord',
+    10 => 'Bloki tüüp',
+    11 => 'Portaalblokk',
+    12 => 'Normaalblokk',
+    13 => 'Portaalbloki valikud',
+    14 => 'RSS URL',
+    15 => 'Viimane RSS uuendus',
+    16 => 'Normaalbloki valikud',
+    17 => 'Bloki sisu',
+    18 => 'Palun täida bloki tiitli ja sisu väljad',
+    19 => 'Bloki haldur',
+    20 => 'Bloki tiitel',
+    21 => 'Bloki turva..',
+    22 => 'Bloki tüüp',
+    23 => 'Bloki järjekord',
+    24 => 'Bloki rubriik',
+    25 => 'Bloki toimetamiseks või kustutamiseks klõpsa allpool selle tiitlil. Uue bloki loomiseks klõpsa Tee uus ülal.',
+    26 => 'Kujundusblokk',
+    27 => 'PHP blokk',
+    28 => 'PHP bloki valikud',
+    29 => 'Bloki funktsioon',
+    30 => 'Kui sa soovid oma blokis kasutada PHP käske, sisesta allolevasse kasti PHP funktsiooni nimi. See peab algama eesliitega "phpblock_" (n. phpblock_getweather). Ilma selle eesliiteta funktsiooni ei käivitata. Me oleme lisanud selle kitsenduse kaitsmaks sinu saiti juhuks, kui keegi on sellele sisse häkkinud ja lisanud lehe koodi kontrollimata käske. Jälgi, et sa ei lisaks funktsiooni nime lõppu sulge "()". On soovitav panna oma PHP blokkide jaoks mõeldud funktsioonid faili /path/to/geeklog/system/lib-custom.php. See lubab säilitada lisatud PHP blockide funktsioonid ka Geeklogi uuendamisel.',
+    31 => 'Viga PHP blokis.  Funktsiooni %s pole olemas.',
+    32 => 'Viga: puuduvad väljad',
+    33 => 'Sa pead portaalbloki jaoks sisestama RSS faili URL-i.',
+    34 => 'Sa pead sisestama PHP bloki tiitli ja funktsiooni',
+    35 => 'Sa pead normaalbloki jaoks sisestama tiitli ja sisu',
+    36 => 'Sa pead kujundusblokkide jaoks sisestama bloki sisu',
+    37 => 'Sobimatu PHP bloki funktsiooni nimi',
+    38 => 'PHP blokkide jaoks mõeldud funktsioonid peavad algama \'phpblock_\' (n. phpblock_getweather).  \'phpblock_\' algus on kasutuses turvakaalutlustel, takistamaks kontrollimata koodi käivitamist',
+    39 => 'Külg',
+    40 => 'Vasak',
+    41 => 'Parem',
+    42 => 'Sa pead Geeklogi vaikeblokkide jaoks sisestama bloki tiitli ja järjekorra.',
+    43 => 'Ainult avaleht',
+    44 => 'Ligipääs tõkestatud',
+    45 => "Sa üritasid ligi pääseda blokile, milleks polnud sul õigust. See katse logiti. Palun <a href=\"{$_CONF['site_admin_url']}/block.php\">mine tagasi blokkide administreerimislehele. </a>",
+    46 => 'Uus blokk',
+    47 => 'Admin avaleht',
+    48 => 'Bloki nimi',
+    49 => ' (ilma tühikuteta ja erinev teistest)',
+    50 => 'Abifaili URL',
+    51 => 'koos http://',
+    52 => 'Kui sa jätad selle välja tühjaks, siis selle bloki jaoks ei näidata abiikooni.',
+    53 => 'kasutuses',
+    54 => 'salvesta',
+    55 => 'tühista',
+    56 => 'kustuta',
+    57 => 'vii allapoole',
+    58 => 'Vii ülespoole',
+    59 => 'Vii blokk paremale',
+    60 => 'Vii blokk vasakule',
+    61 => 'Pole tiitlit',
+    62 => 'Artikli limiit',
+    63 => 'Sobimatu bloki tiitel',
+    64 => 'Tiitel peab olema ja ei tohi sisaldada HTML-i!',
+    65 => 'Järjekord',
+    66 => 'Autosildid',
+    67 => 'Autosiltide lubamiseks tee märge',
+);
+
+###############################################################################
+# admin/story.php
+
+$LANG24 = array(
+    1 => 'Eelmised lood',
+    2 => 'Järgmised lood',
+    3 => 'laad',
+    4 => 'Postituse viis',
+    5 => 'Lugude toimetaja',
+    6 => 'Süsteemis pole lugusid',
+    7 => 'Autor',
+    8 => 'Salvesta',
+    9 => 'eelvaade',
+    10 => 'tühista',
+    11 => 'kustuta',
+    12 => 'ID',
+    13 => 'Tiitel',
+    14 => 'Rubriik',
+    15 => 'Päev',
+    16 => 'Tutvustustekst',
+    17 => 'Sisutekst',
+    18 => 'Klikke',
+    19 => 'Kommentaare',
+    20 => '',
+    21 => '',
+    22 => 'Lugude nimekiri',
+    23 => 'Loo toimetamiseks või kustutamiseks klõpsa allpool loo numbril. Loo vaatamiseks klõpsa selle tiitlil. Uue loo tegemiseks klõpsa Tee uus ülal.',
+    24 => 'Loo jaoks valitud ID on juba kasutuses. Palun vali loo jaoks teine ID.',
+    25 => '',
+    26 => 'Loo eelvaade',
+    27 => '',
+    28 => '',
+    29 => '',
+    30 => 'Faili üleslaadimise vead',
+    31 => 'Palun täida loo tiitli ja tutvustusteksti väljad',
+    32 => 'Pealugu',
+    33 => 'Korraga saab olla vaid üks pealugu',
+    34 => 'Mustand',
+    35 => 'Ja',
+    36 => 'Ei',
+    37 => 'Rohkem postitajalt',
+    38 => 'Rohkem rubriigis',
+    39 => 'E-kirju',
+    40 => 'Ligipääs tõkestatud',
+    41 => "Sa proovisid ligi pääseda loole, millele pole sul õigust. See katse on logitud. Sa võid vaadata seda artiklit allpool ainult loetaval kujul. Palun <a href=\"{$_CONF['site_admin_url']}/story.php\">mine pärast lugemist tagasi lugude administreerimislehele. </a>",
+    42 => "Sa proovisid ligi pääseda loole, millele pole sul õigust. See katse on logitud. Palun <a href=\"{$_CONF['site_admin_url']}/story.php\">mine tagasi lugude administreerimislehele. </a>",
+    43 => 'Uus lugu',
+    44 => 'Admin avaleht',
+    45 => 'Ligipääs',
+    46 => '<b>MÄRKUS:</b> Kui sa määrad selle kuupäeva tulevikku, siis seda artiklit ei avaldata enne seda päeva. See tähendab ka seda, et seda artiklit ei lisata varem sinu RSS voogu ja seda ignoreeritakse otsingu ja statistika lehtede poolt.',
+    47 => 'Pildid',
+    48 => 'pilt',
+    49 => 'parem',
+    50 => 'vasak',
+    51 => 'Loosse lisatud piltide lehel nähtavaks tegemiseks pead sa teksti kirjutama spetsiaalsed tähistused. Need tähistused on kujul: [imageX], [imageX_right] või [imageX_left], kus tähe X asemele tuleb panna lisatava pildi järjenumber. Märkus: sa pead iga lisatud pildi jaoks kirjutama vastava tähistuse. Kui sa ei määra laetud piltidele asukohta, ei saa sa lugu salvestada. <p><b>Eelvaade</b>: Piltidega loo puhul on Eelvaate nupul klõpsamise asemel parem lugu salvestada mustandina. Kasuta eelvaate nuppu vaid siis, kui loos pole pilte.',
+    52 => 'Kustuta',
+    53 => 'pole kasutuses. Sa pead enne muudatuste salvestamist lisama selle pildi kas tutvustusteksti või sisu teksti.',
+    54 => 'Lisatud pildid pole kasutuses',
+    55 => 'Loo salvestamisel tekkisid järgmised vead. Palun paranda need enne loo salvestamist',
+    56 => 'Näita rubriigi ikooni',
+    57 => 'Vaata originaalsuuruses pilti',
+    58 => 'Lugude haldamine',
+    59 => 'Valik',
+    60 => 'Kasutuses',
+    61 => 'Autoarhiiv',
+    62 => 'Autokustuta',
+    63 => '',
+    64 => '',
+    65 => '',
+    66 => '',
+    67 => 'Laienda sisu toimetamise ala suurust',
+    68 => 'Vähenda sisu toimetamise ala suurust',
+    69 => 'Publish Story Date', // tõlkimata
+    70 => 'Tööriistariba valik',
+    71 => 'Lihtne tööriistariba',
+    72 => 'Harilik tööriistariba',
+    73 => 'Suur tööriistariba',
+    74 => 'Suur II tööriistariba',
+    75 => 'Täis põhilugu',
+    76 => 'Avaldamise valikud',
+    77 => 'Keerukama toimetaja jaoks peab lubatud olema JavaScript. Valiku saab välja lülitada saidi pea config.php failis.',
+    78 => '<a href="%s/story.php?mode=edit&sid=%s&editopt=default">vaiketoimetaja kasutamiseks klõpsa siia</a>',
+    79 => 'Eelvaade',
+    80 => 'Toimetaja',
+    81 => 'Avaldamise valikud',
+    82 => 'Pildid',
+    83 => 'Arhiveerimisvalikud',
+    84 => 'Õigused', // permissions
+    85 => 'Näita kõik',
+    86 => 'Keerukam toimetaja',
+    87 => 'Lugude statistika'
+);
+
+
+###############################################################################
+# admin/topic.php
+
+$LANG27 = array(
+    1 => 'Rubriikide toimetaja',
+    2 => 'Rubriigi ID',
+    3 => 'Rubriigi nimi',
+    4 => 'Rubriigi pilt',
+    5 => '(ära kasuta tühikuid)',
+    6 => 'Kustutades rubriigi, kustutatakse ka kõik sellega seotud lood ja blokid.',
+    7 => 'Palun täida rubriigi ID ja kirjelduse väljad',
+    8 => 'Rubriikide haldaja',
+    9 => 'Rubriigi toimetamiseks või kustutamiseks klõpsa selle nimel. Uue rubriigi lisamiseks klõpsa Tee uus ülal. Sa näed iga rubriigi kõrval sulgudes antud rubriigi jaoks oma ligipääsuõiguseid. Tärn (*) märgib vaikimisi valitud rubriiki.',
+    10 => 'Sorteerimise järjekord',
+    11 => 'Lugusid lehel',
+    12 => 'Ligipääs tõkestatud',
+    13 => "Sa proovisid pääseda ligi rubriigile, milleks polnud sul õigust. See ligipääsukatse on logitud. Palun <a href=\"{$_CONF['site_admin_url']}/topic.php\">mine tagasi rubriikide administreerimislehele. </a>",
+    14 => 'Sorteerimismeetod',
+    15 => 'tähestikuline',
+    16 => 'vaikimisi',
+    17 => 'Uus rubriik',
+    18 => 'Admin avaleht',
+    19 => 'salvesta',
+    20 => 'tühista',
+    21 => 'kustuta',
+    22 => 'Vaikimisi',
+    23 => 'Määra see uute lugude jaoks vaikerubriigiks',
+    24 => '(*)',
+    25 => 'Arhiivi rubriik',
+    26 => 'määra see rubriik arhiveeritud lugude  jaoks vaikerubriigiks. Ainult üks rubriik on lubatud.',
+    27 => 'või lae rubriigi ikoon',
+    28 => 'Maksimum',
+    29 => 'Vead faili üleslaadimisel'
+);
+
+###############################################################################
+# admin/user.php
+
+$LANG28 = array(
+    1 => 'Kasutajate toimetaja',
+    2 => 'Kasutaja ID',
+    3 => 'kasutaja nimi',
+    4 => 'Täisnimi',
+    5 => 'Salasõna',
+    6 => 'Turvatase',
+    7 => 'E-postiaadress',
+    8 => 'Koduleht',
+    9 => '(ära kasuta tühikuid)',
+    10 => 'Palun täida kasutajanime ja E-postiaadressi väljad',
+    11 => 'Kasutajate haldur',
+    12 => 'Kasutaja andmete toimetamiseks või konto kustutamiseks klõpsa allpool soovitud kasutajal. Uue kasutajakonto loomiseks klõpsa ülal Tee uus. Võid teha kasutajate lihtotsingut sisestades otsingukasti osa nende kasutajanimest, E-postiaadressist või täisnimest (näiteks: mart* või *.com).',
+    13 => 'Turva..',
+    14 => 'Reg. aeg',
+    15 => 'Uus kasutaja',
+    16 => 'Admin avaleht',
+    17 => 'muuda',
+    18 => 'tühista',
+    19 => 'kustuta',
+    20 => 'salvesta',
+    21 => 'See kasutajanimi on juba olemas',
+    22 => 'Viga',
+    23 => 'Masslisamine',
+    24 => 'Mass kasutajate importimine',
+    25 => 'Sa võid Geeklogi importida korraga mitu kasutajat. Imporditavas tekstifailis peab väljade eraldajaks olema tabulaator ja selles peavad väljad olema järgmises järjekorras: täisnimi, kasutajanimi, E-postiaadress. Igale imporditud kasutajale saadetakse E-postiga salasõnageneraatoriga genereeritud juhuslik salasõna. Ühel real tohib olla vaid täpselt üks kasutaja. Selle reegli rikkumine toob kaasa probleeme, mille kõrvaldamine nõuab lehe käsitsi häälestamist, nii et kontrolli hoolikalt ja mitu korda imporditava faili sissekandeid!',
+    26 => 'Otsi',
+     27 => 'Piira tulemused',
+    28 => 'Pildi kustutamiseks märgi see',
+    29 => 'tee',
+    30 => 'Import',
+    31 => 'Uued kasutajad',
+    32 => 'Töötlus lõpetatud. Imporditi %d ja oli %d tõrget',
+    33 => 'sisesta',
+    34 => 'Viga: pead määrama laetava faili.',
+    35 => 'Viimati logitud',
+    36 => '(pole)',
+    37 => 'UID',
+    38 => 'Gruppide nimekiri',
+    39 => 'salasõna (uuesti)',
+    40 => 'Registreerimise aeg',
+    41 => 'Viimane logimisaeg',
+    42 => 'Blokeeritud',
+    43 => 'Ootab aktiveerimist',
+    44 => 'Ootab autoriseerimist',
+    45 => 'Aktiivne',
+    46 => 'Kasutaja staatus',
+    47 => 'Toimeta',
+    48 => 'Näita administreerimisgruppe',
+    49 => 'Administreerimisgrupp',
+    50 => 'Märgi, et seda gruppi filtreeritaks administreerimisgrupina',
+    51 => 'Online päevad',
+    52 => '<br>Märkus: Online päevad on päevade arv  registreerimisest viimase sisselogimiseni.',
+    53 => 'registreeritud',
+    54 => 'Masskustutamine',
+    55 => "See töötab vaid siis kui sul on config.php failis <code>\$_CONF['lastlogin'] = true;</code>",
+    56 => 'Palun vali kasutajate rühm, mida soovid kustutada ja klõpsa seejärel "Uuenda loetelu". Avanenud lehel  eemalda märge nende kasutajate eest, keda sa ei soovi kustutada ning vajuta "Kustuta". Pane tähele, et kui kasutajate loetelu on jaotatud mitmele lehele, kustutad sa ainult neid kasutajaid, mis on nähtavad antud lehel.',
+    57 => 'Fantoomkasutajad',
+    58 => 'Lühiaegsed kasutajad',
+    59 => 'Vanad kasutajad',
+    60 => 'Kasutajad, kes on registreerunud rohkem kui',
+    61 => ' kuud tagasi kuid pole kunagi sisse loginud.',
+    62 => 'Kasutajad, kes on registreerunud rohkem kui ',
+    63 => ' kuud tagasi, seejärel loginud sisse 24 tunni jooksul kuid pole pärast seda enam kordagi sinu lehele naasnud.',
+    64 => 'Tavalised kasutajad, kes lihtsalt pole sinu lehele tulnud juba ',
+    65 => ' kuud.',
+    66 => 'Uuenda loetelu',
+    67 => 'Kuud registreerimisest',
+    68 => 'Online tunde',
+    69 => 'Offline kuud',
+    70 => 'Ei kustutatud',
+    71 => 'Edukalt kustutatud',
+    72 => 'Kustutamiseks pole ühtegi kasutajat valitud',
+    73 => 'Kas sa oled kindel, et soovid lõplikult kustutada kõik valitud kasutajad?',
+    74 => 'Viimased registreerijad',
+    75 => 'Kasutajad, kes on viimati registreerunud ',
+    76 => ' kuud'
+);
+
+###############################################################################
+# admin/moderation.php
+
+$LANG29 = array(
+    1 => 'Kinnita',
+    2 => 'Kustuta',
+    3 => 'Toimeta',
+    4 => 'Profiil',
+    10 => 'Tiitel',
+    11 => 'Alguspäev',
+    12 => 'URL',
+    13 => 'Kategooria',
+    14 => 'Päev',
+    15 => 'Rubriik',
+    16 => 'Kasutajanimi',
+    17 => 'Täisnimi',
+    18 => 'E-post',
+    34 => 'Kontrolli ja otsusta',
+    35 => 'Sisestatud lood',
+    36 => 'Sisestatud lingid',
+    37 => 'Sisestatud sündmused',
+    38 => 'Sisesta',
+    39 => 'Hetkel pole ülevaatamist (modereerimist) vajavaid sisestusi.',
+    40 => 'Kasutajate sisestused'
+);
+
+###############################################################################
+# admin/mail.php
+
+$LANG31 = array(
+    1 => "{$_CONF['site_name']} E-posti tööriist",
+    2 => 'Kellelt',
+    3 => 'Vasta',
+    4 => 'Teema',
+    5 => 'Sisu',
+    6 => 'Saada :',
+    7 => 'Kõik kasutajad',
+    8 => 'Administraator',
+    9 => 'Valikud',
+    10 => 'HTML',
+    11 => 'Oluline teade!',
+    12 => 'Saada',
+    13 => 'Puhasta',
+    14 => 'Ignoreeri kasutaja seadistusi',
+    15 => 'Viga saatmisel: ',
+    16 => 'Edukalt saadetud: ',
+    17 => "<a href={$_CONF['site_admin_url']}/mail.php>Saada järgmine kiri</a>",
+    18 => 'Kellele',
+    19 => 'Kui soovid saata kirja kõigile registreeritud kasutajatele, vali valikukastist Logged-in kasutajagrupp.',
+    20 => "Edukalt saadetud <successcount> sõnumit ja ebaõnnestus saata <failcount> sõnumit.  Kui sa vajad iga sõnumi kohta detailset infot, siis leiad selle info allpool. Kuid sa võid <a href=\"{$_CONF['site_admin_url']}/mail.php\">saata järgmise sõnumi</a> või võid <a href=\"{$_CONF['site_admin_url']}/moderation.php\">mine tagasi administreerimislehele. </a>",
+    21 => 'Tõrked',
+    22 => 'Edukalt',
+    23 => 'Polnud tõrkeid',
+    24 => 'Polnud õnnestunuid',
+    25 => '-- Vali grupp --',
+    26 => 'Palun täida kõik väljad ja vali valikukastist kasutajate grupp.'
+);
+
+###############################################################################
+# admin/plugins.php
+
+$LANG32 = array(
+    1 => 'Pluginate installeerimine võib kahjustada sinu Geeklogi installatsiooni ja lisaks kahjustada ka sinu süsteemi. On oluline, et sa installeeriksid vaid <a href="http://www.geeklog.net">Geeklogi kodulehelt</a> laetud pluginaid, sest me kontrollime hoolikalt meie lehele laetud pluginaid erinevates operatsioonisüsteemides. On oluline mõista, et plugina installeerimine nõuab mitmete süsteemikäskude kasutamist, mis võib kaasa tuua turvalisusprobleeme, eriti siis, kui sa kasutad kolmandatelt lehtedelt laetud pluginaid. Sellest hoiatusest hoolimata ei taga me plugina installeerimise edukust ega vastuta selle installeerimise tagajärjena põhjustatud kahju eest. Teiste sõnadega - installeeri oma vastutusel. Lisaks on iga plugina paketi juures juhend, kuidas installeerida plugin käsitsi.',
+    2 => 'Plug-in Installation Disclaimer', // tõlkida
+    3 => 'Plugina installeerimisvorm',
+    4 => 'Plugina fail',
+    5 => 'Pluginate loetelu',
+    6 => 'Hoiatus, plugin on juba installeeritud!',
+    7 => 'Plugin, mida sa soovid installeerida, on juba installeeritud. Palun kustuta see plugin enne taasinstalleerimist.',
+    8 => 'Plugina sobivuse kontroll  ebaõnnestus',
+    9 => 'See plugin vajab uuemat Geeklogi versiooni. Kas uuenda <a href="http://www.geeklog.net">Geeklog</a> või hangi plugina sobiv versioon.',
+    10 => '<br><b>Hetkel pole installeeritud ühtegi pluginat.</b><br><br>',
+    11 => 'Plugina muutmiseks või kustutamiseks klõpsa allpool selle nimel. Sulle näidatakse plugina kohta täpsemat infot koos autori veebilehe aadressiga. Näidatakse nii installeeritud versiooni numbrit kui ka plugina koodist saadud plugina versioon. Selle põhjal saad otsustada, kas plugin vajab uuendamist või mitte. Plugina installeerimise või uuendamise kohta loe täpsemalt plugina dokumentatsioonist.',
+    12 => 'plugineditor () ei saanud plugina nime',
+    13 => 'Plugina toimetaja',
+    14 => 'Uus plugin',
+    15 => 'Admin avaleht',
+    16 => 'Plugina nimi',
+    17 => 'Plugina versioon',
+    18 => 'Geeklogi versioon',
+    19 => 'Kasutuses',
+    20 => 'Ja',
+    21 => 'Ei',
+    22 => 'Installeeri',
+    23 => 'Salvesta',
+    24 => 'Tühista',
+    25 => 'Kustuta',
+    26 => 'Plugina nimi',
+    27 => 'Plugina koduleht',
+    28 => 'Installeeritud versioonid',
+    29 => 'Geeklogi versioon',
+    30 => 'Kustuta plugin?',
+    31 => 'Kas sa oled kindel, et soovid  kustutada  selle plugina?  Jätkates kustutad sa ka kõik selle pluginaga seotud andmed ja andmestruktuurid. Kui sa oled kindel, siis klõpsa uuesti allpool "kustuta" nuppu.',
+    32 => '<p><b>Viga: AutoLink silt on ebakorrektse formaadiga</b></p>',
+    33 => 'Koodi versioon',
+    34 => 'Uuenda',
+    35 => 'Toimeta',
+    36 => 'Kood',
+    37 => 'andmed', // data
+    38 => 'Uuenda!'
+);
+
+###############################################################################
+# admin/syndication.php
+
+$LANG33 = array(
+    1 => 'loo lõim',
+    2 => 'salvesta',
+    3 => 'kustuta',
+    4 => 'tühista',
+    10 => 'Sisu jagamine',
+    11 => 'Uus lõim',
+    12 => 'Admin avaleht',
+    13 => 'Lõime toimetamiseks või kustutamiseks klõpsa allpool selle nimel. Uue lõime loomiseks klõpsa Tee uus ülalpool.',
+    14 => 'Tiitel',
+    15 => 'Tüüp',
+    16 => 'Faili nimi',
+    17 => 'Formaat',
+    18 => 'viimati uuendatud',
+    19 => 'Kasutuses',
+    20 => 'Ja',
+    21 => 'Ei',
+    22 => '<i>(pole lõimi)</i>',
+    23 => 'kõik lood',
+    24 => 'Lõime toimetaja',
+    25 => 'Lõime tiitel',
+    26 => 'Limiit',
+    27 => 'Kannete pikkus',
+    28 => '(0 = pole  teksti, 1 = täistekst, muu = piira antud märkide arvuni.)',
+    29 => 'Kirjeldus',
+    30 => 'Viimane uuendus',
+    31 => 'kooditabel',
+    32 => 'Keel',
+    33 => 'Sisu',
+    34 => 'Kanded',
+    35 => 'tundi',
+    36 => 'Vali lõime tüüp',
+    37 => 'Sa oled installeerinud vähemalt ühe plugina, mis toetab sisu jaotamist. Allpool pead sa valima, kas lood Geeklogi lõime või mõne plugina poolt toetatud lõime.',
+    38 => 'Viga: puuduvad väljad',
+    39 => 'Palun täida lõime tiitli, kirjelduse ja faili nime väljad.',
+    40 => 'Palun sisesta lugude  või tundide arv.',
+    41 => 'Sisesta',
+    42 => 'Sündmused',
+    43 => 'Igas rubriigis.',
+    44 => 'Mitte üheski.',
+    45 => 'Rubriigi lehepäises on link?',
+    46 => 'Piira tulemused',
+    47 => 'Otsi',
+    48 => 'Toimeta',
+    49 => 'Lõime logo',
+    50 => "Suhteline saidi urli suhtes ({$_CONF['site_url']})",
+    51 => 'Sinu valitud lõimefailinimi on juba teise lõime poolt kasutuses. Palun vali teine nimi.',
+    52 => 'Viga: failinimi on juba kasutuses'
+);
+
+###############################################################################
+# confirmation and error messages
+
+$MESSAGE = array(
+    1 => "Sinu salasõna saadeti sulle E-postiga ja peaks kohe kohale jõudma. Palun järgi kirjas olevaid juhiseid ja me täname sind {$_CONF['site_name']} lehe kasutamise eest",
+    2 => "Täname sind {$_CONF['site_name']} lehele loo sisestamise eest. See saadeti meie meeskonnale kinnitamiseks. Pärast meie lehe meeskonna poolset kinnitamist saavad kõik seda meie lehel lugeda.",
+    3 => "Täname sind {$_CONF['site_name']} lehele lingi lisamise eest.  See saadeti meie meeskonnale kinnitamiseks. Kui see kinnitatakse, võid sa seda näha <a href={$_CONF['site_url']}/links.php>linkide</a> osas.",
+    4 => "Täname sind {$_CONF['site_name']} lehele sündmuse sisestamise eest.  See saadeti meie meeskonnale kinnitamiseks. Pärast kinnitamist on see sündmus näha <a href={$_CONF['site_url']}/calendar.php>kalendri</a> osas.",
+    5 => 'Sinu konto info on edukalt salvestatud.',
+    6 => 'Sinu eelistused on edukalt salvestatud.',
+    7 => 'Sinu kommentaaride eelistused on edukalt salvestatud.',
+    8 => 'Sa oled edukalt välja logitud.',
+    9 => 'Sinu lugu on edukalt salvestatud.',
+    10 => 'Lugu on edukalt kustutatud.',
+    11 => 'Sinu blokk on edukalt salvestatud.',
+    12 => 'Blokk on edukalt kustutatud.',
+    13 => 'Rubriik on edukalt salvestatud.',
+    14 => 'Rubriik ja kõik sellega seotud lood ja blokid on edukalt kustutatud.',
+    15 => 'Sinu link on edukalt salvestatud.',
+    16 => 'Link on edukalt kustutatud.',
+    17 => 'Sündmus on edukalt salvestatud.',
+    18 => 'Sündmus on edukalt kustutatud.',
+    19 => 'Küsitlus on edukalt salvestatud.',
+    20 => 'Küsitlus on edukalt kustutatud.',
+    21 => 'Kasutaja on edukalt salvestatud.',
+    22 => 'Kasutaja on edukalt kustutatud.',
+    23 => 'Sinu kalendrisse sündmuse lisamisel tekkis viga. Ei olnud sündmuse ID-d.',
+    24 => 'Sündmus on sinu kalendrisse salvestatud.',
+    25 => 'Ei saa enne sinu sisselogimist isiklikku kalendrit avada',
+    26 => 'Sündmus on sinu isiklikust kalendrist edukalt eemaldatud',
+    27 => 'Sõnum on edukalt saadetud.',
+    28 => 'plugin on edukalt salvestatud',
+    29 => 'Sellel lehel pole kahjuks isiklikud kalendrid kasutuses.',
+    30 => 'Ligipääs tõkestatud',
+    31 => 'Kahjuks pole sul ligipääsu lugude haldamise lehele. Pane tähele, et kõik sellised lubamatud katsed logitakse',
+    32 => 'Kahjuks pole sul ligipääsu rubriikide haldamise lehele. Pane tähele, et kõik sellised lubamatud katsed logitakse',
+    33 => 'Kahjuks pole sul ligipääsu blokkide haldamise lehele. Pane tähele, et kõik sellised lubamatud katsed logitakse',
+    34 => 'Kahjuks pole sul ligipääsu linkide haldamise lehele. Pane tähele, et kõik sellised lubamatud katsed logitakse',
+    35 => 'Kahjuks pole sul ligipääsu sündmuste haldamise lehele. Pane tähele, et kõik sellised lubamatud katsed logitakse',
+    36 => 'Kahjuks pole sul ligipääsu küsitluste haldamise lehele. Pane tähele, et kõik sellised lubamatud katsed logitakse',
+    37 => 'Kahjuks pole sul ligipääsu kasutajate haldamise lehele. Pane tähele, et kõik sellised lubamatud katsed logitakse',
+    38 => 'Kahjuks pole sul ligipääsu pluginate haldamise lehele. Pane tähele, et kõik sellised lubamatud katsed logitakse',
+    39 => 'Kahjuks pole sul ligipääsu E-posti haldamise lehele. Pane tähele, et kõik sellised lubamatud katsed logitakse',
+    40 => 'Süsteemi teade',
+    41 => 'Kahjuks pole sul ligipääsu sõnade asendamise lehele. Pane tähele, et kõik sellised lubamatud katsed logitakse',
+    42 => 'Sõna on edukalt salvestatud',
+    43 => 'Sõna on edukalt kustutatud.',
+    44 => 'Plugin on edukalt installeeritud!',
+    45 => 'Plugin on edukalt kustutatud.',
+    46 => 'Kahjuks pole sul ligipääsu  andmebaasi bakupi tööriista juurde. Pane tähele, et kõik sellised lubamatud katsed logitakse',
+    47 => 'Selliseid võimalusi saab kasutada vaid *nix keskkonnas. Kui süsteem töötab *nix operatsioonisüsteemis, siis puhvermälu on edukalt tühjendatud. Kui operatsioonisüsteemiks on Windows, pead sa otsima faile nimekujuga adodb_*.php ja need failid käsitsi kustutama.',
+    48 => "Täname sind oma liikmelisuse kinnitamise eest {$_CONF['site_name']} lehel. Meie meeskond vaatab sinu taotluse läbi. Kui see kinnitatakse, saadetakse sinu poolt antud E-postiaadressile E-kirjaga sinu salasõna.",
+    49 => 'Grupp on edukalt salvestatud.',
+    50 => 'Grupp on edukalt kustutatud.',
+    51 => 'See kasutajanimi on juba kasutuses. Palun vali mõni teine.',
+    52 => 'Sisestatud E-postiaadress tundub olevat ebakorrektne.',
+    53 => 'Sinu uus salasõna on aktsepteeritud. Palun logi uut salasõna kasutades allpool oleva vormi kaudu sisse.',
+    54 => 'Sinu tellimus uue salasõna saamiseks on aegunud. Palun proovi alloleva vormi abil uuesti.',
+    55 => 'Sulle saadeti E-kiri, mis peaks kohe sinu postkasti jõudma. Uue salasõna määramiseks järgi selles olevaid juhiseid.',
+    56 => 'Sisestatud E-postiaadress on juba kasutuses teises kasutajakontos.',
+    57 => 'Sinu kasutajakonto on edukalt kustutatud.',
+    58 => 'Lõim on edukalt salvestatud.',
+    59 => 'Lõim on edukalt kustutatud.',
+    60 => 'Plugin on edukalt uuendatud.',
+    61 => 'Plugin %s: Tundmatu teate järjenumber',
+    62 => 'Trackback kommentaar on kustutatud.',
+    63 => 'Trackback kommentaari kustutamisel tekkis viga.',
+    64 => 'Sinu trackback kommentaar on edukalt saadetud.',
+    65 => 'Veebilogi kataloogi teenus on edukalt salvestatud.',
+    66 => 'See Veebilogi kataloogi teenus on kustutatud.',
+    67 => 'Uus salasõna ei kattu kontrolliks sisestatud teise salasõnaga!',
+    68 => 'Sa pead sisestama praeguse kehtiva salasõna.',
+    69 => 'Sinu kasutajakonto on blokeeritud!',
+    70 => 'Sinu konto ootab administraatori kinnitust.',
+    71 => 'Sinu kasutajakonto loomise soov on nüüd kinnitatud ja ootab administraatoripoolset kinnitamist.',
+    72 => 'Plugina installeerimisel tekkis viga. Täpsemalt vaata error.log failist.',
+    73 => 'Plugina eemaldamisel tekkis viga. Täpsemalt vaata error.log failist.',
+    74 => 'Pingback on edukalt saadetud.',
+    75 => 'Trackbackid tuleb saata post meetodiga.',
+    76 => 'Kas sa tõesti soovid seda kustutada?',
+    77 => 'Hoiatus: <br>sa määrasid vaikekooditabeliks UTF-8, kuid sinu server ei toeta mitmebaidilist kooditabelit. Palun installeeri PHP jaoks mbstring funktsioonid või vali mõni teine kooditabel/keel.',
+    78 => 'Palun kontrolli, et E-postiaadress ja kontrolliks sisestatud E-postiaadress oleksid samad.',
+    79 => 'Leht, mida soovid avada, vajab tööks funktsiooni, mida kahjuks sellel saidil enam kasutuses ei ole.',
+    80 => 'Selle lõime teinud plugina töö on hetkel välja lülitatud. Sa ei saa seda lõime toimetada enne kui oled antud plugina uuesti tööle lülitanud.',
+    81 => 'Võimalik, et sa kirjutasid oma sisselogimisinfo valesti. Palun proovi alloleva vormi abil  uuesti sisse logida.',
+    82 => 'Sa oled ületanud lubatud sisselogimiskatsete limiidi. Palun proovi hiljem uuesti.',
+    83 => 'Et muuta oma salasõna, E-postiaadressi või kui kaua sind peaks sait mäletama, pead sa sisestama oma kehtiva salasõna.',
+    84 => 'Oma konto kustutamiseks sisesta oma kehtiv salasõna.'
+);
+
+###############################################################################
+
+$LANG_ACCESS = array(
+    'access' => 'Ligipääs',
+    'ownerroot' => 'omanik (root)',
+    'group' => 'Grupp',
+    'readonly' => 'Ainult loetav',
+    'accessrights' => 'Ligipääsuõigused',
+    'owner' => 'Omanik',
+    'grantgrouplabel' => 'Grant Above Group Edit Rights', // tõlkida
+    'permmsg' => 'Märkus: liikmed on kõik lehele sisse loginud lehe kasutajad ja anonüümsed on kõik lehel olevad ja mitte sisse loginud lehe lugejad.',
+    'securitygroups' => 'Turvalisusgrupid',
+    'editrootmsg' => "Kuigi sa oled kasutajate administraator, ei saa sa muuta root kasutajate andmeid, kui sa ei ole ise root kasutaja. Sa võid toimetada kõiki teisi kasutajaid, välja arvatud root kasutajaid. Pane tähele, et kõik õigustamata katsed muuta root kasutajate andmeid logitakse.  Palun mine tagasi <a href=\"{$_CONF['site_admin_url']}/user.php\">Kasutajate administreerimislehele. </a>",
+    'securitygroupsmsg' => 'Märgi grupid, millesse soovid, et see kasutaja kuuluks.',
+    'groupeditor' => 'Grupi toimetaja',
+    'description' => 'Kirjeldus',
+    'name' => 'Nimi',
+    'rights' => 'Õigused',
+    'missingfields' => 'Puuduvad väljad',
+    'missingfieldsmsg' => 'Sa pead grupi jaoks sisestama grupi nime ja kirjelduse',
+    'groupmanager' => 'Grupi haldur',
+    'newgroupmsg' => 'Grupi toimetamiseks või kustutamiseks klõpsa selle nimel allpool. Uue grupi loomiseks klõpsa Tee uus ülal. Pane tähele, et põhigruppe (core group) ei saa kustutada, sest need on süsteemis kasutusel.',
+    'groupname' => 'Grupi nimi',
+    'coregroup' => 'Põhigrupp',
+    'yes' => 'Ja',
+    'no' => 'Ei',
+    'corerightsdescr' => "See grupp on {$_CONF['site_name']} põhigrupp (Core Group).  Seetõttu selle grupi õigusi ei saa muuta. Allpool on ainult loetaval kujul loetelu antud grupi õigustest.",
+    'groupmsg' => 'Sellel lehel on turvalisusgrupid hierarhilised.  Lisades antud grupi mõnda alloleva grupi koosseisu, annad sa antud grupile samad õigused kui neilgi gruppidel. On eelistatavam kasutada allolevaid gruppe antud grupile õiguste määramisel.  Kui vajad kohandatud õigustega gruppi, siis saad sa selle lehe "Õigused" osas määrata mitmeid õigusi. Õiguste määramiseks märgi lihtsalt vastava grupi või õiguse juures olev märkeruut.',
+    'coregroupmsg' => "See grupp on {$_CONF['site_name']} põhigrupp (Core Group).  Seetõttu ei saa selle grupi kuulumist teistesse gruppidesse muuta. Allpool on ainult loetaval kujul loetelu gruppidest, kuhu see grupp kuulub.",
+    'rightsdescr' => 'Grupile võib määrata õigusi otse, määrates neid just antud grupile,  või andes vastavad õigused mõnele neist gruppidest, kuhu antud grupp kuulub. Need õigused, mis on ilma märkeruuduta, on antud grupile juba määratud nende gruppide kaudu, kuhu see hetkel kuulub. Neid õigusi, mille kõrval on märkeruut, võib määrata otse antud grupile.',
+    'lock' => 'Lukk',
+    'members' => 'Liikmed',
+    'anonymous' => 'Anonüümne',
+    'permissions' => 'Lubatud',
+    'permissionskey' => 'R =lugemis-, E = toimetamis-, toimetamisõigus annab ka  lugemisõiguse', // tõlkida
+    'edit' => 'Toimeta',
+    'none' => 'Mitte midagi',
+    'accessdenied' => 'Ligipääs tõkestatud',
+    'storydenialmsg' => "Sul ei ole õigust seda lugu vaadata. Selle põhjuseks võib olla, et sa ei ole {$_CONF['site_name']} lehel registreerunud kasutaja.  Palun <a href=\"users.php?mode=new\"> registreeru {$_CONF['site_name']} lehe kasutajaks </a>, et saada kõiki registreerunud kasutaja õigusi",
+    'nogroupsforcoregroup' => 'See grupp ei kuulu ühtegi teise gruppi',
+    'grouphasnorights' => 'Sellel grupil pole ligipääsu ühelegi administreerimisfunktsioonile antud saidil',
+    'newgroup' => 'Uus grupp',
+    'adminhome' => 'Admin avaleht',
+    'save' => 'salvesta',
+    'cancel' => 'tühista',
+    'delete' => 'kustuta',
+    'canteditroot' => 'Sa üritasid toimetada root gruppi, kuid sa pole ise root grupi liige. Selletõttu tõkestati sinu ligipääs antud grupile. Kui sa arvad, et tegu on veaga, siis palun kontakteeru lehe administraatoriga.',
+    'listusers' => 'Näita kasutajad',
+    'listthem' => 'loetelu',
+    'usersingroup' => 'Kasutajad grupis "%s"',
+    'usergroupadmin' => 'Kasutajagrupi administreerimine',
+    'add' => 'Lisa',
+    'remove' => 'Eemalda',
+    'availmembers' => 'Võimalikud liikmed',
+    'groupmembers' => 'Grupi liikmed',
+    'canteditgroup' => 'Grupi toimetamiseks pead sa ise olema selle grupi liige. Kui arvad, et tegu on veaga, siis palun kontakteeru lehe administraatoriga.',
+    'cantlistgroup' => 'Grupi liikmete nägemiseks pead sa ise olema selle grupi liige. Kui sa arvad, et tegu on veaga, palun kontakteeru lehe administraatoriga.',
+    'editgroupmsg' => 'Grupi liikmeskonna muutmiseks klõpsa kasutaja nimel ja kasuta kas Lisa või Eemalda nuppu. Kui kasutaja on grupi liige, on tema nimi ainult parempoolses loetelus. Kui oled lõpetanud, klõpsa grupi koosseisu uuendamiseks ja gruppide haldamise pealehele jõudmiseks <b>Salvesta</b> nuppu.',
+    'listgroupmsg' => 'Loetelu kõigist grupi <b>%s</b> hetke liikmetest:',
+    'search' => 'Otsi',
+    'submit' => 'Sisesta',
+    'limitresults' => 'Piira tulemused',
+    'group_id' => 'Grupi ID',
+    'plugin_access_denied_msg' => 'Sa üritasid ligi pääseda pluginate administreerimislehele, milleks polnud sul õigust. Pane tähele, et kõik õigustamata katsed sellele lehele ligi pääseda logitakse.',
+    'groupexists' => 'Grupi nimi on juba olemas',
+    'groupexistsmsg' => 'Sama nimega grupp on juba olemas. Grupi nimed peavad olema üksteisest erinevad.',
+);
+
+###############################################################################
+# admin/database.php
+
+$LANG_DB_BACKUP = array(
+    'last_ten_backups' => 'Viimased 10 bakupit',
+    'do_backup' => 'Tee bakkup',
+    'backup_successful' => 'Andmebaasi bakkup oli edukas.',
+    'db_explanation' => 'Sinu Geeklogist uue bakupi tegemiseks klõpsa allolevat nuppu',
+    'not_found' => "Ebakorrektne tee programmini või mysqldump pole käivitatav.<br>Kontrolli config.php failis <strong>\$_DB_mysqldump_path</strong> definitsiooni.<br>Hetkel on muutuja väärtuseks: <var>{$_DB_mysqldump_path}</var>",
+    'zero_size' => 'Bakkup ebaõnnestus, faili suurus on 0 baiti',
+    'path_not_found' => "{$_CONF['backup_path']} pole olemas või pole kataloog.",
+    'no_access' => "Viga: bakkupkataloog, {$_CONF['backup_path']}, pole ligipääsetav.",
+    'backup_file' => 'Backupfail',
+    'size' => 'suurus',
+    'bytes' => 'baiti',
+    'total_number' => 'Bakupite üldarv: %d'
+);
+
+###############################################################################erefo$
+
+$LANG_BUTTONS = array(
+    1 => 'Avaleht',
+    2 => 'Kontakt',
+    3 => 'Avalda',
+    4 => 'Lingid',
+    5 => 'Küsitlused',
+    6 => 'Kalender',
+    7 => 'Lehe statistika',
+    8 => 'Kohanda',
+    9 => 'Otsi',
+    10 => 'täpsem otsing',
+    11 => 'Artiklid'
+);
+
+###############################################################################
+# 404.php
+
+$LANG_404 = array(
+    1 => 'Viga/Error 404',
+    2 => 'Ma otsisin igalt poolt, kuid ei leidnud otsitud lehte: <b>%s</b>.',
+    3 => "<p>Mul on kahju, kuid soovitud  faili ei ole. Palun vaata kindlasti <a href=\"{$_CONF['site_url']}\">pealehele </a> või <a href=\"{$_CONF['site_url']}/search.php\">otsimislehele,</a> et otsitavat leida.",
+);
+
+###############################################################################
+
+$LANG_LOGIN = array(
+    1 => 'Nõutav sisselogimine',
+    2 => 'Selle lehe osa vaatamiseks pead kasutajana sisse logima.',
+    3 => 'Logi sisse',
+    4 => 'Uus kasutaja'
+);
+
+$LANG_PDF = array(
+    1 => 'PDF oskused on välja lülitatud',
+    2 => 'Etteantud faili ei teisendatud. Dokument laeti korrektselt, kuid seda ei suudetud töödelda. Jälgi hoolikalt, et laeksid vaid XHTML standardile vastavaid HTML dokumente. Pea meeles, et keeruka kujundusega HTML dokumente võidakse teisendada ebakorrektselt või üldse mitte teisendada. Sinu faili töötluse tulemusena loodi 0 baidi suurusega fail ja see kustutati. Kui sa oled kindel, et sinu faili saab edukalt töödelda, siis lae see uuesti.',
+    3 => 'PDF-i genereerimisel tekkis tundmatu viga',
+    4 => 'No page data was given or you want to use the ad-hoc PDF generation tool below.  If you think you are getting this page in error then please contact the system administrator.  Otherwise, you may use the form below to generate PDF\'s in an ad-hoc fashion.',// tõlkida
+    5 => 'Laen dokumenti.',
+    6 => 'Palun oota, kuni sinu dokumenti laetakse.',
+    7 => 'Sa võid oma dokumendi salvestamiseks teha alloleval lingil hiirega paremklõpsu ning valida menüüst kas "Save target...", "Salvesta sihtmärk...", "Save Link location..." vms.',
+    8 => 'Konfiguratsioonis määratud tee HTMLDoc rakenduseni on kas vale või seda rakendust ei saa käivitada. Palun pöördu probleemi püsimisel lehe administraatori poole.',
+    9 => 'PDF-i genereerija',
+    10 => 'This is the Ad-hoc PDF Generation tool. It will attempt to convert any URL you give into a PDF.  Please note that some web pages will not render properly with this feature.  This is a limitation of the HTMLDoc PDF generation tool and such errors should not be reported to the administrators of this site', // tõlkida
+    11 => 'URL',
+    12 => 'Genereeri PDF!',
+    13 => 'Selle lehe häälestus ei luba kasutada PHP funktsiooni fopen(). Süsteemiadministraator peab selle funktsiooni lubamiseks muutma php.ini faili ning selles allow_url_fopen sisse lülitama.',
+    14 => 'PDF faili, mida soovid vaadata kas pole olemas või üritad sa seda vaadata ilma selleks piisavaid õigusi omamata.',
+);
+
+###############################################################################
+# trackback
+
+$LANG_TRB = array (
+    'trackback'          => 'Trackback',
+    'from'               => 'kust',
+    'tracked_on'         => 'Kommenteeritud', // Tracked on
+    'read_more'          => '[loe lisaks]',
+    'intro_text'         => 'Siin on see, mida teised ütlevad "%s" kohta:',
+    'no_comments'        => 'Selle sisestuse kohta pole trackbackkommentaare.',
+    'this_trackback_url' => 'Selle sisestuse trackback URL:',
+    'num_comments'       => '%d trackbackkommentaari',
+    'send_trackback'     => 'Saada Ping',
+    'preview'            => 'Eelvaade',
+    'editor_title'       => 'Saada trackbackkommentaar',
+    'trackback_url'      => 'Trackbacki URL',
+    'entry_url'          => 'Sisestuse URL',
+    'entry_title'        => 'Sisestuse tiitel',
+    'blog_name'          => 'Saidi nimi',
+    'excerpt'            => 'katkend',
+    'truncate_warning'   => 'Märkus: vastuvõttev leht võib sinu katkendit lühendada.',
+    'button_send'        => 'Saada',
+    'button_preview'     => 'Eelvaade',
+    'send_error'         => 'Viga',
+    'send_error_details' => 'Viga trackbackkommentaari saatmisel:',
+    'url_missing'        => 'Puudub sisestuse URL',
+    'url_required'       => 'Palun kirjuta sisestuse jaoks vähemalt URL.',
+    'target_missing'     => 'Pole Trackback URL-i',
+    'target_required'    => 'Palun kirjuta trackbacki URL',
+    'error_socket'       => 'Ei saanud avada väratit.',
+    'error_response'     => 'Serveri vastus oli arusaamatu.',
+    'error_unspecified'  => 'Määratlemata viga.',
+    'select_url'         => 'Vali trackbacki URL',
+    'not_found'          => 'Ei leidnud trackback URL-i',
+    'autodetect_failed'  => 'Geeklog ei suutnud tuvastada saadetava kommentaari jaoks trackback URL-i. Palun kirjuta see käsitsi allolevasse vormi.',
+    'trackback_explain'  => 'Vali allolevast loetelust link, kuhu soovid oma trackback kommentaari saata. Pärast seda üritab Geeklog tuvastada trackback kommentaari jaoks õige URL-i. Kui sa tead õiget URL-i, võid sa <a href="%s">sisestada selle käsitsi. </a>',
+    'no_links_trackback' => 'Ei leidnud linke. Sa ei saa selle sisestuse kohta saata trackback kommentaari.',
+    'pingback'           => 'Pingback',
+    'pingback_results'   => 'Pingback tulemused',
+    'send_pings'         => 'Saada Ping-id',
+    'send_pings_for'     => 'Saada Ping-id "%s"', // tõlkida
+    'no_links_pingback'  => 'Ei leidnud linke. Selle sisestuse kohta ei saadetud  pingbacke.',
+    'pingback_success'   => 'Pingback on saadetud.',
+    'no_pingback_url'    => 'Ei leidnud pingback URL-i.',
+    'resend'             => 'Saada uuesti',
+    'ping_all_explain'   => 'Sa võid teavitada lehti, millele sinu leht viitab saates (<a href="http://en.wikipedia.org/wiki/Pingback"> Pingbacki</a>), teavitada lehe uuendamisest saates pingi veebi logikataloogidesse (weblog directory) või saata <a href="http://en.wikipedia.org/wiki/Trackback"> Trackbackkommentaari,</a> viimast juhul, kui oled oma lehel kommenteerinud mõnel teisel saidil olnud kellegi teise kirjutist.',
+    'pingback_button'    => 'Saada Pingback',
+    'pingback_short'     => 'Saada pingback kõigile käesolevalt  lehelt lingitud lehtedele.',
+    'pingback_disabled'  => '(Pingback on välja lülitatud)',
+    'ping_button'        => 'Saada Ping',
+    'ping_short'         => 'Pingi veebi logikatalooge',
+    'ping_disabled'      => '(Ping on välja lülitatud)',
+    'trackback_button'   => 'Saada Trackback',
+    'trackback_short'    => 'Saada trackbackkommentaar.',
+    'trackback_disabled' => '(Trackback on välja lülitatud)',
+    'may_take_a_while'   => 'Pane tähele, et pingi ja pingbacki saatmine võib võtta aega.',
+    'ping_results'       => 'Ping tulemused',
+    'unknown_method'     => 'Tundmatu ping meetod',
+    'ping_success'       => 'Ping on saadetud.',
+    'error_site_name'    => 'Palun kirjuta saidi nimi.',
+    'error_site_url'     => 'Palun sisesta lehe URL.',
+    'error_ping_url'     => 'Palun kirjuta toimiv ping URL.',
+    'no_services'        => 'Pole häälestatud veebi logikataloogide kasutamine (weblog directory services).',
+    'services_headline'  => 'Veebi logikataloogide teenused',
+    'service_explain'    => 'Veebi logikataloogi teenusepakkuja andmete toimetamiseks klõpsa allpool vastavat nuppu logikataloogi nime kõrval. Uue logikataloogi lisamiseks klõpsa Tee uus ülal.',
+    'service'            => 'Teenus',
+    'ping_method'        => 'Ping meetod',
+    'service_website'    => 'Veebileht',
+    'service_ping_url'   => 'Pingi URL',
+    'ping_standard'      => 'Standard Ping',
+    'ping_extended'      => 'Laiendatud ping',
+    'ping_unknown'       => '(tundmatu meetod)',
+    'edit_service'       => 'Toimeta veebi logikataloogi andmeid',
+    'trackbacks'         => 'Trackbackid',
+    'editor_intro'       => 'Valmista oma trackbackkommentaar  <a href="%s">%s jaoks ette</a>.',
+    'editor_intro_none'  => 'Valmista trackback kommentaar ette.',
+    'trackback_note'     => 'Trackbakkommentaari saatmiseks mine lugude loetelusse ja klõpsa loo juures "' . $LANG24[21] . '". Klõpsa järgmisel lingil, et <a href="%s"> saata lugudega sidumata trackbackkommentaari.</a>',
+    'pingback_explain'   => 'Kirjuta URL, kuhu pingback saata. Pingback viitab tagasi sinu saidi pealehele.',
+    'pingback_url'       => 'Pingbacki URL',
+    'site_url'           => 'Antud saidi URL',
+    'pingback_note'     => 'Pingbacki saatmiseks mine lugude loetelusse ja klõpsa loo juures "' . $LANG24[21] . '". Klõpsa järgmisel lingil, et <a href="%s"> saata lugudega sidumata pingbacki.</a>',
+    'pbtarget_missing'   => 'Pole pingbacki URL-i',
+    'pbtarget_required'  => 'Palun kirjuta pingbacki URL',
+    'pb_error_details'   => 'Pingbacki saatmisel tekkis viga:',
+    'delete_trackback'   => 'Selle trackbacki kustutamiseks klõpsa: ',
+);
+
+###############################################################################
+# directory.php
+
+$LANG_DIR = array (
+    'title'            => 'Artiklite kataloog',
+    'title_year'       => '%d artiklid',
+    'title_month_year' => '%s %d artiklid',
+    'nav_top'          => 'Tagasi peakataloogi',
+    'no_articles'      => 'Pole artikleid'
+);
+
+################################################################################
+# "What's New" Time Strings
+
+$LANG_WHATSNEW = array (
+    # This here determines the order of the sentence "No new stories in 2 hrs"
+    # order it so it makes sense in your language:
+    # %i    item, "Stories"
+    # %n    amount, "2", "20" etc
+    # %t    time, "2" (weeks)
+    # %s    scale, "hrs", "weeks"
+    'new_string'  => '%n uut %i viimase %t %s jooksul',
+    'new_last'    => ' viimase %t %s jooksul',
+    # other strings
+    'minutes'     => 'minuti',
+    'hours'       => 'tunni',
+    'days'        => 'päeva',
+    'weeks'       => 'nädala',
+    'months'      => 'kuu',
+    'minute'      => 'minut',
+    'hour'        => 'tund',
+    'day'         => 'päeva',
+    'week'        => 'nädala',
+    'month'       => 'kuu'
+);
+
+$LANG_MONTH = array(
+    1 => 'Jaanuar',
+    2 => 'Veebruar',
+    3 => 'Märts',
+    4 => 'Aprill',
+    5 => 'Mai',
+    6 => 'Juuni',
+    7 => 'Juuli',
+    8 => 'August',
+    9 => 'September',
+    10 => 'Oktoober',
+    11 => 'November',
+    12 => 'Detsember'
+);
+
+$LANG_WEEK = array(
+    1 => 'Pühapäev',
+    2 => 'Esmaspäev',
+    3 => 'Teisipäev',
+    4 => 'Kolmapäev',
+    5 => 'Neljapäev',
+    6 => 'Reede',
+    7 => 'Laupäev'
+);
+
+################################################################################
+# Admin - Strings
+#
+# These are some standard strings used by core functions as well as plugins to
+# display administration lists and edit pages
+
+$LANG_ADMIN = array (
+    'search'        => 'Otsi',
+    'limit_results' => 'Piira tulemused',
+    'submit'        => 'Valmis',
+    'edit'          => 'Toimeta',
+    'edit_adv'      => 'Toimeta lisa',
+    'admin_home'    => 'Admin avaleht',
+    'create_new'    => 'Tee uus',
+    'create_new_adv' => 'Tee uus (lisa)',
+    'enabled'       => 'Kasutuses',
+    'title'         => 'Tiitel',
+    'type'          => 'Tüüp',
+    'topic'         => 'Rubriik',
+    'help_url'      => 'Abifaili URL',
+    'save'          => 'Salvesta',
+    'cancel'        => 'Tühista',
+    'delete'        => 'Kustuta',
+    'delete_sel'    => 'Kustuta valitud',
+    'copy'          => 'Koopia',
+    'no_results'    => '- Ei leidnud midagi -',
+    'data_error'    => 'Liitumiste andmetega tekkis viga. Palun kontrolli algandmeid.',
+    'preview'       => 'Eelvaade',
+    'records_found' => 'Leitud kirjed'
+);
+
+# Localisation of the texts for the various drop-down menus that are actually
+# stored in the database. If these exist, they override the texts from the
+# database.
+
+$LANG_commentcodes = array(
+    0   => 'On kommentaarid',
+    -1  => 'Pole kommentaare'
+);
+
+$LANG_commentmodes = array(
+    'flat'      => 'lihtne',
+    'nested'    => 'Üksteise sees',
+    'threaded'  => 'Lõimedena',
+    'nocomment' => 'pole kommentaare'
+);
+
+$LANG_cookiecodes = array(
+    0       => 'ära mäleta',
+    3600    => '1 tund',
+    7200    => '2 tundi',
+    10800   => '3 tundi',
+    28800   => '8 tundi',
+    86400   => '1 päev',
+    604800  => '1 nädal',
+    2678400 => '1 kuu'
+);
+
+$LANG_dateformats = array(
+    0   => 'Süsteemi seadistus'
+);
+
+$LANG_featurecodes = array(
+    0 => 'Pole pealugu',
+    1 => 'Pealugu'
+);
+
+$LANG_frontpagecodes = array(
+    0 => 'Ainult rubriigis',
+    1 => 'Avalehel ja rubriigis'
+);
+
+$LANG_postmodes = array(
+    'plaintext' => 'Puhas tekst',
+    'html'      => 'HTML kujundusega'
+);
+
+$LANG_sortcodes = array(
+    'ASC'  => 'Vanemad enne',
+    'DESC' => 'Uuemad enne'
+);
+
+$LANG_trackbackcodes = array(
+    0   => 'Trackback lubatud',
+    -1  => 'Trackback keelatud'
+);
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/farsi_utf-8.php 1.4.1.src/cpanel-glprivate/language/farsi_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/farsi_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/farsi_utf-8.php	2006-09-17 03:58:43.000000000 -0500
@@ -151,28 +151,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'تقويم رويدادها',
-    2 => 'متاسفم هيچ واقعه اي براي نمايش وجود ندارد',
-    3 => 'وقتيکه',
-    4 => 'كجا',
-    5 => 'توضيحات',
-    6 => 'اضافه كردن واقعه',
-    7 => 'واقعه نزديك‌',
-    8 => 'بوسيله اضافه كردن اين واقعه به تقوييتان شما ميتوانيد به سرعت وقايعي را كه علاقمند به ديدن آنها هستيد را بوسيله كليك رو "تقويم من"از قسمت توابع كاربران مشاهده نماييد ',
-    9 => 'اضافه كردن به تقويم من',
-    10 => 'حذف از تقويم من',
-    11 => "اضافه كردن رخدادي به تقويم  {$_USER['username']}'",
-    12 => 'رخداد',
-    13 => 'شروع‌ كردن‌',
-    14 => 'پايان',
-    15 => 'بازگشت به تقويم'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -334,7 +316,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -651,38 +666,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'واقعه نگار',
-    2 => 'خطا',
-    3 => 'عنوان واقعه',
-    4 => 'واقعه URL',
-    5 => 'روز شروع واقعه',
-    6 => 'روز پايان واقعه',
-    7 => 'محل واقعه',
-    8 => 'شرح واقعه',
-    9 => '(بايد شامل//:http)',
-    10 => 'شما بايد روزها/ساعتها و عنوان واقعه و شرح آن را وارد و تهيه كنيد',
-    11 => 'واقعه نگار',
-    12 => 'براي تغيير يا پاك كردن يك واقعه روي آن واقعه  در زير كليك كنيد. براي ساختن يك واقعه جديد روي واقعه جديد در بالا كليك كنيد  و براي كپي كردن يك واقعه موجود روي "‍C" كليك كنيد',
-    13 => 'عنوان واقعه',
-    14 => 'روز شروع',
-    15 => 'روز پايان',
-    16 => 'غير قابل دسترسي',
-    17 => "شما در حال تلاش براي ورود به قسمتي از وقايع هستيد كه اجازه دسترسي به آنها را نداريد. اين تلاش شما گزارش شد <a href=\"{$_CONF['site_admin_url']}/event.php\">بازگشت به صفحه مديريت وقايع</a>.",
-    18 => 'واقعه جديد',
-    19 => 'خانه رييس',
-    20 => 'ذخيره',
-    21 => 'لغو',
-    22 => 'پاك كردن',
-    23 => 'روز شروع شما اشكال دارد',
-    24 => 'روز پايان شما اشكال دارد',
-    25 => 'روز شروع  بعد از روز پايان است'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -773,7 +759,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -861,7 +849,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -891,53 +908,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'يكشنبه',
-    2 => 'دوشنبه',
-    3 => 'سه شنبه',
-    4 => 'چهار شنبه',
-    5 => 'پنج شنبه',
-    6 => 'جمعه',
-    7 => 'شنبه',
-    8 => 'افزودن واقعه',
-    9 => '%s واقعه',
-    10 => 'اتفاقات براي:',
-    11 => 'تقويم اصلي',
-    12 => 'تقويم من',
-    13 => 'دي',
-    14 => 'بهمن',
-    15 => 'اسفند',
-    16 => 'فروردين',
-    17 => 'ارديبهشت',
-    18 => 'خرداد',
-    19 => 'تير',
-    20 => 'مرداد',
-    21 => 'شهريور',
-    22 => 'مهر',
-    23 => 'آبان',
-    24 => 'آذر',
-    25 => 'بازگشت به',
-    26 => 'تمام روزها',
-    27 => 'هفته',
-    28 => 'تقويم خصوصي براي',
-    29 => 'تقويم عمومي',
-    30 => 'پاك كردن واقعه',
-    31 => 'افزودن',
-    32 => 'واقعه',
-    33 => 'روز',
-    34 => 'زمان',
-    35 => 'افزودن سريع',
-    36 => 'ثبت كردن',
-    37 => 'متاسفم/ قابليت تقويم شخصي در اين سايت محدود شده',
-    38 => 'ويرايشگر واقعه شخصي',
-    39 => 'روز',
-    40 => 'هفته',
-    41 => 'ماه'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1061,7 +1031,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1142,7 +1114,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1184,7 +1165,6 @@
     'none' => 'خالي',
     'accessdenied' => 'غير قابل دسترسي ',
     'storydenialmsg' => "شما توانايي دسترسي به مقاله اين گروه را نداريذ. چون شما عضوي از گروه {$_CONF['site_name']}نيستيد.  لطفا <a href=users.php?mode=new> عضو شويد</a> of {$_CONF['site_name']} تا دسترسي كامل داشته باشيد",
-    'eventdenialmsg' => "شما توانايي دسترسي به اين واقعه را نداريد . چون شما عضوي از {$_CONF['site_name']} نيستيد.  لطفا <a href=users.php?mode=new> عضو شويد</a> of {$_CONF['site_name']}تا دسترسي كامل داشته باشيد",
     'nogroupsforcoregroup' => 'اين گروه به بقيه گروهها وابسته نيست',
     'grouphasnorights' => 'اين گروه هيچگونه از ويژگي هاي دسترسي ادمين را ندارد',
     'newgroup' => 'گروه جديد',
@@ -1370,7 +1350,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1410,6 +1391,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'دي',
+    2 => 'بهمن',
+    3 => 'اسفند',
+    4 => 'فروردين',
+    5 => 'ارديبهشت',
+    6 => 'خرداد',
+    7 => 'تير',
+    8 => 'مرداد',
+    9 => 'شهريور',
+    10 => 'مهر',
+    11 => 'آبان',
+    12 => 'آذر'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'يكشنبه',
+    2 => 'دوشنبه',
+    3 => 'سه شنبه',
+    4 => 'چهار شنبه',
+    5 => 'پنج شنبه',
+    6 => 'جمعه',
+    7 => 'شنبه'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1420,8 +1432,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1430,9 +1444,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/finnish.php 1.4.1.src/cpanel-glprivate/language/finnish.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/finnish.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/finnish.php	2006-09-17 03:58:43.000000000 -0500
@@ -164,28 +164,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Tapahtumakalenteri',
-    2 => 'Ei nytettvi tapahtumia.',
-    3 => 'Milloin',
-    4 => 'Miss',
-    5 => 'Kuvaus',
-    6 => 'Lis tapahtuma',
-    7 => 'Tulevat tapahtumat',
-    8 => 'Lismll tapahtuman kalenteriisi voit nopeasti nhd itsesi kiinnostavat tapahtumat valitsemalla "Oma kalenteri" kyttjn toiminnoista.',
-    9 => 'Lis omaan kalenteriin',
-    10 => 'Poista omasta kalenterista',
-    11 => "Lisn tapahtuman {$_USER['username']}:n kalenteriin",
-    12 => 'Tapahtuma',
-    13 => 'Alkaa',
-    14 => 'Loppuu',
-    15 => 'Paluu kalenteriin'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -347,7 +329,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -664,38 +679,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Tapahtumien muokkain',
-    2 => 'Error',
-    3 => 'Tapahtuman otsikko',
-    4 => 'Tapahtuman URL',
-    5 => 'Tapahtuman aloituspiv',
-    6 => 'Tapahtuman loppumispiv',
-    7 => 'Tapahtuman sijainti',
-    8 => 'Tapahtuman kuvaus',
-    9 => '(sisllyt http://)',
-    10 => 'Pivyksen/ajan, kuvauksen ja sijainnin syttminen on pakollista!',
-    11 => 'Tapahtumien hallinta',
-    12 => 'Muokataksesi tai poistaaksesi tapahtuman, valitse tapahtuma alapuolelta. Luodaksesi uuden tapahtuman, klikkaa uusi tapahtuma ylpuolelta. Klikkaa [C] luodaksesi kopion olemassaolevasta tapahtumasta.',
-    13 => 'Tapahtuman otsikko',
-    14 => 'Alkamispiv',
-    15 => 'Loppumispiv',
-    16 => 'Psy kielletty',
-    17 => "Yritt pst tapahtumaan johon sinulla ei ole oikeuksia. Yritys on kirjattu lokitiedostoon. <a href=\"{$_CONF['site_admin_url']}/event.php\">Siirry takaisin tapahtuman hallinnan sivustolle</a>.",
-    18 => 'Uusi tapahtuma',
-    19 => 'Yllpidon etusivu',
-    20 => 'tallenna',
-    21 => 'peruuta',
-    22 => 'poista',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -786,7 +772,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -874,7 +862,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -904,53 +921,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Sunnuntai',
-    2 => 'Maanantai',
-    3 => 'Tiistai',
-    4 => 'Keskiviikko',
-    5 => 'Torstai',
-    6 => 'Perjantai',
-    7 => 'Lauantai',
-    8 => 'Lis tapahtuma',
-    9 => '%s tapahtuma',
-    10 => 'Tapahtumat',
-    11 => 'pkalenteriin',
-    12 => 'omaan kalenteriin',
-    13 => 'Tammikuu',
-    14 => 'Helmikuu',
-    15 => 'Maaliskuu',
-    16 => 'Huhtikuu',
-    17 => 'Toukokuu',
-    18 => 'Keskuu',
-    19 => 'Heinkuu',
-    20 => 'Elokuu',
-    21 => 'Syyskuu',
-    22 => 'Lokakuu',
-    23 => 'Marraskuu',
-    24 => 'Joulukuu',
-    25 => 'Paluu ',
-    26 => 'Koko piv',
-    27 => 'Viikko',
-    28 => 'Henkilkohtainen kalenteri kyttjlle',
-    29 => 'Julkinen kalenteri',
-    30 => 'poista tapahtuma',
-    31 => 'Lis',
-    32 => 'Tapahtuma',
-    33 => 'Piv',
-    34 => 'Aika',
-    35 => 'Pikalisys',
-    36 => 'Lhet',
-    37 => 'Henkilkohtaiset kalenterit eivt ole sallittuja tll sivustolla',
-    38 => 'Henkilkohtaisten tapahtumien muokkain',
-    39 => 'Piv',
-    40 => 'Viikko',
-    41 => 'Kuukausi'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1074,7 +1044,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1155,7 +1127,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1197,7 +1178,6 @@
     'none' => 'Ei yhtn',
     'accessdenied' => 'Psy kielletty',
     'storydenialmsg' => "Sinulla ei ole oikeuksia katsoa artikkelia. Oletko varmasti jsenen sivustolla {$_CONF['site_name']}? <a href=users.php?mode=new>Rekisteridy jseneksi</a> sivustolle {$_CONF['site_name']} saadaksesi tydet jsenyyden suomat oikeudet!",
-    'eventdenialmsg' => "Sinulla ei ole oikeuksia katsoa tt tapahtumaa. Oletko varmasti jsenen sivustolla {$_CONF['site_name']}? <a href=users.php?mode=new>Rekisteridy jseneksi</a> sivustolle {$_CONF['site_name']} saadaksesi tydet jsenyyden suomat oikeudet!",
     'nogroupsforcoregroup' => 'Ryhm ei kuulu mihinkn muuhun ryhmn',
     'grouphasnorights' => 'Ryhmll ei ole hallinnointi oikeuksia sivustolla.',
     'newgroup' => 'Uusi ryhm',
@@ -1383,7 +1363,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1423,6 +1404,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Tammikuu',
+    2 => 'Helmikuu',
+    3 => 'Maaliskuu',
+    4 => 'Huhtikuu',
+    5 => 'Toukokuu',
+    6 => 'Keskuu',
+    7 => 'Heinkuu',
+    8 => 'Elokuu',
+    9 => 'Syyskuu',
+    10 => 'Lokakuu',
+    11 => 'Marraskuu',
+    12 => 'Joulukuu'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Sunnuntai',
+    2 => 'Maanantai',
+    3 => 'Tiistai',
+    4 => 'Keskiviikko',
+    5 => 'Torstai',
+    6 => 'Perjantai',
+    7 => 'Lauantai'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1433,8 +1445,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1443,9 +1457,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/finnish_utf-8.php 1.4.1.src/cpanel-glprivate/language/finnish_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/finnish_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/finnish_utf-8.php	2006-09-17 03:58:43.000000000 -0500
@@ -166,28 +166,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Tapahtumakalenteri',
-    2 => 'Ei näytettäviä tapahtumia.',
-    3 => 'Milloin',
-    4 => 'Missä',
-    5 => 'Kuvaus',
-    6 => 'Lisää tapahtuma',
-    7 => 'Tulevat tapahtumat',
-    8 => 'Lisäämällä tapahtuman kalenteriisi voit nopeasti nähdä itseäsi kiinnostavat tapahtumat valitsemalla "Oma kalenteri" käyttäjän toiminnoista.',
-    9 => 'Lisää omaan kalenteriin',
-    10 => 'Poista omasta kalenterista',
-    11 => "Lisään tapahtuman {$_USER['username']}:n kalenteriin",
-    12 => 'Tapahtuma',
-    13 => 'Alkaa',
-    14 => 'Loppuu',
-    15 => 'Paluu kalenteriin'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -349,7 +331,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -666,38 +681,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Tapahtumien muokkain',
-    2 => 'Error',
-    3 => 'Tapahtuman otsikko',
-    4 => 'Tapahtuman URL',
-    5 => 'Tapahtuman aloituspäivä',
-    6 => 'Tapahtuman loppumispäivä',
-    7 => 'Tapahtuman sijainti',
-    8 => 'Tapahtuman kuvaus',
-    9 => '(sisällytä http://)',
-    10 => 'Päiväyksen/ajan, kuvauksen ja sijainnin syöttäminen on pakollista!',
-    11 => 'Tapahtumien hallinta',
-    12 => 'Muokataksesi tai poistaaksesi tapahtuman, valitse tapahtuma alapuolelta. Luodaksesi uuden tapahtuman, klikkaa uusi tapahtuma yläpuolelta. Klikkaa [C] luodaksesi kopion olemassaolevasta tapahtumasta.',
-    13 => 'Tapahtuman otsikko',
-    14 => 'Alkamispäivä',
-    15 => 'Loppumispäivä',
-    16 => 'Pääsy kielletty',
-    17 => "Yrität päästä tapahtumaan johon sinulla ei ole oikeuksia. Yritys on kirjattu lokitiedostoon. <a href=\"{$_CONF['site_admin_url']}/event.php\">Siirry takaisin tapahtuman hallinnan sivustolle</a>.",
-    18 => 'Uusi tapahtuma',
-    19 => 'Ylläpidon etusivu',
-    20 => 'tallenna',
-    21 => 'peruuta',
-    22 => 'poista',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -788,7 +774,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -876,7 +864,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -906,53 +923,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Sunnuntai',
-    2 => 'Maanantai',
-    3 => 'Tiistai',
-    4 => 'Keskiviikko',
-    5 => 'Torstai',
-    6 => 'Perjantai',
-    7 => 'Lauantai',
-    8 => 'Lisää tapahtuma',
-    9 => '%s tapahtuma',
-    10 => 'Tapahtumat',
-    11 => 'pääkalenteriin',
-    12 => 'omaan kalenteriin',
-    13 => 'Tammikuu',
-    14 => 'Helmikuu',
-    15 => 'Maaliskuu',
-    16 => 'Huhtikuu',
-    17 => 'Toukokuu',
-    18 => 'Kesäkuu',
-    19 => 'Heinäkuu',
-    20 => 'Elokuu',
-    21 => 'Syyskuu',
-    22 => 'Lokakuu',
-    23 => 'Marraskuu',
-    24 => 'Joulukuu',
-    25 => 'Paluu ',
-    26 => 'Koko päivä',
-    27 => 'Viikko',
-    28 => 'Henkilökohtainen kalenteri käyttäjälle',
-    29 => 'Julkinen kalenteri',
-    30 => 'poista tapahtuma',
-    31 => 'Lisää',
-    32 => 'Tapahtuma',
-    33 => 'Päivä',
-    34 => 'Aika',
-    35 => 'Pikalisäys',
-    36 => 'Lähetä',
-    37 => 'Henkilökohtaiset kalenterit eivät ole sallittuja tällä sivustolla',
-    38 => 'Henkilökohtaisten tapahtumien muokkain',
-    39 => 'Päivä',
-    40 => 'Viikko',
-    41 => 'Kuukausi'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1076,7 +1046,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1157,7 +1129,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1199,7 +1180,6 @@
     'none' => 'Ei yhtään',
     'accessdenied' => 'Pääsy kielletty',
     'storydenialmsg' => "Sinulla ei ole oikeuksia katsoa artikkelia. Oletko varmasti jäsenenä sivustolla {$_CONF['site_name']}? <a href=users.php?mode=new>Rekisteröidy jäseneksi</a> sivustolle {$_CONF['site_name']} saadaksesi täydet jäsenyyden suomat oikeudet!",
-    'eventdenialmsg' => "Sinulla ei ole oikeuksia katsoa tätä tapahtumaa. Oletko varmasti jäsenenä sivustolla {$_CONF['site_name']}? <a href=users.php?mode=new>Rekisteröidy jäseneksi</a> sivustolle {$_CONF['site_name']} saadaksesi täydet jäsenyyden suomat oikeudet!",
     'nogroupsforcoregroup' => 'Ryhmä ei kuulu mihinkään muuhun ryhmään',
     'grouphasnorights' => 'Ryhmällä ei ole hallinnointi oikeuksia sivustolla.',
     'newgroup' => 'Uusi ryhmä',
@@ -1385,7 +1365,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1425,6 +1406,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Tammikuu',
+    2 => 'Helmikuu',
+    3 => 'Maaliskuu',
+    4 => 'Huhtikuu',
+    5 => 'Toukokuu',
+    6 => 'Kesäkuu',
+    7 => 'Heinäkuu',
+    8 => 'Elokuu',
+    9 => 'Syyskuu',
+    10 => 'Lokakuu',
+    11 => 'Marraskuu',
+    12 => 'Joulukuu'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Sunnuntai',
+    2 => 'Maanantai',
+    3 => 'Tiistai',
+    4 => 'Keskiviikko',
+    5 => 'Torstai',
+    6 => 'Perjantai',
+    7 => 'Lauantai'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1435,8 +1447,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1445,9 +1459,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/french_canada.php 1.4.1.src/cpanel-glprivate/language/french_canada.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/french_canada.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/french_canada.php	2006-09-17 03:58:43.000000000 -0500
@@ -166,28 +166,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendrier des activit&eacute;s',
-    2 => 'D&eacute;sol&eacute; il n\'y a pas d\'activit&eacute; &agrave; afficher.',
-    3 => 'Quand',
-    4 => 'O&ugrave;',
-    5 => 'Description',
-    6 => 'Ajouter une activit&eacute;',
-    7 => 'Prochaine activit&eacute;',
-    8 => 'En ajoutant cette activit&eacute; au calendrier vous pouvez visionnez rapidement les activit&eacute;s qui vous int&eacute;ressent en cliquant sur &laquo;Mon Calendrier&raquo; dans le cadre &laquo;Fonctions membres&raquo;.',
-    9 => 'Ajouter &agrave; mon calendrier',
-    10 => 'Retirer de mon calendrier',
-    11 => "Ajouter l'activit&eacute; au clendrier de {$_USER['username']}",
-    12 => 'Activit&eacute;',
-    13 => 'Commence',
-    14 => 'Fini',
-    15 => 'Retour au calendrier'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -349,7 +331,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -666,38 +681,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editeur d\'activit&eacute;',
-    2 => 'CNT 2',
-    3 => 'Titre',
-    4 => 'URL',
-    5 => 'D&eacute;but',
-    6 => 'Fin',
-    7 => 'Localisation',
-    8 => 'Description',
-    9 => '(inclure http://)',
-    10 => 'Vous devez s&eacute;lectionner une date, une heure, une description et une localisation!',
-    11 => 'Contr&ocirc;leur d\'activit&eacute;',
-    12 => 'Pour supprimer ou modifier une activit&eacute;, cliquez sur le bouton ci-dessous. Pour cr&eacute;er une nouvelle activit&eacute; cliquez sur &laquo;Nouvelle activit&eacute;&raquo;.',
-    13 => 'titre',
-    14 => 'd&eacute;but',
-    15 => 'fin',
-    16 => 'Acc&egrave;s interdit',
-    17 => "vous essayez d'acc&eacute;der &agrave; une activit&eacute; auquel vous n'avez pas les droits. Cette tentative a &eacute;t&eacute; enregistr&eacute;e. Retournez &agrave; <a href=\'{$_CONF['site_admin_url']}/event.php\'>la page d'aministration des activit&eacute;s</a>.",
-    18 => 'Nouvelle activit&eacute;',
-    19 => 'Page de l\'administrateur',
-    20 => 'enregistrer',
-    21 => 'annuler',
-    22 => 'supprimer',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -788,7 +774,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -876,7 +864,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -906,53 +923,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Dimanche',
-    2 => 'Lundi',
-    3 => 'Mardi',
-    4 => 'Mercredi',
-    5 => 'Jeudi',
-    6 => 'Vendredi',
-    7 => 'Samedi',
-    8 => 'Ajouter une activit&eacute;',
-    9 => 'activit&eacute; geeklog',
-    10 => 'Activit&eacute;s pour',
-    11 => 'Calendrier g&eacute;n&eacute;ral',
-    12 => 'Calendrier personnel',
-    13 => 'Janvier',
-    14 => 'F&eacute;vrier',
-    15 => 'Mars',
-    16 => 'Avril',
-    17 => 'Mai',
-    18 => 'Juin',
-    19 => 'Juillet',
-    20 => 'Ao&ucirct',
-    21 => 'Septembre',
-    22 => 'Octobre',
-    23 => 'Novembre',
-    24 => 'D&eacute;cembre',
-    25 => 'Retour &agrave; ',
-    26 => 'Tous les jours',
-    27 => 'Semaine',
-    28 => 'Calendrier personnel de',
-    29 => 'Calendrier public',
-    30 => 'Supprimer l\'activit&eacute;',
-    31 => 'Ajouter',
-    32 => 'Activit&eacute;',
-    33 => 'Date',
-    34 => 'Heure',
-    35 => 'Ajout rapide',
-    36 => 'Envoyer',
-    37 => 'D&eacute;sol&eacute;, le calendrier personnel n\'est pas activ&eacute;',
-    38 => 'Editeur d\'activit&eacute;s personnelles',
-    39 => 'Jour',
-    40 => 'Semaine',
-    41 => 'Mois'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1076,7 +1046,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1157,7 +1129,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1199,7 +1180,6 @@
     'none' => 'Rien',
     'accessdenied' => 'Acc&egrave;s interdit',
     'storydenialmsg' => "vous n'avez pas le droit de lire cette article. Peut-tre que vous n'tes pas membre de {$_CONF['site_name']}.  Vous pouvez <a href=users.php?mode=new>vous enregistrer</a> sur {$_CONF['site_name']} pour obtenir un compte membre!",
-    'eventdenialmsg' => "vous n'avez pas acc&egrave;s &agrave; cet &eacute;v&egrave;nement. Peut-tre que vous n'tes pas membre de {$_CONF['site_name']}.  Vous pouvez <a href=users.php?mode=new>vous enregistrer</a> sur  pour obtenir un compte membre!",
     'nogroupsforcoregroup' => 'Le groupe n\'inclue aucun autre groupe',
     'grouphasnorights' => 'Le groupe n\'a pas acc&egrave;s aux fonctions administratives',
     'newgroup' => 'Nouveau Groupe',
@@ -1385,7 +1365,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1425,6 +1406,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Janvier',
+    2 => 'F&eacute;vrier',
+    3 => 'Mars',
+    4 => 'Avril',
+    5 => 'Mai',
+    6 => 'Juin',
+    7 => 'Juillet',
+    8 => 'Ao&ucirct',
+    9 => 'Septembre',
+    10 => 'Octobre',
+    11 => 'Novembre',
+    12 => 'D&eacute;cembre'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Dimanche',
+    2 => 'Lundi',
+    3 => 'Mardi',
+    4 => 'Mercredi',
+    5 => 'Jeudi',
+    6 => 'Vendredi',
+    7 => 'Samedi'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1435,8 +1447,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1445,9 +1459,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/french_canada_utf-8.php 1.4.1.src/cpanel-glprivate/language/french_canada_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/french_canada_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/french_canada_utf-8.php	2006-09-17 03:58:43.000000000 -0500
@@ -166,28 +166,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendrier des activit&eacute;s',
-    2 => 'D&eacute;sol&eacute; il n\'y a pas d\'activit&eacute; &agrave; afficher.',
-    3 => 'Quand',
-    4 => 'O&ugrave;',
-    5 => 'Description',
-    6 => 'Ajouter une activit&eacute;',
-    7 => 'Prochaine activit&eacute;',
-    8 => 'En ajoutant cette activit&eacute; au calendrier vous pouvez visionnez rapidement les activit&eacute;s qui vous int&eacute;ressent en cliquant sur &laquo;Mon Calendrier&raquo; dans le cadre &laquo;Fonctions membres&raquo;.',
-    9 => 'Ajouter &agrave; mon calendrier',
-    10 => 'Retirer de mon calendrier',
-    11 => "Ajouter l'activit&eacute; au clendrier de {$_USER['username']}",
-    12 => 'Activit&eacute;',
-    13 => 'Commence',
-    14 => 'Fini',
-    15 => 'Retour au calendrier'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -349,7 +331,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -666,38 +681,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editeur d\'activit&eacute;',
-    2 => 'CNT 2',
-    3 => 'Titre',
-    4 => 'URL',
-    5 => 'D&eacute;but',
-    6 => 'Fin',
-    7 => 'Localisation',
-    8 => 'Description',
-    9 => '(inclure http://)',
-    10 => 'Vous devez s&eacute;lectionner une date, une heure, une description et une localisation!',
-    11 => 'Contr&ocirc;leur d\'activit&eacute;',
-    12 => 'Pour supprimer ou modifier une activit&eacute;, cliquez sur le bouton ci-dessous. Pour cr&eacute;er une nouvelle activit&eacute; cliquez sur &laquo;Nouvelle activit&eacute;&raquo;.',
-    13 => 'titre',
-    14 => 'd&eacute;but',
-    15 => 'fin',
-    16 => 'Acc&egrave;s interdit',
-    17 => "vous essayez d'acc&eacute;der &agrave; une activit&eacute; auquel vous n'avez pas les droits. Cette tentative a &eacute;t&eacute; enregistr&eacute;e. Retournez &agrave; <a href=\'{$_CONF['site_admin_url']}/event.php\'>la page d'aministration des activit&eacute;s</a>.",
-    18 => 'Nouvelle activit&eacute;',
-    19 => 'Page de l\'administrateur',
-    20 => 'enregistrer',
-    21 => 'annuler',
-    22 => 'supprimer',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -788,7 +774,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -876,7 +864,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -906,53 +923,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Dimanche',
-    2 => 'Lundi',
-    3 => 'Mardi',
-    4 => 'Mercredi',
-    5 => 'Jeudi',
-    6 => 'Vendredi',
-    7 => 'Samedi',
-    8 => 'Ajouter une activit&eacute;',
-    9 => 'activit&eacute; geeklog',
-    10 => 'Activit&eacute;s pour',
-    11 => 'Calendrier g&eacute;n&eacute;ral',
-    12 => 'Calendrier personnel',
-    13 => 'Janvier',
-    14 => 'F&eacute;vrier',
-    15 => 'Mars',
-    16 => 'Avril',
-    17 => 'Mai',
-    18 => 'Juin',
-    19 => 'Juillet',
-    20 => 'Ao&ucirct',
-    21 => 'Septembre',
-    22 => 'Octobre',
-    23 => 'Novembre',
-    24 => 'D&eacute;cembre',
-    25 => 'Retour &agrave; ',
-    26 => 'Tous les jours',
-    27 => 'Semaine',
-    28 => 'Calendrier personnel de',
-    29 => 'Calendrier public',
-    30 => 'Supprimer l\'activit&eacute;',
-    31 => 'Ajouter',
-    32 => 'Activit&eacute;',
-    33 => 'Date',
-    34 => 'Heure',
-    35 => 'Ajout rapide',
-    36 => 'Envoyer',
-    37 => 'D&eacute;sol&eacute;, le calendrier personnel n\'est pas activ&eacute;',
-    38 => 'Editeur d\'activit&eacute;s personnelles',
-    39 => 'Jour',
-    40 => 'Semaine',
-    41 => 'Mois'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1076,7 +1046,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1157,7 +1129,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1199,7 +1180,6 @@
     'none' => 'Rien',
     'accessdenied' => 'Acc&egrave;s interdit',
     'storydenialmsg' => "vous n'avez pas le droit de lire cette article. Peut-être que vous n'êtes pas membre de {$_CONF['site_name']}.  Vous pouvez <a href=users.php?mode=new>vous enregistrer</a> sur {$_CONF['site_name']} pour obtenir un compte membre!",
-    'eventdenialmsg' => "vous n'avez pas acc&egrave;s &agrave; cet &eacute;v&egrave;nement. Peut-être que vous n'êtes pas membre de {$_CONF['site_name']}.  Vous pouvez <a href=users.php?mode=new>vous enregistrer</a> sur  pour obtenir un compte membre!",
     'nogroupsforcoregroup' => 'Le groupe n\'inclue aucun autre groupe',
     'grouphasnorights' => 'Le groupe n\'a pas acc&egrave;s aux fonctions administratives',
     'newgroup' => 'Nouveau Groupe',
@@ -1385,7 +1365,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1425,6 +1406,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Janvier',
+    2 => 'F&eacute;vrier',
+    3 => 'Mars',
+    4 => 'Avril',
+    5 => 'Mai',
+    6 => 'Juin',
+    7 => 'Juillet',
+    8 => 'Ao&ucirct',
+    9 => 'Septembre',
+    10 => 'Octobre',
+    11 => 'Novembre',
+    12 => 'D&eacute;cembre'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Dimanche',
+    2 => 'Lundi',
+    3 => 'Mardi',
+    4 => 'Mercredi',
+    5 => 'Jeudi',
+    6 => 'Vendredi',
+    7 => 'Samedi'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1435,8 +1447,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1445,9 +1459,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/french_france.php 1.4.1.src/cpanel-glprivate/language/french_france.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/french_france.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/french_france.php	2006-09-17 03:58:43.000000000 -0500
@@ -162,28 +162,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendrier des vnements',
-    2 => 'Dsol il n\'ya pas d\'vnement  afficher.',
-    3 => 'Quand',
-    4 => 'O',
-    5 => 'Description',
-    6 => 'Ajouter un vnement',
-    7 => 'Prochain vnements',
-    8 => 'En ajoutant cet vnement au calendrier vous pouvez visionnez rapidement les vnements qui vous intressent en cliquant sur "Mon Calendrier" dans le cadre Fonctions utilisateurs.',
-    9 => 'Ajouter  mon calendrier',
-    10 => 'Retirer de mon calendrier',
-    11 => "Ajouter l'vnement au clendrier de {$_USER['username']}",
-    12 => 'Evnement',
-    13 => 'Commence',
-    14 => 'Fini',
-    15 => 'Retour au calendrier'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -345,7 +327,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -662,38 +677,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editeur d\'vnement',
-    2 => 'CNT 2',
-    3 => 'titre',
-    4 => 'URL',
-    5 => 'dbut',
-    6 => 'fin',
-    7 => 'localisation',
-    8 => 'description',
-    9 => '(http:// comprid)',
-    10 => 'vous devez slectionner une date, une heure, une description et une localisation!',
-    11 => 'Contrleur d\'vnement',
-    12 => 'Pour supprimer ou modifier un vnement, cliquez sur le bouton ci-dessous. Pour crer un nouvel vnement cliquez sur nouvel vnement.',
-    13 => 'titre',
-    14 => 'dbut',
-    15 => 'fin',
-    16 => 'Accs interdit',
-    17 => "vous essayez d'accder  un vnement auquel vous n'avez pas les droits. Cette tentative a t enregistre. Retournez  <a href=\"{$_CONF['site_admin_url']}/event.php\">la page d'aministration des vnements</a>.",
-    18 => 'Nouvel Evnement',
-    19 => 'Page de l\'administrateur',
-    20 => 'enregistrer',
-    21 => 'annuler',
-    22 => 'supprimer',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -784,7 +770,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -872,7 +860,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -902,53 +919,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Dimanche',
-    2 => 'Lundi',
-    3 => 'Mardi',
-    4 => 'Mercredi',
-    5 => 'Jeudi',
-    6 => 'Vendredi',
-    7 => 'Samedi',
-    8 => 'Ajouter un vnement',
-    9 => 'vnement geeklog',
-    10 => 'Evnements pour',
-    11 => 'Calendrier gnral',
-    12 => 'Calendrier personnel',
-    13 => 'Janvier',
-    14 => 'Fvrier',
-    15 => 'Mars',
-    16 => 'Avril',
-    17 => 'Mai',
-    18 => 'Juin',
-    19 => 'Juillet',
-    20 => 'Aot',
-    21 => 'Septembre',
-    22 => 'Octobre',
-    23 => 'Novembre',
-    24 => 'Dcembre',
-    25 => 'Retour  ',
-    26 => 'tous les jours',
-    27 => 'semaine',
-    28 => 'Calendrier personnel de ',
-    29 => 'Calendrier public',
-    30 => 'Supprimer l\'vnement',
-    31 => 'Ajouter',
-    32 => 'Evnement',
-    33 => 'Date',
-    34 => 'Heure',
-    35 => 'Ajout rapide',
-    36 => 'Envoyer',
-    37 => 'Dsol, le calendrier personnel n\'est pas activ',
-    38 => 'Editeur d\'vnements personnels',
-    39 => 'Jour',
-    40 => 'Semaine',
-    41 => 'Mois'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1072,7 +1042,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1153,7 +1125,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1195,7 +1176,6 @@
     'none' => 'Rien',
     'accessdenied' => 'Accs interdit',
     'storydenialmsg' => 'vous n\'avez pas le droit de lire cette article. Peut-tre que vous n\'tes pas membre de .  Vous pouvez <a href=users.php?mode=new>vous enregistrer</a> sur  pour obtenir un compte utilisateur!',
-    'eventdenialmsg' => 'vous n\'avez pas accs  cet vnement. Peut-tre que vous n\'tes pas membre de .  Vous pouvez <a href=users.php?mode=new>vous enregistrer</a> sur  pour obtenir un compte utilisateur!',
     'nogroupsforcoregroup' => 'Le groupe n\'inclue aucun autre groupe',
     'grouphasnorights' => 'Le groupe n\'a pas accs aux fonctiones administratives',
     'newgroup' => 'Nouveau Groupe',
@@ -1381,7 +1361,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1421,6 +1402,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Janvier',
+    2 => 'Fvrier',
+    3 => 'Mars',
+    4 => 'Avril',
+    5 => 'Mai',
+    6 => 'Juin',
+    7 => 'Juillet',
+    8 => 'Aot',
+    9 => 'Septembre',
+    10 => 'Octobre',
+    11 => 'Novembre',
+    12 => 'Dcembre'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Dimanche',
+    2 => 'Lundi',
+    3 => 'Mardi',
+    4 => 'Mercredi',
+    5 => 'Jeudi',
+    6 => 'Vendredi',
+    7 => 'Samedi'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1431,8 +1443,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1441,9 +1455,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/french_france_utf-8.php 1.4.1.src/cpanel-glprivate/language/french_france_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/french_france_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/french_france_utf-8.php	2006-09-17 03:58:43.000000000 -0500
@@ -162,28 +162,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendrier des événements',
-    2 => 'Désolé il n\'ya pas d\'événement à afficher.',
-    3 => 'Quand',
-    4 => 'Où',
-    5 => 'Description',
-    6 => 'Ajouter un événement',
-    7 => 'Prochain événements',
-    8 => 'En ajoutant cet événement au calendrier vous pouvez visionnez rapidement les événements qui vous intéressent en cliquant sur "Mon Calendrier" dans le cadre Fonctions utilisateurs.',
-    9 => 'Ajouter à mon calendrier',
-    10 => 'Retirer de mon calendrier',
-    11 => "Ajouter l'événement au clendrier de {$_USER['username']}",
-    12 => 'Evénement',
-    13 => 'Commence',
-    14 => 'Fini',
-    15 => 'Retour au calendrier'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -345,7 +327,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -662,38 +677,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editeur d\'événement',
-    2 => 'CNT 2',
-    3 => 'titre',
-    4 => 'URL',
-    5 => 'début',
-    6 => 'fin',
-    7 => 'localisation',
-    8 => 'description',
-    9 => '(http:// comprid)',
-    10 => 'vous devez sélectionner une date, une heure, une description et une localisation!',
-    11 => 'Contrôleur d\'événement',
-    12 => 'Pour supprimer ou modifier un événement, cliquez sur le bouton ci-dessous. Pour créer un nouvel événement cliquez sur nouvel événement.',
-    13 => 'titre',
-    14 => 'début',
-    15 => 'fin',
-    16 => 'Accès interdit',
-    17 => "vous essayez d'accéder à un événement auquel vous n'avez pas les droits. Cette tentative a été enregistrée. Retournez à <a href=\"{$_CONF['site_admin_url']}/event.php\">la page d'aministration des événements</a>.",
-    18 => 'Nouvel Evénement',
-    19 => 'Page de l\'administrateur',
-    20 => 'enregistrer',
-    21 => 'annuler',
-    22 => 'supprimer',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -784,7 +770,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -872,7 +860,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -902,53 +919,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Dimanche',
-    2 => 'Lundi',
-    3 => 'Mardi',
-    4 => 'Mercredi',
-    5 => 'Jeudi',
-    6 => 'Vendredi',
-    7 => 'Samedi',
-    8 => 'Ajouter un événement',
-    9 => 'événement geeklog',
-    10 => 'Evénements pour',
-    11 => 'Calendrier général',
-    12 => 'Calendrier personnel',
-    13 => 'Janvier',
-    14 => 'Février',
-    15 => 'Mars',
-    16 => 'Avril',
-    17 => 'Mai',
-    18 => 'Juin',
-    19 => 'Juillet',
-    20 => 'Août',
-    21 => 'Septembre',
-    22 => 'Octobre',
-    23 => 'Novembre',
-    24 => 'Décembre',
-    25 => 'Retour à ',
-    26 => 'tous les jours',
-    27 => 'semaine',
-    28 => 'Calendrier personnel de ',
-    29 => 'Calendrier public',
-    30 => 'Supprimer l\'événement',
-    31 => 'Ajouter',
-    32 => 'Evénement',
-    33 => 'Date',
-    34 => 'Heure',
-    35 => 'Ajout rapide',
-    36 => 'Envoyer',
-    37 => 'Désolé, le calendrier personnel n\'est pas activé',
-    38 => 'Editeur d\'événements personnels',
-    39 => 'Jour',
-    40 => 'Semaine',
-    41 => 'Mois'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1072,7 +1042,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1153,7 +1125,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1195,7 +1176,6 @@
     'none' => 'Rien',
     'accessdenied' => 'Accès interdit',
     'storydenialmsg' => 'vous n\'avez pas le droit de lire cette article. Peut-être que vous n\'êtes pas membre de .  Vous pouvez <a href=users.php?mode=new>vous enregistrer</a> sur  pour obtenir un compte utilisateur!',
-    'eventdenialmsg' => 'vous n\'avez pas accès à cet évènement. Peut-être que vous n\'êtes pas membre de .  Vous pouvez <a href=users.php?mode=new>vous enregistrer</a> sur  pour obtenir un compte utilisateur!',
     'nogroupsforcoregroup' => 'Le groupe n\'inclue aucun autre groupe',
     'grouphasnorights' => 'Le groupe n\'a pas accès aux fonctiones administratives',
     'newgroup' => 'Nouveau Groupe',
@@ -1381,7 +1361,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1421,6 +1402,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Janvier',
+    2 => 'Février',
+    3 => 'Mars',
+    4 => 'Avril',
+    5 => 'Mai',
+    6 => 'Juin',
+    7 => 'Juillet',
+    8 => 'Août',
+    9 => 'Septembre',
+    10 => 'Octobre',
+    11 => 'Novembre',
+    12 => 'Décembre'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Dimanche',
+    2 => 'Lundi',
+    3 => 'Mardi',
+    4 => 'Mercredi',
+    5 => 'Jeudi',
+    6 => 'Vendredi',
+    7 => 'Samedi'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1431,8 +1443,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1441,9 +1455,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/german_formal.php 1.4.1.src/cpanel-glprivate/language/german_formal.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/german_formal.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/german_formal.php	2006-12-16 14:47:34.000000000 -0600
@@ -46,7 +46,7 @@
 
 $LANG01 = array(
     1 => 'Beitrag von:',
-    2 => '(mehr)',
+    2 => 'Weiter',
     3 => 'Kommentar(e)',
     4 => 'ndern',
     5 => 'Umfrage',
@@ -92,7 +92,7 @@
     45 => 'MySQL Fehlernummer',
     46 => 'MySQL Fehlermeldung',
     47 => 'Anmelden',
-    48 => 'Userprofil ndern',
+    48 => 'Ihr Profil',
     49 => 'Einstellungen',
     50 => 'Fehler im SQL-Befehl',
     51 => 'Hilfe',
@@ -167,28 +167,10 @@
     120 => 'Permalink',
     121 => 'Kommentare (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'Alle HTML-Tags sind erlaubt'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Terminkalender',
-    2 => 'Es gibt keine Termine anzuzeigen.',
-    3 => 'Wann',
-    4 => 'Wo',
-    5 => 'Beschreibung',
-    6 => 'Termin hinzufgen',
-    7 => 'Anstehende Termine',
-    8 => 'Wenn Sie diesen Termin zu Ihrem Kalender hinzufgen, knnen Sie  schneller einen berblick ber die Termine verschaffen, die Sie interessieren, indem Sie einfach auf "Mein Kalender" klicken.',
-    9 => 'Zu Meinem Kalender hinzufgen',
-    10 => 'Aus Meinem Kalender entfernen',
-    11 => "Termin wird zum Kalender von {$_USER['username']} hinzugefgt",
-    12 => 'Termin',
-    13 => 'Beginnt',
-    14 => 'Endet',
-    15 => 'Zurck zum Kalender'
+    123 => 'Alle HTML-Tags sind erlaubt',
+    124 => 'Alle angekreuzten Eintrge lschen',
+    125 => 'Sind Sie sicher, dass Sie alle angekreuzten Eintrge lschen wollen?',
+    126 => 'Alle Eintrge ankreuzen oder deselektieren'
 );
 
 ###############################################################################
@@ -241,7 +223,7 @@
     11 => 'Keine Kommentare',
     12 => 'User-Einstellungen fr',
     13 => 'E-Mail Nightly Digest',
-    14 => 'Dieses Passwort wurde mit einem Zufallsgenerator erzeugt. Es wird empfohlen, das Passwort nach dem Anmelden sofort zu ndern. Um Ihr Passwort zu ndern, melden Sie sich bitte an und whlen dann den Punkt Userprofil ndern im Block Einstellungen.',
+    14 => 'Dieses Passwort wurde mit einem Zufallsgenerator erzeugt. Es wird empfohlen, das Passwort nach dem Anmelden sofort zu ndern. Um Ihr Passwort zu ndern, melden Sie sich bitte an und whlen dann den Punkt Ihr Profil im Block Einstellungen.',
     15 => "Ihr Account fr {$_CONF['site_name']} wurde erfolgreich angelegt. Um ihn benutzen zu knnen, melden Sie sich bitte mit den folgenden Informationen an. Diese E-Mail bitte aufheben.",
     16 => 'Ihre Zugangsdaten',
     17 => 'Account existiert nicht',
@@ -281,7 +263,7 @@
     51 => 'Nur die Artikel',
     52 => 'Defaultwert:',
     53 => 'Receive the days stories every night',
-    54 => 'Themen und Autoren ankreuzen, die Sie NICHT sehen wollen.',
+    54 => 'Kategorien und Autoren ankreuzen, die Sie NICHT sehen wollen.',
     55 => 'Wenn Sie hier nichts ankreuzen, wird die Default-Auswahl an Blcken angezeigt. Sobald Sie anfangen, Blcke anzukreuzen, werden auch nur noch diejenigen angezeigt, die angekreuzt sind! Die Default-Blcke sind <b>fett</b> markiert.',
     56 => 'Autoren',
     57 => 'Anzeigemodus',
@@ -293,7 +275,7 @@
     63 => "Ihr Passwort sollte in Krze per E-Mail eintreffen. Bitte beachten Sie die Hinweise in der E-Mail und Danke fr Ihr Interesse an {$_CONF['site_name']}",
     64 => 'Kommentar-Einstellungen fr',
     65 => 'Bitte versuchen Sie noch einmal, sich anzumelden',
-    66 => "Haben Sie sich vertippt? Bitte versuchen Sie noch einmal, sich hier anzumelden.",
+    66 => 'Haben Sie sich vertippt? Bitte versuchen Sie noch einmal, sich hier anzumelden.',
     67 => 'Mitglied seit',
     68 => 'Angemeldet fr',
     69 => 'Wie lange soll das System Sie nach dem Anmelden erkennen?',
@@ -350,7 +332,40 @@
     120 => 'Account aktiviert',
     121 => 'Dienst',
     122 => 'Derzeit knnen sich keine neuen User anmelden.',
-    123 => "Sind Sie ein <a href=\"{$_CONF['site_url']}/users.php?mode=new\">neuer User</a>?"
+    123 => "Sind Sie ein <a href=\"{$_CONF['site_url']}/users.php?mode=new\">neuer User</a>?",
+    124 => 'E-Mail besttigen',
+    125 => 'Die E-Mail-Adressen stimmen nicht berein. Bitte in beiden Feldern die gleiche E-Mail-Adresse eintragen!',
+    126 => 'Bitte die gleiche Adresse noch einmal eingeben',
+    127 => 'Um diese Angaben zu ndern mssen Sie Ihr aktuelles Passwort eingeben.',
+    128 => 'Ihr Name',
+    129 => 'Passwort &amp; E-Mail',
+    130 => 'Informationen ber Sie',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Kommentaranzeige',
+    134 => 'Kommentaranzeige',
+    135 => '<li>Anzeigemodus: Wie Kommentare angezeigt werden</li><li>Sortierreihenfolge: Wie Kommentare sortiert werden</li><li>Kommentarlimit: Maximale Anzahl Kommentare, die angezeigt werden (Default: 100)</li>',
+    136 => 'Kategorien und Autoren ausblenden',
+    137 => 'Artikel ausfiltern',
+    138 => 'Darstellung und Sprache',
+    139 => 'Darstellung und Sprache',
+    140 => '<li>Kategorien ohne Icons: Wenn angekreuzt werden in Artikeln keine Icons mehr angezeigt.</li><li>Keine Blcke: Wenn angekreuzt werden nur noch die Blcke Einstellungen, Kategorien und der Admin-Block angezeigt.<li>Einstellung fr die maximale Anzahl von Artikeln pro Seite.</li><li>Whlen Sie das Erscheinungsbild der Website und das bevorzugte Datumsformat.</li>',
+    141 => 'Privatsphre',
+    142 => 'Hier knnen Sie einstellen, ob Ihnen andere User und Admins E-Mails schicken knnen und ob Sie im Block "Wer ist online?" namentlich oder nur anonym erscheinen wollen.',
+    143 => 'Blcke anzeigen',
+    144 => 'Blcke anzeigen',
+    145 => 'Vorschau: So sieht Ihr Profil aus',
+    146 => 'Passwort &amp; E-Mail',
+    147 => 'Hier knnen Sie Ihr Passwort und Ihre E-Mai-Adresse ndern sowie bestimmen, wie lange Sie eingeloggt bleiben wollen. Passwort und E-Mail mssen zum ndern zweimal eingegeben werden.',
+    148 => 'Informationen ber Sie',
+    149 => 'Hier knnen Sie eingeben, was andere User ber Sie sehen knnen:<li>Die Signatur wird an Kommentare angefgt</li><li>In der Biographie knnen Sie etwas ber sich erzhlen</li><li>Sie knnen Ihren PGP-Key hinterlegen</li>',
+    150 => 'Hinweis: JavaScript wird nicht bentigt, aber empfohlen',
+    151 => 'Vorschau',
+    152 => 'Username &amp; Passwort',
+    153 => 'Darstellung &amp; Sprache',
+    154 => 'Filter',
+    155 => 'Privatsphre',
+    156 => 'Account lschen'
 );
 
 ###############################################################################
@@ -667,38 +682,9 @@
     62 => 'Artikellimit',
     63 => 'Block-Titel nicht erlaubt',
     64 => 'Der Titel kann nicht leer sein und darf kein HTML enthalten!',
-    65 => 'Reihenfolge'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Termin-Editor',
-    2 => 'Error',
-    3 => 'Titel',
-    4 => 'URL',
-    5 => 'Startdatum',
-    6 => 'Enddatum',
-    7 => 'Ort',
-    8 => 'Beschreibung',
-    9 => '(mit http://)',
-    10 => 'Es mssen mindestens Datum und Uhrzeit, Titel und Beschreibung angegeben werden!',
-    11 => 'Termin-Manager',
-    12 => 'Auf das ndern-Icon klicken, um einen Termin zu ndern oder zu lschen. Mit Neu anlegen (s.o.) wird ein neuer Termin angelegt. Das Kopie-Icon erzeugt eine Kopie eines vorhandenen Termins.',
-    13 => 'Titel',
-    14 => 'Startdatum',
-    15 => 'Enddatum',
-    16 => 'Zugriff verweigert',
-    17 => "Sie haben keine Zugriffsrechte fr diesen Termin. Dieser Zugriffsversuch wurde protokolliert. <a href=\"{$_CONF['site_admin_url']}/event.php\">Zurck zum Administrator-Men</a>.",
-    18 => 'Neuer Termin',
-    19 => 'Admin Home',
-    20 => 'Speichern',
-    21 => 'Abbruch',
-    22 => 'Lschen',
-    23 => 'Ungltiges Startdatum.',
-    24 => 'Ungltiges Enddatum.',
-    25 => 'Enddatum ist vor dem Startdatum.'
+    65 => 'Reihenfolge',
+    66 => 'Autotags',
+    67 => 'Ankreuzen, um Autotags zu interpretieren'
 );
 
 ###############################################################################
@@ -731,7 +717,7 @@
     24 => 'Diese ID wird bereits fr einen anderen Artikel benutzt. Bitte whlen Sie eine andere ID.',
     25 => 'Fehler beim Speichern des Artikels',
     26 => 'Artikelvorschau',
-    27 => 'Wenn Sie [unscaledX] statt [imageX] verwenden, wird das Bild in Originalgre eingebunden.',
+    27 => '<p>Wenn Sie [unscaledX] statt [imageX] verwenden, wird das Bild in Originalgre eingebunden.',
     28 => '<p><strong>VORSCHAU:</strong> Der Vorschau-Button sollte nur verwendet werden, wenn der Artikel keine Bilder enthlt. Bei Artikeln mit Bildern empfiehlt es sich, den Artikel als Entwurf zu markieren, zu speichern und dann von der Liste der Artikel aus zu betrachten.</p>',
     29 => 'Trackbacks',
     30 => 'Fehler beim Datei-Upload',
@@ -755,7 +741,7 @@
     48 => 'image',
     49 => 'right',
     50 => 'left',
-    51 => 'Die oben ausgewhlten Bilder knnen in den Artikel eingefgt werden, indem Sie spezielle Platzhalter dafr in den Text einfgen. Diese Platzhalter sind [imageX], [imageX_right] und [imageX_left], wobei statt des X jeweils die Nummer des Bildes eingetragen werden muss.<br>HINWEIS: Es mssen alle ausgewhlten Bilder verwendet werden. Andernfalls kann der Artikel nicht gespeichert werden.<br>',
+    51 => '<p>Die oben ausgewhlten Bilder knnen in den Artikel eingefgt werden, indem Sie spezielle Platzhalter dafr in den Text einfgen. Diese Platzhalter sind [imageX], [imageX_right] und [imageX_left], wobei statt des X jeweils die Nummer des Bildes eingetragen werden muss.<br>HINWEIS: Es mssen alle ausgewhlten Bilder verwendet werden. Andernfalls kann der Artikel nicht gespeichert werden.<br>',
     52 => 'Lschen',
     53 => 'wurde nicht verwendet. Sie mssen dieses Bild im Text des Artikels verwenden oder es lschen bevor Sie Ihre nderungen sichern knnen.',
     54 => 'Nicht verwendete Bilder',
@@ -783,13 +769,15 @@
     76 => 'Publish Options',
     77 => 'Javascript needs to be enabled for Advanced Editor. Option can be disabled in the main site config.php',
     78 => 'Click <a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default">here</a> to use default editor',
-    79 => 'Preview',
+    79 => 'Vorschau',
     80 => 'Editor',
     81 => 'Publish Options',
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -842,7 +830,7 @@
     9 => '(keine Leerzeichen!)',
     10 => 'Bitte die Felder Username und E-Mail-Adresse ausfllen.',
     11 => 'User-Manager',
-    12 => 'Auf das ndern-Icon klicken, um einen User zu ndern oder zu lschen. Ein neuer User kann mit Neu anlegen (s.o.) angelegt werden. Es gibt auch eine einfache Suchfunktion, mit der nach Teilen von Usernamen, E-Mail-Adressen oder richtigen Namen gesucht werden kann (z.B. *son* oder *.de).',
+    12 => 'Auf das ndern-Icon klicken, um einen User zu ndern oder zu lschen. Ein neuer User kann mit Neu anlegen (s.o.) angelegt werden.',
     13 => 'SecLev',
     14 => 'Reg. Datum',
     15 => 'Neuer User',
@@ -874,10 +862,39 @@
     41 => 'Letzter Login',
     42 => 'Gesperrt',
     43 => 'Erwartet Aktivierung',
-    44 => 'Erwartet Autorisierung',
+    44 => 'Erwartet Freigabe',
     45 => 'Aktiv',
     46 => 'User-Status',
-    47 => 'ndern'
+    47 => 'ndern',
+    48 => 'Admin-Gruppen anzeigen',
+    49 => 'Admin-Gruppe',
+    50 => 'Ankreuzen, um diese Gruppe als "Admin-Gruppe" ausfiltern zu knnen',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'User lschen',
+    55 => "This only works if you have <code>\$_CONF['lastlogin'] = true;</code> in your config.php",
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -907,53 +924,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Sonntag',
-    2 => 'Montag',
-    3 => 'Dienstag',
-    4 => 'Mittwoch',
-    5 => 'Donnerstag',
-    6 => 'Freitag',
-    7 => 'Samstag',
-    8 => 'Neuer Termin',
-    9 => 'Termin',
-    10 => 'Termine am',
-    11 => 'Kalender',
-    12 => 'Mein Kalender',
-    13 => 'Januar',
-    14 => 'Februar',
-    15 => 'Mrz',
-    16 => 'April',
-    17 => 'Mai',
-    18 => 'Juni',
-    19 => 'Juli',
-    20 => 'August',
-    21 => 'September',
-    22 => 'Oktober',
-    23 => 'November',
-    24 => 'Dezember',
-    25 => 'Zurck zum ',
-    26 => 'ganztgig',
-    27 => 'Woche',
-    28 => 'Persnlicher Kalender fr',
-    29 => 'ffentlicher Kalender',
-    30 => 'Termin lschen',
-    31 => 'Hinzufgen',
-    32 => 'Termin',
-    33 => 'Datum',
-    34 => 'Uhrzeit',
-    35 => 'Neuer Termin',
-    36 => 'Submit',
-    37 => 'Sorry, der persnliche Kalender ist auf dieser Site nicht verfgbar',
-    38 => 'Persnlicher Termin-Editor',
-    39 => 'Tag',
-    40 => 'Woche',
-    41 => 'Monat'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -970,7 +940,7 @@
     11 => 'Wichtige Nachricht!',
     12 => 'Abschicken',
     13 => 'Reset',
-    14 => 'User Einstellungen ignorieren',
+    14 => 'User-Einstellungen ignorieren',
     15 => 'Fehler beim Senden an: ',
     16 => 'E-Mail erfolgreich gesendet an: ',
     17 => "<a href=\"{$_CONF['site_admin_url']}/mail.php\">Noch eine Nachricht schreiben</a>",
@@ -1077,7 +1047,9 @@
     47 => 'Suchen',
     48 => 'ndern',
     49 => 'Feed-Logo',
-    50 => "Relativ zur URL dieser Site ({$_CONF['site_url']})"
+    50 => "Relativ zur URL dieser Site ({$_CONF['site_url']})",
+    51 => 'Der gewhlte Dateiname wird bereits von einem anderen Feed verwendet. Bitte whlen Sie einen anderen.',
+    52 => 'Fehler: Dateiname existiert schon'
 );
 
 ###############################################################################
@@ -1088,7 +1060,7 @@
     2 => "Danke fr Ihren Beitrag zu {$_CONF['site_name']}. Ihr Artikel wurde an unser Team weitergeleitet. Wenn er akzeptiert wird, wird er bald auf dieser Website fr alle Besucher zu lesen sein.",
     3 => "Danke fr Ihren Beitrag zu {$_CONF['site_name']}. Ihr Link wurde an unser Team weitergeleitet. Wenn er akzeptiert wird, wird er bald unter den <a href=\"{$_CONF['site_url']}/links.php\">Links</a> aufgelistet werden.",
     4 => "Danke fr Ihren Beitrag zu {$_CONF['site_name']}. Ihr Termin wurde an unser Team weitergeleitet. Wenn er akzeptiert wird, wird er bald in unserem <a href=\"{$_CONF['site_url']}/calendar.php\">Kalender</a> erscheinen.",
-    5 => 'Ihr User-Profil wurde gespeichert.',
+    5 => 'Ihr Userprofil wurde gespeichert.',
     6 => 'Ihre Einstellungen wurden gespeichert.',
     7 => 'Ihre Kommentar-Einstellungen wurden gespeichert.',
     8 => 'Abmeldung erfolgt. Sie sind jetzt nicht mehr angemeldet.',
@@ -1158,7 +1130,16 @@
     72 => 'Bei der Installation des Plugins trat ein Fehler auf. Siehe error.log fr weitere Informationen.',
     73 => 'Bei der Deinstallation des Plugins trat ein Fehler aus. Siehe error.log fr weitere Informationen.',
     74 => 'Der Pingback wurde erfolgreich verschickt.',
-    75 => 'Trackbacks mssen als POST-Request verschickt werden.'
+    75 => 'Trackbacks mssen als POST-Request verschickt werden.',
+    76 => 'Wollen Sie diesen Eintrag wirklich lschen?',
+    77 => 'HINWEIS:<br>Sie haben UTF-8 als Default-Zeichensatz angegeben. Ihr Webserver untersttzt jedoch kein "multibyte encoding". Installieren Sie bitte die mbstring-Erweiterung fr PHP oder benutzen Sie einen anderen Zeichensatz bzw. eine andere Sprache.',
+    78 => 'Bitte sicherstellen, dass die angegebene E-Mail-Adresse in beiden Fllen die gleiche ist.',
+    79 => 'Diese Funktion ist nicht mehr unter dieser URL verfgbar.',
+    80 => 'Das Plugin, das diesen Feed angelegt hat, ist derzeit nicht aktiviert. Dieser Feed kann nicht bearbeitet werden, solange das Plugin deaktiviert ist.',
+    81 => 'Haben Sie sich vertippt? Bitte versuchen Sie noch einmal, sich hier anzumelden.',
+    82 => 'Sie haben die erlaubte Anzahl von Anmeldeversuchen berschritten. Bitte versuchen Sie es spter noch einmal.',
+    83 => 'Um Ihr Passwort, Ihre E-Mail-Adresse oder die "Angemeldet fr"-Zeit zu ndern mssen Sie Ihr aktuelles Passwort eingeben.',
+    84 => 'Um Ihren Account zu lschen mssen Sie Ihr aktuelles Passwort eingeben.'
 );
 
 ###############################################################################
@@ -1209,9 +1190,9 @@
     'cancel' => 'Abbruch',
     'delete' => 'Lschen',
     'canteditroot' => 'Sie haben versucht die Gruppe Root zu ndern, obwohl Sie selbst nicht Mitglied dieser Gruppe sind. Der Zugriff wurde daher verweigert. Wenden Sie sich bitte an den Systemadministrator wenn Sie der Meinung sind, dass das ein Fehler wre.',
-    'listusers' => 'User',
+    'listusers' => 'Mitglieder',
     'listthem' => 'anzeigen',
-    'usersingroup' => 'User in Gruppe "%s"',
+    'usersingroup' => 'Mitglieder der Gruppe "%s"',
     'usergroupadmin' => 'Usergruppen-Verwaltung',
     'add' => 'Hinzufgen',
     'remove' => 'Lschen',
@@ -1219,7 +1200,7 @@
     'groupmembers' => 'Mitglieder der Gruppe',
     'canteditgroup' => 'Um diese Gruppe bearbeiten zu knnen, mssen Sie selbst ein Mitglied der Gruppe sein. Wenden Sie sich bitte an den Systemadministrator wenn Sie der Meinung sind, dass das ein Fehler wre.',
     'cantlistgroup' => 'Um die Mitglieder dieser Gruppe sehen zu knnen, mssen Sie selbst ein Mitglied der Gruppe sein. Wenden Sie sich bitte an den Systemadministrator wenn Sie der Meinung sind, dass das ein Fehler wre.',
-    'editgroupmsg' => 'To modify the group membership,  click on the member names(s) and use the add or remove buttons. If the member is a member of the group, their name will appear on the "Right" side only. Once you are complete - press <b>Save</b> to update the group and return to the main group admin page.',
+    'editgroupmsg' => 'Um die Gruppenmitgliedschaft eines Users zu ndern, den Usernamen anklicken und entsprechend Hinzufgen oder Lschen anklicken. Nur User in der rechten Liste sind Mitglieder der Gruppe. Um die nderungen zu bernehmen und zur Gruppenliste zurckzukehren, den Button <b>Speichern</b> klicken.',
     'listgroupmsg' => 'Liste aller Mitglieder der Gruppe "<b>%s</b>"',
     'search' => 'Suchen',
     'submit' => 'Abschicken',
@@ -1378,7 +1359,7 @@
     'edit_service' => 'Weblog-Verzeichnis bearbeiten',
     'trackbacks' => 'Trackbacks',
     'editor_intro' => 'Hier knnen Sie Ihren Trackback-Kommentar fr <a href="%s">%s</a> eingeben.',
-    'editor_intro_none' => 'Prepare your trackback comment.',
+    'editor_intro_none' => 'Trackback-Kommentar eingeben.',
     'trackback_note' => 'Um einen Trackback-Kommentar fr einen Artikel zu verschicken, benutzen Sie bitte den "' . $LANG24[20] . '"-Eintrag in der Liste der Artikel. Um einen Trackback unabhngig von einem Artikel zu verschicken, bitte <a href="%s">hier klicken</a>.',
     'pingback_explain' => 'Geben Sie eine URL ein, an die der Pingback geschickt werden soll. Der Pingback wird auf die Startseite Ihrer Website verweisen.',
     'pingback_url' => 'Pingback-URL',
@@ -1386,7 +1367,8 @@
     'pingback_note' => 'Um einen Pingback fr einen Artikel zu verschicken, benutzen Sie bitte den "' . $LANG24[20] . '"-Eintrag in der Liste der Artikel. Um einen Pingback unabhngig von einem Artikel zu verschicken, bitte <a href="%s">hier klicken</a>.',
     'pbtarget_missing' => 'Keine Pingback-URL',
     'pbtarget_required' => 'Geben Sie bitte die Pingback-URL ein',
-    'pb_error_details' => 'Fehler beim Senden des Pingbacks:'
+    'pb_error_details' => 'Fehler beim Senden des Pingbacks:',
+    'delete_trackback'   => 'Trackback direkt lschen: '
 );
 
 ###############################################################################
@@ -1411,7 +1393,7 @@
 # %s    scale, "hrs", "weeks"
 
 $LANG_WHATSNEW = array(
-    'new_string' => '%n neue %i in den letzten %t %s',
+    'new_string' => '%n neue %i fr die letzten %t %s',
     'new_last' => 'letzte %t %s',
     'minutes' => 'Minuten',
     'hours' => 'Stunden',
@@ -1425,6 +1407,31 @@
     'month' => 'Monat'
 );
 
+$LANG_MONTH = array(
+    1 => 'Januar',
+    2 => 'Februar',
+    3 => 'Mrz',
+    4 => 'April',
+    5 => 'Mai',
+    6 => 'Juni',
+    7 => 'Juli',
+    8 => 'August',
+    9 => 'September',
+    10 => 'Oktober',
+    11 => 'November',
+    12 => 'Dezember'
+);
+
+$LANG_WEEK = array(
+    1 => 'Sonntag',
+    2 => 'Montag',
+    3 => 'Dienstag',
+    4 => 'Mittwoch',
+    5 => 'Donnerstag',
+    6 => 'Freitag',
+    7 => 'Samstag'
+);
+
 ###############################################################################
 # Admin - Strings
 # 
@@ -1436,8 +1443,10 @@
     'limit_results' => 'Anzahl Ergebnisse',
     'submit'        => 'Abschicken',
     'edit'          => 'ndern',
+    'edit_adv'      => 'Erw. Editor',
     'admin_home'    => 'Admin Home',
     'create_new'    => 'Neu anlegen',
+    'create_new_adv'=> 'Neu anlegen (Erw.)',
     'enabled'       => 'Aktiv',
     'title'         => 'Titel',
     'type'          => 'Typ',
@@ -1446,9 +1455,12 @@
     'save'          => 'Speichern',
     'cancel'        => 'Abbruch',
     'delete'        => 'Lschen',
+    'delete_sel'    => 'Delete selected',
     'copy'          => 'Kopieren',
     'no_results'    => '- Keine Eintrge gefunden -',
-    'data_error'    => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error'    => 'There was an error processing the subscription data. Please check the data source.',
+    'preview'       => 'Vorschau',
+    'records_found' => 'Eintrge',
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/german_formal_utf-8.php 1.4.1.src/cpanel-glprivate/language/german_formal_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/german_formal_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/german_formal_utf-8.php	2006-12-16 14:49:04.000000000 -0600
@@ -46,7 +46,7 @@
 
 $LANG01 = array(
     1 => 'Beitrag von:',
-    2 => '(mehr)',
+    2 => 'Weiter',
     3 => 'Kommentar(e)',
     4 => 'Ändern',
     5 => 'Umfrage',
@@ -92,7 +92,7 @@
     45 => 'MySQL Fehlernummer',
     46 => 'MySQL Fehlermeldung',
     47 => 'Anmelden',
-    48 => 'Userprofil ändern',
+    48 => 'Ihr Profil',
     49 => 'Einstellungen',
     50 => 'Fehler im SQL-Befehl',
     51 => 'Hilfe',
@@ -167,28 +167,10 @@
     120 => 'Permalink',
     121 => 'Kommentare (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'Alle HTML-Tags sind erlaubt'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Terminkalender',
-    2 => 'Es gibt keine Termine anzuzeigen.',
-    3 => 'Wann',
-    4 => 'Wo',
-    5 => 'Beschreibung',
-    6 => 'Termin hinzufügen',
-    7 => 'Anstehende Termine',
-    8 => 'Wenn Sie diesen Termin zu Ihrem Kalender hinzufügen, können Sie  schneller einen Überblick über die Termine verschaffen, die Sie interessieren, indem Sie einfach auf "Mein Kalender" klicken.',
-    9 => 'Zu Meinem Kalender hinzufügen',
-    10 => 'Aus Meinem Kalender entfernen',
-    11 => "Termin wird zum Kalender von {$_USER['username']} hinzugefügt",
-    12 => 'Termin',
-    13 => 'Beginnt',
-    14 => 'Endet',
-    15 => 'Zurück zum Kalender'
+    123 => 'Alle HTML-Tags sind erlaubt',
+    124 => 'Alle angekreuzten Einträge löschen',
+    125 => 'Sind Sie sicher, dass Sie alle angekreuzten Einträge löschen wollen?',
+    126 => 'Alle Einträge ankreuzen oder deselektieren'
 );
 
 ###############################################################################
@@ -241,7 +223,7 @@
     11 => 'Keine Kommentare',
     12 => 'User-Einstellungen für',
     13 => 'E-Mail Nightly Digest',
-    14 => 'Dieses Passwort wurde mit einem Zufallsgenerator erzeugt. Es wird empfohlen, das Passwort nach dem Anmelden sofort zu ändern. Um Ihr Passwort zu ändern, melden Sie sich bitte an und wählen dann den Punkt Userprofil ändern im Block Einstellungen.',
+    14 => 'Dieses Passwort wurde mit einem Zufallsgenerator erzeugt. Es wird empfohlen, das Passwort nach dem Anmelden sofort zu ändern. Um Ihr Passwort zu ändern, melden Sie sich bitte an und wählen dann den Punkt Ihr Profil im Block Einstellungen.',
     15 => "Ihr Account für {$_CONF['site_name']} wurde erfolgreich angelegt. Um ihn benutzen zu können, melden Sie sich bitte mit den folgenden Informationen an. Diese E-Mail bitte aufheben.",
     16 => 'Ihre Zugangsdaten',
     17 => 'Account existiert nicht',
@@ -281,7 +263,7 @@
     51 => 'Nur die Artikel',
     52 => 'Defaultwert:',
     53 => 'Receive the days stories every night',
-    54 => 'Themen und Autoren ankreuzen, die Sie NICHT sehen wollen.',
+    54 => 'Kategorien und Autoren ankreuzen, die Sie NICHT sehen wollen.',
     55 => 'Wenn Sie hier nichts ankreuzen, wird die Default-Auswahl an Blöcken angezeigt. Sobald Sie anfangen, Blöcke anzukreuzen, werden auch nur noch diejenigen angezeigt, die angekreuzt sind! Die Default-Blöcke sind <b>fett</b> markiert.',
     56 => 'Autoren',
     57 => 'Anzeigemodus',
@@ -293,7 +275,7 @@
     63 => "Ihr Passwort sollte in Kürze per E-Mail eintreffen. Bitte beachten Sie die Hinweise in der E-Mail und Danke für Ihr Interesse an {$_CONF['site_name']}",
     64 => 'Kommentar-Einstellungen für',
     65 => 'Bitte versuchen Sie noch einmal, sich anzumelden',
-    66 => "Haben Sie sich vertippt? Bitte versuchen Sie noch einmal, sich hier anzumelden.",
+    66 => 'Haben Sie sich vertippt? Bitte versuchen Sie noch einmal, sich hier anzumelden.',
     67 => 'Mitglied seit',
     68 => 'Angemeldet für',
     69 => 'Wie lange soll das System Sie nach dem Anmelden erkennen?',
@@ -350,7 +332,40 @@
     120 => 'Account aktiviert',
     121 => 'Dienst',
     122 => 'Derzeit können sich keine neuen User anmelden.',
-    123 => "Sind Sie ein <a href=\"{$_CONF['site_url']}/users.php?mode=new\">neuer User</a>?"
+    123 => "Sind Sie ein <a href=\"{$_CONF['site_url']}/users.php?mode=new\">neuer User</a>?",
+    124 => 'E-Mail bestätigen',
+    125 => 'Die E-Mail-Adressen stimmen nicht überein. Bitte in beiden Feldern die gleiche E-Mail-Adresse eintragen!',
+    126 => 'Bitte die gleiche Adresse noch einmal eingeben',
+    127 => 'Um diese Angaben zu ändern müssen Sie Ihr aktuelles Passwort eingeben.',
+    128 => 'Ihr Name',
+    129 => 'Passwort &amp; E-Mail',
+    130 => 'Informationen über Sie',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Kommentaranzeige',
+    134 => 'Kommentaranzeige',
+    135 => '<li>Anzeigemodus: Wie Kommentare angezeigt werden</li><li>Sortierreihenfolge: Wie Kommentare sortiert werden</li><li>Kommentarlimit: Maximale Anzahl Kommentare, die angezeigt werden (Default: 100)</li>',
+    136 => 'Kategorien und Autoren ausblenden',
+    137 => 'Artikel ausfiltern',
+    138 => 'Darstellung und Sprache',
+    139 => 'Darstellung und Sprache',
+    140 => '<li>Kategorien ohne Icons: Wenn angekreuzt werden in Artikeln keine Icons mehr angezeigt.</li><li>Keine Blöcke: Wenn angekreuzt werden nur noch die Blöcke Einstellungen, Kategorien und der Admin-Block angezeigt.<li>Einstellung für die maximale Anzahl von Artikeln pro Seite.</li><li>Wählen Sie das Erscheinungsbild der Website und das bevorzugte Datumsformat.</li>',
+    141 => 'Privatsphäre',
+    142 => 'Hier können Sie einstellen, ob Ihnen andere User und Admins E-Mails schicken können und ob Sie im Block "Wer ist online?" namentlich oder nur anonym erscheinen wollen.',
+    143 => 'Blöcke anzeigen',
+    144 => 'Blöcke anzeigen',
+    145 => 'Vorschau: So sieht Ihr Profil aus',
+    146 => 'Passwort &amp; E-Mail',
+    147 => 'Hier können Sie Ihr Passwort und Ihre E-Mai-Adresse ändern sowie bestimmen, wie lange Sie eingeloggt bleiben wollen. Passwort und E-Mail müssen zum Ändern zweimal eingegeben werden.',
+    148 => 'Informationen über Sie',
+    149 => 'Hier können Sie eingeben, was andere User über Sie sehen können:<li>Die Signatur wird an Kommentare angefügt</li><li>In der Biographie können Sie etwas über sich erzählen</li><li>Sie können Ihren PGP-Key hinterlegen</li>',
+    150 => 'Hinweis: JavaScript wird nicht benötigt, aber empfohlen',
+    151 => 'Vorschau',
+    152 => 'Username &amp; Passwort',
+    153 => 'Darstellung &amp; Sprache',
+    154 => 'Filter',
+    155 => 'Privatsphäre',
+    156 => 'Account löschen'
 );
 
 ###############################################################################
@@ -667,38 +682,9 @@
     62 => 'Artikellimit',
     63 => 'Block-Titel nicht erlaubt',
     64 => 'Der Titel kann nicht leer sein und darf kein HTML enthalten!',
-    65 => 'Reihenfolge'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Termin-Editor',
-    2 => 'Error',
-    3 => 'Titel',
-    4 => 'URL',
-    5 => 'Startdatum',
-    6 => 'Enddatum',
-    7 => 'Ort',
-    8 => 'Beschreibung',
-    9 => '(mit http://)',
-    10 => 'Es müssen mindestens Datum und Uhrzeit, Titel und Beschreibung angegeben werden!',
-    11 => 'Termin-Manager',
-    12 => 'Auf das Ändern-Icon klicken, um einen Termin zu ändern oder zu löschen. Mit Neu anlegen (s.o.) wird ein neuer Termin angelegt. Das Kopie-Icon erzeugt eine Kopie eines vorhandenen Termins.',
-    13 => 'Titel',
-    14 => 'Startdatum',
-    15 => 'Enddatum',
-    16 => 'Zugriff verweigert',
-    17 => "Sie haben keine Zugriffsrechte für diesen Termin. Dieser Zugriffsversuch wurde protokolliert. <a href=\"{$_CONF['site_admin_url']}/event.php\">Zurück zum Administrator-Menü</a>.",
-    18 => 'Neuer Termin',
-    19 => 'Admin Home',
-    20 => 'Speichern',
-    21 => 'Abbruch',
-    22 => 'Löschen',
-    23 => 'Ungültiges Startdatum.',
-    24 => 'Ungültiges Enddatum.',
-    25 => 'Enddatum ist vor dem Startdatum.'
+    65 => 'Reihenfolge',
+    66 => 'Autotags',
+    67 => 'Ankreuzen, um Autotags zu interpretieren'
 );
 
 ###############################################################################
@@ -731,7 +717,7 @@
     24 => 'Diese ID wird bereits für einen anderen Artikel benutzt. Bitte wählen Sie eine andere ID.',
     25 => 'Fehler beim Speichern des Artikels',
     26 => 'Artikelvorschau',
-    27 => 'Wenn Sie [unscaledX] statt [imageX] verwenden, wird das Bild in Originalgröße eingebunden.',
+    27 => '<p>Wenn Sie [unscaledX] statt [imageX] verwenden, wird das Bild in Originalgröße eingebunden.',
     28 => '<p><strong>VORSCHAU:</strong> Der Vorschau-Button sollte nur verwendet werden, wenn der Artikel keine Bilder enthält. Bei Artikeln mit Bildern empfiehlt es sich, den Artikel als Entwurf zu markieren, zu speichern und dann von der Liste der Artikel aus zu betrachten.</p>',
     29 => 'Trackbacks',
     30 => 'Fehler beim Datei-Upload',
@@ -755,7 +741,7 @@
     48 => 'image',
     49 => 'right',
     50 => 'left',
-    51 => 'Die oben ausgewählten Bilder können in den Artikel eingefügt werden, indem Sie spezielle Platzhalter dafür in den Text einfügen. Diese Platzhalter sind [imageX], [imageX_right] und [imageX_left], wobei statt des X jeweils die Nummer des Bildes eingetragen werden muss.<br>HINWEIS: Es müssen alle ausgewählten Bilder verwendet werden. Andernfalls kann der Artikel nicht gespeichert werden.<br>',
+    51 => '<p>Die oben ausgewählten Bilder können in den Artikel eingefügt werden, indem Sie spezielle Platzhalter dafür in den Text einfügen. Diese Platzhalter sind [imageX], [imageX_right] und [imageX_left], wobei statt des X jeweils die Nummer des Bildes eingetragen werden muss.<br>HINWEIS: Es müssen alle ausgewählten Bilder verwendet werden. Andernfalls kann der Artikel nicht gespeichert werden.<br>',
     52 => 'Löschen',
     53 => 'wurde nicht verwendet. Sie müssen dieses Bild im Text des Artikels verwenden oder es löschen bevor Sie Ihre Änderungen sichern können.',
     54 => 'Nicht verwendete Bilder',
@@ -783,13 +769,15 @@
     76 => 'Publish Options',
     77 => 'Javascript needs to be enabled for Advanced Editor. Option can be disabled in the main site config.php',
     78 => 'Click <a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default">here</a> to use default editor',
-    79 => 'Preview',
+    79 => 'Vorschau',
     80 => 'Editor',
     81 => 'Publish Options',
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -842,7 +830,7 @@
     9 => '(keine Leerzeichen!)',
     10 => 'Bitte die Felder Username und E-Mail-Adresse ausfüllen.',
     11 => 'User-Manager',
-    12 => 'Auf das Ändern-Icon klicken, um einen User zu ändern oder zu löschen. Ein neuer User kann mit Neu anlegen (s.o.) angelegt werden. Es gibt auch eine einfache Suchfunktion, mit der nach Teilen von Usernamen, E-Mail-Adressen oder richtigen Namen gesucht werden kann (z.B. *son* oder *.de).',
+    12 => 'Auf das Ändern-Icon klicken, um einen User zu ändern oder zu löschen. Ein neuer User kann mit Neu anlegen (s.o.) angelegt werden.',
     13 => 'SecLev',
     14 => 'Reg. Datum',
     15 => 'Neuer User',
@@ -874,10 +862,39 @@
     41 => 'Letzter Login',
     42 => 'Gesperrt',
     43 => 'Erwartet Aktivierung',
-    44 => 'Erwartet Autorisierung',
+    44 => 'Erwartet Freigabe',
     45 => 'Aktiv',
     46 => 'User-Status',
-    47 => 'Ändern'
+    47 => 'Ändern',
+    48 => 'Admin-Gruppen anzeigen',
+    49 => 'Admin-Gruppe',
+    50 => 'Ankreuzen, um diese Gruppe als "Admin-Gruppe" ausfiltern zu können',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'User löschen',
+    55 => "This only works if you have <code>\$_CONF['lastlogin'] = true;</code> in your config.php",
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -907,53 +924,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Sonntag',
-    2 => 'Montag',
-    3 => 'Dienstag',
-    4 => 'Mittwoch',
-    5 => 'Donnerstag',
-    6 => 'Freitag',
-    7 => 'Samstag',
-    8 => 'Neuer Termin',
-    9 => 'Termin',
-    10 => 'Termine am',
-    11 => 'Kalender',
-    12 => 'Mein Kalender',
-    13 => 'Januar',
-    14 => 'Februar',
-    15 => 'März',
-    16 => 'April',
-    17 => 'Mai',
-    18 => 'Juni',
-    19 => 'Juli',
-    20 => 'August',
-    21 => 'September',
-    22 => 'Oktober',
-    23 => 'November',
-    24 => 'Dezember',
-    25 => 'Zurück zum ',
-    26 => 'ganztägig',
-    27 => 'Woche',
-    28 => 'Persönlicher Kalender für',
-    29 => 'Öffentlicher Kalender',
-    30 => 'Termin löschen',
-    31 => 'Hinzufügen',
-    32 => 'Termin',
-    33 => 'Datum',
-    34 => 'Uhrzeit',
-    35 => 'Neuer Termin',
-    36 => 'Submit',
-    37 => 'Sorry, der persönliche Kalender ist auf dieser Site nicht verfügbar',
-    38 => 'Persönlicher Termin-Editor',
-    39 => 'Tag',
-    40 => 'Woche',
-    41 => 'Monat'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -970,7 +940,7 @@
     11 => 'Wichtige Nachricht!',
     12 => 'Abschicken',
     13 => 'Reset',
-    14 => 'User Einstellungen ignorieren',
+    14 => 'User-Einstellungen ignorieren',
     15 => 'Fehler beim Senden an: ',
     16 => 'E-Mail erfolgreich gesendet an: ',
     17 => "<a href=\"{$_CONF['site_admin_url']}/mail.php\">Noch eine Nachricht schreiben</a>",
@@ -1077,7 +1047,9 @@
     47 => 'Suchen',
     48 => 'Ändern',
     49 => 'Feed-Logo',
-    50 => "Relativ zur URL dieser Site ({$_CONF['site_url']})"
+    50 => "Relativ zur URL dieser Site ({$_CONF['site_url']})",
+    51 => 'Der gewählte Dateiname wird bereits von einem anderen Feed verwendet. Bitte wählen Sie einen anderen.',
+    52 => 'Fehler: Dateiname existiert schon'
 );
 
 ###############################################################################
@@ -1088,7 +1060,7 @@
     2 => "Danke für Ihren Beitrag zu {$_CONF['site_name']}. Ihr Artikel wurde an unser Team weitergeleitet. Wenn er akzeptiert wird, wird er bald auf dieser Website für alle Besucher zu lesen sein.",
     3 => "Danke für Ihren Beitrag zu {$_CONF['site_name']}. Ihr Link wurde an unser Team weitergeleitet. Wenn er akzeptiert wird, wird er bald unter den <a href=\"{$_CONF['site_url']}/links.php\">Links</a> aufgelistet werden.",
     4 => "Danke für Ihren Beitrag zu {$_CONF['site_name']}. Ihr Termin wurde an unser Team weitergeleitet. Wenn er akzeptiert wird, wird er bald in unserem <a href=\"{$_CONF['site_url']}/calendar.php\">Kalender</a> erscheinen.",
-    5 => 'Ihr User-Profil wurde gespeichert.',
+    5 => 'Ihr Userprofil wurde gespeichert.',
     6 => 'Ihre Einstellungen wurden gespeichert.',
     7 => 'Ihre Kommentar-Einstellungen wurden gespeichert.',
     8 => 'Abmeldung erfolgt. Sie sind jetzt nicht mehr angemeldet.',
@@ -1158,7 +1130,16 @@
     72 => 'Bei der Installation des Plugins trat ein Fehler auf. Siehe error.log für weitere Informationen.',
     73 => 'Bei der Deinstallation des Plugins trat ein Fehler aus. Siehe error.log für weitere Informationen.',
     74 => 'Der Pingback wurde erfolgreich verschickt.',
-    75 => 'Trackbacks müssen als POST-Request verschickt werden.'
+    75 => 'Trackbacks müssen als POST-Request verschickt werden.',
+    76 => 'Wollen Sie diesen Eintrag wirklich löschen?',
+    77 => 'HINWEIS:<br>Sie haben UTF-8 als Default-Zeichensatz angegeben. Ihr Webserver unterstützt jedoch kein "multibyte encoding". Installieren Sie bitte die mbstring-Erweiterung für PHP oder benutzen Sie einen anderen Zeichensatz bzw. eine andere Sprache.',
+    78 => 'Bitte sicherstellen, dass die angegebene E-Mail-Adresse in beiden Fällen die gleiche ist.',
+    79 => 'Diese Funktion ist nicht mehr unter dieser URL verfügbar.',
+    80 => 'Das Plugin, das diesen Feed angelegt hat, ist derzeit nicht aktiviert. Dieser Feed kann nicht bearbeitet werden, solange das Plugin deaktiviert ist.',
+    81 => 'Haben Sie sich vertippt? Bitte versuchen Sie noch einmal, sich hier anzumelden.',
+    82 => 'Sie haben die erlaubte Anzahl von Anmeldeversuchen überschritten. Bitte versuchen Sie es später noch einmal.',
+    83 => 'Um Ihr Passwort, Ihre E-Mail-Adresse oder die "Angemeldet für"-Zeit zu ändern müssen Sie Ihr aktuelles Passwort eingeben.',
+    84 => 'Um Ihren Account zu löschen müssen Sie Ihr aktuelles Passwort eingeben.'
 );
 
 ###############################################################################
@@ -1209,9 +1190,9 @@
     'cancel' => 'Abbruch',
     'delete' => 'Löschen',
     'canteditroot' => 'Sie haben versucht die Gruppe Root zu ändern, obwohl Sie selbst nicht Mitglied dieser Gruppe sind. Der Zugriff wurde daher verweigert. Wenden Sie sich bitte an den Systemadministrator wenn Sie der Meinung sind, dass das ein Fehler wäre.',
-    'listusers' => 'User',
+    'listusers' => 'Mitglieder',
     'listthem' => 'anzeigen',
-    'usersingroup' => 'User in Gruppe "%s"',
+    'usersingroup' => 'Mitglieder der Gruppe "%s"',
     'usergroupadmin' => 'Usergruppen-Verwaltung',
     'add' => 'Hinzufügen',
     'remove' => 'Löschen',
@@ -1219,7 +1200,7 @@
     'groupmembers' => 'Mitglieder der Gruppe',
     'canteditgroup' => 'Um diese Gruppe bearbeiten zu können, müssen Sie selbst ein Mitglied der Gruppe sein. Wenden Sie sich bitte an den Systemadministrator wenn Sie der Meinung sind, dass das ein Fehler wäre.',
     'cantlistgroup' => 'Um die Mitglieder dieser Gruppe sehen zu können, müssen Sie selbst ein Mitglied der Gruppe sein. Wenden Sie sich bitte an den Systemadministrator wenn Sie der Meinung sind, dass das ein Fehler wäre.',
-    'editgroupmsg' => 'To modify the group membership,  click on the member names(s) and use the add or remove buttons. If the member is a member of the group, their name will appear on the "Right" side only. Once you are complete - press <b>Save</b> to update the group and return to the main group admin page.',
+    'editgroupmsg' => 'Um die Gruppenmitgliedschaft eines Users zu ändern, den Usernamen anklicken und entsprechend Hinzufügen oder Löschen anklicken. Nur User in der rechten Liste sind Mitglieder der Gruppe. Um die Änderungen zu übernehmen und zur Gruppenliste zurückzukehren, den Button <b>Speichern</b> klicken.',
     'listgroupmsg' => 'Liste aller Mitglieder der Gruppe "<b>%s</b>"',
     'search' => 'Suchen',
     'submit' => 'Abschicken',
@@ -1378,7 +1359,7 @@
     'edit_service' => 'Weblog-Verzeichnis bearbeiten',
     'trackbacks' => 'Trackbacks',
     'editor_intro' => 'Hier können Sie Ihren Trackback-Kommentar für <a href="%s">%s</a> eingeben.',
-    'editor_intro_none' => 'Prepare your trackback comment.',
+    'editor_intro_none' => 'Trackback-Kommentar eingeben.',
     'trackback_note' => 'Um einen Trackback-Kommentar für einen Artikel zu verschicken, benutzen Sie bitte den "' . $LANG24[20] . '"-Eintrag in der Liste der Artikel. Um einen Trackback unabhängig von einem Artikel zu verschicken, bitte <a href="%s">hier klicken</a>.',
     'pingback_explain' => 'Geben Sie eine URL ein, an die der Pingback geschickt werden soll. Der Pingback wird auf die Startseite Ihrer Website verweisen.',
     'pingback_url' => 'Pingback-URL',
@@ -1386,7 +1367,8 @@
     'pingback_note' => 'Um einen Pingback für einen Artikel zu verschicken, benutzen Sie bitte den "' . $LANG24[20] . '"-Eintrag in der Liste der Artikel. Um einen Pingback unabhängig von einem Artikel zu verschicken, bitte <a href="%s">hier klicken</a>.',
     'pbtarget_missing' => 'Keine Pingback-URL',
     'pbtarget_required' => 'Geben Sie bitte die Pingback-URL ein',
-    'pb_error_details' => 'Fehler beim Senden des Pingbacks:'
+    'pb_error_details' => 'Fehler beim Senden des Pingbacks:',
+    'delete_trackback'   => 'Trackback direkt löschen: '
 );
 
 ###############################################################################
@@ -1411,7 +1393,7 @@
 # %s    scale, "hrs", "weeks"
 
 $LANG_WHATSNEW = array(
-    'new_string' => '%n neue %i in den letzten %t %s',
+    'new_string' => '%n neue %i für die letzten %t %s',
     'new_last' => 'letzte %t %s',
     'minutes' => 'Minuten',
     'hours' => 'Stunden',
@@ -1425,6 +1407,31 @@
     'month' => 'Monat'
 );
 
+$LANG_MONTH = array(
+    1 => 'Januar',
+    2 => 'Februar',
+    3 => 'März',
+    4 => 'April',
+    5 => 'Mai',
+    6 => 'Juni',
+    7 => 'Juli',
+    8 => 'August',
+    9 => 'September',
+    10 => 'Oktober',
+    11 => 'November',
+    12 => 'Dezember'
+);
+
+$LANG_WEEK = array(
+    1 => 'Sonntag',
+    2 => 'Montag',
+    3 => 'Dienstag',
+    4 => 'Mittwoch',
+    5 => 'Donnerstag',
+    6 => 'Freitag',
+    7 => 'Samstag'
+);
+
 ###############################################################################
 # Admin - Strings
 # 
@@ -1436,8 +1443,10 @@
     'limit_results' => 'Anzahl Ergebnisse',
     'submit'        => 'Abschicken',
     'edit'          => 'Ändern',
+    'edit_adv'      => 'Erw. Editor',
     'admin_home'    => 'Admin Home',
     'create_new'    => 'Neu anlegen',
+    'create_new_adv'=> 'Neu anlegen (Erw.)',
     'enabled'       => 'Aktiv',
     'title'         => 'Titel',
     'type'          => 'Typ',
@@ -1446,9 +1455,12 @@
     'save'          => 'Speichern',
     'cancel'        => 'Abbruch',
     'delete'        => 'Löschen',
+    'delete_sel'    => 'Delete selected',
     'copy'          => 'Kopieren',
     'no_results'    => '- Keine Einträge gefunden -',
-    'data_error'    => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error'    => 'There was an error processing the subscription data. Please check the data source.',
+    'preview'       => 'Vorschau',
+    'records_found' => 'Einträge',
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/german.php 1.4.1.src/cpanel-glprivate/language/german.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/german.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/german.php	2006-12-16 14:47:07.000000000 -0600
@@ -91,7 +91,7 @@
     45 => 'MySQL Fehlernummer',
     46 => 'MySQL Fehlermeldung',
     47 => 'Anmelden',
-    48 => 'Userprofil ndern',
+    48 => 'Mein Profil',
     49 => 'Einstellungen',
     50 => 'Fehler im SQL-Befehl',
     51 => 'Hilfe',
@@ -166,28 +166,10 @@
     120 => 'Permalink',
     121 => 'Kommentare (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'Alle HTML-Tags sind erlaubt'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Terminkalender',
-    2 => 'Es gibt keine Termine anzuzeigen.',
-    3 => 'Wann',
-    4 => 'Wo',
-    5 => 'Beschreibung',
-    6 => 'Termin hinzufgen',
-    7 => 'Anstehende Termine',
-    8 => 'Wenn Du diesen Termin zu Deinem Kalender hinzufgst, kannst Du Dir schneller einen berblick ber die Termine verschaffen, die Dich interessieren, indem Du einfach auf "Mein Kalender" klickst.',
-    9 => 'Zu Meinem Kalender hinzufgen',
-    10 => 'Aus Meinem Kalender entfernen',
-    11 => "Termin wird zum Kalender von {$_USER['username']} hinzugefgt",
-    12 => 'Termin',
-    13 => 'Beginnt',
-    14 => 'Endet',
-    15 => 'Zurck zum Kalender'
+    123 => 'Alle HTML-Tags sind erlaubt',
+    124 => 'Alle angekreuzten Eintrge lschen',
+    125 => 'Willst Du wirklich alle angekreuzten Eintrge lschen?',
+    126 => 'Alle Eintrge ankreuzen oder deselektieren'
 );
 
 ###############################################################################
@@ -240,7 +222,7 @@
     11 => 'Keine Kommentare',
     12 => 'User-Einstellungen fr',
     13 => 'E-Mail Nightly Digest',
-    14 => 'Dieses Passwort wurde mit einem Zufallsgenerator erzeugt. Es wird empfohlen, das Passwort nach dem Anmelden sofort zu ndern. Um Dein Passwort zu ndern, melde Dich bitte an und whle dann den Punkt Userprofil ndern im Block Einstellungen.',
+    14 => 'Dieses Passwort wurde mit einem Zufallsgenerator erzeugt. Es wird empfohlen, das Passwort nach dem Anmelden sofort zu ndern. Um Dein Passwort zu ndern, melde Dich bitte an und whle dann den Punkt Mein Profil im Block Einstellungen.',
     15 => "Dein Account fr {$_CONF['site_name']} wurde erfolgreich angelegt. Um ihn benutzen zu knnen, melde Dich bitte mit den folgenden Informationen an. Diese E-Mail bitte aufheben.",
     16 => 'Deine Zugangsdaten',
     17 => 'Account existiert nicht',
@@ -280,7 +262,7 @@
     51 => 'Nur die Artikel',
     52 => 'Defaultwert:',
     53 => 'Receive the days stories every night',
-    54 => 'Themen und Autoren auswhlen, die Du NICHT sehen willst.',
+    54 => 'Kategorien und Autoren auswhlen, die Du NICHT sehen willst.',
     55 => 'Wenn Du hier nichts ankreuzt, wird die Default-Auswahl an Blcken angezeigt. Sobald Du anfngst, Blcke anzukreuzen, werden auch nur noch diejenigen angezeigt, die angekreuzt sind! Die Default-Blcke sind <b>fett</b> markiert.',
     56 => 'Autoren',
     57 => 'Anzeigemodus',
@@ -292,7 +274,7 @@
     63 => "Dein Passwort sollte in Krze per E-Mail eintreffen. Bitte beachte die Hinweise in der E-Mail und Danke fr Dein Interesse an {$_CONF['site_name']}",
     64 => 'Kommentar-Einstellungen fr',
     65 => 'Bitte noch einmal versuchen, Dich anzumelden',
-    66 => "Hast Du Dich vertippt? Bitte versuch noch einmal, Dich hier anzumelden.",
+    66 => 'Hast Du Dich vertippt? Bitte versuch noch einmal, Dich hier anzumelden.',
     67 => 'Mitglied seit',
     68 => 'Angemeldet fr',
     69 => 'Wie lange soll das System Dich nach dem Anmelden erkennen?',
@@ -349,7 +331,40 @@
     120 => 'Account aktiviert',
     121 => 'Dienst',
     122 => 'Sorry, derzeit knnen sich keine neuen User anmelden.',
-    123 => "Bist Du ein <a href=\"{$_CONF['site_url']}/users.php?mode=new\">neuer User</a>?"
+    123 => "Bist Du ein <a href=\"{$_CONF['site_url']}/users.php?mode=new\">neuer User</a>?",
+    124 => 'E-Mail besttigen',
+    125 => 'Die E-Mail-Adressen stimmen nicht berein. Bitte in beiden Feldern die gleiche E-Mail-Adresse eintragen!',
+    126 => 'Bitte die gleiche Adresse noch einmal eingeben',
+    127 => 'Um diese Angaben zu ndern musst Du Dein aktuelles Passwort eingeben.',
+    128 => 'Dein Name',
+    129 => 'Passwort &amp; E-Mail',
+    130 => 'ber Dich',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Kommentaranzeige',
+    134 => 'Kommentaranzeige',
+    135 => '<li>Anzeigemodus: Wie Kommentare angezeigt werden</li><li>Sortierreihenfolge: Wie Kommentare sortiert werden</li><li>Kommentarlimit: Maximale Anzahl Kommentare, die angezeigt werden (Default: 100)</li>',
+    136 => 'Kategorien und Autoren ausblenden',
+    137 => 'Artikel ausfiltern',
+    138 => 'Darstellung und Sprache',
+    139 => 'Darstellung und Sprache',
+    140 => '<li>Kategorien ohne Icons: Wenn angekreuzt werden in Artikeln keine Icons mehr angezeigt.</li><li>Keine Blcke: Wenn angekreuzt werden nur noch die Blcke Einstellungen, Kategorien und der Admin-Block angezeigt.<li>Einstellung fr die maximale Anzahl von Artikeln pro Seite.</li><li>Whle das Erscheinungsbild der Website und das bevorzugte Datumsformat.</li>',
+    141 => 'Privatsphre',
+    142 => 'Per Default ist es Admins und anderen Usern der Site erlaubt, Dir E-Mails zu schicken sowie Deinen Status unter "Wer Ist Online?" zu sehen. Hier kannst Du diese Einstellungen ndern.',
+    143 => 'Blcke anzeigen',
+    144 => 'Blcke anzeigen',
+    145 => 'Vorschau: So sieht Dein Profil aus',
+    146 => 'Passwort &amp; E-Mail',
+    147 => 'Hier kannst Du Dein Passwort und Deine E-Mai-Adresse ndern sowie bestimmen, wie lange Du eingeloggt bleiben willst. Passwort und E-Mail mssen zum ndern zweimal eingegeben werden.',
+    148 => 'ber Dich',
+    149 => 'Hier kannst Du eingeben, was andere User ber Dich sehen knnen:<li>Die Signatur wird an Kommentare angefgt</li><li>In der Biographie kannst Du etwas ber Dich erzhlen</li><li>Du kannst Deinen PGP-Key hinterlegen</li>',
+    150 => 'Hinweis: JavaScript wird nicht bentigt, aber empfohlen',
+    151 => 'Vorschau',
+    152 => 'Username &amp; Passwort',
+    153 => 'Darstellung &amp; Sprache',
+    154 => 'Filter',
+    155 => 'Privatsphre',
+    156 => 'Account lschen'
 );
 
 ###############################################################################
@@ -529,7 +544,7 @@
     1 => 'To submit a %s you are required to be logged in as a user.',
     2 => 'Anmelden',
     3 => 'Neuer User',
-    4 => 'Einen Termin einreichen',
+    4 => '',
     5 => 'Einen Link einreichen',
     6 => 'Einen Artikel einreichen',
     7 => 'Anmeldung erforderlich',
@@ -666,38 +681,9 @@
     62 => 'Artikellimit',
     63 => 'Block-Titel nicht erlaubt',
     64 => 'Der Titel kann nicht leer sein und darf kein HTML enthalten!',
-    65 => 'Reihenfolge'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Termin-Editor',
-    2 => 'Error',
-    3 => 'Titel',
-    4 => 'URL',
-    5 => 'Startdatum',
-    6 => 'Enddatum',
-    7 => 'Ort',
-    8 => 'Beschreibung',
-    9 => '(mit http://)',
-    10 => 'Es mssen mindestens Datum und Uhrzeit, Titel und Beschreibung angegeben werden!',
-    11 => 'Termin-Manager',
-    12 => 'Auf das ndern-Icon klicken, um einen Termin zu ndern oder zu lschen. Mit Neu anlegen (s.o.) wird ein neuer Termin angelegt. Das Kopie-Icon erzeugt eine Kopie eines vorhandenen Termins.',
-    13 => 'Titel',
-    14 => 'Startdatum',
-    15 => 'Enddatum',
-    16 => 'Zugriff verweigert',
-    17 => "Du hast keine Zugriffsrechte fr diesen Termin. Dieser Zugriffsversuch wurde protokolliert. <a href=\"{$_CONF['site_admin_url']}/event.php\">Zurck zum Administrator-Men</a>.",
-    18 => 'Neuer Termin',
-    19 => 'Admin Home',
-    20 => 'Speichern',
-    21 => 'Abbruch',
-    22 => 'Lschen',
-    23 => 'Ungltiges Startdatum.',
-    24 => 'Ungltiges Enddatum.',
-    25 => 'Enddatum ist vor dem Startdatum.'
+    65 => 'Reihenfolge',
+    66 => 'Autotags',
+    67 => 'Ankreuzen, um Autotags zu interpretieren'
 );
 
 ###############################################################################
@@ -730,7 +716,7 @@
     24 => 'Diese ID wird bereits fr einen anderen Artikel benutzt. Bitte whle eine andere ID.',
     25 => 'Fehler beim Speichern des Artikels',
     26 => 'Artikelvorschau',
-    27 => 'Wenn Du [unscaledX] statt [imageX] verwendest, wird das Bild in Originalgre eingebunden.',
+    27 => '<p>Wenn Du [unscaledX] statt [imageX] verwendest, wird das Bild in Originalgre eingebunden.',
     28 => '<p><strong>VORSCHAU:</strong> Der Vorschau-Button sollte nur verwendet werden, wenn der Artikel keine Bilder enthlt. Bei Artikeln mit Bildern empfiehlt es sich, den Artikel als Entwurf zu markieren, zu speichern und dann von der Liste der Artikel aus zu betrachten.</p>',
     29 => 'Trackbacks',
     30 => 'Fehler beim Datei-Upload',
@@ -754,7 +740,7 @@
     48 => 'image',
     49 => 'right',
     50 => 'left',
-    51 => 'Die oben ausgewhlten Bilder knnen im Artikel verwendet werden, indem dafr spezielle Platzhalter in den Text eingefgt werden. Diese Platzhalter sind [imageX], [imageX_right] und [imageX_left], wobei statt des X jeweils die Nummer des Bildes eingetragen werden muss.<br>HINWEIS: Es mssen alle ausgewhlten Bilder verwendet werden. Andernfalls kann der Artikel nicht gespeichert werden.<br>',
+    51 => '<p>Die oben ausgewhlten Bilder knnen im Artikel verwendet werden, indem dafr spezielle Platzhalter in den Text eingefgt werden. Diese Platzhalter sind [imageX], [imageX_right] und [imageX_left], wobei statt des X jeweils die Nummer des Bildes eingetragen werden muss.<br>HINWEIS: Es mssen alle ausgewhlten Bilder verwendet werden. Andernfalls kann der Artikel nicht gespeichert werden.<br>',
     52 => 'Lschen',
     53 => 'wurde nicht verwendet. Du musst dieses Bild im Text des Artikels verwenden oder es lschen bevor Du Deine nderungen sichern kannst.',
     54 => 'Nicht verwendete Bilder',
@@ -782,13 +768,15 @@
     76 => 'Publish Options',
     77 => 'Javascript needs to be enabled for Advanced Editor. Option can be disabled in the main site config.php',
     78 => 'Click <a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default">here</a> to use default editor',
-    79 => 'Preview',
+    79 => 'Vorschau',
     80 => 'Editor',
     81 => 'Publish Options',
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -841,7 +829,7 @@
     9 => '(keine Leerzeichen!)',
     10 => 'Bitte die Felder Username und E-Mail-Adresse ausfllen.',
     11 => 'User-Manager',
-    12 => 'Auf das ndern-Icon klicken, um einen User zu ndern oder zu lschen. Ein neuer User kann mit Neu anlegen (s.o.) angelegt werden. Es gibt auch eine einfache Suchfunktion, mit der nach Teilen von Usernamen, E-Mail-Adressen oder richtigen Namen gesucht werden kann (z.B. *son* oder *.de).',
+    12 => 'Auf das ndern-Icon klicken, um einen User zu ndern oder zu lschen. Ein neuer User kann mit Neu anlegen (s.o.) angelegt werden.',
     13 => 'SecLev',
     14 => 'Reg. Datum',
     15 => 'Neuer User',
@@ -876,7 +864,36 @@
     44 => 'Erwartet Freigabe',
     45 => 'Aktiv',
     46 => 'User-Status',
-    47 => 'ndern'
+    47 => 'ndern',
+    48 => 'Admin-Gruppen anzeigen',
+    49 => 'Admin-Gruppe',
+    50 => 'Ankreuzen, um diese Gruppe als "Admin-Gruppe" ausfiltern zu knnen',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'User lschen',
+    55 => "This only works if you have <code>\$_CONF['lastlogin'] = true;</code> in your config.php",
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Liste aktualisieren',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -906,53 +923,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Sonntag',
-    2 => 'Montag',
-    3 => 'Dienstag',
-    4 => 'Mittwoch',
-    5 => 'Donnerstag',
-    6 => 'Freitag',
-    7 => 'Samstag',
-    8 => 'Neuer Termin',
-    9 => 'Termin',
-    10 => 'Termine am',
-    11 => 'Kalender',
-    12 => 'Mein Kalender',
-    13 => 'Januar',
-    14 => 'Februar',
-    15 => 'Mrz',
-    16 => 'April',
-    17 => 'Mai',
-    18 => 'Juni',
-    19 => 'Juli',
-    20 => 'August',
-    21 => 'September',
-    22 => 'Oktober',
-    23 => 'November',
-    24 => 'Dezember',
-    25 => 'Zurck zum ',
-    26 => 'ganztgig',
-    27 => 'Woche',
-    28 => 'Persnlicher Kalender fr',
-    29 => 'ffentlicher Kalender',
-    30 => 'Termin lschen',
-    31 => 'Hinzufgen',
-    32 => 'Termin',
-    33 => 'Datum',
-    34 => 'Uhrzeit',
-    35 => 'Neuer Termin',
-    36 => 'Submit',
-    37 => 'Sorry, der persnliche Kalender ist auf dieser Site nicht verfgbar.',
-    38 => 'Persnlicher Termin-Editor',
-    39 => 'Tag',
-    40 => 'Woche',
-    41 => 'Monat'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1068,7 +1038,7 @@
     39 => 'Bitte die Felder Feed-Titel, Beschreibung und Dateiname ausfllen.',
     40 => 'Bitte ein Limit (Anzahl Eintrge oder Anzahl Stunden) eingeben.',
     41 => 'Links',
-    42 => 'Termine',
+    42 => '',
     43 => 'Alle',
     44 => 'Keine',
     45 => 'Feed-Link fr Kategorie',
@@ -1076,7 +1046,9 @@
     47 => 'Suchen',
     48 => 'ndern',
     49 => 'Feed-Logo',
-    50 => "Relativ zur URL dieser Site ({$_CONF['site_url']})"
+    50 => "Relativ zur URL dieser Site ({$_CONF['site_url']})",
+    51 => 'Der gewhlte Dateiname wird bereits von einem anderen Feed verwendet. Bitte whle einen anderen.',
+    52 => 'Fehler: Dateiname existiert schon'
 );
 
 ###############################################################################
@@ -1087,7 +1059,7 @@
     2 => "Danke fr Deinen Beitrag zu {$_CONF['site_name']}. Dein Artikel wurde an unser Team weitergeleitet. Wenn er akzeptiert wird, wird er bald auf dieser Website fr alle Besucher zu lesen sein.",
     3 => "Danke fr Deinen Beitrag zu {$_CONF['site_name']}. Dein Link wurde an unser Team weitergeleitet. Wenn er akzeptiert wird, wird er bald unter den <a href=\"{$_CONF['site_url']}/links.php\">Links</a> aufgelistet werden.",
     4 => "Danke fr Deinen Beitrag zu {$_CONF['site_name']}. Dein Termin wurde an unser Team weitergeleitet. Wenn er akzeptiert wird, wird er bald in unserem <a href=\"{$_CONF['site_url']}/calendar.php\">Kalender</a> erscheinen.",
-    5 => 'Dein User-Profil wurde gespeichert.',
+    5 => 'Dein Userprofil wurde gespeichert.',
     6 => 'Deine Einstellungen wurden gespeichert.',
     7 => 'Deine Kommentar-Einstellungen wurden gespeichert.',
     8 => 'Abmeldung erfolgt. Du bist jetzt nicht mehr angemeldet.',
@@ -1157,7 +1129,16 @@
     72 => 'Bei der Installation des Plugins trat ein Fehler auf. Siehe error.log fr weitere Informationen.',
     73 => 'Bei der Deinstallation des Plugins trat ein Fehler aus. Siehe error.log fr weitere Informationen.',
     74 => 'Der Pingback wurde erfolgreich verschickt.',
-    75 => 'Trackbacks mssen als POST-Request verschickt werden.'
+    75 => 'Trackbacks mssen als POST-Request verschickt werden.',
+    76 => 'Willst Du diesen Eintrag wirklich lschen?',
+    77 => 'HINWEIS:<br>Du hast UTF-8 als Default-Zeichensatz angegeben. Dein Webserver untersttzt jedoch kein "multibyte encoding". Installiere bitte die mbstring-Erweiterungen fr PHP oder benutze einen anderen Zeichensatz bzw. eine andere Sprache.',
+    78 => 'Bitte sicherstellen, dass die angegebene E-Mail-Adresse in beiden Fllen die gleiche ist.',
+    79 => 'Diese Funktion ist nicht mehr unter dieser URL verfgbar.',
+    80 => 'Das Plugin, das diesen Feed angelegt hat, ist derzeit nicht aktiviert. Dieser Feed kann nicht bearbeitet werden, solange das Plugin deaktiviert ist.',
+    81 => 'Hast Du Dich vertippt? Bitte versuch noch einmal, Dich hier anzumelden.',
+    82 => 'Du hast die erlaubte Anzahl von Anmeldeversuchen berschritten. Bitte versuche es spter noch einmal.',
+    83 => 'Um Dein Passwort, Deine E-Mail-Adresse oder die "Angemeldet fr"-Zeit zu ndern musst Du Dein aktuelles Passwort eingeben.',
+    84 => 'Um Deinen Account zu lschen musst Du Dein aktuelles Passwort eingeben.'
 );
 
 ###############################################################################
@@ -1208,9 +1189,9 @@
     'cancel' => 'Abbruch',
     'delete' => 'Lschen',
     'canteditroot' => 'Du hast versucht die Gruppe Root zu ndern, obwohl Du selbst nicht Mitglied dieser Gruppe bist. Der Zugriff wurde daher verweigert. Wende Dich bitte an den Systemadministrator wenn Du der Meinung bist, dass das ein Fehler wre.',
-    'listusers' => 'User',
+    'listusers' => 'Mitglieder',
     'listthem' => 'anzeigen',
-    'usersingroup' => 'User in Gruppe "%s"',
+    'usersingroup' => 'Mitglieder der Gruppe "%s"',
     'usergroupadmin' => 'Usergruppen-Verwaltung',
     'add' => 'Hinzufgen',
     'remove' => 'Lschen',
@@ -1218,7 +1199,7 @@
     'groupmembers' => 'Mitglieder der Gruppe',
     'canteditgroup' => 'Um diese Gruppe bearbeiten zu knnen, musst Du selbst ein Mitglied der Gruppe sein. Wende Dich bitte an den Systemadministrator wenn Du der Meinung bist, dass das ein Fehler wre.',
     'cantlistgroup' => 'Um die Mitglieder dieser Gruppe sehen zu knnen, musst Du selbst ein Mitglied der Gruppe sein. Wende Dich bitte an den Systemadministrator wenn Du der Meinung bist, dass das ein Fehler wre.',
-    'editgroupmsg' => 'To modify the group membership,  click on the member names(s) and use the add or remove buttons. If the member is a member of the group, their name will appear on the "Right" side only. Once you are complete - press <b>Save</b> to update the group and return to the main group admin page.',
+    'editgroupmsg' => 'Um die Gruppenmitgliedschaft eines Users zu ndern, den Usernamen anklicken und entsprechend Hinzufgen oder Lschen anklicken. Nur User in der rechten Liste sind Mitglieder der Gruppe. Um die nderungen zu bernehmen und zur Gruppenliste zurckzukehren, den Button <b>Speichern</b> klicken.',
     'listgroupmsg' => 'Liste aller Mitglieder der Gruppe "<b>%s</b>"',
     'search' => 'Suchen',
     'submit' => 'Abschicken',
@@ -1386,7 +1367,8 @@
     'pingback_note' => 'Um einen Pingback fr einen Artikel zu verschicken, benutze bitte den "' . $LANG24[20] . '"-Eintrag in der Liste der Artikel. Um einen Pingback unabhngig von einem Artikel zu verschicken, bitte <a href="%s">hier klicken</a>.',
     'pbtarget_missing'   => 'Keine Pingback-URL',
     'pbtarget_required'  => 'Gib bitte die Pingback-URL ein',
-    'pb_error_details'   => 'Fehler beim Senden des Pingbacks:'
+    'pb_error_details'   => 'Fehler beim Senden des Pingbacks:',
+    'delete_trackback'   => 'Trackback direkt lschen: '
 );
 
 ###############################################################################
@@ -1409,7 +1391,7 @@
 # %s    scale, "hrs", "weeks"
 
 $LANG_WHATSNEW = array (
-    'new_string'  => '%n neue %i in den letzten %t %s',
+    'new_string'  => '%n neue %i fr die letzten %t %s',
     'new_last'    => 'letzte %t %s',
     'minutes'     => 'Minuten',
     'hours'       => 'Stunden',
@@ -1423,6 +1405,31 @@
     'month'       => 'Monat'
 );
 
+$LANG_MONTH = array(
+    1 => 'Januar',
+    2 => 'Februar',
+    3 => 'Mrz',
+    4 => 'April',
+    5 => 'Mai',
+    6 => 'Juni',
+    7 => 'Juli',
+    8 => 'August',
+    9 => 'September',
+    10 => 'Oktober',
+    11 => 'November',
+    12 => 'Dezember'
+);
+
+$LANG_WEEK = array(
+    1 => 'Sonntag',
+    2 => 'Montag',
+    3 => 'Dienstag',
+    4 => 'Mittwoch',
+    5 => 'Donnerstag',
+    6 => 'Freitag',
+    7 => 'Samstag'
+);
+
 ################################################################################
 # Admin - Strings
 #
@@ -1434,8 +1441,10 @@
     'limit_results' => 'Anzahl Ergebnisse',
     'submit'        => 'Abschicken',
     'edit'          => 'ndern',
+    'edit_adv'      => 'Erw. Editor',
     'admin_home'    => 'Admin Home',
     'create_new'    => 'Neu anlegen',
+    'create_new_adv'=> 'Neu anlegen (Erw.)',
     'enabled'       => 'Aktiv',
     'title'         => 'Titel',
     'type'          => 'Typ',
@@ -1444,9 +1453,12 @@
     'save'          => 'Speichern',
     'cancel'        => 'Abbruch',
     'delete'        => 'Lschen',
+    'delete_sel'    => 'Delete selected',
     'copy'          => 'Kopieren',
     'no_results'    => '- Keine Eintrge gefunden -',
-    'data_error'    => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error'    => 'There was an error processing the subscription data. Please check the data source.',
+    'preview'       => 'Vorschau',
+    'records_found' => 'Eintrge'
 );
 
 # Localisation of the texts for the various drop-down menus that are actually
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/german_utf-8.php 1.4.1.src/cpanel-glprivate/language/german_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/german_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/german_utf-8.php	2006-12-16 14:48:36.000000000 -0600
@@ -91,7 +91,7 @@
     45 => 'MySQL Fehlernummer',
     46 => 'MySQL Fehlermeldung',
     47 => 'Anmelden',
-    48 => 'Userprofil ändern',
+    48 => 'Mein Profil',
     49 => 'Einstellungen',
     50 => 'Fehler im SQL-Befehl',
     51 => 'Hilfe',
@@ -166,28 +166,10 @@
     120 => 'Permalink',
     121 => 'Kommentare (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'Alle HTML-Tags sind erlaubt'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Terminkalender',
-    2 => 'Es gibt keine Termine anzuzeigen.',
-    3 => 'Wann',
-    4 => 'Wo',
-    5 => 'Beschreibung',
-    6 => 'Termin hinzufügen',
-    7 => 'Anstehende Termine',
-    8 => 'Wenn Du diesen Termin zu Deinem Kalender hinzufügst, kannst Du Dir schneller einen Überblick über die Termine verschaffen, die Dich interessieren, indem Du einfach auf "Mein Kalender" klickst.',
-    9 => 'Zu Meinem Kalender hinzufügen',
-    10 => 'Aus Meinem Kalender entfernen',
-    11 => "Termin wird zum Kalender von {$_USER['username']} hinzugefügt",
-    12 => 'Termin',
-    13 => 'Beginnt',
-    14 => 'Endet',
-    15 => 'Zurück zum Kalender'
+    123 => 'Alle HTML-Tags sind erlaubt',
+    124 => 'Alle angekreuzten Einträge löschen',
+    125 => 'Willst Du wirklich alle angekreuzten Einträge löschen?',
+    126 => 'Alle Einträge ankreuzen oder deselektieren'
 );
 
 ###############################################################################
@@ -240,7 +222,7 @@
     11 => 'Keine Kommentare',
     12 => 'User-Einstellungen für',
     13 => 'E-Mail Nightly Digest',
-    14 => 'Dieses Passwort wurde mit einem Zufallsgenerator erzeugt. Es wird empfohlen, das Passwort nach dem Anmelden sofort zu ändern. Um Dein Passwort zu ändern, melde Dich bitte an und wähle dann den Punkt Userprofil ändern im Block Einstellungen.',
+    14 => 'Dieses Passwort wurde mit einem Zufallsgenerator erzeugt. Es wird empfohlen, das Passwort nach dem Anmelden sofort zu ändern. Um Dein Passwort zu ändern, melde Dich bitte an und wähle dann den Punkt Mein Profil im Block Einstellungen.',
     15 => "Dein Account für {$_CONF['site_name']} wurde erfolgreich angelegt. Um ihn benutzen zu können, melde Dich bitte mit den folgenden Informationen an. Diese E-Mail bitte aufheben.",
     16 => 'Deine Zugangsdaten',
     17 => 'Account existiert nicht',
@@ -280,7 +262,7 @@
     51 => 'Nur die Artikel',
     52 => 'Defaultwert:',
     53 => 'Receive the days stories every night',
-    54 => 'Themen und Autoren auswählen, die Du NICHT sehen willst.',
+    54 => 'Kategorien und Autoren auswählen, die Du NICHT sehen willst.',
     55 => 'Wenn Du hier nichts ankreuzt, wird die Default-Auswahl an Blöcken angezeigt. Sobald Du anfängst, Blöcke anzukreuzen, werden auch nur noch diejenigen angezeigt, die angekreuzt sind! Die Default-Blöcke sind <b>fett</b> markiert.',
     56 => 'Autoren',
     57 => 'Anzeigemodus',
@@ -292,7 +274,7 @@
     63 => "Dein Passwort sollte in Kürze per E-Mail eintreffen. Bitte beachte die Hinweise in der E-Mail und Danke für Dein Interesse an {$_CONF['site_name']}",
     64 => 'Kommentar-Einstellungen für',
     65 => 'Bitte noch einmal versuchen, Dich anzumelden',
-    66 => "Hast Du Dich vertippt? Bitte versuch noch einmal, Dich hier anzumelden.",
+    66 => 'Hast Du Dich vertippt? Bitte versuch noch einmal, Dich hier anzumelden.',
     67 => 'Mitglied seit',
     68 => 'Angemeldet für',
     69 => 'Wie lange soll das System Dich nach dem Anmelden erkennen?',
@@ -349,7 +331,40 @@
     120 => 'Account aktiviert',
     121 => 'Dienst',
     122 => 'Sorry, derzeit können sich keine neuen User anmelden.',
-    123 => "Bist Du ein <a href=\"{$_CONF['site_url']}/users.php?mode=new\">neuer User</a>?"
+    123 => "Bist Du ein <a href=\"{$_CONF['site_url']}/users.php?mode=new\">neuer User</a>?",
+    124 => 'E-Mail bestätigen',
+    125 => 'Die E-Mail-Adressen stimmen nicht überein. Bitte in beiden Feldern die gleiche E-Mail-Adresse eintragen!',
+    126 => 'Bitte die gleiche Adresse noch einmal eingeben',
+    127 => 'Um diese Angaben zu ändern musst Du Dein aktuelles Passwort eingeben.',
+    128 => 'Dein Name',
+    129 => 'Passwort &amp; E-Mail',
+    130 => 'Über Dich',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Kommentaranzeige',
+    134 => 'Kommentaranzeige',
+    135 => '<li>Anzeigemodus: Wie Kommentare angezeigt werden</li><li>Sortierreihenfolge: Wie Kommentare sortiert werden</li><li>Kommentarlimit: Maximale Anzahl Kommentare, die angezeigt werden (Default: 100)</li>',
+    136 => 'Kategorien und Autoren ausblenden',
+    137 => 'Artikel ausfiltern',
+    138 => 'Darstellung und Sprache',
+    139 => 'Darstellung und Sprache',
+    140 => '<li>Kategorien ohne Icons: Wenn angekreuzt werden in Artikeln keine Icons mehr angezeigt.</li><li>Keine Blöcke: Wenn angekreuzt werden nur noch die Blöcke Einstellungen, Kategorien und der Admin-Block angezeigt.<li>Einstellung für die maximale Anzahl von Artikeln pro Seite.</li><li>Wähle das Erscheinungsbild der Website und das bevorzugte Datumsformat.</li>',
+    141 => 'Privatsphäre',
+    142 => 'Per Default ist es Admins und anderen Usern der Site erlaubt, Dir E-Mails zu schicken sowie Deinen Status unter "Wer Ist Online?" zu sehen. Hier kannst Du diese Einstellungen ändern.',
+    143 => 'Blöcke anzeigen',
+    144 => 'Blöcke anzeigen',
+    145 => 'Vorschau: So sieht Dein Profil aus',
+    146 => 'Passwort &amp; E-Mail',
+    147 => 'Hier kannst Du Dein Passwort und Deine E-Mai-Adresse ändern sowie bestimmen, wie lange Du eingeloggt bleiben willst. Passwort und E-Mail müssen zum Ändern zweimal eingegeben werden.',
+    148 => 'Über Dich',
+    149 => 'Hier kannst Du eingeben, was andere User über Dich sehen können:<li>Die Signatur wird an Kommentare angefügt</li><li>In der Biographie kannst Du etwas über Dich erzählen</li><li>Du kannst Deinen PGP-Key hinterlegen</li>',
+    150 => 'Hinweis: JavaScript wird nicht benötigt, aber empfohlen',
+    151 => 'Vorschau',
+    152 => 'Username &amp; Passwort',
+    153 => 'Darstellung &amp; Sprache',
+    154 => 'Filter',
+    155 => 'Privatsphäre',
+    156 => 'Account löschen'
 );
 
 ###############################################################################
@@ -529,7 +544,7 @@
     1 => 'To submit a %s you are required to be logged in as a user.',
     2 => 'Anmelden',
     3 => 'Neuer User',
-    4 => 'Einen Termin einreichen',
+    4 => '',
     5 => 'Einen Link einreichen',
     6 => 'Einen Artikel einreichen',
     7 => 'Anmeldung erforderlich',
@@ -643,7 +658,7 @@
     39 => 'Seite',
     40 => 'links',
     41 => 'rechts',
-    42 => 'Für Geeklog-Default-Blöcke muss ein Block-Title und die Block-Reihenfolge angegeben werden.',
+    42 => 'Für Geeklog-Default-Blöcke muss ein Block-Titel und die Block-Reihenfolge angegeben werden.',
     43 => 'Nur auf der Startseite',
     44 => 'Zugriff verweigert',
     45 => "Du hast keine Zugriffsrechte für diesen Block. Dieser Zugriffsversuch wurde protokolliert. <a href=\"{$_CONF['site_admin_url']}/block.php\">Zurück zum Administrator-Menü</a>.",
@@ -666,38 +681,9 @@
     62 => 'Artikellimit',
     63 => 'Block-Titel nicht erlaubt',
     64 => 'Der Titel kann nicht leer sein und darf kein HTML enthalten!',
-    65 => 'Reihenfolge'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Termin-Editor',
-    2 => 'Error',
-    3 => 'Titel',
-    4 => 'URL',
-    5 => 'Startdatum',
-    6 => 'Enddatum',
-    7 => 'Ort',
-    8 => 'Beschreibung',
-    9 => '(mit http://)',
-    10 => 'Es müssen mindestens Datum und Uhrzeit, Titel und Beschreibung angegeben werden!',
-    11 => 'Termin-Manager',
-    12 => 'Auf das Ändern-Icon klicken, um einen Termin zu ändern oder zu löschen. Mit Neu anlegen (s.o.) wird ein neuer Termin angelegt. Das Kopie-Icon erzeugt eine Kopie eines vorhandenen Termins.',
-    13 => 'Titel',
-    14 => 'Startdatum',
-    15 => 'Enddatum',
-    16 => 'Zugriff verweigert',
-    17 => "Du hast keine Zugriffsrechte für diesen Termin. Dieser Zugriffsversuch wurde protokolliert. <a href=\"{$_CONF['site_admin_url']}/event.php\">Zurück zum Administrator-Menü</a>.",
-    18 => 'Neuer Termin',
-    19 => 'Admin Home',
-    20 => 'Speichern',
-    21 => 'Abbruch',
-    22 => 'Löschen',
-    23 => 'Ungültiges Startdatum.',
-    24 => 'Ungültiges Enddatum.',
-    25 => 'Enddatum ist vor dem Startdatum.'
+    65 => 'Reihenfolge',
+    66 => 'Autotags',
+    67 => 'Ankreuzen, um Autotags zu interpretieren'
 );
 
 ###############################################################################
@@ -730,7 +716,7 @@
     24 => 'Diese ID wird bereits für einen anderen Artikel benutzt. Bitte wähle eine andere ID.',
     25 => 'Fehler beim Speichern des Artikels',
     26 => 'Artikelvorschau',
-    27 => 'Wenn Du [unscaledX] statt [imageX] verwendest, wird das Bild in Originalgröße eingebunden.',
+    27 => '<p>Wenn Du [unscaledX] statt [imageX] verwendest, wird das Bild in Originalgröße eingebunden.',
     28 => '<p><strong>VORSCHAU:</strong> Der Vorschau-Button sollte nur verwendet werden, wenn der Artikel keine Bilder enthält. Bei Artikeln mit Bildern empfiehlt es sich, den Artikel als Entwurf zu markieren, zu speichern und dann von der Liste der Artikel aus zu betrachten.</p>',
     29 => 'Trackbacks',
     30 => 'Fehler beim Datei-Upload',
@@ -754,7 +740,7 @@
     48 => 'image',
     49 => 'right',
     50 => 'left',
-    51 => 'Die oben ausgewählten Bilder können im Artikel verwendet werden, indem dafür spezielle Platzhalter in den Text eingefügt werden. Diese Platzhalter sind [imageX], [imageX_right] und [imageX_left], wobei statt des X jeweils die Nummer des Bildes eingetragen werden muss.<br>HINWEIS: Es müssen alle ausgewählten Bilder verwendet werden. Andernfalls kann der Artikel nicht gespeichert werden.<br>',
+    51 => '<p>Die oben ausgewählten Bilder können im Artikel verwendet werden, indem dafür spezielle Platzhalter in den Text eingefügt werden. Diese Platzhalter sind [imageX], [imageX_right] und [imageX_left], wobei statt des X jeweils die Nummer des Bildes eingetragen werden muss.<br>HINWEIS: Es müssen alle ausgewählten Bilder verwendet werden. Andernfalls kann der Artikel nicht gespeichert werden.<br>',
     52 => 'Löschen',
     53 => 'wurde nicht verwendet. Du musst dieses Bild im Text des Artikels verwenden oder es löschen bevor Du Deine Änderungen sichern kannst.',
     54 => 'Nicht verwendete Bilder',
@@ -782,13 +768,15 @@
     76 => 'Publish Options',
     77 => 'Javascript needs to be enabled for Advanced Editor. Option can be disabled in the main site config.php',
     78 => 'Click <a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default">here</a> to use default editor',
-    79 => 'Preview',
+    79 => 'Vorschau',
     80 => 'Editor',
     81 => 'Publish Options',
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -841,7 +829,7 @@
     9 => '(keine Leerzeichen!)',
     10 => 'Bitte die Felder Username und E-Mail-Adresse ausfüllen.',
     11 => 'User-Manager',
-    12 => 'Auf das Ändern-Icon klicken, um einen User zu ändern oder zu löschen. Ein neuer User kann mit Neu anlegen (s.o.) angelegt werden. Es gibt auch eine einfache Suchfunktion, mit der nach Teilen von Usernamen, E-Mail-Adressen oder richtigen Namen gesucht werden kann (z.B. *son* oder *.de).',
+    12 => 'Auf das Ändern-Icon klicken, um einen User zu ändern oder zu löschen. Ein neuer User kann mit Neu anlegen (s.o.) angelegt werden.',
     13 => 'SecLev',
     14 => 'Reg. Datum',
     15 => 'Neuer User',
@@ -876,7 +864,36 @@
     44 => 'Erwartet Freigabe',
     45 => 'Aktiv',
     46 => 'User-Status',
-    47 => 'Ändern'
+    47 => 'Ändern',
+    48 => 'Admin-Gruppen anzeigen',
+    49 => 'Admin-Gruppe',
+    50 => 'Ankreuzen, um diese Gruppe als "Admin-Gruppe" ausfiltern zu können',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'User löschen',
+    55 => "This only works if you have <code>\$_CONF['lastlogin'] = true;</code> in your config.php",
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Liste aktualisieren',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -906,53 +923,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Sonntag',
-    2 => 'Montag',
-    3 => 'Dienstag',
-    4 => 'Mittwoch',
-    5 => 'Donnerstag',
-    6 => 'Freitag',
-    7 => 'Samstag',
-    8 => 'Neuer Termin',
-    9 => 'Termin',
-    10 => 'Termine am',
-    11 => 'Kalender',
-    12 => 'Mein Kalender',
-    13 => 'Januar',
-    14 => 'Februar',
-    15 => 'März',
-    16 => 'April',
-    17 => 'Mai',
-    18 => 'Juni',
-    19 => 'Juli',
-    20 => 'August',
-    21 => 'September',
-    22 => 'Oktober',
-    23 => 'November',
-    24 => 'Dezember',
-    25 => 'Zurück zum ',
-    26 => 'ganztägig',
-    27 => 'Woche',
-    28 => 'Persönlicher Kalender für',
-    29 => 'Öffentlicher Kalender',
-    30 => 'Termin löschen',
-    31 => 'Hinzufügen',
-    32 => 'Termin',
-    33 => 'Datum',
-    34 => 'Uhrzeit',
-    35 => 'Neuer Termin',
-    36 => 'Submit',
-    37 => 'Sorry, der persönliche Kalender ist auf dieser Site nicht verfügbar.',
-    38 => 'Persönlicher Termin-Editor',
-    39 => 'Tag',
-    40 => 'Woche',
-    41 => 'Monat'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1068,7 +1038,7 @@
     39 => 'Bitte die Felder Feed-Titel, Beschreibung und Dateiname ausfüllen.',
     40 => 'Bitte ein Limit (Anzahl Einträge oder Anzahl Stunden) eingeben.',
     41 => 'Links',
-    42 => 'Termine',
+    42 => '',
     43 => 'Alle',
     44 => 'Keine',
     45 => 'Feed-Link für Kategorie',
@@ -1076,7 +1046,9 @@
     47 => 'Suchen',
     48 => 'Ändern',
     49 => 'Feed-Logo',
-    50 => "Relativ zur URL dieser Site ({$_CONF['site_url']})"
+    50 => "Relativ zur URL dieser Site ({$_CONF['site_url']})",
+    51 => 'Der gewählte Dateiname wird bereits von einem anderen Feed verwendet. Bitte wähle einen anderen.',
+    52 => 'Fehler: Dateiname existiert schon'
 );
 
 ###############################################################################
@@ -1087,7 +1059,7 @@
     2 => "Danke für Deinen Beitrag zu {$_CONF['site_name']}. Dein Artikel wurde an unser Team weitergeleitet. Wenn er akzeptiert wird, wird er bald auf dieser Website für alle Besucher zu lesen sein.",
     3 => "Danke für Deinen Beitrag zu {$_CONF['site_name']}. Dein Link wurde an unser Team weitergeleitet. Wenn er akzeptiert wird, wird er bald unter den <a href=\"{$_CONF['site_url']}/links.php\">Links</a> aufgelistet werden.",
     4 => "Danke für Deinen Beitrag zu {$_CONF['site_name']}. Dein Termin wurde an unser Team weitergeleitet. Wenn er akzeptiert wird, wird er bald in unserem <a href=\"{$_CONF['site_url']}/calendar.php\">Kalender</a> erscheinen.",
-    5 => 'Dein User-Profil wurde gespeichert.',
+    5 => 'Dein Userprofil wurde gespeichert.',
     6 => 'Deine Einstellungen wurden gespeichert.',
     7 => 'Deine Kommentar-Einstellungen wurden gespeichert.',
     8 => 'Abmeldung erfolgt. Du bist jetzt nicht mehr angemeldet.',
@@ -1157,7 +1129,16 @@
     72 => 'Bei der Installation des Plugins trat ein Fehler auf. Siehe error.log für weitere Informationen.',
     73 => 'Bei der Deinstallation des Plugins trat ein Fehler aus. Siehe error.log für weitere Informationen.',
     74 => 'Der Pingback wurde erfolgreich verschickt.',
-    75 => 'Trackbacks müssen als POST-Request verschickt werden.'
+    75 => 'Trackbacks müssen als POST-Request verschickt werden.',
+    76 => 'Willst Du diesen Eintrag wirklich löschen?',
+    77 => 'HINWEIS:<br>Du hast UTF-8 als Default-Zeichensatz angegeben. Dein Webserver unterstützt jedoch kein "multibyte encoding". Installiere bitte die mbstring-Erweiterungen für PHP oder benutze einen anderen Zeichensatz bzw. eine andere Sprache.',
+    78 => 'Bitte sicherstellen, dass die angegebene E-Mail-Adresse in beiden Fällen die gleiche ist.',
+    79 => 'Diese Funktion ist nicht mehr unter dieser URL verfügbar.',
+    80 => 'Das Plugin, das diesen Feed angelegt hat, ist derzeit nicht aktiviert. Dieser Feed kann nicht bearbeitet werden, solange das Plugin deaktiviert ist.',
+    81 => 'Hast Du Dich vertippt? Bitte versuch noch einmal, Dich hier anzumelden.',
+    82 => 'Du hast die erlaubte Anzahl von Anmeldeversuchen überschritten. Bitte versuche es später noch einmal.',
+    83 => 'Um Dein Passwort, Deine E-Mail-Adresse oder die "Angemeldet für"-Zeit zu ändern musst Du Dein aktuelles Passwort eingeben.',
+    84 => 'Um Deinen Account zu löschen musst Du Dein aktuelles Passwort eingeben.'
 );
 
 ###############################################################################
@@ -1208,9 +1189,9 @@
     'cancel' => 'Abbruch',
     'delete' => 'Löschen',
     'canteditroot' => 'Du hast versucht die Gruppe Root zu ändern, obwohl Du selbst nicht Mitglied dieser Gruppe bist. Der Zugriff wurde daher verweigert. Wende Dich bitte an den Systemadministrator wenn Du der Meinung bist, dass das ein Fehler wäre.',
-    'listusers' => 'User',
+    'listusers' => 'Mitglieder',
     'listthem' => 'anzeigen',
-    'usersingroup' => 'User in Gruppe "%s"',
+    'usersingroup' => 'Mitglieder der Gruppe "%s"',
     'usergroupadmin' => 'Usergruppen-Verwaltung',
     'add' => 'Hinzufügen',
     'remove' => 'Löschen',
@@ -1218,7 +1199,7 @@
     'groupmembers' => 'Mitglieder der Gruppe',
     'canteditgroup' => 'Um diese Gruppe bearbeiten zu können, musst Du selbst ein Mitglied der Gruppe sein. Wende Dich bitte an den Systemadministrator wenn Du der Meinung bist, dass das ein Fehler wäre.',
     'cantlistgroup' => 'Um die Mitglieder dieser Gruppe sehen zu können, musst Du selbst ein Mitglied der Gruppe sein. Wende Dich bitte an den Systemadministrator wenn Du der Meinung bist, dass das ein Fehler wäre.',
-    'editgroupmsg' => 'To modify the group membership,  click on the member names(s) and use the add or remove buttons. If the member is a member of the group, their name will appear on the "Right" side only. Once you are complete - press <b>Save</b> to update the group and return to the main group admin page.',
+    'editgroupmsg' => 'Um die Gruppenmitgliedschaft eines Users zu ändern, den Usernamen anklicken und entsprechend Hinzufügen oder Löschen anklicken. Nur User in der rechten Liste sind Mitglieder der Gruppe. Um die Änderungen zu übernehmen und zur Gruppenliste zurückzukehren, den Button <b>Speichern</b> klicken.',
     'listgroupmsg' => 'Liste aller Mitglieder der Gruppe "<b>%s</b>"',
     'search' => 'Suchen',
     'submit' => 'Abschicken',
@@ -1386,7 +1367,8 @@
     'pingback_note' => 'Um einen Pingback für einen Artikel zu verschicken, benutze bitte den "' . $LANG24[20] . '"-Eintrag in der Liste der Artikel. Um einen Pingback unabhängig von einem Artikel zu verschicken, bitte <a href="%s">hier klicken</a>.',
     'pbtarget_missing'   => 'Keine Pingback-URL',
     'pbtarget_required'  => 'Gib bitte die Pingback-URL ein',
-    'pb_error_details'   => 'Fehler beim Senden des Pingbacks:'
+    'pb_error_details'   => 'Fehler beim Senden des Pingbacks:',
+    'delete_trackback'   => 'Trackback direkt löschen: '
 );
 
 ###############################################################################
@@ -1409,7 +1391,7 @@
 # %s    scale, "hrs", "weeks"
 
 $LANG_WHATSNEW = array (
-    'new_string'  => '%n neue %i in den letzten %t %s',
+    'new_string'  => '%n neue %i für die letzten %t %s',
     'new_last'    => 'letzte %t %s',
     'minutes'     => 'Minuten',
     'hours'       => 'Stunden',
@@ -1423,6 +1405,31 @@
     'month'       => 'Monat'
 );
 
+$LANG_MONTH = array(
+    1 => 'Januar',
+    2 => 'Februar',
+    3 => 'März',
+    4 => 'April',
+    5 => 'Mai',
+    6 => 'Juni',
+    7 => 'Juli',
+    8 => 'August',
+    9 => 'September',
+    10 => 'Oktober',
+    11 => 'November',
+    12 => 'Dezember'
+);
+
+$LANG_WEEK = array(
+    1 => 'Sonntag',
+    2 => 'Montag',
+    3 => 'Dienstag',
+    4 => 'Mittwoch',
+    5 => 'Donnerstag',
+    6 => 'Freitag',
+    7 => 'Samstag'
+);
+
 ################################################################################
 # Admin - Strings
 #
@@ -1434,8 +1441,10 @@
     'limit_results' => 'Anzahl Ergebnisse',
     'submit'        => 'Abschicken',
     'edit'          => 'Ändern',
+    'edit_adv'      => 'Erw. Editor',
     'admin_home'    => 'Admin Home',
     'create_new'    => 'Neu anlegen',
+    'create_new_adv'=> 'Neu anlegen (Erw.)',
     'enabled'       => 'Aktiv',
     'title'         => 'Titel',
     'type'          => 'Typ',
@@ -1444,9 +1453,12 @@
     'save'          => 'Speichern',
     'cancel'        => 'Abbruch',
     'delete'        => 'Löschen',
+    'delete_sel'    => 'Delete selected',
     'copy'          => 'Kopieren',
     'no_results'    => '- Keine Einträge gefunden -',
-    'data_error'    => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error'    => 'There was an error processing the subscription data. Please check the data source.',
+    'preview'       => 'Vorschau',
+    'records_found' => 'Einträge'
 );
 
 # Localisation of the texts for the various drop-down menus that are actually
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/hebrew.php 1.4.1.src/cpanel-glprivate/language/hebrew.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/hebrew.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/hebrew.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,1516 +0,0 @@
-<?php
-
-###############################################################################
-# hebrew.php # last Update  17/7/2006
-# Version 1.4 #1.6
-# Copyright (C) http://lior.weissbrod.com
-#
-# Originally:
-# hebrew.php # last Update  07/03/2004 23:35
-# this is "hebrew.php" Written by Tal Vizel tal-hebrew-lang-gl@1212.co.il
-# This is the Hebrew language page for GeekLog!
-# Special thanks to Mischa Polivanov for his work on this project
-#
-# Copyright (C) 2000 Jason Whittenburg
-# jwhitten@securitygeeks.com
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-#
-###############################################################################
-
-$LANG_CHARSET = 'utf-8';
-$LANG_DIRECTION = 'rtl';
-
-###############################################################################
-# Array Format:
-# $LANGXX[YY]:  $LANG - variable name
-#               XX    - file id number
-#               YY    - phrase id number
-###############################################################################
-
-###############################################################################
-# USER PHRASES - These are file phrases used in end user scripts
-###############################################################################
-
-###############################################################################
-# lib-common.php
-
-$LANG01 = array(
-    1 => 'נכתב על-ידי',
-    2 => 'המאמר המלא',
-    3 => 'תגובות',
-    4 => 'עריכה',
-    5 => 'סקר השבוע',
-    6 => 'תוצאות',
-    7 => 'תוצאות הסקר',
-    8 => 'קולות',
-    9 => 'אדמיניסטרציה',
-    10 => 'לוח בקרה',
-    11 => 'מאמרים',
-    12 => 'קוביות מידע',
-    13 => 'נושאים',
-    14 => 'קישורים',
-    15 => 'אירועים',
-    16 => 'סקרים',
-    17 => 'משתמשים',
-    18 => 'שאילתת SQL',
-    19 => 'התנתקות',
-    20 => 'פרטי משתמש',
-    21 => 'שם משתמש',
-    22 => 'קוד משתמש',
-    23 => 'רמת אבטחה',
-    24 => 'משתמש אנונימי',
-    25 => 'תגובה',
-    26 => 'אין אתר זה אחראי לחומר הנכתב בו. האחריות על על כותבי התגובות בלבד!',
-    27 => 'המאמר החדש ביותר',
-    28 => 'מחיקה',
-    29 => 'לא נרשמו תגובות',
-    30 => 'מאמרים ישנים',
-    31 => 'פקודות HTML מורשות:<br>',
-    32 => 'הודעת שגיאה, חסר שם משתמש!',
-    33 => 'הודעת שגיאה, לא מצליח לכתוב לקובץ log',
-    34 => 'שגיאה',
-    35 => 'התנתק',
-    36 => 'בשעה:',
-    37 => 'טרם נכתבו מאמרים',
-    38 => 'סינדקיציית תוכן',
-    39 => 'רענן',
-    40 => 'מוגדר לכם <tt>register_globals = Off</tt> ב-<tt>php.ini</tt> שלכם. עם זאת, דרוש ש- <tt>register_globals</tt> יהיה <strong>on</strong>. לפני שהנכם ממשיכים, אנא הגדירו אותו על <strong>on</strong> ואתחלו מחדש את שרת הרשת שלכם.',
-    41 => 'אורחים',
-    42 => 'נכתב על ידי:',
-    43 => 'הגיבו לזה',
-    44 => 'ראשי',
-    45 => 'מספר הודעת שגיאה של MySQL:',
-    46 => 'הודעת שגיאה של MySQL:',
-    47 => 'אפשרויות משתמש',
-    48 => 'פרטי חשבון',
-    49 => 'מאפייני תצוגה',
-    50 => 'שגיאה עם SQL statement',
-    51 => 'עזרה',
-    52 => 'חדש',
-    53 => 'מרכז הניהול',
-    54 => 'אי אפשר היה לפתוח את הקובץ.',
-    55 => 'שגיאה ב:',
-    56 => 'הצביעו',
-    57 => 'סיסמה',
-    58 => 'כניסה',
-    59 => "אם אין לכם עדיין חשבון, זה הזמן <a href=\"{$_CONF['site_url']}/users.php?mode=new\">להירשם</a> לאתר",
-    60 => 'הוספת תגובה',
-    61 => 'צרו חשבון חדש',
-    62 => 'מילים',
-    63 => 'מאפייני תגובה',
-    64 => 'שילחו את המאמר לחבר',
-    65 => 'צפו בגירסה להדפסה',
-    66 => 'היומן שלי',
-    67 => 'ברוכים הבאים ל: ',
-    68 => 'בית',
-    69 => 'צרו קשר',
-    70 => 'חיפוש',
-    71 => 'הוסיפו מאמר',
-    72 => 'קישורי רשת',
-    73 => 'סקרים בעבר',
-    74 => 'יומן',
-    75 => 'חיפוש מתקדם',
-    76 => 'סטטיסטיקת אתר',
-    77 => 'הרחבות תוכנה',
-    78 => 'אירועים קרובים',
-    79 => 'מה חדש',
-    80 => 'מאמרים ב:',
-    80 => 'מאמר ב:',
-    82 => 'השעות האחרונות',
-    83 => 'תגובות',
-    84 => 'קישורים',
-    85 => 'ב-48 השעות האחרונות',
-    86 => 'אין תגובות חדשות',
-    87 => 'בשבועיים האחרונים',
-    88 => 'אין קישורים חדשים',
-    89 => 'אין אירועים צפויים',
-    90 => 'דף הבית',
-    91 => 'דף זה נוצר תוך',
-    92 => 'שניות',
-    93 => 'זכויות יוצרים',
-    94 => 'כל הזכויות והסימנים המסחריים בדף זה שמורים לבעליהם',
-    95 => 'מונע על גבי',
-    96 => 'קבוצות',
-    97 => 'רשימות מילים',
-    98 => 'הרחבות Plugins',
-    99 => 'מאמרים',
-    100 => 'אין מאמרים חדשים',
-    101 => 'האירועים שלכם',
-    102 => 'אירועים כלליים',
-    103 => 'יצירת גיבוי',
-    104 => 'על ידי',
-    105 => 'שליחת דואר למשתמשים',
-    106 => 'נצפה',
-    107 => 'בדיקת גירסת תוכנה',
-    108 => 'נקו את זיכרון המטמון',
-    109 => 'דווחו על שימוש לרעה',
-    110 => 'דווחו על תגובה זו למנהל האתר',
-    111 => 'צפו בגירסת PDF',
-    112 => 'משתמשים רשומים',
-    113 => 'דוקומנטציה',
-    114 => 'הפניות',
-    115 => 'אין הפניות עם תגובות חדשות',
-    116 => 'הפנייה',
-    117 => 'ספרייה',
-    118 => 'אנא המשיכו לקרוא בדף הבא:',
-    119 => "איבדתם את <a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">סיסמתכם</a>?",
-    120 => 'קישור קבוע לתגובה זו',
-    121 => 'תגובות (%d)',
-    122 => 'הפניות (%d)',
-    123 => 'HTML מותר לגמרי לשימוש'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'יומן אירועים',
-    2 => 'אין אירועים חדשים להצגה',
-    3 => 'מתי',
-    4 => 'איפה',
-    5 => 'תיאור',
-    6 => 'הוספת אירוע',
-    7 => 'אירועים צפויים',
-    8 => 'על-ידי הוספת אירוע זה ליומנך יתאפשר לך לצפות בקלות רק באירועים המענינים אותך על-ידי לחיצה על "היומן שלי" מאזור "אפשרויות המשתמש" .',
-    9 => 'הוספה ליומן שלי',
-    10 => 'הסרה מהיומן שלי',
-    11 => "הוספת אירוע ליומן של {$_USER['username']}",
-    12 => 'אירוע',
-    13 => 'מתחיל ב-',
-    14 => 'מסתיים ב-',
-    15 => 'חזרה ליומן'
-);
-
-###############################################################################
-# comment.php
-
-$LANG03 = array(
-    1 => 'הוספת תגובה',
-    2 => 'מצב תגובה',
-    3 => 'התנתקות',
-    4 => 'יצירת חשבון',
-    5 => 'שם משתמש',
-    6 => 'אתר זה דורש הזדהות במערכת כדי לכתוב תגובה, נא הזדהו. אם אין ברשותכם חשבון הינכם יכולים להשתמש בטופס שלהלן כדי ליצור אחד.',
-    7 => 'תגובתכם האחרונה הייתה לפני ',
-    8 => " שניות. אתר זה דורש לפחות {$_CONF['commentspeedlimit']} שניות בין תגובות",
-    9 => 'תגובה',
-    10 => 'שליחת דיווח',
-    11 => 'הוספת תגובה',
-    12 => 'נא למלא את שדות הכותרת והתגובה, מפני שהם נחוצים כדי להגיב.',
-    13 => 'המידע שלך',
-    14 => 'תצוגה מקדימה',
-    15 => 'דווחו על תגובה זו',
-    16 => 'כותרת',
-    17 => 'שגיאה',
-    18 => 'דברים חשובים',
-    19 => 'נא להשתדל להגיב על נושא המאמר.',
-    20 => 'נא להשתדל להגיב על תגובות קודמות ולא לפתוח נושאים חדשים.',
-    21 => 'נא לקרוא את התגובות שנכתבו לפניכם בכדי לא לחזור על דברים שכבר נאמרו.',
-    22 => 'השתמש בכותרת שתתאר בבירור את נושא התגובה שלך.',
-    23 => 'האימייל שלך *לא* יוצג לגולשים באתר',
-    24 => 'משתמש אנונימי',
-    25 => 'האם הנכם בטוחים שברצונכם לדווח על תגובה זו למנהלי האתר?',
-    26 => '%s דיווח/ה על התגובה הפוגענית הבאה:',
-    27 => 'דיווח על שימוש לרעה'
-);
-
-###############################################################################
-# usersettings.php
-
-$LANG04 = array(
-    1 => 'פרופיל המשתמש של',
-    2 => 'User Name',
-    3 => 'שמכם המלא',
-    4 => 'Password',
-    5 => 'Email',
-    6 => 'אתר בית',
-    7 => 'פרטים אישיים',
-    8 => 'מפתח PGP',
-    9 => 'שמירת הנתונים',
-    10 => 'עשרת התגובות האחרונות של',
-    11 => 'אין תגובות',
-    12 => 'מאפיני המשתמש של',
-    13 => 'שילחו באימייל את המאגר הלילי',
-    14 => 'סיסמה זו נוצרה בצורה רנדומלית, אולם מומלץ לשנות אותה מוקדם ככל האפשר. על מנת לעשות זאת, היכנסו לחשבונכם והקלידו על מאפייני החשבון בתפריט אפשרויות המשתמש.',
-    15 => "יצירת חשבונך ב-\n{$_CONF['site_name']}\n הושלמה בהצלחה! כעת, על-מנת להשתמש בו עליך להכניס בכניסה את שם המשתמש שלך ואת הסיסמה שקיבלת כאן. מומלץ לשמור את האימייל הזה במקום נגיש כדי להקל עליך בכניסות עתידיות לחשבונך.",
-    16 => 'פרטי חשבונך',
-    17 => 'החשבון לא קיים',
-    18 => 'כתובת האימייל שהוקלדה לא נראית תקינה',
-    19 => 'שם המשתמש או הסיסמה שהוקלדו כבר תפוסים',
-    18 => 'כתובת האימייל שהוקלדה לא נראית תקינה',
-    21 => 'שגיאה',
-    22 => "רישום ב-{$_CONF['site_name']}!",
-    23 => "יצירת חשבון תיתן לך את כל התועלות שטמונות בחברות ב-{$_CONF['site_name']} ותאפשר לך לפרסם תגובות ופריטים נוספים כעצמך. ללא חשבון, תוכלו רק לפרסם הודעות אנונימיות. לידיעתך, כתובת הדואל שלך <b>לעולם לא</b> תתפרסם באופן גלוי באתר זה.",
-    24 => 'סיסמתכם תישלח לכתובת האימייל שתכניסו.',
-    25 => 'האם שכחת את סיסמתך?',
-    26 => 'הכניסו את שם המשתמש שלכם <em>או</em> את כתובת האימייל שאיתם נרשמתם וליחצו על שליחת סיסמה לאימייל. הוראות כיצד להגדיר סיסמה חדשה ישלחו לכתובת האימייל שרשומה במערכת.',
-    27 => 'הירשמו עכשיו!',
-    28 => 'שלח סיסמה חדשה באימייל',
-    29 => 'התנתק/ה מ:',
-    30 => 'התחבר/ה מ:',
-    31 => 'הפונקציה שבה בחרתם דורשת התחברות לאתר על ידי הכנסת שם משתמש וסיסמה',
-    32 => 'חתימה',
-    33 => 'לעולם לא מוצג בפומבי',
-    34 => 'זהו שמכם האמיתי',
-    35 => 'הכניסו סיסמה רצויה חדשה',
-    36 => 'מתחיל ב-<span dir=ltr>http://</span>',
-    37 => 'מצורפת לתגובות שלכם',
-    38 => 'הכל על עצמך! כולם יכולים לקרוא זאת',
-    39 => 'מפתח ה-PGP הפומבי שלך',
-    40 => 'ללא הצגת אייקוני נושאים',
-    41 => 'מוכן להיות moderator',
-    42 => 'פורמט תאריך',
-    43 => 'מקסימום מאמרים',
-    44 => 'ללא קוביות מידע',
-    45 => 'מאפייני תצוגה של',
-    46 => 'ללא פריטים של',
-    47 => 'הגדרת קוביית מידע של חדשות עבור',
-    48 => 'נושאים',
-    49 => 'ללא האייקון המופיע לצד המאמר',
-    50 => 'בטלו את הסימון אם אינכם מעוניינים בפונקציה זו',
-    51 => 'יופיעו מאמרים בלבד ללא הקוביות בצדדים',
-    52 => 'ברירת המחדל היא',
-    53 => 'קבלו את מאמרי היום כל לילה',
-    54 => 'סמנו את הנושאים והכותבים שאינכם מעוניין לראות.',
-    55 => 'אם תשאירו את כולם לא מסומנים, הכוונה היא שהנכם מעוניינים בבחירת ברירת המחדל של קוביות המידע. אם תחלו לבחור קוביות, זיכרו לבחור כל מה שתרצו לראות מפני שבחירת ברירת המחדל כבר לא תהיה רלבנטית. פריטים שנבחרים כברירת מחדל מסומנים בהדגשה.',
-    56 => 'כותבים',
-    57 => 'אופן תצוגה',
-    58 => 'סדר מיון',
-    59 => 'הגבלת תגובות',
-    60 => 'איך הנכם מעוניינים שהתגובות יוצגו?',
-    61 => 'קודם חדש או ישן?',
-    62 => 'ברירת המחדל היא 100',
-    63 => "הסיסמה נשלחה אליכם באמצעות האימייל והנכם אמור לקבל אותה בכל רגע. אנא עיקבו אחר ההוראות שבאימייל ואנו מודים לכם על שימושכם ב-\n{$_CONF['site_name']}",
-    64 => 'מאפייני תגובות של',
-    65 => 'נסו להיכנס שוב',
-    66 => "יכול להיות שטעיתם באיות נתוני הכניסה לחשבון שלכם.  אנא נסו להתחבר שנית בתיבה שמתחת. האם הינכם <a href=\"{$_CONF['site_url']}/users.php?mode=new\">משתמשים חדשים</a>?",
-    67 => 'חבר/ה חדש/ה מאז',
-    68 => 'המערכת תזכור אותי עד',
-    69 => 'לכמה זמן הנכם מעוניינים שהמערכת תזכור אתכם לאחר שתיכנסו אליה?',
-    70 => "התאימו אישית את מראה האתר ואת התוכן של {$_CONF['site_name']}",
-    71 => "אחת מהאפשרויות של אתר {$_CONF['site_name']} היא שהנכם יכולים להתאים אישית את התוכן שאתם מקבלים ולשנות את המראה הכללי של האתר. על מנת ליהנות מיתרונות אלו, עליכם <a href=\"{$_CONF['site_url']}/users.php?mode=new\">להירשם</a> ב-{$_CONF['site_name']}. האם אתם כבר רשומים? אם כן, השתמשו בטופס הכניסה והתחברו!",
-    72 => 'מראה האתר',
-    73 => 'שפה',
-    74 => 'שנו את מראה האתר!',
-    75 => 'נושאים שישלחו באימייל עבור',
-    76 => 'בחירה באחת מהאפשרויות הרשומות שלהלן תאפשר לך לקבל, בסוף כל יום, את כל המאמרים החדשים שייתווספו לנושא זה. מומלץ לבחור רק בנושאים המעניינים אותך!',
-    77 => 'תמונה',
-    78 => 'הוספת תמונה של עצמך!',
-    79 => 'ליחצו כאן בכדי למחוק את התמונה',
-    80 => 'התחברו',
-    81 => 'שילחו אימייל',
-    82 => 'עשרת המאמרים האחרונים של',
-    83 => 'הצג סטטיסטיקה עבור המשתמש',
-    84 => 'סך הכל מאמרים:',
-    85 => 'סך הכל תגובות:',
-    86 => 'מיצאו כל מה שנכתב על ידי',
-    87 => 'שם המשתמש שלך הוא',
-    88 => "מישהו (יתכן שאתם) ביקש סיסמה חדשה לחשבונכם \n\"%s\"\n ב-\n{$_CONF['site_name']}.\n\n אם הנכם אכן מעוניינים לעשות פעולה זו, אנא ליחצו על הלינק הבא:\n\n",
-    89 => "אם אינכם מעוניין שפעולה זו תתרחש, פשוט התעלמו מהודעה זו והבקשה תבוטל (סיסמתכם תישאר ללא שינוי).\n\n",
-    90 => 'הכניסו את סיסמתכם החדשה בדף זה. אנא שימו לב שסיסמתכם הישנה תישאר בתוקף עד שתשלחו טופס זה.',
-    91 => 'קיבעו סיסמה חדשה',
-    92 => 'הכניסו סיסמה חדשה',
-    93 => 'הבקשה האחרונה שלכם לקבלת סיסמה חדשה הייתה לפני %d שניות. אתר זה דורש לפחות %d שניות בין בקשות סיסמה.',
-    94 => 'מיחקו את החשבון "%s"',
-    95 => 'ליחצו על הכפתור "מחיקת חשבון" שמתחת כדי למחוק את חשבונכם ממאגר הנתונים שלנו. אנא שימו לב שכל המאמרים והתגובות שכתבתם תחת חשבון זה <strong>לא</strong> ימחקו, אלא ייראו כאילו נכתבו על ידי "משתמש אנונימי".',
-    96 => 'מחיקת חשבון',
-    97 => 'אשרו את מחיקת החשבון',
-    98 => 'האם הנכם בטוחים שאתה רוצים למחוק את חשבונכם? משמעות הדבר היא שלא תוכלו להתחבר לאתר יותר (אלא אם כן תיצרו משתמש חדש). אם הנכם בטוחים, ליחצו שוב על "מחיקת חשבון" שבטופס מתחת.',
-    99 => 'דרישות הפרטיות של',
-    100 => 'קבלת הודעות באימייל ממנהלי האתר',
-    101 => 'אשרו קבלת הודעות באימייל ממנהלי האתר',
-    102 => 'הודעות אימייל ממשתמשים',
-    103 => 'אשרו קבלת הודעות באימייל ממשתמשים באתר',
-    104 => 'הצגת סטטוס החיבור שלכם',
-    105 => 'הופיעו בקוביית המידע מי באתר',
-    106 => 'מיקום',
-    107 => 'מוצג בפרופיל הפומבי שלך',
-    108 => 'אשרו סיסמה חדשה',
-    109 => 'הכניסו את הסיסמה החדשה שוב פה',
-    110 => 'סיסמה נוכחית',
-    111 => 'אנא הכניסו את הסיסמה הנוכחית שלכם',
-    112 => 'עברתם את מספר הנסיונות המותרים להיכנס למערכת. אנא נסו שוב מאוחר יותר.',
-    113 => 'נסיון כניסה נכשל',
-    114 => 'החשבון נוטרל',
-    115 => 'חשבונכם נוטרל, אינכם יכולים להיכנס למערכת. אנא צרו קשר עם אחד המנהלים.',
-    116 => 'החשבון מחכה להפעלה',
-    117 => 'חשבונכם כרגע מחכה להפעלה על ידי מנהל. לא תוכלו להיכנס למערכת עד שחשבונכם יאושר.',
-    118 => "חשבונכם ב-{$_CONF['site_name']} הופעל עכשיו על ידי מנהל. תוכלו עכשיו להיכנס לאתר בכתובת שלהלן על ידי שימוש בשם המשתמש (<username>) ובסיסמה שנשלחו אליכם מוקדם יותר באימייל.",
-    119 => 'אם שכחתם את הסיסמה שלכם, תוכלו לבקש אחת חדשה בכתובת הבאה:',
-    120 => 'החשבון הופעל',
-    121 => 'שירות',
-    122 => 'מצטערים, אפשרות הרשמת משתמשים חדשים מנוטרלת',
-    123 => "האם אתם <a href=\"{$_CONF['site_url']}/users.php?mode=new\">משתמשים חדשים</a>?"
-);
-
-###############################################################################
-# index.php
-
-$LANG05 = array(
-    1 => 'אין חדשות להצגה',
-    2 => 'אין שום חדשות להצגה. ייתכן שאין שום חדשות בתוך הנושא הזה או שהגדרות המשתמש שלך מגבילות מדי',
-    3 => ' עבור נושא %s',
-    4 => 'המאמר המוצג של היום',
-    5 => 'הבא',
-    6 => 'הקודם',
-    7 => 'הראשון',
-    8 => 'האחרון'
-);
-
-###############################################################################
-# profiles.php
-
-$LANG08 = array(
-    1 => 'הרעה שגיאה במשלוח ההודעה, אנא נסה/י שוב',
-    2 => 'ההודעה נשלחה בהצלחה',
-    3 => 'וודאו שכתובת האימייל לקבלת תגובה תהיה נכונה',
-    4 => 'אנא מלאו את שמכם, את כתובת האימייל שלכם, את הנושא ואת ההודעה',
-    5 => 'שגיאה, אין משתמש בשם שבחרת',
-    6 => 'ההודעה לא נשלחה בהצלחה עקב שגיאה.',
-    7 => 'פרופיל המשתמש של',
-    8 => 'שם המשתמש',
-    9 => 'אתר בית',
-    10 => 'שלח הודעת אימייל ל:',
-    11 => 'שמכם',
-    12 => 'כתובת אימייל לקבלת תגובה',
-    13 => 'נושא',
-    14 => 'הודעה:',
-    15 => 'HTML לא יתורגם',
-    16 => 'שליחת ההודעה',
-    17 => 'שילחו את המאמר לחבר',
-    18 => 'שם הנמען',
-    19 => 'כתובת האימייל של הנמען',
-    20 => 'שם השולח',
-    21 => 'כתובת האימייל של השולח',
-    22 => 'חובה למלא את כל השדות',
-    23 => "אימייל זה נשלח אליכם על ידי %s מפני שחשבו שהנכם עשויים להתעניין במאמר הזה מתוך {$_CONF['site_url']}. זה לא ספאם וכתובות האימייל שהיו מעורבות בתקשורת זו לא נשמרו לרשימה או לשימוש מאוחר יותר.",
-    24 => 'הגיבו על מאמר זה ב:',
-    25 => 'הינכם חייבים להתחבר כדי להשתמש בתכונה זו. השימוש בהתחברות עוזר לנו למנוע שימוש לא נכון במערכת.',
-    26 => 'טופס זה יאפשר לכם לשלוח הודעת אימייל למשתמש הנבחר. כל השדות נחוצים.',
-    27 => 'הודעה קצרה',
-    28 => '%s כתב: ',
-    29 => "זהו המאגר היומי של {$_CONF['site_name']} עבור ",
-    30 => ' עלון החדשות היומי עבור ',
-    31 => 'כותרת',
-    32 => 'תאריך',
-    33 => 'קיראו את המאמר המלא ב:',
-    34 => 'סוף ההודעה',
-    35 => 'מצטערים, משתמש זה מעדיף לא לקבל כלל הודעות אימייל.'
-);
-
-###############################################################################
-# search.php
-
-$LANG09 = array(
-    1 => 'חיפוש מתקדם',
-    2 => 'מילות מפתח',
-    3 => 'כותרת',
-    4 => 'הכל',
-    5 => 'סוג',
-    6 => 'מאמרים',
-    7 => 'תגובות',
-    8 => 'כותבים',
-    9 => 'הכל',
-    10 => 'חיפוש',
-    11 => 'תוצאות החיפוש',
-    12 => 'התאמות',
-    13 => 'תוצאות החיפוש: לא נמצאו מחרוזות תואמות',
-    14 => 'לא נמצאו התאמות לחיפושכם',
-    15 => 'אנא נסו שוב',
-    16 => 'כותרת',
-    17 => 'תאריך',
-    18 => 'נכתב על ידי',
-    19 => "חפשו בכל מאגר המידע של {$_CONF['site_name']} הכולל מאמרים חדשים וישנים",
-    20 => 'תאריך',
-    21 => 'עד ל-',
-    22 => '(פורמט תאריך YYYY-MM-DD)',
-    23 => 'צפיות',
-    24 => 'נמצאו %d פריטים',
-    25 => 'הצגת תוצאות עבור',
-    26 => 'פריטים ',
-    27 => 'שניות',
-    28 => ' לא נמצאו מאמרים או תגובות המתאימים לחיפוש שלך',
-    29 => 'תוצאות החיפוש',
-    30 => 'לא נמצאו קישורים תואמים',
-    31 => 'Plugin זה לא החזיר שום תוצאות',
-    32 => 'אירוע',
-    33 => 'כתובת אתר',
-    34 => 'מיקום',
-    35 => 'יום שלם',
-    36 => 'לא נמצאו אירועים המתאימים לחיפושכם',
-    37 => 'האירועים שנמצאו הם',
-    38 => 'הקישורים שנמצאו הם',
-    39 => 'קישורים',
-    40 => 'אירועים',
-    41 => 'חובה להכניס לפחות 3 תווים.',
-    42 => 'אנא השתמשו בתאריך מפורמט בסגנון YYYY-MM-DD (יום-חודש-שנה).',
-    43 => 'ביטוי מדויק',
-    44 => 'כל המילים שהוכנסו',
-    45 => 'לפחות אחת מהמילים שהוכנסו',
-    46 => 'הבא',
-    47 => 'הקודם',
-    48 => 'הכותב',
-    49 => 'תאריך',
-    50 => 'כניסות',
-    51 => 'קישור',
-    52 => 'מיקום',
-    53 => 'תוצאות מאמרים',
-    54 => 'תוצאות תגובות',
-    55 => 'מחרוזת החיפוש',
-    56 => 'וגם',
-    57 => 'או',
-    58 => 'תוצאות נוספות &gt;&gt;',
-    59 => 'תוצאות',
-    60 => 'בכל עמוד',
-    61 => 'הגדירו מחדש את החיפוש'
-);
-
-###############################################################################
-# stats.php
-
-$LANG10 = array(
-    1 => 'סטטיסטיקת האתר',
-    2 => 'סך הכל כניסות למערכת',
-    3 => 'מאמרים (תגובות) במערכת',
-    4 => '',
-    5 => '',
-    6 => 'אירועים במערכת',
-    7 => 'עשרת המאמרים הנצפים ביותר',
-    8 => 'כותרת המאמר',
-    9 => 'צפיות',
-    10 => 'נראה שאין מאמרים באתר זה או שאף אחד עוד לא ראה אותם.',
-    11 => 'עשרת המאמרים עם הכי הרבה תגובות',
-    12 => 'תגובות',
-    13 => 'נראה שאין מאמרים באתר זה או שאף אחד עוד לא הגיב אליהם.',
-    14 => '',
-    15 => '',
-    16 => '',
-    17 => '',
-    18 => '',
-    19 => '',
-    20 => '',
-    21 => 'נראה שאין קישורים באתר זה או שאף אחד עוד לא לחץ עליהם.',
-    22 => 'עשרת המאמרים שהכי נשלחו באימייל',
-    23 => 'אימיילים',
-    24 => 'נראה שאף אחד עוד לא שלח מאמר באימייל באתר זה',
-    25 => 'עשרת המאמרים שקיבלו הכי הרבה הפניות עם תגובות',
-    26 => 'לא נמצאו הפניות עם תגובות למאמרים.',
-    27 => 'מספר המשתמשים הפעילים',
-    28 => 'עשרת האירועים הפופולרייים ביותר',
-    29 => 'אירוע',
-    30 => 'צפיות',
-    31 => 'נראה שאין שום אירועים באתר זה או שאף אחד עוד לא הקיש עליהם.'
-);
-
-###############################################################################
-# article.php
-
-$LANG11 = array(
-    1 => 'קישורים רלבנטיים',
-    2 => 'שליחת המאמר לחבר',
-    3 => 'גירסה להדפסה',
-    4 => 'אפשרויות למאמר זה',
-    5 => 'המאמר בפורמט PDF'
-);
-
-###############################################################################
-# submit.php
-
-$LANG12 = array(
-    1 => 'על מנת לבצע %s עליכם להיות משתמשים רשומים במערכת',
-    2 => 'כניסה',
-    3 => 'משתמש חדש',
-    4 => 'שילחו אירוע',
-    5 => '',
-    6 => 'שילחו מאמר',
-    7 => 'דרושה כניסה למערכת',
-    8 => 'שליחה',
-    9 => 'בעת שליחת מידע לשימוש באתר אנו מבקשים שתעקבו אחר ההמלצות הבאות...<ul><li>מלאו את כל השדות, הם נדרשים<li>הכניסו מידע מלא ומדויק<li>בידקו טוב כתובות של אתרים</ul>',
-    10 => 'כותרת',
-    11 => 'קישור',
-    12 => 'תאריך התחלה',
-    13 => 'תאריך סיום',
-    14 => 'מיקום',
-    15 => 'תיאור',
-    16 => '',
-    17 => '',
-    18 => '',
-    19 => 'קיראו קודם',
-    20 => '',
-    21 => '',
-    22 => 'שגיאה: חסרים שדות',
-    23 => 'יש למלא את כל השדות בטופס זה. כל השדות נדרשים.',
-    24 => 'השליחה בוצעה',
-    25 => 'שליחת ה-%s שלך בוצעה בהצלחה.',
-    26 => 'הגבלת מהירות',
-    27 => 'שם משתמש',
-    28 => 'נושא',
-    29 => 'מאמר',
-    30 => 'שליחתך האחרונה הייתה לפני ',
-    31 => " שניות. אתר זה דורש לפחות {$_CONF['speedlimit']} שניות בין שליחה אחת לשניה.",
-    32 => 'תצוגה מקדימה',
-    33 => 'תצוגה מקדימה של המאמר',
-    34 => 'התנתקות',
-    35 => 'לא ניתן להשתמש ב HTML',
-    36 => 'מצב כתיבה',
-    37 => "הוספת אירוע ל-{$_CONF['site_name']} תשים אותו ביומן הראשי היכן שמשתמשים רשאים להוסיף אותו ליומנים האישיים שלהם. יכולת זו <b>אינה</b> מיועדת לאחסן את האירועים הפרטיים שלכם כמו ימי הולדת ותזכורות שנתיות.<br><br>ברגע שתפרסמו את האירוע שלכם הוא ישלח למנהלי האתר ואם יאושר, יופיע ביומן הראשי.",
-    38 => 'הוספת אירוע ל:',
-    39 => 'יומן ראשי',
-    40 => 'יומן אישי',
-    41 => 'שעת סיום',
-    42 => 'שעת התחלה',
-    43 => 'אירוע שנמשך יום שלם',
-    44 => 'שורת כתובת 1',
-    45 => 'שורת כתובת 2',
-    46 => 'עיר/ישוב',
-    47 => 'מדינה',
-    48 => 'מיקוד',
-    49 => 'סוג אירוע',
-    50 => 'ערוך את סוגי האירועים',
-    51 => 'מיקום',
-    52 => 'מחיקה',
-    53 => 'יצירת חשבון'
-);
-
-###############################################################################
-# ADMIN PHRASES - These are file phrases used in admin scripts
-###############################################################################
-
-###############################################################################
-# admin/auth.inc.php
-
-$LANG20 = array(
-    1 => 'נדרשים פרטי זיהוי משתמש',
-    2 => 'לא אושר! פרטי המשתמש שגויים',
-    3 => 'הסיסמה לא נכונה למשתמש',
-    4 => 'שם משתמש',
-    5 => 'סיסמה',
-    6 => 'כל נסיונות הגישה לאיזורים הניהוליים של אתר זה נרשמים ביומן ונבדקים.<br>עמוד זה נועד לשימושם של אנשים מאושרים בלבד.',
-    7 => 'כניסה למערכת'
-);
-
-###############################################################################
-# admin/block.php
-
-$LANG21 = array(
-    1 => 'אין מספיק הרשאות ניהוליות',
-    2 => 'אין לכם את ההרשאות הנדרשות לערוך קוביית מידע זו.',
-    3 => 'עורך קוביות מידע',
-    4 => 'הייתה בעיה בקריאת הזנה זו (ראו את error.log בשביל פירוט).',
-    5 => '',
-    6 => '',
-    7 => 'כולם',
-    8 => 'רמת האבטחה של קוביות המידע',
-    9 => 'סדר קוביות המידע',
-    10 => '',
-    11 => 'קוביית מידע פורטל',
-    12 => 'קוביית מידע רגילה',
-    13 => 'אפשרויות לקוביות המידע',
-    14 => 'כתובת RSS',
-    15 => 'עידכון RSS אחרון',
-    16 => 'אפשרויות של קוביית מידע רגילה',
-    17 => 'תוכן קוביית מידע',
-    18 => 'אנא מלאו את כותרת קוביית המידע ואת שדות התוכן',
-    19 => 'מנהל קוביות המידע',
-    20 => '',
-    21 => 'הרשאות קוביה',
-    22 => '',
-    23 => 'סדר הצגת קוביות המידע',
-    24 => '',
-    25 => 'כדי לשנות או למחוק קוביית מידע, ליחצו על אייקון העריכה שמתחת. כדי ליצור קוביית מידע חדשה, ליחצו על "צרו חדש" לעיל. כדי להזיז קוביית מידע, ליחצו על החיצים או על קוביות ה-[R] או ה-[L].',
-    26 => 'עיצוב קוביית מידע',
-    27 => 'קוביית מידע PHP',
-    28 => 'אפשרויות קוביית מידע PHP',
-    29 => 'פונקציית קוביית מידע',
-    30 => 'אם ברצונכם שאחת מקוביות המידע שלכם תשתמש בקוד PHP, הכניסו לעיל את שם הפונקציה. שם הפונקציה שלכם חייב להתחיל עם התחילית "_phpblock" (לדוגמא, phpblock_getweather). ללא תחילית זו, הפוקנציה שלכם *לא* תפעל. אנו עושים זאת כדי למנוע מאנשים שאולי פרצו להתקנת התוכנה מלהשתמש בקריאות פונקציה שרירותיות שעלולות לפגוע במערכת שלכם. שימו לב לא לשים סוגריים ריקים "()" אחרי שם הפונקציה שלכם. לסיכום, מומלץ שתשימו את כל קוד קוביית המידע PHP שלך בתוך /path/to/geeklog/system/lib-custom.php. דבר זה יאפשר לקוד להישאר איתכם אפילו כאשר הנכם מעדכנים לגירסת תוכנה חדשה יותר.',
-    31 => 'טעות בקוביית מידע PHP. הפונקציה, %s, לא קיימת.',
-    32 => 'טעות של שדה/ות לא מלא/ים',
-    33 => 'הנכם חייבים להכניס קישור לקובץ ה-RSS בשביל קוביות מידע של פורטלים',
-    34 => 'הנכם חייבים להכניס את הכותרת ואת הפונקציה במקרה של קוביות מידע PHP',
-    35 => 'הנכם חייבים להכניס את הכותרת ואת התוכן במקרה של קוביות מידע רגילות',
-    36 => 'הנכם חייבים להכניס את התוכן לקוביות מידע עיצוביות',
-    37 => 'שם לא מתאים של פונקציית קוביית מידע PHP',
-    38 => 'פונקציות של קוביות מידע PHP חייבות לכלול את התחילית \'phpblock_\' (לדוגמא, phpblock_getweather).  התחילית \'phpblock_\' נחוצה מסיבות בטחוניות כדי למנוע את הרצתו של קוד שרירותי.',
-    39 => 'צד',
-    40 => 'שמאל [ימין במצב שפה RTL]',
-    41 => 'ימין [שמאל במצב שפה RTL]',
-    42 => 'הנכם חייבים להכניס את כותרות קוביות המידע ואת הסדר שלהן בשביל קוביות ברירת המחדל',
-    43 => 'דף בית בלבד',
-    44 => '',
-    45 => "הינכם מנסים לגשת לקוביית מידע שאין לכם אישור לגביה. ניסיון זה נרשם ביומן. אנא <a href=\"{$_CONF['site_url']}/admin/block.php\">חיזרו לחלון ניהול קוביות המידע</a>.",
-    46 => 'הזיזו',
-    47 => '',
-    48 => 'שם קוביה',
-    49 => ' (ללא רווחים וחייב להיות ייחודי)',
-    50 => '',
-    51 => 'כולל <span dir=ltr><b>http://</b></span>',
-    52 => 'אם תשאירו זאת ריק אייקון העזרה של קוביית מידע זו לא יופיע',
-    53 => 'אפשרו',
-    54 => 'שמירה',
-    55 => 'ביטול',
-    56 => 'מחיקה',
-    57 => 'הזיזו קוביית מידע למטה',
-    58 => 'הזיזו קוביית מידע למעלה',
-    59 => 'הזיזו קוביית מידע לצד הימני (השמאלי במצב שפה RTL)',
-    60 => 'הזיזו קוביית מידע לצד השמאלי (הימני במצב שפה RTL)',
-    61 => 'אין כותרת',
-    62 => 'גבול יכולת המאמרים',
-    63 => 'כותרת קוביות המידע לא טובה',
-    64 => 'הכותרת שלכם אינה יכולה להיות ריקה ולא יכולה להכיל HTML!',
-    65 => 'סדר'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'עורך אירועים',
-    2 => 'שגיאה',
-    3 => 'מצב כתיבה',
-    4 => 'כתובת אתר האירוע',
-    5 => 'תאריך התחלת האירוע',
-    6 => 'תאריך סיום האירוע',
-    7 => 'מיקום האירוע',
-    8 => 'תיאור האירוע',
-    9 => '(כולל <span dir=ltr><b>http://</b></span>)',
-    10 => 'הנכם חייבים לציין את התאריכים/שעות, כותרת האירוע ותיאור',
-    11 => 'מנהל האירוע',
-    12 => ' כדי לשנות או למחוק אירוע, ליחצו על אייקון העריכה שלו מתחת. כדי ליצור אירוע חדש, ליחצו על "צרו חדש" לעיל. ליחצו על אייקון ההעתקה כדי ליצור עותק של אירוע קיים.',
-    13 => 'יוצר',
-    14 => 'תאריך התחלה',
-    15 => 'תאריך סיום',
-    16 => '',
-    17 => "הנכם מנסים לגשת לאירוע שאין לכם זכויות לגביו. ניסיון זה נרשם ביומן. בבקשה <a href=\"{$_CONF['site_url']}/admin/event.php\">חיזרו לחלון ניהול האירועים</a>.",
-    18 => '',
-    19 => '',
-    20 => 'שמירה',
-    21 => 'ביטול',
-    22 => 'מחיקה',
-    23 => 'תאריך התחלה שגוי.',
-    24 => 'תאריך סיום שגוי.',
-    25 => 'תאריך הסיום הוא לפני תאריך ההתחלה.'
-);
-
-###############################################################################
-# admin/story.php
-
-$LANG24 = array(
-    1 => 'המאמרים הקודמים',
-    2 => 'המאמרים הבאים',
-    3 => 'מצב',
-    4 => 'מצב כתיבה',
-    5 => 'עורך מאמרים',
-    6 => 'אין מאמרים במערכת',
-    7 => 'יוצר',
-    8 => 'שמירה',
-    9 => 'תצוגה מקדימה',
-    10 => 'ביטול',
-    11 => 'מחיקה',
-    12 => 'קוד זיהוי',
-    13 => '',
-    14 => '',
-    15 => 'תאריך',
-    16 => 'טקסט פתיחה',
-    17 => 'טקסט המשך',
-    18 => 'כניסות',
-    19 => 'תגובות',
-    20 => 'פינג',
-    21 => 'שילחו פינג',
-    22 => 'רשימת מאמרים',
-    23 => ' כדי לשנות או למחוק מאמר, ליחצו על אייקון העריכה שלו להלן. כדי לצפות במאמר, ליחצו על הכותרת של המאמר שאתם מבקשים לצפות בו. כדי ליצור מאמר חדש, ליחצו על "צרו חדש" לעיל.',
-    24 => 'קוד הזיהוי שבחרתם למאמר זה כבר נמצא בשימוש. אנא השתמשו בקוד זיהוי אחר.',
-    25 => 'שגיאה בעת שמירת המאמר',
-    26 => 'תצוגה מקדימה של המאמר',
-    27 => 'אם הנכם משתמשים ב-[unscaledX] במקום ב-[imageX], התמונה תוכנס במימדיה המקוריים.',
-    28 => '<p><b>תצוגה מקדימה</b>: תצוגה מקדימה של מאמר עם תמונות מצורפות הכי טוב שתיעשה על ידי שמירת המאמר כטיוטא *במקום* ללחוץ על כפתור התצוגה המקדימה. השתמשו בכפתור התצוגה המקדימה רק כאשר אין תמונות מצורפות.',
-    29 => 'הפניות',
-    30 => 'בעיות בהעלאת הקובץ',
-    31 => 'אנא מלאו את שדות שם הכותב, הכותרת וטקסט הפתיחה.',
-    32 => 'מוצג',
-    33 => 'יכול להיות רק מאמר אחד מוצג',
-    34 => 'טיוטה',
-    35 => 'כן',
-    36 => 'לא',
-    37 => 'דברים נוספים של',
-    38 => 'עוד מ:',
-    39 => 'שליחות אימייל',
-    40 => '',
-    41 => "הנכם מנסים לגשת למאמר שאין לכם זכויות לגביו. ניסיון זה נרשם ביומן. הינכם רשאים לצפות במאמר שלהלן במצב קריאה בלבד. אנא <a href=\"{$_CONF['site_url']}/admin/story.php\">חיזרו לחלון ניהול המאמרים</a> לאחר שתסיימו.",
-    42 => "הינכם מנסים לגשת למאמר שאין לכם זכויות לגביו. ניסיון זה נרשם ביומן. אנא <a href=\"{$_CONF['site_url']}/admin/story.php\">חיזרו לחלון ניהול המאמרים</a>.",
-    43 => '',
-    44 => '',
-    45 => '',
-    46 => '<b>שימו לב:</b> אם תשנו תאריך זה להיות בעתיד, מאמר זה לא יפורסם עד אותו תאריך. משמעות הדבר היא גם שהוא לא ייכלל בהזנת כותרות ה-RSS והוא יזכה להתעלמות מעמודי החיפוש והסטטיסטיקה.',
-    47 => 'תמונות',
-    48 => 'תמונה',
-    49 => 'ימין (שמאל במצב שפה RTL)',
-    50 => 'שמאל (ימין במצב שפה RTL)',
-    51 => 'כדי להוסיף את אחת מהתמונות שהינכם מצרפים למאמר זה עליכם להכניס טקסט מפורמט באופן מיוחד. הטקסט המפורמט באופן מיוחד הוא [imageX], [imageX_right] או [imageX_left] כאשר X הוא מספר התמונה שצירפתם. *שימו לב:* הינכם חייבים להשתמש בתמונות שצירפתם. אם לא תעשו זאת לא תוכלו לשמור את מאמרכם.<br>',
-    52 => '',
-    53 => 'לא הייתה בשימוש. הנכם חייבים להוסיף את התמונה לטקסט הפתיחה או לטקסט ההמשך לפני שתוכלו לשמור את השינויים שביצעתם.',
-    54 => 'לא היה שימוש בתמונות המצורפות',
-    55 => 'השגיאות הבאות אירעו בעת הנסיון לשמור את המאמר. אנא תקנו את השגיאות האלו לפני השמירה.',
-    56 => 'הראה אייקון נושא',
-    57 => 'צפו בתמונה המלאה',
-    58 => 'אפשרויות ארכיון',
-    59 => 'אפשרות',
-    60 => '',
-    61 => 'איחסון אוטומטי בארכיון',
-    62 => 'מחיקה אוטומטית',
-    63 => '',
-    64 => '',
-    65 => '',
-    66 => '',
-    67 => 'הרחיבו את גודל איזור עריכת התוכן',
-    68 => 'צמצמו את גודל איזור עריכת התוכן',
-    69 => 'תאריך פירסום המאמר',
-    70 => 'בחירת סרגל כלים',
-    71 => 'סרגל כלים בסיסי',
-    72 => 'סרגל כלים מצוי',
-    73 => 'סרגל כלים מתקדם',
-    74 => 'סרגל כלים מתקדם II',
-    75 => 'מוצג במלואו',
-    76 => 'אפשרויות פירסום',
-    77 => 'Javascript חייב להיות מופעל בעורך המתקדם. האפשרות יכולה להיכבות ב-config.php הראשי של האתר',
-    78 => 'ליחצו <a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default">כאן</a> כדי להשתמש בעורך ברירת המחדל',
-    79 => 'תצוגה מקדימה',
-    80 => 'עורך',
-    81 => 'אפשרויות פירסום',
-    82 => 'תמונות',
-    83 => 'אפשרויות ארכיון',
-    84 => 'הרשאות',
-    85 => 'הראה הכל'
-);
-
-###############################################################################
-# admin/topic.php
-
-$LANG27 = array(
-    1 => 'עורך הנושאים',
-    2 => 'קוד הזיהוי של הנושא',
-    3 => 'כותרת הנושא',
-    4 => 'תמונת הנושא',
-    5 => '(אין להשתמש ברווחים)',
-    6 => 'מחיקת נושא מוחקת גם כל את המאמרים וקוביות המידע שמקושרים אליו',
-    7 => 'אנא מלאו את השדות של קוד הזיהוי ושם הנושא',
-    8 => 'מנהל הנושאים',
-    9 => 'כדי לערוך או למחוק נושא, ליחצו עליו. כדי ליצור נושא חדש, ליחצו על "צרו חדש" לעיל. תוכלו למצוא את רמת הגישה שלכם עבור כל נושא בתוך סוגריים. הכוכבית(*) מסמלת את נושא ברירת המחדל.',
-    10 => 'סדר מיון',
-    11 => 'מאמרים/עמוד',
-    12 => 'הגישה לא אושרה',
-    13 => "הינכם מנסים לגשת לנושא שאין לכם זכויות לגביו. ניסיון זה נרשם ביומן. אנא <a href=\"{$_CONF['site_url']}/admin/topic.php\">חיזרו לחלון ניהול הנושאים</a>.",
-    14 => 'שיטת מיון',
-    15 => 'לפי הא-ב',
-    16 => 'ברירת המחדל היא',
-    17 => 'נושא חדש',
-    18 => 'מרכז הניהול',
-    19 => 'שמירה',
-    20 => 'ביטול',
-    21 => 'מחיקה',
-    22 => 'ברירת מחדל',
-    23 => 'היפכו נושא זה לנושא ברירת המחדל עבור העלאת מאמרים חדשים',
-    24 => '(*)',
-    25 => 'נושא הארכיון',
-    26 => 'היפכו נושא זה לנושא ברירת המחדל עבור מאמרים בארכיון. ניתן לבחור רק נושא אחד.',
-    27 => 'או העלו אייקון לנושא',
-    28 => 'מקסימום',
-    29 => 'שגיאות בהעלאת הקובץ'
-);
-
-###############################################################################
-# admin/user.php
-
-$LANG28 = array(
-    1 => 'עורך משתמשים',
-    2 => 'קוד זיהוי משתמש',
-    3 => 'שם משתמש',
-    4 => 'שם מלא',
-    5 => 'סיסמה',
-    6 => 'רמת אבטחה',
-    7 => 'כתובת אימייל',
-    8 => 'אתר בית',
-    9 => '(אין להשתמש ברווחים)',
-    10 => 'אנא מלאו את השדות של שם המשתמש וכתובת האימייל',
-    11 => 'מרכז ניהול המשתמשים',
-    12 => 'כדי לערוך או למחוק משתמש, ליחצו על אייקון המשתמש שמתחת. כדי לצפות במשתמש, ליחצו עליו. כדי ליצור משתמש חדש, ליחצו על "צרו חדש" לעיל. הנכם יכולים לבצע חיפושים פשוטים על ידי הכנסת חלק משם המשתמש, כתובת האימייל או השם המלא (לדוגמא *son* או edu.*) בטופס שלהלן.',
-    13 => 'רמת אבטחה',
-    14 => 'תאריך הרשמה',
-    15 => '',
-    16 => '',
-    17 => '',
-    18 => '',
-    19 => '',
-    20 => 'שמירה',
-    21 => 'שם המשתמש שניסיתם לשמור כבר קיים.',
-    22 => 'שגיאה',
-    23 => 'הוספה המונית',
-    24 => 'יבוא המוני של משתמשים',
-    25 => 'הינכם יכולים לייבא רשימה של משתמשים למערכת. קובץ היבוא חייב להיות קובץ עם הפרדות בצורה של טאבים וחייב שיהיו בו את השדות בסדר הבא: שם מלא, שם משתמש, כתובת אימייל. לכל משתמש שתייבאו תישלח הודעת אימייל עם סיסמה אקראית. הנכם חייבים לשים משתמש אחד בכל שורה. כישלון במעקב אחר ההוראות האלו יגרום לבעיות שעלולות להצריך עבודה ידנית ולכן בידקו טוב את נתוניכם!',
-    26 => '',
-    27 => '',
-    28 => 'סמנו זאת כדי למחוק את התמונה',
-    29 => 'מיקום',
-    30 => 'יבוא',
-    31 => 'משתמשים חדשים',
-    32 => 'תהליך העיבוד הסתיים. יובאו %d והתרחשו %d שגיאות.',
-    33 => 'שמירה',
-    34 => 'שגיאה: הינכם חייבים לבחור קובץ להעלאה.',
-    35 => 'כניסה אחרונה למערכת',
-    36 => '(אף פעם)',
-    37 => 'קוד זיהוי משתמש',
-    38 => 'רשימת קבוצות',
-    39 => 'סיסמה (שוב)',
-    40 => 'תאריך הרשמה',
-    41 => 'תאריך כניסה אחרונה למערכת',
-    42 => 'מושעה',
-    43 => 'מחכה להפעלה',
-    44 => 'מחכה לאישור',
-    45 => 'פעיל',
-    46 => 'סטאטוס משתמש',
-    47 => 'עריכה'
-);
-
-###############################################################################
-# admin/moderation.php
-
-$LANG29 = array(
-    1 => 'אישור',
-    2 => 'מחיקה',
-    3 => 'עריכה',
-    4 => 'פרופיל',
-    10 => 'כותרת',
-    11 => 'תאריך התחלה',
-    12 => 'כתובת אינטרנט',
-    13 => 'קטגוריה',
-    14 => 'תאריך',
-    15 => 'נושא',
-    16 => 'שם משתמש',
-    17 => 'שם מלא',
-    18 => 'כתובת אימייל',
-    34 => 'שליטה ובקרה',
-    35 => 'הגשות מאמרים',
-    36 => '',
-    37 => 'הגשות אירועים',
-    38 => 'אישור',
-    39 => 'אין הגשות שדורשות פיקוח בזמן זה',
-    40 => 'הגשות של משתמשים'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'ראשון',
-    2 => 'שני',
-    3 => 'שלישי',
-    4 => 'רביעי',
-    5 => 'חמישי',
-    6 => 'שישי',
-    7 => 'שבת',
-    8 => 'הוספת אירוע',
-    9 => 'אירוע %s',
-    10 => 'אירועים עבור',
-    11 => 'יומן ראשי',
-    12 => 'היומן שלי',
-    13 => 'ינואר',
-    14 => 'פברואר',
-    15 => 'מרץ',
-    16 => 'אפריל',
-    17 => 'מאי',
-    18 => 'יוני',
-    19 => 'יולי',
-    20 => 'אוגוסט',
-    21 => 'ספטמבר',
-    22 => 'אוקטובר',
-    23 => 'נובמבר',
-    24 => 'דצמבר',
-    25 => 'חזרה ל: ',
-    26 => 'יום שלם',
-    27 => 'שבוע',
-    28 => 'היומן האישי של',
-    29 => 'יומן ציבורי',
-    30 => 'מחיקת אירוע',
-    31 => 'הוספה',
-    32 => 'אירוע',
-    33 => 'תאריך',
-    34 => 'שעה',
-    35 => 'הוספה מהירה',
-    36 => 'אישור',
-    37 => 'לצערינו האפשרות ליומן אישי לא קיימת באתר זה',
-    38 => 'עורך אירועים אישיים',
-    39 => 'יום',
-    40 => 'שבוע',
-    41 => 'חודש'
-);
-
-###############################################################################
-# admin/mail.php
-
-$LANG31 = array(
-    1 => "כלי שליחת הודעות האימייל של {$_CONF['site_name']}",
-    2 => 'מ',
-    3 => 'השב ל',
-    4 => 'נושא',
-    5 => 'גוף ההודעה',
-    6 => 'שליחה ל:',
-    7 => 'כל המשתמשים',
-    8 => 'מנהל האתר',
-    9 => 'אפשרויות',
-    10 => 'HTML',
-    11 => 'הודעה דחופה!',
-    12 => 'שליחה',
-    13 => 'איפוס',
-    14 => 'התעלם מהגדרות משתמש',
-    15 => 'אירעה שגיעה במשלוח ההודעה ל: ',
-    16 => 'ההודעה נשלחה בהצלחה ל: ',
-    17 => "<a href={$_CONF['site_url']}/admin/mail.php>שילחו הודעה נוספת</a>",
-    18 => 'עבור',
-    19 => '*שימו לב:* אם ברצונכם לשלוח הודעה לכל משתמשי האתר, ביחרו את קבוצת ה-Logged-in Users מתיבת הבחירה.',
-    20 => "<successcount> הודעות נשלחו בהצלחה ונכשלו <failcount>. אם הינכם זקוקים לכך, להלן הפרטים של כל הנסיונות. אם לא, הינכם יכולים <a href=\"{$_CONF['site_url']}/admin/mail.php\">לשלוח הודעה נוספת</a> או <a href=\"{$_CONF['site_url']}/admin/moderation.php\">לחזור למסך הניהול</a>.",
-    21 => 'כשלונות',
-    22 => 'הצלחות',
-    23 => 'אין כשלונות',
-    24 => 'אין הצלחות',
-    25 => '-- ביחרו קבוצה --',
-    26 => 'אנא מלאו את כל השדות בטופס וביחרו קבוצת משתמשים מתיבת הבחירה.'
-);
-
-###############################################################################
-# admin/plugins.php
-
-$LANG32 = array(
-    1 => 'התקנת plugins עלולה לגרום לבעיות בהתקנה התוכנה ואולי אף למערכת שלכם. חשוב שתתקינו רק plugins שהורדו מ-<a href="http://www.geeklog.net" target="_blank">אתר הבית של Geeklog</a> מפני שאנו בוחנים באדיקות את כל ה-plugins שהוגשו לאתר שלנו במגוון של מערכות הפעלה. חשוב שתבין שתהליך התקנה ה-plugin ידרוש את הרצתן של כמה פקודות מערכת, דבר שעלול לבעיות אבטחה - ביחוד אם הנכם משתמשים ב-plugins מאתרי צד שלישי. אפילו עם אזהרה זו, איננו מבטיחים את ההצלחה של כל התקנה באשר היא או מקבלים אחריות לנזק שיגרם בעקבות התקנת plugin של Geeklog. במילים אחרות, ההתקנה היא על אחריותכם בלבד. בשביל הזהירים שבכם, הוראות איך להתקין plugin באופן ידני כלולות בכל חבילת plugin.',
-    2 => 'הצהרת התקנת Plugin',
-    3 => 'טופס התקנת Plugin',
-    4 => 'קובץ Plugin',
-    5 => 'רשימת Plugins',
-    6 => 'אזהרה: ה-Plug-in כבר מותקן!',
-    7 => 'ה-plug-in שהנכם מנסה להתקין כבר קיים. אנא מיחקו את ה-plugin לפני התקנתו מחדש.',
-    8 => 'בדיקת התאמת Plugin נכשלה',
-    9 => 'ה-plugin דורש גירסה חדשה יותר של Geeklog. שדרגו את העותק שלכם של <a href="http://www.geeklog.net">Geeklog</a> או השיגו גירסה חדשה יותר של ה-plugin.',
-    10 => '<br><b>אין plugins מותקנים כרגע.</b><br><br>',
-    11 => 'כדי לערוך או למחוק plug-in, ליחצו על אייקון העריכה מתחת. זה יראה את פרטי ה-plugin כולל האתר של יוצריו. גם הגירסה המותקנת וגם הגירסה שמוחזרת מקוד ה-plugin מוצגות. זה יעזור לכם לדעת ה-plugin צריך לעבור שידרוג. כדי להתקין או לשדרג plugin אנא עיברו על הדוקומנטציה שלו.',
-    12 => 'שום שם של plugin לא ניתן ל-plugineditor()',
-    13 => 'עורך Plugins',
-    14 => 'Plugin חדש',
-    15 => 'מרכז הניהול',
-    16 => 'שם ה-Plugin',
-    17 => 'גירסת ה-Plugin',
-    18 => 'גירסת התוכנה',
-    19 => 'אפשרו',
-    20 => 'כן',
-    21 => 'לא',
-    22 => 'התקנה',
-    23 => 'שמירה',
-    24 => 'ביטול',
-    25 => 'מחיקה',
-    26 => 'שם ה-Plugin',
-    27 => 'האתר של ה-Plugin',
-    28 => 'גירסת ה-Plugin',
-    29 => 'גירסת התוכנה',
-    30 => 'האם למחוק את ה-Plugin?',
-    31 => 'האם הינכם בטוחים שאתם מעוניינים למחוק את ה-plugin הזה? על ידי כך אתם תסירו את כל המידע ומבני המידע שה-plugin הזה משתמש בהם. אם הינכם בטוחים, ליחצו שוב על מחיקה בטופס שלהלן.',
-    32 => '<p><b>שגיאה: תווית לינק אוטומטי לא מפורמטת נכון</b></p>',
-    33 => 'גירסת הקוד',
-    34 => 'עידכון',
-    35 => 'עריכה',
-    36 => 'קוד',
-    37 => 'מידע',
-    38 => 'עדכנו!'
-);
-
-###############################################################################
-# admin/syndication.php
-
-$LANG33 = array(
-    1 => 'צרו הזנה',
-    2 => 'שמירה',
-    3 => 'מחיקה',
-    4 => 'ביטול',
-    10 => 'סינדקיציית תוכן',
-    11 => 'הזנה חדשה',
-    12 => 'מרכז הניהול',
-    13 => 'כדי לערוך או למחוק הזנה, ליחצו על אייקון העריכה שלה מתחת. כדי ליצור הזנה חדשה, ליחצו על "צרו חדש" לעיל.',
-    14 => 'כותרת',
-    15 => 'סוג',
-    16 => 'שם קובץ',
-    17 => 'פורמט',
-    18 => 'עודכן לאחרונה',
-    19 => 'מאופשר',
-    20 => 'כן',
-    21 => 'לא',
-    22 => '<i>(אין הזנות)</i>',
-    23 => 'כל המאמרים',
-    24 => 'עורך הזנות',
-    25 => 'כותרת ההזנה',
-    26 => 'גבול',
-    27 => 'אורך הפריטים',
-    28 => '(0 = שום טקסט, 1 = טקסט מלא, כל מספר אחר = הגבלה למספר זה של תווים.)',
-    29 => 'תיאור',
-    30 => 'עודכן לאחרונה',
-    31 => 'קידוד אותיות',
-    32 => 'שפה',
-    33 => 'תכנים',
-    34 => 'פריטים',
-    35 => 'שעות',
-    36 => 'ביחרו את סוג ההזנה',
-    37 => 'יש לכם לפחות plugin אחד מותקן שתומך בסינדקיציית תוכן. תצטרכו לבחור מתחת אם הינכם מעוניינים ליצור הזנת מערכת או הזנה מאחד ה-plugins.',
-    38 => 'שגיאה: שדות חסרים',
-    39 => 'אנא מלאו את כותרת ההזנה, תיאור ושם קובץ.',
-    40 => 'אנא הכניסו את מספר הפריטים או את מספר השעות.',
-    41 => 'שמירה',
-    42 => 'אירועים',
-    43 => 'כולם',
-    44 => 'ללא',
-    45 => 'Header-link in topic',
-    45 => 'קישור ב-header בנושא',
-    46 => 'הגבלת תוצאות',
-    47 => 'חיפוש',
-    48 => 'עריכה',
-    49 => 'הלוגו של ההזנה',
-    50 => "יחסי לכתובת האתר ({$_CONF['site_url']})"
-);
-
-###############################################################################
-# confirmation and error messages
-
-$MESSAGE = array(
-    1 => "סיסמתך נשלחה אליכם באימייל ואמורה להגיע בכל רגע. אנא עיקבו אחר ההוראות שבהודעה ואנו מודים לכם על שימושכם ב-{$_CONF['site_name']}",
-    2 => "תודה לך על הגשת המאמר שלך ל-{$_CONF['site_name']}. הוא הוגש לצוות שלנו בשביל אישור. אם יאושר, מאמרך יהיה זמין לאחרים לקריאה באתר.",
-    3 => "",
-    4 => "תודה לך על הגשת אירוע ל-{$_CONF['site_name']}. הוא הוגש לצוות שלנו בשביל אישור. אם יאושר, הקישור יוצג בפינת <a href={$_CONF['site_url']}/calendar.php>היומן</a> שלנו.",
-    5 => 'המידע של חשבונך נשמר בהצלחה.',
-    6 => 'העדפות התצוגה שלך נשמרו בהצלחה.',
-    7 => 'הגדרות התגובות שלך נשמרו בהצלחה.',
-    8 => 'יצאת מהמערכת בהצלחה.',
-    9 => 'מאמרך נשמר בהצלחה',
-    10 => 'מאמרך נמחק בהצלחה.',
-    11 => 'קוביית המידע שלך נשמרה בהצלחה.',
-    12 => 'קוביית המידע שלך נמחקה בהצלחה.',
-    13 => 'הנושא שלך נשמר בהצלחה.',
-    14 => 'הנושא וכל המאמרים וקוביות המידע שבתוכו נמחקו בהצלחה.',
-    15 => '',
-    16 => '',
-    17 => 'האירוע שלך נשמר בהצלחה.',
-    18 => 'האירוע שלך נמחק בהצלחה.',
-    19 => 'הסקר נשמר בהצלחה.',
-    20 => 'הסקר שלך נמחק בהצלחה.',
-    21 => 'המשתמש נשמר בהצלחה.',
-    22 => 'המשתמש נמחק בהצלחה.',
-    23 => 'חלק שגיאה בנסיון להוסיף אירוע ליומן. לא הועבר קוד זיהוי ארוע.',
-    24 => 'האירוע שלך נשמר בהצלחה ביומן שלך.',
-    25 => 'אי אפשר לפתוח את היומן האישי שלכם עד שתיכנסו למערכת',
-    26 => 'האירוע נמחק בהצלחה מהיומן האישי שלך.',
-    27 => 'ההודעה נשלחה בהצלחה.',
-    28 => 'ה-plugin נשמר בהצלחה',
-    29 => 'מצטערים, יומנים אישיים לא מופעלים באתר הזה',
-    30 => 'הגישה לא אושרה',
-    31 => 'מצטערים, אין לכם גישה לעמוד ניהול המאמרים. אנא שימו לב שכל נסיונות הגישה ליכולות לא מאושרות נרשמים ביומן',
-    32 => 'מצטערים, אין לכם גישה לעמוד ניהול הנושאים. אנא שימו לב שכל נסיונות הגישה ליכולות לא מאושרות נרשמים ביומן',
-    33 => 'מצטערים, אין לכם גישה לעמוד ניהול קוביות המידע. אנא שימו לב שכל נסיונות הגישה ליכולות לא מאושרות נרשמים ביומן',
-    34 => 'מצטערים, אין לכם גישה לעמוד ניהול הקישורים. אנא שימו לב שכל נסיונות הגישה ליכולות לא מאושרות נרשמים ביומן',
-    35 => 'מצטערים, אין לכם גישה לעמוד ניהול האירועים. אנא שימו לב שכל נסיונות הגישה ליכולות לא מאושרות נרשמים ביומן',
-    36 => 'מצטערים, אין לכם גישה לעמוד ניהול הסקרים. אנא שימו לב שכל נסיונות הגישה ליכולות לא מאושרות נרשמים ביומן',
-    37 => 'מצטערים, אין לכם גישה לעמוד ניהול המשתמשימו. אנא שימו לב שכל נסיונות הגישה ליכולות לא מאושרות נרשמים ביומן',
-    38 => 'מצטערים, אין לכם גישה לעמוד ניהול ה-plugins. אנא שימו לב שכל נסיונות הגישה ליכולות לא מאושרות נרשמים ביומן',
-    39 => 'מצטערים, אין לכם גישה לעמוד ניהול הודעות האימייל. אנא שימו לב שכל נסיונות הגישה ליכולות לא מאושרות נרשמים ביומן',
-    40 => 'הודעת מערכת',
-    41 => 'מצטערים, אין לכם גישה לעמוד החלפות המילים. אנא שימו לב שכל נסיונות הגישה ליכולות לא מאושרות נרשמים ביומן',
-    42 => 'המילה שלך נשמרה בהצלחה.',
-    43 => 'המילה שלך נמחקה בהצלחה.',
-    44 => 'ה-plugin נשמר בהצלחה!',
-    45 => 'ה-plugin נמחק בהצלחה.',
-    46 => 'מצטערים, אין בידיכם יכולת גישה לתוכנת גיבוי מאמר המידע. אנא שימו לב שכל נסיונות הגישה ליכולות לא מורשות נרשמות ביומן',
-    47 => 'יכולת זו עובדת רק תחת nix*. אם הינכם מריצים nix* כמערכת ההפעלה שלכם אז זיכרון המטמון שלכם נוקה בהצלחה. אם הנכם משתמשים בחלונות, תיאלצו לחפש אחר קבצים בשם adodb_*.php ולהסירם באופן ידני.',
-    48 => "תודה לך על הגשת הבקשה שלך להצטרף ל-{$_CONF['site_name']}. אנו נבדוק את בקשתך. אם תאושר, סיסמתך תישלח אליך באימייל לכתובת האימייל שהרגע ציינת.",
-    49 => 'קבוצתך נשמרה בהצלחה.',
-    50 => 'הקבוצה נמחקה בהצלחה.',
-    51 => 'שם משתמש זה כבר נמצא בשימוש. אנא ביחרו אחד אחר.',
-    52 => 'כתובת האימייל שצוינה לא נראית ככתובת אימייל תקינה.',
-    53 => 'סיסמתכם החדשה התקבלה. אנא השתמשו בסיסמתכם החדשה שמתחת כדי להיכנס למערכת עכשיו.',
-    54 => 'בקשתכם לסיסמה חדשה פג תוקפה. אנא נסו שוב מתחת.',
-    55 => 'הודעת אימייל נשלחה אליכם ואמורה להגיע בכל רגע. אנא עיקבו אחר ההוראות בהודעה כדי להגדיר סיסמה חדשה לחשבונכם.',
-    56 => 'כתובת האימייל שצוינה כבר נמצאת בשימוש אצל חשבון אחר.',
-    57 => 'חשבונך נמחק בהצלחה.',
-    58 => 'ההזנה שלך נשמרה בהצלחה.',
-    59 => 'ההזנה שלך נמחקה בהצלחה.',
-    60 => 'ה-plugin עודכן בהצלחה',
-    61 => 'Plugin %s - מחזיק מיקום הודעה לא ידוע',
-    62 => 'ההפנייה עם תגובה נמחקה.',
-    63 => 'אירעה שגיאה בעת מחיקת ההפנייה עם תגובה.',
-    64 => 'ההפנייה עם תגובה שלכם נשלחה בהצלחה.',
-    65 => 'שירות ספריית בלוגים נשמר בהצלחה.',
-    66 => 'שירות ספריית בלוגים נמחק.',
-    67 => 'הסיסמה החדשה אינה זהה לסיסמת הבדיקה!',
-    68 => 'הנכם חייבים להכניס את הסיסמה הנוכחית הנכונה.',
-    69 => 'חשבונכם נחסם!',
-    70 => 'חשבונכם מחכה לאישור מנהל.',
-    71 => 'חשבונכם אומת ועכשיו מחכה לאישור מנהל.',
-    72 => 'התרחשה שגיאה בעת נסיון התקנת ה-plugin. קיראו את error.log בשביל פרטים.',
-    73 => 'התרחשה שגיאה בעת נסיון הסרת ה-plugin. קיראו את error.log בשביל פרטים.',
-    74 => 'הפינג החוזר נשלח בהצלחה.',
-    75 => 'הפניות חיבות להישלח בעזרת בקשת POST.'
-);
-
-###############################################################################
-
-$LANG_ACCESS = array(
-    'access' => 'גישה',
-    'ownerroot' => 'בעלים ראשי',
-    'group' => 'קבוצה',
-    'readonly' => 'קריאה בלבד',
-    'accessrights' => 'הרשאות גישה',
-    'owner' => 'בעלים',
-    'grantgrouplabel' => 'אשרו את הרשאות עריכת הקבוצות שלעיל',
-    'permmsg' => 'שימו לב: "חברים רשומים" הם כל המשתמשים שנכנסו בשמם לאתר ו"אורחים באתר" הם כל המשתמשים שנמצאים באתר, אך לא הזדהו.',
-    'securitygroups' => 'קבוצות ביטחון',
-    'editrootmsg' => "אפילו שהינכם מנהלי משתמשים, אינכם יכולים לערוך משתמש ראשי מבלי להיות משתמש ראשי בעצמכם. הנכם יכולים לערוך את כל המשתמשים האחרים מלבד משתמשים ראשיים. אנא שימו לב שכל הנסיונות לערוך משתמשים ראשיים באופן לא מורשה נרשמים ביומן. אנא חיזרו <a href=\"{$_CONF['site_admin_url']}/user.php\">לעמוד ניהול המשתמשים</a>.",
-    'securitygroupsmsg' => 'סמנו את התיבות של הקבוצות שהינכם מעוניינים שהמשתמש ישתייך אליהן.',
-    'groupeditor' => 'עורך קבוצות',
-    'description' => 'תיאור',
-    'name' => 'שם',
-    'rights' => 'הרשאות',
-    'missingfields' => 'שדות חסרים',
-    'missingfieldsmsg' => 'הינכם חייבים לציין את השם והתיאור של הקבוצה',
-    'groupmanager' => 'מנהל קבוצות',
-    'newgroupmsg' => 'כדי לערוך או למחוק קבוצה, ליחצו על אייקון העריכה שמתחת. כדי ליצור קבוצה חדשה, ליחצו על "צרו חדש" לעיל. אנא שימו לב שקבוצות גרעין לא יכולות להימחק מפני שהן בשימוש המערכת.',
-    'groupname' => 'שם קבוצה',
-    'coregroup' => 'קבוצת גרעין',
-    'yes' => 'כן',
-    'no' => 'לא',
-    'corerightsdescr' => "קבוצה זו היא קבוצת גרעין של {$_CONF['site_name']}. לפיכך ההרשאות של קבוצה זו לא יכולות להשתנות. להלן רשימה לקריאה בלבד של ההרשאות שלקבוצה זו יש גישה אליהן.",
-    'groupmsg' => 'קבוצות ביטחון באתר זה הן היררכיות. הוספת קבוצה זו לכל אחת מן הקבוצות שלהלן תיתן  תיתן לאותה קבוצה זכויות זהות לאלו שיש לקבוצות אלו. היכן שמתאפשר מומלץ שתשתמשו בקבוצות שלהלן כדי לתת הרשאות לקבוצה. אם הנכם צריכים שקבוצה זו תקבל הרשאות יחודיות אז תוכלו לבחור הרשאות למגוון יכולות באתר במקום הקרוי \'הרשאות\'. כדי להוסיף קבוצה זו לכל אחת מאלו שלהלן פשוט סמנו את התיבה שליד הקבוצה/ות שהינכם מעוניינים בה/ן.',
-    'coregroupmsg' => "קבוצה זו היא קבוצת גרעין של {$_CONF['site_name']}. לפיכך הקבוצות שקבוצה זו שייכת אליהן לא יכולות להשתנות. להלן רשימה לקריאה בלבד של הקבוצות שקבוצה זו שייכת אליהן.",
-    'rightsdescr' => 'גישה של קבוצה להרשאה מסוימת להלן יכולה להינתן ישירות לקבוצה *או* לקבוצה אחרת שקבוצה זו שייכת אליה. אלו שהנכם רואים להלן שאין להן תיבות סימון הן ההרשאות שניתנו לקבוצה זו מפני שהן שייכות לקבוצה אחרת עם אותן הרשאות. ההרשאות שיש להן תיבות סימון להלן הן הרשאות שיכולות להינתן  ישירות לקבוצה זו.',
-    'lock' => 'נעולה',
-    'members' => 'חברים רשומים',
-    'anonymous' => 'אורחים באתר',
-    'permissions' => 'הרשאות',
-    'permissionskey' => 'R = read, E = edit, הרשאות edit מניחות הרשאות read',
-    'edit' => 'עריכה',
-    'none' => 'אין',
-    'accessdenied' => 'הגישה לא אושרה',
-    'storydenialmsg' => "אין לכם גישה לצפות במאמר זה. סיבה אפשרית לכך היא שאינכם חברים ב-{$_CONF['site_name']}. אנא <a href=users.php?mode=new> היפכו לחברים</a> ב-{$_CONF['site_name']} כדי לקבל גישה מלאה של חברים!",
-    'eventdenialmsg' => "אין לכם גישה לצפות באירוע זה. סיבה אפשרית לכך היא שאינכם חברים ב-{$_CONF['site_name']}. אנא <a href=users.php?mode=new> היפכו לחברים</a> ב-{$_CONF['site_name']} כדי לקבל גישה מלאה של חברים!",
-    'nogroupsforcoregroup' => 'קבוצה זו לא שייכת לשום קבוצה מהקבוצות האחרות',
-    'grouphasnorights' => 'לקבוצה זו אין גישה לאף אחת מיכולות ההנהלה של האתר הזה',
-    'newgroup' => 'קבוצה חדשה',
-    'adminhome' => 'מרכז הניהול',
-    'save' => 'שמירה',
-    'cancel' => 'ביטול',
-    'delete' => 'מחיקה',
-    'canteditroot' => 'ניסיתם לערוך את קבוצת הגרעין אבל אינכם שייכים אליה בעצמכם ולכן גישתכם אליה לא מאושרת. אנא צרו קשר עם מנהלי המערכת אם הנכם מרגישים שמדובר בטעות',
-    'listusers' => 'חברים',
-    'listthem' => 'רשימה',
-    'usersingroup' => 'חברים בקבוצה "%s"',
-    'usergroupadmin' => 'ניהול קבוצות משתמשים',
-    'add' => 'הוספה',
-    'remove' => 'הסרה',
-    'availmembers' => 'חברים אפשריים',
-    'groupmembers' => 'חברי הקבוצה',
-    'canteditgroup' => 'כדי לערוך קבוצה זו, הינכם חייב להיות חברים בה. אנא צור קשר עם מנהלי המערכת אם הנכם מרגישים שמדובר בטעות.',
-    'cantlistgroup' => 'כדי לצפות ברשימת חברי קבוצה זו, הינכם חייב להיות חברים בה בעצמך. אנא צרו קשר עם מנהלי המערכת אם הנכם מרגישים שמדובר בטעות.',
-    'editgroupmsg' => 'על מנת לשנות את הרישום לקבוצות, ליחצו על שם החבר/ים והשתמשו בכפתורי ההוספה והסרה. אם החבר הוא חבר באותה קבוצה, שמם יופיע בצד הימני (השמאלי במצב שפה RTL) בלבד. ברגע שסיימתם - ליחצו על <b>Save</b> כדי לעדכן את הקבוצה ולחזור לעמוד ניהול הקבוצות הראשי.',
-    'listgroupmsg' => 'רשימת כל החברים בקבוצה: <b>%s</b>',
-    'search' => 'חיפוש',
-    'submit' => 'שליחה',
-    'limitresults' => 'הגבלת תוצאות',
-    'group_id' => 'קוד זיהוי הקבוצה',
-    'plugin_access_denied_msg' => 'הנכם מנסים באופן לא חוקי לגשת לעמוד ניהול ה-plugins. אנא שימו לב שכל הנסיונות לגשת לעמוד זה באופן לא חוקי נרשמות ביומן.',
-    'groupexists' => 'שם הקבוצה כבר קיים',
-    'groupexistsmsg' => 'כבר יש קבוצה בשם זה. שמות קבוצות חייבים להיות ייחודיים.'
-);
-
-###############################################################################
-# admin/database.php
-
-$LANG_DB_BACKUP = array(
-    'last_ten_backups' => '10 הגיבויים האחרונים',
-    'do_backup' => 'צרו גיבוי',
-    'backup_successful' => 'גיבוי מאגר הנתונים עבר בהצלחה.',
-    'db_explanation' => 'כדי ליצור גיבוי חדש של המערכת, ליחצו על הכפתור שלעיל',
-    'not_found' => "מיקום שגוי או שה-mysqldump utility היא לא executable.<br>בידקו את הגדרת ה- <strong>\$_DB_mysqldump_path</strong> ב-config.php.<br>המשתנה כרגע מוגדר כ: <var>{$_DB_mysqldump_path}</var>",
-    'zero_size' => 'הגיבוי נכשל. גודל הקובץ היה 0 bytes',
-    'path_not_found' => "{$_CONF['backup_path']} לא קיים או שזו לא ספרייה",
-    'no_access' => "שגיאה: הספרייה {$_CONF['backup_path']} חסומה.",
-    'backup_file' => 'קובץ גיבוי',
-    'size' => 'גודל',
-    'bytes' => 'Bytes',
-    'total_number' => 'סך הכל גיבויים: %d'
-);
-
-###############################################################################
-
-$LANG_BUTTONS = array(
-    1 => 'דף הבית',
-    2 => 'צרו קשר',
-    3 => 'פרסמו מאמר',
-    4 => 'קישורים',
-    5 => 'סקרים',
-    6 => 'יומן',
-    7 => 'סטטיסטיקת האתר',
-    8 => 'התאמה אישית',
-    9 => 'חיפוש',
-    10 => 'חיפוש מתקדם',
-    11 => 'ספריית האתר'
-);
-
-###############################################################################
-# 404.php
-
-$LANG_404 = array(
-    1 => '404 Error',
-    2 => 'לא נמצא העמוד <b>%s</b>.',
-    3 => "<p>מצטערים, אבל הקובץ שביקשתם לקבל לא קיים. אנא הרגישו חופשי לבדוק את <a href=\"{$_CONF['site_url']}\">העמוד הראשי</a> או את <a href=\"{$_CONF['site_url']}/search.php\">עמוד החיפוש</a> כדי לראות אם תוכלו למצוא את מה שאיבדתם."
-);
-
-###############################################################################
-# login form
-
-$LANG_LOGIN = array(
-    1 => 'נדרשת התחברות למערכת',
-    2 => 'מצטערים, כדי להיכנס לאזור זה הינכם נדרשים להתחבר כמשתמשים',
-    3 => 'התחברות למערכת',
-    4 => 'משתמש חדש'
-);
-
-###############################################################################
-# pdfgenerator.php
-
-$LANG_PDF = array(
-    1 => 'יכולת ה-PDF מנוטרלת',
-    2 => 'המסמך שבוקש לא הוגש. המסמך נמצא אבל לא הצליח להתקבל. אנא ודאו שהנכם מגישים רק מסמכים בפורמט HTML שנכתבו בסטנדרט xHTML. אנא שימו לב שמסמכי HTML יותר מדי מורכבים עלולים לא להיות מוגשים כמו שצריך או בכלל. המסמך שנוצר כתוצאה מנסיונכם תפס בגודלו 0 bytes, ונמחק. אם הנכם בטוחים שהמסמך שלכם צריך לעבור הגשה ללא בעיה, אנא הגישו אותו מחדש.',
-    3 => 'בעיה לא ידועה בעת יצירת ה-PDF',
-    4 => "שום מידע על העמוד לא ניתן או שהנכם מעוניינים להשתמש בכלי יצירת PDF יש מאין שלהלן. אם הנכם מרגישים שאתם מקבלים עמוד זה בטעות אז אנא צרו קשר עם מנהלי המערכת. אם לא, תוכלו להשתמש בטופס שלהלן כדי ליצור PDF בצורת אד הוק.",
-    5 => 'טוען את המסמך שלך.',
-    6 => 'אנא חכו עד שהמסמך שלך ייטען.',
-    7 => 'הנכם יכולים לעשות right click על הכפתור שלהלן ולבחור \'save target...\' או \'save link location...\' כדי לשמור עותק של המסמך שלכם.',
-    8 => "המיקום שניתן בקובץ ההגדרות ל-HTMLDoc binary הוא לא אפשרי או שהמערכת אינה יכולה להריץ אותו. אנא צור קשר עם מנהלי האתר אם בעיה זו ממשיכה.",
-    9 => 'יוצר PDF',
-    10 => "זהו כלי יצירת PDF אד הוק. הוא ינסה להמיר כל עמוד אינטרנט שתציינו ל-PDF. אנא שימו לב שיש עמודי אינטרנט שלא מוגשים כמו שצריך לצורך יכולת זו. זוהי מגבלה של ה-HTMLDoc PDF generation tool וטעויות כאלו לא צריכות להיות מדווחות למנהלי אתר זה",
-    11 => 'כתובת',
-    12 => 'צרו PDF!',
-    13 => 'הגדרות ה-PHP שבשרת הזה לא מאפשרות לעמודי אינטרנט להיות בשימוש של הפקודה fopen(). מנהל המערכת חייב לערוך את קובץ ה-php.ini ולקבוע את allow_url_fopen על On',
-    14 => 'ה-PDF שביקשתם לא קיים או שניסיתם לגשת לקובץ בצורה לא מורשית.'
-);
-
-###############################################################################
-# trackback.php
-
-$LANG_TRB = array(
-    'trackback' => 'הפנייה',
-    'from' => 'מ:',
-    'tracked_on' => 'נקלטה ב:',
-    'read_more' => '[קיראו עוד]',
-    'intro_text' => 'הנה מה שהיה לאחרים להגיד בנוגע לנושא \'%s\':',
-    'no_comments' => 'אין הפניות עם תגובות לערך זה.',
-    'this_trackback_url' => 'כתובת מפנה לערך זה:',
-    'num_comments' => '%d הפניות עם תגובות',
-    'send_trackback' => 'שילחו פינגים',
-    'preview' => 'תצוגה מקדימה',
-    'editor_title' => 'שילחו הפנייה עם תגובה',
-    'trackback_url' => 'כתובת מפנה',
-    'entry_url' => 'כתובת להפנייה',
-    'entry_title' => 'כותרת להפנייה',
-    'blog_name' => 'שם אתר',
-    'excerpt' => 'קטע להפנייה',
-    'truncate_warning' => 'שימו לב: האתר שאליו תפנו עשוי לקטוע את הקטע שלכם',
-    'button_send' => 'שליחה',
-    'button_preview' => 'תצוגה מקדימה',
-    'send_error' => 'שגיאה',
-    'send_error_details' => 'שגיאה בעת שליחת הפנייה עם תגובה:',
-    'url_missing' => 'אין כתובת מפנה',
-    'url_required' => 'נא כיתבו לפחות כתובת בשביל הפנייה.',
-    'target_missing' => 'אין כתובת להפנייה',
-    'target_required' => 'אנא כיתבו כתובת להפנייה',
-    'error_socket' => 'לא יכול לפתוח socket.',
-    'error_response' => 'התשובה לא מובנת.',
-    'error_unspecified' => 'שגיאה בלתי מוגדרת.',
-    'select_url' => 'ביחרו כתובת מפנה',
-    'not_found' => 'לא נמצאה הכתובת המפנה',
-    'autodetect_failed' => 'לא ניתן למצוא את הכתובת להפנייה של הפירסום שברצונכם לשלוח לו תגובה. אנא הכניסו אותה באופן ידני להלן.',
-    'trackback_explain' => 'מתוך הקישורים שלהלן, אנא ביחרו את הכתובת שהנכם רוצים לשלוח אליה את ההפנייה עם תגובה שלכם. לאחר מכן יהיה נסיון לזהות את כתובת ההפנייה לפירסום זה. או שתוכלו <a href="%s">להכניס זאת ידנית</a> אם אתם כבר יודעים אותה.',
-    'no_links_trackback' => 'לא נמצאו קישורים. אינכם יכולים לשלוח הפנייה עם תגובה לטקסט זה.',
-    'pingback' => 'פינג חוזר',
-    'pingback_results' => 'תוצאות פינגים חוזרים',
-    'send_pings' => 'שילחו פינגים',
-    'send_pings_for' => 'שילחו פינגים עבור "%s"',
-    'no_links_pingback' => 'לא נמצאו קישורים. שום פינגים חוזרים לא נשלחו לטקסט זה.',
-    'pingback_success' => 'נשלח פינג חוזר.',
-    'no_pingback_url' => 'לא נמצאה כתובת לפינג חוזר.',
-    'resend' => 'שילחו מחדש',
-    'ping_all_explain' => 'הנכם יכולים עכשיו להתקשר אל האתרים שקישרתם אליהם (<a href="http://en.wikipedia.org/wiki/Pingback">פינג חוזר</a>), לפרסם את העובדה שהאתר שלכם עודכן על ידי שליחת פינג לשירותי ספריות בלוגים, או לשלוח <a href="http://en.wikipedia.org/wiki/Trackback">הפנייה</a> במקרה שמה שכתבתם הוא תגובה לגבי מאמר באתר של מישהו אחר.',
-    'pingback_button' => 'שליחת פינג חוזר',
-    'pingback_short' => 'שליחת פינגים חוזרים לכל האתרים שמקושרים מהפנייה זו.',
-    'pingback_disabled' => '(הפינגים החוזרים מנוטרלים)',
-    'ping_button' => 'שליחת פינג',
-    'ping_short' => 'שליחת פינגים לשירותי ספריות בלוגים.',
-    'ping_disabled' => '(הפינגים מנוטרלים)',
-    'trackback_button' => 'שליחת הפנייה',
-    'trackback_short' => 'שליחת הפנייה עם תגובה.',
-    'trackback_disabled' => '(הפניות מנוטרלות)',
-    'may_take_a_while' => 'אנא שימו לב ששליחות פינגים חוזרים ופינגים יכולות לקחת זמן.',
-    'ping_results' => 'תוצאות פינגים',
-    'unknown_method' => 'שיטת שליחת הפינג לא ידועה',
-    'ping_success' => 'הפינג נשלח.',
-    'error_site_name' => 'אנא כיתבו את שם האתר.',
-    'error_site_url' => 'אנא כיתבו את כתובת האתר.',
-    'error_ping_url' => 'אנא כיתבו כתובת נכונה לשליחת פינגים.',
-    'no_services' => 'לא הוגדרו שירותי ספריות בלוגים.',
-    'services_headline' => 'שירותי ספריות בלוגים',
-    'service_explain' => 'כדי לשנות או למחוק שירות ספריית בלוגים, ליחצו על אייקון העריכה של אותו שירות להלן. כדי להוסיף שירות ספריית בלוגים חדש, ליחצו על "צרו חדש" לעיל.',
-    'service' => 'שירות',
-    'ping_method' => 'שיטת שליחת פינג',
-    'service_website' => 'אתר',
-    'service_ping_url' => 'כתובת לשליחת פינג',
-    'ping_standard' => 'פינג סטנדרטי',
-    'ping_extended' => 'פינג מורחב',
-    'ping_unknown' => '(שיטה לא ידועה)',
-    'edit_service' => 'עירכו שירות ספריית בלוגים',
-    'trackbacks' => 'הפניות',
-    'editor_intro' => 'הכינו את ההפנייה עם תגובה שלכם עבור <a href="%s">%s</a>.',
-    'editor_intro_none' => 'הכינו את ההפנייה עם תגובה שלכם.',
-    'trackback_note' => 'כדי לשלוח הפנייה עם תגובה למאמר, לכו לרשימת המאמרים וליחצו על "' . $LANG24[21] . '" במאמר הרצוי. כדי לשלוח הפנייה שאינה קשורה למאמר, <a href="%s">ליחצו כאן</a>.',
-    'pingback_explain' => 'כיתבו כתובת לשליחת הפינג החוזר. הפינג החוזר יכוון לאתר הבית שלכם.',
-    'pingback_url' => 'כתובת לפינג חוזר',
-    'site_url' => 'כתובת אתר זה',
-    'pingback_note' => 'כדי לשלוח פינג חוזר למאמר, לכו לרשימת המאמרים וליחצו על "' . $LANG24[21] . '" במאמר הרצוי. כדי לשלוח פינג חוזר שלא קשור למאמר, <a href="%s">ליחצו כאן</a>.',
-    'pbtarget_missing' => 'אין כתובת לשליחת פינג חוזר',
-    'pbtarget_required' => 'אנא הכניסו כתובת לשליחת פינג חוזר',
-    'pb_error_details' => 'שגיאה בעת שליחת הפינג:'
-);
-
-###############################################################################
-# directory.php
-
-$LANG_DIR = array(
-    'title' => 'ספריית מאמרים',
-    'title_year' => 'ספריית מאמרים עבור %d',
-    'title_month_year' => 'ספריית מאמרים עבור %s %d',
-    'nav_top' => 'בחזרה לספריית המאמרים',
-    'no_articles' => 'אין מאמרים.'
-);
-
-###############################################################################
-# "What's New" Time Strings
-# 
-# For the first two strings, you can use the following placeholders.
-# Order them so it makes sense in your language:
-# %i    item, "Stories"
-# %n    amount, "2", "20" etc.
-# %t    time, "2" (weeks)
-# %s    scale, "hrs", "weeks"
-
-$LANG_WHATSNEW = array(
-    'new_string' => 'יש %n %i חדשים ב-%t ה%s האחרונים/ות',
-    'new_last' => 'ב-%t ה%s האחרונים/ות',
-    'minutes' => 'דקות',
-    'hours' => 'שעות',
-    'days' => 'ימים',
-    'weeks' => 'שבועות',
-    'months' => 'חודשים',
-    'minute' => 'דקה',
-    'hour' => 'שעה',
-    'day' => 'יום',
-    'week' => 'שבוע',
-    'month' => 'חודש'
-);
-
-###############################################################################
-# Admin - Strings
-# 
-# These are some standard strings used by core functions as well as plugins to
-# display administration lists and edit pages
-
-$LANG_ADMIN = array(
-    'search' => 'חיפוש',
-    'limit_results' => 'הגבלת תוצאות',
-    'submit' => 'שליחה',
-    'edit' => 'עריכה',
-    'admin_home' => 'מרכז ניהול',
-    'create_new' => 'צרו חדש',
-    'enabled' => 'מאופשר',
-    'title' => 'כותרת',
-    'type' => 'סוג',
-    'topic' => 'נושא',
-    'help_url' => 'כתובת קובץ עזרה',
-    'save' => 'שמירה',
-    'cancel' => 'ביטול',
-    'delete' => 'מחיקה',
-    'copy' => 'העתקה',
-    'no_results' => '- לא נמצאו נתונים -',
-    'data_error' => 'הייתה בעיה בעיבוד נתוני המנוי שלכם. אנא בידקו את מקור הנתונים.'
-);
-
-###############################################################################
-# Localisation of the texts for the various drop-down menus that are actually
-# stored in the database. If these exist, they override the texts from the
-# database.
-
-$LANG_commentcodes = array(
-    0 => 'איפשור תגובות',
-    -1 => 'ניטרול תגובות'
-);
-
-
-$LANG_commentmodes = array(
-    'flat' => 'שטוחות',
-    'nested' => 'בצורת עץ',
-    'threaded' => 'מושחלות',
-    'nocomment' => 'ללא תגובות'
-);
-
-$LANG_cookiecodes = array(
-    0 => '(ללא)',
-    3600 => 'שעה',
-    7200 => 'שעתיים',
-    10800 => '3 שעות',
-    28800 => '8 שעות',
-    86400 => 'יום',
-    604800 => 'שבוע',
-    2678400 => 'חודש'
-);
-
-$LANG_dateformats = array(
-    0 => 'ברירת המחדל של המערכת'
-);
-
-$LANG_featurecodes = array(
-    0 => 'לא מוצג',
-    1 => 'מוצג'
-);
-
-$LANG_frontpagecodes = array(
-    0 => 'הראה רק בנושא',
-    1 => 'הראה בעמוד הראשי'
-);
-
-$LANG_postmodes = array(
-    'plaintext' => 'טקסט פשוט',
-    'html' => 'פורמט HTML'
-);
-
-$LANG_sortcodes = array(
-    'ASC' => 'הישן קודם',
-    'DESC' => 'החדש קודם'
-);
-
-$LANG_trackbackcodes = array(
-    0 => 'איפשור הפניות',
-    -1 => 'ניטרול הפניות'
-);
-
-?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/hebrew_utf-8.php 1.4.1.src/cpanel-glprivate/language/hebrew_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/hebrew_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/language/hebrew_utf-8.php	2006-10-15 12:40:49.000000000 -0500
@@ -0,0 +1,1497 @@
+<?php
+
+###############################################################################
+# hebrew.php # last Update  14/10/2006
+# Version 1.4.1 #1.0
+# Copyright (C) http://lior.weissbrod.com
+#
+# Originally:
+# hebrew.php # last Update  07/03/2004 23:35
+# this is "hebrew.php" Written by Tal Vizel tal-hebrew-lang-gl@1212.co.il
+# This is the Hebrew language page for GeekLog!
+# Special thanks to Mischa Polivanov for his work on this project
+#
+# Copyright (C) 2000 Jason Whittenburg
+# jwhitten AT securitygeeks DOT com
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+$LANG_CHARSET = 'utf-8';
+$LANG_DIRECTION = 'rtl';
+
+###############################################################################
+# Array Format:
+# $LANGXX[YY]:  $LANG - variable name
+#               XX    - file id number
+#               YY    - phrase id number
+###############################################################################
+
+###############################################################################
+# USER PHRASES - These are file phrases used in end user scripts
+###############################################################################
+
+###############################################################################
+# lib-common.php
+
+$LANG01 = array(
+    1 => 'נכתב על-ידי',
+    2 => 'המאמר המלא',
+    3 => 'תגובות',
+    4 => 'עריכה',
+    5 => 'הצביעו',
+    6 => 'תוצאות',
+    7 => '',
+    8 => 'קולות',
+    9 => 'פונקציות ניהול',
+    10 => 'הגשות',
+    11 => 'מאמרים',
+    12 => 'קוביות מידע',
+    13 => 'נושאים',
+    14 => '',
+    15 => '',
+    16 => '',
+    17 => 'משתמשים',
+    18 => 'שאילתת SQL',
+    19 => 'יציאה מהמערכת',
+    20 => 'פרטי משתמש',
+    21 => 'שם משתמש',
+    22 => 'קוד משתמש',
+    23 => 'רמת אבטחה',
+    24 => 'משתמש אנונימי',
+    25 => 'תגובה',
+    26 => 'התגובות הבאות שייכות למי שכתב אותן. אתר זה לא אחראי למה שהן אומרות.',
+    27 => 'המאמר החדש ביותר',
+    28 => 'מחיקה',
+    29 => 'לא נרשמו תגובות',
+    30 => 'מאמרים ישנים',
+    31 => 'פקודות HTML מורשות:<br>',
+    32 => 'הודעת שגיאה, חסר שם משתמש!',
+    33 => 'הודעת שגיאה, לא מצליח לכתוב לקובץ log',
+    34 => 'שגיאה',
+    35 => 'התנתק',
+    36 => 'בשעה:',
+    37 => 'טרם נכתבו מאמרים',
+    38 => 'סינדקיציית תוכן',
+    39 => 'רענן',
+    40 => 'מוגדר לכם <tt>register_globals = Off</tt> ב-<tt>php.ini</tt> שלכם. עם זאת, דרוש ש- <tt>register_globals</tt> יהיה <strong>on</strong>. לפני שהנכם ממשיכים, אנא הגדירו אותו על <strong>on</strong> ואתחלו מחדש את שרת הרשת שלכם.',
+    41 => 'אורחים',
+    42 => 'נכתב על ידי:',
+    43 => 'הגיבו לזה',
+    44 => 'ראשי',
+    45 => 'מספר הודעת שגיאה של MySQL:',
+    46 => 'הודעת שגיאה של MySQL:',
+    47 => 'אפשרויות משתמש',
+    48 => 'פרטי חשבון',
+    49 => 'מאפייני תצוגה',
+    50 => 'שגיאה עם SQL statement',
+    51 => 'עזרה',
+    52 => 'חדש',
+    53 => 'מרכז הניהול',
+    54 => 'אי אפשר היה לפתוח את הקובץ.',
+    55 => 'שגיאה ב:',
+    56 => 'הצביעו',
+    57 => 'סיסמה',
+    58 => 'כניסה',
+    59 => "אם אין לכם עדיין חשבון, זה הזמן <a href=\"{$_CONF['site_url']}/users.php?mode=new\">להירשם</a> לאתר",
+    60 => 'הוספת תגובה',
+    61 => 'צרו חשבון חדש',
+    62 => 'מילים',
+    63 => 'מאפייני תגובה',
+    64 => 'שילחו את המאמר לחבר',
+    65 => 'צפו בגירסה להדפסה',
+    66 => '',
+    67 => 'ברוכים הבאים ל: ',
+    68 => 'בית',
+    69 => 'צרו קשר',
+    70 => 'חיפוש',
+    71 => 'הוסיפו מאמר',
+    72 => 'קישורי רשת',
+    73 => '',
+    74 => '',
+    75 => 'חיפוש מתקדם',
+    76 => 'סטטיסטיקת אתר',
+    77 => 'הרחבות תוכנה',
+    78 => '',
+    79 => 'מה חדש',
+    80 => 'מאמרים ב:',
+    81 => 'מאמר ב:',
+    82 => 'השעות האחרונות',
+    83 => 'תגובות',
+    84 => '',
+    85 => 'ב-48 השעות האחרונות',
+    86 => 'אין תגובות חדשות',
+    87 => 'בשבועיים האחרונים',
+    88 => '',
+    89 => '',
+    90 => 'דף הבית',
+    91 => 'דף זה נוצר תוך',
+    92 => 'שניות',
+    93 => 'זכויות יוצרים',
+    94 => 'כל הזכויות והסימנים המסחריים בדף זה שמורים לבעליהם',
+    95 => 'מונע על גבי',
+    96 => 'קבוצות',
+    97 => 'רשימות מילים',
+    98 => 'הרחבות Plugins',
+    99 => 'מאמרים',
+    100 => 'אין מאמרים חדשים',
+    101 => '',
+    102 => '',
+    103 => 'יצירת גיבוי',
+    104 => 'על ידי',
+    105 => 'שליחת דואר למשתמשים',
+    106 => 'נצפה',
+    107 => 'בדיקת גירסת תוכנה',
+    108 => 'נקו את זיכרון המטמון',
+    109 => 'דווחו על שימוש לרעה',
+    110 => 'דווחו על תגובה זו למנהל האתר',
+    111 => 'צפו בגירסת PDF',
+    112 => 'משתמשים רשומים',
+    113 => 'דוקומנטציה',
+    114 => 'הפניות',
+    115 => 'אין הפניות עם תגובות חדשות',
+    116 => 'הפנייה',
+    117 => 'ספרייה',
+    118 => 'אנא המשיכו לקרוא בדף הבא:',
+    119 => "איבדתם את <a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">סיסמתכם</a>?",
+    120 => 'קישור קבוע לתגובה זו',
+    121 => 'תגובות (%d)',
+    122 => 'הפניות (%d)',
+    123 => 'HTML מותר לגמרי לשימוש',
+    124 => 'ליחצו כדי למחוק את כל הפריטים המסומנים',
+    125 => 'האם הנכם בטוחים שאתם רוצים למחוק את כל הפריטים המסומנים',
+    126 => 'ביחרו או הוציאו מהבחירה את כל הפריטים'
+);
+
+###############################################################################
+# comment.php
+
+$LANG03 = array(
+    1 => 'הוספת תגובה',
+    2 => 'מצב תגובה',
+    3 => 'התנתקות',
+    4 => 'יצירת חשבון',
+    5 => 'שם משתמש',
+    6 => 'אתר זה דורש הזדהות במערכת כדי לכתוב תגובה, נא הזדהו. אם אין ברשותכם חשבון הינכם יכולים להשתמש בטופס שלהלן כדי ליצור אחד.',
+    7 => 'תגובתכם האחרונה הייתה לפני ',
+    8 => " שניות. אתר זה דורש לפחות {$_CONF['commentspeedlimit']} שניות בין תגובות",
+    9 => 'תגובה',
+    10 => 'שליחת דיווח',
+    11 => 'הוספת תגובה',
+    12 => 'נא למלא את שדות הכותרת והתגובה, מפני שהם נחוצים כדי להגיב.',
+    13 => 'המידע שלך',
+    14 => 'תצוגה מקדימה',
+    15 => 'דווחו על תגובה זו',
+    16 => 'כותרת',
+    17 => 'שגיאה',
+    18 => 'דברים חשובים',
+    19 => 'נא להשתדל להגיב על נושא המאמר.',
+    20 => 'נא להשתדל להגיב על תגובות קודמות ולא לפתוח נושאים חדשים.',
+    21 => 'נא לקרוא את התגובות שנכתבו לפניכם בכדי לא לחזור על דברים שכבר נאמרו.',
+    22 => 'השתמש בכותרת שתתאר בבירור את נושא התגובה שלך.',
+    23 => 'האימייל שלך *לא* יוצג לגולשים באתר',
+    24 => 'משתמש אנונימי',
+    25 => 'האם הנכם בטוחים שברצונכם לדווח על תגובה זו למנהלי האתר?',
+    26 => '%s דיווח/ה על התגובה הפוגענית הבאה:',
+    27 => 'דיווח על שימוש לרעה'
+);
+
+###############################################################################
+# usersettings.php
+
+$LANG04 = array(
+    1 => 'פרופיל המשתמש של',
+    2 => 'User Name',
+    3 => 'שמכם המלא',
+    4 => 'Password',
+    5 => 'Email',
+    6 => 'אתר בית',
+    7 => 'פרטים אישיים',
+    8 => 'מפתח PGP',
+    9 => 'שמירת הנתונים',
+    10 => 'עשרת התגובות האחרונות של',
+    11 => 'אין תגובות',
+    12 => 'מאפיני המשתמש של',
+    13 => 'שילחו באימייל את הלקט הלילי',
+    14 => 'סיסמה זו נוצרה בצורה רנדומלית, אולם מומלץ לשנות אותה מוקדם ככל האפשר. על מנת לעשות זאת, היכנסו לחשבונכם והקלידו על מאפייני החשבון בתפריט אפשרויות המשתמש.',
+    15 => "יצירת חשבונך ב-\n{$_CONF['site_name']}\n הושלמה בהצלחה! כעת, על-מנת להשתמש בו עליך להכניס בכניסה את שם המשתמש שלך ואת הסיסמה שקיבלת כאן. מומלץ לשמור את האימייל הזה במקום נגיש כדי להקל עליך בכניסות עתידיות לחשבונך.",
+    16 => 'פרטי חשבונך',
+    17 => 'החשבון לא קיים',
+    18 => 'כתובת האימייל שהוקלדה לא נראית תקינה',
+    19 => 'שם המשתמש או הסיסמה שהוקלדו כבר תפוסים',
+    20 => 'כתובת האימייל שהוקלדה לא נראית כתובת אימייל תקינה',
+    21 => 'שגיאה',
+    22 => "רישום ב-{$_CONF['site_name']}!",
+    23 => "יצירת חשבון תיתן לך את כל התועלות שטמונות בחברות ב-{$_CONF['site_name']} ותאפשר לך לפרסם תגובות ופריטים נוספים כעצמך. ללא חשבון, תוכלו רק לפרסם הודעות אנונימיות. לידיעתך, כתובת הדואל שלך <b>לעולם לא</b> תתפרסם באופן גלוי באתר זה.",
+    24 => 'סיסמתכם תישלח לכתובת האימייל שתכניסו.',
+    25 => 'האם שכחת את סיסמתך?',
+    26 => 'הכניסו את שם המשתמש שלכם <em>או</em> את כתובת האימייל שאיתם נרשמתם וליחצו על שליחת סיסמה לאימייל. הוראות כיצד להגדיר סיסמה חדשה ישלחו לכתובת האימייל שרשומה במערכת.',
+    27 => 'הירשמו עכשיו!',
+    28 => 'שלח סיסמה חדשה באימייל',
+    29 => 'התנתק/ה מ:',
+    30 => 'התחבר/ה מ:',
+    31 => 'הפונקציה שבה בחרתם דורשת התחברות לאתר על ידי הכנסת שם משתמש וסיסמה',
+    32 => 'חתימה',
+    33 => 'לעולם לא מוצג בפומבי',
+    34 => 'זהו שמכם האמיתי',
+    35 => 'הכניסו סיסמה רצויה חדשה',
+    36 => 'מתחיל ב-<span dir=ltr>http://</span>',
+    37 => 'מצורפת לתגובות שלכם',
+    38 => 'הכל על עצמך! כולם יכולים לקרוא זאת',
+    39 => 'מפתח ה-PGP הפומבי שלך',
+    40 => 'ללא הצגת אייקוני נושאים',
+    41 => 'מוכן להיות moderator',
+    42 => 'פורמט תאריך',
+    43 => 'מקסימום מאמרים',
+    44 => 'ללא קוביות מידע',
+    45 => 'מאפייני תצוגה של',
+    46 => 'ללא פריטים של',
+    47 => 'הגדרת קוביית מידע של חדשות עבור',
+    48 => 'נושאים',
+    49 => 'ללא האייקון המופיע לצד המאמר',
+    50 => 'בטלו את הסימון אם אינכם מעוניינים בפונקציה זו',
+    51 => 'יופיעו מאמרים בלבד ללא הקוביות בצדדים',
+    52 => 'ברירת המחדל היא',
+    53 => 'קבלו את מאמרי היום כל לילה',
+    54 => 'סמנו את הנושאים והכותבים שאינכם מעוניין לראות.',
+    55 => 'אם תשאירו את כולם לא מסומנים, הכוונה היא שהנכם מעוניינים בבחירת ברירת המחדל של קוביות המידע. אם תחלו לבחור קוביות, זיכרו לבחור כל מה שתרצו לראות מפני שבחירת ברירת המחדל כבר לא תהיה רלבנטית. פריטים שנבחרים כברירת מחדל מסומנים בהדגשה.',
+    56 => 'כותבים',
+    57 => 'אופן תצוגה',
+    58 => 'סדר מיון',
+    59 => 'הגבלת תגובות',
+    60 => 'איך הנכם מעוניינים שהתגובות יוצגו?',
+    61 => 'קודם חדש או ישן?',
+    62 => 'ברירת המחדל היא 100',
+    63 => "הסיסמה נשלחה אליכם באמצעות האימייל והנכם אמור לקבל אותה בכל רגע. אנא עיקבו אחר ההוראות שבאימייל ואנו מודים לכם על שימושכם ב-\n{$_CONF['site_name']}",
+    64 => 'מאפייני תגובות של',
+    65 => 'נסו להיכנס שוב',
+    66 => "יכול להיות שטעיתם באיות נתוני הכניסה לחשבון שלכם.  אנא נסו להתחבר שנית בתיבה שמתחת. האם הינכם <a href=\"{$_CONF['site_url']}/users.php?mode=new\">משתמשים חדשים</a>?",
+    67 => 'חבר/ה חדש/ה מאז',
+    68 => 'המערכת תזכור אותי עד',
+    69 => 'לכמה זמן הנכם מעוניינים שהמערכת תזכור אתכם לאחר שתיכנסו אליה?',
+    70 => "התאימו אישית את מראה האתר ואת התוכן של {$_CONF['site_name']}",
+    71 => "אחת מהאפשרויות של אתר {$_CONF['site_name']} היא שהנכם יכולים להתאים אישית את התוכן שאתם מקבלים ולשנות את המראה הכללי של האתר. על מנת ליהנות מיתרונות אלו, עליכם <a href=\"{$_CONF['site_url']}/users.php?mode=new\">להירשם</a> ב-{$_CONF['site_name']}. האם אתם כבר רשומים? אם כן, השתמשו בטופס הכניסה והתחברו!",
+    72 => 'מראה האתר',
+    73 => 'שפה',
+    74 => 'שנו את מראה האתר!',
+    75 => 'נושאים שישלחו באימייל עבור',
+    76 => 'בחירה באחת מהאפשרויות הרשומות שלהלן תאפשר לך לקבל, בסוף כל יום, את כל המאמרים החדשים שייתווספו לנושא זה. מומלץ לבחור רק בנושאים המעניינים אותך!',
+    77 => 'תמונה',
+    78 => 'הוספת תמונה של עצמך!',
+    79 => 'ליחצו כאן בכדי למחוק את התמונה',
+    80 => 'התחברו',
+    81 => 'שילחו אימייל',
+    82 => 'עשרת המאמרים האחרונים של',
+    83 => 'הצג סטטיסטיקה עבור המשתמש',
+    84 => 'סך הכל מאמרים:',
+    85 => 'סך הכל תגובות:',
+    86 => 'מיצאו כל מה שנכתב על ידי',
+    87 => 'שם המשתמש שלך הוא',
+    88 => "מישהו (יתכן שאתם) ביקש סיסמה חדשה לחשבונכם \n\"%s\"\n ב-\n{$_CONF['site_name']}.\n\n אם הנכם אכן מעוניינים לעשות פעולה זו, אנא ליחצו על הלינק הבא:\n\n",
+    89 => "אם אינכם מעוניין שפעולה זו תתרחש, פשוט התעלמו מהודעה זו והבקשה תבוטל (סיסמתכם תישאר ללא שינוי).\n\n",
+    90 => 'הכניסו את סיסמתכם החדשה בדף זה. אנא שימו לב שסיסמתכם הישנה תישאר בתוקף עד שתשלחו טופס זה.',
+    91 => 'קיבעו סיסמה חדשה',
+    92 => 'הכניסו סיסמה חדשה',
+    93 => 'הבקשה האחרונה שלכם לקבלת סיסמה חדשה הייתה לפני %d שניות. אתר זה דורש לפחות %d שניות בין בקשות סיסמה.',
+    94 => 'מיחקו את החשבון "%s"',
+    95 => 'ליחצו על הכפתור "מחיקת חשבון" שמתחת כדי למחוק את חשבונכם ממאגר הנתונים שלנו. אנא שימו לב שכל המאמרים והתגובות שכתבתם תחת חשבון זה <strong>לא</strong> ימחקו, אלא ייראו כאילו נכתבו על ידי "משתמש אנונימי".',
+    96 => 'מחיקת חשבון',
+    97 => 'אשרו את מחיקת החשבון',
+    98 => 'האם הנכם בטוחים שאתה רוצים למחוק את חשבונכם? משמעות הדבר היא שלא תוכלו להתחבר לאתר יותר (אלא אם כן תיצרו משתמש חדש). אם הנכם בטוחים, ליחצו שוב על "מחיקת חשבון" שבטופס מתחת.',
+    99 => 'דרישות הפרטיות של',
+    100 => 'קבלת הודעות באימייל ממנהלי האתר',
+    101 => 'אשרו קבלת הודעות באימייל ממנהלי האתר',
+    102 => 'הודעות אימייל ממשתמשים',
+    103 => 'אשרו קבלת הודעות באימייל ממשתמשים באתר',
+    104 => 'הצגת סטטוס החיבור שלכם',
+    105 => 'הופיעו בקוביית המידע מי באתר',
+    106 => 'מיקום',
+    107 => 'מוצג בפרופיל הפומבי שלך',
+    108 => 'אשרו סיסמה חדשה',
+    109 => 'הכניסו את הסיסמה החדשה שוב פה',
+    110 => 'סיסמה נוכחית',
+    111 => 'אנא הכניסו את הסיסמה הנוכחית שלכם',
+    112 => 'עברתם את מספר הנסיונות המותרים להיכנס למערכת. אנא נסו שוב מאוחר יותר.',
+    113 => 'נסיון כניסה נכשל',
+    114 => 'החשבון נוטרל',
+    115 => 'חשבונכם נוטרל, אינכם יכולים להיכנס למערכת. אנא צרו קשר עם אחד המנהלים.',
+    116 => 'החשבון מחכה להפעלה',
+    117 => 'חשבונכם כרגע מחכה להפעלה על ידי מנהל. לא תוכלו להיכנס למערכת עד שחשבונכם יאושר.',
+    118 => "חשבונכם ב-{$_CONF['site_name']} הופעל עכשיו על ידי מנהל. תוכלו עכשיו להיכנס לאתר בכתובת שלהלן על ידי שימוש בשם המשתמש (<username>) ובסיסמה שנשלחו אליכם מוקדם יותר באימייל.",
+    119 => 'אם שכחתם את הסיסמה שלכם, תוכלו לבקש אחת חדשה בכתובת הבאה:',
+    120 => 'החשבון הופעל',
+    121 => 'שירות',
+    122 => 'מצטערים, אפשרות הרשמת משתמשים חדשים מנוטרלת',
+    123 => "האם אתם <a href=\"{$_CONF['site_url']}/users.php?mode=new\">משתמשים חדשים</a>?",
+    124 => 'אמתו את כתובת האימייל',
+    125 => 'הנכם חייבים לכתוב את אותה כתובת האימייל בשני השדות!',
+    126 => 'אנא חיזרו שוב בשביל אימות',
+    127 => 'כדי לשנות איזושהי מההגדרות, תצטרכו להכניס את הסיסמה הנוכחית שלכם.',
+    128 => 'השם שלך',
+    129 => 'סיסמה וכתובת אימייל',
+    130 => 'מידע עליכם',
+    131 => 'אפשרויות הלקט היומי',
+    132 => 'אופציית הלקט היומי',
+    133 => 'תצוגת תגובות',
+    134 => 'אפשרויות תגובות',
+    135 => '<li>מצב ברירת המחדל לאיך יוצגו תגובות</li><li>סדר ברירת המחדל להצגת תגובות</li><li>הגדירו מספר מקסימלי של תגובות להצגה - ברירת המחדל היא 100</li>',
+    136 => 'הוציאו נושאים וכותבים',
+    137 => 'סננו תוכן מאמרים',
+    138 => 'הגדרות שונות',
+    139 => 'מראה ושפה',
+    140 => '<li>אם תסמנו את ללא אייקוני נושא, אז לא יוצגו אייקוני נושא במאמרים</li><li>אם תסמנו את ללא קוביות מידע, אז יוצגו רק תפריט הניהול, תפריט המשתמש ונושאים<li>קיבעו את המספר המקסימלי של מאמרים שיוצגו בכל דף</li><li>קיבעו את מראה האתר ואת תצוגת התפריט המועדפת</li>',
+    141 => 'הגדרות פרטיות',
+    142 => 'הגדרת ברירת המחדל היא לאפשר למשתמשים ולמנהלים לשלוח הודעות אימייל למשתמשי האתר ולהציג אותם כמחוברים למערכת. נטרלו אפשרויות אלה כדי להגן על פרטיותכם.',
+    143 => 'סננו תוכן קוביות מידע',
+    144 => 'הצגת והחבאת קוביות מידע',
+    145 => 'הפרופיל הציבורי שלך',
+    146 => 'סיסמה וכתובת אימייל',
+    147 => 'עירכו את סיסמת החשבון, כתובת האימייל ואת הכניסה האוטומטית למערכת שלכם. תצטרכו להכניס את אותה סיסמה או כתובת אימייל פעמיים בשביל אימות.',
+    148 => 'מידע משתמש',
+    149 => 'שנו את מידע המשתמש שלכם שיוצג למשתמשים אחרים.<li>החתימה שלכם תתווסף לכל תגובה או הודעה בפורום שתכתבו
+</li><li>הביוגרפיה שלכם היא תקציר מסכם של עצמכם בשביל לחלוק בו</li><li>
+חלקו את מפתח ה-PHP שלכם</li>',
+    150 => 'אזהרה: ה-Javascript מיועד לביצועים מוגברים',
+    151 => 'תצוגה מקדימה',
+    152 => 'שם משתמש וסיסמה',
+    153 => 'מראה ושפה',
+    154 => 'תוכן',
+    155 => 'פרטיות',
+    156 => 'מחיקת החשבון'
+);
+
+###############################################################################
+# index.php
+
+$LANG05 = array(
+    1 => 'אין חדשות להצגה',
+    2 => 'אין שום חדשות להצגה. ייתכן שאין שום חדשות בתוך הנושא הזה או שהגדרות המשתמש שלך מגבילות מדי',
+    3 => ' עבור נושא %s',
+    4 => 'המאמר המוצג של היום',
+    5 => 'הבא',
+    6 => 'הקודם',
+    7 => 'הראשון',
+    8 => 'האחרון'
+);
+
+###############################################################################
+# profiles.php
+
+$LANG08 = array(
+    1 => 'הרעה שגיאה במשלוח ההודעה, אנא נסה/י שוב',
+    2 => 'ההודעה נשלחה בהצלחה',
+    3 => 'וודאו שכתובת האימייל לקבלת תגובה תהיה נכונה',
+    4 => 'אנא מלאו את שמכם, את כתובת האימייל שלכם, את הנושא ואת ההודעה',
+    5 => 'שגיאה, אין משתמש בשם שבחרת',
+    6 => 'ההודעה לא נשלחה בהצלחה עקב שגיאה.',
+    7 => 'פרופיל המשתמש של',
+    8 => 'שם המשתמש',
+    9 => 'אתר בית',
+    10 => 'שלח הודעת אימייל ל:',
+    11 => 'שמכם',
+    12 => 'כתובת אימייל לקבלת תגובה',
+    13 => 'נושא',
+    14 => 'הודעה:',
+    15 => 'HTML לא יתורגם',
+    16 => 'שליחת ההודעה',
+    17 => 'שילחו את המאמר לחבר',
+    18 => 'שם הנמען',
+    19 => 'כתובת האימייל של הנמען',
+    20 => 'שם השולח',
+    21 => 'כתובת האימייל של השולח',
+    22 => 'חובה למלא את כל השדות',
+    23 => "אימייל זה נשלח אליכם על ידי %s מפני שחשבו שהנכם עשויים להתעניין במאמר הזה מתוך {$_CONF['site_url']}. זה לא ספאם וכתובות האימייל שהיו מעורבות בתקשורת זו לא נשמרו לרשימה או לשימוש מאוחר יותר.",
+    24 => 'הגיבו על מאמר זה ב:',
+    25 => 'הינכם חייבים להתחבר כדי להשתמש בתכונה זו. השימוש בהתחברות עוזר לנו למנוע שימוש לא נכון במערכת.',
+    26 => 'טופס זה יאפשר לכם לשלוח הודעת אימייל למשתמש הנבחר. כל השדות נחוצים.',
+    27 => 'הודעה קצרה',
+    28 => '%s כתב: ',
+    29 => "זהו הלקט היומי של {$_CONF['site_name']} עבור ",
+    30 => ' עלון החדשות היומי עבור ',
+    31 => 'כותרת',
+    32 => 'תאריך',
+    33 => 'קיראו את המאמר המלא ב:',
+    34 => 'סוף ההודעה',
+    35 => 'מצטערים, משתמש זה מעדיף לא לקבל כלל הודעות אימייל.'
+);
+
+###############################################################################
+# search.php
+
+$LANG09 = array(
+    1 => 'חיפוש מתקדם',
+    2 => 'מילות מפתח',
+    3 => 'כותרת',
+    4 => 'הכל',
+    5 => 'סוג',
+    6 => 'מאמרים',
+    7 => 'תגובות',
+    8 => 'כותבים',
+    9 => 'הכל',
+    10 => 'חיפוש',
+    11 => 'תוצאות החיפוש',
+    12 => 'התאמות',
+    13 => 'תוצאות החיפוש: לא נמצאו מחרוזות תואמות',
+    14 => 'לא נמצאו התאמות לחיפושכם',
+    15 => 'אנא נסו שוב',
+    16 => 'כותרת',
+    17 => 'תאריך',
+    18 => 'נכתב על ידי',
+    19 => "חפשו בכל מאגר המידע של {$_CONF['site_name']} הכולל מאמרים חדשים וישנים",
+    20 => 'תאריך',
+    21 => 'עד ל-',
+    22 => '(פורמט תאריך YYYY-MM-DD)',
+    23 => 'צפיות',
+    24 => 'נמצאו %d פריטים',
+    25 => 'הצגת תוצאות עבור',
+    26 => 'פריטים ',
+    27 => 'שניות',
+    28 => ' לא נמצאו מאמרים או תגובות המתאימים לחיפוש שלך',
+    29 => 'תוצאות החיפוש',
+    30 => '',
+    31 => 'Plugin זה לא החזיר שום תוצאות',
+    32 => '',
+    33 => 'כתובת אתר',
+    34 => 'מיקום',
+    35 => 'יום שלם',
+    36 => '',
+    37 => '',
+    38 => '',
+    39 => '',
+    40 => '',
+    41 => 'חובה להכניס לפחות 3 תווים.',
+    42 => 'אנא השתמשו בתאריך מפורמט בסגנון YYYY-MM-DD (יום-חודש-שנה).',
+    43 => 'ביטוי מדויק',
+    44 => 'כל המילים שהוכנסו',
+    45 => 'לפחות אחת מהמילים שהוכנסו',
+    46 => 'הבא',
+    47 => 'הקודם',
+    48 => 'הכותב',
+    49 => 'תאריך',
+    50 => 'כניסות',
+    51 => '',
+    52 => 'מיקום',
+    53 => 'תוצאות מאמרים',
+    54 => 'תוצאות תגובות',
+    55 => 'מחרוזת החיפוש',
+    56 => 'וגם',
+    57 => 'או',
+    58 => 'תוצאות נוספות &gt;&gt;',
+    59 => 'תוצאות',
+    60 => 'בכל עמוד',
+    61 => 'הגדירו מחדש את החיפוש'
+);
+
+###############################################################################
+# stats.php
+
+$LANG10 = array(
+    1 => 'סטטיסטיקת האתר',
+    2 => 'סך הכל כניסות למערכת',
+    3 => 'מאמרים (תגובות) במערכת',
+    4 => '',
+    5 => '',
+    6 => '',
+    7 => 'עשרת המאמרים הנצפים ביותר',
+    8 => 'כותרת המאמר',
+    9 => 'צפיות',
+    10 => 'נראה שאין מאמרים באתר זה או שאף אחד עוד לא ראה אותם.',
+    11 => 'עשרת המאמרים עם הכי הרבה תגובות',
+    12 => 'תגובות',
+    13 => 'נראה שאין מאמרים באתר זה או שאף אחד עוד לא הגיב אליהם.',
+    14 => '',
+    15 => '',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => '',
+    20 => '',
+    21 => '',
+    22 => 'עשרת המאמרים שהכי נשלחו באימייל',
+    23 => 'אימיילים',
+    24 => 'נראה שאף אחד עוד לא שלח מאמר באימייל באתר זה',
+    25 => 'עשרת המאמרים שקיבלו הכי הרבה הפניות עם תגובות',
+    26 => 'לא נמצאו הפניות עם תגובות למאמרים.',
+    27 => 'מספר המשתמשים הפעילים',
+    28 => '',
+    29 => '',
+    30 => 'צפיות',
+    31 => ''
+);
+
+###############################################################################
+# article.php
+
+$LANG11 = array(
+    1 => 'קישורים רלבנטיים',
+    2 => 'שליחת המאמר לחבר',
+    3 => 'גירסה להדפסה',
+    4 => 'אפשרויות למאמר זה',
+    5 => 'המאמר בפורמט PDF'
+);
+
+###############################################################################
+# submit.php
+
+$LANG12 = array(
+    1 => 'על מנת לבצע %s עליכם להיות משתמשים רשומים במערכת',
+    2 => 'כניסה',
+    3 => 'משתמש חדש',
+    4 => '',
+    5 => '',
+    6 => 'שילחו מאמר',
+    7 => 'דרושה כניסה למערכת',
+    8 => 'שליחה',
+    9 => 'בעת שליחת מידע לשימוש באתר אנו מבקשים שתעקבו אחר ההמלצות הבאות...<ul><li>מלאו את כל השדות, הם נדרשים<li>הכניסו מידע מלא ומדויק<li>בידקו טוב כתובות של אתרים</ul>',
+    10 => 'כותרת',
+    11 => '',
+    12 => 'תאריך התחלה',
+    13 => 'תאריך סיום',
+    14 => 'מיקום',
+    15 => 'תיאור',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => 'קיראו קודם',
+    20 => '',
+    21 => '',
+    22 => 'שגיאה: חסרים שדות',
+    23 => 'יש למלא את כל השדות בטופס זה. כל השדות נדרשים.',
+    24 => 'השליחה בוצעה',
+    25 => 'שליחת ה-%s שלך בוצעה בהצלחה.',
+    26 => 'הגבלת מהירות',
+    27 => 'שם משתמש',
+    28 => 'נושא',
+    29 => 'מאמר',
+    30 => 'שליחתך האחרונה הייתה לפני ',
+    31 => " שניות. אתר זה דורש לפחות {$_CONF['speedlimit']} שניות בין שליחה אחת לשניה.",
+    32 => 'תצוגה מקדימה',
+    33 => 'תצוגה מקדימה של המאמר',
+    34 => 'התנתקות',
+    35 => 'לא ניתן להשתמש ב HTML',
+    36 => 'מצב כתיבה',
+    37 => '',
+    38 => '',
+    39 => '',
+    40 => '',
+    41 => '',
+    42 => '',
+    43 => '',
+    44 => 'שורת כתובת 1',
+    45 => 'שורת כתובת 2',
+    46 => 'עיר/ישוב',
+    47 => 'מדינה',
+    48 => 'מיקוד',
+    49 => '',
+    50 => '',
+    51 => 'מיקום',
+    52 => 'מחיקה',
+    53 => 'יצירת חשבון'
+);
+
+###############################################################################
+# ADMIN PHRASES - These are file phrases used in admin scripts
+###############################################################################
+
+###############################################################################
+# admin/auth.inc.php
+
+$LANG20 = array(
+    1 => 'נדרשים פרטי זיהוי משתמש',
+    2 => 'לא אושר! פרטי המשתמש שגויים',
+    3 => 'הסיסמה לא נכונה למשתמש',
+    4 => 'שם משתמש',
+    5 => 'סיסמה',
+    6 => 'כל נסיונות הגישה לאיזורים הניהוליים של אתר זה נרשמים ביומן ונבדקים.<br>עמוד זה נועד לשימושם של אנשים מאושרים בלבד.',
+    7 => 'כניסה למערכת'
+);
+
+###############################################################################
+# admin/block.php
+
+$LANG21 = array(
+    1 => 'אין מספיק הרשאות ניהוליות',
+    2 => 'אין לכם את ההרשאות הנדרשות לערוך קוביית מידע זו.',
+    3 => 'עורך קוביות מידע',
+    4 => 'הייתה בעיה בקריאת הזנה זו (ראו את error.log בשביל פירוט).',
+    5 => '',
+    6 => '',
+    7 => 'כולם',
+    8 => 'רמת האבטחה של קוביות המידע',
+    9 => 'סדר קוביות המידע',
+    10 => '',
+    11 => 'קוביית מידע פורטל',
+    12 => 'קוביית מידע רגילה',
+    13 => 'אפשרויות לקוביות המידע',
+    14 => 'כתובת RSS',
+    15 => 'עידכון RSS אחרון',
+    16 => 'אפשרויות של קוביית מידע רגילה',
+    17 => 'תוכן קוביית מידע',
+    18 => 'אנא מלאו את כותרת קוביית המידע ואת שדות התוכן',
+    19 => 'מנהל קוביות המידע',
+    20 => '',
+    21 => 'הרשאות קוביה',
+    22 => '',
+    23 => 'סדר הצגת קוביות המידע',
+    24 => '',
+    25 => 'כדי לשנות או למחוק קוביית מידע, ליחצו על אייקון העריכה שמתחת. כדי ליצור קוביית מידע חדשה, ליחצו על "צרו חדש" לעיל. כדי להזיז קוביית מידע, ליחצו על החיצים או על קוביות ה-[R] או ה-[L].',
+    26 => 'עיצוב קוביית מידע',
+    27 => 'קוביית מידע PHP',
+    28 => 'אפשרויות קוביית מידע PHP',
+    29 => 'פונקציית קוביית מידע',
+    30 => 'אם ברצונכם שאחת מקוביות המידע שלכם תשתמש בקוד PHP, הכניסו לעיל את שם הפונקציה. שם הפונקציה שלכם חייב להתחיל עם התחילית "_phpblock" (לדוגמא, phpblock_getweather). ללא תחילית זו, הפוקנציה שלכם *לא* תפעל. אנו עושים זאת כדי למנוע מאנשים שאולי פרצו להתקנת התוכנה מלהשתמש בקריאות פונקציה שרירותיות שעלולות לפגוע במערכת שלכם. שימו לב לא לשים סוגריים ריקים "()" אחרי שם הפונקציה שלכם. לסיכום, מומלץ שתשימו את כל קוד קוביית המידע PHP שלך בתוך <span dir=ltr>/path/to/geeklog/system/lib-custom.php</span>. דבר זה יאפשר לקוד להישאר איתכם אפילו כאשר הנכם מעדכנים לגירסת תוכנה חדשה יותר.',
+    31 => 'טעות בקוביית מידע PHP. הפונקציה, %s, לא קיימת.',
+    32 => 'טעות של שדה/ות לא מלא/ים',
+    33 => 'הנכם חייבים להכניס קישור לקובץ ה-RSS בשביל קוביות מידע של פורטלים',
+    34 => 'הנכם חייבים להכניס את הכותרת ואת הפונקציה במקרה של קוביות מידע PHP',
+    35 => 'הנכם חייבים להכניס את הכותרת ואת התוכן במקרה של קוביות מידע רגילות',
+    36 => 'הנכם חייבים להכניס את התוכן לקוביות מידע עיצוביות',
+    37 => 'שם לא מתאים של פונקציית קוביית מידע PHP',
+    38 => 'פונקציות של קוביות מידע PHP חייבות לכלול את התחילית \'phpblock_\' (לדוגמא, phpblock_getweather).  התחילית \'phpblock_\' נחוצה מסיבות בטחוניות כדי למנוע את הרצתו של קוד שרירותי.',
+    39 => 'צד',
+    40 => 'שמאל [ימין במצב שפה RTL]',
+    41 => 'ימין [שמאל במצב שפה RTL]',
+    42 => 'הנכם חייבים להכניס את כותרות קוביות המידע ואת הסדר שלהן בשביל קוביות ברירת המחדל',
+    43 => 'דף בית בלבד',
+    44 => '',
+    45 => "הינכם מנסים לגשת לקוביית מידע שאין לכם אישור לגביה. ניסיון זה נרשם ביומן. אנא <a href=\"{$_CONF['site_url']}/admin/block.php\">חיזרו לחלון ניהול קוביות המידע</a>.",
+    46 => 'הזיזו',
+    47 => '',
+    48 => 'שם קוביה',
+    49 => ' (ללא רווחים וחייב להיות ייחודי)',
+    50 => '',
+    51 => 'כולל <span dir=ltr><b>http://</b></span>',
+    52 => 'אם תשאירו זאת ריק אייקון העזרה של קוביית מידע זו לא יופיע',
+    53 => 'אפשרו',
+    54 => 'שמירה',
+    55 => 'ביטול',
+    56 => 'מחיקה',
+    57 => 'הזיזו קוביית מידע למטה',
+    58 => 'הזיזו קוביית מידע למעלה',
+    59 => 'הזיזו קוביית מידע לצד הימני (השמאלי במצב שפה RTL)',
+    60 => 'הזיזו קוביית מידע לצד השמאלי (הימני במצב שפה RTL)',
+    61 => 'אין כותרת',
+    62 => 'גבול יכולת המאמרים',
+    63 => 'כותרת קוביות המידע לא טובה',
+    64 => 'הכותרת שלכם אינה יכולה להיות ריקה ולא יכולה להכיל HTML!',
+    65 => 'סדר',
+    66 => 'Autotags',
+    67 => 'סמנו כדי לאפשר autotags'
+);
+
+###############################################################################
+# admin/story.php
+
+$LANG24 = array(
+    1 => 'המאמרים הקודמים',
+    2 => 'המאמרים הבאים',
+    3 => 'מצב',
+    4 => 'מצב כתיבה',
+    5 => 'עורך מאמרים',
+    6 => 'אין מאמרים במערכת',
+    7 => 'יוצר',
+    8 => 'שמירה',
+    9 => 'תצוגה מקדימה',
+    10 => 'ביטול',
+    11 => 'מחיקה',
+    12 => 'קוד זיהוי',
+    13 => '',
+    14 => '',
+    15 => 'תאריך',
+    16 => 'טקסט פתיחה',
+    17 => 'טקסט המשך',
+    18 => 'כניסות',
+    19 => 'תגובות',
+    20 => 'פינג',
+    21 => 'שילחו פינג',
+    22 => 'רשימת מאמרים',
+    23 => ' כדי לשנות או למחוק מאמר, ליחצו על אייקון העריכה שלו להלן. כדי לצפות במאמר, ליחצו על הכותרת של המאמר שאתם מבקשים לצפות בו. כדי ליצור מאמר חדש, ליחצו על "צרו חדש" לעיל.',
+    24 => 'קוד הזיהוי שבחרתם למאמר זה כבר נמצא בשימוש. אנא השתמשו בקוד זיהוי אחר.',
+    25 => 'שגיאה בעת שמירת המאמר',
+    26 => 'תצוגה מקדימה של המאמר',
+    27 => 'אם הנכם משתמשים ב-[unscaledX] במקום ב-[imageX], התמונה תוכנס במימדיה המקוריים.',
+    28 => '<p><b>תצוגה מקדימה</b>: תצוגה מקדימה של מאמר עם תמונות מצורפות הכי טוב שתיעשה על ידי שמירת המאמר כטיוטא *במקום* ללחוץ על כפתור התצוגה המקדימה. השתמשו בכפתור התצוגה המקדימה רק כאשר אין תמונות מצורפות.',
+    29 => 'הפניות',
+    30 => 'בעיות בהעלאת הקובץ',
+    31 => 'אנא מלאו את שדות שם הכותב, הכותרת וטקסט הפתיחה.',
+    32 => 'מוצג',
+    33 => 'יכול להיות רק מאמר אחד מוצג',
+    34 => 'טיוטה',
+    35 => 'כן',
+    36 => 'לא',
+    37 => 'דברים נוספים של',
+    38 => 'עוד מ:',
+    39 => 'שליחות אימייל',
+    40 => '',
+    41 => "הנכם מנסים לגשת למאמר שאין לכם זכויות לגביו. ניסיון זה נרשם ביומן. הינכם רשאים לצפות במאמר שלהלן במצב קריאה בלבד. אנא <a href=\"{$_CONF['site_url']}/admin/story.php\">חיזרו לחלון ניהול המאמרים</a> לאחר שתסיימו.",
+    42 => "הינכם מנסים לגשת למאמר שאין לכם זכויות לגביו. ניסיון זה נרשם ביומן. אנא <a href=\"{$_CONF['site_url']}/admin/story.php\">חיזרו לחלון ניהול המאמרים</a>.",
+    43 => '',
+    44 => '',
+    45 => '',
+    46 => '<b>שימו לב:</b> אם תשנו תאריך זה להיות בעתיד, מאמר זה לא יפורסם עד אותו תאריך. משמעות הדבר היא גם שהוא לא ייכלל בהזנת כותרות ה-RSS והוא יזכה להתעלמות מעמודי החיפוש והסטטיסטיקה.',
+    47 => 'תמונות',
+    48 => 'תמונה',
+    49 => 'ימין (שמאל במצב שפה RTL)',
+    50 => 'שמאל (ימין במצב שפה RTL)',
+    51 => 'כדי להוסיף את אחת מהתמונות שהינכם מצרפים למאמר זה עליכם להכניס טקסט מפורמט באופן מיוחד. הטקסט המפורמט באופן מיוחד הוא [imageX], [imageX_right] או [imageX_left] כאשר X הוא מספר התמונה שצירפתם. *שימו לב:* הינכם חייבים להשתמש בתמונות שצירפתם. אם לא תעשו זאת לא תוכלו לשמור את מאמרכם.<br>',
+    52 => '',
+    53 => 'לא הייתה בשימוש. הנכם חייבים להוסיף את התמונה לטקסט הפתיחה או לטקסט ההמשך לפני שתוכלו לשמור את השינויים שביצעתם.',
+    54 => 'לא היה שימוש בתמונות המצורפות',
+    55 => 'השגיאות הבאות אירעו בעת הנסיון לשמור את המאמר. אנא תקנו את השגיאות האלו לפני השמירה.',
+    56 => 'הראה אייקון נושא',
+    57 => 'צפו בתמונה המלאה',
+    58 => 'אפשרויות ארכיון',
+    59 => 'אפשרות',
+    60 => '',
+    61 => 'איחסון אוטומטי בארכיון',
+    62 => 'מחיקה אוטומטית',
+    63 => '',
+    64 => '',
+    65 => '',
+    66 => '',
+    67 => 'הרחיבו את גודל איזור עריכת התוכן',
+    68 => 'צמצמו את גודל איזור עריכת התוכן',
+    69 => 'תאריך פירסום המאמר',
+    70 => 'בחירת סרגל כלים',
+    71 => 'סרגל כלים בסיסי',
+    72 => 'סרגל כלים מצוי',
+    73 => 'סרגל כלים מתקדם',
+    74 => 'סרגל כלים מתקדם II',
+    75 => 'מוצג במלואו',
+    76 => 'אפשרויות פירסום',
+    77 => 'Javascript חייב להיות מופעל בעורך המתקדם. האפשרות יכולה להיכבות ב-config.php הראשי של האתר',
+    78 => 'ליחצו <a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default">כאן</a> כדי להשתמש בעורך ברירת המחדל',
+    79 => 'תצוגה מקדימה',
+    80 => 'עורך',
+    81 => 'אפשרויות פירסום',
+    82 => 'תמונות',
+    83 => 'אפשרויות ארכיון',
+    84 => 'הרשאות',
+    85 => 'הראה הכל',
+    86 => 'עורך מתקדם',
+    87 => 'סטטיסטיקות מאמר'
+);
+
+###############################################################################
+# admin/topic.php
+
+$LANG27 = array(
+    1 => 'עורך הנושאים',
+    2 => 'קוד הזיהוי של הנושא',
+    3 => 'כותרת הנושא',
+    4 => 'תמונת הנושא',
+    5 => '(אין להשתמש ברווחים)',
+    6 => 'מחיקת נושא מוחקת גם כל את המאמרים וקוביות המידע שמקושרים אליו',
+    7 => 'אנא מלאו את השדות של קוד הזיהוי ושם הנושא',
+    8 => 'מנהל הנושאים',
+    9 => 'כדי לערוך או למחוק נושא, ליחצו עליו. כדי ליצור נושא חדש, ליחצו על "צרו חדש" לעיל. תוכלו למצוא את רמת הגישה שלכם עבור כל נושא בתוך סוגריים. הכוכבית(*) מסמלת את נושא ברירת המחדל.',
+    10 => 'סדר מיון',
+    11 => 'מאמרים/עמוד',
+    12 => 'הגישה לא אושרה',
+    13 => "הינכם מנסים לגשת לנושא שאין לכם זכויות לגביו. ניסיון זה נרשם ביומן. אנא <a href=\"{$_CONF['site_url']}/admin/topic.php\">חיזרו לחלון ניהול הנושאים</a>.",
+    14 => 'שיטת מיון',
+    15 => 'לפי הא-ב',
+    16 => 'ברירת המחדל היא',
+    17 => 'נושא חדש',
+    18 => 'מרכז הניהול',
+    19 => 'שמירה',
+    20 => 'ביטול',
+    21 => 'מחיקה',
+    22 => 'ברירת מחדל',
+    23 => 'היפכו נושא זה לנושא ברירת המחדל עבור העלאת מאמרים חדשים',
+    24 => '(*)',
+    25 => 'נושא הארכיון',
+    26 => 'היפכו נושא זה לנושא ברירת המחדל עבור מאמרים בארכיון. ניתן לבחור רק נושא אחד.',
+    27 => 'או העלו אייקון לנושא',
+    28 => 'מקסימום',
+    29 => 'שגיאות בהעלאת הקובץ'
+);
+
+###############################################################################
+# admin/user.php
+
+$LANG28 = array(
+    1 => 'עורך משתמשים',
+    2 => 'קוד זיהוי משתמש',
+    3 => 'שם משתמש',
+    4 => 'שם מלא',
+    5 => 'סיסמה',
+    6 => 'רמת אבטחה',
+    7 => 'כתובת אימייל',
+    8 => 'אתר בית',
+    9 => '(אין להשתמש ברווחים)',
+    10 => 'אנא מלאו את השדות של שם המשתמש וכתובת האימייל',
+    11 => 'מרכז ניהול המשתמשים',
+    12 => 'כדי לערוך או למחוק משתמש, ליחצו על אייקון המשתמש שמתחת. כדי לצפות במשתמש, ליחצו עליו. כדי ליצור משתמש חדש, ליחצו על "צרו חדש" לעיל. הנכם יכולים לבצע חיפושים פשוטים על ידי הכנסת חלק משם המשתמש, כתובת האימייל או השם המלא (לדוגמא *son* או edu.*) בטופס שלהלן.',
+    13 => 'רמת אבטחה',
+    14 => 'תאריך הרשמה',
+    15 => '',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => '',
+    20 => 'שמירה',
+    21 => 'שם המשתמש שניסיתם לשמור כבר קיים.',
+    22 => 'שגיאה',
+    23 => 'הוספה המונית',
+    24 => 'יבוא המוני של משתמשים',
+    25 => 'הינכם יכולים לייבא רשימה של משתמשים למערכת. קובץ היבוא חייב להיות קובץ עם הפרדות בצורה של טאבים וחייב שיהיו בו את השדות בסדר הבא: שם מלא, שם משתמש, כתובת אימייל. לכל משתמש שתייבאו תישלח הודעת אימייל עם סיסמה אקראית. הנכם חייבים לשים משתמש אחד בכל שורה. כישלון במעקב אחר ההוראות האלו יגרום לבעיות שעלולות להצריך עבודה ידנית ולכן בידקו טוב את נתוניכם!',
+    26 => '',
+    27 => '',
+    28 => 'סמנו זאת כדי למחוק את התמונה',
+    29 => 'מיקום',
+    30 => 'יבוא',
+    31 => 'משתמשים חדשים',
+    32 => 'תהליך העיבוד הסתיים. יובאו %d והתרחשו %d שגיאות.',
+    33 => 'שמירה',
+    34 => 'שגיאה: הינכם חייבים לבחור קובץ להעלאה.',
+    35 => 'כניסה אחרונה למערכת',
+    36 => '(אף פעם)',
+    37 => 'קוד זיהוי משתמש',
+    38 => 'רשימת קבוצות',
+    39 => 'סיסמה (שוב)',
+    40 => 'תאריך הרשמה',
+    41 => 'תאריך כניסה אחרונה למערכת',
+    42 => 'מושעה',
+    43 => 'מחכה להפעלה',
+    44 => 'מחכה לאישור',
+    45 => 'פעיל',
+    46 => 'סטאטוס משתמש',
+    47 => 'עריכה',
+    48 => 'הציגו קבוצות ניהול',
+    49 => 'קבוצת ניהול',
+    50 => 'הפעילו כדי לאפשר סינון של קבוצה זו כקבוצה שמשמשת מנהלים',
+    51 => 'ימי שימוש',
+    52 => '<br>הערה: "ימי שימוש" הם מספר הימים מאז ההרשמה הראשונית ועד ההתחברות האחרונה.',
+    53 => 'רשום',
+    54 => 'מחיקה קבוצתית',
+    55 => 'פונקציה זו עובדת רק אם קבעתם ש- <code>$_CONF[\'lastlogin\'] = true;</code> ב-config.php שלכם',
+    56 => 'אנא ביחרו את סוג המשתמשים שהנכם מעוניינים למחוק וליחצו על "עידכון רשימה". אז, נטרלו את אלו מהרשימה שאינכם מעוניינים למחוק וליחצו על "מחיקה". אנא שימו לב שימחקו רק אותם משתמשים שיהיו מסומנים באותו רגע, למקרה שהרשימה מתמתחת על יותר מכמה דפים.',
+    57 => 'משתמשי פאנטום',
+    58 => 'משתמשים קצרי מועד',
+    59 => 'משתמשים ותיקים',
+    60 => ' משתמשים שנרשמו לפני למעלה מ-',
+    61 => ' חודשים, אבל מעולם לא נכנסו למערכת.',
+    62 => ' משתמשים שנרשמו לפני למעלה מ-',
+    63 => ' חודשים, אז התחברו למערכת ב-24 השעות הראשונות, אבל מאז לעולם לא חזרו לאתרכם.',
+    64 => 'משתמשים רגילים, שפשוט לא ביקרו באתרכם כבר ',
+    65 => ' חודשים.',
+    66 => 'עידכון רשימה',
+    67 => 'חודשים מאז ההרשמה',
+    68 => 'שעות חיבור',
+    69 => 'חודשים מחוץ לאתר',
+    70 => 'המחיקה לא הצליחה',
+    71 => 'המחיקה עברה בהצלחה',
+    72 => 'שום משתמש לא נבחר למחיקה',
+    73 => 'האם הנכם בטוחים שאתם רוצים למחוק את *כל* המשתמשים הרשומים',
+    74 => 'משתמשים מהזמן האחרון',
+    75 => 'משתמשים שנרשמו בזמן האחרון ',
+    76 => ' חודשים'
+);
+
+###############################################################################
+# admin/moderation.php
+
+$LANG29 = array(
+    1 => 'אישור',
+    2 => 'מחיקה',
+    3 => 'עריכה',
+    4 => 'פרופיל',
+    10 => 'כותרת',
+    11 => 'תאריך התחלה',
+    12 => 'כתובת אינטרנט',
+    13 => 'קטגוריה',
+    14 => 'תאריך',
+    15 => 'נושא',
+    16 => 'שם משתמש',
+    17 => 'שם מלא',
+    18 => 'כתובת אימייל',
+    34 => 'שליטה ובקרה',
+    35 => 'הגשות מאמרים',
+    36 => '',
+    37 => '',
+    38 => 'אישור',
+    39 => 'אין הגשות שדורשות פיקוח בזמן זה',
+    40 => 'הגשות של משתמשים'
+);
+
+###############################################################################
+# admin/mail.php
+
+$LANG31 = array(
+    1 => "כלי שליחת הודעות האימייל של {$_CONF['site_name']}",
+    2 => 'מ',
+    3 => 'השב ל',
+    4 => 'נושא',
+    5 => 'גוף ההודעה',
+    6 => 'שליחה ל:',
+    7 => 'כל המשתמשים',
+    8 => 'מנהל האתר',
+    9 => 'אפשרויות',
+    10 => 'HTML',
+    11 => 'הודעה דחופה!',
+    12 => 'שליחה',
+    13 => 'איפוס',
+    14 => 'התעלם מהגדרות משתמש',
+    15 => 'אירעה שגיעה במשלוח ההודעה ל: ',
+    16 => 'ההודעה נשלחה בהצלחה ל: ',
+    17 => "<a href={$_CONF['site_url']}/admin/mail.php>שילחו הודעה נוספת</a>",
+    18 => 'עבור',
+    19 => '*שימו לב:* אם ברצונכם לשלוח הודעה לכל משתמשי האתר, ביחרו את קבוצת ה-Logged-in Users מתיבת הבחירה.',
+    20 => "<successcount> הודעות נשלחו בהצלחה ונכשלו <failcount>. אם הינכם זקוקים לכך, להלן הפרטים של כל הנסיונות. אם לא, הינכם יכולים <a href=\"{$_CONF['site_url']}/admin/mail.php\">לשלוח הודעה נוספת</a> או <a href=\"{$_CONF['site_url']}/admin/moderation.php\">לחזור למסך הניהול</a>.",
+    21 => 'כשלונות',
+    22 => 'הצלחות',
+    23 => 'אין כשלונות',
+    24 => 'אין הצלחות',
+    25 => '-- ביחרו קבוצה --',
+    26 => 'אנא מלאו את כל השדות בטופס וביחרו קבוצת משתמשים מתיבת הבחירה.'
+);
+
+###############################################################################
+# admin/plugins.php
+
+$LANG32 = array(
+    1 => 'התקנת plugins עלולה לגרום לבעיות בהתקנה התוכנה ואולי אף למערכת שלכם. חשוב שתתקינו רק plugins שהורדו מ-<a href="http://www.geeklog.net" target="_blank">אתר הבית של Geeklog</a> מפני שאנו בוחנים באדיקות את כל ה-plugins שהוגשו לאתר שלנו במגוון של מערכות הפעלה. חשוב שתבין שתהליך התקנה ה-plugin ידרוש את הרצתן של כמה פקודות מערכת, דבר שעלול לבעיות אבטחה - ביחוד אם הנכם משתמשים ב-plugins מאתרי צד שלישי. אפילו עם אזהרה זו, איננו מבטיחים את ההצלחה של כל התקנה באשר היא או מקבלים אחריות לנזק שיגרם בעקבות התקנת plugin של Geeklog. במילים אחרות, ההתקנה היא על אחריותכם בלבד. בשביל הזהירים שבכם, הוראות איך להתקין plugin באופן ידני כלולות בכל חבילת plugin.',
+    2 => 'הצהרת התקנת Plugin',
+    3 => 'טופס התקנת Plugin',
+    4 => 'קובץ Plugin',
+    5 => 'רשימת Plugins',
+    6 => 'אזהרה: ה-Plug-in כבר מותקן!',
+    7 => 'ה-plug-in שהנכם מנסה להתקין כבר קיים. אנא מיחקו את ה-plugin לפני התקנתו מחדש.',
+    8 => 'בדיקת התאמת Plugin נכשלה',
+    9 => 'ה-plugin דורש גירסה חדשה יותר של Geeklog. שדרגו את העותק שלכם של <a href="http://www.geeklog.net">Geeklog</a> או השיגו גירסה חדשה יותר של ה-plugin.',
+    10 => '<br><b>אין plugins מותקנים כרגע.</b><br><br>',
+    11 => 'כדי לערוך או למחוק plug-in, ליחצו על אייקון העריכה מתחת. זה יראה את פרטי ה-plugin כולל האתר של יוצריו. גם הגירסה המותקנת וגם הגירסה שמוחזרת מקוד ה-plugin מוצגות. זה יעזור לכם לדעת ה-plugin צריך לעבור שידרוג. כדי להתקין או לשדרג plugin אנא עיברו על הדוקומנטציה שלו.',
+    12 => 'שום שם של plugin לא ניתן ל-plugineditor()',
+    13 => 'עורך Plugins',
+    14 => 'Plugin חדש',
+    15 => 'מרכז הניהול',
+    16 => 'שם ה-Plugin',
+    17 => 'גירסת ה-Plugin',
+    18 => 'גירסת התוכנה',
+    19 => 'אפשרו',
+    20 => 'כן',
+    21 => 'לא',
+    22 => 'התקנה',
+    23 => 'שמירה',
+    24 => 'ביטול',
+    25 => 'מחיקה',
+    26 => 'שם ה-Plugin',
+    27 => 'האתר של ה-Plugin',
+    28 => 'גירסת ה-Plugin',
+    29 => 'גירסת התוכנה',
+    30 => 'האם למחוק את ה-Plugin?',
+    31 => 'האם הינכם בטוחים שאתם מעוניינים למחוק את ה-plugin הזה? על ידי כך אתם תסירו את כל המידע ומבני המידע שה-plugin הזה משתמש בהם. אם הינכם בטוחים, ליחצו שוב על מחיקה בטופס שלהלן.',
+    32 => '<p><b>שגיאה: תווית לינק אוטומטי לא מפורמטת נכון</b></p>',
+    33 => 'גירסת הקוד',
+    34 => 'עידכון',
+    35 => 'עריכה',
+    36 => 'קוד',
+    37 => 'מידע',
+    38 => 'עדכנו!'
+);
+
+###############################################################################
+# admin/syndication.php
+
+$LANG33 = array(
+    1 => 'צרו הזנה',
+    2 => 'שמירה',
+    3 => 'מחיקה',
+    4 => 'ביטול',
+    10 => 'סינדקיציית תוכן',
+    11 => 'הזנה חדשה',
+    12 => 'מרכז הניהול',
+    13 => 'כדי לערוך או למחוק הזנה, ליחצו על אייקון העריכה שלה מתחת. כדי ליצור הזנה חדשה, ליחצו על "צרו חדש" לעיל.',
+    14 => 'כותרת',
+    15 => 'סוג',
+    16 => 'שם קובץ',
+    17 => 'פורמט',
+    18 => 'עודכן לאחרונה',
+    19 => 'מאופשר',
+    20 => 'כן',
+    21 => 'לא',
+    22 => '<i>(אין הזנות)</i>',
+    23 => 'כל המאמרים',
+    24 => 'עורך הזנות',
+    25 => 'כותרת ההזנה',
+    26 => 'גבול',
+    27 => 'אורך הפריטים',
+    28 => '(0 = שום טקסט, 1 = טקסט מלא, כל מספר אחר = הגבלה למספר זה של תווים.)',
+    29 => 'תיאור',
+    30 => 'עודכן לאחרונה',
+    31 => 'קידוד אותיות',
+    32 => 'שפה',
+    33 => 'תכנים',
+    34 => 'פריטים',
+    35 => 'שעות',
+    36 => 'ביחרו את סוג ההזנה',
+    37 => 'יש לכם לפחות plugin אחד מותקן שתומך בסינדקיציית תוכן. תצטרכו לבחור מתחת אם הינכם מעוניינים ליצור הזנת מערכת או הזנה מאחד ה-plugins.',
+    38 => 'שגיאה: שדות חסרים',
+    39 => 'אנא מלאו את כותרת ההזנה, תיאור ושם קובץ.',
+    40 => 'אנא הכניסו את מספר הפריטים או את מספר השעות.',
+    41 => 'שמירה',
+    42 => '',
+    43 => 'כולם',
+    44 => 'ללא',
+    45 => 'קישור ב-header בנושא',
+    46 => 'הגבלת תוצאות',
+    47 => 'חיפוש',
+    48 => 'עריכה',
+    49 => 'הלוגו של ההזנה',
+    50 => "יחסי לכתובת האתר ({$_CONF['site_url']})",
+    51 => 'שם הקובץ שבחרתם כבר נמצא בשימוש של הזנה אחרת. אנא ביחרו אחד אחר.',
+    52 => 'שגיאה: שם הקובץ כבר קיים'
+);
+
+###############################################################################
+# confirmation and error messages
+
+$MESSAGE = array(
+    1 => "סיסמתך נשלחה אליכם באימייל ואמורה להגיע בכל רגע. אנא עיקבו אחר ההוראות שבהודעה ואנו מודים לכם על שימושכם ב-{$_CONF['site_name']}",
+    2 => "תודה לך על הגשת המאמר שלך ל-{$_CONF['site_name']}. הוא הוגש לצוות שלנו בשביל אישור. אם יאושר, מאמרך יהיה זמין לאחרים לקריאה באתר.",
+    3 => "",
+    4 => "",
+    5 => 'המידע של חשבונך נשמר בהצלחה.',
+    6 => 'העדפות התצוגה שלך נשמרו בהצלחה.',
+    7 => 'הגדרות התגובות שלך נשמרו בהצלחה.',
+    8 => 'יצאת מהמערכת בהצלחה.',
+    9 => 'מאמרך נשמר בהצלחה',
+    10 => 'מאמרך נמחק בהצלחה.',
+    11 => 'קוביית המידע שלך נשמרה בהצלחה.',
+    12 => 'קוביית המידע שלך נמחקה בהצלחה.',
+    13 => 'הנושא שלך נשמר בהצלחה.',
+    14 => 'הנושא וכל המאמרים וקוביות המידע שבתוכו נמחקו בהצלחה.',
+    15 => '',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => '',
+    20 => '',
+    21 => 'המשתמש נשמר בהצלחה.',
+    22 => 'המשתמש נמחק בהצלחה.',
+    23 => '',
+    24 => '',
+    25 => '',
+    26 => '',
+    27 => 'ההודעה נשלחה בהצלחה.',
+    28 => 'ה-plugin נשמר בהצלחה',
+    29 => '',
+    30 => 'הגישה לא אושרה',
+    31 => 'מצטערים, אין לכם גישה לעמוד ניהול המאמרים. אנא שימו לב שכל נסיונות הגישה ליכולות לא מאושרות נרשמים ביומן',
+    32 => 'מצטערים, אין לכם גישה לעמוד ניהול הנושאים. אנא שימו לב שכל נסיונות הגישה ליכולות לא מאושרות נרשמים ביומן',
+    33 => 'מצטערים, אין לכם גישה לעמוד ניהול קוביות המידע. אנא שימו לב שכל נסיונות הגישה ליכולות לא מאושרות נרשמים ביומן',
+    34 => '',
+    35 => '',
+    36 => '',
+    37 => 'מצטערים, אין לכם גישה לעמוד ניהול המשתמשימו. אנא שימו לב שכל נסיונות הגישה ליכולות לא מאושרות נרשמים ביומן',
+    38 => 'מצטערים, אין לכם גישה לעמוד ניהול ה-plugins. אנא שימו לב שכל נסיונות הגישה ליכולות לא מאושרות נרשמים ביומן',
+    39 => 'מצטערים, אין לכם גישה לעמוד ניהול הודעות האימייל. אנא שימו לב שכל נסיונות הגישה ליכולות לא מאושרות נרשמים ביומן',
+    40 => 'הודעת מערכת',
+    41 => 'מצטערים, אין לכם גישה לעמוד החלפות המילים. אנא שימו לב שכל נסיונות הגישה ליכולות לא מאושרות נרשמים ביומן',
+    42 => 'המילה שלך נשמרה בהצלחה.',
+    43 => 'המילה שלך נמחקה בהצלחה.',
+    44 => 'ה-plugin נשמר בהצלחה!',
+    45 => 'ה-plugin נמחק בהצלחה.',
+    46 => 'מצטערים, אין בידיכם יכולת גישה לתוכנת גיבוי מאמר המידע. אנא שימו לב שכל נסיונות הגישה ליכולות לא מורשות נרשמות ביומן',
+    47 => 'יכולת זו עובדת רק תחת nix*. אם הינכם מריצים nix* כמערכת ההפעלה שלכם אז זיכרון המטמון שלכם נוקה בהצלחה. אם הנכם משתמשים בחלונות, תיאלצו לחפש אחר קבצים בשם adodb_*.php ולהסירם באופן ידני.',
+    48 => "תודה לך על הגשת הבקשה שלך להצטרף ל-{$_CONF['site_name']}. אנו נבדוק את בקשתך. אם תאושר, סיסמתך תישלח אליך באימייל לכתובת האימייל שהרגע ציינת.",
+    49 => 'קבוצתך נשמרה בהצלחה.',
+    50 => 'הקבוצה נמחקה בהצלחה.',
+    51 => 'שם משתמש זה כבר נמצא בשימוש. אנא ביחרו אחד אחר.',
+    52 => 'כתובת האימייל שצוינה לא נראית ככתובת אימייל תקינה.',
+    53 => 'סיסמתכם החדשה התקבלה. אנא השתמשו בסיסמתכם החדשה שמתחת כדי להיכנס למערכת עכשיו.',
+    54 => 'בקשתכם לסיסמה חדשה פג תוקפה. אנא נסו שוב מתחת.',
+    55 => 'הודעת אימייל נשלחה אליכם ואמורה להגיע בכל רגע. אנא עיקבו אחר ההוראות בהודעה כדי להגדיר סיסמה חדשה לחשבונכם.',
+    56 => 'כתובת האימייל שצוינה כבר נמצאת בשימוש אצל חשבון אחר.',
+    57 => 'חשבונך נמחק בהצלחה.',
+    58 => 'ההזנה שלך נשמרה בהצלחה.',
+    59 => 'ההזנה שלך נמחקה בהצלחה.',
+    60 => 'ה-plugin עודכן בהצלחה',
+    61 => 'Plugin %s - מחזיק מיקום הודעה לא ידוע',
+    62 => 'ההפנייה עם תגובה נמחקה.',
+    63 => 'אירעה שגיאה בעת מחיקת ההפנייה עם תגובה.',
+    64 => 'ההפנייה עם תגובה שלכם נשלחה בהצלחה.',
+    65 => 'שירות ספריית בלוגים נשמר בהצלחה.',
+    66 => 'שירות ספריית בלוגים נמחק.',
+    67 => 'הסיסמה החדשה אינה זהה לסיסמת הבדיקה!',
+    68 => 'הנכם חייבים להכניס את הסיסמה הנוכחית הנכונה.',
+    69 => 'חשבונכם נחסם!',
+    70 => 'חשבונכם מחכה לאישור מנהל.',
+    71 => 'חשבונכם אומת ועכשיו מחכה לאישור מנהל.',
+    72 => 'התרחשה שגיאה בעת נסיון התקנת ה-plugin. קיראו את error.log בשביל פרטים.',
+    73 => 'התרחשה שגיאה בעת נסיון הסרת ה-plugin. קיראו את error.log בשביל פרטים.',
+    74 => 'הפינג החוזר נשלח בהצלחה.',
+    75 => 'הפניות חיבות להישלח בעזרת בקשת POST.',
+    76 => 'האם הנכם באמת מעוניינים למחוק פריט זה',
+    77 => 'אזהרה:<br>קבעתם את קידוד ברירת המחדל שלכם ל-UTF-8. לעומת זאת, השרת שלכם לא תומך בקידודי multibyte. אנא התקינו את פונקציות ה-mbstring של PHP או ביחרו בקידוד/שפה אחרים.',
+    78 => 'אנא ודאו שכתובת האימייל וכתובת אימות האימייל הן זהות.',
+    79 => 'העמוד שניסיתם לפתוח מתייחס לפונקציה שכבר לא קיימת באתר זה.',
+    80 => 'ה-plugin שיצר הזנה זו כרגע מנוטרל. לא תוכלו לערוך הזנה זו עד שתפעילו מחדש את ה-plugin האחראי.',
+    81 => 'יכול להיות שטעיתם בהקשת פרטי הכניסה שלכם למערכת. אנא נסו להיכנס שנית להלן.',
+    82 => 'מיציתם את המספר האפשרי של נסיונות כניסה למערכת. אנא נסו שוב מאוחר יותר.',
+    83 => 'כדי לשנות את הסיסמה, כתובת האימייל או כמה זמן לזכור אתכם, אנא הכניסו את הסיסמה הנוכחית שלכם.',
+    84 => 'כדי למחוק את חשבונכם, אנא הכניסו את הסיסמה הנוכחית שלכם.'
+);
+
+###############################################################################
+
+$LANG_ACCESS = array(
+    'access' => 'גישה',
+    'ownerroot' => 'בעלים ראשי',
+    'group' => 'קבוצה',
+    'readonly' => 'קריאה בלבד',
+    'accessrights' => 'הרשאות גישה',
+    'owner' => 'בעלים',
+    'grantgrouplabel' => 'אשרו את הרשאות עריכת הקבוצות שלעיל',
+    'permmsg' => 'שימו לב: "חברים רשומים" הם כל המשתמשים שנכנסו בשמם לאתר ו"אורחים באתר" הם כל המשתמשים שנמצאים באתר, אך לא הזדהו.',
+    'securitygroups' => 'קבוצות ביטחון',
+    'editrootmsg' => "אפילו שהינכם מנהלי משתמשים, אינכם יכולים לערוך משתמש ראשי מבלי להיות משתמש ראשי בעצמכם. הנכם יכולים לערוך את כל המשתמשים האחרים מלבד משתמשים ראשיים. אנא שימו לב שכל הנסיונות לערוך משתמשים ראשיים באופן לא מורשה נרשמים ביומן. אנא חיזרו <a href=\"{$_CONF['site_admin_url']}/user.php\">לעמוד ניהול המשתמשים</a>.",
+    'securitygroupsmsg' => 'סמנו את התיבות של הקבוצות שהינכם מעוניינים שהמשתמש ישתייך אליהן.',
+    'groupeditor' => 'עורך קבוצות',
+    'description' => 'תיאור',
+    'name' => 'שם',
+    'rights' => 'הרשאות',
+    'missingfields' => 'שדות חסרים',
+    'missingfieldsmsg' => 'הינכם חייבים לציין את השם והתיאור של הקבוצה',
+    'groupmanager' => 'מנהל קבוצות',
+    'newgroupmsg' => 'כדי לערוך או למחוק קבוצה, ליחצו על אייקון העריכה שמתחת. כדי ליצור קבוצה חדשה, ליחצו על "צרו חדש" לעיל. אנא שימו לב שקבוצות גרעין לא יכולות להימחק מפני שהן בשימוש המערכת.',
+    'groupname' => 'שם קבוצה',
+    'coregroup' => 'קבוצת גרעין',
+    'yes' => 'כן',
+    'no' => 'לא',
+    'corerightsdescr' => "קבוצה זו היא קבוצת גרעין של {$_CONF['site_name']}. לפיכך ההרשאות של קבוצה זו לא יכולות להשתנות. להלן רשימה לקריאה בלבד של ההרשאות שלקבוצה זו יש גישה אליהן.",
+    'groupmsg' => 'קבוצות ביטחון באתר זה הן היררכיות. הוספת קבוצה זו לכל אחת מן הקבוצות שלהלן תיתן  תיתן לאותה קבוצה זכויות זהות לאלו שיש לקבוצות אלו. היכן שמתאפשר מומלץ שתשתמשו בקבוצות שלהלן כדי לתת הרשאות לקבוצה. אם הנכם צריכים שקבוצה זו תקבל הרשאות יחודיות אז תוכלו לבחור הרשאות למגוון יכולות באתר במקום הקרוי \'הרשאות\'. כדי להוסיף קבוצה זו לכל אחת מאלו שלהלן פשוט סמנו את התיבה שליד הקבוצה/ות שהינכם מעוניינים בה/ן.',
+    'coregroupmsg' => "קבוצה זו היא קבוצת גרעין של {$_CONF['site_name']}. לפיכך הקבוצות שקבוצה זו שייכת אליהן לא יכולות להשתנות. להלן רשימה לקריאה בלבד של הקבוצות שקבוצה זו שייכת אליהן.",
+    'rightsdescr' => 'גישה של קבוצה להרשאה מסוימת להלן יכולה להינתן ישירות לקבוצה *או* לקבוצה אחרת שקבוצה זו שייכת אליה. אלו שהנכם רואים להלן שאין להן תיבות סימון הן ההרשאות שניתנו לקבוצה זו מפני שהן שייכות לקבוצה אחרת עם אותן הרשאות. ההרשאות שיש להן תיבות סימון להלן הן הרשאות שיכולות להינתן  ישירות לקבוצה זו.',
+    'lock' => 'נעולה',
+    'members' => 'חברים רשומים',
+    'anonymous' => 'אורחים באתר',
+    'permissions' => 'הרשאות',
+    'permissionskey' => 'R = read, E = edit, הרשאות edit מניחות הרשאות read',
+    'edit' => 'עריכה',
+    'none' => 'אין',
+    'accessdenied' => 'הגישה לא אושרה',
+    'storydenialmsg' => "אין לכם גישה לצפות במאמר זה. סיבה אפשרית לכך היא שאינכם חברים ב-{$_CONF['site_name']}. אנא <a href=users.php?mode=new> היפכו לחברים</a> ב-{$_CONF['site_name']} כדי לקבל גישה מלאה של חברים!",
+    'nogroupsforcoregroup' => 'קבוצה זו לא שייכת לשום קבוצה מהקבוצות האחרות',
+    'grouphasnorights' => 'לקבוצה זו אין גישה לאף אחת מיכולות ההנהלה של האתר הזה',
+    'newgroup' => 'קבוצה חדשה',
+    'adminhome' => 'מרכז הניהול',
+    'save' => 'שמירה',
+    'cancel' => 'ביטול',
+    'delete' => 'מחיקה',
+    'canteditroot' => 'ניסיתם לערוך את קבוצת הגרעין אבל אינכם שייכים אליה בעצמכם ולכן גישתכם אליה לא מאושרת. אנא צרו קשר עם מנהלי המערכת אם הנכם מרגישים שמדובר בטעות',
+    'listusers' => 'חברים',
+    'listthem' => 'רשימה',
+    'usersingroup' => 'חברים בקבוצה "%s"',
+    'usergroupadmin' => 'ניהול קבוצות משתמשים',
+    'add' => 'הוספה',
+    'remove' => 'הסרה',
+    'availmembers' => 'חברים אפשריים',
+    'groupmembers' => 'חברי הקבוצה',
+    'canteditgroup' => 'כדי לערוך קבוצה זו, הינכם חייב להיות חברים בה. אנא צור קשר עם מנהלי המערכת אם הנכם מרגישים שמדובר בטעות.',
+    'cantlistgroup' => 'כדי לצפות ברשימת חברי קבוצה זו, הינכם חייב להיות חברים בה בעצמך. אנא צרו קשר עם מנהלי המערכת אם הנכם מרגישים שמדובר בטעות.',
+    'editgroupmsg' => 'על מנת לשנות את הרישום לקבוצות, ליחצו על שם החבר/ים והשתמשו בכפתורי ההוספה והסרה. אם החבר הוא חבר באותה קבוצה, שמם יופיע בצד הימני (השמאלי במצב שפה RTL) בלבד. ברגע שסיימתם - ליחצו על <b>Save</b> כדי לעדכן את הקבוצה ולחזור לעמוד ניהול הקבוצות הראשי.',
+    'listgroupmsg' => 'רשימת כל החברים בקבוצה: <b>%s</b>',
+    'search' => 'חיפוש',
+    'submit' => 'שליחה',
+    'limitresults' => 'הגבלת תוצאות',
+    'group_id' => 'קוד זיהוי הקבוצה',
+    'plugin_access_denied_msg' => 'הנכם מנסים באופן לא חוקי לגשת לעמוד ניהול ה-plugins. אנא שימו לב שכל הנסיונות לגשת לעמוד זה באופן לא חוקי נרשמות ביומן.',
+    'groupexists' => 'שם הקבוצה כבר קיים',
+    'groupexistsmsg' => 'כבר יש קבוצה בשם זה. שמות קבוצות חייבים להיות ייחודיים.'
+);
+
+###############################################################################
+# admin/database.php
+
+$LANG_DB_BACKUP = array(
+    'last_ten_backups' => '10 הגיבויים האחרונים',
+    'do_backup' => 'צרו גיבוי',
+    'backup_successful' => 'גיבוי מאגר הנתונים עבר בהצלחה.',
+    'db_explanation' => 'כדי ליצור גיבוי חדש של המערכת, ליחצו על הכפתור שלעיל',
+    'not_found' => "מיקום שגוי או שה-mysqldump utility היא לא executable.<br>בידקו את הגדרת ה- <strong>\$_DB_mysqldump_path</strong> ב-config.php.<br>המשתנה כרגע מוגדר כ: <var>{$_DB_mysqldump_path}</var>",
+    'zero_size' => 'הגיבוי נכשל. גודל הקובץ היה 0 bytes',
+    'path_not_found' => "{$_CONF['backup_path']} לא קיים או שזו לא ספרייה",
+    'no_access' => "שגיאה: הספרייה {$_CONF['backup_path']} חסומה.",
+    'backup_file' => 'קובץ גיבוי',
+    'size' => 'גודל',
+    'bytes' => 'Bytes',
+    'total_number' => 'סך הכל גיבויים: %d'
+);
+
+###############################################################################
+
+$LANG_BUTTONS = array(
+    1 => 'דף הבית',
+    2 => 'צרו קשר',
+    3 => 'פרסמו מאמר',
+    4 => '',
+    5 => '',
+    6 => '',
+    7 => 'סטטיסטיקת האתר',
+    8 => 'התאמה אישית',
+    9 => 'חיפוש',
+    10 => 'חיפוש מתקדם',
+    11 => 'ספריית האתר'
+);
+
+###############################################################################
+# 404.php
+
+$LANG_404 = array(
+    1 => '404 Error',
+    2 => 'לא נמצא העמוד <b>%s</b>.',
+    3 => "<p>מצטערים, אבל הקובץ שביקשתם לקבל לא קיים. אנא הרגישו חופשי לבדוק את <a href=\"{$_CONF['site_url']}\">העמוד הראשי</a> או את <a href=\"{$_CONF['site_url']}/search.php\">עמוד החיפוש</a> כדי לראות אם תוכלו למצוא את מה שאיבדתם."
+);
+
+###############################################################################
+
+$LANG_LOGIN = array(
+    1 => 'נדרשת התחברות למערכת',
+    2 => 'מצטערים, כדי להיכנס לאזור זה הינכם נדרשים להתחבר כמשתמשים',
+    3 => 'התחברות למערכת',
+    4 => 'משתמש חדש'
+);
+
+$LANG_PDF = array(
+    1 => 'יכולת ה-PDF מנוטרלת',
+    2 => 'המסמך שבוקש לא הוגש. המסמך נמצא אבל לא הצליח להתקבל. אנא ודאו שהנכם מגישים רק מסמכים בפורמט HTML שנכתבו בסטנדרט xHTML. אנא שימו לב שמסמכי HTML יותר מדי מורכבים עלולים לא להיות מוגשים כמו שצריך או בכלל. המסמך שנוצר כתוצאה מנסיונכם תפס בגודלו 0 bytes, ונמחק. אם הנכם בטוחים שהמסמך שלכם צריך לעבור הגשה ללא בעיה, אנא הגישו אותו מחדש.',
+    3 => 'בעיה לא ידועה בעת יצירת ה-PDF',
+    4 => 'שום מידע על העמוד לא ניתן או שהנכם מעוניינים להשתמש בכלי יצירת PDF יש מאין שלהלן. אם הנכם מרגישים שאתם מקבלים עמוד זה בטעות אז אנא צרו קשר עם מנהלי המערכת. אם לא, תוכלו להשתמש בטופס שלהלן כדי ליצור PDF בצורת אד הוק.',
+    5 => 'טוען את המסמך שלך.',
+    6 => 'אנא חכו עד שהמסמך שלך ייטען.',
+    7 => 'הנכם יכולים לעשות right click על הכפתור שלהלן ולבחור \'save target...\' או \'save link location...\' כדי לשמור עותק של המסמך שלכם.',
+    8 => 'המיקום שניתן בקובץ ההגדרות ל-HTMLDoc binary הוא לא אפשרי או שהמערכת אינה יכולה להריץ אותו. אנא צור קשר עם מנהלי האתר אם בעיה זו ממשיכה.',
+    9 => 'יוצר PDF',
+    10 => 'זהו כלי יצירת PDF אד הוק. הוא ינסה להמיר כל עמוד אינטרנט שתציינו ל-PDF. אנא שימו לב שיש עמודי אינטרנט שלא מוגשים כמו שצריך לצורך יכולת זו. זוהי מגבלה של ה-HTMLDoc PDF generation tool וטעויות כאלו לא צריכות להיות מדווחות למנהלי אתר זה',
+    11 => 'כתובת',
+    12 => 'צרו PDF!',
+    13 => 'הגדרות ה-PHP שבשרת הזה לא מאפשרות לעמודי אינטרנט להיות בשימוש של הפקודה fopen(). מנהל המערכת חייב לערוך את קובץ ה-php.ini ולקבוע את allow_url_fopen על On',
+    14 => 'ה-PDF שביקשתם לא קיים או שניסיתם לגשת לקובץ בצורה לא מורשית.'
+);
+
+###############################################################################
+# trackback.php
+
+$LANG_TRB = array(
+    'trackback' => 'הפנייה',
+    'from' => 'מ:',
+    'tracked_on' => 'נקלטה ב:',
+    'read_more' => '[קיראו עוד]',
+    'intro_text' => 'הנה מה שהיה לאחרים להגיד בנוגע לנושא \'%s\':',
+    'no_comments' => 'אין הפניות עם תגובות לערך זה.',
+    'this_trackback_url' => 'כתובת מפנה לערך זה:',
+    'num_comments' => '%d הפניות עם תגובות',
+    'send_trackback' => 'שילחו פינגים',
+    'preview' => 'תצוגה מקדימה',
+    'editor_title' => 'שילחו הפנייה עם תגובה',
+    'trackback_url' => 'כתובת מפנה',
+    'entry_url' => 'כתובת להפנייה',
+    'entry_title' => 'כותרת להפנייה',
+    'blog_name' => 'שם אתר',
+    'excerpt' => 'קטע להפנייה',
+    'truncate_warning' => 'שימו לב: האתר שאליו תפנו עשוי לקטוע את הקטע שלכם',
+    'button_send' => 'שליחה',
+    'button_preview' => 'תצוגה מקדימה',
+    'send_error' => 'שגיאה',
+    'send_error_details' => 'שגיאה בעת שליחת הפנייה עם תגובה:',
+    'url_missing' => 'אין כתובת מפנה',
+    'url_required' => 'נא כיתבו לפחות כתובת בשביל הפנייה.',
+    'target_missing' => 'אין כתובת להפנייה',
+    'target_required' => 'אנא כיתבו כתובת להפנייה',
+    'error_socket' => 'לא יכול לפתוח socket.',
+    'error_response' => 'התשובה לא מובנת.',
+    'error_unspecified' => 'שגיאה בלתי מוגדרת.',
+    'select_url' => 'ביחרו כתובת מפנה',
+    'not_found' => 'לא נמצאה הכתובת המפנה',
+    'autodetect_failed' => 'לא ניתן למצוא את הכתובת להפנייה של הפירסום שברצונכם לשלוח לו תגובה. אנא הכניסו אותה באופן ידני להלן.',
+    'trackback_explain' => 'מתוך הקישורים שלהלן, אנא ביחרו את הכתובת שהנכם רוצים לשלוח אליה את ההפנייה עם תגובה שלכם. לאחר מכן יהיה נסיון לזהות את כתובת ההפנייה לפירסום זה. או שתוכלו <a href="%s">להכניס זאת ידנית</a> אם אתם כבר יודעים אותה.',
+    'no_links_trackback' => 'לא נמצאו קישורים. אינכם יכולים לשלוח הפנייה עם תגובה לטקסט זה.',
+    'pingback' => 'פינג חוזר',
+    'pingback_results' => 'תוצאות פינגים חוזרים',
+    'send_pings' => 'שילחו פינגים',
+    'send_pings_for' => 'שילחו פינגים עבור "%s"',
+    'no_links_pingback' => 'לא נמצאו קישורים. שום פינגים חוזרים לא נשלחו לטקסט זה.',
+    'pingback_success' => 'נשלח פינג חוזר.',
+    'no_pingback_url' => 'לא נמצאה כתובת לפינג חוזר.',
+    'resend' => 'שילחו מחדש',
+    'ping_all_explain' => 'הנכם יכולים עכשיו להתקשר אל האתרים שקישרתם אליהם (<a href="http://en.wikipedia.org/wiki/Pingback">פינג חוזר</a>), לפרסם את העובדה שהאתר שלכם עודכן על ידי שליחת פינג לשירותי ספריות בלוגים, או לשלוח <a href="http://en.wikipedia.org/wiki/Trackback">הפנייה</a> במקרה שמה שכתבתם הוא תגובה לגבי מאמר באתר של מישהו אחר.',
+    'pingback_button' => 'שליחת פינג חוזר',
+    'pingback_short' => 'שליחת פינגים חוזרים לכל האתרים שמקושרים מהפנייה זו.',
+    'pingback_disabled' => '(הפינגים החוזרים מנוטרלים)',
+    'ping_button' => 'שליחת פינג',
+    'ping_short' => 'שליחת פינגים לשירותי ספריות בלוגים.',
+    'ping_disabled' => '(הפינגים מנוטרלים)',
+    'trackback_button' => 'שליחת הפנייה',
+    'trackback_short' => 'שליחת הפנייה עם תגובה.',
+    'trackback_disabled' => '(הפניות מנוטרלות)',
+    'may_take_a_while' => 'אנא שימו לב ששליחות פינגים חוזרים ופינגים יכולות לקחת זמן.',
+    'ping_results' => 'תוצאות פינגים',
+    'unknown_method' => 'שיטת שליחת הפינג לא ידועה',
+    'ping_success' => 'הפינג נשלח.',
+    'error_site_name' => 'אנא כיתבו את שם האתר.',
+    'error_site_url' => 'אנא כיתבו את כתובת האתר.',
+    'error_ping_url' => 'אנא כיתבו כתובת נכונה לשליחת פינגים.',
+    'no_services' => 'לא הוגדרו שירותי ספריות בלוגים.',
+    'services_headline' => 'שירותי ספריות בלוגים',
+    'service_explain' => 'כדי לשנות או למחוק שירות ספריית בלוגים, ליחצו על אייקון העריכה של אותו שירות להלן. כדי להוסיף שירות ספריית בלוגים חדש, ליחצו על "צרו חדש" לעיל.',
+    'service' => 'שירות',
+    'ping_method' => 'שיטת שליחת פינג',
+    'service_website' => 'אתר',
+    'service_ping_url' => 'כתובת לשליחת פינג',
+    'ping_standard' => 'פינג סטנדרטי',
+    'ping_extended' => 'פינג מורחב',
+    'ping_unknown' => '(שיטה לא ידועה)',
+    'edit_service' => 'עירכו שירות ספריית בלוגים',
+    'trackbacks' => 'הפניות',
+    'editor_intro' => 'הכינו את ההפנייה עם תגובה שלכם עבור <a href="%s">%s</a>.',
+    'editor_intro_none' => 'הכינו את ההפנייה עם תגובה שלכם.',
+    'trackback_note' => 'כדי לשלוח הפנייה עם תגובה למאמר, לכו לרשימת המאמרים וליחצו על "' . $LANG24[21] . '" במאמר הרצוי. כדי לשלוח הפנייה שאינה קשורה למאמר, <a href="%s">ליחצו כאן</a>.',
+    'pingback_explain' => 'כיתבו כתובת לשליחת הפינג החוזר. הפינג החוזר יכוון לאתר הבית שלכם.',
+    'pingback_url' => 'כתובת לפינג חוזר',
+    'site_url' => 'כתובת אתר זה',
+    'pingback_note' => 'כדי לשלוח פינג חוזר למאמר, לכו לרשימת המאמרים וליחצו על "' . $LANG24[21] . '" במאמר הרצוי. כדי לשלוח פינג חוזר שלא קשור למאמר, <a href="%s">ליחצו כאן</a>.',
+    'pbtarget_missing' => 'אין כתובת לשליחת פינג חוזר',
+    'pbtarget_required' => 'אנא הכניסו כתובת לשליחת פינג חוזר',
+    'pb_error_details' => 'שגיאה בעת שליחת הפינג:',
+    'delete_trackback' => 'כדי למחוק הפנייה עם תגובה זו, ליחצו: '
+);
+
+###############################################################################
+# directory.php
+
+$LANG_DIR = array(
+    'title' => 'ספריית מאמרים',
+    'title_year' => 'ספריית מאמרים עבור %d',
+    'title_month_year' => 'ספריית מאמרים עבור %s %d',
+    'nav_top' => 'בחזרה לספריית המאמרים',
+    'no_articles' => 'אין מאמרים.'
+);
+
+###############################################################################
+# "What's New" Time Strings
+# 
+# For the first two strings, you can use the following placeholders.
+# Order them so it makes sense in your language:
+# %i    item, "Stories"
+# %n    amount, "2", "20" etc.
+# %t    time, "2" (weeks)
+# %s    scale, "hrs", "weeks"
+
+$LANG_WHATSNEW = array(
+    'new_string' => 'יש %n %i חדשים ב-%t ה%s האחרונים/ות',
+    'new_last' => 'ב-%t ה%s האחרונים/ות',
+    'minutes' => 'דקות',
+    'hours' => 'שעות',
+    'days' => 'ימים',
+    'weeks' => 'שבועות',
+    'months' => 'חודשים',
+    'minute' => 'דקה',
+    'hour' => 'שעה',
+    'day' => 'יום',
+    'week' => 'שבוע',
+    'month' => 'חודש'
+);
+
+###############################################################################
+# Admin - Strings
+# 
+# These are some standard strings used by core functions as well as plugins to
+# display administration lists and edit pages
+
+$LANG_ADMIN = array(
+    'search' => 'חיפוש',
+    'limit_results' => 'הגבלת תוצאות',
+    'submit' => 'שליחה',
+    'edit' => 'עריכה',
+    'edit_adv' => 'עריכה מתקדמת',
+    'admin_home' => 'מרכז ניהול',
+    'create_new' => 'צרו חדש',
+    'create_new_adv' => 'צרו חדש (מתקדם)',
+    'enabled' => 'מאופשר',
+    'title' => 'כותרת',
+    'type' => 'סוג',
+    'topic' => 'נושא',
+    'help_url' => 'כתובת קובץ עזרה',
+    'save' => 'שמירה',
+    'cancel' => 'ביטול',
+    'delete' => 'מחיקה',
+    'delete_sel' => 'מיחקו את המסומנים',
+    'copy' => 'העתקה',
+    'no_results' => '- לא נמצאו נתונים -',
+    'data_error' => 'הייתה בעיה בעיבוד נתוני המנוי שלכם. אנא בידקו את מקור הנתונים.',
+    'preview' => 'תצוגה מקדימה',
+    'records_found' => 'פריטים שנמצאו'
+);
+
+# Localisation of the texts for the various drop-down menus that are actually
+# stored in the database. If these exist, they override the texts from the
+# database.
+
+$LANG_commentcodes = array(
+    0 => 'איפשור תגובות',
+    -1 => 'ניטרול תגובות'
+);
+
+$LANG_commentmodes = array(
+    'flat' => 'שטוחות',
+    'nested' => 'בצורת עץ',
+    'threaded' => 'מושחלות',
+    'nocomment' => 'ללא תגובות'
+);
+
+$LANG_cookiecodes = array(
+    0 => '(ללא)',
+    3600 => 'שעה',
+    7200 => 'שעתיים',
+    10800 => '3 שעות',
+    28800 => '8 שעות',
+    86400 => 'יום',
+    604800 => 'שבוע',
+    2678400 => 'חודש'
+);
+
+$LANG_dateformats = array(
+    0 => 'ברירת המחדל של המערכת'
+);
+
+$LANG_featurecodes = array(
+    0 => 'לא מוצג',
+    1 => 'מוצג'
+);
+
+$LANG_frontpagecodes = array(
+    0 => 'הראה רק בנושא',
+    1 => 'הראה בעמוד הראשי'
+);
+
+$LANG_postmodes = array(
+    'plaintext' => 'טקסט פשוט',
+    'html' => 'פורמט HTML'
+);
+
+$LANG_sortcodes = array(
+    'ASC' => 'הישן קודם',
+    'DESC' => 'החדש קודם'
+);
+
+$LANG_trackbackcodes = array(
+    0 => 'איפשור הפניות',
+    -1 => 'ניטרול הפניות'
+);
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/hellenic.php 1.4.1.src/cpanel-glprivate/language/hellenic.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/hellenic.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/hellenic.php	2006-09-17 03:58:44.000000000 -0500
@@ -171,28 +171,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => ' ',
-    2 => ',    ',
-    3 => '',
-    4 => '',
-    5 => '',
-    6 => '  ',
-    7 => ' ',
-    8 => '       ,           "  "    ',
-    9 => '   ',
-    10 => '    ',
-    11 => "   {$_USER['username']}  ",
-    12 => '',
-    13 => '',
-    14 => '',
-    15 => '   '
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -354,7 +336,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -671,38 +686,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => ' ',
-    2 => '',
-    3 => ' ',
-    4 => 'URL ',
-    5 => '  ',
-    6 => '  ',
-    7 => ' ',
-    8 => ' ',
-    9 => '( http://)',
-    10 => '   , ,     ',
-    11 => ' ',
-    12 => '             .           ',
-    13 => ' ',
-    14 => ' ',
-    15 => ' ',
-    16 => '  ',
-    17 => "          \n   . , <a ref=\"{$_CONF['site_admin_url']}/ event.php\">     </a>.",
-    18 => ' ',
-    19 => ' ',
-    20 => '',
-    21 => ' ',
-    22 => '',
-    23 => '   .',
-    24 => '   .',
-    25 => '       .'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -793,7 +779,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -881,7 +869,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -911,53 +928,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => '',
-    2 => '',
-    3 => '',
-    4 => '',
-    5 => '',
-    6 => '',
-    7 => '',
-    8 => ' ',
-    9 => '',
-    10 => ' ',
-    11 => ' ',
-    12 => ' ',
-    13 => '',
-    14 => '',
-    15 => '',
-    16 => '',
-    17 => '',
-    18 => '',
-    19 => '',
-    20 => '',
-    21 => '',
-    22 => '',
-    23 => '',
-    24 => '',
-    25 => '  ',
-    26 => ' ',
-    27 => '',
-    28 => '  ',
-    29 => ' ',
-    30 => ' ',
-    31 => '',
-    32 => '',
-    33 => '',
-    34 => '',
-    35 => ' ',
-    36 => '',
-    37 => ',         ',
-    38 => '  ',
-    39 => '',
-    40 => '',
-    41 => ''
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1081,7 +1051,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1162,7 +1134,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1204,7 +1185,6 @@
     'none' => '',
     'accessdenied' => '  ',
     'storydenialmsg' => "       .         {$_CONF['site_name']}.    <a href=users.php;mode=new>   </a> of {$_CONF['site_name']}       !",
-    'eventdenialmsg' => "       .         of {$_CONF['site_name']}.    <a href=users.php;mode=new>  </a> of    {$_CONF['site_name']}       !",
     'nogroupsforcoregroup' => '          ',
     'grouphasnorights' => '              ',
     'newgroup' => ' ',
@@ -1390,7 +1370,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1430,6 +1411,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => '',
+    2 => '',
+    3 => '',
+    4 => '',
+    5 => '',
+    6 => '',
+    7 => '',
+    8 => '',
+    9 => '',
+    10 => '',
+    11 => '',
+    12 => ''
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => '',
+    2 => '',
+    3 => '',
+    4 => '',
+    5 => '',
+    6 => '',
+    7 => ''
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1440,8 +1452,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1450,9 +1464,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/hellenic_utf-8.php 1.4.1.src/cpanel-glprivate/language/hellenic_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/hellenic_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/hellenic_utf-8.php	2006-09-17 03:58:44.000000000 -0500
@@ -171,28 +171,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Ημερολόγιο γεγονότων',
-    2 => 'Λυπάμαι, δεν υπάρχουν καταχωρημένα γεγονότα',
-    3 => 'Πότε',
-    4 => 'Πού',
-    5 => 'Περιγραφή',
-    6 => 'Προσθέστε ένα γεγονός',
-    7 => 'Προσεχή γεγονότα',
-    8 => 'Με την πρόσθεση αυτού του γεγονότος στο ημερολόγιο, θα έχετε γρήγορη πρόσβαση στα γεγονότα που σας ενδιαφέρουν επιλέγοντας "Το Ημερολόγίο μου" από το Μενού χρηστών',
-    9 => 'Πρόσθεση στο ημερολόγιο μου',
-    10 => 'Διαγραφή από το ημερολόγιο μου',
-    11 => "Πρόσθεση γεγονότος στο {$_USER['username']} προσωπικό ημερολόγιο",
-    12 => 'Γεγονότα',
-    13 => 'Αρχή',
-    14 => 'Τέλος',
-    15 => 'Πίσω στο ημερολόγιο μου'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -354,7 +336,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -671,38 +686,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Συντάκτης γεγονότων',
-    2 => 'Σφάλμα',
-    3 => 'Τίτλος γεγονότος',
-    4 => 'URL γεγονότος',
-    5 => 'Ημερομηνία έναρξης γεγονότος',
-    6 => 'Ημερομηνία λήξης γεγονότος',
-    7 => 'Περιοχή γεγονότος',
-    8 => 'Περιγραφή γεγονότος',
-    9 => '(συμπεριλαμβανόμενο http://)',
-    10 => 'Πρέπει να ορίσετε ημερομηνίες, ώρες, περιγραφή και περιοχή του γεγονότος',
-    11 => 'Διαχειριστής γεγονότων',
-    12 => 'Για να μετατρέψετε η να διαγράψετε ένα γεγονός διαλέξτε το απο την παρακάτω λίστα. Για να δημιουργήσετε ένα γεγονός διαλέξτε την επιλογή Νέο γεγονός παραπάνω',
-    13 => 'Τίτλος γεγονότος',
-    14 => 'Ημερομηνία έναρξης',
-    15 => 'Ημερομηνία λήξης',
-    16 => 'Η πρόσβαση απορρίφθηκε',
-    17 => "Τα δικαιώματα σας δεν αρκούν για να προσπελάσετε αυτό το γεγονός\nΗ απόπειρα έχει καταχωρηθεί. Παρακαλώ, <a ref=\"{$_CONF['site_admin_url']}/ event.php\"> πηγαίνετε πίσω στην σελίδα διαχείρισης</a>.",
-    18 => 'Νέο γεγονός',
-    19 => 'Σελίδα διαχείρισης',
-    20 => 'αποθήκευση',
-    21 => 'ακύρωση ',
-    22 => 'διαγραφή',
-    23 => 'Μη αποδεκτή ημερομηνία έναρξης.',
-    24 => 'Μη αποδεκτή ημερομηνία λήξης.',
-    25 => 'Η Ημερομηνία λήξης είναι ΠΡΙΝ την ημερομηνία έναρξης.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -793,7 +779,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -881,7 +869,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -911,53 +928,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Κυριακή',
-    2 => 'Δευτέρα',
-    3 => 'Τρίτη',
-    4 => 'Τετάρτη',
-    5 => 'Πέμπτη',
-    6 => 'Παρασκευή',
-    7 => 'Σάββατο',
-    8 => 'Προσθήκη γεγονότος',
-    9 => 'Γεγονός',
-    10 => 'Γεγονότα για',
-    11 => 'Κυρίως ημερολόγιο',
-    12 => 'Προσωπικό ημερολόγιο',
-    13 => 'Ιανουάριος',
-    14 => 'Φεβρουάριος',
-    15 => 'Μάρτιος',
-    16 => 'Απρίλιος',
-    17 => 'Μάιος',
-    18 => 'Ιούνιος',
-    19 => 'Ιούλιος',
-    20 => 'Αύγουστος',
-    21 => 'Σεπτέμβριος',
-    22 => 'Οκτώβριος',
-    23 => 'Νοέμβριος',
-    24 => 'Δεκέμβριος',
-    25 => 'Πίσω στο ',
-    26 => 'Όλη μέρα',
-    27 => 'Εβδομάδα',
-    28 => 'Προσωπικό ημερολόγιο για',
-    29 => 'Δημόσιο ημερολόγιο',
-    30 => 'Διαγραφή γεγονότος',
-    31 => 'Προσθήκη',
-    32 => 'Γεγονός',
-    33 => 'Ημερομηνία',
-    34 => 'Ώρα',
-    35 => 'Γρήγορη καταχώρηση',
-    36 => 'Υποβολή',
-    37 => 'Συγνώμη, η υπηρεσία προσωπικού ημερολογίου δεν συμπεριλαμβάνεται στις ενεργοποιημένες υπηρεσίες',
-    38 => 'Προσωπικός Επεξεργαστής γεγονότων',
-    39 => 'Ημέρα',
-    40 => 'Εβδομάδα',
-    41 => 'Μήνα'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1081,7 +1051,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1162,7 +1134,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1204,7 +1185,6 @@
     'none' => 'Κανένα',
     'accessdenied' => 'Η πρόσβαση απορρίπτεται',
     'storydenialmsg' => "Δεν έχετε πρόσβαση να δείτε αυτό το άρθρο.  Αυτό ίσως έγινε επειδή δεν είστε μέλος {$_CONF['site_name']}.  Σας παρακαλούμε <a href=users.php;mode=new> να γίνετε μέλος</a> of {$_CONF['site_name']} για να έχετε ολοκληρωμένη πρόσβαση ως μέλος!",
-    'eventdenialmsg' => "Δεν έχετε πρόσβαση να δείτε αυτό το γεγονός.  Αυτό ίσως έγινε γιατί δεν είστε μέλος of {$_CONF['site_name']}.  Σας παρακαλούμε <a href=users.php;mode=new> να γ</a> of να γίνετε μέλος {$_CONF['site_name']} για να έχετε ολοκληρωμένη πρόσβαση ως μέλος!",
     'nogroupsforcoregroup' => 'Αυτό το σύνολο δεν ανήκει σε κανένα από τα άλλα σύνολα',
     'grouphasnorights' => 'Αυτό το σύνολο δεν έχει πρόσβαση σε καμία από τις ρουτίνες διαχείρησης αυτής της ιστοσελίδας',
     'newgroup' => 'νέο σύνολο',
@@ -1390,7 +1370,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1430,6 +1411,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Ιανουάριος',
+    2 => 'Φεβρουάριος',
+    3 => 'Μάρτιος',
+    4 => 'Απρίλιος',
+    5 => 'Μάιος',
+    6 => 'Ιούνιος',
+    7 => 'Ιούλιος',
+    8 => 'Αύγουστος',
+    9 => 'Σεπτέμβριος',
+    10 => 'Οκτώβριος',
+    11 => 'Νοέμβριος',
+    12 => 'Δεκέμβριος'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Κυριακή',
+    2 => 'Δευτέρα',
+    3 => 'Τρίτη',
+    4 => 'Τετάρτη',
+    5 => 'Πέμπτη',
+    6 => 'Παρασκευή',
+    7 => 'Σάββατο'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1440,8 +1452,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1450,9 +1464,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/indonesian.php 1.4.1.src/cpanel-glprivate/language/indonesian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/indonesian.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/indonesian.php	2006-09-17 03:58:44.000000000 -0500
@@ -163,28 +163,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Kalender Even',
-    2 => 'Maaf\'   belum ada even.',
-    3 => 'Kapan',
-    4 => 'Dimana',
-    5 => 'Deskripsi',
-    6 => 'Tambah Even',
-    7 => 'Even, segera...',
-    8 => 'Dengan menambahkan even ke dalam kalender anda dapat melihat dengan cepat even-even yang menarik dengan meng-klik "Kalenderku" di area Fungsi User.',
-    9 => 'Tambahkan ke Kalendrku',
-    10 => 'Hapus dari Kalenderku',
-    11 => "Tambahkan even ke {$_USER['username']}'s Kalender",
-    12 => 'Even',
-    13 => 'Mulai',
-    14 => 'Berakhir',
-    15 => 'Kembali ke Kalender'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -346,7 +328,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -663,38 +678,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editor Even',
-    2 => 'Error',
-    3 => 'Judul Even',
-    4 => 'URL Even',
-    5 => 'Tanggal Mulai Even',
-    6 => 'Tanggal berakhir Even',
-    7 => 'Lokasi Even',
-    8 => 'Deskripsi Even',
-    9 => '(pakai http://)',
-    10 => 'Anda harus mengisi tanggal/waktu, deskripsi dan lokasi!',
-    11 => 'Manajer Even',
-    12 => 'Untuk memodifikasi atau menghapus even, klik pada even di bawah ini.  Untuk membuat klik pada even baru diatas. Klik pda [C] untuk mengkopi even yang sudah ada.',
-    13 => 'Judul Even',
-    14 => 'Tanggal mulai',
-    15 => 'Tanggal berakhir',
-    16 => 'Access disangkal',
-    17 => "Anda mencoba mengakses even yg bukan hak anda.  Percobaan anda telah terekam. Silahkan <a href=\"{$_CONF['site_admin_url']}/event.php\">kembali ke layar even administrator</a>.",
-    18 => 'Even Baru',
-    19 => 'Admin Home',
-    20 => 'simpan',
-    21 => 'batal',
-    22 => 'hapus',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -785,7 +771,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -873,7 +861,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -903,53 +920,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Minggu',
-    2 => 'Senin',
-    3 => 'Selasa',
-    4 => 'Rabu',
-    5 => 'Kamis',
-    6 => 'Jumat',
-    7 => 'Sabtu',
-    8 => 'Tambah even',
-    9 => '%s Even',
-    10 => 'Even untuk',
-    11 => 'Master Kalender',
-    12 => 'Kelenderku',
-    13 => 'Januari',
-    14 => 'Februari',
-    15 => 'Maret',
-    16 => 'April',
-    17 => 'Mei',
-    18 => 'Juni',
-    19 => 'Juli',
-    20 => 'Augustus',
-    21 => 'September',
-    22 => 'Oktober',
-    23 => 'November',
-    24 => 'Desember',
-    25 => 'Kembali ke ',
-    26 => 'Semua tanggal',
-    27 => 'Minggu',
-    28 => 'Personal Kalender untuk',
-    29 => 'Publik Kalender',
-    30 => 'hapus even',
-    31 => 'Tambah',
-    32 => 'Even',
-    33 => 'Date',
-    34 => 'waktu',
-    35 => 'Tambah cepat',
-    36 => 'Kirim',
-    37 => 'Maaf, fitur personal kalender tidak diizikan',
-    38 => 'Editor Personal Even',
-    39 => 'Tanggal',
-    40 => 'Minggu',
-    41 => 'Bulan'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1073,7 +1043,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1154,7 +1126,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1196,7 +1177,6 @@
     'none' => 'Tidak ada',
     'accessdenied' => 'Access disangkal',
     'storydenialmsg' => "Anda tidak dapat akses untuk melihat bacaan ini.  Mungkin akrena anda bukan anggota {$_CONF['site_name']}.  Silahkan <a href=users.php?mode=new> jadi anggota</a> of {$_CONF['site_name']} untuk mendapatkan akses penuh keanggotaan!",
-    'eventdenialmsg' => "Anda tidak dapat akses untuk melihat even ini.  Mungkin akrena anda bukan anggota {$_CONF['site_name']}.  Silahkan <a href=users.php?mode=new> jadi anggota</a> of {$_CONF['site_name']} untuk mendapatkan akses penuh keanggotaan!",
     'nogroupsforcoregroup' => 'Group ini bukan milik group manapun',
     'grouphasnorights' => 'Group ini tidak dapat diakses dengan fitur apapun yang anda telah miliki',
     'newgroup' => 'Group Baru',
@@ -1382,7 +1362,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1422,6 +1403,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Januari',
+    2 => 'Februari',
+    3 => 'Maret',
+    4 => 'April',
+    5 => 'Mei',
+    6 => 'Juni',
+    7 => 'Juli',
+    8 => 'Augustus',
+    9 => 'September',
+    10 => 'Oktober',
+    11 => 'November',
+    12 => 'Desember'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Minggu',
+    2 => 'Senin',
+    3 => 'Selasa',
+    4 => 'Rabu',
+    5 => 'Kamis',
+    6 => 'Jumat',
+    7 => 'Sabtu'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1432,8 +1444,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1442,9 +1456,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/indonesian_utf-8.php 1.4.1.src/cpanel-glprivate/language/indonesian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/indonesian_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/indonesian_utf-8.php	2006-09-17 03:58:44.000000000 -0500
@@ -163,28 +163,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Kalender Even',
-    2 => 'Maaf\'   belum ada even.',
-    3 => 'Kapan',
-    4 => 'Dimana',
-    5 => 'Deskripsi',
-    6 => 'Tambah Even',
-    7 => 'Even, segera...',
-    8 => 'Dengan menambahkan even ke dalam kalender anda dapat melihat dengan cepat even-even yang menarik dengan meng-klik "Kalenderku" di area Fungsi User.',
-    9 => 'Tambahkan ke Kalendrku',
-    10 => 'Hapus dari Kalenderku',
-    11 => "Tambahkan even ke {$_USER['username']}'s Kalender",
-    12 => 'Even',
-    13 => 'Mulai',
-    14 => 'Berakhir',
-    15 => 'Kembali ke Kalender'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -346,7 +328,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -663,38 +678,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editor Even',
-    2 => 'Error',
-    3 => 'Judul Even',
-    4 => 'URL Even',
-    5 => 'Tanggal Mulai Even',
-    6 => 'Tanggal berakhir Even',
-    7 => 'Lokasi Even',
-    8 => 'Deskripsi Even',
-    9 => '(pakai http://)',
-    10 => 'Anda harus mengisi tanggal/waktu, deskripsi dan lokasi!',
-    11 => 'Manajer Even',
-    12 => 'Untuk memodifikasi atau menghapus even, klik pada even di bawah ini.  Untuk membuat klik pada even baru diatas. Klik pda [C] untuk mengkopi even yang sudah ada.',
-    13 => 'Judul Even',
-    14 => 'Tanggal mulai',
-    15 => 'Tanggal berakhir',
-    16 => 'Access disangkal',
-    17 => "Anda mencoba mengakses even yg bukan hak anda.  Percobaan anda telah terekam. Silahkan <a href=\"{$_CONF['site_admin_url']}/event.php\">kembali ke layar even administrator</a>.",
-    18 => 'Even Baru',
-    19 => 'Admin Home',
-    20 => 'simpan',
-    21 => 'batal',
-    22 => 'hapus',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -785,7 +771,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -873,7 +861,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -903,53 +920,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Minggu',
-    2 => 'Senin',
-    3 => 'Selasa',
-    4 => 'Rabu',
-    5 => 'Kamis',
-    6 => 'Jumat',
-    7 => 'Sabtu',
-    8 => 'Tambah even',
-    9 => '%s Even',
-    10 => 'Even untuk',
-    11 => 'Master Kalender',
-    12 => 'Kelenderku',
-    13 => 'Januari',
-    14 => 'Februari',
-    15 => 'Maret',
-    16 => 'April',
-    17 => 'Mei',
-    18 => 'Juni',
-    19 => 'Juli',
-    20 => 'Augustus',
-    21 => 'September',
-    22 => 'Oktober',
-    23 => 'November',
-    24 => 'Desember',
-    25 => 'Kembali ke ',
-    26 => 'Semua tanggal',
-    27 => 'Minggu',
-    28 => 'Personal Kalender untuk',
-    29 => 'Publik Kalender',
-    30 => 'hapus even',
-    31 => 'Tambah',
-    32 => 'Even',
-    33 => 'Date',
-    34 => 'waktu',
-    35 => 'Tambah cepat',
-    36 => 'Kirim',
-    37 => 'Maaf, fitur personal kalender tidak diizikan',
-    38 => 'Editor Personal Even',
-    39 => 'Tanggal',
-    40 => 'Minggu',
-    41 => 'Bulan'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1073,7 +1043,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1154,7 +1126,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1196,7 +1177,6 @@
     'none' => 'Tidak ada',
     'accessdenied' => 'Access disangkal',
     'storydenialmsg' => "Anda tidak dapat akses untuk melihat bacaan ini.  Mungkin akrena anda bukan anggota {$_CONF['site_name']}.  Silahkan <a href=users.php?mode=new> jadi anggota</a> of {$_CONF['site_name']} untuk mendapatkan akses penuh keanggotaan!",
-    'eventdenialmsg' => "Anda tidak dapat akses untuk melihat even ini.  Mungkin akrena anda bukan anggota {$_CONF['site_name']}.  Silahkan <a href=users.php?mode=new> jadi anggota</a> of {$_CONF['site_name']} untuk mendapatkan akses penuh keanggotaan!",
     'nogroupsforcoregroup' => 'Group ini bukan milik group manapun',
     'grouphasnorights' => 'Group ini tidak dapat diakses dengan fitur apapun yang anda telah miliki',
     'newgroup' => 'Group Baru',
@@ -1382,7 +1362,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1422,6 +1403,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Januari',
+    2 => 'Februari',
+    3 => 'Maret',
+    4 => 'April',
+    5 => 'Mei',
+    6 => 'Juni',
+    7 => 'Juli',
+    8 => 'Augustus',
+    9 => 'September',
+    10 => 'Oktober',
+    11 => 'November',
+    12 => 'Desember'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Minggu',
+    2 => 'Senin',
+    3 => 'Selasa',
+    4 => 'Rabu',
+    5 => 'Kamis',
+    6 => 'Jumat',
+    7 => 'Sabtu'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1432,8 +1444,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1442,9 +1456,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/italian.php 1.4.1.src/cpanel-glprivate/language/italian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/italian.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/italian.php	2006-09-17 03:58:44.000000000 -0500
@@ -164,28 +164,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendario eventi',
-    2 => 'Nessun evento da visualizzare.',
-    3 => 'Quando',
-    4 => 'Dove',
-    5 => 'Descrizione',
-    6 => 'Aggiungi un evento',
-    7 => 'Prossimi eventi',
-    8 => 'Aggiungendo questo evento al tuo calendario potrai accedere in modo veloce a tutti gli eventi cui sei interessato facendo clic su "Il mio calendario" nel blocco "Funzioni Utente".',
-    9 => 'Aggiungi al mio calendario',
-    10 => 'Elimina dal mio calendario',
-    11 => "Aggiungi un evento al calendario di {$_USER['username']}",
-    12 => 'Evento',
-    13 => 'Inizio',
-    14 => 'Fine',
-    15 => 'Torna al calendario'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -347,7 +329,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -664,38 +679,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editor Eventi',
-    2 => 'Error',
-    3 => 'Titolo Evento',
-    4 => 'URL Evento',
-    5 => 'Data Inizio Evento',
-    6 => 'Data Fine Evento',
-    7 => 'Localit&agrave; Evento',
-    8 => 'Descrizione Evento',
-    9 => '(includi http://)',
-    10 => 'Devi fornire la data/orario, descrizione e localit&agrave; evento!',
-    11 => 'Lista Eventi',
-    12 => 'Per modificare o eliminare un evento, fai clic sull\'evento selezionato sotto.  <br>Per creare un nuovo evento fai clic su [ Nuovo Evento ] sopra. Fai clic su [C] per creare una copia di un evento esistente.',
-    13 => 'Titolo Evento',
-    14 => 'Data Inizio',
-    15 => 'Data Fine',
-    16 => 'Accesso Negato',
-    17 => "Stai tentando di accedere a un evento del quale non hai i permessi di modifica.  Questo tentativo sar&agrave; registrato. Prego <a href=\"{$_CONF['site_admin_url']}/event.php\">ritorna alla schermata di amministrazione</a>.",
-    18 => 'Nuovo Evento',
-    19 => 'Home Amministrazione',
-    20 => 'Registra',
-    21 => 'Annulla',
-    22 => 'Elimina',
-    23 => 'Data inizio errata.',
-    24 => 'Data fine errata.',
-    25 => 'Data fine prima di data inizio.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -786,7 +772,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -874,7 +862,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -904,53 +921,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Domenica',
-    2 => 'Luned&igrave;',
-    3 => 'Marted&igrave;',
-    4 => 'Mercoled&igrave;',
-    5 => 'Gioved&igrave;',
-    6 => 'Venerd&igrave;',
-    7 => 'Sabato',
-    8 => 'Aggiungi evento',
-    9 => 'Eventi %s',
-    10 => 'Eventi per',
-    11 => 'Calendario Principale',
-    12 => 'Il mio calendario',
-    13 => 'Gennaio',
-    14 => 'Febbraio',
-    15 => 'Marzo',
-    16 => 'Aprile',
-    17 => 'Maggio',
-    18 => 'Giugno',
-    19 => 'Luglio',
-    20 => 'Agosto',
-    21 => 'Settembre',
-    22 => 'Ottobre',
-    23 => 'Novembre',
-    24 => 'Dicembre',
-    25 => 'Ritorna a ',
-    26 => 'Tutti i giorni',
-    27 => 'Settimana',
-    28 => 'Calendario personale per',
-    29 => 'Calendario pubblico',
-    30 => 'Elimina evento',
-    31 => 'Inserisci',
-    32 => 'Evento',
-    33 => 'Data',
-    34 => 'Tempo',
-    35 => 'Inserimento veloce',
-    36 => 'Invia',
-    37 => 'Spiacenti, la funzione calendario personale non &egrave; abilitato su questo sito',
-    38 => 'Editor Eventi Personali',
-    39 => 'Giorno',
-    40 => 'Settimana',
-    41 => 'Mese'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1074,7 +1044,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1155,7 +1127,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1197,7 +1178,6 @@
     'none' => 'Nessuno',
     'accessdenied' => 'Accesso negato',
     'storydenialmsg' => "Non disponi dei permessi per visualizzare questo articolo. Questo perch&egrave; non sei un membro registrato di {$_CONF['site_name']}.  Prego <a href=users.php?mode=new> diventa un membro</a> of {$_CONF['site_name']} per avere pieno accesso al sito!",
-    'eventdenialmsg' => "Non disponi dei permessi per visualizzare questo evento. Questo perch&egrave; non sei un membro registrato di {$_CONF['site_name']}.  Prego <a href=users.php?mode=new> diventa un membro</a> of {$_CONF['site_name']} per avere pieno accesso al sito!",
     'nogroupsforcoregroup' => 'Questo Gruppo non ha alcun collegamento con gli altri gruppi',
     'grouphasnorights' => 'Questo Gruppo non ha accesso a nessuna funzione amministrativa del sito',
     'newgroup' => 'Nuovo Gruppo',
@@ -1383,7 +1363,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1423,6 +1404,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Gennaio',
+    2 => 'Febbraio',
+    3 => 'Marzo',
+    4 => 'Aprile',
+    5 => 'Maggio',
+    6 => 'Giugno',
+    7 => 'Luglio',
+    8 => 'Agosto',
+    9 => 'Settembre',
+    10 => 'Ottobre',
+    11 => 'Novembre',
+    12 => 'Dicembre'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Domenica',
+    2 => 'Luned&igrave;',
+    3 => 'Marted&igrave;',
+    4 => 'Mercoled&igrave;',
+    5 => 'Gioved&igrave;',
+    6 => 'Venerd&igrave;',
+    7 => 'Sabato'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1433,8 +1445,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1443,9 +1457,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/italian_utf-8.php 1.4.1.src/cpanel-glprivate/language/italian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/italian_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/italian_utf-8.php	2006-09-17 03:58:44.000000000 -0500
@@ -164,28 +164,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendario eventi',
-    2 => 'Nessun evento da visualizzare.',
-    3 => 'Quando',
-    4 => 'Dove',
-    5 => 'Descrizione',
-    6 => 'Aggiungi un evento',
-    7 => 'Prossimi eventi',
-    8 => 'Aggiungendo questo evento al tuo calendario potrai accedere in modo veloce a tutti gli eventi cui sei interessato facendo clic su "Il mio calendario" nel blocco "Funzioni Utente".',
-    9 => 'Aggiungi al mio calendario',
-    10 => 'Elimina dal mio calendario',
-    11 => "Aggiungi un evento al calendario di {$_USER['username']}",
-    12 => 'Evento',
-    13 => 'Inizio',
-    14 => 'Fine',
-    15 => 'Torna al calendario'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -347,7 +329,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -664,38 +679,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editor Eventi',
-    2 => 'Error',
-    3 => 'Titolo Evento',
-    4 => 'URL Evento',
-    5 => 'Data Inizio Evento',
-    6 => 'Data Fine Evento',
-    7 => 'Localit&agrave; Evento',
-    8 => 'Descrizione Evento',
-    9 => '(includi http://)',
-    10 => 'Devi fornire la data/orario, descrizione e localit&agrave; evento!',
-    11 => 'Lista Eventi',
-    12 => 'Per modificare o eliminare un evento, fai clic sull\'evento selezionato sotto.  <br>Per creare un nuovo evento fai clic su [ Nuovo Evento ] sopra. Fai clic su [C] per creare una copia di un evento esistente.',
-    13 => 'Titolo Evento',
-    14 => 'Data Inizio',
-    15 => 'Data Fine',
-    16 => 'Accesso Negato',
-    17 => "Stai tentando di accedere a un evento del quale non hai i permessi di modifica.  Questo tentativo sar&agrave; registrato. Prego <a href=\"{$_CONF['site_admin_url']}/event.php\">ritorna alla schermata di amministrazione</a>.",
-    18 => 'Nuovo Evento',
-    19 => 'Home Amministrazione',
-    20 => 'Registra',
-    21 => 'Annulla',
-    22 => 'Elimina',
-    23 => 'Data inizio errata.',
-    24 => 'Data fine errata.',
-    25 => 'Data fine prima di data inizio.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -786,7 +772,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -874,7 +862,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -904,53 +921,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Domenica',
-    2 => 'Luned&igrave;',
-    3 => 'Marted&igrave;',
-    4 => 'Mercoled&igrave;',
-    5 => 'Gioved&igrave;',
-    6 => 'Venerd&igrave;',
-    7 => 'Sabato',
-    8 => 'Aggiungi evento',
-    9 => 'Eventi %s',
-    10 => 'Eventi per',
-    11 => 'Calendario Principale',
-    12 => 'Il mio calendario',
-    13 => 'Gennaio',
-    14 => 'Febbraio',
-    15 => 'Marzo',
-    16 => 'Aprile',
-    17 => 'Maggio',
-    18 => 'Giugno',
-    19 => 'Luglio',
-    20 => 'Agosto',
-    21 => 'Settembre',
-    22 => 'Ottobre',
-    23 => 'Novembre',
-    24 => 'Dicembre',
-    25 => 'Ritorna a ',
-    26 => 'Tutti i giorni',
-    27 => 'Settimana',
-    28 => 'Calendario personale per',
-    29 => 'Calendario pubblico',
-    30 => 'Elimina evento',
-    31 => 'Inserisci',
-    32 => 'Evento',
-    33 => 'Data',
-    34 => 'Tempo',
-    35 => 'Inserimento veloce',
-    36 => 'Invia',
-    37 => 'Spiacenti, la funzione calendario personale non &egrave; abilitato su questo sito',
-    38 => 'Editor Eventi Personali',
-    39 => 'Giorno',
-    40 => 'Settimana',
-    41 => 'Mese'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1074,7 +1044,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1155,7 +1127,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1197,7 +1178,6 @@
     'none' => 'Nessuno',
     'accessdenied' => 'Accesso negato',
     'storydenialmsg' => "Non disponi dei permessi per visualizzare questo articolo. Questo perch&egrave; non sei un membro registrato di {$_CONF['site_name']}.  Prego <a href=users.php?mode=new> diventa un membro</a> of {$_CONF['site_name']} per avere pieno accesso al sito!",
-    'eventdenialmsg' => "Non disponi dei permessi per visualizzare questo evento. Questo perch&egrave; non sei un membro registrato di {$_CONF['site_name']}.  Prego <a href=users.php?mode=new> diventa un membro</a> of {$_CONF['site_name']} per avere pieno accesso al sito!",
     'nogroupsforcoregroup' => 'Questo Gruppo non ha alcun collegamento con gli altri gruppi',
     'grouphasnorights' => 'Questo Gruppo non ha accesso a nessuna funzione amministrativa del sito',
     'newgroup' => 'Nuovo Gruppo',
@@ -1383,7 +1363,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1423,6 +1404,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Gennaio',
+    2 => 'Febbraio',
+    3 => 'Marzo',
+    4 => 'Aprile',
+    5 => 'Maggio',
+    6 => 'Giugno',
+    7 => 'Luglio',
+    8 => 'Agosto',
+    9 => 'Settembre',
+    10 => 'Ottobre',
+    11 => 'Novembre',
+    12 => 'Dicembre'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Domenica',
+    2 => 'Luned&igrave;',
+    3 => 'Marted&igrave;',
+    4 => 'Mercoled&igrave;',
+    5 => 'Gioved&igrave;',
+    6 => 'Venerd&igrave;',
+    7 => 'Sabato'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1433,8 +1445,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1443,9 +1457,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/japanese.php 1.4.1.src/cpanel-glprivate/language/japanese.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/japanese.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/japanese.php	2006-12-11 18:10:48.000000000 -0600
@@ -2,7 +2,6 @@
 
 ###############################################################################
 # japanese.php
-# Lastmodified:20030702
 # This is the Japanese language page for GeekLog!
 # Special thanks to Mischa Polivanov for his work on this project
 #
@@ -24,7 +23,11 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
-###############################################################################
+################################################################################
+# ϡGeeklog ܸեǤ
+# language/japanese.php
+# http://www.geeklog.jp/
+# Last Update 2006/12/12
 
 $LANG_CHARSET = 'euc-jp';
 
@@ -35,6 +38,14 @@
 #               YY    - phrase id number
 ###############################################################################
 
+# @@@@@ GeekLog Japanese ܸбѡɲ----->
+
+$LANG_JPN = array(
+    1 => ' ',
+);
+
+# @@@@@ GeekLog Japanese ܸбѡɲ<-----ޤ
+
 ###############################################################################
 # USER PHRASES - These are file phrases used in end user scripts
 ###############################################################################
@@ -43,22 +54,22 @@
 # lib-common.php
 
 $LANG01 = array(
-    1 => 'ƼԤ:',
-    2 => '³ɤ',
+    1 => 'Ƽ:',
+    2 => 'ʸɽ',
     3 => 'Υ',
     4 => 'Խ',
     5 => 'ɼ',
     6 => '',
-    7 => 'ɼ',
+    7 => '',
     8 => 'ɼͿ',
     9 => 'ǽ:',
     10 => 'ǧԤꥹ',
     11 => '',
     12 => '֥å',
-    13 => '',
-    14 => '',
-    15 => '٥Ⱦ',
-    16 => '󥱡',
+    13 => 'ʵƥ',
+    14 => '',
+    15 => '',
+    16 => '',
     17 => '桼',
     18 => 'SQL Query',
     19 => '',
@@ -71,7 +82,7 @@
     26 => 'ȤƼԤǤˤƤʤΤǤꡢȴԤǤ餤ޤ',
     27 => 'ǿ',
     28 => '',
-    29 => 'ȤϤޤ',
+    29 => '-',
     30 => 'ε',
     31 => 'ѤǤHTML:',
     32 => '顼ϿƤʤ桼̾Ǥ',
@@ -79,7 +90,7 @@
     34 => '顼',
     35 => '',
     36 => 'on',
-    37 => 'ƵϤޤ',
+    37 => '-',
     38 => 'RSSۿ',
     39 => '',
     40 => ' ʤ <tt>php.ini</tt> ǡ<tt>register_globals = Off</tt> ˤʤäƤ褦ǤGeeklogϡ <tt>register_globals</tt>  <strong>on</strong> ˤʤäƤʤФʤޤ GeeklogȤˡ <strong>on</strong> ˤơWebСƵưƤ',
@@ -89,8 +100,8 @@
     44 => 'ε',
     45 => 'MySQLΥ顼ֹϡ',
     46 => 'MySQLΥ顼åϡ',
-    47 => '桼',
-    48 => 'Ⱦ',
+    47 => '',
+    48 => 'ޥ',
     49 => '',
     50 => 'SQLʸ˥顼ޤ',
     51 => 'إ',
@@ -102,36 +113,36 @@
     57 => 'ѥ',
     58 => '',
     59 => "<a href=\"{$_CONF['site_url']}/users.php?mode=new\">Ͽ</a>",
-    60 => 'Ȥ',
+    60 => '',
     61 => 'Ȥκ',
     62 => '',
     63 => 'Ȥ',
     64 => 'ͧͤ˥᡼뤹',
     65 => 'Ѳ',
-    66 => 'Ŀͥ',
+    66 => '',
     67 => '褦 ',
     68 => 'ۡ',
     69 => 'Ϣ',
     70 => '',
     71 => '',
     72 => '',
-    73 => '󥱡Ȱ',
-    74 => '',
-    75 => 'ץ',
+    73 => '',
+    74 => '',
+    75 => '',
     76 => '',
-    77 => 'ץ饰',
-    78 => '줫ͽ',
+    77 => 'ץ饰ʳĥǽ',
+    78 => '',
     79 => '',
     80 => 'ε',
     81 => 'ε',
     82 => 'ְ',
     83 => '',
-    84 => '󥯽',
+    84 => '',
     85 => '48 ְ',
     86 => '  -',
     87 => 'ʺǶᣲ֡',
-    88 => '  -',
-    89 => '  -',
+    88 => '',
+    89 => '',
     90 => 'ۡ',
     91 => 'ڡ֡',
     92 => '',
@@ -142,54 +153,33 @@
     97 => 'ɥꥹ',
     98 => 'ץ饰',
     99 => '',
-    100 => 'Ϥޤ',
-    101 => 'Ŀͤͽ',
-    102 => 'Τͽ',
-    103 => 'DBΥХåå',
+    100 => '-',
+    101 => '',
+    102 => '',
+    103 => 'ǡ١ΥХåå',
     104 => '',
-    105 => '롼פ˥᡼',
+    105 => '롼ץ᡼',
     106 => '',
-    107 => 'С',
+    107 => 'GLСå',
     108 => 'å򥯥ꥢ',
-    109 => 'ǤȤ',
+    109 => '',
     110 => 'Ƥ򥵥ȤδԤΤ餻',
     111 => 'PDFǱ',
     112 => 'Ͽ桼',
     113 => 'Geeklogɥ',
     114 => 'ȥåХå',
-    115 => 'ȥåХåϤޤ',
+    115 => '-',
     116 => 'ȥåХå',
-    117 => 'ΰ',
+    117 => '',
     118 => '³Υڡؤɤ',
-    119 => "<a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">ѥɤκȯ</a>",
-    120 => 'ΥȤؤα³󥯡Permanent link',
+    119 => "<a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">ѥɺȯ</a>",
+    120 => 'ΥȤؤαʵץ',
     121 => ' (%d)',
     122 => 'ȥåХå (%d)',
     123 => '٤ƤHTML'
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => '٥Ⱦ󥫥',
-    2 => 'ϥ٥Ȥޤ',
-    3 => '',
-    4 => '',
-    5 => 'ܺ',
-    6 => '٥Ȥɲ',
-    7 => '줫ͽ',
-    8 => 'ĿͥˤΥ٥ȤɲäȡָĿͥפ桼˥塼򤹤뤳ȤǸ뤳ȤǤޤ',
-    9 => 'Ŀͥɲ',
-    10 => 'Ŀͥ',
-    11 => "Υ٥Ȥ{$_USER['username']}θĿͥɲ",
-    12 => '٥',
-    13 => '',
-    14 => 'λ',
-    15 => ''
-);
-
-###############################################################################
 # comment.php
 
 $LANG03 = array(
@@ -226,7 +216,7 @@
 # users.php
 
 $LANG04 = array(
-    1 => '桼',
+    1 => 'Ⱦ',
     2 => '桼̾',
     3 => '̾',
     4 => 'ѥ',
@@ -236,22 +226,22 @@
     8 => 'PGP',
     9 => 'ѹ¸',
     10 => 'Ƕ10Υ',
-    11 => 'ȤϤޤ',
-    12 => '桼ꡧ',
+    11 => '-',
+    12 => '桼',
     13 => 'E-mailƤɤ',
     14 => 'Υѥɤϼư줿ΤǤ顢ѥɤѹ򤪤ᤷޤѥɤϡȤ˥󤷤ơ֥桼פ򥯥åѹǤޤ',
     15 => "{$_CONF['site_name']} ǻѤ뤢ʤΥȤޤΥȤȤˤϡΥ桼̾ȥѥɤǥ󤷤ƤǰΤᡢΥ᡼¸ƤƤ",
-    16 => 'Ⱦ',
+    16 => '桼',
     17 => 'Ȥޤ',
     18 => 'Υ᡼륢ɥ쥹ϡͭʥɥ쥹ǤϤʤ褦Ǥ',
     19 => '桼̾᡼륢ɥ쥹Ǥ˻ȤƤޤ',
     20 => 'Υ᡼륢ɥ쥹ϡͭʥɥ쥹ǤϤʤ褦Ǥ',
     21 => '顼',
     22 => "{$_CONF['site_name']}ΥȤ",
-    23 => "{$_CONF['site_name']}˥ȤȡȤ䵭ƤʤܥȤεǽե˻Ѥ뤳ȤǤޤȤʤХȥ桼ȤƤƤǤޤ󡣤ޤϿ줿᡼륢ɥ쥹ФɽޤΤǤ¿",
-    24 => 'ѥɤϡϤ줿᡼륢ɥ쥹ޤ',
-    25 => 'ѥɤʬʤͤϤ顣',
-    26 => 'Ͽ˻Ѥ桼̾<em>ޤ</em>᡼륢ɥ쥹Ϥơ֥ѥפ򥯥åƤѥɤꤹˡϿƤ᡼륢ɥ쥹Ƥޤ',
+    23 => "{$_CONF['site_name']}˥ȤȡȤ䵭ƤʤܥȤεǽե˻Ѥ뤳ȤǤޤȤʤХȥ桼ȤƤƤǤޤ󡣤ޤϿ줿᡼륢ɥ쥹ФɽޤΤǤ¿桼̾ϡȾѡѤɤǤǤޤ",
+    24 => 'ѥɤϡϤ줿᡼륢ɥ쥹ޤ',
+    25 => 'ѥɤ狼ʤϤ顣',
+    26 => 'Ͽ˻Ѥ桼̾ޤϥ᡼륢ɥ쥹Τɤ餫Ϥơ֥ѥפ򥯥åƤѥɤꤹˡϿƤ᡼륢ɥ쥹Ƥޤ',
     27 => 'Ȥκ',
     28 => 'ѥ',
     29 => 'Ȥޤ',
@@ -270,7 +260,7 @@
     42 => 'դΥեޥå',
     43 => 'ɽ뵭ο',
     44 => 'ܥåɽʤ',
-    45 => 'ɽꡧ',
+    45 => 'ꡧ',
     46 => 'Υƥ',
     47 => '˥塼ܥåꡧ',
     48 => '',
@@ -290,20 +280,20 @@
     62 => 'ͤ100Ǥ',
     63 => "ѥɤ᡼ޤΤǡޤʤϤϤǤåˡ񤫤ƤޤΤǡͤˤƤ{$_CONF['site_name']}ѤƤ꤬Ȥޤ",
     64 => 'Ȥꡧ',
-    65 => 'ľƸƤ',
-    66 => 'ץߥä褦Ǥ⤦٥󤷤ƤߤƤѥɤʬʤСѥɤȯԤޤΤǡΥե˵Ƥ',
-    67 => '',
+    65 => '󤷤Ƥ',
+    66 => '',
+    67 => 'Ͽ',
     68 => 'ǧڤ¸',
     69 => 'ä󤷤塢ɤΤ餤ĤƤФǤ',
     70 => "{$_CONF['site_name']}ɽƤ",
     71 => "{$_CONF['site_name']}ħȤơɽ뵭ΥơޤɽͳѤ뤳ȤǤޤΤˤϡޤ{$_CONF['site_name']}<a href=\"{$_CONF['site_url']}/users.php?mode=new\">桼Ͽ</a>ɬפޤ⤷ǤϿѤߤʤкΥեѤƥ󤷤Ƥ",
     72 => 'ơ',
     73 => '',
-    74 => 'ΥȤγѹƤߤ褦',
-    75 => '᡼ޤ衧',
+    74 => 'ΥȤΥǥѹ',
+    75 => '᡼ޤ衧',
     76 => 'ΥꥹȤ򤹤СνƤ᡼Ǽ뤳ȤǤޤ̣Τ򤹤褦ˤƤ',
     77 => '̿',
-    78 => 'ʬȤμ̿ɲä褦',
+    78 => 'ʬȤμ̿ɲ',
     79 => '̿硢åƤ',
     80 => '',
     81 => '᡼',
@@ -320,10 +310,10 @@
     92 => 'ѥɤ',
     93 => 'ľΥѥѹ׵ϡ%dǤΥȤǤϡѹδ֤%dԤɬפޤ',
     94 => 'ȡ"%s"ˤ',
-    95 => 'ǡ١饢Ȥˤϡ"Ȥκ" ܥ򲡤ƤʤΥ̾Ƥ줿䥳Ȥ<strong>ޤ</strong>Τǡդε䥳Ȥ"ȥ桼"ˤäƤ줿ΤȤɽޤ',
-    96 => 'Ȥ',
+    95 => 'ǡ١饢Ȥˤϡ"Ⱥ" ܥ򲡤ƤʤΥ̾Ƥ줿䥳Ȥ<strong>ޤ</strong>Τǡդε䥳Ȥ"ȥ桼"ˤäƤ줿ΤȤɽޤ',
+    96 => 'Ⱥ',
     97 => 'Ⱥγǧ',
-    98 => '˥ȤޤƤޤСΥȤ˿Ȥʤ¤ꡢǤʤʤޤС⤦"Ȥκ"ܥ򲡤Ƥ',
+    98 => '˥ȤޤȡΥȤ˿Ȥʤ¤ꡢǤʤʤޤС⤦"Ⱥ"ܥ򥯥åƤ',
     99 => 'ץ饤Хץ',
     100 => 'ԤΥ᡼',
     101 => 'ȴԤΥ᡼',
@@ -344,11 +334,44 @@
     116 => 'ȤͭˤʤΤԵƤޤ',
     117 => 'ʤΥȤϴԤͭˤΤԤäƤޤԤǧޤǥǤޤ',
     118 => "{$_CONF['site_name']} ΤʤΥȤͭˤʤޤʲΥ󥯤顢ʤΥ桼̾(<username>)ȥ᡼ƤѥɤǥǤޤ",
-    119 => "ѥɤ˺ƤޤäƤСʲΥ󥯤鿷ѥɤǤޤ",
+    119 => 'ѥɤ˺줿硢ʲΥ󥯤鿷ѥɤǤޤ',
     120 => 'Ȥͭˤʤޤ',
     121 => 'ӥ',
-    122 => '桼οϿǤʤ',
-    123 => "<a href=\"{$_CONF['site_url']}/users.php?mode=new\">Ͽ</a>"
+    122 => 'ޤ󤬡桼οϿǤ',
+    123 => "<a href=\"{$_CONF['site_url']}/users.php?mode=new\">Ͽ</a>",
+    124 => 'ʳǧ E᡼',
+    125 => 'ξƱE᡼ϤƤ',
+    126 => 'ǧΤƱΤ򷫤֤ϤƤ',
+    127 => 'ѹˤϡߤΥѥɤϤɬפޤ',
+    128 => '̾',
+    129 => 'ѥɤE᡼',
+    130 => 'Ŀ;',
+    131 => 'Υǥץ',
+    132 => 'Υǵǽ',
+    133 => 'ɽ',
+    134 => 'ȥץ',
+    135 => '<li>ǥեȤΥɽˡ</li><li>ȤɽǥեȤν</li><li>ɽ륳ȤκꤷƤǥեȤ 100Ǥ</li>',
+    136 => 'ƼԤν',
+    137 => 'Υե륿',
+    138 => '¾',
+    139 => '쥤Ȥȸ',
+    140 => '<li>̥ɽפåȡ̥ɽʤʤޤ</li><li>֥ܥåɽפåȡѥ˥塼桼ѥ˥塼ꤷɽʤʤޤ<li>1ڡɽ뵭κꤷƤ</li><li>ơޤȹߤեեޥåȤꤷƤ</li>',
+    141 => 'ץ饤Х',
+    142 => 'ǥեȤǤϡ¾Υ桼ԤʤE᡼뤳ȤǤ饤󤫤ɤɽ褦ˤʤäƤޤץ饤Хݸˤϡб륪ץΥå򳰤Ƥ',
+    143 => '֥åΥե륿',
+    144 => '֥åɽɽ',
+    145 => 'ץե',
+    146 => 'ѥɤE᡼',
+    147 => 'ѥɡE᡼롢ưǽԽޤѥɤE᡼ϳǧΤᡢ2Ϥɬפޤ',
+    148 => 'Ŀ;',
+    149 => '¾Υ桼ˤɤĿ;Խޤ<li>֥פϥȤǼĤƤղäޤ</li><li>ּʾҲפ¾Υ桼ˤɤûʾҲǤ</li><li> PGPפޤ礦</li>',
+    150 => 'ٹ: ΤˡJavascript򥪥ˤ뤳Ȥ򤪴ᤷޤ',
+    151 => 'ץӥ塼',
+    152 => '桼̾ȥѥ',
+    153 => '쥤Ȥȸ',
+    154 => 'ƥ',
+    155 => 'ץ饤Х',
+    156 => 'Ⱥ'
 );
 
 ###############################################################################
@@ -359,8 +382,8 @@
     2 => 'ɽ뵭Ϥޤ󡣤Υơޤ˴ؤƤʤΤɽʤ᤮ʤΤΤɤ餫Ǥ',
     3 => ' %s ˴ؤ',
     4 => 'ܵ',
-    5 => '',
-    6 => '',
+    5 => '',
+    6 => '',
     7 => 'ǽ',
     8 => 'Ǹ'
 );
@@ -371,30 +394,30 @@
 $LANG08 = array(
     1 => 'åݤ˥顼ȯޤ⤦ٻƤ',
     2 => 'åޤ',
-    3 => 'ֿe-mailɥ쥹Ƥޤ',
-    4 => 'ֿ̾衢ȥ롢ƤƤ',
+    3 => 'E-mailE-mailɥ쥹ϤƤޤ',
+    4 => '̾E-mail̾Ƥ򤹤٤ϤƤ',
     5 => '桼Ϥޤ',
     6 => '顼ȯޤ',
     7 => '桼',
     8 => '̾',
     9 => 'URL',
     10 => '᡼ΰ',
-    11 => 'ʤ̾:',
-    12 => 'ֿ:',
-    13 => 'ȥ:',
+    11 => '̾:',
+    12 => 'E-mail:',
+    13 => '̾:',
     14 => ':',
-    15 => 'HTMLѴޤ',
+    15 => '',
     16 => '',
     17 => 'ͧã˵',
     18 => '',
     19 => 'E-mailɥ쥹',
-    20 => 'ʤ̾',
-    21 => 'ʤE-mailɥ쥹',
+    20 => '̾',
+    21 => 'E-mail',
     22 => '٤ƤιܤƤ',
     23 => "Υ᡼ϡ%s {$_CONF['site_url']}εǡʤΤ餻Ȼפäᡢ%s Υɥ쥹ޤϤǡSPAM˥᡼ǤϤޤ󤷡˻Ѥ줿ɥ쥹¾Ū˻Ѥ뤳Ȥ⤢ޤ",
     24 => 'ε˴ؤ륳ȤϼξǤǤޤ',
     25 => 'εǽѤ뤿ˤϥ󤷤Ƥ',
-    26 => 'ΥեоݤΥ桼˥᡼뤿ΤΤʤΤǡ٤ƤιܤϤƤ',
+    26 => 'ΥեоݤΥ桼˥᡼ޤ',
     27 => 'å',
     28 => '%s 󤫤Υå: ',
     29 => "{$_CONF['site_name']} ˴ؤȤǤ衧",
@@ -414,9 +437,9 @@
     2 => '',
     3 => '',
     4 => '٤',
-    5 => '',
-    6 => 'ο',
-    7 => 'ȿ',
+    5 => '',
+    6 => '',
+    7 => '',
     8 => '桼',
     9 => '٤',
     10 => '',
@@ -439,28 +462,28 @@
     27 => '',
     28 => '뵭ȤϸĤޤǤ',
     29 => 'Ȥθ̡',
-    30 => '󥯤ϸĤޤǤ',
+    30 => '',
     31 => 'ץ饰󤫤ϳΤ򸫤ĤޤǤ',
-    32 => '٥',
+    32 => '',
     33 => 'URL',
     34 => '',
     35 => '',
-    36 => '륤٥ȤϸĤޤǤ',
-    37 => '٥Ȥθ',
-    38 => '󥯤θ',
-    39 => '',
-    40 => '٥',
+    36 => '',
+    37 => '',
+    38 => '',
+    39 => '',
+    40 => '',
     41 => 'ʸϣʸʾɬפǤ',
     42 => 'դν񼰤ϡYYYY-MM-DDǯ--ˤȤƤ',
     43 => 'Τʸ',
-    44 => '줫ޤ',
-    45 => '٤Ƥޤ',
+    44 => '٤ƴޤ',
+    45 => '줫ޤ',
     46 => '',
     47 => '',
-    48 => '',
+    48 => 'ͭ',
     49 => '',
     50 => '',
-    51 => '',
+    51 => '',
     52 => '',
     53 => 'θ',
     54 => 'Ȥθ',
@@ -481,9 +504,9 @@
     1 => 'Ȥ˴ؤ',
     2 => 'ƥΤΥ',
     3 => 'ʥȡˤο',
-    4 => 'ɼʲˤο',
-    5 => '󥯡ʥåˤο',
-    6 => 'ͽο',
+    4 => '',
+    5 => '',
+    6 => '',
     7 => 'äȤ⻲ȿ¿äʾ10',
     8 => 'Υȥ',
     9 => '',
@@ -498,17 +521,17 @@
     18 => '󥯡ʾ10',
     19 => 'ȥ',
     20 => '',
-    21 => 'ΥȤˤϥ󥯤Ĥʤ󥯤򥯥åͤͤ⤤ʤΤΤɤ餫Ȼפޤ',
+    21 => '',
     22 => 'Ҳ¿ʾ10',
     23 => '',
     24 => 'ͧã˾Ҳ𤵤줿Ϥʤ褦Ǥ',
     25 => 'ȥåХå¿ʾ10',
     26 => 'ȥåХåϤޤ',
     27 => 'Ͽ桼ο',
-    28 => '٥ȡʾ̣',
-    29 => '٥',
+    28 => '',
+    29 => '',
     30 => 'ҥå',
-    31 => '٥ȤϿƤʤޤåƤޤ'
+    31 => ''
 );
 
 ###############################################################################
@@ -529,14 +552,14 @@
     1 => ' %s Ƥ뤿ˤϥ󤷤Ƥɬפޤ',
     2 => '',
     3 => 'Ͽ',
-    4 => 'ͽ',
-    5 => '󥯤',
+    4 => '',
+    5 => '',
     6 => '',
     7 => 'ɬפǤ',
     8 => '',
     9 => 'ΥȤ˾ƤݤˤϡΥ롼äƤ<ul><li>ɬפȤ뤹٤ƤιܤƤ<li>Τɬ׽ʬʾ󶡤Ƥ<li>URLˤĤƤäդƳǧƤ</ul>',
     10 => 'ȥ',
-    11 => '',
+    11 => '',
     12 => '',
     13 => 'λ',
     14 => '',
@@ -562,20 +585,20 @@
     34 => '',
     35 => 'HTMLϻѤǤޤ',
     36 => 'ƥ⡼',
-    37 => "{$_CONF['site_name']}˥٥ȤƤȡΤΥϿޤϿ줿٥Ȥϳƥ桼ɬפ˱ƸĿŪʥϿޤĤޤꡢǽϡ䵭ǰʤɤʤθĿŪʥ塼ĢȤƻȤ뤳ȤꤷƤΤǤ<b>ޤ</b><br><br>٥ȤƤԤǧ硢٥ȤϥΤΥɽƤޤޤ",
-    38 => 'ͽɲáɲ衧',
-    39 => 'Υ',
-    40 => 'Ŀͥ',
-    41 => 'λ',
-    42 => '',
-    43 => 'ͽ',
-    44 => '(1)',
-    45 => '(2)',
-    46 => 'Ի̾',
+    37 => '',
+    38 => '٥Ȥɲ',
+    39 => '',
+    40 => '',
+    41 => '',
+    42 => '',
+    43 => '',
+    44 => '1',
+    45 => '2',
+    46 => 'Į¼̾',
     47 => 'ƻܸ',
     48 => '͹ֹ',
-    49 => 'ͽμ',
-    50 => 'ͽμԽ',
+    49 => '',
+    50 => '',
     51 => '',
     52 => '',
     53 => 'Ⱥ'
@@ -613,13 +636,13 @@
     9 => '֥åν',
     10 => '֥åμ',
     11 => 'ݡ֥å',
-    12 => 'դĤΥ֥å',
+    12 => 'Ρޥ֥å',
     13 => 'ݡ֥åΥץ',
     14 => 'RDF URL',
     15 => 'RDFι',
-    16 => 'դĤΥ֥åΥץ',
-    17 => '֥å',
-    18 => '֥åΥȥ롦ƥ٥롦ȤƤ',
+    16 => 'Ρޥ֥åΥץ',
+    17 => 'ƥ',
+    18 => '֥åΥȥ롦ƥ٥롦ƥĤƤ',
     19 => '֥åδ',
     20 => 'ȥ',
     21 => 'ƥ',
@@ -631,7 +654,7 @@
     27 => 'PHP֥å',
     28 => 'PHP֥åΥץ',
     29 => 'ؿ',
-    30 => 'PHPɤѤ֥åȤ硢phpblock_e.g. phpblock_getweatherˤǤϤޤPHPδؿ̾˵ƤphpblockǤϤޤäƤʤ硢ؿϸƤӽФޤ󡣤ϡդä桼Ȥͭʴؿ뤳Ȥ򤱤뤿ǤؿθΡʡˤפǤPHP֥åΥɤϡ/path/to/geeklog/system/lib-custom.php˵ƤȡGeeklog򥢥åץ졼ɤƤѤ³뤳ȤǤޤ',
+    30 => 'PHPɤѤ֥åȤ硢phpblock_ phpblock_getweatherˤǤϤޤPHPδؿ̾˵ƤphpblockǤϤޤäƤʤ硢ؿϸƤӽФޤ󡣤ϡդä桼Ȥͭʴؿ뤳Ȥ򤱤뤿ǤؿθΡʡˤפǤPHP֥åΥɤϡ/path/to/geeklog/system/lib-custom.php˵ƤȡGeeklog򥢥åץ졼ɤƤѤ³뤳ȤǤޤ',
     31 => 'PHP֥å˥顼ޤ%s¸ߤޤ',
     32 => '顼̤ιܤޤ',
     33 => 'ݡ֥å.rdfեˤURLƤɬפޤ',
@@ -639,12 +662,12 @@
     35 => '̤Υ֥åˤϥȥƤƤ',
     36 => '쥤ѥ֥åˤƤƤ',
     37 => 'PHP֥åδؿ̾ŬڤǤ',
-    38 => 'PHP֥åδؿ̾ϡ\'phpblock_\' (e.g. phpblock_getweather)ǤϤޤäƤɬפޤ\'phpblock_\'ϡƥθ̤ǤΤǤϤ',
+    38 => 'PHP֥åδؿ̾ϡ\'phpblock_\' ( phpblock_getweather)ǤϤޤäƤɬפޤ\'phpblock_\'ϡƥθ̤ǤΤǤϤ',
     39 => 'ɽ',
     40 => '',
     41 => '',
     42 => '֥åɽȥƥ٥ϤƤ',
-    43 => 'ȥåץڡΤ',
+    43 => 'ۡڡΤ',
     44 => 'ݤޤ',
     45 => "¤Τʤ֥åԽ褦Ȥޤι԰٤ϵϿޤ<a href=\"{$_CONF['site_admin_url']}/block.php\">֥åԽ</a>̤äƤ.",
     46 => '֥å',
@@ -666,43 +689,9 @@
     62 => 'ɽArticle Limits',
     63 => '֥åΥȥ뤬ŬڤǤ',
     64 => 'ȥ϶ǤϤޤ󤷡HTMLޤǤ⤤ޤ',
-    65 => ''
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'ͽԽ',
-    2 => '顼',
-    3 => 'ƥ⡼',
-    4 => 'ϢURL',
-    5 => '',
-    6 => 'λ',
-    7 => '',
-    8 => 'ͽ',
-    9 => '(http://ϤƤ)',
-    10 => '٥Ȥա֡ȥ롢ܺ٤Ƥ',
-    11 => 'ͽ',
-    12 => 'ͽԽϡͽ̾򥯥åƤͽ硢Ρֿͽפ򥯥åƤԡϡCפ򥯥åƤ',
-    13 => 'ͽ̾',
-    14 => '',
-    15 => 'λ',
-    16 => 'ݤޤ',
-    17 => "¤ΤʤͽԽ褦Ȥޤι԰٤ϵϿȤƻĤޤ<a href=\"{$_CONF['site_admin_url']}/event.php\">ͽԽ</a>äƤ.",
-    18 => 'ͽ',
-    19 => '',
-    20 => '¸',
-    21 => '',
-    22 => '',
-    23 => 'Ǥ',
-    24 => 'λǤ',
-    25 => 'λǤ',
-    26 => 'Ͽ',
-    27 => '1ڡɽ',
-    28 => '',
-    29 => 'Խ',
-    30 => 'ԡ'
+    65 => '',
+    66 => 'ȥ',
+    67 => 'ȥå'
 );
 
 ###############################################################################
@@ -724,19 +713,19 @@
     13 => '',
     14 => '',
     15 => '',
-    16 => '',
-    17 => 'ơʾܺ١',
+    16 => 'Ƭʸ',
+    17 => 'ʸ',
     18 => '',
     19 => 'ȿ',
     20 => 'Pingο',
     21 => 'Ping',
-    22 => 'ΰ',
+    22 => '',
     23 => 'Խˤϡֹ򥯥å뤳ȡ򸫤ˤϡΥȥ򥯥å롣ϡֿפ򥯥å뤳ȡ',
     24 => 'ꤷIDϤǤ˻ȤƤޤ̤IDƤߤƤ',
     25 => 'Ͽ˥顼ޤ',
     26 => 'Υץӥ塼',
-    27 => '[unscaledX][imageX]˻ȤȡϥꥸʥΥɽޤ',
-    28 => '<p><b>ץӥ塼</b>: դεץӥ塼硢ץӥ塼ܥ򲡤⡢öɥեȤȤ¸뤳Ȥ򤪴ᤷޤץӥ塼ܥϲʤˤȤäƤ',
+    27 => '<p>[unscaledX][imageX]˻ȤȡϥꥸʥΥɽޤ</p>',
+    28 => '<b>ץӥ塼</b>: դεץӥ塼硢ץӥ塼ܥ򲡤⡢öɥեȤȤ¸뤳Ȥ򤪴ᤷޤץӥ塼ܥϲʤˤȤäƤ</p>',
     29 => 'ȥååХå',
     30 => 'եΥåץɻ˥顼ȯޤ',
     31 => 'ȥȺǽʬƤ',
@@ -746,7 +735,7 @@
     35 => 'Ϥ',
     36 => '',
     37 => 'ƱƼԤơ',
-    38 => 'Ʊƥꡧ',
+    38 => 'Ʊꡧ',
     39 => 'Ҳ𤵤줿',
     40 => '',
     41 => "¤ΤʤԽ褦Ȥޤι԰٤ϵϿޤεɤߤȤѤǤɤ߽ä顢<a href=\"{$_CONF['site_admin_url']}/story.php\">Խ</a>äƤ",
@@ -754,17 +743,17 @@
     43 => '',
     44 => '',
     45 => '',
-    46 => '<b>:</b> դդѹȡޤɽޤ󡣤ޤRDFإåɥ饤ˤȿǤޤ󤷡䥵ȾˤȿǤʤȤդƤ',
+    46 => '<b>:</b> դդѹȡޤɽޤ󡣤ޤRDFإåɥ饤ˤȿǤޤ󤷡䥵ȾˤȿǤޤ',
     47 => 'image',
     48 => 'image',
     49 => 'right',
     50 => 'left',
-    51 => 'źդ򵭻ɽ뤿ˤϡ̤ʽ񼰤ɬפǤ񼰤ϡ[imageX][imageX_right]뤤ϡ[imageX_left]Τ줫ǤXźդֹǤաźդϵǻѤʤе¸Ǥޤ<BR><P><B>ץӥ塼</B>: դεϥɥեȡʲ񤭡ˤȤ¸ƱƤץӥ塼ܥϲ̵˻ѤƤ',
+    51 => '<p>źդ򵭻ɽ뤿ˤϡ̤ʽ񼰤ɬפǤ񼰤ϡ[imageX][imageX_right]뤤ϡ[imageX_left]Τ줫ǤXźդֹǤաźդϵǻѤʤе¸Ǥޤ<BR><P><B>ץӥ塼</B>: դεϥɥեȡʲ񤭡ˤȤ¸ƱƤץӥ塼ܥϲ̵˻ѤƤ</p>',
     52 => '',
     53 => 'ϻѤƤޤ¸ʸܺ˲ѤʤФʤޤ',
     54 => 'źդ줿ϻѤƤޤ',
     55 => '¸ݤ˲Υ顼ȯޤ¸˽Ƥ',
-    56 => 'ѤΥɽ',
+    56 => 'ꥢɽ',
     57 => 'Υβɽ',
     58 => 'δ',
     59 => 'ץ',
@@ -784,26 +773,28 @@
     73 => 'ĥġС',
     74 => 'ĥġСΣ',
     75 => 'ǽ',
-    76 => 'ѥץ',
-    77 => 'Advanced EditorȤˤϡJavascriptȤ褦ˤʤäƤɬפޤΥץconfig.php̵ˤǤޤ ',
-    78 => '̾ΥǥȤˤϡ<a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default"></a> 򥯥åƤ',
+    76 => 'ץ',
+    77 => 'ɥХ󥹥ȥǥѤϡ֥饦JavaScriptȤĶˤɬפޤΥץconfig.php̵ˤǤޤ ',
+    78 => '<a href="%s/story.php?mode=edit&sid=%s&editopt=default">̾ΥǥȤ</a>',
     79 => 'ץӥ塼',
     80 => 'ǥ',
-    81 => 'ѥץ',
+    81 => 'ץ',
     82 => '',
-    83 => '¸ѥץ',
-    84 => 'Ѹ',
-    85 => '٤ɽ'
+    83 => '¸ץ',
+    84 => 'ѡߥå',
+    85 => 'ɽ',
+    86 => 'ɥХ󥹥ȥǥ',
+    87 => 'ξ'
 );
 
 ###############################################################################
 # admin/topic.php
 
 $LANG27 = array(
-    1 => 'Խ',
+    1 => 'ʵƥˤԽ',
     2 => 'ID',
     3 => '̾',
-    4 => 'Ѳ',
+    4 => 'ꥢե',
     5 => '(ڡޤޤʤ)',
     6 => 'ȡϢ֥å⤹٤ƺޤ',
     7 => 'ID̾Ƥ',
@@ -824,9 +815,9 @@
     22 => 'ǥե',
     23 => '򿷵ƤκݤΥǥեȤˤޤ',
     24 => '(*)',
-    25 => '򰵽',
-    26 => '򵭻ΥǥեȤˤ롣ǥեȤϰĤǤޤ',
-    27 => 'ޤϡѥ򥢥åץ',
+    25 => '',
+    26 => '򰵽̤ޤ',
+    27 => 'ꥢ󥢥åץ',
     28 => '',
     29 => 'ե륢åץɻ˥顼'
 );
@@ -846,7 +837,7 @@
     9 => '(ڡޤޤʤ)',
     10 => '桼̾᡼륢ɥ쥹Ƥ',
     11 => '桼',
-    12 => '桼ѹϥ桼̾Υ򥯥åƤ桼ϡΡֿץܥ򥯥åƤΥեȤС桼̾᡼륢ɥ쥹̾ˤĤñʬǽǤ㡧*ġ**',
+    12 => '桼ѹϥ桼̾Υ򥯥åƤ桼ϡΡֿץܥ򥯥åƤ',
     13 => 'ƥ',
     14 => 'Ͽ',
     15 => '桼',
@@ -870,18 +861,47 @@
     33 => '',
     34 => '顼ϿեꤷƤ',
     35 => 'ǸΥ',
-    36 => '(̤)',
-    37 => '桼ID',
+    36 => '٤󤷤Ƥʤ',
+    37 => 'ID',
     38 => '롼װ',
     39 => 'ѥ ()',
     40 => 'Ͽ',
-    41 => 'ǽ',
-    42 => '̵',
-    43 => '桼ΥԤ',
-    44 => 'ԤξǧԤ',
+    41 => 'ǽ',
+    42 => 'ػ',
+    43 => 'ͭˤʤΤԵ',
+    44 => 'ǧΤԵ',
     45 => 'ͭ',
     46 => '桼ξ',
-    47 => 'Խ'
+    47 => 'Խ',
+    48 => 'ԥ롼פɽ',
+    49 => 'ԥ롼',
+    50 => 'Υ롼פԥ롼פȤƥե륿󥰤ˤϡåƤ',
+    51 => '饤',
+    52 => '<br>: ֥饤֡פȤϡǽ˥ȤϿƤ󤷤ޤǤǤ',
+    53 => 'ϿѤ',
+    54 => '',
+    55 => 'config.php <code>$_CONF[\'lastlogin\'] = true;</code> ȤƤ礷εǽƯޤ',
+    56 => '桼μ򤷤ơ֥ꥹȹפ򥯥åƤˡʤ桼Υå򳰤Ƥ顢ֺפ򥯥åƤΥꥹȤڡޤäƿӤƤ硢ɽƤ桼ʤȤˤդ',
+    57 => 'ͩ桼',
+    58 => 'Ū桼',
+    59 => 'ĤƤΥ桼',
+    60 => '',
+    61 => 'Ͽ٤󤷤Ƥʤ桼',
+    62 => '',
+    63 => 'Ͽơ줫24ְ˥󤷤٤äƤƥ󤷤Ƥʤ桼',
+    64 => 'ñ ',
+    65 => '֡Ȥˬ䤷Ƥʤ̤Υ桼',
+    66 => 'ꥹȤ򹹿',
+    67 => 'ϿƤ鲿ФĤ',
+    68 => '饤',
+    69 => 'ե饤',
+    70 => 'ǤޤǤ',
+    71 => 'Ⱥޤ',
+    72 => '桼򤵤Ƥޤ',
+    73 => '򤷤桼򤹤٤ƺƤ褤Ǥʸ᤻ޤˡ',
+    74 => 'ǶΥ桼',
+    75 => 'Ƕ ',
+    76 => ' δ֤Ͽ桼'
 );
 
 ###############################################################################
@@ -895,7 +915,7 @@
     10 => 'ȥ',
     11 => '',
     12 => 'URL',
-    13 => 'ƥ꡼',
+    13 => '',
     14 => '',
     15 => '',
     16 => '桼̾',
@@ -904,67 +924,20 @@
     34 => 'Ƥδ',
     35 => '',
     36 => '󥯤',
-    37 => 'ͽ',
+    37 => '',
     38 => 'Ͽ',
     39 => 'ǧ٤ƤϤʤǤ',
     40 => '桼Ͽο'
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => '',
-    2 => '',
-    3 => '',
-    4 => '',
-    5 => '',
-    6 => '',
-    7 => '',
-    8 => 'ͽɲ',
-    9 => '%s˴Ϣͽ',
-    10 => 'Ŀͽꡧ',
-    11 => 'ΤΥ',
-    12 => 'Ŀѥ',
-    13 => '',
-    14 => '',
-    15 => '',
-    16 => '',
-    17 => '',
-    18 => '',
-    19 => '',
-    20 => '',
-    21 => '',
-    22 => '',
-    23 => '',
-    24 => '',
-    25 => '롧 ',
-    26 => '',
-    27 => '',
-    28 => 'Ŀѥ',
-    29 => 'ѥ',
-    30 => 'ͽκ',
-    31 => 'ɲ',
-    32 => 'ͽ',
-    33 => '',
-    34 => '',
-    35 => 'ɲáʴʰǡ',
-    36 => 'Ͽ',
-    37 => 'ܥȤǤϸĿѥѤǤޤ',
-    38 => 'ĿͽԽ',
-    39 => '',
-    40 => '',
-    41 => ''
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
-    1 => '롼פ˥᡼',
-    2 => '',
+    1 => '롼ץ᡼',
+    2 => '̾',
     3 => 'ֿ',
-    4 => 'ȥ',
+    4 => '̾',
     5 => '',
     6 => '衧',
     7 => '٤ƤΥ桼',
@@ -974,12 +947,12 @@
     11 => '۵ޡ',
     12 => '',
     13 => 'Ϥľ',
-    14 => '桼̵뤷',
+    14 => '桼μ̵뤷',
     15 => '˥顼ȯ衧 ',
     16 => 'åλޤ衧',
     17 => "<a href={$_CONF['site_admin_url']}/mail.php>¾Υå</a>",
-    18 => 'To',
-    19 => 'NOTE: ȤϿ˥᡼ˤϡɥåץꥹȤLogged-in Usersפ򤷤Ƥ',
+    18 => '',
+    19 => '­: ȤϿ˥᡼ˤϡɥåץꥹȤLogged-in Usersפ򤷤Ƥ',
     20 => "<successcount> Υå<failcount> ΥåˤϼԤޤ̤Υå֤ϼΤȤǤ<a href=\"{$_CONF['site_admin_url']}/mail.php\">̤Υå</a>뤫<a href=\"{$_CONF['site_admin_url']}/moderation.php\">̤</a>ȤǤޤ",
     21 => '',
     22 => '',
@@ -1046,7 +1019,7 @@
     12 => '',
     13 => 'եɤϡȥ뺸Υ򥯥åƤեɤϡֿեɡפ򥯥åƤ',
     14 => 'ȥ',
-    15 => '',
+    15 => '',
     16 => 'ե̾',
     17 => 'եޥå',
     18 => '',
@@ -1059,39 +1032,41 @@
     25 => 'եɤΥȥ',
     26 => 'ۿ',
     27 => 'ȥĹ',
-    28 => '(0 = ʸʤ, 1 = ʸ٤, other = ꤷʸ¡)',
+    28 => '(0 = ʸʤ, 1 = ʸ, other = ꤷʸ¡)',
     29 => 'ܺ',
     30 => '',
     31 => 'ʸ',
     32 => '',
-    33 => 'ƥ',
+    33 => '',
     34 => '',
     35 => 'ְ',
-    36 => 'եɤμ̤򤷤Ƥ',
+    36 => 'եɤΥפ򤷤Ƥ',
     37 => 'RSSۿͭˤ뤿ˤϡطץ饰򾯤ʤȤĥ󥹥ȡ뤷ƤƲʲǤϡGeeklogΥեɤΤץ饰ǼեɤΤ򤷤Ƥ',
     38 => '顼: ϤƤʤܤޤ',
     39 => 'եɤΥȥ롢ܺ١ե̾ϤƤ',
     40 => 'ȥޤϡ֤ϤƤ',
     41 => '',
-    42 => '٥',
+    42 => '',
     43 => '٤',
     44 => 'ʤ',
-    45 => 'Υȥ󥯤',
+    45 => 'إå󥯤',
     46 => 'ɽ',
     47 => '',
     48 => 'Խ',
     49 => '',
-    50 => "ܥȤURL ({$_CONF['site_url']})"
+    50 => "ܥȤURL ({$_CONF['site_url']})",
+    51 => '򤷤ե̾¾ΥեɤǻѤƤޤ̤̾ˤƤ',
+    52 => '顼: Υե̾ϴ˻ѤƤޤ'
 );
 
 ###############################################################################
 # confirmation and error messages
 
 $MESSAGE = array(
-    1 => "ѥɤ᡼ޤΤǳǧƤˡϥ᡼򻲾ȤƤ줫顢{$_CONF['site_name']}ȤäƤƤ꤬Ȥ",
-    2 => "{$_CONF['site_name']} ˵ƤƤƤ꤬Ȥϥåդ줿ΤǡǧФ˥Ȥ˷Ǻܤޤ",
-    3 => "{$_CONF['site_name']} ˤ᥵ȤƤƤƤ꤬Ȥ󥯤ϥåդ줿ΤǡǧФ<a href={$_CONF['site_url']}/links.php></a> ˷Ǻܤޤ",
-    4 => "{$_CONF['site_name']} ͽƤƤƤ꤬Ȥͽϥåդ줿ΤǡǧФ<a href={$_CONF['site_url']}/calendar.php></a> ˷Ǻܤޤ",
+    1 => "ѥɤ᡼ޤΤǳǧƤˡϥ᡼򻲾ȤƤ{$_CONF['site_name']}",
+    2 => "{$_CONF['site_name']} ˵ƤƤƤ꤬ȤޤϥåդΤޤǧФ˥Ȥ˷Ǻܤޤ",
+    3 => '',
+    4 => '',
     5 => 'ȾѹȿǤޤ',
     6 => 'ɽ¸ޤ',
     7 => 'ȤѹȿǤޤ',
@@ -1104,26 +1079,26 @@
     14 => 'Ȥ˴ޤޤ뤹٤Ƥεȥ֥åޤ',
     15 => '󥯤ѹȿǤޤ',
     16 => '󥯤ޤ',
-    17 => 'ͽѹȿǤޤ',
-    18 => 'ͽޤ',
-    19 => 'ɼѹȿǤޤ',
-    20 => 'ɼޤ',
-    21 => '桼ޤ',
+    17 => '',
+    18 => '',
+    19 => '',
+    20 => '',
+    21 => '桼¸ޤ',
     22 => '桼ޤ',
-    23 => 'ͽɣĤʤäᡢͽɲäǤޤǤ',
-    24 => 'ͽѹ򥫥ȿǤޤ',
-    25 => '󤷤ʤȸĿѥɽǤޤ',
-    26 => 'ͽĿͥޤ',
+    23 => '',
+    24 => '',
+    25 => '',
+    26 => '',
     27 => 'åޤ',
     28 => 'ץ饰¸ޤ',
-    29 => 'ܥȤǤϸĿѥϻѤǤޤ',
+    29 => '',
     30 => 'ݤޤ',
     31 => 'Ѳ̤ؤΥޤ󡣴¤ΤʤؤΥϤ٤ƵϿޤ',
     32 => 'Ѳ̤ؤΥޤ󡣴¤ΤʤؤΥϤ٤ƵϿޤ',
     33 => '֥åԽѲ̤ؤΥޤ󡣴¤ΤʤؤΥϤ٤ƵϿޤ',
-    34 => '󥯴Ѳ̤ؤΥޤ󡣴¤ΤʤؤΥϤ٤ƵϿޤ',
-    35 => 'ͽѲ̤ؤΥޤ󡣴¤ΤʤؤΥϤ٤ƵϿޤ',
-    36 => 'ɼѲ̤ؤΥޤ󡣴¤ΤʤؤΥϤ٤ƵϿޤ',
+    34 => '',
+    35 => '',
+    36 => '',
     37 => '桼Ѳ̤ؤΥޤ󡣴¤ΤʤؤΥϤ٤ƵϿޤ',
     38 => 'ץ饰Ѳ̤ؤΥޤ󡣴¤ΤʤؤΥϤ٤ƵϿޤ',
     39 => '᡼Ѳ̤ؤΥޤ󡣴¤ΤʤؤΥϤ٤ƵϿޤ',
@@ -1135,7 +1110,7 @@
     45 => 'ץ饰ޤ',
     46 => 'ǡ١Хååץ桼ƥƥؤΥޤ󡣴¤ΤʤؤΥϤ٤ƵϿޤ',
     47 => 'εǽϡ*nixǤưޤ󡣤⤷*nixưƤʤСå̵ꥢޤWindowsưƤϡadodb_*.phpȤե򸡺ơưǺƤ',
-    48 => "{$_CONF['site_name']}ϿƤƤ꤬ȤԤδ֤ǿޤϿǧ줿顢ʤϿ᡼륢ɥ쥹˥ѥɤޤ",
+    48 => "{$_CONF['site_name']}ˤϿ꤬ȤޤԤδ֤ǿޤϿǧ줿顢ʤϿ᡼륢ɥ쥹˥ѥɤޤ",
     49 => '롼פ̵Ͽޤ',
     50 => '롼פޤ',
     51 => '桼̾˻ȤƤޤ̤̾ꤷƤ',
@@ -1162,8 +1137,17 @@
     71 => 'ȤϿơԤξǧԤäƤޤ',
     72 => 'ץ饰Υ󥹥ȡ˥顼ޤerror.logǧƤ',
     73 => 'ץ饰κ˥顼ޤSee error.logǧƤ',
-    74 => 'pingback̵ޤ',
-    75 => 'ȥåХåPOST requestɬפޤ'
+    74 => 'ԥ󥰥Хå̵ޤ',
+    75 => 'ȥåХåPOST requestɬפޤ',
+    76 => 'ιܤƤ褤Ǥ',
+    77 => 'ٹ:<br>ǥեȤΥ󥳡ǥ󥰤UTF-8ꤷƤޤСޥХȥ󥳡ǥ󥰤򥵥ݡȤƤޤPHPѤ mbstring ⥸塼򥤥󥹥ȡ뤹뤫UTF-8ǤϤʤ饯åȤʤѹƤ',
+    78 => 'E᡼륢ɥ쥹ȳǧѥɥ쥹ƱǧƤ',
+    79 => 'ڡϡΥȤˤϤ¸ߤƤʤؿ򻲾ȤƤޤ',
+    80 => 'Υեɤץ饰ϡ̵ˤƤޤΥץ饰ƤͭˤʤСեɤԽǤޤ',
+    81 => 'ϤΤä褦Ǥ⤦١ľƤ',
+    82 => 'ԲΥߥåȤĶޤФ餯ФäƤ顢ľƤ',
+    83 => 'ѥɡE᡼롢ǧڤ¸֤ѹˤϡߤΥѥɤϤƤ',
+    84 => 'ȤˤϡߤΥѥɤϤƤ'
 );
 
 ###############################################################################
@@ -1173,12 +1157,12 @@
     'ownerroot' => 'ͭ/Root',
     'group' => '롼',
     'readonly' => 'ɤߤȤ',
-    'accessrights' => '',
+    'accessrights' => 'ѡߥå',
     'owner' => 'ͭ',
     'grantgrouplabel' => '嵭Υ롼פԽ¤Ϳ',
-    'permmsg' => ': Сϥ󤷤ƤС٤ơȡ桼ϡ󤻤˥Ȥ򤷤Ƥ뤹٤Ƥο̣ͤޤ',
-    'securitygroups' => 'Security Groupsʥƥ롼ס',
-    'editrootmsg' => "¤äƤƤ⡢root桼ˤʤ餺root桼Խ뤳ȤϽޤ󡣤ʳΥ桼ԽϲǽǤ¤ʤroot桼Խ褦Ȥ硢Ͽ˻Ĥ뤳ȤդƤ<a href=\"{$_CONF['site_admin_url']}/user.php\">桼ڡ</a>",
+    'permmsg' => ': СȤϥ󤷤ƤСȥ桼Ȥϡ󤻤˱Ƥ̤αԡ',
+    'securitygroups' => 'ƥ롼',
+    'editrootmsg' => "¤äƤƤ⡢root桼ˤʤ餺root桼Խ뤳ȤϤǤޤ󡣤ʳΥ桼ԽϲǽǤ¤ʤroot桼Խ褦Ȥ硢Ͽ˻Ĥ뤳ȤդƤ<a href=\"{$_CONF['site_admin_url']}/user.php\">桼ڡ</a>",
     'securitygroupsmsg' => 'Υ桼°륰롼פ˥åƤ',
     'groupeditor' => '롼פԽ',
     'description' => 'ܺ',
@@ -1193,19 +1177,18 @@
     'yes' => 'Yes',
     'no' => 'No',
     'corerightsdescr' => "Υ롼פϡ{$_CONF['site_name']}˥롼פǤΤᡢܥ롼פθ¤Խ뤳ȤϤǤʤᡢθ¥ꥹȤɤߤȤѤȤʤäƤޤ",
-    'groupmsg' => 'ܥȤSecurity Groupsʥƥ롼סˤϳŪˤʤäƤޤܥ롼פ򲼵Υ롼פɲä硢Υ롼פλĸ¤Ʊ¤ܥ롼פˤͿ뤳ȤˤʤޤǽǤСܥ롼פ˸¤Ϳ硢Υ롼פθ¤Ѿ뤳Ȥ˾ޤˡǤܥ롼פ˸̤˸¤ͿϡΡָ¡ʬ͡ʵǽ˴ؤ븢¤򤹤뤳ȤǤޤܥ롼פɲäϡΥ롼פβˤܥååǤ',
+    'groupmsg' => 'ܥȤΥƥ롼פϳŪˤʤäƤޤܥ롼פ򲼵Υ롼פɲä硢Υ롼פλĸ¤Ʊ¤ܥ롼פˤͿ뤳ȤˤʤޤǽǤСܥ롼פ˸¤Ϳ硢Υ롼פθ¤Ѿ뤳Ȥ˾ޤˡǤܥ롼פ˸̤˸¤ͿϡΡָ¡ʬ͡ʵǽ˴ؤ븢¤򤹤뤳ȤǤޤܥ롼פɲäϡΥ롼פβˤܥååǤ',
     'coregroupmsg' => "ܥ롼פ{$_CONF['site_name']}coreˡ˥롼פǤΤᡢܥ롼פν°륰롼פԽǤޤ󡣲ΥꥹȤɤߤȤѤȤʤäƤޤ",
     'rightsdescr' => '롼פΥϲθ¤ͿƤ뤫롼פ°륰롼Τθ¤ѾƤޤΤåΤʤ¤ϡܥ롼פν°륰롼פѾ¤ǤåΤ븢¤ܥ롼׼ΤľͿƤ븢¤Ǥ',
     'lock' => 'å',
-    'members' => 'С',
+    'members' => 'С',
     'anonymous' => 'ȥ桼',
-    'permissions' => '',
+    'permissions' => 'ѡߥå',
     'permissionskey' => 'R = , E = Խ, Խϱޤߤޤ',
     'edit' => 'Խ',
     'none' => 'ʤ',
     'accessdenied' => 'ݤޤ',
     'storydenialmsg' => "ε븢¤ޤ󡣤ϡʤ{$_CONF['site_name']}ΥСʤȻפޤ{$_CONF['site_name']} <a href=users.php?mode=new> Сˤʤ뤳</a>Ǳǽˤʤޤ",
-    'eventdenialmsg' => "ͽ븢¤ޤ󡣤ϡʤ{$_CONF['site_name']}ΥСʤȻפޤ{$_CONF['site_name']} <a href=users.php?mode=new> Сˤʤ뤳</a>Ǳǽˤʤޤ",
     'nogroupsforcoregroup' => 'Υ롼פ¾ΤɤΥ롼פˤ°Ƥޤ',
     'grouphasnorights' => 'Υ롼פϴ¤ڽͭƤޤ',
     'newgroup' => '',
@@ -1260,14 +1243,14 @@
     1 => 'ۡ',
     2 => 'Ԥ˥᡼',
     3 => '',
-    4 => '',
-    5 => 'ɼ',
-    6 => '',
+    4 => '',
+    5 => '',
+    6 => '',
     7 => 'Ⱦ',
     8 => 'Ŀ',
     9 => '',
     10 => 'ץ',
-    11 => 'ΰ'
+    11 => ''
 );
 
 ###############################################################################
@@ -1284,7 +1267,7 @@
 
 $LANG_LOGIN = array(
     1 => '󤷤Ƥ',
-    2 => '˥ˤϥ󤷤Ƥɬפޤ',
+    2 => 'ޤ󤬡˥󤷤Ƥ',
     3 => '',
     4 => ''
 );
@@ -1316,12 +1299,12 @@
     'trackback'          => 'ȥåХå',
     'from'               => 'from',
     'tracked_on'         => 'ȥåХå',
-    'read_more'          => '[³ɤ]',
+    'read_more'          => '³ɤ',
     'intro_text'         => "'%s'ˤĤ¾ΥȤǤϼΤ褦˸ڤƤޤ:",
-    'no_comments'        => 'ΥȥˤϥȥåХåޤ',
+    'no_comments'        => '',
     'this_trackback_url' => 'ΥȥΥȥåХåURL:',
     'num_comments'       => '%dΥȥåХå',
-    'send_trackback'     => 'Ping',
+    'send_trackback'     => 'ȥåХåԥ󥰤',
     'preview'            => 'ץӥ塼',
     'editor_title'       => 'ȥåХå',
     'trackback_url'      => 'ȥåХåURL',
@@ -1346,43 +1329,43 @@
     'autodetect_failed'  => 'ȤȤΥȥåХåURL򸫤ĤޤǤURL򲼤ϤƤ',
     'trackback_explain'  => 'ʲΥ󥯤ȥåХåꤿURL򤷤ƤεȥåХåURLꤷޤURL狼äƤʤ<a href="%s">ʬ</a>뤳ȤǤޤ',
     'no_links_trackback' => '󥯤Ĥޤ󡣤Υȥ˥ȥåХåǤޤ',
-    'pingback'           => 'Pingback',
-    'pingback_results'   => 'Pingbackη',
-    'send_pings'         => 'Ping',
-    'send_pings_for'     => '"%s"ping',
-    'no_links_pingback'  => '󥯤Ĥޤ󡣤ΥȥؤpingbackޤǤ',
-    'pingback_success'   => 'Pingbackޤ',
-    'no_pingback_url'    => 'Pingback URLĤޤ',
+    'pingback'           => 'ԥ󥰥Хå',
+    'pingback_results'   => 'ԥ󥰥Хåη',
+    'send_pings'         => 'ԥ󥰤',
+    'send_pings_for'     => '"%s"˥ԥ󥰤',
+    'no_links_pingback'  => '󥯤Ĥޤ󡣤ΥȥؤΥԥ󥰥ХåޤǤ',
+    'pingback_success'   => 'ԥ󥰥Хåޤ',
+    'no_pingback_url'    => 'ԥ󥰥ХåURLĤޤ',
     'resend'             => '',
-    'ping_all_explain'   => 'ʤ󥯤ȤΥȤΤ餻(<a href="http://en.wikipedia.org/wiki/Pingback">Pingback</a>)Weblogǥ쥯ȥꥵӥpingäƥȤ줿ȤΤ餻ꡢïΥȤεˤĤƽ񤤤Ȥ<a href="http://ja.wikipedia.org/wiki/%E3%83%88%E3%83%A9%E3%83%83%E3%82%AF%E3%83%90%E3%83%83%E3%82%AF">ȥåХå</a>äꤹ뤳ȤǤޤ',
-    'pingback_button'    => 'Pingback',
-    'pingback_short'     => 'Υȥ꤫󥯤줿٤ƤΥȤPingback',
-    'pingback_disabled'  => '(Pingback̵Ǥ)',
-    'ping_button'        => 'Ping',
-    'ping_short'         => 'Weblogǥ쥯ȥꥵӥPing',
-    'ping_disabled'      => '(Ping̵Ǥ)',
+    'ping_all_explain'   => 'ʤ󥯤ȤΥȤΤ餻(<a href="http://en.wikipedia.org/wiki/Pingback">ԥ󥰥Хå</a>)Weblogǥ쥯ȥꥵӥ˥ԥ󥰤äƥȤ줿ȤΤ餻ꡢïΥȤεˤĤƽ񤤤Ȥ<a href="http://ja.wikipedia.org/wiki/%E3%83%88%E3%83%A9%E3%83%83%E3%82%AF%E3%83%90%E3%83%83%E3%82%AF">ȥåХå</a>äꤹ뤳ȤǤޤ',
+    'pingback_button'    => 'ԥ󥰥Хå',
+    'pingback_short'     => 'Υȥ꤫󥯤줿٤ƤΥȤ˥ԥ󥰥Хå',
+    'pingback_disabled'  => '(ԥ󥰥Хå̵Ǥ)',
+    'ping_button'        => 'ԥ󥰤',
+    'ping_short'         => 'Weblogǥ쥯ȥꥵӥ˥ԥ󥰡',
+    'ping_disabled'      => '(ԥ󥰤̵Ǥ)',
     'trackback_button'   => 'ȥåХå',
     'trackback_short'    => 'ȥåХå',
     'trackback_disabled' => '(ȥåХå̵Ǥ)',
-    'may_take_a_while'   => 'PingbackPingϻ֤ޤդ',
-    'ping_results'       => 'Pingη',
-    'unknown_method'     => 'Ping᥽åɤǤ',
-    'ping_success'       => 'Pingޤ',
+    'may_take_a_while'   => 'ԥ󥰥Хåԥ󥰤ϻ֤ޤդ',
+    'ping_results'       => 'ԥ󥰤η',
+    'unknown_method'     => 'ʥԥ󥰥᥽åɤǤ',
+    'ping_success'       => 'ԥ󥰤ޤ',
     'error_site_name'    => '̾ϤƤ',
     'error_site_url'     => 'ȤURLϤƤ',
-    'error_ping_url'     => 'Ping URLϤƤ',
+    'error_ping_url'     => 'ԥURLϤƤ',
     'no_services'        => 'Weblogǥ쥯ȥꥵӥꤵƤޤ',
     'services_headline'  => 'Weblogǥ쥯ȥꥵӥ',
     'admin_home'         => '',
     'new_service'        => 'ӥ',
     'service_explain'    => 'Weblogǥ쥯ȥꥵӥϡԽ򥯥åƤWeblogǥ쥯ȥꥵӥϡֿӥפ򥯥åƤ',
     'service'            => 'ӥ',
-    'ping_method'        => 'Ping᥽å',
+    'ping_method'        => 'ԥ󥰥᥽å',
     'service_enabled'    => 'ͭˤ',
     'service_website'    => 'Web',
-    'service_ping_url'   => 'Ping URL',
-    'ping_standard'      => 'Standard Ping',
-    'ping_extended'      => 'Extended Ping',
+    'service_ping_url'   => 'ԥURL',
+    'ping_standard'      => 'ɸԥ',
+    'ping_extended'      => 'ĥԥ',
     'ping_unknown'       => '(ʥ᥽å)',
     'edit_service'       => 'Weblogǥ쥯ȥꥵӥԽ',
     'button_save'        => '¸',
@@ -1396,21 +1379,22 @@
     'search'             => '',
     'limit_results'      => '̤¤',
     'submit'             => '',
-    'pingback_explain'   => 'PngbackURLƤThe pingback will point to your site\'s homepage.',
-    'pingback_url'       => 'Pingback URL',
+    'pingback_explain'   => 'ԥ󥰥ХåURLϤƤԥ󥰥Хå¾ΥȤ ĥ줿ȤưŪΤޤ',
+    'pingback_url'       => 'ԥ󥰥ХåURL',
     'site_url'           => 'ΥȤURL',
-    'pingback_note'      => 'To send a pingback for a story, go to the list of stories and click on "' . $LANG24[21] . '" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
-    'pbtarget_missing'   => 'No Pingback URL',
-    'pbtarget_required'  => 'pingback URLϤƤ',
-    'pb_error_details'   => 'pingback˥顼ޤ:'
+    'pingback_note'      => 'ؤΥԥ󥰥Хåˤϡ򥯥åƤ"' . $LANG24[21] . '" ˴طƤ뵭˥ԥ󥰥Хåˤϡ<a href="%s">򥯥å</a>.',
+    'pbtarget_missing'   => 'ԥ󥰥ХåURLǤϤޤ',
+    'pbtarget_required'  => 'ԥ󥰥ХåURLϤƤ',
+    'pb_error_details'   => 'Υԥ󥰥Хå˥顼:',
+    'delete_trackback'   => 'ȥåХå: '
 );
 
 ###############################################################################
 # directory.php
 
 $LANG_DIR = array (
-    'title'            => 'ΰ',
-    'title_year'       => '%dε',
+    'title'            => '',
+    'title_year'       => '%dǯε',
     'title_month_year' => '%dǯ%sε',
     'nav_top'          => 'Υȥåפ',
     'no_articles'      => 'Ϥޤ'
@@ -1426,7 +1410,8 @@
     # %n    amount, "2", "20" etc
     # %t    time, "2" (weeks)
     # %s    scale, "hrs", "weeks"
-    'new_string'  => '%t%sǿ%i%n',
+//  'new_string'  => '%t %sδ֤%n%i',
+    'new_string'  => 'Ƕ %t%s֤ǿ%i %n',
     'new_last'    => 'Ƕ %t %s',
     # other strings
     'minutes'     => 'ʬ',
@@ -1441,6 +1426,37 @@
     'month'       => ''
 );
 
+###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => ' 1',
+    2 => ' 2',
+    3 => ' 3',
+    4 => ' 4',
+    5 => ' 5',
+    6 => ' 6',
+    7 => ' 7',
+    8 => ' 8',
+    9 => ' 9',
+    10 => '10',
+    11 => '11',
+    12 => '12'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => '',
+    2 => '',
+    3 => '',
+    4 => '',
+    5 => '',
+    6 => '',
+    7 => ''
+);
+
 ################################################################################
 # Admin - Strings
 #
@@ -1452,8 +1468,10 @@
     'limit_results' => '̤ιʤ',
     'submit'        => 'Ͽ',
     'edit'          => 'Խ',
+    'edit_adv'      => 'ɥХ󥹥ȥǥ',
     'admin_home'    => '',
     'create_new'    => '',
+    'create_new_adv'=> '(ɥХ󥹥)',
     'enabled'       => 'ͭˤ',
     'title'         => 'ȥ',
     'type'          => '',
@@ -1462,9 +1480,12 @@
     'save'          => '¸',
     'cancel'        => '󥻥',
     'delete'        => '',
+    'delete_sel'    => '',
     'copy'          => 'ԡ',
-    'no_results'    => '- ĤޤǤ -',
-    'data_error'    => '줿ǡ꤬ޤǡåƤ'
+    'no_results'    => '- ĤޤǤ -',
+    'data_error'    => '줿ǡ꤬ޤǡåƤ',
+    'preview'       => 'Preview',
+    'records_found' => 'Records found'
 );
 
 # Localisation of the texts for the various drop-down menus that are actually
@@ -1523,4 +1544,4 @@
     -1  => 'ȥåХå'
 );
 
-?>
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/japanese_utf-8.php 1.4.1.src/cpanel-glprivate/language/japanese_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/japanese_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/japanese_utf-8.php	2006-12-11 18:10:32.000000000 -0600
@@ -1,11 +1,12 @@
 <?php
 
 ###############################################################################
-# japanese.php
-# Lastmodified:20030702
-# This is the Japanese language page for GeekLog!
+# japanese_utf-8.php
+# This is the english language page for GeekLog!
 # Special thanks to Mischa Polivanov for his work on this project
 #
+# Copyright (C) 2000 Jason Whittenburg
+# jwhitten AT securitygeeks DOT com
 # Copyright (C) 2002,2003,2004,2005 SAKATA Yusuke
 #               2006 Geeklog IvySOHO Project, SAKATA Yusuke
 # sakata@ecofirm.com
@@ -24,7 +25,11 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
-###############################################################################
+################################################################################
+# これは、Geeklogコア 用日本語言語ファイルです。
+# language/japanese_utf-8.php
+# http://www.geeklog.jp/
+# Last Update 2006/12/12
 
 $LANG_CHARSET = 'utf-8';
 
@@ -35,6 +40,14 @@
 #               YY    - phrase id number
 ###############################################################################
 
+# @@@@@ GeekLog Japanese 日本語対応版用　一部追加----->ここから
+
+$LANG_JPN = array(
+    1 => ' さん',
+);
+
+# @@@@@ GeekLog Japanese 日本語対応版用　一部追加<-----ここまで
+
 ###############################################################################
 # USER PHRASES - These are file phrases used in end user scripts
 ###############################################################################
@@ -43,22 +56,22 @@
 # lib-common.php
 
 $LANG01 = array(
-    1 => '投稿者は:',
-    2 => '続きを読む',
+    1 => '投稿者:',
+    2 => '全文表示',
     3 => '件のコメント',
     4 => '編集',
     5 => '投票',
     6 => '結果',
-    7 => '投票結果',
+    7 => '',
     8 => '投票人数',
     9 => '管理機能:',
     10 => '承認待ちリスト',
     11 => '記事',
     12 => 'ブロック',
-    13 => '話題',
-    14 => 'リンク',
-    15 => 'イベント情報',
-    16 => 'アンケート',
+    13 => '話題（記事カテゴリ）',
+    14 => '',
+    15 => '',
+    16 => '',
     17 => 'ユーザ',
     18 => 'SQL Query',
     19 => 'ログアウト',
@@ -71,7 +84,7 @@
     26 => 'コメントは投稿者の責任においてなされるものであり、サイト管理者は責任を負いません。',
     27 => '最新の投稿',
     28 => '削除',
-    29 => 'コメントはありません',
+    29 => '-',
     30 => '以前の記事',
     31 => '使用できるHTMLタグ:',
     32 => 'エラー。登録されていないユーザ名です',
@@ -79,7 +92,7 @@
     34 => 'エラー',
     35 => 'ログアウト',
     36 => 'on',
-    37 => '投稿記事はありません',
+    37 => '-',
     38 => 'RSS配信',
     39 => '更新',
     40 => ' あなたの <tt>php.ini</tt> で、<tt>register_globals = Off</tt> になっているようです。Geeklogは、 <tt>register_globals</tt> が <strong>on</strong> になっていなければなりません。 Geeklogを使うために、 <strong>on</strong> にして、Webサーバーを再起動してください。',
@@ -89,8 +102,8 @@
     44 => '元の記事',
     45 => 'MySQLのエラー番号は、',
     46 => 'MySQLのエラーメッセージは、',
-    47 => 'ユーザ管理',
-    48 => 'アカウント情報',
+    47 => 'ログイン',
+    48 => 'マイアカウント',
     49 => '設定',
     50 => 'SQL文にエラーがあります。',
     51 => 'ヘルプ',
@@ -102,36 +115,36 @@
     57 => 'パスワード',
     58 => 'ログイン',
     59 => "<a href=\"{$_CONF['site_url']}/users.php?mode=new\">新規登録</a>",
-    60 => 'コメントを投稿',
+    60 => 'コメント投稿',
     61 => 'アカウントの作成',
     62 => 'カウント',
     63 => 'コメントの設定',
     64 => '記事を友人にメールする',
     65 => '印刷用画面',
-    66 => '個人カレンダー',
+    66 => '',
     67 => 'ようこそ！ ',
     68 => 'ホーム',
     69 => '連絡先',
     70 => '検索',
     71 => '記事投稿',
     72 => 'リンク',
-    73 => 'アンケート一覧',
-    74 => 'カレンダー',
-    75 => '検索オプション',
+    73 => '',
+    74 => '',
+    75 => '検索',
     76 => 'アクセス情報',
-    77 => 'プラグイン',
-    78 => 'これからの予定',
+    77 => 'プラグイン（拡張機能）',
+    78 => '',
     79 => '新規',
     80 => '件の記事（',
     81 => '件の記事（',
     82 => '時間以内）',
     83 => 'コメント',
-    84 => 'リンク集',
+    84 => '',
     85 => '（48 時間以内）',
     86 => '  -',
     87 => '（最近２週間）',
-    88 => '  -',
-    89 => '  -',
+    88 => '',
+    89 => '',
     90 => 'ホーム',
     91 => 'ページ作成時間：',
     92 => '秒',
@@ -142,54 +155,33 @@
     97 => 'ワードリスト',
     98 => 'プラグイン',
     99 => '記事',
-    100 => '新しい記事はありません',
-    101 => '個人の予定',
-    102 => '全体の予定',
-    103 => 'DBのバックアップ',
+    100 => '-',
+    101 => '',
+    102 => '',
+    103 => 'データベースのバックアップ',
     104 => '：',
-    105 => 'グループにメール',
+    105 => 'グループメール送信',
     106 => '閲覧件数',
-    107 => 'バージョン情報',
+    107 => 'GLバージョンチェック',
     108 => 'キャッシュをクリア',
-    109 => '迷惑として報告',
+    109 => '迷惑報告',
     110 => '投稿をサイトの管理者に知らせる',
     111 => 'PDFで閲覧',
     112 => '登録ユーザ数：',
     113 => 'Geeklogドキュメント',
     114 => 'トラックバック',
-    115 => '新しいトラックバックはありません。',
+    115 => '-',
     116 => 'トラックバック',
-    117 => '記事の一覧',
+    117 => '記事一覧',
     118 => '続きのページへどうぞ：',
-    119 => "<a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">パスワードの再発行</a>",
-    120 => 'このコメントへの永続リンク（Permanent link）',
+    119 => "<a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">パスワード再発行</a>",
+    120 => 'このコメントへの永久リンク',
     121 => 'コメント (%d件)',
     122 => 'トラックバック (%d件)',
     123 => 'すべてのHTMLを許可'
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'イベント情報カレンダー',
-    2 => '今日はイベントがありません',
-    3 => '日時',
-    4 => '場所',
-    5 => '詳細',
-    6 => 'イベントの追加',
-    7 => 'これからの予定',
-    8 => '個人カレンダーにこのイベントを追加すると、「個人カレンダー」をユーザ管理メニューから選択することで見ることができます。',
-    9 => '個人カレンダーに追加',
-    10 => '個人カレンダーから削除',
-    11 => "このイベントを{$_USER['username']}の個人カレンダーに追加",
-    12 => 'イベント',
-    13 => '開始',
-    14 => '終了',
-    15 => 'カレンダーに戻る'
-);
-
-###############################################################################
 # comment.php
 
 $LANG03 = array(
@@ -226,7 +218,7 @@
 # users.php
 
 $LANG04 = array(
-    1 => 'ユーザ情報：',
+    1 => 'アカウント情報：',
     2 => 'ユーザ名',
     3 => '氏名',
     4 => 'パスワード',
@@ -236,22 +228,22 @@
     8 => 'PGP公開鍵',
     9 => '変更を保存する',
     10 => '最近10件のコメント',
-    11 => 'コメントはありません',
-    12 => 'ユーザ設定：',
+    11 => '-',
+    12 => 'ユーザ情報：',
     13 => '毎晩E-mailで投稿を読む',
     14 => 'このパスワードは自動作成されたものですから、パスワードの変更をおすすめします。パスワードは、サイトにログインして、「ユーザ情報」をクリックすると変更できます。',
     15 => "{$_CONF['site_name']} で使用するあなたのアカウントが作成されました。このアカウントを使うためには、下記のユーザ名とパスワードでログインしてください。念のため、このメールは保存しておいてください。",
-    16 => 'アカウント情報',
+    16 => 'ユーザ情報',
     17 => 'アカウントがありません',
     18 => 'このメールアドレスは、有効なアドレスではないようです',
     19 => 'ユーザ名かメールアドレスがすでに使われています。',
     20 => 'このメールアドレスは、有効なアドレスではないようです',
     21 => 'エラー',
     22 => "{$_CONF['site_name']}のアカウントを作成する",
-    23 => "{$_CONF['site_name']}にアカウントを作成すると、コメントや記事の投稿など本サイトの機能をフルに使用することができます。アカウントがなければゲストユーザとしてしか投稿できません。また、登録されたメールアドレスは絶対に表示されませんのでご安心ください",
-    24 => 'パスワードは、ここに入力されたメールアドレスに送信されます',
-    25 => 'パスワードが分からない人はこちら。',
-    26 => '登録時に使用したユーザ名<em>または</em>メールアドレスを入力して、「パスワード送信」をクリックしてください。新しいパスワードを設定する方法が登録されているメールアドレス宛てに送信されます。',
+    23 => "{$_CONF['site_name']}にアカウントを作成すると、コメントや記事の投稿など本サイトの機能をフルに使用することができます。アカウントがなければゲストユーザとしてしか投稿できません。また、登録されたメールアドレスは絶対に表示されませんのでご安心ください。ユーザ名は、半角・全角どちらでも設定できます。",
+    24 => 'パスワードは、ここに入力されたメールアドレスに送信されます。',
+    25 => 'パスワードがわからない場合はこちら。',
+    26 => '登録時に使用したユーザ名またはメールアドレスのどちらかを入力して、「パスワード送信」をクリックしてください。新しいパスワードを設定する方法が登録されているメールアドレス宛てに送信されます。',
     27 => 'アカウントの作成',
     28 => 'パスワード送信',
     29 => 'ログアウトしました：',
@@ -270,7 +262,7 @@
     42 => '日付のフォーマット',
     43 => '表示する記事の数',
     44 => 'ボックスを表示しない',
-    45 => '表示設定：',
+    45 => '設定：',
     46 => '次のアイテムを除外：',
     47 => 'ニュースボックスの設定：',
     48 => '話題',
@@ -290,20 +282,20 @@
     62 => '初期値は100です',
     63 => "パスワードをメールで送信しましたので、まもなく届くはずです。メッセージに利用方法が書かれていますので、参考にしてください。{$_CONF['site_name']}を利用していただきありがとうございます。",
     64 => 'コメントの設定：',
-    65 => 'ログインし直して見てください',
-    66 => 'タイプミスがあったようです。もう一度ログインしてみてください。パスワードが分からなければ、新しいパスワードを発行しますので、下記のフォームに記入してください。',
-    67 => '加入期間',
+    65 => 'ログインしてください',
+    66 => '',
+    67 => '登録日時',
     68 => '認証の保存期間',
     69 => 'いったんログインした後、どのぐらい情報を残しておけばいいですか？',
     70 => "{$_CONF['site_name']}の表示と内容を設定",
     71 => "{$_CONF['site_name']}の特徴として、表示される記事のテーマや表示を自由に変えることができます。そのためには、まず、{$_CONF['site_name']}に<a href=\"{$_CONF['site_url']}/users.php?mode=new\">ユーザ登録</a>する必要があります。もし、すでに登録済みならば左のフォームを利用してログインしてください。",
     72 => 'テーマ',
     73 => '言語',
-    74 => 'このサイトの外見を変更してみよう',
-    75 => '記事がメールで送信されました。あて先：',
+    74 => 'このサイトのデザインを変更',
+    75 => '記事がメールで送信されました。送信先：',
     76 => '下記のリストから話題を選択すれば、一日の終わりに投稿内容をメールで受け取ることができます。興味のある話題だけ選択するようにしてください。',
     77 => '写真',
-    78 => '自分自身の写真を追加しよう',
+    78 => '自分自身の写真を追加',
     79 => '写真を削除する場合、ここをチェックしてください',
     80 => 'ログイン',
     81 => 'メール送信',
@@ -320,10 +312,10 @@
     92 => '新しいパスワードを入力',
     93 => '直前のパスワード変更要求は、%d秒前でした。このサイトでは、変更の間に%d秒待つ必要があります。',
     94 => 'アカウント（"%s"）を削除',
-    95 => 'データベースからアカウントを削除するには、下の"アカウントの削除" ボタンを押してください。ただし、あなたのアカウント名で投稿された記事やコメントは<strong>削除されません</strong>ので、ご注意ください。これらの記事やコメントは"ゲストユーザ"によって投稿されたものとして表示されます。',
-    96 => 'アカウントを削除',
+    95 => 'データベースからアカウントを削除するには、下の"アカウント削除" ボタンを押してください。ただし、あなたのアカウント名で投稿された記事やコメントは<strong>削除されません</strong>ので、ご注意ください。これらの記事やコメントは"ゲストユーザ"によって投稿されたものとして表示されます。',
+    96 => 'アカウント削除',
     97 => 'アカウント削除の確認',
-    98 => '本当にアカウントを削除しますか。削除してしまえば、このサイトに新しいアカウントを作らない限り、ログインできなくなります。よろしければ、もう一度"アカウントの削除"ボタンを押してください',
+    98 => '本当にアカウントを削除しますか。削除すると、このサイトに新しいアカウントを作らない限り、ログインできなくなります。よろしければ、もう一度"アカウント削除"ボタンをクリックしてください',
     99 => 'プライバシーオプション：',
     100 => '管理者からのメール',
     101 => 'サイト管理者からのメールを受け取る',
@@ -344,11 +336,44 @@
     116 => 'アカウントが有効になるのを待機しています',
     117 => 'あなたのアカウントは管理者が有効にするのを待っています。管理者が承認するまでログインできません。',
     118 => "{$_CONF['site_name']} のあなたのアカウントが有効になりました。以下のリンクから、あなたのユーザ名(<username>)とメールで送られてきたパスワードでログインできます。",
-    119 => "パスワードを忘れてしまっていれば、以下のリンクから新しいパスワードを申請できます。",
+    119 => 'パスワードを忘れた場合、以下のリンクから新しいパスワードを申請できます。',
     120 => 'アカウントが有効になりました。',
     121 => 'サービス',
-    122 => 'ユーザの新規登録は停止中です。ごめんなさい。',
-    123 => "<a href=\"{$_CONF['site_url']}/users.php?mode=new\">新規登録</a>"
+    122 => '申し訳ありませんが、ユーザの新規登録は停止中です。',
+    123 => "<a href=\"{$_CONF['site_url']}/users.php?mode=new\">新規登録</a>",
+    124 => '（確認） Eメール',
+    125 => '両方の入力欄に同じEメールを入力してください。',
+    126 => '確認のために同じものを繰り返し入力してください。',
+    127 => '設定を変更するには、現在のパスワードを入力する必要があります。',
+    128 => 'お名前',
+    129 => 'パスワードとEメール',
+    130 => '個人情報',
+    131 => '毎日のダイジェスト版オプション',
+    132 => '毎日のダイジェスト版機能',
+    133 => 'コメント表示',
+    134 => 'コメントオプション',
+    135 => '<li>デフォルトのコメント表示法</li><li>コメントを表示するデフォルトの順序</li><li>表示するコメントの最大数を設定してください。デフォルトは 100件です。</li>',
+    136 => '話題と投稿者の除外',
+    137 => '記事のフィルタリング',
+    138 => 'その他の設定',
+    139 => 'レイアウトと言語',
+    140 => '<li>「話題別アイコンを非表示」をチェックすると、記事に話題別アイコンが表示されなくなります</li><li>「ボックスを非表示」をチェックすると、管理者用メニュー、ユーザ用メニュー、話題しか表示されなくなります。<li>1ページに表示する記事の最大数を設定してください</li><li>テーマと好みの日付フォーマットを設定してください</li>',
+    141 => 'プライバシーの設定',
+    142 => 'デフォルトの設定では、他のユーザや管理者があなたにEメールを送ることができ、オンラインかどうかを表示するようになっています。プライバシーを保護するには、対応するオプションのチェックを外してください。',
+    143 => 'ブロックのフィルタリング',
+    144 => 'ブロックの表示・非表示',
+    145 => '公開プロフィール',
+    146 => 'パスワードとEメール',
+    147 => 'パスワード、Eメール、自動ログイン機能を編集します。パスワードとEメールは確認のため、2回入力する必要があります。',
+    148 => '個人情報',
+    149 => '他のユーザにも読める個人情報を編集します。<li>「サイン」はコメントや掲示板の投稿に付加されます</li><li>「自己紹介」は他のユーザにも読める短い自己紹介です</li><li> 「PGP公開鍵」を公開しましょう</li>',
+    150 => '警告: 操作性向上のために、Javascriptをオンにすることをお勧めします',
+    151 => 'プレビュー',
+    152 => 'ユーザ名とパスワード',
+    153 => 'レイアウトと言語',
+    154 => 'コンテンツ',
+    155 => 'プライバシー',
+    156 => 'アカウント削除'
 );
 
 ###############################################################################
@@ -359,8 +384,8 @@
     2 => '表示する記事はありません。このテーマに関する投稿がないのか表示設定を絞り過ぎなのかのどちらかです。',
     3 => ' %s に関するもの',
     4 => '今日の注目記事',
-    5 => '次',
-    6 => '一つ前',
+    5 => '次へ',
+    6 => '前へ',
     7 => '最初',
     8 => '最後'
 );
@@ -371,30 +396,30 @@
 $LANG08 = array(
     1 => 'メッセージを送信する際にエラーが発生しました。もう一度試してください。',
     2 => 'メッセージは送信されました',
-    3 => '返信先に正しいe-mailアドレスを記入していますか？',
-    4 => '名前、返信先、タイトル、内容を記入してください',
+    3 => 'E-mailに正しいE-mailアドレスを入力していますか？',
+    4 => '名前、E-mail、件名、内容をすべて入力してください',
     5 => '該当ユーザはいません',
     6 => 'エラーが発生しました',
     7 => 'ユーザ情報：',
     8 => '氏名',
     9 => 'URL',
     10 => 'メールの宛先',
-    11 => 'あなたの名前:',
-    12 => '返信先:',
-    13 => 'タイトル:',
+    11 => '名前:',
+    12 => 'E-mail:',
+    13 => '件名:',
     14 => '内容:',
-    15 => 'HTMLは変換されません',
+    15 => '',
     16 => '送信',
     17 => '友達に記事を送信する',
     18 => '送信相手',
     19 => '送信先E-mailアドレス',
-    20 => 'あなたの名前',
-    21 => 'あなたのE-mailアドレス',
+    20 => '名前',
+    21 => 'E-mail',
     22 => 'すべての項目を記入してください',
     23 => "このメールは、%s さんが{$_CONF['site_url']}の記事で、あなたに知らせたいと思ったため、%s のアドレスから送信されました。これはいわゆる迷惑（SPAM）メールではありませんし、送信に使用されたアドレスを他の目的に使用することもありません。",
     24 => 'この記事に関するコメントは次の場所でできます。',
     25 => 'この機能を使用するためにはログインしてください。',
-    26 => 'このフォームは対象のユーザにメールを送るためのものなので、すべての項目を入力してください。',
+    26 => 'このフォームで対象のユーザにメールを送ります。',
     27 => 'メッセージ',
     28 => '%s さんからのメッセージ: ',
     29 => "今日の{$_CONF['site_name']} に関するダイジェストです。宛先：",
@@ -414,9 +439,9 @@
     2 => 'キーワード',
     3 => '話題',
     4 => 'すべて',
-    5 => '種別',
-    6 => '記事の数',
-    7 => 'コメント数',
+    5 => 'タイプ',
+    6 => '記事',
+    7 => 'コメント',
     8 => 'ユーザ',
     9 => 'すべて',
     10 => '検索',
@@ -430,7 +455,7 @@
     18 => 'ユーザ',
     19 => " {$_CONF['site_name']} 全体のすべての記事を検索する",
     20 => '日付',
-    21 => '〜',
+    21 => '～',
     22 => '(書式は YYYY-MM-DD)',
     23 => '件の閲覧',
     24 => '%d件、見つかりました',
@@ -439,28 +464,28 @@
     27 => '秒',
     28 => '該当する記事・コメントは見つかりませんでした',
     29 => '記事・コメントの検索結果：',
-    30 => '該当するリンクは見つかりませんでした。',
+    30 => '',
     31 => 'プラグインからは該当するものを見つかりませんでした',
-    32 => 'イベント',
+    32 => '',
     33 => 'URL',
     34 => '場所',
     35 => '一日中',
-    36 => '該当するイベントは見つかりませんでした',
-    37 => 'イベントの検索結果',
-    38 => 'リンクの検索結果',
-    39 => 'リンク',
-    40 => 'イベント',
+    36 => '',
+    37 => '',
+    38 => '',
+    39 => '',
+    40 => '',
     41 => '検索文字列は３文字以上必要です',
     42 => '日付の書式は、YYYY-MM-DD（年-月-日）としてください',
     43 => '正確な文字列',
-    44 => 'いずれかを含む',
-    45 => 'すべてを含む',
+    44 => 'すべて含む',
+    45 => 'いずれか含む',
     46 => '次',
     47 => '前',
-    48 => '著者',
+    48 => '所有者',
     49 => '日付',
     50 => '閲覧件数',
-    51 => 'リンク',
+    51 => '',
     52 => '場所',
     53 => '記事の検索結果',
     54 => 'コメントの検索結果',
@@ -481,9 +506,9 @@
     1 => 'サイトに関する統計',
     2 => 'システム全体のアクセス数',
     3 => '記事（コメント）の数',
-    4 => '投票（回答数）の数',
-    5 => 'リンク（クリック）の数',
-    6 => '予定の数',
+    4 => '',
+    5 => '',
+    6 => '',
     7 => 'もっとも参照数の多かった記事（上位10件）',
     8 => '記事のタイトル',
     9 => '件',
@@ -498,17 +523,17 @@
     18 => 'リンク（上位10件）',
     19 => 'タイトル',
     20 => '件',
-    21 => 'このサイトにはリンクが一つもないか、リンクをクリックした人が一人もいないのかのどちらかだと思います',
+    21 => '',
     22 => '紹介件数の多い記事（上位10件）',
     23 => '件',
     24 => '友達に紹介された記事はないようです',
     25 => 'トラックバックが多い記事（上位10件）',
     26 => 'トラックバックはありません',
     27 => '登録ユーザの数',
-    28 => 'イベント（上位１０件）',
-    29 => 'イベント',
+    28 => '',
+    29 => '',
     30 => 'ヒット',
-    31 => 'イベントが登録されていないか、まだクリックされていません。'
+    31 => ''
 );
 
 ###############################################################################
@@ -529,14 +554,14 @@
     1 => ' %s を投稿するためにはログインしている必要があります',
     2 => 'ログイン',
     3 => '新規登録',
-    4 => '予定の投稿',
-    5 => 'リンクの投稿',
+    4 => '',
+    5 => '',
     6 => '記事の投稿',
     7 => 'ログインが必要です',
     8 => '送る',
     9 => 'このサイトに情報を投稿する際には、次のルールを守ってください。<ul><li>必要とされるすべての項目を記入してください。<li>正確かつ必要十分な情報を提供してください<li>URLについては特に注意して確認してください</ul>',
     10 => 'タイトル',
-    11 => 'リンク',
+    11 => '',
     12 => '開始日',
     13 => '終了日',
     14 => '場所',
@@ -562,20 +587,20 @@
     34 => 'ログアウト',
     35 => 'HTMLタグは使用できません',
     36 => '投稿モード',
-    37 => "{$_CONF['site_name']}にイベントを投稿すると、サイト全体のカレンダーに登録されます。登録されたイベントは各ユーザが必要に応じて個人的なカレンダーに登録します。つまり、カレンダー機能は、誕生日や記念日などあなたの個人的なスケジュール帳として使われることを想定しているものでは<b>ありません</b>。<br><br>イベントを投稿し、管理者が承認した場合、イベントはサイト全体のカレンダーに表示されてしまいます。",
-    38 => '予定の追加。追加先：',
-    39 => '全体カレンダー',
-    40 => '個人カレンダー',
-    41 => '終了日時',
-    42 => '開始日時',
-    43 => '一日中の予定',
-    44 => '住所(1)',
-    45 => '住所(2)',
-    46 => '都市名',
+    37 => '',
+    38 => 'イベントの追加先',
+    39 => '',
+    40 => '',
+    41 => '',
+    42 => '',
+    43 => '',
+    44 => '住所1',
+    45 => '住所2',
+    46 => '市町村名',
     47 => '都道府県',
     48 => '郵便番号',
-    49 => '予定の種類',
-    50 => '予定の種類を編集',
+    49 => '',
+    50 => '',
     51 => '場所',
     52 => '削除',
     53 => 'アカウント作成'
@@ -613,13 +638,13 @@
     9 => 'ブロックの順序',
     10 => 'ブロックの種類',
     11 => 'ポータルブロック',
-    12 => 'ふつうのブロック',
+    12 => 'ノーマルブロック',
     13 => 'ポータルブロックのオプション',
     14 => 'RDF URL',
     15 => 'RDFの更新日時',
-    16 => 'ふつうのブロックのオプション',
-    17 => 'ブロックの中身',
-    18 => 'ブロックのタイトル・セキュリティレベル・中身を記入してください。',
+    16 => 'ノーマルブロックのオプション',
+    17 => 'コンテンツ',
+    18 => 'ブロックのタイトル・セキュリティレベル・コンテンツを記入してください。',
     19 => 'ブロックの管理',
     20 => 'タイトル',
     21 => 'セキュリティ',
@@ -631,7 +656,7 @@
     27 => 'PHPブロック',
     28 => 'PHPブロックのオプション',
     29 => '関数',
-    30 => 'PHPコードを使用したブロックを使う場合、phpblock_（e.g. phpblock_getweather）ではじまるPHPの関数名を上に記入してください。phpblockではじまっていない場合、関数は呼び出されません。これは、悪意を持ったユーザがサイトに有害な関数を定義することを避けるためです。関数の後の（）は不要です。PHPブロックのコードは、/path/to/geeklog/system/lib-custom.phpに記入しておくと、Geeklogをアップグレードしても使用し続けることができます。',
+    30 => 'PHPコードを使用したブロックを使う場合、phpblock_（例 phpblock_getweather）ではじまるPHPの関数名を上に記入してください。phpblockではじまっていない場合、関数は呼び出されません。これは、悪意を持ったユーザがサイトに有害な関数を定義することを避けるためです。関数の後の（）は不要です。PHPブロックのコードは、/path/to/geeklog/system/lib-custom.phpに記入しておくと、Geeklogをアップグレードしても使用し続けることができます。',
     31 => 'PHPブロックにエラーがあります。%sが存在しません',
     32 => 'エラー。未記入の項目があります',
     33 => 'ポータルブロックの.rdfファイルにはURLが記入されている必要があります',
@@ -639,12 +664,12 @@
     35 => '普通のブロックにはタイトルと内容を記入してください',
     36 => 'レイアウト用ブロックには内容を記入してください',
     37 => 'PHPブロックの関数名が不適切です',
-    38 => 'PHPブロックの関数名は、\'phpblock_\' (e.g. phpblock_getweather)ではじまっている必要があります。\'phpblock_\'は、セキュリティに配慮した結果ですのでご協力ください。',
+    38 => 'PHPブロックの関数名は、\'phpblock_\' (例 phpblock_getweather)ではじまっている必要があります。\'phpblock_\'は、セキュリティに配慮した結果ですのでご協力ください。',
     39 => '表示場所',
     40 => '左',
     41 => '右',
     42 => 'ブロックの表示順序とセキュリティレベルを入力してください',
-    43 => 'トップページのみ',
+    43 => 'ホームページのみ',
     44 => 'アクセスが拒否されました',
     45 => "管理権限のないブロックを編集しようとしました。この行為は記録されます。<a href=\"{$_CONF['site_admin_url']}/block.php\">ブロックの編集</a>画面に戻ってください.",
     46 => '新規ブロック',
@@ -666,43 +691,9 @@
     62 => '記事の表示件数（Article Limits）',
     63 => 'ブロックのタイトルが不適切です',
     64 => 'タイトルは空欄ではいけませんし、HTMLを含んでもいけません。',
-    65 => '整列順'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => '予定の編集',
-    2 => 'エラー',
-    3 => '投稿モード',
-    4 => '関連URL',
-    5 => '開始日',
-    6 => '終了日',
-    7 => '場所',
-    8 => '予定の説明',
-    9 => '(http://からはじめてください)',
-    10 => 'イベントの日付・時間、タイトル、詳細を記入してください。',
-    11 => '予定管理',
-    12 => '予定の編集・削除は、下の予定名をクリックしてください。新しい予定を作る場合、上の「新規予定」をクリックしてください。コピーを作る場合は「C」をクリックしてください。',
-    13 => '予定名',
-    14 => '開始日',
-    15 => '終了日',
-    16 => 'アクセスが拒否されました。',
-    17 => "管理権限のない予定を編集しようとしました。この行為は記録として残ります。<a href=\"{$_CONF['site_admin_url']}/event.php\">予定編集画面</a>に戻ってください.",
-    18 => '新規予定',
-    19 => '管理画面',
-    20 => '保存',
-    21 => '中止',
-    22 => '削除',
-    23 => '開始日がおかしいです',
-    24 => '終了日がおかしいです',
-    25 => '終了日が開始日よりも前です',
-    26 => '登録',
-    27 => '1ページの表示件数',
-    28 => '検索',
-    29 => '編集',
-    30 => 'コピー'
+    65 => '整列順',
+    66 => 'オートタグ',
+    67 => 'オートタグチェック'
 );
 
 ###############################################################################
@@ -724,19 +715,19 @@
     13 => '',
     14 => '',
     15 => '日時',
-    16 => '投稿内容',
-    17 => '投稿内容（詳細）',
+    16 => '冒頭文',
+    17 => '本文',
     18 => '閲覧件数',
     19 => 'コメント数',
     20 => 'Pingの数',
     21 => 'Pingを送る',
-    22 => '記事の一覧',
+    22 => '記事一覧',
     23 => '記事を削除・編集するには、記事の番号をクリックすること。記事を見るには、記事のタイトルをクリックする。新しい記事を作成する場合は、「新規」をクリックすること。',
     24 => '指定したIDはすでに使われています。別のIDを試してみてください。',
     25 => '記事の登録中にエラーがありました。',
     26 => '記事のプレビュー',
-    27 => '[unscaledX]を[imageX]の代わりに使うと、画像はオリジナルのサイズで表示されます。',
-    28 => '<p><b>プレビュー</b>: 画像付きの記事をプレビューする場合、プレビューボタンを押すよりも、一旦ドラフトとして保存することをお勧めします。プレビューボタンは画像がない場合にだけ使ってください。',
+    27 => '<p>[unscaledX]を[imageX]の代わりに使うと、画像はオリジナルのサイズで表示されます。</p>',
+    28 => '<b>プレビュー</b>: 画像付きの記事をプレビューする場合、プレビューボタンを押すよりも、一旦ドラフトとして保存することをお勧めします。プレビューボタンは画像がない場合にだけ使ってください。</p>',
     29 => 'トラッックバック数',
     30 => 'ファイルのアップロード時にエラーが発生しました',
     31 => 'タイトルと最初の部分を記入してください',
@@ -746,7 +737,7 @@
     35 => 'はい',
     36 => 'いいえ',
     37 => '同じ投稿者からの投稿：',
-    38 => '同じカテゴリ：',
+    38 => '同じ話題：',
     39 => '紹介された件数',
     40 => '',
     41 => "管理権限のない記事を編集しようとしました。この行為は記録されます。下記の記事は読みとり専用です。読み終わったら、<a href=\"{$_CONF['site_admin_url']}/story.php\">記事の編集画面</a>に戻ってください。",
@@ -754,17 +745,17 @@
     43 => '',
     44 => '',
     45 => '',
-    46 => '<b>注意:</b> 記事の日付を将来の日付に変更すると、その日まで表示されません。また、RDFヘッドラインにも反映されませんし、検索やサイト情報にも反映されないことに注意してください。',
+    46 => '<b>注意:</b> 記事の日付を将来の日付に変更すると、その日まで表示されません。また、RDFヘッドラインにも反映されませんし、検索やサイト情報にも反映されません。',
     47 => 'image',
     48 => 'image',
     49 => 'right',
     50 => 'left',
-    51 => '添付した画像を記事に表示するためには、特別な書式が必要です。書式は、[imageX]　、[imageX_right]あるいは、[imageX_left]のいずれかです。ただし、Xは添付した画像の番号です。注意：添付した画像は記事内で使用しなければ記事を保存できません。<BR><P><B>プレビュー</B>: 画像付きの記事はドラフト（下書き）として保存して閲覧してください。プレビューボタンは画像が無い場合だけに使用してください。',
+    51 => '<p>添付した画像を記事に表示するためには、特別な書式が必要です。書式は、[imageX]　、[imageX_right]あるいは、[imageX_left]のいずれかです。ただし、Xは添付した画像の番号です。注意：添付した画像は記事内で使用しなければ記事を保存できません。<BR><P><B>プレビュー</B>: 画像付きの記事はドラフト（下書き）として保存して閲覧してください。プレビューボタンは画像が無い場合だけに使用してください。</p>',
     52 => '',
     53 => 'は使用されていません。保存する前に本文か詳細説明に画像を使用しなければなりません。',
     54 => '添付された画像は使用されていません。',
     55 => '記事を保存する際に下記のエラーが発生しました。保存する前に修正してください。',
-    56 => '話題用のアイコンを表示',
+    56 => '話題アイコン表示',
     57 => '元のサイズの画像を表示',
     58 => '記事の管理',
     59 => 'オプション',
@@ -784,26 +775,28 @@
     73 => '拡張ツールバー',
     74 => '拡張ツールバーその２',
     75 => '全機能',
-    76 => '公開用オプション',
-    77 => 'Advanced Editorを使うためには、Javascriptが使えるようになっている必要があります。このオプションはconfig.phpで無効にできます。 ',
-    78 => '通常のエディタを使うには、<a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default">ここ</a> をクリックしてください。',
+    76 => '公開オプション',
+    77 => 'アドバンストエディタの利用は、ブラウザでJavaScriptが使える環境にする必要があります。このオプションはconfig.phpで無効にできます。 ',
+    78 => '<a href="%s/story.php?mode=edit&sid=%s&editopt=default">通常のエディタを使う場合</a>',
     79 => 'プレビュー',
     80 => 'エディタ',
-    81 => '公開用オプション',
+    81 => '公開オプション',
     82 => '画像',
-    83 => '保存用オプション',
-    84 => '利用権限',
-    85 => 'すべて表示'
+    83 => '保存オプション',
+    84 => 'パーミッション',
+    85 => '全て表示',
+    86 => 'アドバンストエディタ',
+    87 => '記事の状態'
 );
 
 ###############################################################################
 # admin/topic.php
 
 $LANG27 = array(
-    1 => '話題の編集',
+    1 => '話題（記事カテゴリ）の編集',
     2 => '話題用ID',
     3 => '話題名',
-    4 => '話題用画像',
+    4 => '話題アイコンファイル指定',
     5 => '(スペースを含まない)',
     6 => '話題を削除すると、関連した記事・ブロックもすべて削除されます',
     7 => '話題用IDと話題名を記入してください',
@@ -824,9 +817,9 @@
     22 => 'デフォルト',
     23 => 'この話題を新規記事投稿の際のデフォルトにします。',
     24 => '(*)',
-    25 => 'この話題を圧縮',
-    26 => 'この話題を記事のデフォルトにする。デフォルトの話題は一つだけ指定できます。',
-    27 => 'または、話題用アイコンをアップロード',
+    25 => '圧縮',
+    26 => '話題を圧縮します。',
+    27 => '話題アイコンアップロード',
     28 => '最大',
     29 => 'ファイルアップロード時にエラー'
 );
@@ -846,7 +839,7 @@
     9 => '(スペースを含まない)',
     10 => 'ユーザ名・メールアドレスを記入してください。',
     11 => 'ユーザ管理',
-    12 => 'ユーザ情報の変更、削除はユーザ名左のアイコンをクリックしてください。新規ユーザを作成する場合は、左の「新規作成」ボタンをクリックしてください。下のフォームを使えば、ユーザ名、メールアドレス、氏名について単純な部分検索が可能です。（例：*田、*原*）',
+    12 => 'ユーザ情報の変更、削除はユーザ名左のアイコンをクリックしてください。新規ユーザを作成する場合は、左の「新規作成」ボタンをクリックしてください。',
     13 => 'セキュリティ',
     14 => '登録日',
     15 => '新規ユーザ',
@@ -870,18 +863,47 @@
     33 => '検索',
     34 => 'エラー：登録するファイルを指定してください',
     35 => '最後のログイン日時',
-    36 => '(未)',
-    37 => 'ユーザID',
+    36 => '一度もログインしていない',
+    37 => 'ID',
     38 => 'グループ一覧',
     39 => 'パスワード (再入力)',
     40 => '登録日',
-    41 => '最終ログインの日付',
-    42 => '無効',
-    43 => 'ユーザのログイン待ち',
-    44 => '管理者の承認待ち',
+    41 => '最終ログイン',
+    42 => '禁止',
+    43 => '有効になるのを待機中',
+    44 => '承認されるのを待機中',
     45 => '有効',
     46 => 'ユーザの状態',
-    47 => '編集'
+    47 => '編集',
+    48 => '管理者グループを表示',
+    49 => '管理者グループ',
+    50 => 'このグループを管理者グループとしてフィルタリングするには、チェックしてください。',
+    51 => 'オンライン期間',
+    52 => '<br>注: 「オンライン期間」とは、最初にアカウントを登録してから前回ログインした時までの日数です。',
+    53 => '登録済み',
+    54 => '一括削除',
+    55 => 'config.phpで <code>$_CONF[\'lastlogin\'] = true;</code> としている場合しか、この機能は働きません。',
+    56 => '削除したーユーザの種類を選択して、「リスト更新」をクリックしてください。次に、削除したくないユーザのチェックを外してから、「削除」をクリックしてください。このリストがページをまたがって伸びている場合、現在表示されているユーザしか削除されないことにご注意ください。',
+    57 => '幽霊ユーザ',
+    58 => '一時的ユーザ',
+    59 => 'かつてのユーザ',
+    60 => '',
+    61 => 'ヶ月前に登録したが、一度もログインしていないユーザ。',
+    62 => '',
+    63 => 'ヶ月前に登録して、それから24時間以内にログインしたが、それ以来一度も戻ってきてログインしていないユーザ。',
+    64 => '単に ',
+    65 => 'ヶ月間、サイトを訪問していない普通のユーザ。',
+    66 => 'リストを更新',
+    67 => '登録してから何ヶ月経つか',
+    68 => 'オンライン時間',
+    69 => 'オフライン月数',
+    70 => '削除できませんでした',
+    71 => 'きちんと削除されました',
+    72 => '削除するユーザが選択されていません',
+    73 => '選択したユーザをすべて削除してもよいですか（元に戻せません）？',
+    74 => '最近のユーザ',
+    75 => '最近 ',
+    76 => ' ヶ月の間に登録したユーザ'
 );
 
 ###############################################################################
@@ -895,7 +917,7 @@
     10 => 'タイトル',
     11 => '開始日',
     12 => 'URL',
-    13 => 'カテゴリー',
+    13 => '話題',
     14 => '日付',
     15 => '話題',
     16 => 'ユーザ名',
@@ -904,67 +926,20 @@
     34 => '投稿の管理',
     35 => '記事の投稿',
     36 => 'リンクの投稿',
-    37 => '予定の投稿',
+    37 => '',
     38 => '登録',
     39 => '承認するべき投稿はないです',
     40 => 'ユーザ登録の申請'
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => '日',
-    2 => '月',
-    3 => '火',
-    4 => '水',
-    5 => '木',
-    6 => '金',
-    7 => '土',
-    8 => '予定の追加',
-    9 => '%sに関連する予定',
-    10 => '個人用予定：',
-    11 => '全体のカレンダー',
-    12 => '個人用カレンダー',
-    13 => '１月',
-    14 => '２月',
-    15 => '３月',
-    16 => '４月',
-    17 => '５月',
-    18 => '６月',
-    19 => '７月',
-    20 => '８月',
-    21 => '９月',
-    22 => '１０月',
-    23 => '１１月',
-    24 => '１２月',
-    25 => '戻る： ',
-    26 => '前日',
-    27 => '週',
-    28 => '個人用カレンダー：',
-    29 => '公開用カレンダー',
-    30 => '予定の削除',
-    31 => '追加',
-    32 => '予定',
-    33 => '日付',
-    34 => '時間',
-    35 => '追加（簡易版）',
-    36 => '登録',
-    37 => '本サイトでは個人用カレンダーは利用できません',
-    38 => '個人用予定の編集',
-    39 => '日',
-    40 => '週',
-    41 => '月'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
-    1 => 'グループにメールを送信',
-    2 => '送信元',
+    1 => 'グループメール送信',
+    2 => '送信者名',
     3 => '返信先',
-    4 => 'タイトル',
+    4 => '件名',
     5 => '内容',
     6 => '送信先：',
     7 => 'すべてのユーザ',
@@ -974,12 +949,12 @@
     11 => '緊急！',
     12 => '送る',
     13 => '入力し直す',
-    14 => 'ユーザ設定を無視して送る',
+    14 => 'ユーザの受信許可設定を無視して送る',
     15 => '送信中にエラーが発生。宛先： ',
     16 => 'メッセージの送信が完了しました。宛先：',
     17 => "<a href={$_CONF['site_admin_url']}/mail.php>他のメッセージを送る</a>",
-    18 => 'To',
-    19 => 'NOTE: サイトの登録者全員にメールを送るには、ドロップダウンリストから「Logged-in Users」を選択してください。',
+    18 => '送信先',
+    19 => '補足: サイトの登録者全員にメールを送るには、ドロップダウンリストから「Logged-in Users」を選択してください。',
     20 => "<successcount> 件のメッセージの送信に成功し、<failcount> 件のメッセージの送信には失敗しました。個別のメッセージの送信状態は次のとおりです。<a href=\"{$_CONF['site_admin_url']}/mail.php\">別のメッセージを送信</a>するか、<a href=\"{$_CONF['site_admin_url']}/moderation.php\">管理画面に戻る</a>ことができます",
     21 => '送信失敗',
     22 => '送信成功',
@@ -1046,7 +1021,7 @@
     12 => '管理画面',
     13 => 'フィードを修正・削除する場合は、タイトル左のアイコンをクリックしてください。新しいフィードを作成する場合は、「新規フィード」をクリックしてください。',
     14 => 'タイトル',
-    15 => '種別',
+    15 => 'タイプ',
     16 => 'ファイル名',
     17 => 'フォーマット',
     18 => '更新日',
@@ -1059,39 +1034,41 @@
     25 => 'フィードのタイトル',
     26 => '配信条件',
     27 => 'エントリの長さ',
-    28 => '(0 = 本文なし, 1 = 本文すべて, other = 指定した文字数に制限。)',
+    28 => '(0 = 本文なし, 1 = 本文全て, other = 指定した文字数に制限。)',
     29 => '詳細',
     30 => '更新',
     31 => '文字コード',
     32 => '言語',
-    33 => 'カテゴリ',
+    33 => '話題',
     34 => '件',
     35 => '時間以内',
-    36 => 'フィードの種別を選択してください。',
+    36 => 'フィードのタイプを選択してください。',
     37 => 'RSS配信を有効にするためには、関係するプラグインを少なくとも一つインストールしておいて下さい。以下では、Geeklogのフィードを作成するのか、プラグインで取得するフィードを作成するのか選択してください。',
     38 => 'エラー: 入力していない項目があります。',
     39 => 'フィードのタイトル、詳細、ファイル名を入力してください。',
     40 => 'エントリ数または、取得する時間を入力してください。',
     41 => 'リンク',
-    42 => 'イベント',
+    42 => '',
     43 => 'すべて',
     44 => 'なし',
-    45 => 'この話題のタイトルをリンクする',
+    45 => 'ヘッダーリンクする話題',
     46 => '表示件数',
     47 => '検索',
     48 => '編集',
     49 => 'ロゴ',
-    50 => "本サイトからの相対URL ({$_CONF['site_url']})"
+    50 => "本サイトからの相対URL ({$_CONF['site_url']})",
+    51 => '選択したフィード名は他のフィードで使用されています。別の名前にしてください。',
+    52 => 'エラー: このファイル名は既に使用されています'
 );
 
 ###############################################################################
 # confirmation and error messages
 
 $MESSAGE = array(
-    1 => "パスワードをメールで送信しましたので確認してください。利用方法はメールを参照してください。それから、{$_CONF['site_name']}を使ってくれてありがとう。",
-    2 => "{$_CONF['site_name']} に記事を投稿してくれてありがとう。記事はスタッフに送られたので、承認されればすぐにサイトに掲載されます。",
-    3 => "{$_CONF['site_name']} におすすめサイトを投稿してくれてありがとう。リンクはスタッフに送られたので、承認されればすぐに<a href={$_CONF['site_url']}/links.php>リンク</a> に掲載されます。",
-    4 => "{$_CONF['site_name']} に予定を投稿してくれてありがとう。予定はスタッフに送られたので、承認されればすぐに<a href={$_CONF['site_url']}/calendar.php>カレンダー</a> に掲載されます。",
+    1 => "パスワードをメールで送信しましたので確認してください。利用方法はメールを参照してください。{$_CONF['site_name']}",
+    2 => "{$_CONF['site_name']} に記事を投稿してくれてありがとうございます。記事はスタッフに通知しました。承認されればすぐにサイトに掲載されます。",
+    3 => '',
+    4 => '',
     5 => 'アカウント情報の変更を反映しました。',
     6 => '表示設定を保存しました。',
     7 => 'コメントの設定の変更を反映しました。',
@@ -1104,26 +1081,26 @@
     14 => '話題とそれに含まれるすべての記事とブロックを削除しました',
     15 => 'リンクの変更を反映しました。',
     16 => 'リンクを削除しました。',
-    17 => '予定の変更を反映しました。',
-    18 => '予定を削除しました。',
-    19 => '投票の変更を反映しました。',
-    20 => '投票を削除しました。',
-    21 => '新規ユーザを作成しました。',
+    17 => '',
+    18 => '',
+    19 => '',
+    20 => '',
+    21 => 'ユーザ情報は保存されました。',
     22 => 'ユーザを削除しました。',
-    23 => '予定ＩＤがなかったため、予定を追加できませんでした。',
-    24 => '予定の変更をカレンダーに反映させました。',
-    25 => 'ログインしないと個人用カレンダーを表示できません。',
-    26 => '予定情報を個人カレンダーから削除しました。',
+    23 => '',
+    24 => '',
+    25 => '',
+    26 => '',
     27 => 'メッセージを送信しました。',
     28 => 'プラグインを保存しました',
-    29 => '本サイトでは個人用カレンダーは使用できません',
+    29 => '',
     30 => 'アクセスが拒否されました',
     31 => '話題管理用画面へのアクセス権がありません。管理権限のない場所へのアクセスはすべて記録されます。',
     32 => '記事管理用画面へのアクセス権がありません。管理権限のない場所へのアクセスはすべて記録されます。',
     33 => 'ブロック編集用画面へのアクセス権がありません。管理権限のない場所へのアクセスはすべて記録されます。',
-    34 => 'リンク管理用画面へのアクセス権がありません。管理権限のない場所へのアクセスはすべて記録されます。',
-    35 => '予定管理用画面へのアクセス権がありません。管理権限のない場所へのアクセスはすべて記録されます。',
-    36 => '投票管理用画面へのアクセス権がありません。管理権限のない場所へのアクセスはすべて記録されます。',
+    34 => '',
+    35 => '',
+    36 => '',
     37 => 'ユーザ管理用画面へのアクセス権がありません。管理権限のない場所へのアクセスはすべて記録されます。',
     38 => 'プラグイン管理用画面へのアクセス権がありません。管理権限のない場所へのアクセスはすべて記録されます。',
     39 => 'メール管理用画面へのアクセス権がありません。管理権限のない場所へのアクセスはすべて記録されます。',
@@ -1135,7 +1112,7 @@
     45 => 'プラグインを削除しました',
     46 => 'データベースバックアップユーティリティへのアクセス権がありません。管理権限のない場所へのアクセスはすべて記録されます。',
     47 => 'この機能は、*nix上でしか動きません。もし、*nix上で動かしているならば、キャッシュは無事クリアされました。Windows上で動かしている場合は、adodb_*.phpというファイルを検索して、手動で削除してください。',
-    48 => "{$_CONF['site_name']}に登録してくれてありがとう。管理者の間で審査します。登録が認められたら、あなたの登録したメールアドレスにパスワードを送信します。",
+    48 => "{$_CONF['site_name']}にご登録ありがとうございます。管理者の間で審査します。登録が認められたら、あなたの登録したメールアドレスにパスワードを送信します。",
     49 => 'グループが無事登録されました。',
     50 => 'グループを削除しました。',
     51 => 'ユーザ名が既に使われています。別の名前を指定してください。',
@@ -1162,8 +1139,17 @@
     71 => 'アカウントが登録されて、管理者の承認を待っています。',
     72 => 'プラグインのインストール時にエラーがありました。error.logを確認してください。',
     73 => 'プラグインの削除時にエラーがありました。See error.logを確認してください。',
-    74 => 'pingbackが無事送られました。',
-    75 => 'トラックバックはPOST requestで送る必要があります。'
+    74 => 'ピングバックが無事送られました。',
+    75 => 'トラックバックはPOST requestで送る必要があります。',
+    76 => 'この項目を削除してもよいですか？',
+    77 => '警告:<br>デフォルトのエンコーディングをUTF-8に設定していますが、サーバーがマルチバイトエンコーディングをサポートしていません。PHP用に mbstring モジュールをインストールするか、UTF-8ではないキャラクタセットないし言語に変更してください。',
+    78 => 'Eメールアドレスと確認用アドレスが同じか確認してください。',
+    79 => '開こうしたページは、このサイトにもはや存在していない関数を参照しています。',
+    80 => 'このフィードを作成したプラグインは、現在無効にされています。そのプラグインを再び有効にしなければ、フィードを編集できません。',
+    81 => 'ログイン情報の入力が不正確だったようです。もう一度、ログインし直してください。',
+    82 => 'ログイン試行回数のリミットを超えました。しばらく経ってから、ログインし直してください。',
+    83 => 'パスワード、Eメール、認証の保存期間を変更するには、現在のパスワードを入力してください。',
+    84 => 'アカウントを削除するには、現在のパスワードを入力してください。'
 );
 
 ###############################################################################
@@ -1173,12 +1159,12 @@
     'ownerroot' => '所有者/Root',
     'group' => 'グループ',
     'readonly' => '読みとり専用',
-    'accessrights' => '権限設定',
+    'accessrights' => 'パーミッション',
     'owner' => '所有者',
     'grantgrouplabel' => '上記のグループに編集権限を与える',
-    'permmsg' => '参考: メンバーはログインしているメンバーすべて、ゲストーユーザは、ログインせずにサイトをしているすべての人を意味します。',
-    'securitygroups' => 'Security Groups（セキュリティグループ）',
-    'editrootmsg' => "管理権限を持っていても、rootユーザにならずにrootユーザを編集することは出来ません。それ以外のユーザの編集は可能です。権限なしにrootユーザを編集しようとした場合、記録に残ることに注意してください。<a href=\"{$_CONF['site_admin_url']}/user.php\">ユーザ管理ページ</a>に戻る",
+    'permmsg' => '参考: メンバーとはログインしているメンバー。ゲストユーザとは、ログインせずに閲覧している一般の閲覧者。',
+    'securitygroups' => 'セキュリティグループ',
+    'editrootmsg' => "管理権限を持っていても、rootユーザにならずにrootユーザを編集することはできません。それ以外のユーザの編集は可能です。権限なしにrootユーザを編集しようとした場合、記録に残ることに注意してください。<a href=\"{$_CONF['site_admin_url']}/user.php\">ユーザ管理ページ</a>に戻る",
     'securitygroupsmsg' => 'このユーザが所属するグループにチェックしてください。',
     'groupeditor' => 'グループの編集',
     'description' => '詳細',
@@ -1193,19 +1179,18 @@
     'yes' => 'Yes',
     'no' => 'No',
     'corerightsdescr' => "このグループは、{$_CONF['site_name']}の中核グループです。そのため、本グループの権限を編集することはできないため、下記の権限リストは読みとり専用となっています。",
-    'groupmsg' => '本サイトのSecurity Groups（セキュリティグループ）は階層的になっています。本グループを下記のグループに追加する場合、そのグループの持つ権限と同じ権限を本グループにも与えることになります。可能であれば、本グループに権限を与える場合、下記のグループの権限を継承させることが望ましい方法です。本グループに個別に権限を与える場合は、下記の「権限」部分から様々な機能に関する権限を選択することができます。本グループを追加する場合は、下記のグループの横にあるボックスをチェックするだけです。',
+    'groupmsg' => '本サイトのセキュリティグループは階層的になっています。本グループを下記のグループに追加する場合、そのグループの持つ権限と同じ権限を本グループにも与えることになります。可能であれば、本グループに権限を与える場合、下記のグループの権限を継承させることが望ましい方法です。本グループに個別に権限を与える場合は、下記の「権限」部分から様々な機能に関する権限を選択することができます。本グループを追加する場合は、下記のグループの横にあるボックスをチェックするだけです。',
     'coregroupmsg' => "本グループは{$_CONF['site_name']}のcore（中核）グループです。そのため、本グループの所属するグループは編集できません。下記のリストは読みとり専用となっています。",
     'rightsdescr' => 'グループのアクセス権は下記の権限で与えられているか、グループが所属するグループ全体の権限を継承しています。下記のうち、チェックのない権限は、本グループの所属するグループから継承した権限です。チェックのある権限は本グループ自体が直接与えられている権限です。',
     'lock' => 'ロック',
-    'members' => 'メンバー',
+    'members' => 'メンバー　',
     'anonymous' => 'ゲストユーザ',
-    'permissions' => 'アクセス権限',
+    'permissions' => 'パーミッション',
     'permissionskey' => 'R = 閲覧, E = 編集, （編集権は閲覧権を含みます）',
     'edit' => '編集',
     'none' => 'なし',
     'accessdenied' => 'アクセスが拒否されました',
     'storydenialmsg' => "この記事を閲覧する権限がありません。これは、あなたが{$_CONF['site_name']}のメンバーがないためだと思われます。{$_CONF['site_name']} の<a href=users.php?mode=new> メンバーになること</a>で閲覧が可能になります。",
-    'eventdenialmsg' => "この予定を閲覧する権限がありません。これは、あなたが{$_CONF['site_name']}のメンバーがないためだと思われます。{$_CONF['site_name']} の<a href=users.php?mode=new> メンバーになること</a>で閲覧が可能になります。",
     'nogroupsforcoregroup' => 'このグループは他のどのグループにも所属していません',
     'grouphasnorights' => 'このグループは管理権限を一切所有していません。',
     'newgroup' => '新規',
@@ -1260,14 +1245,14 @@
     1 => 'ホーム',
     2 => '管理者にメール',
     3 => '記事投稿',
-    4 => 'リンク',
-    5 => '投票',
-    6 => 'カレンダー',
+    4 => '',
+    5 => '',
+    6 => '',
     7 => 'サイト情報',
     8 => '個人設定',
     9 => '検索',
     10 => '検索オプション',
-    11 => '記事の一覧'
+    11 => '記事一覧'
 );
 
 ###############################################################################
@@ -1284,7 +1269,7 @@
 
 $LANG_LOGIN = array(
     1 => 'ログインしてください',
-    2 => 'ここにアクセするにはログインしている必要があります。',
+    2 => '申し訳ありませんが、先にログインしてください。',
     3 => 'ログイン',
     4 => '新規作成'
 );
@@ -1316,12 +1301,12 @@
     'trackback'          => 'トラックバック',
     'from'               => 'from',
     'tracked_on'         => 'トラックバック　オン',
-    'read_more'          => '[続きを読む]',
+    'read_more'          => '続きを読む',
     'intro_text'         => "'%s'について他のサイトでは次のように言及されています:",
-    'no_comments'        => 'このエントリにはトラックバックがありません。',
+    'no_comments'        => '',
     'this_trackback_url' => 'このエントリのトラックバックURL:',
     'num_comments'       => '%d件のトラックバック',
-    'send_trackback'     => 'Pingを送る',
+    'send_trackback'     => 'トラックバック・ピングを送る',
     'preview'            => 'プレビュー',
     'editor_title'       => 'トラックバックを送る',
     'trackback_url'      => 'トラックバックURL',
@@ -1346,43 +1331,43 @@
     'autodetect_failed'  => 'コメントを送ろうとした記事のトラックバックURLを見つけられませんでした。URLを下に入力してください。',
     'trackback_explain'  => '以下のリンクからトラックバックを送りたいURLを選択してください。その記事の正しいトラックバックURLを決定します。URLがわかっているなら<a href="%s">自分で入力</a>することもできます。',
     'no_links_trackback' => 'リンクが見つかりません。このエントリにトラックバックを送信できません。',
-    'pingback'           => 'Pingback',
-    'pingback_results'   => 'Pingbackの結果',
-    'send_pings'         => 'Pingを送信',
-    'send_pings_for'     => '"%s"にpingを送信',
-    'no_links_pingback'  => 'リンクが見つかりません。このエントリへのpingbackは送信されませんでした。',
-    'pingback_success'   => 'Pingbackを送信しました。',
-    'no_pingback_url'    => 'Pingback URLが見つかりません。',
+    'pingback'           => 'ピングバック',
+    'pingback_results'   => 'ピングバックの結果',
+    'send_pings'         => 'ピングを送信',
+    'send_pings_for'     => '"%s"にピングを送信',
+    'no_links_pingback'  => 'リンクが見つかりません。このエントリへのピングバックは送信されませんでした。',
+    'pingback_success'   => 'ピングバックを送信しました。',
+    'no_pingback_url'    => 'ピングバックURLが見つかりません。',
     'resend'             => '再送',
-    'ping_all_explain'   => 'あなたがリンクしたことを相手のサイトに知らせたり(<a href="http://en.wikipedia.org/wiki/Pingback">Pingback</a>)、Weblogディレクトリサービスにpingを送ってサイトが更新されたことを知らせたり、誰かのサイトの記事について書いたときに<a href="http://ja.wikipedia.org/wiki/%E3%83%88%E3%83%A9%E3%83%83%E3%82%AF%E3%83%90%E3%83%83%E3%82%AF">トラックバック</a>を送ったりすることができます。',
-    'pingback_button'    => 'Pingbackを送信',
-    'pingback_short'     => 'このエントリからリンクされたすべてのサイトにPingbackを送信',
-    'pingback_disabled'  => '(Pingbackは無効です)',
-    'ping_button'        => 'Pingを送信',
-    'ping_short'         => 'WeblogディレクトリサービスにPing。',
-    'ping_disabled'      => '(Pingは無効です)',
+    'ping_all_explain'   => 'あなたがリンクしたことを相手のサイトに知らせたり(<a href="http://en.wikipedia.org/wiki/Pingback">ピングバック</a>)、Weblogディレクトリサービスにピングを送ってサイトが更新されたことを知らせたり、誰かのサイトの記事について書いたときに<a href="http://ja.wikipedia.org/wiki/%E3%83%88%E3%83%A9%E3%83%83%E3%82%AF%E3%83%90%E3%83%83%E3%82%AF">トラックバック</a>を送ったりすることができます。',
+    'pingback_button'    => 'ピングバックを送信',
+    'pingback_short'     => 'このエントリからリンクされたすべてのサイトにピングバックを送信',
+    'pingback_disabled'  => '(ピングバックは無効です)',
+    'ping_button'        => 'ピングを送信',
+    'ping_short'         => 'Weblogディレクトリサービスにピング。',
+    'ping_disabled'      => '(ピングは無効です)',
     'trackback_button'   => 'トラックバックを送信',
     'trackback_short'    => 'トラックバックを送信。',
     'trackback_disabled' => '(トラックバックは無効です)',
-    'may_take_a_while'   => 'PingbackやPingの送信は時間がかかります。ご注意ください。',
-    'ping_results'       => 'Pingの結果',
-    'unknown_method'     => '不明なPingメソッドです。',
-    'ping_success'       => 'Pingを送信しました。',
+    'may_take_a_while'   => 'ピングバックやピングの送信は時間がかかります。ご注意ください。',
+    'ping_results'       => 'ピングの結果',
+    'unknown_method'     => '不明なピングメソッドです。',
+    'ping_success'       => 'ピングを送信しました。',
     'error_site_name'    => 'サイト名を入力してください。',
     'error_site_url'     => 'サイトのURLを入力してください。',
-    'error_ping_url'     => '正しいPing URLを入力してください。',
+    'error_ping_url'     => '正しいピングURLを入力してください。',
     'no_services'        => 'Weblogディレクトリサービスが設定されていません。',
     'services_headline'  => 'Weblogディレクトリサービス',
     'admin_home'         => '管理画面',
     'new_service'        => '新規サービス',
     'service_explain'    => 'Weblogディレクトリサービス修正・削除する場合は、編集アイコンをクリックしてください。新しいWeblogディレクトリサービスを作成する場合は、「新規サービス」をクリックしてください。',
     'service'            => 'サービス',
-    'ping_method'        => 'Pingメソッド',
+    'ping_method'        => 'ピングメソッド',
     'service_enabled'    => '有効にする',
     'service_website'    => 'Webサイト',
-    'service_ping_url'   => 'Ping URL',
-    'ping_standard'      => 'Standard Ping',
-    'ping_extended'      => 'Extended Ping',
+    'service_ping_url'   => 'ピングURL',
+    'ping_standard'      => '標準ピング',
+    'ping_extended'      => '拡張ピング',
     'ping_unknown'       => '(不明なメソッド)',
     'edit_service'       => 'Weblogディレクトリサービスの編集',
     'button_save'        => '保存',
@@ -1396,21 +1381,22 @@
     'search'             => '検索',
     'limit_results'      => '結果を制限する',
     'submit'             => '送信',
-    'pingback_explain'   => 'PngbackするURLを記入してください。The pingback will point to your site\'s homepage.',
-    'pingback_url'       => 'Pingback URL',
+    'pingback_explain'   => 'ピングバックするURLを入力してください。ピングバックで他のサイトからリンク が張られたことを自動的に通知されます',
+    'pingback_url'       => 'ピングバックURL',
     'site_url'           => 'このサイトのURL',
-    'pingback_note'      => 'To send a pingback for a story, go to the list of stories and click on "' . $LANG24[21] . '" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
-    'pbtarget_missing'   => 'No Pingback URL',
-    'pbtarget_required'  => 'pingback URLを入力してください',
-    'pb_error_details'   => '次のpingbackの送信中にエラーがありました:'
+    'pingback_note'      => '記事へのピングバックを送るには、記事をクリックしてください。"' . $LANG24[21] . '" に関係している記事にピングバックを送るには、<a href="%s">ここをクリック</a>.',
+    'pbtarget_missing'   => 'ピングバックURLではありません。',
+    'pbtarget_required'  => 'ピングバックURLを入力してください',
+    'pb_error_details'   => '次のピングバックの送信中にエラー:',
+    'delete_trackback'   => 'トラックバック削除: '
 );
 
 ###############################################################################
 # directory.php
 
 $LANG_DIR = array (
-    'title'            => '記事の一覧',
-    'title_year'       => '%dの記事一覧',
+    'title'            => '記事一覧',
+    'title_year'       => '%d年の記事一覧',
     'title_month_year' => '%d年%s月の記事一覧',
     'nav_top'          => '記事一覧のトップに戻る',
     'no_articles'      => '記事はありません'
@@ -1426,7 +1412,8 @@
     # %n    amount, "2", "20" etc
     # %t    time, "2" (weeks)
     # %s    scale, "hrs", "weeks"
-    'new_string'  => 'ここ%t%sで新着%i%n件',
+//  'new_string'  => 'ここ%t %sの間に%n件の%iが更新',
+    'new_string'  => '最近 %t%s間で新着%i %n件',
     'new_last'    => '最近 %t %s',
     # other strings
     'minutes'     => '分',
@@ -1441,6 +1428,37 @@
     'month'       => 'ヶ月'
 );
 
+###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => ' 1月',
+    2 => ' 2月',
+    3 => ' 3月',
+    4 => ' 4月',
+    5 => ' 5月',
+    6 => ' 6月',
+    7 => ' 7月',
+    8 => ' 8月',
+    9 => ' 9月',
+    10 => '10月',
+    11 => '11月',
+    12 => '12月'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => '日',
+    2 => '月',
+    3 => '火',
+    4 => '水',
+    5 => '木',
+    6 => '金',
+    7 => '土'
+);
+
 ################################################################################
 # Admin - Strings
 #
@@ -1452,8 +1470,10 @@
     'limit_results' => '結果の絞り込み',
     'submit'        => '登録',
     'edit'          => '編集',
+    'edit_adv'      => 'アドバンストエディタ',
     'admin_home'    => '管理画面',
     'create_new'    => '新規作成',
+    'create_new_adv'=> '新規作成(アドバンスト)',
     'enabled'       => '有効にする',
     'title'         => 'タイトル',
     'type'          => 'タイプ',
@@ -1462,9 +1482,12 @@
     'save'          => '保存',
     'cancel'        => 'キャンセル',
     'delete'        => '削除',
+    'delete_sel'    => '削除選択',
     'copy'          => 'コピー',
-    'no_results'    => '- 記事が見つかりませんでした -',
-    'data_error'    => '送られたデータに問題があります。データをチェックしてください'
+    'no_results'    => '- 見つかりませんでした -',
+    'data_error'    => '送られたデータに問題があります。データをチェックしてください',
+    'preview'       => 'Preview',
+    'records_found' => 'Records found'
 );
 
 # Localisation of the texts for the various drop-down menus that are actually
@@ -1523,4 +1546,4 @@
     -1  => 'トラックバック停止'
 );
 
-?>
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/norwegian.php 1.4.1.src/cpanel-glprivate/language/norwegian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/norwegian.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/norwegian.php	2006-09-17 03:58:44.000000000 -0500
@@ -176,28 +176,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Kalender',
-    2 => 'Beklager, det er ingen begivenheter  vise.',
-    3 => 'Nr',
-    4 => 'Hvor',
-    5 => 'Beskrivelse',
-    6 => 'Legg Til En Begivenhet',
-    7 => 'Kommende Begivenheter',
-    8 => "Ved  legge denne begivenheten til din kalender, kan du raskt f et overblikk over kun\nde begivenheter du er interessert i, ved  trykke p \"Min Kalender\" i Brukermenyen",
-    9 => 'Legg Til Min Kalender',
-    10 => 'Fjern fra Min Kalender',
-    11 => "Legger til Begivenhet til {$_USER['username']}'s Kalender",
-    12 => 'Begivenhet',
-    13 => 'Starter',
-    14 => 'Slutter',
-    15 => 'tilbake til Kalender'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -359,7 +341,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -676,38 +691,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Begivenhet Editor',
-    2 => 'Error',
-    3 => 'Begivenhet Overskrift',
-    4 => 'Begivenhet URL',
-    5 => 'Begivenhet Start Dato',
-    6 => 'Begivenhet slutt Dato',
-    7 => 'Begivenhet sted',
-    8 => 'Begivenhet Beskrivelse',
-    9 => '(ta med http://)',
-    10 => 'Du m ta med dato og tid, beskrivelse og sted!',
-    11 => 'Begivenhet Bestyrer',
-    12 => 'For  endre eller slette en begivenhet, klikk p begivenheten under. For  lage en ny begivenhet klikk p Ny Begivenhet ovenfor.',
-    13 => 'Begivenhet Overskrift',
-    14 => 'Start Dato',
-    15 => 'Slutt Dato',
-    16 => 'Adgang Nektet',
-    17 => "Du forsker  f tilgang til en begivenhet som du ikke har rettigheter til. Forsket er logget. Vennligst <a href=\"{$_CONF['site_admin_url']}/event.php\">g tilbake til administrasjonsiden for begivenheter</a>.",
-    18 => 'Ny Begivenhet',
-    19 => 'Admin Hovedside',
-    20 => 'lagre',
-    21 => 'avbryt',
-    22 => 'slett',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -798,7 +784,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -886,7 +874,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -916,53 +933,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Sndag',
-    2 => 'Mandag',
-    3 => 'Tirsdag',
-    4 => 'Onsdag',
-    5 => 'Torsdag',
-    6 => 'Fredag',
-    7 => 'Lrdag',
-    8 => 'Legg til Begivenhet',
-    9 => '%s Begivenhet',
-    10 => 'Begivenheter for',
-    11 => 'Master Kalender',
-    12 => 'Min Kalender',
-    13 => 'Januar',
-    14 => 'Februar',
-    15 => 'Mars',
-    16 => 'April',
-    17 => 'Mai',
-    18 => 'Juni',
-    19 => 'Juli',
-    20 => 'August',
-    21 => 'September',
-    22 => 'Oktober',
-    23 => 'November',
-    24 => 'Desember',
-    25 => 'Tilbake til ',
-    26 => 'Hele Dagen',
-    27 => 'uke',
-    28 => 'Personlig Kalender for',
-    29 => 'Offentlig Kalender',
-    30 => 'slett begivenhet',
-    31 => 'Legg til',
-    32 => 'Begivenhet',
-    33 => 'Dato',
-    34 => 'Tid',
-    35 => 'Hurtig Legg til',
-    36 => 'Send inn',
-    37 => 'Beklager, personlige kalendere kan ikke benyttes p dette nettstedet',
-    38 => 'Personlig Begivenhet Editor',
-    39 => 'Dag',
-    40 => 'Uke',
-    41 => 'Mned'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1086,7 +1056,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1167,7 +1139,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1209,7 +1190,6 @@
     'none' => 'Ingen',
     'accessdenied' => 'Adgang Nektet',
     'storydenialmsg' => "Du har ikke adgang til  se denne artikkelen. Dette kan skyldes at du ikke er medlem av {$_CONF['site_name']}. Vennligst <a href=users.php?mode=new> bli medlem</a> av {$_CONF['site_name']} for  oppn full tilgang!",
-    'eventdenialmsg' => "Du har ikke adgang til  se denne begivenheten. Dette kan skyldes at du ikke er medlem av {$_CONF['site_name']}.  Vennligst <a href=users.php?mode=new> bli medlem</a> av {$_CONF['site_name']} for  oppn full tilgang!",
     'nogroupsforcoregroup' => 'Denne gruppen hrer ikke til noen av de andre gruppene',
     'grouphasnorights' => 'Denne gruppen har ikke tilgang til administrative funksjoner p dette nettstedet',
     'newgroup' => 'Ny Gruppe',
@@ -1395,7 +1375,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1435,6 +1416,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Januar',
+    2 => 'Februar',
+    3 => 'Mars',
+    4 => 'April',
+    5 => 'Mai',
+    6 => 'Juni',
+    7 => 'Juli',
+    8 => 'August',
+    9 => 'September',
+    10 => 'Oktober',
+    11 => 'November',
+    12 => 'Desember'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Sndag',
+    2 => 'Mandag',
+    3 => 'Tirsdag',
+    4 => 'Onsdag',
+    5 => 'Torsdag',
+    6 => 'Fredag',
+    7 => 'Lrdag'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1445,8 +1457,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1455,9 +1469,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/norwegian_utf-8.php 1.4.1.src/cpanel-glprivate/language/norwegian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/norwegian_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/norwegian_utf-8.php	2006-09-17 03:58:44.000000000 -0500
@@ -176,28 +176,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Kalender',
-    2 => 'Beklager, det er ingen begivenheter å vise.',
-    3 => 'Når',
-    4 => 'Hvor',
-    5 => 'Beskrivelse',
-    6 => 'Legg Til En Begivenhet',
-    7 => 'Kommende Begivenheter',
-    8 => "Ved å legge denne begivenheten til din kalender, kan du raskt få et overblikk over kun\nde begivenheter du er interessert i, ved å trykke på \"Min Kalender\" i Brukermenyen",
-    9 => 'Legg Til Min Kalender',
-    10 => 'Fjern fra Min Kalender',
-    11 => "Legger til Begivenhet til {$_USER['username']}'s Kalender",
-    12 => 'Begivenhet',
-    13 => 'Starter',
-    14 => 'Slutter',
-    15 => 'tilbake til Kalender'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -359,7 +341,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -676,38 +691,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Begivenhet Editor',
-    2 => 'Error',
-    3 => 'Begivenhet Overskrift',
-    4 => 'Begivenhet URL',
-    5 => 'Begivenhet Start Dato',
-    6 => 'Begivenhet slutt Dato',
-    7 => 'Begivenhet sted',
-    8 => 'Begivenhet Beskrivelse',
-    9 => '(ta med http://)',
-    10 => 'Du må ta med dato og tid, beskrivelse og sted!',
-    11 => 'Begivenhet Bestyrer',
-    12 => 'For å endre eller slette en begivenhet, klikk på begivenheten under. For å lage en ny begivenhet klikk på Ny Begivenhet ovenfor.',
-    13 => 'Begivenhet Overskrift',
-    14 => 'Start Dato',
-    15 => 'Slutt Dato',
-    16 => 'Adgang Nektet',
-    17 => "Du forsøker å få tilgang til en begivenhet som du ikke har rettigheter til. Forsøket er logget. Vennligst <a href=\"{$_CONF['site_admin_url']}/event.php\">gå tilbake til administrasjonsiden for begivenheter</a>.",
-    18 => 'Ny Begivenhet',
-    19 => 'Admin Hovedside',
-    20 => 'lagre',
-    21 => 'avbryt',
-    22 => 'slett',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -798,7 +784,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -886,7 +874,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -916,53 +933,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Søndag',
-    2 => 'Mandag',
-    3 => 'Tirsdag',
-    4 => 'Onsdag',
-    5 => 'Torsdag',
-    6 => 'Fredag',
-    7 => 'Lørdag',
-    8 => 'Legg til Begivenhet',
-    9 => '%s Begivenhet',
-    10 => 'Begivenheter for',
-    11 => 'Master Kalender',
-    12 => 'Min Kalender',
-    13 => 'Januar',
-    14 => 'Februar',
-    15 => 'Mars',
-    16 => 'April',
-    17 => 'Mai',
-    18 => 'Juni',
-    19 => 'Juli',
-    20 => 'August',
-    21 => 'September',
-    22 => 'Oktober',
-    23 => 'November',
-    24 => 'Desember',
-    25 => 'Tilbake til ',
-    26 => 'Hele Dagen',
-    27 => 'uke',
-    28 => 'Personlig Kalender for',
-    29 => 'Offentlig Kalender',
-    30 => 'slett begivenhet',
-    31 => 'Legg til',
-    32 => 'Begivenhet',
-    33 => 'Dato',
-    34 => 'Tid',
-    35 => 'Hurtig Legg til',
-    36 => 'Send inn',
-    37 => 'Beklager, personlige kalendere kan ikke benyttes på dette nettstedet',
-    38 => 'Personlig Begivenhet Editor',
-    39 => 'Dag',
-    40 => 'Uke',
-    41 => 'Måned'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1086,7 +1056,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1167,7 +1139,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1209,7 +1190,6 @@
     'none' => 'Ingen',
     'accessdenied' => 'Adgang Nektet',
     'storydenialmsg' => "Du har ikke adgang til å se denne artikkelen. Dette kan skyldes at du ikke er medlem av {$_CONF['site_name']}. Vennligst <a href=users.php?mode=new> bli medlem</a> av {$_CONF['site_name']} for å oppnå full tilgang!",
-    'eventdenialmsg' => "Du har ikke adgang til å se denne begivenheten. Dette kan skyldes at du ikke er medlem av {$_CONF['site_name']}.  Vennligst <a href=users.php?mode=new> bli medlem</a> av {$_CONF['site_name']} for å oppnå full tilgang!",
     'nogroupsforcoregroup' => 'Denne gruppen hører ikke til noen av de andre gruppene',
     'grouphasnorights' => 'Denne gruppen har ikke tilgang til administrative funksjoner på dette nettstedet',
     'newgroup' => 'Ny Gruppe',
@@ -1395,7 +1375,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1435,6 +1416,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Januar',
+    2 => 'Februar',
+    3 => 'Mars',
+    4 => 'April',
+    5 => 'Mai',
+    6 => 'Juni',
+    7 => 'Juli',
+    8 => 'August',
+    9 => 'September',
+    10 => 'Oktober',
+    11 => 'November',
+    12 => 'Desember'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Søndag',
+    2 => 'Mandag',
+    3 => 'Tirsdag',
+    4 => 'Onsdag',
+    5 => 'Torsdag',
+    6 => 'Fredag',
+    7 => 'Lørdag'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1445,8 +1457,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1455,9 +1469,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/polish.php 1.4.1.src/cpanel-glprivate/language/polish.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/polish.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/polish.php	2006-09-17 03:58:44.000000000 -0500
@@ -163,28 +163,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Kalendarz Wydarze',
-    2 => 'Sorry, brak wydarze.',
-    3 => 'Kiedy',
-    4 => 'Gdzie',
-    5 => 'Opis',
-    6 => 'Dodaj Wydarzenie',
-    7 => 'Zbliajce si Wydarzenia',
-    8 => 'Przez dodanie tego wydarzenie do swojego kalendarza moesz szybko przeglda interesujce ci wydarzenia klikajc "Mj Kalendarz" z poziomu Menu Uytkownika.',
-    9 => 'Dodaj do Mojego Kalendarza',
-    10 => 'Usu z Mojego Kalendarza',
-    11 => "Dodawanie Wydarzenia do Kalendarza {$_USER['username']}",
-    12 => 'Wydarzenie',
-    13 => 'Rozpoczcie',
-    14 => 'Zakoczenie',
-    15 => 'Powrt do Kalendarza'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -346,7 +328,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -663,38 +678,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Edytor Wydarze',
-    2 => 'Error',
-    3 => 'Tytu Wydarzenia',
-    4 => 'URL Wydarzenia',
-    5 => 'Data Pocztkowa Wydarzenia',
-    6 => 'Data Kocowa Wydarzenia',
-    7 => 'Miejsce Wydarzenia',
-    8 => 'Opis Wydarzenia',
-    9 => '(uwzgldnij http://)',
-    10 => 'Naley wpisa dat, godzin, tytu i opis wydarzenia!',
-    11 => 'Menader Wydarze',
-    12 => 'Aby zmodyfikowa lub wykasowa wydarzenie kliknij na dane wydarzenie poniej.  Aby wpisa nowe wydarzenie kliknij na Nowe Wydarzenie powyej. Kliknij [C] aby wykona kopi istniejcego wydarzenia.',
-    13 => 'Tytu Wydarzenia',
-    14 => 'Data Poczkowa',
-    15 => 'Data Kocowa',
-    16 => 'Odmowa Dostpu',
-    17 => "Prbujesz wyedytowa wydarzenie, do ktrego nie masz dostpu.  Ta prba zostaa zapisana w logu. Prosz <a href=\"{$_CONF['site_admin_url']}/event.php\">wrci do ekranu administrowania wydarzeniami</a>.",
-    18 => 'Nowe Wydarzenie',
-    19 => 'Panel Sterowania',
-    20 => 'zapisz',
-    21 => 'anuluj',
-    22 => 'kasuj',
-    23 => 'Za data poczatkowa.',
-    24 => 'Z data kocowa.',
-    25 => 'Data kocowa jest wczeniejsza od pocztkowej.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -785,7 +771,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -873,7 +861,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -903,53 +920,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Niedziela',
-    2 => 'Poniedziaek',
-    3 => 'Wtorek',
-    4 => 'roda',
-    5 => 'Czwartek',
-    6 => 'Pitek',
-    7 => 'Sobota',
-    8 => 'Dodaj Wydarzenie',
-    9 => '%s Wydarzenie',
-    10 => 'Wydarzenia',
-    11 => 'Gwny Kalendarz',
-    12 => 'Mj Kalendarz',
-    13 => 'Stycze',
-    14 => 'Luty',
-    15 => 'Marzec',
-    16 => 'Kwiecie',
-    17 => 'Maj',
-    18 => 'Czerwiec',
-    19 => 'Lipiec',
-    20 => 'Sierpie',
-    21 => 'Wrzesie',
-    22 => 'Padziernik',
-    23 => 'Listopad',
-    24 => 'Grudzie',
-    25 => 'Powrt do ',
-    26 => 'Cay Dzie',
-    27 => 'Tydzie',
-    28 => 'Kalendarz Osobisty',
-    29 => 'Kalendarz Oglny',
-    30 => 'kasuj wydarzenia',
-    31 => 'Dodaj',
-    32 => 'Wydarzenie',
-    33 => 'Data',
-    34 => 'Czas',
-    35 => 'Szybkie Dodanie',
-    36 => 'Wylij',
-    37 => 'Sorry, funkcja kalendarz osobisty nie jest dostpna',
-    38 => 'Edytor Osobisty',
-    39 => 'Dzie',
-    40 => 'Tydzie',
-    41 => 'Miesic'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1073,7 +1043,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1154,7 +1126,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1196,7 +1177,6 @@
     'none' => 'Brak',
     'accessdenied' => 'Odmowa Dostpu',
     'storydenialmsg' => "Brak dostpu do tego artykuu.  Prawdopodobnie nie jeste czonkiem serwisu {$_CONF['site_name']}.  Zapraszamy do <a href=users.php?mode=new> czonkostwa</a> w serwisie {$_CONF['site_name']} aby otrzyma peny dostp!",
-    'eventdenialmsg' => "Brak dostpu do tego wydarzenia.  Prawdopodobnie nie jeste czonkiem serwisu {$_CONF['site_name']}.  Zapraszamy do <a href=users.php?mode=new> czonkostwa</a> w serwisie {$_CONF['site_name']} aby otrzyma peny dostp!",
     'nogroupsforcoregroup' => 'Grupa nie naley do pozostaych grup',
     'grouphasnorights' => 'Grupa nie ma dostpu do adnych funkcji administracyjnych tego serwisu',
     'newgroup' => 'Nowa Grupa',
@@ -1382,7 +1362,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1422,6 +1403,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Stycze',
+    2 => 'Luty',
+    3 => 'Marzec',
+    4 => 'Kwiecie',
+    5 => 'Maj',
+    6 => 'Czerwiec',
+    7 => 'Lipiec',
+    8 => 'Sierpie',
+    9 => 'Wrzesie',
+    10 => 'Padziernik',
+    11 => 'Listopad',
+    12 => 'Grudzie'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Niedziela',
+    2 => 'Poniedziaek',
+    3 => 'Wtorek',
+    4 => 'roda',
+    5 => 'Czwartek',
+    6 => 'Pitek',
+    7 => 'Sobota'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1432,8 +1444,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1442,9 +1456,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/polish_utf-8.php 1.4.1.src/cpanel-glprivate/language/polish_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/polish_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/polish_utf-8.php	2006-09-17 03:58:44.000000000 -0500
@@ -163,28 +163,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Kalendarz Wydarzeń',
-    2 => 'Sorry, brak wydarzeń.',
-    3 => 'Kiedy',
-    4 => 'Gdzie',
-    5 => 'Opis',
-    6 => 'Dodaj Wydarzenie',
-    7 => 'Zbliżające się Wydarzenia',
-    8 => 'Przez dodanie tego wydarzenie do swojego kalendarza możesz szybko przeglądać interesujące cię wydarzenia klikając "Mój Kalendarz" z poziomu Menu Użytkownika.',
-    9 => 'Dodaj do Mojego Kalendarza',
-    10 => 'Usuń z Mojego Kalendarza',
-    11 => "Dodawanie Wydarzenia do Kalendarza {$_USER['username']}",
-    12 => 'Wydarzenie',
-    13 => 'Rozpoczęcie',
-    14 => 'Zakończenie',
-    15 => 'Powrót do Kalendarza'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -346,7 +328,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -663,38 +678,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Edytor Wydarzeń',
-    2 => 'Error',
-    3 => 'Tytuł Wydarzenia',
-    4 => 'URL Wydarzenia',
-    5 => 'Data Początkowa Wydarzenia',
-    6 => 'Data Końcowa Wydarzenia',
-    7 => 'Miejsce Wydarzenia',
-    8 => 'Opis Wydarzenia',
-    9 => '(uwzględnij http://)',
-    10 => 'Należy wpisać datę, godzinę, tytuł i opis wydarzenia!',
-    11 => 'Menadżer Wydarzeń',
-    12 => 'Aby zmodyfikować lub wykasować wydarzenie kliknij na dane wydarzenie poniżej.  Aby wpisać nowe wydarzenie kliknij na Nowe Wydarzenie powyżej. Kliknij [C] aby wykonać kopię istniejącego wydarzenia.',
-    13 => 'Tytuł Wydarzenia',
-    14 => 'Data Poczkowa',
-    15 => 'Data Końcowa',
-    16 => 'Odmowa Dostępu',
-    17 => "Próbujesz wyedytować wydarzenie, do którego nie masz dostępu.  Ta próba została zapisana w logu. Proszę <a href=\"{$_CONF['site_admin_url']}/event.php\">wrócić do ekranu administrowania wydarzeniami</a>.",
-    18 => 'Nowe Wydarzenie',
-    19 => 'Panel Sterowania',
-    20 => 'zapisz',
-    21 => 'anuluj',
-    22 => 'kasuj',
-    23 => 'Zła data poczatkowa.',
-    24 => 'Złą data końcowa.',
-    25 => 'Data końcowa jest wcześniejsza od początkowej.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -785,7 +771,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -873,7 +861,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -903,53 +920,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Niedziela',
-    2 => 'Poniedziałek',
-    3 => 'Wtorek',
-    4 => 'Środa',
-    5 => 'Czwartek',
-    6 => 'Piątek',
-    7 => 'Sobota',
-    8 => 'Dodaj Wydarzenie',
-    9 => '%s Wydarzenie',
-    10 => 'Wydarzenia',
-    11 => 'Główny Kalendarz',
-    12 => 'Mój Kalendarz',
-    13 => 'Styczeń',
-    14 => 'Luty',
-    15 => 'Marzec',
-    16 => 'Kwiecień',
-    17 => 'Maj',
-    18 => 'Czerwiec',
-    19 => 'Lipiec',
-    20 => 'Sierpień',
-    21 => 'Wrzesień',
-    22 => 'Październik',
-    23 => 'Listopad',
-    24 => 'Grudzień',
-    25 => 'Powrót do ',
-    26 => 'Cały Dzień',
-    27 => 'Tydzień',
-    28 => 'Kalendarz Osobisty',
-    29 => 'Kalendarz Ogólny',
-    30 => 'kasuj wydarzenia',
-    31 => 'Dodaj',
-    32 => 'Wydarzenie',
-    33 => 'Data',
-    34 => 'Czas',
-    35 => 'Szybkie Dodanie',
-    36 => 'Wyślij',
-    37 => 'Sorry, funkcja kalendarz osobisty nie jest dostępna',
-    38 => 'Edytor Osobisty',
-    39 => 'Dzień',
-    40 => 'Tydzień',
-    41 => 'Miesiąc'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1073,7 +1043,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1154,7 +1126,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1196,7 +1177,6 @@
     'none' => 'Brak',
     'accessdenied' => 'Odmowa Dostępu',
     'storydenialmsg' => "Brak dostępu do tego artykułu.  Prawdopodobnie nie jesteś członkiem serwisu {$_CONF['site_name']}.  Zapraszamy do <a href=users.php?mode=new> członkostwa</a> w serwisie {$_CONF['site_name']} aby otrzymać pełny dostęp!",
-    'eventdenialmsg' => "Brak dostępu do tego wydarzenia.  Prawdopodobnie nie jesteś członkiem serwisu {$_CONF['site_name']}.  Zapraszamy do <a href=users.php?mode=new> członkostwa</a> w serwisie {$_CONF['site_name']} aby otrzymać pełny dostęp!",
     'nogroupsforcoregroup' => 'Grupa nie należy do pozostałych grup',
     'grouphasnorights' => 'Grupa nie ma dostępu do żadnych funkcji administracyjnych tego serwisu',
     'newgroup' => 'Nowa Grupa',
@@ -1382,7 +1362,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1422,6 +1403,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Styczeń',
+    2 => 'Luty',
+    3 => 'Marzec',
+    4 => 'Kwiecień',
+    5 => 'Maj',
+    6 => 'Czerwiec',
+    7 => 'Lipiec',
+    8 => 'Sierpień',
+    9 => 'Wrzesień',
+    10 => 'Październik',
+    11 => 'Listopad',
+    12 => 'Grudzień'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Niedziela',
+    2 => 'Poniedziałek',
+    3 => 'Wtorek',
+    4 => 'Środa',
+    5 => 'Czwartek',
+    6 => 'Piątek',
+    7 => 'Sobota'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1432,8 +1444,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1442,9 +1456,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/portuguese_brazil.php 1.4.1.src/cpanel-glprivate/language/portuguese_brazil.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/portuguese_brazil.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/portuguese_brazil.php	2006-09-17 03:58:44.000000000 -0500
@@ -167,28 +167,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendrio de Eventos',
-    2 => 'Lamentamos, mas h no eventos a exibir.',
-    3 => 'Quando',
-    4 => 'Onde',
-    5 => 'Descrio',
-    6 => 'Adicionar um Evento',
-    7 => 'Prximos Eventos',
-    8 => 'Ao adicionar este evento ao seu calendrio voc poder ver somente os eventos em que estiver interessado clicando em "Meu Calendrio" na rea Funes do Usurio.',
-    9 => 'Adicionar ao Meu Calendrio',
-    10 => 'Remover do Meu Calendrio',
-    11 => "Adicionando Evento ao Calendrio de {$_USER['username']}",
-    12 => 'Evento',
-    13 => 'Incio',
-    14 => 'Trmino',
-    15 => 'Volta para Calendrio'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -350,7 +332,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -667,38 +682,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editor de Eventos',
-    2 => 'Error',
-    3 => 'Ttulo',
-    4 => 'URL',
-    5 => 'Incio',
-    6 => 'Trmino',
-    7 => 'Local',
-    8 => 'Descrio',
-    9 => '(incluir http://)',
-    10 => 'Voc deve preencher todos os campos deste formulrio!',
-    11 => 'Gerenciador de Eventos',
-    12 => 'Para modificar ou apagar um evento, clique no respectivo evento abaixo.  Para criar um novo evento, clique em Novo Evento, acima.',
-    13 => 'Ttulo',
-    14 => 'Incio',
-    15 => 'Trmino',
-    16 => 'Acesso Negado',
-    17 => "Voc est acessando um evento para o qual no tem autorizao.  Esta tentativa foi registrada. Por favor <a href=\"{$_CONF['site_admin_url']}/event.php\">retorne para a tela de Administrao de Eventos</a>.",
-    18 => 'Novo Evento',
-    19 => 'Administrao',
-    20 => 'salva',
-    21 => 'cancela',
-    22 => 'apaga',
-    23 => 'Data de incio incorreta.',
-    24 => 'Data final incorreta.',
-    25 => 'Data Final  menor que Data Inicial.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -789,7 +775,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -877,7 +865,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -907,53 +924,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Domingo',
-    2 => 'Segunda',
-    3 => 'Tera',
-    4 => 'Quarta',
-    5 => 'Quinta',
-    6 => 'Sexta',
-    7 => 'Sbado',
-    8 => 'Adicionar Evento',
-    9 => 'Evento do Site',
-    10 => 'Eventos para',
-    11 => 'Calendrio Principal',
-    12 => 'Meu Calendrio',
-    13 => 'Janeiro',
-    14 => 'Fevereiro',
-    15 => 'Maro',
-    16 => 'Abril',
-    17 => 'Maio',
-    18 => 'Junho',
-    19 => 'Julho',
-    20 => 'Agosto',
-    21 => 'Setembro',
-    22 => 'Outubro',
-    23 => 'Novembro',
-    24 => 'Dezembro',
-    25 => 'Volta para ',
-    26 => 'Todos os Dias',
-    27 => 'Semanal',
-    28 => 'Calendrio Pessoal de',
-    29 => 'Calendrio Pblico',
-    30 => 'excluir evento',
-    31 => 'Adicionar',
-    32 => 'Evento',
-    33 => 'Data',
-    34 => 'Hora',
-    35 => 'Adio Rpida',
-    36 => 'Enviar',
-    37 => 'Lamentamos, mas o Calendrio Pessoal no est habilitado neste site',
-    38 => 'Editor de Eventos Pessoais',
-    39 => 'Dia',
-    40 => 'Semana',
-    41 => 'Ms'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1077,7 +1047,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1158,7 +1130,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1200,7 +1181,6 @@
     'none' => 'Nenhum',
     'accessdenied' => 'Acesso Negado',
     'storydenialmsg' => "Voc no tem acesso para ver esta publicao.  Isto pode ocorrer porque voc ainda no  membro do site {$_CONF['site_name']}.  Por favor <a href=users.php?mode=new> torne-se um membro</a> do {$_CONF['site_name']} para receber direitos plenos de acesso!",
-    'eventdenialmsg' => "Voc no tem acesso para ver este evento.  Isto pode ocorrer porque voc ainda no  membro do site {$_CONF['site_name']}.  Por favor <a href=users.php?mode=new> torne-se um membro</a> do {$_CONF['site_name']} para receber direitos plenos de acesso!",
     'nogroupsforcoregroup' => 'Este grupo no pertence a qualquer um dos outros grupos',
     'grouphasnorights' => 'Este grupo no tem acesso a quaisquer recursos de administrao deste site',
     'newgroup' => 'Novo Grupo',
@@ -1386,7 +1366,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1426,6 +1407,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Janeiro',
+    2 => 'Fevereiro',
+    3 => 'Maro',
+    4 => 'Abril',
+    5 => 'Maio',
+    6 => 'Junho',
+    7 => 'Julho',
+    8 => 'Agosto',
+    9 => 'Setembro',
+    10 => 'Outubro',
+    11 => 'Novembro',
+    12 => 'Dezembro'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Domingo',
+    2 => 'Segunda',
+    3 => 'Tera',
+    4 => 'Quarta',
+    5 => 'Quinta',
+    6 => 'Sexta',
+    7 => 'Sbado'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1436,8 +1448,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1446,9 +1460,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/portuguese_brazil_utf-8.php 1.4.1.src/cpanel-glprivate/language/portuguese_brazil_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/portuguese_brazil_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/portuguese_brazil_utf-8.php	2006-09-17 03:58:44.000000000 -0500
@@ -167,28 +167,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendário de Eventos',
-    2 => 'Lamentamos, mas há não eventos a exibir.',
-    3 => 'Quando',
-    4 => 'Onde',
-    5 => 'Descrição',
-    6 => 'Adicionar um Evento',
-    7 => 'Próximos Eventos',
-    8 => 'Ao adicionar este evento ao seu calendário você poderá ver somente os eventos em que estiver interessado clicando em "Meu Calendário" na área Funções do Usuário.',
-    9 => 'Adicionar ao Meu Calendário',
-    10 => 'Remover do Meu Calendário',
-    11 => "Adicionando Evento ao Calendário de {$_USER['username']}",
-    12 => 'Evento',
-    13 => 'Início',
-    14 => 'Término',
-    15 => 'Volta para Calendário'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -350,7 +332,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -667,38 +682,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editor de Eventos',
-    2 => 'Error',
-    3 => 'Título',
-    4 => 'URL',
-    5 => 'Início',
-    6 => 'Término',
-    7 => 'Local',
-    8 => 'Descrição',
-    9 => '(incluir http://)',
-    10 => 'Você deve preencher todos os campos deste formulário!',
-    11 => 'Gerenciador de Eventos',
-    12 => 'Para modificar ou apagar um evento, clique no respectivo evento abaixo.  Para criar um novo evento, clique em Novo Evento, acima.',
-    13 => 'Título',
-    14 => 'Início',
-    15 => 'Término',
-    16 => 'Acesso Negado',
-    17 => "Você está acessando um evento para o qual não tem autorização.  Esta tentativa foi registrada. Por favor <a href=\"{$_CONF['site_admin_url']}/event.php\">retorne para a tela de Administração de Eventos</a>.",
-    18 => 'Novo Evento',
-    19 => 'Administração',
-    20 => 'salva',
-    21 => 'cancela',
-    22 => 'apaga',
-    23 => 'Data de início incorreta.',
-    24 => 'Data final incorreta.',
-    25 => 'Data Final é menor que Data Inicial.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -789,7 +775,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -877,7 +865,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -907,53 +924,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Domingo',
-    2 => 'Segunda',
-    3 => 'Terça',
-    4 => 'Quarta',
-    5 => 'Quinta',
-    6 => 'Sexta',
-    7 => 'Sábado',
-    8 => 'Adicionar Evento',
-    9 => 'Evento do Site',
-    10 => 'Eventos para',
-    11 => 'Calendário Principal',
-    12 => 'Meu Calendário',
-    13 => 'Janeiro',
-    14 => 'Fevereiro',
-    15 => 'Março',
-    16 => 'Abril',
-    17 => 'Maio',
-    18 => 'Junho',
-    19 => 'Julho',
-    20 => 'Agosto',
-    21 => 'Setembro',
-    22 => 'Outubro',
-    23 => 'Novembro',
-    24 => 'Dezembro',
-    25 => 'Volta para ',
-    26 => 'Todos os Dias',
-    27 => 'Semanal',
-    28 => 'Calendário Pessoal de',
-    29 => 'Calendário Público',
-    30 => 'excluir evento',
-    31 => 'Adicionar',
-    32 => 'Evento',
-    33 => 'Data',
-    34 => 'Hora',
-    35 => 'Adição Rápida',
-    36 => 'Enviar',
-    37 => 'Lamentamos, mas o Calendário Pessoal não está habilitado neste site',
-    38 => 'Editor de Eventos Pessoais',
-    39 => 'Dia',
-    40 => 'Semana',
-    41 => 'Mês'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1077,7 +1047,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1158,7 +1130,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1200,7 +1181,6 @@
     'none' => 'Nenhum',
     'accessdenied' => 'Acesso Negado',
     'storydenialmsg' => "Você não tem acesso para ver esta publicação.  Isto pode ocorrer porque você ainda não é membro do site {$_CONF['site_name']}.  Por favor <a href=users.php?mode=new> torne-se um membro</a> do {$_CONF['site_name']} para receber direitos plenos de acesso!",
-    'eventdenialmsg' => "Você não tem acesso para ver este evento.  Isto pode ocorrer porque você ainda não é membro do site {$_CONF['site_name']}.  Por favor <a href=users.php?mode=new> torne-se um membro</a> do {$_CONF['site_name']} para receber direitos plenos de acesso!",
     'nogroupsforcoregroup' => 'Este grupo não pertence a qualquer um dos outros grupos',
     'grouphasnorights' => 'Este grupo não tem acesso a quaisquer recursos de administração deste site',
     'newgroup' => 'Novo Grupo',
@@ -1386,7 +1366,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1426,6 +1407,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Janeiro',
+    2 => 'Fevereiro',
+    3 => 'Março',
+    4 => 'Abril',
+    5 => 'Maio',
+    6 => 'Junho',
+    7 => 'Julho',
+    8 => 'Agosto',
+    9 => 'Setembro',
+    10 => 'Outubro',
+    11 => 'Novembro',
+    12 => 'Dezembro'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Domingo',
+    2 => 'Segunda',
+    3 => 'Terça',
+    4 => 'Quarta',
+    5 => 'Quinta',
+    6 => 'Sexta',
+    7 => 'Sábado'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1436,8 +1448,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1446,9 +1460,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/portuguese.php 1.4.1.src/cpanel-glprivate/language/portuguese.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/portuguese.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/portuguese.php	2006-09-17 03:58:44.000000000 -0500
@@ -162,28 +162,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendrio de Eventos',
-    2 => 'No h eventos para mostrar.',
-    3 => 'Quando',
-    4 => 'Onde',
-    5 => 'Descrio',
-    6 => 'Adicionar um Evento',
-    7 => 'Prximos Eventos',
-    8 => 'Adicionando este evento ao seu calendrio pode ver rapidamente os eventos do seu interesse clicando em "O meu calendrio" na rea de funes do utilizador.',
-    9 => 'Adicionar ao meu calendrio',
-    10 => 'Remover do meu calendrio',
-    11 => "A adicionar evento ao calendrio de {$_USER['username']}",
-    12 => 'Evento',
-    13 => 'Incio',
-    14 => 'Fim',
-    15 => 'Voltar ao calendrio'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -345,7 +327,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -662,38 +677,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editor de eventos',
-    2 => 'Error',
-    3 => 'Ttulo',
-    4 => 'URL',
-    5 => 'Data de incio',
-    6 => 'Data de fim',
-    7 => 'Localizao',
-    8 => 'Descrio',
-    9 => '(inclua http://)',
-    10 => 'Deve inserir datas, horas, descrio e localizao para o evento!',
-    11 => 'Manuteno de eventos',
-    12 => 'Para modificar ou apagar um evento, clique nesse evento a seguir.  Para criar um novo evento clique em Novo evento.',
-    13 => 'Ttulo',
-    14 => 'Data de incio',
-    15 => 'Data de fim',
-    16 => 'Acesso no permitido',
-    17 => "Est a tentar aceder a um evento para o qual no tem permisses.  Esta aco ficou registada. Por favor <a href=\"{$_CONF['site_admin_url']}/event.php\">volte ao cran de administrao de eventos</a>.",
-    18 => 'Novo evento',
-    19 => 'Administrao',
-    20 => 'guardar',
-    21 => 'cancelar',
-    22 => 'apagar',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -784,7 +770,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -872,7 +860,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -902,53 +919,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Domingo',
-    2 => 'Segunda',
-    3 => 'Tera',
-    4 => 'Quarta',
-    5 => 'Quinta',
-    6 => 'Sexta',
-    7 => 'Sbado',
-    8 => 'Adicionar Evento',
-    9 => 'Evento Geral',
-    10 => 'Eventos para',
-    11 => 'Calendrio Geral',
-    12 => 'O Meu Calendrio',
-    13 => 'Janeiro',
-    14 => 'Fevereiro',
-    15 => 'Maro',
-    16 => 'Abril',
-    17 => 'Maio',
-    18 => 'Junho',
-    19 => 'Julho',
-    20 => 'Agosto',
-    21 => 'Setembro',
-    22 => 'Outubro',
-    23 => 'Novembro',
-    24 => 'Dezembro',
-    25 => 'Voltar a ',
-    26 => 'Todo o dia',
-    27 => 'Semana',
-    28 => 'Calendrio pessoal de',
-    29 => 'Calendrio pblico',
-    30 => 'apagar evento',
-    31 => 'Adicionar',
-    32 => 'Evento',
-    33 => 'Data',
-    34 => 'Hora',
-    35 => 'Adicionar rpido',
-    36 => 'Enviar',
-    37 => 'Pedimos desculpa, o calendrio pessoal est inactivo neste site',
-    38 => 'Editor de eventos pessoais',
-    39 => 'Dia',
-    40 => 'Semana',
-    41 => 'Ms'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1072,7 +1042,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1153,7 +1125,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1195,7 +1176,6 @@
     'none' => 'N/A',
     'accessdenied' => 'Acesso no autorizado',
     'storydenialmsg' => "No tem permisso para ver esta notcia.  Isto pode acontecer porque voc no  membro do site {$_CONF['site_name']}.  <a href=users.php?mode=new> Torne-se membro</a> do site {$_CONF['site_name']} para ter acesso como utilizador registado!",
-    'eventdenialmsg' => "No tem permisso para ver este evento.  Isto pode acontecer porque voc no  membro do site {$_CONF['site_name']}.  <a href=users.php?mode=new> Torne-se membro</a> do site {$_CONF['site_name']} para ter acesso como utilizador registado!",
     'nogroupsforcoregroup' => 'Este grupo no pertence a qualquer um dos outros grupos',
     'grouphasnorights' => 'Este grupo no tem qualquer acesso administrativo neste site',
     'newgroup' => 'Novo grupo',
@@ -1381,7 +1361,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1421,6 +1402,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Janeiro',
+    2 => 'Fevereiro',
+    3 => 'Maro',
+    4 => 'Abril',
+    5 => 'Maio',
+    6 => 'Junho',
+    7 => 'Julho',
+    8 => 'Agosto',
+    9 => 'Setembro',
+    10 => 'Outubro',
+    11 => 'Novembro',
+    12 => 'Dezembro'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Domingo',
+    2 => 'Segunda',
+    3 => 'Tera',
+    4 => 'Quarta',
+    5 => 'Quinta',
+    6 => 'Sexta',
+    7 => 'Sbado'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1431,8 +1443,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1441,9 +1455,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/portuguese_utf-8.php 1.4.1.src/cpanel-glprivate/language/portuguese_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/portuguese_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/portuguese_utf-8.php	2006-09-17 03:58:44.000000000 -0500
@@ -162,28 +162,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendário de Eventos',
-    2 => 'Não há eventos para mostrar.',
-    3 => 'Quando',
-    4 => 'Onde',
-    5 => 'Descrição',
-    6 => 'Adicionar um Evento',
-    7 => 'Próximos Eventos',
-    8 => 'Adicionando este evento ao seu calendário pode ver rapidamente os eventos do seu interesse clicando em "O meu calendário" na área de funções do utilizador.',
-    9 => 'Adicionar ao meu calendário',
-    10 => 'Remover do meu calendário',
-    11 => "A adicionar evento ao calendário de {$_USER['username']}",
-    12 => 'Evento',
-    13 => 'Início',
-    14 => 'Fim',
-    15 => 'Voltar ao calendário'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -345,7 +327,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -662,38 +677,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editor de eventos',
-    2 => 'Error',
-    3 => 'Título',
-    4 => 'URL',
-    5 => 'Data de início',
-    6 => 'Data de fim',
-    7 => 'Localização',
-    8 => 'Descrição',
-    9 => '(inclua http://)',
-    10 => 'Deve inserir datas, horas, descrição e localização para o evento!',
-    11 => 'Manutenção de eventos',
-    12 => 'Para modificar ou apagar um evento, clique nesse evento a seguir.  Para criar um novo evento clique em Novo evento.',
-    13 => 'Título',
-    14 => 'Data de início',
-    15 => 'Data de fim',
-    16 => 'Acesso não permitido',
-    17 => "Está a tentar aceder a um evento para o qual não tem permissões.  Esta acção ficou registada. Por favor <a href=\"{$_CONF['site_admin_url']}/event.php\">volte ao écran de administração de eventos</a>.",
-    18 => 'Novo evento',
-    19 => 'Administração',
-    20 => 'guardar',
-    21 => 'cancelar',
-    22 => 'apagar',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -784,7 +770,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -872,7 +860,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -902,53 +919,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Domingo',
-    2 => 'Segunda',
-    3 => 'Terça',
-    4 => 'Quarta',
-    5 => 'Quinta',
-    6 => 'Sexta',
-    7 => 'Sábado',
-    8 => 'Adicionar Evento',
-    9 => 'Evento Geral',
-    10 => 'Eventos para',
-    11 => 'Calendário Geral',
-    12 => 'O Meu Calendário',
-    13 => 'Janeiro',
-    14 => 'Fevereiro',
-    15 => 'Março',
-    16 => 'Abril',
-    17 => 'Maio',
-    18 => 'Junho',
-    19 => 'Julho',
-    20 => 'Agosto',
-    21 => 'Setembro',
-    22 => 'Outubro',
-    23 => 'Novembro',
-    24 => 'Dezembro',
-    25 => 'Voltar a ',
-    26 => 'Todo o dia',
-    27 => 'Semana',
-    28 => 'Calendário pessoal de',
-    29 => 'Calendário público',
-    30 => 'apagar evento',
-    31 => 'Adicionar',
-    32 => 'Evento',
-    33 => 'Data',
-    34 => 'Hora',
-    35 => 'Adicionar rápido',
-    36 => 'Enviar',
-    37 => 'Pedimos desculpa, o calendário pessoal está inactivo neste site',
-    38 => 'Editor de eventos pessoais',
-    39 => 'Dia',
-    40 => 'Semana',
-    41 => 'Mês'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1072,7 +1042,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1153,7 +1125,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1195,7 +1176,6 @@
     'none' => 'N/A',
     'accessdenied' => 'Acesso não autorizado',
     'storydenialmsg' => "Não tem permissão para ver esta notícia.  Isto pode acontecer porque você não é membro do site {$_CONF['site_name']}.  <a href=users.php?mode=new> Torne-se membro</a> do site {$_CONF['site_name']} para ter acesso como utilizador registado!",
-    'eventdenialmsg' => "Não tem permissão para ver este evento.  Isto pode acontecer porque você não é membro do site {$_CONF['site_name']}.  <a href=users.php?mode=new> Torne-se membro</a> do site {$_CONF['site_name']} para ter acesso como utilizador registado!",
     'nogroupsforcoregroup' => 'Este grupo não pertence a qualquer um dos outros grupos',
     'grouphasnorights' => 'Este grupo não tem qualquer acesso administrativo neste site',
     'newgroup' => 'Novo grupo',
@@ -1381,7 +1361,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1421,6 +1402,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Janeiro',
+    2 => 'Fevereiro',
+    3 => 'Março',
+    4 => 'Abril',
+    5 => 'Maio',
+    6 => 'Junho',
+    7 => 'Julho',
+    8 => 'Agosto',
+    9 => 'Setembro',
+    10 => 'Outubro',
+    11 => 'Novembro',
+    12 => 'Dezembro'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Domingo',
+    2 => 'Segunda',
+    3 => 'Terça',
+    4 => 'Quarta',
+    5 => 'Quinta',
+    6 => 'Sexta',
+    7 => 'Sábado'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1431,8 +1443,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1441,9 +1455,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/romanian.php 1.4.1.src/cpanel-glprivate/language/romanian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/romanian.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/romanian.php	2006-09-17 03:58:44.000000000 -0500
@@ -162,28 +162,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendar de Evenimente',
-    2 => 'Ne pare rau, nu sunt evenimente de vizualizat.',
-    3 => 'Cand',
-    4 => 'Unde',
-    5 => 'Descriere',
-    6 => 'Trimite Eveniment',
-    7 => 'Evenimente recente',
-    8 => 'Adaugand acest eveniment la calendaarul tau se pot accesa rapid evenimentele care te intereseaza cu un click pe "Calendarul meu" din sectiunea Membru Info',
-    9 => 'Adauga la Calendarul meu',
-    10 => 'Sterge din Calendarul meu',
-    11 => "Se adauga Eveniment in Calendarul lui {$_USER['username']}",
-    12 => 'Eveniment',
-    13 => 'Incepe',
-    14 => 'Se termina',
-    15 => 'Inapoi la Calendar'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -345,7 +327,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -662,38 +677,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editor Evenimente',
-    2 => 'Error',
-    3 => 'Titlu Eveniment',
-    4 => 'Eveniment URL',
-    5 => 'Eveniment Start Date',
-    6 => 'Eveniment End Date',
-    7 => 'Eveniment Location',
-    8 => 'Eveniment Descriere',
-    9 => '(include http://)',
-    10 => 'You must provide the dates/times, descriere and Eveniment location!',
-    11 => 'Eveniment Manager',
-    12 => 'To modify or sterge a Eveniment, click on that Eveniment below.  To create a new Eveniment click on new Eveniment above.',
-    13 => 'Eveniment Titlu',
-    14 => 'Start Date',
-    15 => 'End Date',
-    16 => 'Access Denied',
-    17 => "You are trying to access an Eveniment that you don't have rights to.  This attempt has been logged. Please <a href=\"{$_CONF['site_admin_url']}/event.php\">go back to the Eveniment administration screen</a>.",
-    18 => 'Nou Eveniment',
-    19 => 'Admin Home',
-    20 => 'salveaza',
-    21 => 'anuleaza',
-    22 => 'sterge',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -784,7 +770,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -872,7 +860,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -902,53 +919,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Duminica',
-    2 => 'Luni',
-    3 => 'Marti',
-    4 => 'Miercuri',
-    5 => 'Joi',
-    6 => 'Vineri',
-    7 => 'Sambata',
-    8 => 'Adauga Eveniment',
-    9 => 'Geeklog Eveniment',
-    10 => 'Evenimente pentru',
-    11 => 'Calendar Master',
-    12 => 'Calendarul meu',
-    13 => 'Ianuarie',
-    14 => 'Februarie',
-    15 => 'Martie',
-    16 => 'Aprilie',
-    17 => 'Mai',
-    18 => 'Iunie',
-    19 => 'Iulie',
-    20 => 'August',
-    21 => 'Septembrie',
-    22 => 'Octombrie',
-    23 => 'Noiembrie',
-    24 => 'Decembrie',
-    25 => 'Inapoi',
-    26 => 'Toata ziua',
-    27 => 'Saptamana',
-    28 => 'Calendar Personal pentru',
-    29 => 'Calendar Public',
-    30 => 'sterge eveniment',
-    31 => 'Adauga',
-    32 => 'Eveniment',
-    33 => 'Data',
-    34 => 'Ora',
-    35 => 'Adauga rapid',
-    36 => 'OK',
-    37 => 'Ne pare rau, facilitatea \'calendar personal\' nu este activata',
-    38 => 'Editor Evenimente Personale',
-    39 => 'Ziua',
-    40 => 'Saptamana',
-    41 => 'Luna'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1072,7 +1042,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1153,7 +1125,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1184,7 +1165,7 @@
     'no' => 'No',
     'corerightsdescr' => "This group is a core {$_CONF['site_name']} Group.  Therefore the rights for this group cannot be edited.  Below is a read-only list of the rights this group has access to.",
     'groupmsg' => 'Security Groups on this site are hierarchical.  By adding this group to any of the groups below you will giving this group the same rights that those groups have.  Where possible it is encouraged you use the groups below to give rights to a group.  If you need this group to have custom rights then you can select the rights to various site features in the section below called \'Rights\'.  To add this group to any of the ones below simply check the box next to the group(s) that you want.',
-    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this groups belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
+    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this group belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
     'rightsdescr' => 'A groups access to a certain right below can be given directly to the group OR to a different group that this group is a part of.  The ones you see below without a checkbox are the rights that have been given to this group because it belongs to another group with that right.  The rights with checkboxes below are rights that can be given directly to this group.',
     'lock' => 'Lock',
     'members' => 'Members',
@@ -1195,7 +1176,6 @@
     'none' => 'None',
     'accessdenied' => 'Access Denied',
     'storydenialmsg' => "You do not have access to view this stire.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
-    'eventdenialmsg' => "You do not have access to view this Eveniment.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
     'nogroupsforcoregroup' => 'This group doesn\'t belong to any of the other groups',
     'grouphasnorights' => 'This group doesn\'t have access to any of the administrative features of this site',
     'newgroup' => 'New Group',
@@ -1381,7 +1361,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1421,6 +1402,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Ianuarie',
+    2 => 'Februarie',
+    3 => 'Martie',
+    4 => 'Aprilie',
+    5 => 'Mai',
+    6 => 'Iunie',
+    7 => 'Iulie',
+    8 => 'August',
+    9 => 'Septembrie',
+    10 => 'Octombrie',
+    11 => 'Noiembrie',
+    12 => 'Decembrie'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Duminica',
+    2 => 'Luni',
+    3 => 'Marti',
+    4 => 'Miercuri',
+    5 => 'Joi',
+    6 => 'Vineri',
+    7 => 'Sambata'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1431,8 +1443,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1441,9 +1455,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/romanian_utf-8.php 1.4.1.src/cpanel-glprivate/language/romanian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/romanian_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/romanian_utf-8.php	2006-09-17 03:58:44.000000000 -0500
@@ -162,28 +162,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendar de Evenimente',
-    2 => 'Ne pare rau, nu sunt evenimente de vizualizat.',
-    3 => 'Cand',
-    4 => 'Unde',
-    5 => 'Descriere',
-    6 => 'Trimite Eveniment',
-    7 => 'Evenimente recente',
-    8 => 'Adaugand acest eveniment la calendaarul tau se pot accesa rapid evenimentele care te intereseaza cu un click pe "Calendarul meu" din sectiunea Membru Info',
-    9 => 'Adauga la Calendarul meu',
-    10 => 'Sterge din Calendarul meu',
-    11 => "Se adauga Eveniment in Calendarul lui {$_USER['username']}",
-    12 => 'Eveniment',
-    13 => 'Incepe',
-    14 => 'Se termina',
-    15 => 'Inapoi la Calendar'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -345,7 +327,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -662,38 +677,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editor Evenimente',
-    2 => 'Error',
-    3 => 'Titlu Eveniment',
-    4 => 'Eveniment URL',
-    5 => 'Eveniment Start Date',
-    6 => 'Eveniment End Date',
-    7 => 'Eveniment Location',
-    8 => 'Eveniment Descriere',
-    9 => '(include http://)',
-    10 => 'You must provide the dates/times, descriere and Eveniment location!',
-    11 => 'Eveniment Manager',
-    12 => 'To modify or sterge a Eveniment, click on that Eveniment below.  To create a new Eveniment click on new Eveniment above.',
-    13 => 'Eveniment Titlu',
-    14 => 'Start Date',
-    15 => 'End Date',
-    16 => 'Access Denied',
-    17 => "You are trying to access an Eveniment that you don't have rights to.  This attempt has been logged. Please <a href=\"{$_CONF['site_admin_url']}/event.php\">go back to the Eveniment administration screen</a>.",
-    18 => 'Nou Eveniment',
-    19 => 'Admin Home',
-    20 => 'salveaza',
-    21 => 'anuleaza',
-    22 => 'sterge',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -784,7 +770,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -872,7 +860,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -902,53 +919,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Duminica',
-    2 => 'Luni',
-    3 => 'Marti',
-    4 => 'Miercuri',
-    5 => 'Joi',
-    6 => 'Vineri',
-    7 => 'Sambata',
-    8 => 'Adauga Eveniment',
-    9 => 'Geeklog Eveniment',
-    10 => 'Evenimente pentru',
-    11 => 'Calendar Master',
-    12 => 'Calendarul meu',
-    13 => 'Ianuarie',
-    14 => 'Februarie',
-    15 => 'Martie',
-    16 => 'Aprilie',
-    17 => 'Mai',
-    18 => 'Iunie',
-    19 => 'Iulie',
-    20 => 'August',
-    21 => 'Septembrie',
-    22 => 'Octombrie',
-    23 => 'Noiembrie',
-    24 => 'Decembrie',
-    25 => 'Inapoi',
-    26 => 'Toata ziua',
-    27 => 'Saptamana',
-    28 => 'Calendar Personal pentru',
-    29 => 'Calendar Public',
-    30 => 'sterge eveniment',
-    31 => 'Adauga',
-    32 => 'Eveniment',
-    33 => 'Data',
-    34 => 'Ora',
-    35 => 'Adauga rapid',
-    36 => 'OK',
-    37 => 'Ne pare rau, facilitatea \'calendar personal\' nu este activata',
-    38 => 'Editor Evenimente Personale',
-    39 => 'Ziua',
-    40 => 'Saptamana',
-    41 => 'Luna'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1072,7 +1042,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1153,7 +1125,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1184,7 +1165,7 @@
     'no' => 'No',
     'corerightsdescr' => "This group is a core {$_CONF['site_name']} Group.  Therefore the rights for this group cannot be edited.  Below is a read-only list of the rights this group has access to.",
     'groupmsg' => 'Security Groups on this site are hierarchical.  By adding this group to any of the groups below you will giving this group the same rights that those groups have.  Where possible it is encouraged you use the groups below to give rights to a group.  If you need this group to have custom rights then you can select the rights to various site features in the section below called \'Rights\'.  To add this group to any of the ones below simply check the box next to the group(s) that you want.',
-    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this groups belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
+    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this group belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
     'rightsdescr' => 'A groups access to a certain right below can be given directly to the group OR to a different group that this group is a part of.  The ones you see below without a checkbox are the rights that have been given to this group because it belongs to another group with that right.  The rights with checkboxes below are rights that can be given directly to this group.',
     'lock' => 'Lock',
     'members' => 'Members',
@@ -1195,7 +1176,6 @@
     'none' => 'None',
     'accessdenied' => 'Access Denied',
     'storydenialmsg' => "You do not have access to view this stire.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
-    'eventdenialmsg' => "You do not have access to view this Eveniment.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
     'nogroupsforcoregroup' => 'This group doesn\'t belong to any of the other groups',
     'grouphasnorights' => 'This group doesn\'t have access to any of the administrative features of this site',
     'newgroup' => 'New Group',
@@ -1381,7 +1361,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1421,6 +1402,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Ianuarie',
+    2 => 'Februarie',
+    3 => 'Martie',
+    4 => 'Aprilie',
+    5 => 'Mai',
+    6 => 'Iunie',
+    7 => 'Iulie',
+    8 => 'August',
+    9 => 'Septembrie',
+    10 => 'Octombrie',
+    11 => 'Noiembrie',
+    12 => 'Decembrie'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Duminica',
+    2 => 'Luni',
+    3 => 'Marti',
+    4 => 'Miercuri',
+    5 => 'Joi',
+    6 => 'Vineri',
+    7 => 'Sambata'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1431,8 +1443,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1441,9 +1455,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/russian.php 1.4.1.src/cpanel-glprivate/language/russian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/russian.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/russian.php	2006-12-28 16:37:38.000000000 -0600
@@ -115,7 +115,7 @@
     56 => '',
     57 => '',
     58 => '',
-    59 => "   ?    : <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> </a>",
+    59 => " ?<br>-> <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> </a>",
     60 => ' ',
     61 => '  ',
     62 => 'c',
@@ -131,8 +131,8 @@
     72 => '',
     73 => ' ',
     74 => '',
-    75 => ' ',
-    76 => '',
+    75 => ' ',
+    76 => '',
     77 => '',
     78 => ' ',
     79 => ' ',
@@ -150,7 +150,7 @@
     91 => '  ',
     92 => '',
     93 => '',
-    94 => '           .',
+    94 => '           .',
     95 => ' ',
     96 => '',
     97 => ' ',
@@ -175,32 +175,14 @@
     116 => 'Trackback',
     117 => 'Directory',
     118 => 'Please continue reading on the next page:',
-    119 => "Lost your <a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">password</a>?",
+    119 => " <a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\"> </a>?",
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => ' ',
-    2 => ',     .',
-    3 => ':',
-    4 => ':',
-    5 => ':',
-    6 => ' ',
-    7 => ' ',
-    8 => '      ,       ,       .',
-    9 => '   ',
-    10 => '   ',
-    11 => "    {$_USER['username']}",
-    12 => '',
-    13 => '',
-    14 => '',
-    15 => '  '
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -346,23 +328,56 @@
     104 => ' -',
     105 => '  Who\'s Online ',
     106 => 'Location',
-    107 => 'Shown in your public profile',
-    108 => 'Confirm new password',
-    109 => 'Enter the New password again here',
-    110 => 'Current Password',
-    111 => 'Please enter your Current password',
-    112 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
-    113 => 'Login Attempt Failed',
-    114 => 'Account Disabled',
-    115 => 'Your account has been disabled, you may not login. Please contact an Administrator.',
-    116 => 'Account Awaiting Activation',
-    117 => 'Your account is currently awaiting activation by an administrator. You will not be able to login until your account has been approved.',
-    118 => "Your {$_CONF['site_name']} account has now been activated by an administrator. You may now login to the site at the url below using your username (<username>) and password as previously emailed to you.",
-    119 => 'If you have forgotten your password, you may request a new one at this url:',
-    120 => 'Account Activated',
+    107 => '     ',
+    108 => '  ',
+    109 => '     ',
+    110 => ' ',
+    111 => ',    ',
+    112 => '      .   .',
+    113 => '  ',
+    114 => ' ',
+    115 => '   , ,    .   .',
+    116 => '  ',
+    117 => '    .  .',
+    118 => "   {$_CONF['site_name']}   .        ,    (<username>)       .",
+    119 => '    ,    ,   :',
+    120 => ' ',
     121 => 'Service',
-    122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    122 => ',    ',
+    123 => " <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> </a>?",
+    124 => ' Email',
+    125 => '    email    !',
+    126 => ',   ',
+    127 => '  -       .',
+    128 => ' ',
+    129 => ' &amp; Email',
+    130 => ' ',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => '  ',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => '  email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => '  ',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => '  ',
+    153 => ' & ',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => ' '
 );
 
 ###############################################################################
@@ -679,38 +694,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => ' ',
-    2 => '',
-    3 => ' ',
-    4 => '  ',
-    5 => '  ',
-    6 => '  ',
-    7 => '  ',
-    8 => ' ',
-    9 => '( http://)',
-    10 => '       !',
-    11 => ' ',
-    12 => '    ,   .        .',
-    13 => ' ',
-    14 => ' ',
-    15 => ' ',
-    16 => ' ',
-    17 => "     ,      .    . , <a href=\"{$_CONF['site_admin_url']}/event.php\">    </a>.",
-    18 => ' ',
-    19 => 'Home ',
-    20 => '',
-    21 => '',
-    22 => '',
-    23 => '  .',
-    24 => '  .',
-    25 => '   .'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -801,7 +787,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -889,7 +877,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -919,53 +936,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => '',
-    2 => '',
-    3 => '',
-    4 => '',
-    5 => '',
-    6 => '',
-    7 => '',
-    8 => ' ',
-    9 => ' Geeklog',
-    10 => ' ',
-    11 => ' ',
-    12 => ' ',
-    13 => '',
-    14 => '',
-    15 => '',
-    16 => '',
-    17 => '',
-    18 => '',
-    19 => '',
-    20 => '',
-    21 => '',
-    22 => '',
-    23 => '',
-    24 => '',
-    25 => '  ',
-    26 => ' ',
-    27 => '',
-    28 => '  ',
-    29 => ' ',
-    30 => ' ',
-    31 => '',
-    32 => '',
-    33 => '',
-    34 => '',
-    35 => ' ',
-    36 => '',
-    37 => ',        ',
-    38 => '  ',
-    39 => '',
-    40 => '',
-    41 => ''
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1089,7 +1059,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1157,20 +1129,29 @@
     59 => '  .',
     60 => '  ',
     61 => ' %s:   ',
-    62 => 'The trackback comment has been deleted.',
-    63 => 'An error occurred when deleting the trackback comment.',
-    64 => 'Your trackback comment has been successfully sent.',
-    65 => 'Weblog directory service successfully saved.',
-    66 => 'The weblog directory service has been deleted.',
-    67 => 'The new password does not match the confirmation password!',
-    68 => 'You have to enter the correct current password.',
-    69 => 'Your account has been blocked!',
-    70 => 'Your account is awaiting administrator approval.',
-    71 => 'Your account has now been confirmed and is awaiting administrator approval.',
-    72 => 'An error occured while attempting to install the plugin. See error.log for details.',
-    73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
-    74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    62 => ' trackback  .',
+    63 => '      trackback.',
+    64 => '  trackback  .',
+    65 => ' Weblog   .',
+    66 => ' weblog   .',
+    67 => '       !',
+    68 => '     .',
+    69 => '  !',
+    70 => '    .',
+    71 => '  ,    .',
+    72 => '     .  error.log -   .',
+    73 => '     .  error.log -   .',
+    74 => 'Pingback   .',
+    75 => 'Trackbacks   ,   POST.',
+    76 => '     ?',
+    77 => ':<br>      UTF-8.   ,      . ,   mbstring  PHP    /.',
+    78 => ', ,  email     email .',
+    79 => ',    ,   ,     .',
+    80 => ',    , .      ,     .',
+    81 => '     . ,   .',
+    82 => '     . ,  .',
+    83 => '   , email ,  ,       ,    .',
+    84 => '   , ,    .'
 );
 
 ###############################################################################
@@ -1212,7 +1193,6 @@
     'none' => '',
     'accessdenied' => ' ',
     'storydenialmsg' => "       . ,       {$_CONF['site_name']}.  , <a href=users.php?mode=new></a>  {$_CONF['site_name']}    !",
-    'eventdenialmsg' => "       . ,       {$_CONF['site_name']}.  , <a href=users.php?mode=new></a>  {$_CONF['site_name']}    !",
     'nogroupsforcoregroup' => '      ',
     'grouphasnorights' => '          .',
     'newgroup' => ' ',
@@ -1233,13 +1213,13 @@
     'cantlistgroup' => '   ,       .     ,   .',
     'editgroupmsg' => 'To modify the group membership, click on the member names(s) and use the add or remove buttons. If the member is a member of the group, their name will appear on the right side only. Once you are complete - press <b>Save</b> to update the group and return to the main group admin page.',
     'listgroupmsg' => 'Listing of all current members in the group: <b>%s</b>',
-    'search' => 'Search',
-    'submit' => 'Submit',
+    'search' => '',
+    'submit' => '',
     'limitresults' => 'Limit Results',
     'group_id' => 'Group ID',
-    'plugin_access_denied_msg' => 'You are illegally trying access a plugin administration page.  Please note that all attempts to illegally access this page are logged.',
-    'groupexists' => 'Group name already exists',
-    'groupexistsmsg' => 'There is already a group with this name. Group names must be unique.'
+    'plugin_access_denied_msg' => '       . ,            .',
+    'groupexists' => '    ',
+    'groupexistsmsg' => '     .     .'
 );
 
 ###############################################################################
@@ -1272,8 +1252,8 @@
     7 => ' ',
     8 => '',
     9 => '',
-    10 => ' ',
-    11 => 'Directory'
+    10 => ' ',
+    11 => ''
 );
 
 ###############################################################################
@@ -1281,7 +1261,7 @@
 
 $LANG_404 = array(
     1 => '404 ',
-    2 => ',   ,     <b>%s</b>.',
+    2 => ',   ,     <b>%s</b>.',
     3 => "<p>  ,  ,   ,  . ,    <a href=\"{$_CONF['site_url']}\"> </a>  <a href=\"{$_CONF['site_url']}/search.php\"> </a>  ,     ,   :)."
 );
 
@@ -1394,22 +1374,23 @@
     'trackback_note' => 'To send a trackback comment for a story, go to the list of stories and click on "Send Ping" for the story. To send a trackback that is not related to a story, <a href="%s">click here</a>.',
     'pingback_explain' => 'Enter a URL to send the Pingback to. The pingback will point to your site\'s homepage.',
     'pingback_url' => 'Pingback URL',
-    'site_url' => 'This site\'s URL',
-    'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
-    'pbtarget_missing' => 'No Pingback URL',
-    'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'site_url' => 'URL  ',
+    'pingback_note' => '  pingback  ,       "Send Ping"   .   pingback,    , <a href="%s"> </a>.',
+    'pbtarget_missing' => ' Pingback URL',
+    'pbtarget_required' => ',  pingback URL',
+    'pb_error_details' => ' pingback:',
+    'delete_trackback' => '   Trackback : '
 );
 
 ###############################################################################
 # directory.php
 
 $LANG_DIR = array(
-    'title' => 'Article Directory',
-    'title_year' => 'Article Directory for %d',
-    'title_month_year' => 'Article Directory for %s %d',
-    'nav_top' => 'Back to Article Directory',
-    'no_articles' => 'No articles.'
+    'title' => ' ',
+    'title_year' => '   %d',
+    'title_month_year' => '   %s %d',
+    'nav_top' => '   ',
+    'no_articles' => ' .'
 );
 
 ###############################################################################
@@ -1423,18 +1404,49 @@
 # %s    scale, "hrs", "weeks"
 
 $LANG_WHATSNEW = array(
-    'new_string' => '%n new %i in the last %t %s',
-    'new_last' => 'last %t %s',
-    'minutes' => 'minutes',
-    'hours' => 'hours',
-    'days' => 'days',
-    'weeks' => 'weeks',
-    'months' => 'months',
-    'minute' => 'minute',
-    'hour' => 'hour',
-    'day' => 'day',
-    'week' => 'week',
-    'month' => 'month'
+    'new_string' => '%n  %i   %t %s',
+    'new_last' => '  %t %s',
+    'minutes' => '',
+    'hours' => '',
+    'days' => '',
+    'weeks' => '',
+    'months' => '',
+    'minute' => '',
+    'hour' => '',
+    'day' => '',
+    'week' => '',
+    'month' => ''
+);
+
+###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => '',
+    2 => '',
+    3 => '',
+    4 => '',
+    5 => '',
+    6 => '',
+    7 => '',
+    8 => '',
+    9 => '',
+    10 => '',
+    11 => '',
+    12 => ''
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => '',
+    2 => '',
+    3 => '',
+    4 => '',
+    5 => '',
+    6 => '',
+    7 => ''
 );
 
 ###############################################################################
@@ -1444,23 +1456,28 @@
 # display administration lists and edit pages
 
 $LANG_ADMIN = array(
-    'search' => 'Search',
+    'search' => '',
     'limit_results' => 'Limit Results',
-    'submit' => 'Submit',
-    'edit' => 'Edit',
-    'admin_home' => 'Admin Home',
-    'create_new' => 'Create New',
-    'enabled' => 'Enabled',
-    'title' => 'Title',
-    'type' => 'Type',
-    'topic' => 'Topic',
-    'help_url' => 'Help File URL',
-    'save' => 'Save',
-    'cancel' => 'Cancel',
-    'delete' => 'Delete',
-    'copy' => 'Copy',
-    'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'submit' => '',
+    'edit' => '',
+    'edit_adv' => 'Adv. Edit',
+    'admin_home' => ' ',
+    'create_new' => '',
+    'create_new_adv' => ' (Adv.)',
+    'enabled' => '',
+    'title' => '',
+    'type' => '',
+    'topic' => '',
+    'help_url' => '  (URL)',
+    'save' => '',
+    'cancel' => '',
+    'delete' => '',
+    'delete_sel' => ' ',
+    'copy' => '',
+    'no_results' => '-    -',
+    'data_error' => '    . ,   .',
+    'preview' => '. ',
+    'records_found' => ' '
 );
 
 ###############################################################################
@@ -1469,8 +1486,8 @@
 # database.
 
 $LANG_commentcodes = array(
-    0 => 'Comments Enabled',
-    -1 => 'Comments Disabled'
+    0 => ' ',
+    -1 => ' '
 );
 
 
@@ -1478,47 +1495,47 @@
     'flat' => 'Flat',
     'nested' => 'Nested',
     'threaded' => 'Threaded',
-    'nocomment' => 'No Comments'
+    'nocomment' => ' '
 );
 
 $LANG_cookiecodes = array(
     0 => '(don\'t)',
-    3600 => '1 Hour',
-    7200 => '2 Hours',
-    10800 => '3 Hours',
-    28800 => '8 Hours',
-    86400 => '1 Day',
-    604800 => '1 Week',
-    2678400 => '1 Month'
+    3600 => '1 ',
+    7200 => '2 ',
+    10800 => '3 ',
+    28800 => '8 ',
+    86400 => '1 ',
+    604800 => '1 ',
+    2678400 => '1 '
 );
 
 $LANG_dateformats = array(
-    0 => 'System Default'
+    0 => '  '
 );
 
 $LANG_featurecodes = array(
-    0 => 'Not Featured',
-    1 => 'Featured'
+    0 => '',
+    1 => ''
 );
 
 $LANG_frontpagecodes = array(
-    0 => 'Show Only in Topic',
-    1 => 'Show on Front Page'
+    0 => '   ',
+    1 => '   '
 );
 
 $LANG_postmodes = array(
-    'plaintext' => 'Plain Old Text',
-    'html' => 'HTML Formatted'
+    'plaintext' => ' ',
+    'html' => 'HTML '
 );
 
 $LANG_sortcodes = array(
-    'ASC' => 'Oldest First',
-    'DESC' => 'Newest First'
+    'ASC' => ' ',
+    'DESC' => ' '
 );
 
 $LANG_trackbackcodes = array(
-    0 => 'Trackback Enabled',
-    -1 => 'Trackback Disabled'
+    0 => 'Trackback ',
+    -1 => 'Trackback '
 );
 
 ?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/russian_utf-8.php 1.4.1.src/cpanel-glprivate/language/russian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/russian_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/russian_utf-8.php	2006-12-28 16:37:01.000000000 -0600
@@ -115,7 +115,7 @@
     56 => 'Голосовать',
     57 => 'Пароль',
     58 => 'Войти',
-    59 => "Вы ещё не зарегистрировались?  Сделайте это здесь: <a href=\"{$_CONF['site_url']}/users.php?mode=new\">Новый пользователь</a>",
+    59 => "Не зарегистрировались?<br>-> <a href=\"{$_CONF['site_url']}/users.php?mode=new\">Новый пользователь</a>",
     60 => 'Послать комментарий',
     61 => 'Создать учётную запись',
     62 => 'cлова',
@@ -131,8 +131,8 @@
     72 => 'ссылки',
     73 => 'прошлые опросы',
     74 => 'календарь',
-    75 => 'расширенный поиск',
-    76 => 'статистика',
+    75 => 'Расширенный поиск',
+    76 => 'Статистика',
     77 => 'Модули',
     78 => 'Будущие события',
     79 => 'Что нового',
@@ -150,7 +150,7 @@
     91 => 'Страница создана за',
     92 => 'секунд',
     93 => 'Копирайт',
-    94 => 'Все торговые марки и копирайты на этой странице являются собственностью соответствующих хозяев.',
+    94 => 'Все торговые марки и копирайты на этой странице являются собственностью их хозяев.',
     95 => 'Работает на',
     96 => 'Группы',
     97 => 'Список слов',
@@ -175,32 +175,14 @@
     116 => 'Trackback',
     117 => 'Directory',
     118 => 'Please continue reading on the next page:',
-    119 => "Lost your <a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">password</a>?",
+    119 => "Или <a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">забыли пароль</a>?",
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Календарь событий',
-    2 => 'Извините, здесь нет событий для отображения.',
-    3 => 'Когда:',
-    4 => 'Где:',
-    5 => 'Описание:',
-    6 => 'Добавить событие',
-    7 => 'Будущие события',
-    8 => 'Добавив это событие в свой персональный календарь, Вы можите быстро просмотреть только те события, которые Вас интересуют на странице Мой календарь.',
-    9 => 'Добавить в Мой календарь',
-    10 => 'Удалить из Моего календаря',
-    11 => "Добавить событие в календарь {$_USER['username']}",
-    12 => 'Событие',
-    13 => 'Начало',
-    14 => 'Конец',
-    15 => 'Назад в Календарь'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -346,23 +328,56 @@
     104 => 'Показывать онлайн-статус',
     105 => 'Показывать в Who\'s Online блоке',
     106 => 'Location',
-    107 => 'Shown in your public profile',
-    108 => 'Confirm new password',
-    109 => 'Enter the New password again here',
-    110 => 'Current Password',
-    111 => 'Please enter your Current password',
-    112 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
-    113 => 'Login Attempt Failed',
-    114 => 'Account Disabled',
-    115 => 'Your account has been disabled, you may not login. Please contact an Administrator.',
-    116 => 'Account Awaiting Activation',
-    117 => 'Your account is currently awaiting activation by an administrator. You will not be able to login until your account has been approved.',
-    118 => "Your {$_CONF['site_name']} account has now been activated by an administrator. You may now login to the site at the url below using your username (<username>) and password as previously emailed to you.",
-    119 => 'If you have forgotten your password, you may request a new one at this url:',
-    120 => 'Account Activated',
+    107 => 'Будет показан в Вашем публичном профиле',
+    108 => 'Подтвердите новый пароль',
+    109 => 'Повторно введите Ваш новый пароль здесь',
+    110 => 'Текущий пароль',
+    111 => 'Пожалуйста, введите Ваш Текущий пароль',
+    112 => 'Вы превысили разрешённое количество попыток ввода пароля. Попробуйте снова позднее.',
+    113 => 'Попытка входа неудачна',
+    114 => 'Аккаунт заблокирован',
+    115 => 'Ваш аккаунт был заблокирован, возможно, Вы не сможете войти. Свяжитесь с Администрацией.',
+    116 => 'Аккаунт ожидает активацию',
+    117 => 'Ваш аккаунт ожидает активации Администратором. Будьте терпеливы.',
+    118 => "Ваш аккаунт на {$_CONF['site_name']} был активирован Администратором. Вы можете войти на сайт по ссылке ниже, с именем пользователя (<username>) и присланном нами в предыдущем письме паролем.",
+    119 => 'Если Вы забыли свой пароль, Вы можете запросить новый, посетив эту страницу:',
+    120 => 'Аккаунт активирован',
     121 => 'Service',
-    122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    122 => 'Извините, регистрация новых пользователей отключена',
+    123 => "Вы <a href=\"{$_CONF['site_url']}/users.php?mode=new\">новый пользователь</a>?",
+    124 => 'Подтвержите Email',
+    125 => 'Вы должны ввести одинаковые email адреса в обоих полях!',
+    126 => 'Пожалуйста, повторите для подтверждения',
+    127 => 'Для изменения каких-либо настроек Вы должны ввести свой текущий пароль.',
+    128 => 'Ваше имя',
+    129 => 'Пароль &amp; Email',
+    130 => 'О Вас',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Тема и язык',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Пароль и email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'Информация о Пользователе',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Логин и Пароль',
+    153 => 'Тема & Язык',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Удалить аккаунт'
 );
 
 ###############################################################################
@@ -679,38 +694,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Редактирование события',
-    2 => 'Ошибка',
-    3 => 'Заголовок события',
-    4 => 'Ссылка на событие',
-    5 => 'Дата начала события',
-    6 => 'Дата конца события',
-    7 => 'Место проведения события',
-    8 => 'Описание события',
-    9 => '(включая http://)',
-    10 => 'Вы должны заполнить все поля на этой форме!',
-    11 => 'Менеджер событий',
-    12 => 'Для изменения или удаления события, выберите событие ниже. Для создания нового нажмите на кнопку Создать событие.',
-    13 => 'Заголовок события',
-    14 => 'Дата начала',
-    15 => 'Дата окончания',
-    16 => 'Доступ закрыт',
-    17 => "Вы пытались получить доступ к событию, для которого у Вас нет прав. Эта попытка была запротоколирована. Пожалуйста, <a href=\"{$_CONF['site_admin_url']}/event.php\">вернитесь на станицу администрирования событий</a>.",
-    18 => 'Новое событие',
-    19 => 'Home администратора',
-    20 => 'сохранить',
-    21 => 'отменить',
-    22 => 'удалить',
-    23 => 'Неверная начальная дата.',
-    24 => 'Неверная конечная дата.',
-    25 => 'Начальная дата позже конечной.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -801,7 +787,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -889,7 +877,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -919,53 +936,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Воскресенье',
-    2 => 'Понедельник',
-    3 => 'Вторник',
-    4 => 'Среда',
-    5 => 'Четверг',
-    6 => 'Пятница',
-    7 => 'Суббота',
-    8 => 'Добавить событие',
-    9 => 'Событие Geeklog',
-    10 => 'События за',
-    11 => 'Главный календарь',
-    12 => 'Мой Календарь',
-    13 => 'Январь',
-    14 => 'Февраль',
-    15 => 'Март',
-    16 => 'Апрель',
-    17 => 'Май',
-    18 => 'Июнь',
-    19 => 'Июль',
-    20 => 'Август',
-    21 => 'Сентябрь',
-    22 => 'Октябрь',
-    23 => 'Ноябрь',
-    24 => 'Декабрь',
-    25 => 'Назад к ',
-    26 => 'Весь день',
-    27 => 'Неделя',
-    28 => 'Личный календарь для',
-    29 => 'Общий календарь',
-    30 => 'удалить событие',
-    31 => 'Добавить',
-    32 => 'Событие',
-    33 => 'Дата',
-    34 => 'Время',
-    35 => 'быстрое добавление',
-    36 => 'Послать',
-    37 => 'Извините, функция личного календаря на данном сайте не работает',
-    38 => 'Персональный редактор событий',
-    39 => 'День',
-    40 => 'Неделя',
-    41 => 'Месяц'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1089,7 +1059,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1157,20 +1129,29 @@
     59 => 'Синопсис успешно удалён.',
     60 => 'Модуль успешно обновлён',
     61 => 'Модуль %s: неизвестное хранилище сообщений',
-    62 => 'The trackback comment has been deleted.',
-    63 => 'An error occurred when deleting the trackback comment.',
-    64 => 'Your trackback comment has been successfully sent.',
-    65 => 'Weblog directory service successfully saved.',
-    66 => 'The weblog directory service has been deleted.',
-    67 => 'The new password does not match the confirmation password!',
-    68 => 'You have to enter the correct current password.',
-    69 => 'Your account has been blocked!',
-    70 => 'Your account is awaiting administrator approval.',
-    71 => 'Your account has now been confirmed and is awaiting administrator approval.',
-    72 => 'An error occured while attempting to install the plugin. See error.log for details.',
-    73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
-    74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    62 => 'Комментарий trackback успешно удалён.',
+    63 => 'Произошла ошибка при попытке удаления комментария trackback.',
+    64 => 'Ваш комментарий trackback успешно отослан.',
+    65 => 'Каталог Weblog сервиса успешно сохранён.',
+    66 => 'Каталог weblog сервиса был удалён.',
+    67 => 'Новый пароль не соответствует паролю в поле подтверждения!',
+    68 => 'Вы должны ввести правильный текущий пароль.',
+    69 => 'Ваш аккаунт заблокирован!',
+    70 => 'Ваш аккаунт ожидает проверки Администратором.',
+    71 => 'Ваш аккаунт подтверждён, но ожидает проверки Администратором.',
+    72 => 'При попытке инсталляции плагина произошла ошибка. Смотрите error.log - там все подробности.',
+    73 => 'При попытке деинсталляции плагина произошла ошибка. Смотрите error.log - там все подробности.',
+    74 => 'Pingback был успешно отправлен.',
+    75 => 'Trackbacks должен быть отправлен, используя запрос POST.',
+    76 => 'Вы действительно хотите удалить этот пункт?',
+    77 => 'ВНИМАНИЕ:<br>Вы должны установить кодировкой по умолчанию UTF-8. Тем не менее, Ваш сервер не поддерживает мультибайтовые кодировки. Пожалуйста, установите функции mbstring для PHP или выберите другую раскладку/язык.',
+    78 => 'Пожалуйста, проверьте, чтобы email адрес и адрес подтверждения email совпадали.',
+    79 => 'Страница, которую Вы пытаетесь открыть, обращается к функции, которой больше нет на сайте.',
+    80 => 'Плагин, который создал этот механизм, отключен. Вы не сможете редактировать этот механизм, пока не включите родительский плагин.',
+    81 => 'Вы неправильно набрали на клавиатуре логин. Пожалуйста, попробуйте войти позже.',
+    82 => 'Вы превысили количество разрешенных попыток входа. Пожалуйста, попробуйте позже.',
+    83 => 'Чтобы изменить свой пароль, email адрес, или срок, в течение которого система будет помнить Вас, введите свой текущий пароль.',
+    84 => 'Чтобы удалить свой аккаунт, пожалуйста, введите свой текущий пароль.'
 );
 
 ###############################################################################
@@ -1212,7 +1193,6 @@
     'none' => 'Никаких',
     'accessdenied' => 'Доступ закрыт',
     'storydenialmsg' => "У Вас нет прав на просмотр этой статьи. Возможно, Вы просто не являетесь зарегистрированным пользователем {$_CONF['site_name']}.  Пожалуйста, <a href=users.php?mode=new>зарегистрируйтесь</a> на {$_CONF['site_name']} для получения пользовательского доступа!",
-    'eventdenialmsg' => "У Вас нет прав на просмотр этого события. Возможно, Вы просто не являетесь зарегистрированным пользователем {$_CONF['site_name']}.  Пожалуйста, <a href=users.php?mode=new>зарегистрируйтесь</a> на {$_CONF['site_name']} для получения пользовательского доступа!",
     'nogroupsforcoregroup' => 'Эта группа не принадлежит ниодной другой группе',
     'grouphasnorights' => 'Эта группа не имеет доступа ни к одной административной функции сайта.',
     'newgroup' => 'Новая группа',
@@ -1233,13 +1213,13 @@
     'cantlistgroup' => 'Чтобы увидеть состав группы, вы сами доложны быть в её составе. Если вы считаете это ошибкой, уведомите системного администратора.',
     'editgroupmsg' => 'To modify the group membership, click on the member names(s) and use the add or remove buttons. If the member is a member of the group, their name will appear on the right side only. Once you are complete - press <b>Save</b> to update the group and return to the main group admin page.',
     'listgroupmsg' => 'Listing of all current members in the group: <b>%s</b>',
-    'search' => 'Search',
-    'submit' => 'Submit',
+    'search' => 'Поиск',
+    'submit' => 'Принять',
     'limitresults' => 'Limit Results',
     'group_id' => 'Group ID',
-    'plugin_access_denied_msg' => 'You are illegally trying access a plugin administration page.  Please note that all attempts to illegally access this page are logged.',
-    'groupexists' => 'Group name already exists',
-    'groupexistsmsg' => 'There is already a group with this name. Group names must be unique.'
+    'plugin_access_denied_msg' => 'Вы пытаетесь нелегально получить доступ к странице администрирования. Учтите, что все подобные попытки протоколируются и Ваш провайдер также о них узнает.',
+    'groupexists' => 'Такое имя группы уже есть',
+    'groupexistsmsg' => 'Уже есть группа с таким именем. Имена групп должны быть уникальны.'
 );
 
 ###############################################################################
@@ -1272,8 +1252,8 @@
     7 => 'Статистика сайта',
     8 => 'Персонализация',
     9 => 'Искать',
-    10 => 'расширенный поиск',
-    11 => 'Directory'
+    10 => 'Расширенный поиск',
+    11 => 'Каталог'
 );
 
 ###############################################################################
@@ -1281,7 +1261,7 @@
 
 $LANG_404 = array(
     1 => '404 Ошибка',
-    2 => 'Хмм, я посмотрел везде, но не смог найти <b>%s</b>.',
+    2 => 'Хмм, мы посмотрели везде, но не смогли найти <b>%s</b>.',
     3 => "<p>Нам очень жаль, но файл, который Вы запросили, не существует. Пожайлуйста, не стесняйтесь посмотреть <a href=\"{$_CONF['site_url']}\">главную страницу</a> или <a href=\"{$_CONF['site_url']}/search.php\">страницу поиска</a> чтобы определить, сможете ли Вы найти то, что потеряли :)."
 );
 
@@ -1394,22 +1374,23 @@
     'trackback_note' => 'To send a trackback comment for a story, go to the list of stories and click on "Send Ping" for the story. To send a trackback that is not related to a story, <a href="%s">click here</a>.',
     'pingback_explain' => 'Enter a URL to send the Pingback to. The pingback will point to your site\'s homepage.',
     'pingback_url' => 'Pingback URL',
-    'site_url' => 'This site\'s URL',
-    'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
-    'pbtarget_missing' => 'No Pingback URL',
-    'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'site_url' => 'URL этого сайта',
+    'pingback_note' => 'Чтобы отправить pingback на историю, пройдите в список историй и кликните "Send Ping" для данной истории. Чтобы отправить pingback, не относящийся к истории, <a href="%s">нажмите сюда</a>.',
+    'pbtarget_missing' => 'Нет Pingback URL',
+    'pbtarget_required' => 'Пожалуйста, введите pingback URL',
+    'pb_error_details' => 'Ошибка pingback:',
+    'delete_trackback' => 'Чтобы удалить этот Trackback кликните: '
 );
 
 ###############################################################################
 # directory.php
 
 $LANG_DIR = array(
-    'title' => 'Article Directory',
-    'title_year' => 'Article Directory for %d',
-    'title_month_year' => 'Article Directory for %s %d',
-    'nav_top' => 'Back to Article Directory',
-    'no_articles' => 'No articles.'
+    'title' => 'Каталог статей',
+    'title_year' => 'Каталог статей за %d',
+    'title_month_year' => 'Каталог статей за %s %d',
+    'nav_top' => 'Вернуться в каталог статей',
+    'no_articles' => 'Нет статей.'
 );
 
 ###############################################################################
@@ -1423,18 +1404,49 @@
 # %s    scale, "hrs", "weeks"
 
 $LANG_WHATSNEW = array(
-    'new_string' => '%n new %i in the last %t %s',
-    'new_last' => 'last %t %s',
-    'minutes' => 'minutes',
-    'hours' => 'hours',
-    'days' => 'days',
-    'weeks' => 'weeks',
-    'months' => 'months',
-    'minute' => 'minute',
-    'hour' => 'hour',
-    'day' => 'day',
-    'week' => 'week',
-    'month' => 'month'
+    'new_string' => '%n новых %i за последние %t %s',
+    'new_last' => 'за последние %t %s',
+    'minutes' => 'минуты',
+    'hours' => 'часов',
+    'days' => 'дней',
+    'weeks' => 'недели',
+    'months' => 'месяца',
+    'minute' => 'минута',
+    'hour' => 'час',
+    'day' => 'день',
+    'week' => 'неделя',
+    'month' => 'месяц'
+);
+
+###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Январь',
+    2 => 'Февраль',
+    3 => 'Март',
+    4 => 'Апрель',
+    5 => 'Май',
+    6 => 'Июнь',
+    7 => 'Июль',
+    8 => 'Август',
+    9 => 'Сентябрь',
+    10 => 'Октябрь',
+    11 => 'Ноябрь',
+    12 => 'Декабрь'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Воскресенье',
+    2 => 'Понедельник',
+    3 => 'Вторник',
+    4 => 'Среда',
+    5 => 'Четверг',
+    6 => 'Пятница',
+    7 => 'Суббота'
 );
 
 ###############################################################################
@@ -1444,23 +1456,28 @@
 # display administration lists and edit pages
 
 $LANG_ADMIN = array(
-    'search' => 'Search',
+    'search' => 'Поиск',
     'limit_results' => 'Limit Results',
-    'submit' => 'Submit',
-    'edit' => 'Edit',
-    'admin_home' => 'Admin Home',
-    'create_new' => 'Create New',
-    'enabled' => 'Enabled',
-    'title' => 'Title',
-    'type' => 'Type',
-    'topic' => 'Topic',
-    'help_url' => 'Help File URL',
-    'save' => 'Save',
-    'cancel' => 'Cancel',
-    'delete' => 'Delete',
-    'copy' => 'Copy',
-    'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'submit' => 'Принять',
+    'edit' => 'Редактировать',
+    'edit_adv' => 'Adv. Edit',
+    'admin_home' => 'Главная администрирования',
+    'create_new' => 'Создать',
+    'create_new_adv' => 'Создать (Adv.)',
+    'enabled' => 'Включено',
+    'title' => 'Описание',
+    'type' => 'Тип',
+    'topic' => 'Раздел',
+    'help_url' => 'Файл подсказки (URL)',
+    'save' => 'Сохранить',
+    'cancel' => 'Отмена',
+    'delete' => 'Удалить',
+    'delete_sel' => 'Удалить выбранное',
+    'copy' => 'Копировать',
+    'no_results' => '- Не найдено записей -',
+    'data_error' => 'Произошла ошибка обработки данных подписки. Пожалуйста, проверьте исходные данные.',
+    'preview' => 'Предварит. просмотр',
+    'records_found' => 'Найдено записей'
 );
 
 ###############################################################################
@@ -1469,8 +1486,8 @@
 # database.
 
 $LANG_commentcodes = array(
-    0 => 'Comments Enabled',
-    -1 => 'Comments Disabled'
+    0 => 'Комментарии разрешены',
+    -1 => 'Комментарии запрещены'
 );
 
 
@@ -1478,47 +1495,47 @@
     'flat' => 'Flat',
     'nested' => 'Nested',
     'threaded' => 'Threaded',
-    'nocomment' => 'No Comments'
+    'nocomment' => 'Нет комментариев'
 );
 
 $LANG_cookiecodes = array(
     0 => '(don\'t)',
-    3600 => '1 Hour',
-    7200 => '2 Hours',
-    10800 => '3 Hours',
-    28800 => '8 Hours',
-    86400 => '1 Day',
-    604800 => '1 Week',
-    2678400 => '1 Month'
+    3600 => '1 час',
+    7200 => '2 часа',
+    10800 => '3 часа',
+    28800 => '8 часов',
+    86400 => '1 день',
+    604800 => '1 неделя',
+    2678400 => '1 месяц'
 );
 
 $LANG_dateformats = array(
-    0 => 'System Default'
+    0 => 'Как на сайте'
 );
 
 $LANG_featurecodes = array(
-    0 => 'Not Featured',
-    1 => 'Featured'
+    0 => 'Обычная',
+    1 => 'Особенная'
 );
 
 $LANG_frontpagecodes = array(
-    0 => 'Show Only in Topic',
-    1 => 'Show on Front Page'
+    0 => 'Показывать только в разделе',
+    1 => 'Показывать на главной странице'
 );
 
 $LANG_postmodes = array(
-    'plaintext' => 'Plain Old Text',
-    'html' => 'HTML Formatted'
+    'plaintext' => 'Обычный текст',
+    'html' => 'HTML форматирование'
 );
 
 $LANG_sortcodes = array(
-    'ASC' => 'Oldest First',
-    'DESC' => 'Newest First'
+    'ASC' => 'Сначала старые',
+    'DESC' => 'Сначала новые'
 );
 
 $LANG_trackbackcodes = array(
-    0 => 'Trackback Enabled',
-    -1 => 'Trackback Disabled'
+    0 => 'Trackback включен',
+    -1 => 'Trackback отключен'
 );
 
 ?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/slovak.php 1.4.1.src/cpanel-glprivate/language/slovak.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/slovak.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/slovak.php	2006-09-17 03:58:44.000000000 -0500
@@ -163,28 +163,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendar of Events',
-    2 => 'I\'m Sorry, there are no events to display.',
-    3 => 'When',
-    4 => 'Where',
-    5 => 'Description',
-    6 => 'Add An Event',
-    7 => 'Upcoming Events',
-    8 => 'By adding this event to your calendar you can quickly view only the events you are interested in by clicking "My Calendar" from the User Functions area.',
-    9 => 'Add to My Calendar',
-    10 => 'Remove from My Calendar',
-    11 => "Adding Event to {$_USER['username']}'s Calendar",
-    12 => 'Event',
-    13 => 'Starts',
-    14 => 'Ends',
-    15 => 'Back to Calendar'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -346,7 +328,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -663,38 +678,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Event Editor',
-    2 => 'Error',
-    3 => 'Event Title',
-    4 => 'Event URL',
-    5 => 'Event Start Date',
-    6 => 'Event End Date',
-    7 => 'Event Location',
-    8 => 'Event Description',
-    9 => '(include http://)',
-    10 => 'You must provide the dates/times, description and event location!',
-    11 => 'Event Manager',
-    12 => 'To modify or delete a event, click on that event below.  To create a new event click on new event above.',
-    13 => 'Event Title',
-    14 => 'Start Date',
-    15 => 'End Date',
-    16 => 'Access Denied',
-    17 => "You are trying to access an event that you don't have rights to.  This attempt has been logged. Please <a href=\"{$_CONF['site_admin_url']}/event.php\">go back to the event administration screen</a>.",
-    18 => 'New Event',
-    19 => 'Admin Home',
-    20 => 'save',
-    21 => 'cancel',
-    22 => 'delete',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -785,7 +771,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -873,7 +861,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -903,53 +920,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Sunday',
-    2 => 'Monday',
-    3 => 'Tuesday',
-    4 => 'Wednesday',
-    5 => 'Thursday',
-    6 => 'Friday',
-    7 => 'Saturday',
-    8 => 'Add Event',
-    9 => 'Geeklog Event',
-    10 => 'Events for',
-    11 => 'Master Calendar',
-    12 => 'My Calendar',
-    13 => 'January',
-    14 => 'February',
-    15 => 'March',
-    16 => 'April',
-    17 => 'May',
-    18 => 'June',
-    19 => 'July',
-    20 => 'August',
-    21 => 'September',
-    22 => 'October',
-    23 => 'November',
-    24 => 'December',
-    25 => 'Back to ',
-    26 => 'All Day',
-    27 => 'Week',
-    28 => 'Personal Calendar for',
-    29 => 'Public Calendar',
-    30 => 'delete event',
-    31 => 'Add',
-    32 => 'Event',
-    33 => 'Date',
-    34 => 'Time',
-    35 => 'Quick Add',
-    36 => 'Submit',
-    37 => 'Sorry, the personal calendar feature is not enabled on this site',
-    38 => 'Personal Event Editor',
-    39 => 'Day',
-    40 => 'Week',
-    41 => 'Month'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1073,7 +1043,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1154,7 +1126,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1185,7 +1166,7 @@
     'no' => 'No',
     'corerightsdescr' => "This group is a core {$_CONF['site_name']} Group.  Therefore the rights for this group cannot be edited.  Below is a read-only list of the rights this group has access to.",
     'groupmsg' => 'Security Groups on this site are hierarchical.  By adding this group to any of the groups below you will giving this group the same rights that those groups have.  Where possible it is encouraged you use the groups below to give rights to a group.  If you need this group to have custom rights then you can select the rights to various site features in the section below called \'Rights\'.  To add this group to any of the ones below simply check the box next to the group(s) that you want.',
-    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this groups belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
+    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this group belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
     'rightsdescr' => 'A groups access to a certain right below can be given directly to the group OR to a different group that this group is a part of.  The ones you see below without a checkbox are the rights that have been given to this group because it belongs to another group with that right.  The rights with checkboxes below are rights that can be given directly to this group.',
     'lock' => 'Lock',
     'members' => 'Members',
@@ -1196,7 +1177,6 @@
     'none' => 'None',
     'accessdenied' => 'Access Denied',
     'storydenialmsg' => "You do not have access to view this story.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
-    'eventdenialmsg' => "You do not have access to view this event.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
     'nogroupsforcoregroup' => 'This group doesn\'t belong to any of the other groups',
     'grouphasnorights' => 'This group doesn\'t have access to any of the administrative features of this site',
     'newgroup' => 'New Group',
@@ -1382,7 +1362,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1422,6 +1403,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'January',
+    2 => 'February',
+    3 => 'March',
+    4 => 'April',
+    5 => 'May',
+    6 => 'June',
+    7 => 'July',
+    8 => 'August',
+    9 => 'September',
+    10 => 'October',
+    11 => 'November',
+    12 => 'December'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Sunday',
+    2 => 'Monday',
+    3 => 'Tuesday',
+    4 => 'Wednesday',
+    5 => 'Thursday',
+    6 => 'Friday',
+    7 => 'Saturday'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1432,8 +1444,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1442,9 +1456,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/slovak_utf-8.php 1.4.1.src/cpanel-glprivate/language/slovak_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/slovak_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/slovak_utf-8.php	2006-09-17 03:58:44.000000000 -0500
@@ -163,28 +163,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendar of Events',
-    2 => 'I\'m Sorry, there are no events to display.',
-    3 => 'When',
-    4 => 'Where',
-    5 => 'Description',
-    6 => 'Add An Event',
-    7 => 'Upcoming Events',
-    8 => 'By adding this event to your calendar you can quickly view only the events you are interested in by clicking "My Calendar" from the User Functions area.',
-    9 => 'Add to My Calendar',
-    10 => 'Remove from My Calendar',
-    11 => "Adding Event to {$_USER['username']}'s Calendar",
-    12 => 'Event',
-    13 => 'Starts',
-    14 => 'Ends',
-    15 => 'Back to Calendar'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -346,7 +328,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -663,38 +678,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Event Editor',
-    2 => 'Error',
-    3 => 'Event Title',
-    4 => 'Event URL',
-    5 => 'Event Start Date',
-    6 => 'Event End Date',
-    7 => 'Event Location',
-    8 => 'Event Description',
-    9 => '(include http://)',
-    10 => 'You must provide the dates/times, description and event location!',
-    11 => 'Event Manager',
-    12 => 'To modify or delete a event, click on that event below.  To create a new event click on new event above.',
-    13 => 'Event Title',
-    14 => 'Start Date',
-    15 => 'End Date',
-    16 => 'Access Denied',
-    17 => "You are trying to access an event that you don't have rights to.  This attempt has been logged. Please <a href=\"{$_CONF['site_admin_url']}/event.php\">go back to the event administration screen</a>.",
-    18 => 'New Event',
-    19 => 'Admin Home',
-    20 => 'save',
-    21 => 'cancel',
-    22 => 'delete',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -785,7 +771,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -873,7 +861,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -903,53 +920,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Sunday',
-    2 => 'Monday',
-    3 => 'Tuesday',
-    4 => 'Wednesday',
-    5 => 'Thursday',
-    6 => 'Friday',
-    7 => 'Saturday',
-    8 => 'Add Event',
-    9 => 'Geeklog Event',
-    10 => 'Events for',
-    11 => 'Master Calendar',
-    12 => 'My Calendar',
-    13 => 'January',
-    14 => 'February',
-    15 => 'March',
-    16 => 'April',
-    17 => 'May',
-    18 => 'June',
-    19 => 'July',
-    20 => 'August',
-    21 => 'September',
-    22 => 'October',
-    23 => 'November',
-    24 => 'December',
-    25 => 'Back to ',
-    26 => 'All Day',
-    27 => 'Week',
-    28 => 'Personal Calendar for',
-    29 => 'Public Calendar',
-    30 => 'delete event',
-    31 => 'Add',
-    32 => 'Event',
-    33 => 'Date',
-    34 => 'Time',
-    35 => 'Quick Add',
-    36 => 'Submit',
-    37 => 'Sorry, the personal calendar feature is not enabled on this site',
-    38 => 'Personal Event Editor',
-    39 => 'Day',
-    40 => 'Week',
-    41 => 'Month'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1073,7 +1043,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1154,7 +1126,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1185,7 +1166,7 @@
     'no' => 'No',
     'corerightsdescr' => "This group is a core {$_CONF['site_name']} Group.  Therefore the rights for this group cannot be edited.  Below is a read-only list of the rights this group has access to.",
     'groupmsg' => 'Security Groups on this site are hierarchical.  By adding this group to any of the groups below you will giving this group the same rights that those groups have.  Where possible it is encouraged you use the groups below to give rights to a group.  If you need this group to have custom rights then you can select the rights to various site features in the section below called \'Rights\'.  To add this group to any of the ones below simply check the box next to the group(s) that you want.',
-    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this groups belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
+    'coregroupmsg' => "This group is a core {$_CONF['site_name']} Group.  Therefore the groups that this group belongs to cannot be edited.  Below is a read-only list of the groups this group belongs to.",
     'rightsdescr' => 'A groups access to a certain right below can be given directly to the group OR to a different group that this group is a part of.  The ones you see below without a checkbox are the rights that have been given to this group because it belongs to another group with that right.  The rights with checkboxes below are rights that can be given directly to this group.',
     'lock' => 'Lock',
     'members' => 'Members',
@@ -1196,7 +1177,6 @@
     'none' => 'None',
     'accessdenied' => 'Access Denied',
     'storydenialmsg' => "You do not have access to view this story.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
-    'eventdenialmsg' => "You do not have access to view this event.  This could be because you aren't a member of {$_CONF['site_name']}.  Please <a href=users.php?mode=new> become a member</a> of {$_CONF['site_name']} to receive full membership access!",
     'nogroupsforcoregroup' => 'This group doesn\'t belong to any of the other groups',
     'grouphasnorights' => 'This group doesn\'t have access to any of the administrative features of this site',
     'newgroup' => 'New Group',
@@ -1382,7 +1362,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1422,6 +1403,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'January',
+    2 => 'February',
+    3 => 'March',
+    4 => 'April',
+    5 => 'May',
+    6 => 'June',
+    7 => 'July',
+    8 => 'August',
+    9 => 'September',
+    10 => 'October',
+    11 => 'November',
+    12 => 'December'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Sunday',
+    2 => 'Monday',
+    3 => 'Tuesday',
+    4 => 'Wednesday',
+    5 => 'Thursday',
+    6 => 'Friday',
+    7 => 'Saturday'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1432,8 +1444,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1442,9 +1456,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/slovenian.php 1.4.1.src/cpanel-glprivate/language/slovenian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/slovenian.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/slovenian.php	2006-10-15 02:47:47.000000000 -0500
@@ -2,15 +2,12 @@
 
 ###############################################################################
 # slovenian.php
-# language file for geeklog version 1.3.10
+# language file for geeklog version 1.4.1 beta by mb
+# gape@gape.org ; za pripombe, predloge ipd ... pii na email
 #
 # This is the slovenian language page for GeekLog!
 # Special thanks to Mischa Polivanov for his work on this project
 #
-# Prevedel gape@gape.org ; za pripombe, predloge ipd ... pii na email
-# med plug-ini e nekaj manjka ... ker ne razumem scene
-# 
-#
 # Copyright (C) 2000 Jason Whittenburg
 # jwhitten@securitygeeks.com
 #
@@ -59,7 +56,7 @@
     10 => 'akajoa vsebina',
     11 => 'lanki',
     12 => 'Bloki',
-    13 => 'Teme',
+    13 => 'Rubrike',
     14 => 'Povezave',
     15 => 'Dogodki',
     16 => 'Ankete',
@@ -71,7 +68,7 @@
     22 => 'Uporabniki ID',
     23 => 'Varnostni nivo',
     24 => 'Anonimni uporabnik',
-    25 => 'Odgovori',
+    25 => 'Komentiraj',
     26 => 'Za komentarje so odgovorni njihovi avtorji. Avtorji spletne strani na komentarje obiskovalcev nimamo nobenega vpliva.',
     27 => 'Zadnjikrat komentirano',
     28 => 'Izbrii',
@@ -86,10 +83,10 @@
     37 => 'Ni lankov',
     38 => 'Zdruevanje vsebine (Syndication)',
     39 => 'Osvei',
-    40 => 'Izkljuene so <tt>register_globals = Off</tt> v <tt>php.ini</tt>. Geeklog zahteva <tt>register_globals</tt> <strong>vkljuene</strong>. Preden nadaljuje, jih prosim <strong>vkljui</strong> in ponovno zaeni web server.',
+    40 => 'Izkljuene so <tt>register_globals = Off</tt> v <tt>php.ini</tt>. Geeklog zahteva <tt>register_globals</tt> <strong>vkljuene</strong>. Preden nadaljuje, jih prosim <strong>vkljui</strong> in ponovno zaeni spletni strenik.',
     41 => 'Gostje',
     42 => 'Prispeval/a:',
-    43 => 'Odgovori na To',
+    43 => 'Odgovori na to',
     44 => 'Star',
     45 => 'MySQL tevilka napake',
     46 => 'MySQL sporoilo o napaki',
@@ -97,21 +94,21 @@
     48 => 'Podatki o uporabnikem raunu',
     49 => 'Nastavitve',
     50 => 'Napaka v SQL ukazu',
-    51 => 'pomo',
+    51 => 'Pomo',
     52 => 'Novo',
-    53 => 'Administratorske strani',
+    53 => 'Skrbnikova stran',
     54 => 'Ne morem odpreti datoteke',
     55 => 'Napaka na',
     56 => 'Glasuj',
     57 => 'Geslo',
     58 => 'Prijava',
-    59 => "Niste registriran uporabnik?  <a href=\"{$_CONF['site_url']}/users.php?mode=new\">Registrirajte se</a>.",
+    59 => "Nisi registriran uporabnik?  <a href=\"{$_CONF['site_url']}/users.php?mode=new\">Registrirajte se</a>.",
     60 => 'Dodaj komentar',
     61 => 'Nov uporabnik',
     62 => 'besed',
     63 => 'Nastavitve komentarjev',
     64 => 'Polji lanek prijatelju po e-poti',
-    65 => 'Stran prijazna za tisk',
+    65 => 'Za tisk prijazna stran',
     66 => 'Osebni koledar',
     67 => 'Dobrodoli na ',
     68 => 'Domov',
@@ -126,8 +123,8 @@
     77 => 'Prikljueni moduli',
     78 => 'Dogodki',
     79 => 'Kaj je novega',
-    80 => 'lankov v zadnjih',
-    81 => 'lanek v zadnjih ',
+    80 => 'lankov v zadnjih',
+    81 => 'lanek v zadnjih',
     82 => 'urah',
     83 => 'KOMENTARJI BRALCEV<br>',
     84 => 'POVEZAVE<br>',
@@ -137,7 +134,7 @@
     88 => 'ni novih povezav',
     89 => 'Trenutno ni nobenih prihajajoih dogodkov.',
     90 => 'Na osnovno stran',
-    91 => 'Spletna stran zgenerirana v',
+    91 => 'Spletna stran generirana v',
     92 => 'sekundah',
     93 => 'Copyright',
     94 => 'Vsa naa koda pripada vam.',
@@ -149,48 +146,30 @@
     100 => 'Ni novih lankov',
     101 => 'Vai dogodki',
     102 => 'Najavljeno je:',
-    103 => 'DB Bekapi',
+    103 => 'Varnostne kopije DB',
     104 => 'z',
-    105 => 'Email uporabniki',
+    105 => 'Poiljanje e-pote',
     106 => 'Ogledov',
     107 => 'GL Test verzije',
     108 => 'Izprazni cache',
     109 => 'Prijavi zlorabo',
-    110 => 'Prijavi ta prispevek upravniku strani',
-    111 => 'PDF verzija',
+    110 => 'Prijavi ta prispevek skrbniku strani',
+    111 => 'Razliica PDF',
     112 => 'Prijavljeni uporabniki',
     113 => 'Dokumentacija',
     114 => 'TRACKBACKS',
-    115 => 'No new trackback comments',
+    115 => 'Ni novih trackback komentarjev',
     116 => 'Trackback',
     117 => 'Directory',
-    118 => 'Please continue reading on the next page:',
-    119 => "Lost your <a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">password</a>?",
-    120 => 'Permanent link to this comment',
-    121 => 'Comments (%d)',
+    118 => 'Beri dalje na naslednji strani:',
+    119 => "Si izgubil svoje <a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">geslo</a>?",
+    120 => 'Trajna povezava na ta komentar',
+    121 => 'Komentarji (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Koledar dogodkov',
-    2 => 'Trenutno ni v koledar vpisanega nobenega dogodka.',
-    3 => 'Kdaj',
-    4 => 'Kje',
-    5 => 'Opis',
-    6 => 'Dodaj dogodek',
-    7 => 'Prihajajoi dogodki',
-    8 => 'Ko boste dodali nov dogodek v va osebni koledar, lahko te dogodke pregledate s klikom na "Osebni koledar" v meniju "Osebne nastavitve".',
-    9 => 'Dodaj v Osebni koledar',
-    10 => 'Odstrani iz Osebnega koledarja',
-    11 => "Dodajanje dogodka v Osebni koledar uporabnika {$_USER['username']}",
-    12 => 'Dogodek',
-    13 => 'Zaetek dogodka',
-    14 => 'Konec dogodka',
-    15 => 'nazaj na koledar'
+    123 => 'Dovoljen je ves HTML',
+    124 => 'Klikni za izbris vseh preverjenih predmetov',
+    125 => 'Hoe res izbrisati vse preverjene predmete?',
+    126 => 'Izberi ali preklii vse predmete'
 );
 
 ###############################################################################
@@ -202,27 +181,27 @@
     3 => 'Odjava',
     4 => 'Registrirajte se',
     5 => 'Uporabniko ime',
-    6 => 'e elite posredovati komentar se morate registrirati. e e nimate svojega uporabnikega imena in gesla, kliknite spodaj.',
-    7 => 'Va zadnji komentar je bil pred',
-    8 => " sekundami.  Med posameznimi komentarji bralca mora pretei vsaj {$_CONF['commentspeedlimit']} sekund",
+	6 => 'Za objavo komentarjev na tej spletni strani je treba biti registriran. e e nima svojega uporabnikega imena in gesla, klikni spodaj.',
+    7 => 'Tvoj zadnji komentar je bil objavljen pred ',
+    8 => " sekundami.  Med posameznimi komentarji istega uporabnika mora pretei vsaj {$_CONF['commentspeedlimit']} sekund.",
     9 => 'Komentar',
     10 => 'Polji prijavo',
-    11 => 'Polji komentar',
-    12 => 'e elite posredovati komentar, vpiite vae ime, e-mail naslov, naslov komentarja in vsebino komentarja.',
-    13 => 'Vae informacije',
+    11 => 'Oddaj komentar',
+	12 => 'Za objavo komentarja izpolni polji Naslov in Komentar,  ker je to za  oddajo vsebine nujno.',
+    13 => 'Tvoji podatki',
     14 => 'Predogled',
-    15 => 'Report this post',
+    15 => 'Prijavite ta komentar',
     16 => 'Naslov',
     17 => 'Napaka',
     18 => 'Pomembno',
-    19 => 'Prosimo da se skuate drati teme objavljenega lanka.',
-    20 => 'Zaeleno je argumentiranje vaih trditev.',
-    21 => 'Preberite komentarje ostalih - morda je kdo e napisal kaj kar nameravate napisati tudi vi.',
-    22 => 'Pazite na pravilno slovnico in se izogibajte alitvam drugih.',
-    23 => 'Va e-mail naslov ne bo javno objavljen.',
+    19 => 'Skuaj se prosim drati teme rubrike, v kateri je objavljen lanek.',
+    20 => 'Raje odgovarjaj na komentarje drugih, namesto da zane novo nit (thread).',
+    21 => 'Pred objavo svojega komentarja preberi druge, da ne bo ponavljanja. Morda je kdo e povedal kaj, kar namerava napisati.',
+    22 => 'Uporabi tak naslov, da bo jasno, o em govori tvoj komentar.',
+    23 => 'Tvoj e-naslov ne bo javno objavljen.',
     24 => 'Anonimni uporabnik',
-    25 => 'Ste prepriani da hoete prijaviti ta orispevek upravniku strani?',
-    26 => '%s je prijavil naslednji prispevek ki zlorablja:',
+    25 => 'Hoe ta prispevek res prijaviti skrbniku strani?',
+    26 => '%s je prijavil sledei prispevek, ki zlorablja:',
     27 => 'Prijava zlorabe'
 );
 
@@ -237,177 +216,210 @@
     5 => 'Elektronski naslov',
     6 => 'Spletna stran',
     7 => 'Opis',
-    8 => 'PGP javni klju',
+    8 => 'Javni klju PGP',
     9 => 'Shrani podatke',
     10 => 'Zadnjih 10 komentarjev uporabnika',
     11 => 'Uporabnik ni prispeval nobenih komentarjev',
     12 => 'Uporabnike nastavitve za',
-    13 => 'Polji nono poroilo (Nightly Digest)',
-    14 => 'Geslo se generira nakljuno. Priporoamo vam, da geslo takoj spremenite. To storite s klikom na Informacije o raunu v  meniju Osebne nastavitve. Za spremembe osebnih nastavitev se morate prijaviti v sistem.',
-    15 => 'Va uporabniki raun na spletni strani je bil uspeno vzpostavljen. e ga elite uporabljati, se morate prijaviti s spodnjimi podatki. Svetujemo vam da podatke o vaem uporabnikem raunu shranite.',
-    16 => 'Informacije o vaem uporabnikem raunu',
+    13 => 'Polji noni pegled',
+    14 => 'Geslo se generira nakljuno. Priporoljivo je, da geslo takoj spremenite. To storite s klikom na Informacije o raunu v  meniju Osebne nastavitve. Za spremembe osebnih nastavitev se je treba prijaviti v sistem.',
+    15 => 'Tvoj uporabniki raun na tej spletni strani je bil uspeno ustvarjen. e ga hoe uporabljati, se mora prijaviti s spodnjimi podatki. Prosim shrani to e-poto za  potrebe v prihodnje.',
+    16 => 'Podatki o tvojem uporabnikem raunu',
     17 => 'Uporabniki raun ne obstaja',
-    18 => 'Vneeni e-mail naslov ni veljaven',
-    19 => 'Vneeno uporabniko ime ali e-mail naslov sta e uporabljena na tem sistemu',
-    20 => 'Vneeni e-mail naslov ni veljaven',
+    18 => 'Vneseni e-naslov ni veljaven',
+    19 => 'Vneseno uporabniko ime ali e-naslov e obstaja',
+    20 => 'Vneseni e-naslov ni veljaven',
     21 => 'Napaka',
     22 => "Registracija {$_CONF['site_name']}!",
-    23 => "Registracija vam omogoa lanstvo na nai spletni strani{$_CONF['site_name']}. To pomeni da boste lahko objavljali komentarje, poiljali svoje lanke, dostopali in dodajali zapiske in bili deleni vseh pomembnih informacij. e se ne registrirate, boste na spletni strani lahko sodelovali le kot anonimni uporabnik. <font color=red>Elektronski naslovi registriranih uporabnikov <b><i>ne bodo javno objavljeni</i></b>.",
-    24 => 'Geslo vam bomo poslali na e-mail naslov, ki ste ga vnesli.',
-    25 => 'Ste pozabili geslo?',
-    26 => 'Vnesite <em>uporabniko ime</em> <em>ali</em> email naslov s katerim ste se registrirali in kliknite spodnji gumb (Polji geslo po emailu). Navodila kako nastaviti novo geslo vam bomo sporoili na registrirani e-mail naslov.',
-    27 => 'Registrirajte se!',
-    28 => 'Polji geslo na e-mail naslov',
+    23 => "Ustvarjenje uporabnikega rauna omogoa uporabo vseh ugodnosti na spletni strani {$_CONF['site_name']}. Lahko bo v svojem imenu objavljal komentarje ter oddajal lanke in slike.  Brez uporabnikega rauna lahko objavlja le anonimno. <font color=red>Elektronski naslovi registriranih uporabnikov na tej spletni strani ne bodo <b><i>nikoli</i></b> javno prikazani.",
+    24 => 'Tvoje geslo bo poslano na vneseni e-naslov.',
+    25 => 'Si pozabil/a geslo?',
+    26 => 'Vnesi <em>uporabniko ime</em> <em>ali</em> e-naslov, s katerim si se registriral/a, in klikni gumb Polji geslo po e-poti. Navodila za nastavitev novega gesla bodo poslana na registrirani e-naslov.',
+    27 => 'Registriraj se',
+    28 => 'Polji geslo na e-naslov',
     29 => 'odjava',
     30 => 'prijava',
-    31 => 'Za izvedbo te funkcije se morate prijaviti',
+    31 => 'Za izvedbo te funkcije se je treba prijaviti',
     32 => 'Podpis',
-    33 => 'Se nikoli javno ne prikae',
-    34 => 'Vae pravo ime',
+    33 => 'Nikoli se ne prikae javno',
+    34 => 'Tvoje pravo ime',
     35 => 'Vpii spremenjeno geslo',
-    36 => 'Zane z http://',
+    36 => 'Zane se s http://',
     37 => 'Nastavitve komentarjev',
     38 => 'To lahko prebere vsakdo',
-    39 => 'PGP javni klju?',
-    40 => 'Brez ikone teme',
+    39 => 'Javni klju PGP',
+    40 => 'Brez ikone rubrike',
     41 => 'Pripravljen moderirati',
-    42 => 'Format datuma',
+    42 => 'Oblika zapisa datuma',
     43 => 'Najve lankov',
     44 => 'Brez okvirjev',
     45 => 'Prikai nastavitve za',
     46 => 'Izkljueni deli',
     47 => 'Nastavitve novosti za',
-    48 => 'Teme',
+    48 => 'Rubrike',
     49 => 'Brez ikon v lankih',
-    50 => 'e vas ne zanima, odznaite',
+    50 => 'e te ne zanima, odstrani oznako',
     51 => 'Samo novi lanki',
     52 => 'Privzeta nastavitev je 10',
     53 => 'Prejmi nove lanke vsako no',
-    54 => 'Oznai teme in avtorje, katerih prispevki vas ne zanimajo',
-    55 => 'e pustite prazno, se bodo ohranile privzete nastavitve. e zanete izbirati bloke, se bodo prikazali samo tisti, ki ste jih izbrali (brez privzetih). Privzete nastavitve so <B> povdarjene</B>.',
+    54 => 'Oznai rubrike in avtorje, katerih prispevki te ne zanimajo',
+    55 => 'e pusti prazno, se bodo ohranile privzete nastavitve. e zane izbirati bloke, izberi vse, ki jih eli, ker se bodo prikazali samo izbrani (brez privzetih). Privzeti vnosi so prikazani <B> krepko</B>.',
     56 => 'Avtorji',
-    57 => 'Nain prikaza',
+    57 => 'Oblikovanje',
     58 => 'Uredi po',
     59 => 'Omejitve komentarja',
-    60 => 'Kaken nain izpisa elite za svoje komentarje',
-    61 => 'Najprej novi ali stari?',
+    60 => 'Kako naj bodo izpisani tvoji komentarji?',
+    61 => 'Najprej najnoveji ali najstareji?',
     62 => 'Prevzeta vrednost je 100',
-    63 => "Geslo je bilo poslano na va e-mail naslov. Sledite navodilom, ki jih boste dobili. Hvala ker uporabljate spletno stran {$_CONF['site_name']}",
+    63 => "Geslo je bilo poslano na tvoj e-naslov in bi moralo prispeti vsak hip. Sledi prosim navodilom, ki jih bo prejel/a. Hvala, da uporablja spletno stran {$_CONF['site_name']}.",
     64 => 'Nastavitve komentarjev za',
-    65 => 'Poizkusite se ponovno prijaviti',
-    66 => "Morda ste se zmotili pri vnosu svojega uporabnikega imena ali gesla? Poizkusite se ponovno prijaviti. Ste morda e neregistriran uporabnik - v tem primeru se <a href=\"{$_CONF['site_url']}/users.php?mode=new\">registrirajte</a>.",
+    65 => 'Poskusi se prijaviti ponovno',
+    66 => "Morda si se zmotil/a pri vnosu svojega uporabnikega imena ali gesla. Poskusi se ponovno prijaviti. Si morda e neregistriran uporabnik? V tem primeru se <a href=\"{$_CONF['site_url']}/users.php?mode=new\">registriraj</a>.",
     67 => 'Uporabnik od',
-    68 => 'Zapomni se me za',
-    69 => 'Kako dolgo naj si te zapomnim po zadnji prijavi?',
-    70 => "Priredi izgled spletne strani {$_CONF['site_name']}",
-    71 => "Ena od posebnosti spletne strani{$_CONF['site_name']} je popolna monost prilagajanja izgleda posameznemu uporabniku.  e elite uporabiti to monost se morate najprej <a href=\"{$_CONF['site_url']}/users.php?mode=new\">prijaviti</a> na {$_CONF['site_name']}.  Ali ste e postali registrirani uporabnik?  Prijavite se!",
+    68 => 'Zapomni si me za',
+    69 => 'Koliko asa po zadnji prijavi naj si te zapomnim?',
+    70 => "Priredi postavitev in vsebino spletne strani {$_CONF['site_name']}",
+    71 => "Ena od posebnosti spletne strani {$_CONF['site_name']} je monost popolnega prilagajanja izgleda posameznemu uporabniku.  e hoe uporabiti to monost, se mora najprej <a href=\"{$_CONF['site_url']}/users.php?mode=new\">prijaviti</a> na {$_CONF['site_name']}. Si e postal/a registrirani uporabnik? Prijavi se!",
     72 => 'Tema',
     73 => 'Jezik',
-    74 => 'Spremeni izgled strani!',
-    75 => 'Teme po e-mailu',
-    76 => 'Nove lanke iz izbranih podroij boste ob koncu vsakega dneva prejeli po e-mailu. Izberite teme, ki vas zanimajo!',
+    74 => 'Spremeni izgled strani.',
+    75 => 'Rubrike po e-poti za',
+    76 => 'e  na spodnjem seznamu izbere rubriko, bo nove lanke, objavljene v njej, ob koncu vsakega dneva prejel/a po e-poti. Izberi le rubrike, ki te zanimajo.',
     77 => 'Slika',
-    78 => 'Dodaj svojo sliko!',
+    78 => 'Dodaj svojo sliko.',
     79 => 'Izbrii izbrano sliko',
-    80 => 'Vpis',
-    81 => 'Polji Email',
+    80 => 'Prijava',
+    81 => 'Polji e-poto',
     82 => 'Zadnjih 10 lankov uporabnika',
-    83 => 'Statistika objavljanja uporabnika',
+    83 => 'Statistika uporabnikovih objav',
     84 => 'Skupno tevilo lankov:',
     85 => 'Skupno tevilo komentarjev:',
     86 => 'Najdi vse objave uporabnika',
-    87 => 'Vae uporabniko ime',
-    88 => "Nekdo (verjetno ti) je zahteval novo geslo za tvoj raun  \"%s\" na {$_CONF['site_name']}, <{$_CONF['site_url']}>.\n\ne res eli novo geslo, prosim klikni povezavo :\n\n",
-    89 => "e noe novega gesla, preprosto ignoriraj to sporoilo in zahtevo bomo zavrgli (tvoje geslo bo ostalo nespremenjeno).\n\n",
-    90 => 'Spodaj lahko vpie novo geslo za svoj raun. Prosim, vedi, da je staro geslo e vedno veljavno, dokler ne  odpolje tega obrazca.',
+    87 => 'Tvoje uporabniko ime',
+    88 => "Nekdo (verjetno ti) je zahteval novo geslo za tvoj raun  \"%s\" na {$_CONF['site_name']}, <{$_CONF['site_url']}>.\n\ne res hoe novo geslo, prosim klikni povezavo: \n\n",
+    89 => "e noe novega gesla, to sporoilo preprosto prezri. Zahteva bo zavrena in tvoje geslo bo ostalo nespremenjeno.\n\n",
+    90 => 'Spodaj lahko vpie novo geslo za svoj raun. Staro geslo bo veljalo, dokler ne odda tega obrazca.',
     91 => 'Nastavljanje novega gesla',
     92 => 'Vpii novo geslo',
-    93 => 'Tvoja zadnja zahteva za novo geslo je bila sprejeta pred %d sekundami. Te strani zahtevajo vsaj %d sekund med spremembami gesla.',
+    93 => 'Tvoja zadnja zahteva za novo geslo je bila sprejeta pred %d sekundami. Ta stran zahteva, da med spremembami gesla prete vsaj %d sekund.',
     94 => 'Izbrii raun "%s"',
-    95 => 'Klikni gumb "Izbrii raun" spodaj za izbris svojega uporabnikega rauna iz nae baze podatkov. Vedi, da bodo vsi prispevki, ki si jih prispeval/a pod tem raunom <strong>ostali</strong> na naih straneh. Uporabnik, ki jih je prispeval pa bo postal anonimne.',
+    95 => 'Za izbris svojega uporabnikega rauna iz nae baze podatkov klikni spodnji gumb "Izbrii raun". Vsi prispevki, ki si jih prispeval/a pod tem raunom, bodo <strong>ostali</strong> na naih straneh, ime objavitelja pa bo spremenjeno v "Anonimne".',
     96 => 'Izbrii raun',
     97 => 'Potrdi brisanje rauna',
-    98 => 'Si preprian da eli pobrisati svoj uporabniki raun. Po tem prijava na nae strani ne bo ve mogoa (razen, e si ustvari nov raun). e si preprian/a ponovno klikni "Izbrii raun" v spodnjem obrazcu.',
+    98 => 'Hoe res izbrisati svoj uporabniki raun? Po tem dejanju prijava na nao spletno stran ne bo ve mogoa, razen e si ustvari nov raun. e si preprian/a o izbrisu, ponovno klikni "Izbrii raun" v spodnjem obrazcu.',
     99 => 'Nastavitve zasebnosti za',
-    100 => 'Adminov email',
-    101 => 'Dovoli emaile od upravljalcev strani',
-    102 => 'Email od uporabnikov',
-    103 => 'Dovoli emaile od drugih uporabnikov strani',
-    104 => 'Prikai Online Status',
+    100 => 'Skrbnikov e-naslov',
+    101 => 'Dovoli e-poto skrbnikov strani',
+    102 => 'E-pota uporabnikov',
+    103 => 'Dovoli e-poto drugih uporabnikov strani',
+    104 => 'Prikai status Na liniji',
     105 => 'Dovoli prikaz v bloku Na liniji so',
-    106 => 'Lokacija',
-    107 => 'Prikazano v vaem javnem profilu',
-    108 => 'Confirm new password',
-    109 => 'Enter the New password again here',
-    110 => 'Current Password',
-    111 => 'Please enter your Current password',
-    112 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
-    113 => 'Login Attempt Failed',
-    114 => 'Account Disabled',
-    115 => 'Your account has been disabled, you may not login. Please contact an Administrator.',
-    116 => 'Account Awaiting Activation',
-    117 => 'Your account is currently awaiting activation by an administrator. You will not be able to login until your account has been approved.',
-    118 => "Your {$_CONF['site_name']} account has now been activated by an administrator. You may now login to the site at the url below using your username (<username>) and password as previously emailed to you.",
-    119 => 'If you have forgotten your password, you may request a new one at this url:',
-    120 => 'Account Activated',
-    121 => 'Service',
-    122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    106 => 'Mesto',
+    107 => 'Prikazano v tvojem javnem profilu',
+    108 => 'Potrdi novo geslo',
+    109 => 'Ponovno vnesi novo geslo',
+    110 => 'Trenutno veljavno geslo',
+    111 => 'Ponovno vnesi trenutno veljavno geslo',
+    112 => 'tevilo dovoljenih poskusov prijave je bilo preseeno.  Prosim poskusi ponovno pozneje.',
+    113 => 'Poskus prijave je spodletel',
+    114 => 'Raun je onemogoen',
+    115 => 'Tvoj raun je bil onemogoen, ne more se prijaviti. Prosim sporoi to skrbniku.',
+    116 => 'Raun aka na potrditev',
+    117 => 'Tvoj raun trenutno aka na potrditev skrbnika. Dokler raun ni potrjen, se ne more prijaviti.',
+    118 => "Tvoj raun na strani {$_CONF['site_name']} je sedaj potrdil skrbnik. Sedaj se lahko na spletno stran prijavi na spodnji povezavi s svojim uporabnikim imenom (<username>) in geslom, ki si ju prejel po e-poti.",
+    119 => 'e si pozabil/a svoje geslo, lahko zahteva novega na tej povezavi:',
+    120 => 'Raun potrjen',
+    121 => 'Storitev',
+    122 => 'al je registracija novih uporabnikov onemogoena.',
+    123 => "Si <a href=\"{$_CONF['site_url']}/users.php?mode=new\">nov uporabnik</a>?",
+    124 => 'Potrdi e-naslov',
+    125 => 'V obe polji mora vnesti isti e-naslov.',
+    126 => 'Ponovi za potrditev.',
+    127 => 'Za spremembo katere koli od teh nastavitev mora vpisati svoje veljavno geslo.',
+    128 => 'Tvoje ime',
+    129 => 'Geslo &amp; e-naslov',
+    130 => 'O tebi',
+    131 => 'Monost dnevnih pregledov',
+    132 => 'Funkcija dnevnih pregledov',
+    133 => 'Prikaz komentarjev',
+    134 => 'Monosti komentarjev',
+    135 => '<li>Privzeti nain za prikaz komentarjev</li><li>Privzeti vrstni red za prikaz komentarjev</li><li>Nastavi najveje tevilo prikazanih komentarjev - privzeto je 100</li>',
+    136 => 'Izloi rubrike in avtorje',
+    137 => 'Filtriraj vsebino lanka',
+    138 => 'Druge nastavitve',
+    139 => 'Postavitev in jezik',
+    140 => '<li>e je monost Brez ikone rubrike potrjena, ikone rubrik ne bodo prikazane</li><li>e je monost Brez okenca potrjena, bodo prikazani le skrbnikov meni, uporabniki meni in teme<li>Nastavi najveje tevilo na eni strani prikazanih lankov</li><li>Nastavi svojo temo in eleni zapis datuma</li>',
+    141 => 'Zasebne nastavitve',
+    142 => 'Privzeta nastavitev uporabnikom in skrbnikom omogoa, da poiljajo e-poto drugim lanom spletne strani in da je tvoje stanje prikazano kot Na liniji. Za zaito zasebnosti te monosti odznai. ',
+    143 => 'Filtriraj vsebino bloka',
+    144 => 'Prikai in skrij okenca',
+    145 => 'Tvoj javni profil',
+    146 => 'Geslo in e-naslov',
+    147 => 'Uredi geslo svojega rauna, e-naslov in funkcijo samodejne prijave. Za potrditev bo treba isto geslo ali e-naslov vnesti dvakrat.',
+    148 => 'Uporabnike informacije',
+    149 => 'Spremeni svoje uporabnike informacije, ki bodo vidne drugim uporabnikom.<li>Podpis bo dodan k vsem tvojim komentarjem in objavam na forumu</li><li>BIO je kratek povzetek o tebi, ki ga eli deliti z drugimi</li><li>Deli z drugimi svoj klju PGP</li>',
+    150 => 'Opozorilo: Javascript priporoen za razirjeno funkcionalnost',
+    151 => 'Predogled',
+    152 => 'Uporabniko ime in geslo',
+    153 => 'Postavitev in jezik',
+    154 => 'Vsebina',
+    155 => 'Zasebnost',
+    156 => 'Izbrii raun'
 );
 
 ###############################################################################
 # index.php
 
 $LANG05 = array(
-    1 => 'Podroje je trenutno prazno',
-    2 => 'Trenutno v tem tematskem podroju ni nobenega lanka, ali pa so vae uporabnike nastavitve takne da nimate dostopa do tega podroja',
-    3 => '.',
+    1 => 'Ni novic za prikaz',
+    2 => 'Trenutno v tej rubriki ni nobene nove objave ali pa ima v svojih uporabnikih nastavitvah izbrane omejitve.',
+    3 => ' za rubriko %s',
     4 => 'Dananji udarni lanek',
-    5 => 'naslednja stran',
-    6 => 'prejnja stran',
-    7 => 'Prva',
-    8 => 'Zadnja'
+    5 => 'naslednja',
+    6 => 'prejnja',
+    7 => 'prva',
+    8 => 'zadnja'
 );
 
 ###############################################################################
 # profiles.php
 
 $LANG08 = array(
-    1 => 'Napaka!!! Poskusite znova.',
-    2 => 'Sporoilo je bilo poslano',
-    3 => 'Uporabite pravi e-mail naslov!',
-    4 => 'Izpolnite polja: Ime, e-mail za odgovor, Zadeva in vpiite sporoilo',
-    5 => 'Napaka. Neznan uporabnik!',
-    6 => 'Upsss... Napaka ;-).',
-    7 => 'Uporabnik',
+    1 => 'Napaka pri poiljanju sporoila. Poskusi znova.',
+    2 => 'Sporoilo je bilo uspeno poslano',
+    3 => 'Prepriaj se, da je v polje Odgovori vnesen pravi e-naslov.',
+    4 => 'Izpolni polja Tvoje ime, Odgovori, Zadeva in Sporoilo',
+    5 => 'Napaka: Neznan uporabnik.',
+    6 => 'Prilo je do napake.',
+    7 => 'Uporabniki profil za',
     8 => 'Uporabniko ime',
-    9 => 'URL naslov',
-    10 => 'e-mail naslov',
-    11 => 'Ime:',
-    12 => 'e-mail za odgovor:',
+    9 => 'Naslov URL',
+    10 => 'Polji e-poto k',
+    11 => 'Tvoje ime:',
+    12 => 'Odgovori:',
     13 => 'Zadeva:',
     14 => 'Sporoilo:',
     15 => 'HTML ukazi ne bodo upotevani.',
     16 => 'Polji sporoilo',
-    17 => 'Polji lanek prijatelju po e-mailu',
+    17 => 'Polji lanek prijatelju',
     18 => 'Ime prijatelja',
-    19 => 'Elektronski naslov prijatelja',
-    20 => 'Vae ime',
-    21 => 'Va e-mail naslov',
-    22 => 'Izpolniti je potrebno vsa polja!',
-    23 => "To sporoilo vam je poslal na obiskovalec %s (%s). Upravitelji spletne strani {$_CONF['site_url']} od koder je bilo sporoilo poslano, vaih podatkov nismo shranili v nobeno bazo podatkov.",
-    24 => 'lanek se nahaja na spletnem naslovu: ',
-    25 => 'e elite poslati lanek po e-poti, se morate predhodno registrirati. Registracija je potrebna da prepreimo morebitne zlorabe sistema.',
-    26 => 'S pomojo tega obrazca boste poslali e-mail izbranemu uporabniku. Izpolniti je potrebno vsa polja!',
-    27 => 'Kratko spremno sporoilo',
-    28 => 'Obiskovalec %s je napisal sledee spremno sporoilo: ',
-    29 => "Dnevni pregled strani {$_CONF['site_name']} za ",
+    19 => 'E-naslov prijatelja',
+    20 => 'Tvoje ime',
+    21 => 'Tvoj e-naslov',
+    22 => 'Izpolniti je treba vsa polja',
+    23 => "To ni neelena pota (SPAM). Sporoilo vam je poslal obiskovalec %s (%s) s spletne strani {$_CONF['site_url']}, ker je menil, da vas to utegne zanimati.  Vaih podatkov nismo nikamor shranili.",
+    24 => 'lanek lahko komentirate tukaj:',
+    25 => 'Za uporabo te funkcije se je treba prijaviti. Prijava nam pomaga prepreevati morebitne zlorabe sistema.',
+    26 => 'S tem obrazcem lahko izbranemu uporabniku polje e-poto. Izpolniti je treba vsa polja.',
+    27 => 'Kratko sporoilo',
+    28 => 'Obiskovalec %s je napisal: ',
+    29 => "To je dnevni pregled strani od {$_CONF['site_name']} za ",
     30 => 'Dnevne novice za',
     31 => 'Naslov',
     32 => 'Datum',
-    33 => 'Celotno besedilo:',
+    33 => 'Preberi celotno besedilo na povezavi ',
     34 => 'Konec sporoila',
-    35 => 'al, ta uporabnik ne eli prejemati emailov.'
+    35 => 'al ta uporabnik ne eli prejemati e-pote.'
 );
 
 ###############################################################################
@@ -416,46 +428,46 @@
 $LANG09 = array(
     1 => 'Napredno iskanje',
     2 => 'Kljune besede',
-    3 => 'Tematsko podroje',
-    4 => 'vse',
-    5 => 'Nasvet',
+    3 => 'Rubrika',
+    4 => 'Vse',
+    5 => 'Podroja iskanja',
     6 => 'lanki',
-    7 => 'komentarji bralcev',
+    7 => 'Komentarji',
     8 => 'Avtorji',
-    9 => 'vse',
+    9 => 'Vse',
     10 => 'Ii',
     11 => 'Rezultati iskanja',
-    12 => 'zadetki',
-    13 => 'Iskanje med lanki: ni zadetkov',
-    14 => 'Za iskalni pojem',
-    15 => 'ni nobenega zadetka. Prosimo poizkusite ponovno.',
+    12 => 'Zadetki',
+    13 => 'Rezultati iskanja: Ni zadetkov',
+    14 => 'Za iskano besed(il)o ni nobenega zadetka.',
+    15 => 'Prosim poskusite ponovno.',
     16 => 'Naslov',
-    17 => 'datum',
-    18 => 'avtor',
-    19 => 'Iskalnik celotne baze podatkov (vsi lanki in vsi komentarji bralcev)',
+    17 => 'Datum',
+    18 => 'Avtor',
+    19 => 'Iskanje po celotni bazi podatkov vseh lankov in komentarjev',
     20 => 'Datum',
     21 => 'do',
-    22 => '(format datuma YYYY-MM-DD)',
-    23 => 't. zadetkov',
-    24 => 'Nael sem %d zadetkov',
+    22 => '(oblika zapisa datuma YYYY-MM-DD)',
+    23 => 'tevilo ogledov',
+    24 => 'tevilo najdenih predmetov: %d ',
     25 => 'Iskal sem',
     26 => 'zadetkov ',
-    27 => 'sekund.',
-    28 => 'Za vpisani iskalni pogoj ni bilo najdenega nobenega lanka niti nobenega komentarja',
+    27 => 'sekund',
+    28 => 'Iskalnemu pogoju ne ustreza noben lanek ali komentar',
     29 => 'Rezultati iskanja',
-    30 => 'Nobena povezava ne ustreza vaemu iskalnemu pogoju. Poizkusite znova!',
-    31 => 'Ni zadetkov za ta plug-in. Poizkusite znova!',
-    32 => 'Dogodek',
+    30 => '',
+    31 => 'Za ta vtinik ni zadetkov .',
+    32 => '',
     33 => 'URL',
     34 => 'Lokacija',
     35 => 'Celodnevno dogajanje',
-    36 => 'Noben dogodek ne ustreza vaemu iskalnemu pogoju. Poizkusite znova!',
-    37 => 'Rezultati za dogodke',
-    38 => 'Rezultati za povezave',
-    39 => 'Povezave',
-    40 => 'Dogodki',
+    36 => '',
+    37 => '',
+    38 => '',
+    39 => '',
+    40 => '',
     41 => 'Iskalni niz mora imeti vsaj tri znake.',
-    42 => 'Datum naj bo formatiran na nain: YYYY-MM-DD (leto-mesec-dan).',
+    42 => 'Datum naj bo prikazan na nain: LLLL-MM-DD (leto-mesec-dan).',
     43 => 'tona fraza',
     44 => 'vse besede',
     45 => 'katerakoli beseda',
@@ -464,17 +476,17 @@
     48 => 'Avtor',
     49 => 'Datum',
     50 => 'Zadetki',
-    51 => 'Povezava',
+    51 => '',
     52 => 'Lokacija',
     53 => 'Rezultati lankov',
     54 => 'Rezultati komentarjev',
     55 => 'fraza',
-    56 => 'AND',
-    57 => 'OR',
-    58 => 'More results &gt;&gt;',
-    59 => 'Results',
-    60 => 'per page',
-    61 => 'Refine search'
+    56 => 'IN',
+    57 => 'ALI',
+    58 => 'Ve  rezultatov &gt;&gt;',
+    59 => 'Rezultati',
+    60 => 'na stran',
+    61 => 'Podrobneje iskanje'
 );
 
 ###############################################################################
@@ -484,34 +496,34 @@
     1 => 'Statistike spletne strani',
     2 => 'tevilo vseh obiskov strani',
     3 => 'tevilo objavljenih lankov (komentarjev)',
-    4 => 'tevilo anket (odgovorov)',
-    5 => 'tevilo povezav (obiskov)',
-    6 => 'tevilo napovedanih dogodkov',
-    7 => 'Deset najbolj branih lankov',
+    4 => '',
+    5 => '',
+    6 => '',
+    7 => 'Deset najbolj ogledovanih lankov',
     8 => 'Naslov lanka',
     9 => 't. ogledov',
-    10 => 'Na spletni strani ni objavljenih lankov, ali pa nihe ni prebral nobenega lanka.',
+    10 => 'Na spletni strani ni objavljenih lankov ali pa si jih ni e nihe ogledal.',
     11 => 'Deset najbolj komentiranih lankov',
     12 => 't. komentarjev',
-    13 => 'Na spletni strani ni objavljenih komentarjev, ali pa nihe ni objavil nobenega komentarja.',
-    14 => 'Deset najbolj obiskanih anket',
-    15 => 'Anketno vpraanje',
-    16 => 't. glasov',
-    17 => 'Na spletni strani ni objavljena nobena anketa, ali pa nihe ni glasoval pri nobeni anketi.',
-    18 => 'Deset najbolj obiskanih povezav',
-    19 => 'Povezave',
-    20 => 't. ogledov',
-    21 => 'Na spletni strani ni objavljena nobena povezava ali pa nihe ni obiskal nobene povezave.',
-    22 => 'Deset najbolj po e-mailu posredovanih lankov',
+    13 => 'Na spletni strani ni objavljenih komentarjev ali pa si jih ni e nihe ogledal.',
+    14 => '',
+    15 => '',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => '',
+    20 => '',
+    21 => '',
+    22 => 'Deset najve po e-poti posredovanih lankov',
     23 => 't. posredovanj',
-    24 => 'Nihe ni posredoval nobenega lanka po e-mailu.',
-    25 => 'Top Ten Trackback Commented Stories',
-    26 => 'No trackback comments found.',
-    27 => 'Number of active users',
-    28 => 'Top Ten Events',
-    29 => 'Event',
-    30 => 'Hits',
-    31 => 'It appears that there are no events on this site or no one has ever clicked on one.'
+    24 => 'Nihe ni posredoval nobenega lanka po e-poti.',
+    25 => 'Deset najbolj Trackback komentiranih lankov',
+    26 => 'Najden ni bil noben trackback ckmentar.',
+    27 => 'tevilo aktivnih uporabnikov',
+    28 => '',
+    29 => '',
+    30 => 'Zadetki',
+    31 => ''
 );
 
 ###############################################################################
@@ -519,69 +531,69 @@
 
 $LANG11 = array(
     1 => 'Sorodne povezave',
-    2 => 'Polji lanek po e-poti',
-    3 => 'Stran prijazna za tisk',
+    2 => 'Polji lanek prijatelju po e-poti',
+    3 => 'Za tisk prijazna stran',
     4 => 'Dodatne monosti',
-    5 => 'PDF format lanka'
+    5 => 'lanek v formatu PDF'
 );
 
 ###############################################################################
 # submit.php
 
 $LANG12 = array(
-    1 => "e elite objaviti %s se morate prijaviti. e niste registrirani uporabnik? <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> Registrirajte se</a>.",
+    1 => 'e eli objaviti %s, se mora prijaviti kot uporabnik.',
     2 => 'Prijava',
     3 => 'Nov uporabnik',
-    4 => 'Polji dogodek',
-    5 => 'Polji povezavo',
-    6 => 'lanek',
-    7 => 'Potrebno se je prijaviti!',
-    8 => 'Polji',
-    9 => 'Pri poiljanju informacij se drite naslednjih priporoil:<ul><li>izpolnite vsa polja,<li>poskrbite da bo informacija, ki jo poiljate tona in ustrezna,<li>pazite na slovnico,<li>preverite da delujejo vse povezave,<li><font color=red>prosimo da poiljate <b>samo lanke</b>, komentarje vpisujte pod posamezen lanek, za splone debate ali mnenja pa uporabite forum.</font></ul>',
+    4 => '',
+    5 => '',
+    6 => 'Oddaj lanek',
+    7 => 'Treba se je prijaviti',
+    8 => 'Oddaj',
+    9 => 'Pri oddajanju podatkov za uporabo na tem spletnem mestu prosim upotevaj naslednja priporoila: <ul><li>Izpolni vsa polja.<li>Poskrbi, da bodo podatki celostni in toni.<li>Upotevaj pravopis.<li>Preveri, da delujejo vse povezave.<li><font color=red>Poiljaj <b>samo lanke in dogodke</b>. Komentarje vpisuj pod posamezne lanke, za splone debate in mnenja pa uporabi forum.</font><li>V naslov NE pii celih besed z VELIKIMI rkami. Besedila, ki bodo zapisana z velikimi rkami, bomo v celoti prekodirali v male rke.</li> <br> <b>Pri vnaanju dogodka ali oglasa: </b><li>Urednitvo si pridruje pravico, da ne objavi dogodkov in oglasov, ki niso v skladu z navedenimi pogoji, ki imajo sporno vsebino in/ali ki niso v skladu z veljavno zakonodajo Republike Slovenije.<li>Pri vpisu ponudbe za  delavnice, seminarje, storitve, zaposlitve idr. v oknu z besedilom oglasa (polje opis dogodka ali vsebina lanka)  v skladu z zakonodajo <b>obvezno navedite e</b><ul><li>naziv podjetja ter ime in priimek odgovorne osebe oziroma ime in priimek naronika oglasa (e ne gre za podjetje ali organizacijo) ,<li>sede podjetja, organizacije ali naslov naronika oglasa (e ne gre za podjetje).</ul>',
     10 => 'Naslov',
-    11 => 'Povezava',
+    11 => '',
     12 => 'Datum zaetka',
     13 => 'Datum zakljuka',
     14 => 'Lokacija',
     15 => 'Opis',
-    16 => 'e \'drugo\', vpii ime',
-    17 => 'Kategorija',
-    18 => 'Drugo',
-    19 => 'Prosimo, preberite',
-    20 => 'Napaka: ni doloena kategorija',
-    21 => 'Kadar izberete "Drugo" vpiite tudi ime kategorije',
-    22 => 'Napaka: niso izpolnjena vsa polja',
-    23 => 'Prosimo izpolnite vsa polja obrazca.',
-    24 => 'Shranjeno!',
-    25 => 'Va %s prispevek je bil shranjen.',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => 'Najprej preberi',
+    20 => '',
+    21 => '',
+    22 => 'Napaka: Niso izpolnjena vsa polja',
+    23 => 'Izpolnite vsa polja obrazca. Zahtevana so vsa.',
+    24 => 'Shranjeno',
+    25 => 'Tvoj prispevek %s je bil uspeno shranjen.',
     26 => 'Omejitev hitrosti',
     27 => 'Uporabniko ime',
-    28 => 'Tematsko podroje',
-    29 => 'Vsebina lanka',
-    30 => 'Vaa zadnja objava je bila poslana pred ',
-    31 => " sekundami. Nastavitve te spletne strani pa zahtevajo da med dvema objavama istega avtorja mine vsaj {$_CONF['speedlimit']} sekund",
+    28 => 'Rubrika',
+    29 => 'lanek',
+    30 => 'Tvoja zadnja objava je bila poslana pred ',
+    31 => " sekundami. Med objavami istega uporabnika mora pretei vsaj {$_CONF['speedlimit']} sekund.",
     32 => 'Predogled',
     33 => 'Predogled lanka',
-    34 => 'izhod',
-    35 => 'HTML ukazi ne bodo upotevani',
+    34 => 'Odjava',
+    35 => 'Ukazi HTML niso dovoljeni',
     36 => 'Oblika besedila',
-    37 => 'Dogodek bo dodan na skupni koledar, od koder ga registrirani uporabniki lahko dodajo na svoj osebni koledar. Ta aplikacija zato <b>NI</b> namenjena shranjevanju osebnih dogodkov (obletnice, rojstni dnevi, zabave...) e nas ne mislite nanje povabiti ;-)<br><br>Preden bo dogodek objavljen na skupnem koledarju dogodkov, ga bo pregledal administrator!',
-    38 => 'Dodaj dogodek v',
-    39 => 'Skupni koledar',
-    40 => 'Osebni koledar',
-    41 => 'as zakljuka',
-    42 => 'as zaetka',
-    43 => 'Celodnevni dogodek',
+    37 => '',
+    38 => '',
+    39 => '',
+    40 => '',
+    41 => '',
+    42 => '',
+    43 => '',
     44 => 'Naslov 1',
     45 => 'Naslov 2',
-    46 => 'Mesto',
-    47 => 'Drava',
+    46 => 'Mesto/kraj',
+    47 => 'Pokrajina',
     48 => 'Potna tevilka',
-    49 => 'Tip dogodka',
-    50 => 'Uredi tipe dogodkov',
+    49 => '',
+    50 => '',
     51 => 'Lokacija',
-    52 => 'Odstrani',
-    53 => 'Naredi raun'
+    52 => 'Zbrii',
+    53 => 'Ustvari raun'
 );
 
 ###############################################################################
@@ -592,12 +604,12 @@
 # admin/auth.inc.php
 
 $LANG20 = array(
-    1 => 'Obvezna prijava',
-    2 => 'Dostop zavrnjen! Vnesli ste napane podatke.',
-    3 => 'Napano geslo za uporabnika',
+    1 => 'Obvezno preverjanje pristnosti',
+    2 => 'Dostop zavrnjen! Napani prijavni podaki.',
+    3 => 'Napano uporabniko geslo',
     4 => 'Uporabniko ime:',
     5 => 'Geslo:',
-    6 => 'Vsi dostopi do administracijske strani se beleijo.<br>Ta del spletne strani lahko uporabljajo samo pooblaene osebe.<p>',
+    6 => 'Vsi dostopi do skrbnikih delov tega spletnega mesta se beleijo in pregledujejo.<br>Te strani lahko uporabljajo samo pooblaene osebe.<p>',
     7 => 'prijava'
 );
 
@@ -605,102 +617,73 @@
 # admin/block.php
 
 $LANG21 = array(
-    1 => 'Ups... ne bo lo. Nimate zahtevanih administratorskih pravic ;-)',
-    2 => 'Za urejanje tega bloka nimate zahtevanih administratorskih pravic',
+    1 => 'Ni ustreznih skrbnikih pravic',
+    2 => 'Za urejanje tega bloka nima potrebnih skrbnikih pravic.',
     3 => 'Urejanje blokov',
-    4 => 'Pri branju je nastala teava (za detajle glej error.log).',
-    5 => 'Ime bloka',
-    6 => 'Tema',
+    4 => 'Pri branju je nastala teava (za podrobnosti glej error.log).',
+    5 => '',
+    6 => '',
     7 => 'Vse',
     8 => 'Varnostna raven bloka',
     9 => 'Pravila bloka',
-    10 => 'Tip bloka',
+    10 => '',
     11 => 'Blok na portalu',
     12 => 'Obiajni blok',
     13 => 'Nastavitve bloka na portalu',
     14 => 'RDF URL',
-    15 => 'Zadnja RDF osveitev',
+    15 => 'Zadnja posodobitev RDF',
     16 => 'Nastavitve obiajnega bloka',
-    17 => 'Komentar',
-    18 => 'Vnesite ime in vsebino bloka',
-    19 => 'Administracija bloka',
-    20 => 'Ime bloka',
-    21 => 'Varnostna raven',
-    22 => 'Tip bloka',
+    17 => 'Vsebina bloka',
+    18 => 'Izpolni polji Naslov bloka in Vsebina bloka',
+    19 => 'Upravitelj bloka',
+    20 => '',
+    21 => 'Varnostna raven bloka',
+    22 => '',
     23 => 'Pravila bloka',
-    24 => 'Tema bloka',
-    25 => 'Izberite blok, ki ga elite urediti ali odstraniti. e elite ustvariti nov blok, kliknite zgoraj.',
-    26 => 'Izgled',
-    27 => 'PHP blok',
-    28 => 'Nastavitve PHP bloka',
+    24 => '',
+    25 => 'Za spreminjanje ali izbris bloka klikni na njegovo spodnjo ikono za urejanje. e hoe ustvariti nov blok, klikni na "Ustvari" zgoraj. e hoe blok premakniti, klikni na puici ali v polji [R] in [L].',
+    26 => 'Izgled bloka',
+    27 => 'Blok PHP',
+    28 => 'Nastavitve bloka PHP',
     29 => 'Funkcije bloka',
-    30 => 'e eli da blok uporablja php kodo, zgoraj vpii ime funkcije. Ime funkcije se mora zaeti z izrazom "phpblock_" (t.j. phpblock_getweather). e funkcija nima te predpone, NE bo klicana.  To je narejeno tako zaradi tega, da potencialni hekerji ne morejo izvesti kode, ki bi lahko kodovala sistemu. Pazi da ne vstavi praznih oklepajev "()" za ime funkcije. Priporoamo vso svojo kodo, tudi to za bloke, vpisujete v /pot/do/geekloga/system/lib-custom.php. Tako bo ta koda brez teav ostala z vami tudi po nadgradnji Geekloga.',
-    31 => 'Napaka v PHP bloku. Funkcija %s, ne obstaja.',
-    32 => 'Napaka. Manjkajo podatki',
-    33 => 'Vnesite URL naslov v datoteko .rdf za blok na portalu',
-    34 => 'Vnesite naslov in funkcijo PHP bloka',
-    35 => 'Vnesite naslov in vsebino bloka',
-    36 => 'Vnesite vsebino in izberite izgled bloka',
-    37 => 'Napano ime funkcije PHP bloka',
-    38 => 'Funkcije PHP bloka morajo imeti predpono \'phpblock_\' (npr. phpblock_imefunkcije).  Predpona \'phpblock_\' je potrebna zaradi varnosti!',
+    30 => 'e eli, da blok uporablja kodo PHP, zgoraj vpii ime funkcije. Ime funkcije se mora zaeti s "phpblock_" (npr. phpblock_getweather). Brez te predpone funkcija NE bo klicana. Zaradi tega tisti, ki bi morda vdrli v to namestitev Geekloga, ne bi mogli poljubno spreminjati kode in kodovati sistemu. Pazi, da za ime funkcije ne vstavi praznih oklepajev "()". Priporoamo, da vso kodo svojega bloka PHP, vpisujete v /pot/do/geekloga/system/lib-custom.php. Tako se bo ta koda brez teav ohranila tudi po nadgradnji Geekloga.',
+    31 => 'Napaka v bloku PHP. Funkcija %s ne obstaja.',
+    32 => 'Napaka. Manjkajo podatki.',
+    33 => 'Vnesi naslov URL v datoteko .rdf za blok na portalu',
+    34 => 'Vnesi naslov in funkcijo PHP bloka',
+    35 => 'Vnesi naslov in vsebino bloka',
+    36 => 'Vnesi vsebino in izberi izgled bloka',
+    37 => 'Napano ime funkcije bloka PHP',
+    38 => 'Funkcije bloka PHP morajo imeti predpono \'phpblock_\' (npr. phpblock_imefunkcije).  Predpona \'phpblock_\' je potrebna zaradi varnosti.',
     39 => 'Stran',
     40 => 'Levo',
     41 => 'Desno',
-    42 => 'Vnesite ime bloka in vrstni red zanj.',
+    42 => 'Vnesite ime bloka in vrstni red za prednastavljene bloke Geekloga.',
     43 => 'Samo domaa stran',
-    44 => 'Dostop zavrnjen',
-    45 => "Do tega bloka nimate dostopa. Va poskus je bil zabeleen v bazo podatkov! Prosimo, vrnite se na <a href=\"{$_CONF['site_url']}/admin/block.php\"> stran za administracijo</a>!",
-    46 => 'Nov blok',
-    47 => 'Administratorske strani',
+    44 => '',
+    45 => "Do tega bloka nima dostopa. Poskus je bil zabeleen v bazo podatkov. Prosim vrni se na <a href=\"{$_CONF['site_url']}/admin/block.php\">zaslon za skrbnitvo blokov</a>.",
+    46 => 'Premakni',
+    47 => '',
     48 => 'Ime bloka',
-    49 => ' (Presledki niso dovoljeni. Imena blokov ne smejo biti podvojena',
-    50 => 'URL za pomo',
-    51 => 'Zane s http://',
-    52 => 'e pustite prazno, se ikona za pomo ne bo izpisala!',
+    49 => ' (brez presledkiov in imena ne smejo biti podvojena)',
+    50 => '',
+    51 => 'zani s http://',
+    52 => 'e pusti prazno, se ikona za pomo za ta blok ne bo izpisala!',
     53 => 'Omogoeno',
-    54 => 'Shrani',
-    55 => 'Preklii',
-    56 => 'Izbrii',
+    54 => 'shrani',
+    55 => 'preklii',
+    56 => 'izbrii',
     57 => 'Premakni blok dol',
     58 => 'Premakni blok gor',
     59 => 'Premakni blok na desno stran',
     60 => 'Premakni blok na levo stran',
-    61 => 'No Title',
-    62 => 'Article Limit',
-    63 => 'Bad Block Title',
-    64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Urejanje dogodkov',
-    2 => 'Error',
-    3 => 'Naslov dogodka',
-    4 => 'URL dogodka',
-    5 => 'Zaetek dogodka',
-    6 => 'Zakljuek dogodka',
-    7 => 'Kraj dogodka',
-    8 => 'Opis dogodka',
-    9 => '(Zane z http://)',
-    10 => 'Izpolniti morate vsa polja!',
-    11 => 'Urejevalnik dogodkov',
-    12 => 'Izberite dogodek, ki ga elite urediti ali odstraniti. e elite objaviti nov dogodek, kliknite na nov dogodek spodaj. Kliknite na [C] e elite narediti kopijo e obstojeega dogodka.',
-    13 => 'Naslov dogodka',
-    14 => 'Zaetek',
-    15 => 'Konec',
-    16 => 'Dostop zavrnjen',
-    17 => "Do tega dogodka nimate dostopa. Va poskus je bil zabeleen v bazo podatkov. Prosimo, vrnite se na <a href=\"{$_CONF['site_url']}/admin/event.php\"> urejanje dogodkov</a>!",
-    18 => 'Nov dogodek',
-    19 => 'Administratorske strani',
-    20 => 'Shrani',
-    21 => 'Preklii',
-    22 => 'Izbrii',
-    23 => 'Neveljaven zaetni as.',
-    24 => 'Neveljaven konni as.',
-    25 => 'Konni as je pred zaetnim asom.'
+    61 => 'Braz naslova',
+    62 => 'Omejitev lanka',
+    63 => 'Slab naslov bloka',
+    64 => 'Polje za naslov ne sme biti prazno in ne sme vsebovati HTML.',
+    65 => 'naroilo',
+    66 => 'Samodejni ukazi',
+    67 => 'Potrdi za odobritev samodejnih ukazov'
 );
 
 ###############################################################################
@@ -712,174 +695,205 @@
     3 => 'Nastavitve lanka',
     4 => 'Oblikovanje lanka',
     5 => 'Urejanje lanka',
-    6 => 'Ni lankov v sistemu',
+    6 => 'V sistemu ni lankov',
     7 => 'Avtor',
-    8 => 'Shrani',
-    9 => 'Predogled',
-    10 => 'Preklii',
-    11 => 'Izbrii',
+    8 => 'shrani',
+    9 => 'predogled',
+    10 => 'preklii',
+    11 => 'izbrii',
     12 => 'ID',
-    13 => 'Naslov',
-    14 => 'tematsko podroje',
-    15 => 'datum',
+    13 => '',
+    14 => '',
+    15 => 'Datum',
     16 => 'Uvodno besedilo',
     17 => 'Razirjeno besedilo',
-    18 => 't. branj',
-    19 => 'Komentarjev',
+    18 => 'tevilo ogledov',
+    19 => 'Komentarji',
     20 => 'Ping',
-    21 => 'Send Ping',
+    21 => 'Polji Ping',
     22 => 'Seznam lankov',
-    23 => 'e elite spreminjati ali izbrisati lanek, kliknite na njegovo tevilko. e elite lanek pregledati, kliknite na njegov naslov. e elite objaviti nov lanek, kliknite na zgornjo povezavo.',
-    24 => 'The ID you chose for this story is already in use. Please use another ID.',
-    25 => 'Error when saving story',
+    23 => 'e hoe lanek spremeniti ali izbrisati, klikni na njegovo tevilko. e ga hoe pregledati, klikni na njegov naslov. e hoe objaviti nov lanek, klikni na "Ustvari novega" zgoraj.',
+    24 => 'ID, ki si ga izbral/a za ta lanek, je e v rabi. Prosim uporabi drug ID.',
+    25 => 'Napaka pri shranjevanju lanka.',
     26 => 'Predogled lanka',
-    27 => 'If you use [unscaledX] instead of [imageX], the image will be inserted at its original dimensions.',
-    28 => '<p><b>PREVIEWING</b>: Previewing a story with images attached is best done by saving the article as a draft INSTEAD OF hitting the preview button.  Use the preview button only when images are not attached.',
+    27 => 'e uporabi [unscaledX] namesto [imageX], bo slika vstavljena s svojimi originalnimi merami.',
+    28 => '<p><b>PREDOGLEDOVANJE</b>: Za predogled lanka skupaj s slikami je najprimerneje, da ga shrani kot  osnutek, NAMESTO da klikne gumb za predogled.  Ta gumb uporabi le, e ni priloenih slik.',
     29 => 'Trackbacks',
-    30 => 'Napake pri shranjevanju datoteke',
-    31 => 'Prosimo izpolnite polji Naslov in Uvodno besedilo',
+    30 => 'Napake pri nalaganju datoteke',
+    31 => 'Prosim izpolni polji Naslov in Uvodno besedilo',
     32 => 'Udarni lanek',
-    33 => 'Udarni lanek je lahko smo eden',
-    34 => 'Draft',
+    33 => 'Udarni lanek je lahko samo eden',
+    34 => 'Osnutek',
     35 => 'Da',
     36 => 'Ne',
     37 => 'Ve od avtorja',
-    38 => 'Ve iz podroja',
-    39 => 't. posredovanj po e-mailu',
-    40 => 'Dostop zavrnjen',
-    41 => "Poizkuate dostopati do lanka do katerega nimate dostopa. Ta poizkus neveljavnega dostopa je bil zabeleen in shranjen. lanek lahko samo preberete, ne morete pa ga urejati. e elite lahko vstopite <a href=\"{$_CONF['site_url']}/admin/story.php\"> na administracijo lanka</a>.",
-    42 => "Poizkuate dostopati do lanka do katerega nimate dostopa. Ta poizkus neveljavnega dostopa je bil zabeleen in shranjen. e elite lahko vstopite <a href=\"{$_CONF['site_url']}/admin/story.php\">na administracijo lankov</a>.",
-    43 => 'Nov lanek',
-    44 => 'Administracijska stran',
-    45 => 'Dostop',
-    46 => '<b>POZOR:</b> va prispevek ne bo objavljen do izbranega datuma.Do tega datuma tudi na bo v vaem RDF in ne bo vkljun v iskalnik.',
+    38 => 'Ve s podroja',
+    39 => 't. posredovanj po e-poti',
+    40 => '',
+    41 => "Poskua dostopiti do lanka, do katerega nima pravice dostopa. Ta poskus je bil zabeleen in shranjen. lanek lahko samo preberete, ne morete pa ga urejati. Ko kona, pojdi prosim nazaj na <a href=\"{$_CONF['site_url']}/admin/story.php\">zaslon za skrbnitvo lankov</a>.",
+    42 => "Poskua dostopiti do lanka, do katerega nima pravice dostopa. Ta poskus je bil zabeleen in shranjen. Pojdi prosim nazaj na <a href=\"{$_CONF['site_url']}/admin/story.php\">zaslon za skrbnitvo lankov</a>.",
+    43 => '',
+    44 => '',
+    45 => '',
+    46 => '<b>OPOMBA:</b> e tu nastavi datum v prihodnosti, lanek ne bo objavljen do izbranega datuma. Do tega datuma lanka ne bo niti v RDF niti ne bo vkljun v iskalnik in statistine strani.',
     47 => 'Slike',
     48 => 'slika',
     49 => 'desno',
     50 => 'levo',
-    51 => 'Sliko vstavite v lanek s posebnim ukazom [imageX], [imageX_right] ali [imageX_left], kjer je X tevilka slike v prilogi. POZOR: uporabite lahko samo slike iz priloge. V nasprotnem primeru lanka ne bo mogoe objaviti. <BR><P><B>PREDOGLED</B>: Predogled lanka s slikami najenostavneje opraviter tako, da lanek shranite kot draft in ne uporabite gumba Predogled. Funkcija Predogled deluje deluje le, e lanek brez slik.',
-    52 => 'Odstrani',
-    53 => 'ni bila uporabljena. Sliko morate pred shranjevanjem vkljuiti v uvod ali med besedilo lanka.',
+    51 => 'Sliko vstavi v lanek s posebnim ukazom [imageX], [imageX_right] ali [imageX_left], pri emer je X zaporedna tevilka slike v prilogi. OPOMBA: Slike iz priloge je treba uporabiti, sicer lanka ne bo mogoe shraniti.',
+    52 => '',
+    53 => 'ni bila uporabljena. Sliko morate pred shranitvijo sprememb vkljuiti v uvodno ali razirjeno besedilo lanka.',
     54 => 'Priloene slike niso bile uporabljene',
-    55 => 'Napaka pri shranjevanju lanka. Prosimo popravite napake na spodnjem seznamu:',
-    56 => 'Prikai ikono teme',
-    57 => 'Oglej si nezmanjano sliko',
-    58 => 'Administracija lankov',
-    59 => 'Opcija',
-    60 => 'Omogoeno',
+    55 => 'Pri shranjevanju lanka je prilo do napak. Prosim popravi napake s spodnjega seznama:',
+    56 => 'Prikai ikono rubrike',
+    57 => 'Oglej si nepomanjano sliko',
+    58 => 'Monosti arhiviranja',
+    59 => 'Monost',
+    60 => '',
     61 => 'Samodejno arhiviranje',
     62 => 'Samodejno brisanje',
     63 => '',
     64 => '',
     65 => '',
     66 => '',
-    67 => 'Expand the Content Edit Area size',
-    68 => 'Reduce the Content Edit Area size',
-    69 => 'Publish Story Date',
-    70 => 'Toolbar Selection',
-    71 => 'Basic Toolbar',
-    72 => 'Common Toolbar',
-    73 => 'Advanced Toolbar',
-    74 => 'Advanced II Toolbar',
-    75 => 'Full Featured',
-    76 => 'Publish Options',
-    77 => 'Javascript needs to be enabled for Advanced Editor. Option can be disabled in the main site config.php',
-    78 => 'Click <a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default">here</a> to use default editor',
-    79 => 'Preview',
-    80 => 'Editor',
-    81 => 'Publish Options',
-    82 => 'Images',
-    83 => 'Archive Options',
-    84 => 'Permissions',
-    85 => 'Show All'
+    67 => 'Raztegni podroje urejanja vsebine',
+    68 => 'Skri podroje urejanja vsebine',
+    69 => 'Datum objave lanka',
+    70 => 'Izbira orodne vrstice',
+    71 => 'Osnovna orodna vrstica',
+    72 => 'Navadna orodna vrstica',
+    73 => 'Napredna orodna vrstica',
+    74 => 'Napredna orodna vrstica II',
+    75 => 'Vse funkcije',
+    76 => 'Monosti objave',
+    77 => ' Za napredno urejanje mora biti Javascript omogoen. Monost lahko onemogoite na glavni strani config.php.',
+    78 => 'Za uporabo privzetega urejevalnika klikni <a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default">tukaj</a>.',
+    79 => 'Predogled',
+    80 => 'Urejevalnik',
+    81 => 'Monosti objave',
+    82 => 'Slike',
+    83 => 'Monosti arhiva',
+    84 => 'Dovoljenja',
+    85 => 'Pokai vse',
+    86 => 'Napredni urejevalnik',
+    87 => 'Statistike lankov'
 );
 
 ###############################################################################
 # admin/topic.php
 
 $LANG27 = array(
-    1 => 'Urejanje tem',
-    2 => 'ID teme',
-    3 => 'Ime teme',
-    4 => 'Slika teme',
-    5 => '(ne uporabljajte presledkov)',
-    6 => 'e odstranite temo, odstranite tudi vse lanke in bloke, ki so z njo povezani',
-    7 => 'Izpolnite ID teme in naslov teme.',
-    8 => 'Urejevalnik tem',
-    9 => 'Izberite temo, ki jo elite urediti ali odstraniti. e elite ustvariti novo temo, kliknite gumb Nova tema, na levi. V vsaki temi najde, v oklepajih, svoj nivo dostopa. Zvazdica (*) oznauje privzeto temo.',
+    1 => 'Urejevalnik rubrik',
+    2 => 'ID rubrike',
+    3 => 'Ime rubrike',
+    4 => 'Slika rubrike',
+    5 => '(ne uporabljaj presledkov)',
+    6 => 'Izbris rubrike izbrie tudi vse z njo povezane lanke in bloke',
+    7 => 'Izpolni polji za ID in naslov rubrike',
+    8 => 'Upravitelj rubrik',
+    9 => 'Izberi rubriko, ki jo hoe urediti ali odstraniti. e hoe ustvariti novo rubriko, klikni gumb Nova rubrika zgoraj. Svojo raven dostopa do posamezne rubrike najde v oklepajih. Zvazdica (*) oznauje privzeto rubriko.',
     10 => 'Uredi po',
     11 => 'lankov/Strani',
-    12 => 'Dostop zavrnjen!',
-    13 => "Do te teme nimate dostopa. Va poskus je bil zabeleen in shranjen. Prosimo, vrnite se na <a href=\"{$_CONF['site_url']}/admin/topic.php\"> administracijo tem</a>!",
+    12 => 'Dostop zavrnjen',
+    13 => "Do te rubrike nima dostopa. Tvoj poskus je bil zabeleen in shranjen. Prosim vrni se na <a href=\"{$_CONF['site_url']}/admin/topic.php\">zaslon za skrbnitvo rubrik</a>.",
     14 => 'Uredi po',
     15 => 'abecedi',
     16 => 'privzeto',
-    17 => 'Nova tema',
-    18 => 'Administratorske strani',
-    19 => 'Shrani',
-    20 => 'Preklii',
-    21 => 'Izbrii',
+    17 => 'Nova rubrika',
+    18 => 'Skrbnikova stran',
+    19 => 'shrani',
+    20 => 'preklii',
+    21 => 'izbrii',
     22 => 'Privzeto',
-    23 => 'Ustvari to temo privzeto za novo oddane lanke',
+    23 => 'Naredi to rubriko privzeto za novo oddane lanke',
     24 => '(*)',
-    25 => 'Arhiviraj temo',
-    26 => 'naredi to temo privzeto za arhivirane lanke. Samo ena tema je dovoljena.',
-    27 => 'Or Upload Topic Icon',
-    28 => 'Maximum',
-    29 => 'File Upload Errors'
+    25 => 'Arhiviraj rubriko',
+    26 => 'Naredi to rubriko privzeto za arhivirane lanke. Dovoljena je samo ena rubrika.',
+    27 => 'ali naloi ikono za rubriko',
+    28 => 'Najve',
+    29 => 'Napake pri nalaganju datotek'
 );
 
 ###############################################################################
 # admin/user.php
 
 $LANG28 = array(
-    1 => 'Urejanje uporabnika',
+    1 => 'Urejevalnik uporabnika',
     2 => 'ID uporabnika',
-    3 => 'uporabniko ime',
-    4 => 'ime uporabnika',
+    3 => 'Uporabniko ime',
+    4 => 'Celotno ime uporabnika',
     5 => 'Geslo',
     6 => 'Varnostni nivo',
-    7 => 'e-mail naslov',
-    8 => 'Vaa spletna stran',
-    9 => '(ne uporabljajte presledkov)',
-    10 => 'Prosimo vpiite uporabniko ime in e-mail.',
-    11 => 'Administracija uporabnikov',
-    12 => 'e elite spremeniti ali izbrisati uporabnika, kliknite na njegovo uporabniko ime spodaj. e elite ustvariti novega uporabnika, kliknite gumb Nov uporabnik na levi. V spodnje okence vpiite iskalni niz, iete lahko po imenu, delu imena, emailu ali celotnem imenu (npr. *sin* ali *.si*).',
+    7 => 'E-naslov',
+    8 => 'Tvoja spletna stran',
+    9 => '(ne uporabljaj presledkov)',
+    10 => 'Vpii uporabniko ime in e-naslov.',
+    11 => 'Upravitelj uporabnikov',
+    12 => 'Za spreminjanje ali izbris uporabnika klikni na njegovo ikono za urejanje spodaj. Za ogled uporabnika klikni na njegovo uporabniko ime. Za ustvarjenje novega uporabnika klikni na "Ustvari novega" zgoraj.',
     13 => 'Varnostni nivo',
     14 => 'Datum registracije',
-    15 => 'nov uporabnik',
-    16 => 'Administratorske strani',
-    17 => 'spremeni geslo',
-    18 => 'prekini',
-    19 => 'izbrii',
+    15 => '',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => '',
     20 => 'shrani',
-    21 => 'Uporabniko ime, ki ga elite hraniti e obstaja.',
+    21 => 'Uporabniko ime, ki ga hoe shraniti, e obstaja.',
     22 => 'Napaka',
     23 => 'Zaporedno dodajanje',
-    24 => 'Zaporedno dodajanje uporabnikov',
-    25 => 'Uvozi lahko zaporedje uporabnikov v Geekloga.  Datoteka za uvoz mora biti razdeljena s tabi in mora biti navadna tekstovna datoteka. Polja naj si sledijo v naslednjem vrstnem redu: polno ime, uporabniko ime, email naslov.  Vsak uporabnik bo prejel email z nakljunim geslom. Vsak uporabnik naj bo vpisan v svoji vrstici. e ne upoteva teh navodil, lahko nastanejo precejnje teave, ki bodo zahtevale rono delo, zato, e enkrat preveri vpise v datoteki preden jo zane uvaati!',
-    26 => 'Ii',
-    27 => 'Omejitve iskanja',
-    28 => 'Izbrii sliko',
+    24 => 'Zaporedni uvoz uporabnikov',
+    25 => 'V Geeklog lahko uvozi zaporedje uporabnikov. Datoteka za uvoz mora biti navadna tekstovna datoteka, razdeljena s tabulatorji. Polja naj si sledijo v naslednjem vrstnem redu: celotno ime, uporabniko ime, e-naslov.  Vsak uporabnik bo prejel e-poto z nakljunim geslom. Vsak uporabnik naj bo vpisan v svoji vrstici. e teh navodil ne upoteva, lahko nastanejo precejnje teave, ki bodo zahtevale rono obdelavo, zato pred uvozom e enkrat preveri vpise v datoteki.',
+    26 => '',
+    27 => '',
+    28 => 'Izbris slike potrdi tu',
     29 => 'Pot',
     30 => 'Uvozi',
     31 => 'Novi uporabniki',
-    32 => 'Konano. Uvoeno %d in %d napak',
-    33 => 'polji',
-    34 => 'Napaka: Mora doloiti datoteko.',
-    35 => 'Zadnji vpis',
-    36 => '(nikoli)',
+    32 => 'Konano. Uvoeno %d , najdenih je %d napak',
+    33 => 'oddaj',
+    34 => 'Napaka: Doloiti je treba datoteko za nalaganje.',
+    35 => 'Zadna prijava',
+    36 => 'nikoli',
     37 => 'UID',
-    38 => 'Group Listing',
-    39 => 'Password (again)',
-    40 => 'Registration Date',
-    41 => 'Last login Date',
-    42 => 'Banned',
-    43 => 'Awaiting Activation',
-    44 => 'Awaiting Authorization',
-    45 => 'Active',
-    46 => 'User Status',
-    47 => 'Edit'
+    38 => 'Pregled skupine',
+    39 => 'Geslo (ponovno)',
+    40 => 'Datum registracije',
+    41 => 'Datum zadnje prijave',
+    42 => 'Prepovedan',
+    43 => 'aka aktivacijo',
+    44 => 'aka avtorizacijo',
+    45 => 'Dovoljen',
+    46 => 'Status uporabnika',
+    47 => 'Uredi',
+    48 => 'Prikai skupine skrbnikov',
+    49 => 'Skupina skrbnikov',
+    50 => 'Potrdi za odobritev filtriranja te skupine kot  Admin Use Group',
+    51 => 'Dnevi na liniji',
+    52 => '<br>Opomba: "Dnevi na liniji" je tevilo dni med prvo registracijo in zadnjo prijavo.',
+    53 => 'registrran',
+    54 => 'Izbris zaporedja',
+    55 => 'To deluje le, e ima v svojem config.php <code>$_CONF[\'lastlogin\'] = true;</code>.',
+    56 => 'Izberi tip uporabnika, ki ga hoe izbrisati, in pritisni "Posodobi seznam". Na seznamu odznai tiste, ki hoe, da ostanejo, in pritisni "Izbrii". Vedi, da bodo v primeru, ko obstaja ve strani seznama, izbrisani samo tisti tipi, ki jih trenutno vidi.',
+    57 => 'Fantomski uporabniki',
+    58 => 'Kratkotrajni uporabniki',
+    59 => 'Stari uporabniki',
+    60 => 'Uporabniki, registrirani pred ve kot ',
+    61 => ' meseci, ki se niso nikoli prijavili.',
+    62 => 'Uporabniki, registrirani pred ve kot ',
+    63 => ' meseci, ki so se prijavili v 24 urah, potem pa nikoli ve.',
+    64 => 'Obiajni uporabniki, ki spletne strani niso obiskali e ',
+    65 => ' mesecev.',
+    66 => 'Posodobi seznam',
+    67 => 'mesecev od registracije',
+    68 => 'Ure na liniji',
+    69 => 'Meseci brez povezave z linijo',
+    70 => 'ni moglo biti izbrisano',
+    71 => 'uspeno izbrisano',
+    72 => 'Za izbris ni bil izbran noben uporabnik',
+    73 => 'Hoe res trajno izbrisati VSE izbrane uporabnike?',
+    74 => 'zadnji uporabniki',
+    75 => 'Uporabniki, ki so se registrirali v zadnjih ',
+    76 => ' mesecih'
 );
 
 ###############################################################################
@@ -895,64 +909,17 @@
     12 => 'URL',
     13 => 'Kategorija',
     14 => 'Datum',
-    15 => 'Tema',
+    15 => 'Rubrika',
     16 => 'Uporabniko ime',
-    17 => 'Popolno ime',
-    18 => 'E-mail',
-    34 => 'Administratorske strani',
+    17 => 'Celotno ime',
+    18 => 'E-naslov',
+    34 => 'Skrbnikove strani',
     35 => 'akajoi lanki',
-    36 => 'akajoe povezave',
-    37 => 'akajoi dogodki',
-    38 => 'Potrdi',
-    39 => 'Trenutno v tem podroju ni nobene akajoe vsebine.',
-    40 => 'Uporabniki so poslali'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'nedelja',
-    2 => 'ponedeljek',
-    3 => 'torek',
-    4 => 'sreda',
-    5 => 'etrtek',
-    6 => 'petek',
-    7 => 'sobota',
-    8 => 'Dodaj dogodek',
-    9 => '%s Dogodek',
-    10 => 'Dogodki za',
-    11 => 'Skupni koledar',
-    12 => 'Osebni koledar',
-    13 => 'januar',
-    14 => 'februar',
-    15 => 'marec',
-    16 => 'april',
-    17 => 'maj',
-    18 => 'junij',
-    19 => 'julij',
-    20 => 'avgust',
-    21 => 'september',
-    22 => 'oktober',
-    23 => 'november',
-    24 => 'december',
-    25 => 'Nazaj na ',
-    26 => 'Ves dan',
-    27 => 'teden',
-    28 => 'Osebni koledar za uporabnika',
-    29 => 'Skupni koledar',
-    30 => 'izbrii dogodek',
-    31 => 'Dodaj',
-    32 => 'Dogodek',
-    33 => 'Datum',
-    34 => 'as',
-    35 => 'Hitro dodajanje',
-    36 => 'Polji',
-    37 => 'al ta spletna stran ne omogoa upravljanja osebnih koledarjev',
-    38 => 'Urejanje osebnega koledarja',
-    39 => 'Dan',
-    40 => 'Teden',
-    41 => 'Mesec'
+    36 => '',
+    37 => '',
+    38 => 'Oddaj',
+    39 => 'Trenutno ni nobene akajoe vsebine',
+    40 => 'Uporabnika akajoa vsebina'
 );
 
 ###############################################################################
@@ -960,310 +927,320 @@
 
 $LANG31 = array(
     1 => "{$_CONF['site_name']} EMail pripomoek",
-    2 => 'Od:',
-    3 => 'Naslov za odgovor:',
-    4 => 'Zadeva:',
-    5 => 'Sporoilo:',
+    2 => 'Od',
+    3 => 'E-naslov za odgovore',
+    4 => 'Zadeva',
+    5 => 'Sporoilo',
     6 => 'Naslov:',
     7 => 'Vsem uporabnikom',
-    8 => 'Admin',
-    9 => 'Nastavitve',
+    8 => 'Skrbnik',
+    9 => 'Monosti',
     10 => 'HTML',
     11 => 'Nujno sporoilo!',
     12 => 'Polji',
-    13 => 'Zbrii',
+    13 => 'Ponastavi',
     14 => 'Prezri uporabnike nastavitve',
-    15 => 'Napaka pri poiljanju: ',
-    16 => 'Sporoilo je bilo uspeno poslano na naslov: ',
+    15 => 'Napaka pri poiljanju  ',
+    16 => 'Sporoilo je bilo uspeno poslano: ',
     17 => "<a href={$_CONF['site_url']}/admin/mail.php>Polji novo sporoilo</a>",
-    18 => 'Za:',
-    19 => 'POZOR: e elite poslati sporoilo vsem uporabnikom strani, izberite skupino Prijavljeni uporabniki iz menija Uporabniki',
-    20 => "Uspeno poslana sporoila: <successcount>;<BR>Neuspeno poslana sporoila: <failcount>. Podrobnosti o neuspeno poslanih sporoilh najdete spodaj.<BR><BR>elite poslati e kakno <a href=\"{$_CONF['site_url']}/admin/mail.php\">sporoilo</a>? <BR><BR>Nazaj na <a href=\"{$_CONF['site_url']}/admin/moderation.php\">administratorkse strani</a>.",
+    18 => 'Za',
+    19 => 'OPOMBA: e hoe poslati sporoilo vsem uporabnikom strani, izberi skupino Prijavljeni uporabniki iz menija Uporabniki.',
+    20 => "Uspeno poslana sporoila: <successcount>;<BR>Neuspeno poslana sporoila: <failcount>. Podrobnosti o neuspeno poslanih sporoilh so spodaj.<BR><BR>Hoe poslati e kakno <a href=\"{$_CONF['site_url']}/admin/mail.php\">sporoilo</a>? <BR><BR>Nazaj na <a href=\"{$_CONF['site_url']}/admin/moderation.php\">skrbnikovo stran</a>.",
     21 => 'Neuspeno poslana sporoila',
     22 => 'Uspeno poslana sporoila',
     23 => 'Nobenega neuspeno poslanega sporoila',
     24 => 'Nobenega uspeno poslanega sporoila',
     25 => '-- Izberi skupino --',
-    26 => 'Prosim izpolni vsa polja v obrazcu in izberi skupino uporabnikov iz menija.'
+    26 => 'Izpolni vsa polja v obrazcu in izberi skupino uporabnikov iz menija.'
 );
 
 ###############################################################################
 # admin/plugins.php
 
 $LANG32 = array(
-    1 => 'Instalacija vtinikov (plugin) lahko povzroi kodo tvoji instalaciji Geekloga, lahko tudi tvojemu sistemu. Pomemno je, da instalira samo vtinike, ki jih pretoi z <a href="http://www.geeklog.net" target="_blank">Geeklogove domae strani</a> saj smo samo te dodobra preizkusili na razlinih operacijskih sistemih. Pomembno je razumeti, da je instalacija vtinikov proces, ki zahteva izvajanje nekaterih komand na nivoju datotenega sistema. Te lahko vodijo do varnostnih lukenj, posebno e uporablja vtinik iz strani tretjih oseb. Tudi s tem opozorilom, ne garantiramo uspeh katerekoli instalacije niti nismo odgovorni za kodo povzroeno z instalacijo vtinika za Geeklog. Z drugimi besedami instalira na svojo lastno odgovornost. Navodila za rono instalacijo vtinika so vkljuena v paketu vsakega vtinika.',
-    2 => 'Plug-in Installation Disclaimer',
-    3 => 'Plug-in Installation Form',
-    4 => 'Plug-in File',
-    5 => 'Spisek vtinikov',
-    6 => 'Opozorilo: Plug-in je e nameen!',
-    7 => 'Vtinik ki ga skua namestiti je e nameen. Prosim pobrii stari vtinik pred ponovno instalacijo',
-    8 => 'Test kompatibilnosti vtinika ni uspel',
-    9 => 'Ta vtinik zahteva novejo verzijo Geekloga. Namesti novo razliico <a href="http://www.geeklog.net">Geekloga</a> ali najdi novejo verzijo vtinika.',
+    1 => 'Namestitev vtinikov (plugins) lahko Geeklogu in tvojemu sistemu povzroi kodo. Pomembno je, da namesti samo vtinike, ki jih prenese z <a href="http://www.geeklog.net" target="_blank">Geeklogove domae strani</a>, saj smo samo te dodobra preizkusili na razlinih operacijskih sistemih. Pomembno je razumeti, da je namestitev vtinikov postopek, ki zahteva izvajanje nekaterih ukazov na ravni datotenega sistema. Ti lahko vodijo do varnostnih lukenj, posebej e uporablja vtinik s spletnih mest tretjih oseb. Kljub temu opozorilu ne jamimo za uspeh nobene namestitve niti nismo odgovorni za kodo, povzroeno z namestitvijo vtinika za Geeklog. Z drugimi besedami  namea na lastno odgovornost. V paket vsakega vtinika so vkljuena navodila za njegovo rono namestitev.',
+    2 => 'Zavrnitev namestitve vtinika',
+    3 => 'Obrazec za namestitev vtinika',
+    4 => 'Datoteka vtinika',
+    5 => 'Seznam vtinikov',
+    6 => 'Opozorilo: Vtinik je e nameen.',
+    7 => 'Vtinik, ki ga skua namestiti, je e nameen. Pred ponovno namestitvijo prosim izbrii stari vtinik.',
+    8 => 'Test zdruljivost vtinika ni uspel',
+    9 => 'Ta vtinik zahteva novejo verzijo Geekloga. Namesti novo razliico <a href="http://www.geeklog.net">Geekloga</a> ali najdi novejo razliico vtinika.',
     10 => '<br><b>Trenutno ni nameenih nobenih vtinikov.</b><br><br>',
-    11 => 'Za spremembo ali izbris vtinika, klikni njegovo tevilko spodaj. Za ve informacij o vtiniku, klikni njegovo ime in preusmerjen bo na njegovo domao stran. Za instalacijo ali nadgradnjo vtinika, klikni na gumb Nov vtinik zgoraj.',
-    12 => 'nobeno ime vtinika ni bilo poslano v plugineditor()',
-    13 => 'Urejevalnik vtinikov(Plugin Editor)',
+    11 => 'Za spremembo ali izbris vtinika klikni njegovo ikono za urejanje spodaj. Prikazale se bodo podrobnosti o vtiniku, vkljuno z avtorjevo spletno stranjo. Prikazani sta nameena in iz vtinikove kode vrnjena razliica. Tako bo laje vedeti, ali je treba vtinik nadgraditi ali ne. Za namestitev ali nadgradnjo vtinika poglej v njegovo dokumentacijo.',
+    12 => 'nobeno ime vtinika ni bilo poslano v urejevalnik vtinikov ()',
+    13 => 'Urejevalnik vtinikov',
     14 => 'Nov vtinik',
-    15 => 'Administratorske strani',
+    15 => 'Skrbnikova stran',
     16 => 'Ime vtinika',
-    17 => 'Verzija vtinika',
-    18 => 'Verzija Geekloga',
-    19 => 'Omogoen',
+    17 => 'Razliica vtinika',
+    18 => 'Razliica Geekloga',
+    19 => 'Omogoeno',
     20 => 'Da',
     21 => 'Ne',
     22 => 'Namesti',
     23 => 'Shrani',
     24 => 'Preklii',
-    25 => 'Odstrani',
-    26 => 'Ime Plug-ina',
-    27 => 'Plug-in Homepage',
-    28 => 'Verzija Plug-in',
-    29 => 'Verzija Geekloga',
-    30 => 'Odstrani Plug-in?',
-    31 => 'Ali ste prepriani da elite odstraniti ta plug-in?  S tem bodo iz baze izbrisani tudi vsi podatki, ki jih uporablja ta plug-in.',
-    32 => '<p><b>Error AutoLink tag not correct format</b></p>',
-    33 => 'Code Version',
-    34 => 'Update',
-    35 => 'Edit',
-    36 => 'Code',
-    37 => 'Data',
-    38 => 'Update!'
+    25 => 'Izbrii',
+    26 => 'Ime vtinika',
+    27 => 'Domaa stran vtinika',
+    28 => 'Razliica vtinika',
+    29 => 'Razliica Geekloga',
+    30 => 'Izbrii vtinik?',
+    31 => 'Hoe res odstraniti ta vtinik?  S tem bodo iz baze izbrisani tudi vsi podatki, ki jih uporablja.',
+    32 => '<p><b>Napaka AutoLink tag ni v pravem formatu</b></p>',
+    33 => 'Razliica kode',
+    34 => 'Posodobi',
+    35 => 'Uredi',
+    36 => 'Koda',
+    37 => 'Podatki',
+    38 => 'Posodobi!'
 );
 
 ###############################################################################
 # admin/syndication.php
 
 $LANG33 = array(
-    1 => 'ustvari vsebino (feed)',
+    1 => 'ustvari zdrueno vsebino',
     2 => 'shrani',
-    3 => 'zbrii',
+    3 => 'izbrii',
     4 => 'preklii',
-    10 => 'Vsebina (Syndication)',
-    11 => 'Nova vsebina (Feed)',
-    12 => 'Adminov dom',
-    13 => 'Za spreminjanje ali brisanje vsebine (feed), kliknite na vsebino spodaj. Za novo vsebino, kliknite na gumb Nova vsebina zgoraj.',
+    10 => 'Zdruevanje vsebine ',
+    11 => 'Nova zdruena vsebina',
+    12 => 'Skrbnikova stran',
+    13 => 'Za spreminjanje ali brisanje zdruene vsebine klikni na njeno ikono za urejanje spodaj. Za novo vsebino klikni na "Ustvari" zgoraj.',
     14 => 'Naslov',
     15 => 'Tip',
     16 => 'Ime datoteke',
-    17 => 'Format',
-    18 => 'zadnji obnovljen',
+    17 => 'Oblika',
+    18 => 'zadnji posodobljen',
     19 => 'Omogoeno',
     20 => 'Da',
     21 => 'Ne',
-    22 => '<i>(ni vsebine)</i>',
+    22 => '<i>(ni zdruene vsebine)</i>',
     23 => 'vsi lanki',
-    24 => 'Urejevalnik (RDF) vsebine',
-    25 => 'naslov vsebine',
-    26 => 'Meja',
-    27 => 'Doline vnosov',
-    28 => '(0 = brez dodatnega teksta, 1 = ves tekst, drugo = omeji tekst na to tevilo znakov.)',
+    24 => 'Urejevalnik zdruene vsebine',
+    25 => 'naslov zdruene vsebine',
+    26 => 'Omejitev prikaza',
+    27 => 'Omejitev tevila znakov',
+    28 => '(0 = brez besedila, 1 = vse besedilo, drugo = omeji na to tevilo znakov)',
     29 => 'Opis',
-    30 => 'Zadnji obnovljeno',
+    30 => 'Zadnja posodobitev',
     31 => 'Nabor znakov',
     32 => 'Jezik',
     33 => 'Vsebina',
     34 => 'Vpisi',
     35 => 'Ure',
-    36 => 'Izberite tip vsebine',
-    37 => 'Nameen imate vsaj en vtinik, ki podpira sodelovanje (content syndication). Spodaj morate izbrati ali delate RDF vsebino za Geekloga ali za katerega od vtinikov.',
+    36 => 'Izberi tip zdruene vsebine',
+    37 => 'Nameen ima vsaj en vtinik, ki podpira zdruevanje vsebine. Spodaj je treba izbrati, ali hoe ustvariti zdrueno vsebino za Geeklog ali za katerega od vtinikov.',
     38 => 'Napaka: Manjkajoa polja',
-    39 => 'Prosim izpolnite polja Naslov, Opis, Ime datoteke.',
-    40 => 'Prosim vpiite tevilo vpisov ali tevilo ur.',
-    41 => 'Povezave',
-    42 => 'Dogodki',
-    43 => 'All',
-    44 => 'None',
-    45 => 'Header-link in topic',
-    46 => 'Limit Results',
-    47 => 'Search',
-    48 => 'Edit',
-    49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    39 => 'Izpolni polja Naslov zdruene vsebine, Opis, Ime datoteke.',
+    40 => 'Vpii tevilo vpisov ali tevilo ur.',
+    41 => 'Oddaj',
+    42 => '',
+    43 => 'Vsi',
+    44 => 'Noben',
+    45 => 'Naslovna povezava v rubriki',
+    46 => 'Rezultati omejitve',
+    47 => 'Ii',
+    48 => 'Uredi',
+    49 => 'Logotip zdruene vsebine',
+    50 => "Glede na url strani ({$_CONF['site_url']})",
+    51 => 'Izbrano ime datoteke e uporablja druga zdruena vsebina. Prosim izberi drugega.',
+    52 => 'Napaka: Ime datoteke e obstaja.'
 );
 
 ###############################################################################
 # confirmation and error messages
 
 $MESSAGE = array(
-    1 => 'Geslo smo vam poslali na va e-mail naslov. Elektronsko sporoilo vsebuje tudi vsa ustrezna navodila.',
-    2 => 'Za poslani lanek se vam najlepe zahvaljujemo. Pred objavo ga bo pregledal eden izmed urednikov. e bo odobren, bo objavljen na spletni strani.',
-    3 => "Za poslano povezavo se vam najlepe zahvaljujemo. Pred objavo jo bo pregledal eden izmed urednikov. e bo odobrena, bo objavljena na strani <a href={$_CONF['site_url']}/links.php>povezav</a>.",
-    4 => "Za poslani dogodek se vam najlepe zahvaljujemo. Pred objavo ga bo pregledal eden izmed urednikov. e bo odobren, bo objavljen v <a href={$_CONF['site_url']}/calendar.php>koledarju dogodkov</a>.",
-    5 => 'Podatki o vaem uporabnikem raunu so bili shranjeni.',
-    6 => 'Nastavitve so bile uspeno shranjene.',
-    7 => 'Vae nastavitve komentarjev so bile uspeno shranjene.',
+    1 => "Geslo je bilo  poslano na tvoj e-naslov in bi moralo prispeti vsak as. Sledi navodilom v sporoilu in hvala, da uporablja {$_CONF['site_name']}.",
+    2 => "Hvala, da si dogodek oddal/a na spletno mesto {$_CONF['site_name']}. Pred objavo ga bo pregledal eden od urednikov. e bo odobren, bo objavljen in dan na razpolago bralcem te spletne strani.",
+    3 => "",
+    4 => "",
+    5 => 'Podatki o uporabnikem raunu so bili uspeno shranjeni.',
+    6 => 'Osebne nastavitve so bile uspeno shranjene.',
+    7 => 'Osebne nastavitve komentarjev so bile uspeno shranjene.',
     8 => 'Odjava je bila uspena.',
-    9 => 'lanek je bil uspeno shranjen.',
-    10 => 'lanek je bil izbrisan.',
-    11 => 'Vai bloki so bili uspeno shranjeni.',
-    12 => 'Blok je bil izbrisan.',
-    13 => 'Tematsko podroje je bilo uspeno shranjeno.',
-    14 => 'Tematsko podroje skupaj z vsemi lanki v njem z je bilo izbrisano.',
-    15 => 'Povezava je bila uspeno shranjena v bazo povezav.',
-    16 => 'Povezava je bila izbrisana.',
-    17 => 'Dogodek je bil uspeno shranjen v bazo dogodkov.',
-    18 => 'Dogodek je bil izbrisan.',
-    19 => 'Anketa je bila uspeno shranjena.',
-    20 => 'Anketa je bila izbrisana.',
-    21 => 'Uporabnike nastavitve so bile uspeno shranjene.',
-    22 => 'Uporabnik je bil izbrisan.',
-    23 => 'Napaka pri dodajanju dogodka v koledar dogodkov. Vnesite ID dogodka.',
-    24 => 'Dogodek je bil uspeno shranjen v va koledar dogodkov',
-    25 => 'Dostop do osebnega koledarja je mogo le e ste prijavljeni.',
-    26 => 'Dogodek je bil odstranjen iz vaega osebnega koledarja dogodkov',
-    27 => 'Sporoilo je bilo poslano.',
+    9 => 'lanek je bil uspeno shranjen.',
+    10 => 'lanek je bil izbrisan.',
+    11 => 'Blok je bil uspeno shranjen.',
+    12 => 'Blok je bil uspeno izbrisan.',
+    13 => 'Rubrika je bila uspeno shranjeno.',
+    14 => 'Rubrika skupaj z vsemi lanki in bloki je bila uspeno izbrisana.',
+    15 => '',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => '',
+    20 => '',
+    21 => 'Uporabnik je bil uspeno shranjen.',
+    22 => 'Uporabnik je bil uspeno izbrisan.',
+    23 => '',
+    24 => '',
+    25 => '',
+    26 => '',
+    27 => 'Sporoilo je bilo uspeno poslano.',
     28 => 'Vtinik je bil uspeno shranjen',
-    29 => 'al ta stran ne podpira osebnega koledarja.',
+    29 => '',
     30 => 'Dostop zavrnjen',
-    31 => 'al nimate dostopa do administracije lankov. Vsi poizkusi nedovoljenega dostopa se beleijo!',
-    32 => 'al nimate dostopa do administracije tematskih podroij. Vsi poizkusi nedovoljenega dostopa se beleijo!',
-    33 => 'al nimate dostopa do administracije blokov. Vsi poizkusi nedovoljenega dostopa se beleijo!',
-    34 => 'al nimate dostopa do administracije povezav. Vsi poizkusi nedovoljenega dostopa se beleijo1',
-    35 => 'al nimate dostopa do administracije dogodkov. Vsi poizkusi nedovoljenega dostopa se beleijo!',
-    36 => 'al nimate dostopa do administracije anket. Vsi poizkusi nedovoljenega dostopa se beleijo!',
-    37 => 'al nimate dostopa do administracije uporabnikov. Vsi poizkusi nedovoljenega dostopa se beleijo!',
-    38 => 'al nimate dostopa do administracije prikljunih modulov. Vsi poizkusi nedovoljenega dostopa se beleijo!',
-    39 => 'al nimate dostopa do administracije elektronske pote. Vsi poizkusi nedovoljenega dostopa se beleijo!',
+    31 => 'al nima dostopa do skrbnitva lankov. Vsi poskusi dostopa do nepooblaenih funkcij se beleijo.',
+    32 => 'al nima dostopa do skrbnitva tematskih podroij. Vsi poskusi dostopa do nepooblaenih funkcij se beleijo.',
+    33 => 'al nima dostopa do skrbnitva blokov. Vsi poskusi dostopa do nepooblaenih funkcij se beleijo.',
+    34 => '',
+    35 => '',
+    36 => '',
+    37 => 'al nima dostopa do skrbnitva uporabnikov. Vsi poskusi dostopa do nepooblaenih funkcij se beleijo.',
+    38 => 'al nima dostopa do skrbnitva vtinikov. Vsi poskusi dostopa do nepooblaenih funkcij se beleijo.',
+    39 => 'al nima dostopa do skrbnitva elektronske pote. Vsi poskusi dostopa do nepooblaenih funkcij se beleijo.',
     40 => 'Sistemsko sporoilo',
-    41 => 'al nima dostopa do strani za menjavo besed. Vsi poizkusi nedovoljenega dostopa se beleijo!',
-    42 => 'Beseda je bila uspeno shranjena.',
-    43 => 'Beseda je bila uspeno pobrisana.',
-    44 => 'Vtinik je bil uspeno nameen!',
-    45 => 'Vtinik je bil odstranjen.',
-    46 => 'al nimate dostopa do bekapa baze. Vsak poskus nedovoljenega dostopa se belei',
-    47 => 'To deluje samo pod operacijskim sistemom *nix.  e uporablja *nix za svoj operacijski sistem, potem je bil cache uspeno izpraznjen. e uporablja Windows OS, bo moral poiskati datoteke po imenu adodb_*.php in jih pobrisati rono.',
-    48 => "Hvala ker ste se prijavili za lanstvo v {$_CONF['site_name']}. Nae osebje vam bo sporoilo odgovor v kratkem. e boste sprejeti, vam bomo poslali vae geslo email naslov, ki te ga ravnokar napisali.",
-    49 => 'Skupina je bila uspeno shranjena.',
-    50 => 'Skupina je bila uspeno izbrisana.',
-    51 => 'To uporabniko ime je e zasedeno. Prosim izberi drugo.',
-    52 => 'Vpisani email ne izgleda kot pravi email naslov.',
+    41 => 'al nima dostopa do strani za menjavo besed. Vsi poskusi dostopa do nepooblaenih funkcij se beleijo.',
+    42 => 'Beseda je uspeno shranjena.',
+    43 => 'Beseda je uspeno izbrisana.',
+    44 => 'Vtinik je uspeno nameen.',
+    45 => 'Vtinik je uspeno odstranjen.',
+    46 => 'al nima dostopa do varnostnih kopij baze. Vsak poskus nedovoljenega dostopa se belei.',
+    47 => 'To deluje samo v operacijskem sistemu *nix.  e uporablja operacijski sistem, potem *nix , je bil cache uspeno izpraznjen. e uporablja Windows OS, bo moral poiskati datoteke po imenu adodb_*.php in jih odstraniti rono.',
+    48 => "Hvala, da si zaprosil za lanstvo v {$_CONF['site_name']}. Pregledali bomo tvojo pronjo. e bo odobrena, bo dobil geslo na e-naslov, ki si ga ravnokar vnesel.",
+    49 => 'Skupina je uspeno shranjena.',
+    50 => 'Skupina je uspeno izbrisana.',
+    51 => 'To uporabniko ime je e zasedeno. Prosim izberi drugega.',
+    52 => 'Vpisani e-naslov ne izgleda kot pravi e-naslov.',
     53 => 'Tvoje novo geslo je sprejeto. Prosim uporabi to novo geslo spodaj za vpis v sistem.',
-    54 => 'Tvoja zahteva za novo geslo je potekla. Prosim poizkusi ponovno spodaj.',
-    55 => 'Poslal sem Email. Na tvoj naslov bi moral priti takoj. Prosim upotevaj navodila v tem emailu, za izbiro novega gesla za svoj raun.',
-    56 => 'Vpisani email je e uporabljen za enega od raunov na nai bazi podatkov.',
-    57 => 'Tvoj raun je bil uspeno pobrisan.',
-    58 => '(RDF) vsebina je bila uspeno shranjena.',
-    59 => '(RDF) vsebina je bila uspeno izbrisana.',
-    60 => 'Vtinik je bil uspeno obnovljen (updated)',
-    61 => 'Vtinik %s: Neznan okvir sporoila (Unknown message placeholder)',
-    62 => 'The trackback comment has been deleted.',
-    63 => 'An error occurred when deleting the trackback comment.',
-    64 => 'Your trackback comment has been successfully sent.',
-    65 => 'Weblog directory service successfully saved.',
-    66 => 'The weblog directory service has been deleted.',
-    67 => 'The new password does not match the confirmation password!',
-    68 => 'You have to enter the correct current password.',
-    69 => 'Your account has been blocked!',
-    70 => 'Your account is awaiting administrator approval.',
-    71 => 'Your account has now been confirmed and is awaiting administrator approval.',
-    72 => 'An error occured while attempting to install the plugin. See error.log for details.',
-    73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
-    74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    54 => 'Tvoja zahteva za novo geslo je potekla. Prosim poskusi ponovno spodaj.',
+    55 => 'Poslali smo ti e-poto. Na tvoj e-naslov bi morala prispeti vsak as. Za izbiro novega gesla za svoj raun prosim upotevaj navodila v e-poti.',
+    56 => 'Vpisani e-naslov je e uporabljen za enega od raunov v nai bazi podatkov.',
+    57 => 'Tvoj raun je uspeno pobrisan.',
+    58 => 'Zdruena vsebina je uspeno shranjena.',
+    59 => 'Zdruena vsebina je uspeno izbrisana.',
+    60 => 'Vtinik je uspeno posodobljen.',
+    61 => 'Vtinik %s: Neznan okvir sporoila.',
+    62 => 'Trackback komentar je izbrisan.',
+    63 => 'Med brisanjem trackback komentarja je prilo do napake.',
+    64 => 'Trackback komentar je bil uspeno odposlan.',
+    65 => 'Storitev za Weblog directory je uspeno shranjena.',
+    66 => 'Storitev za Weblog directory je izbrisana.',
+    67 => 'Novo geslo se ne ujema s potrditvenim geslom.',
+    68 => 'Vnesi pravilno veljavno geslo.',
+    69 => 'Tvoj raun je blokiran.',
+    70 => 'Tvoj raun aka na skrbnikovo odobritev.',
+    71 => 'Tvoj raun je sedaj potrjen in aka na skrbnikovo odobritev.',
+    72 => 'Med nameanjem vtinika je prilo do napake. Za podrobnosti glej error.log.',
+    73 => 'Med deinstaliranjem vtinika je prilo do napake. Za podrobnosti glej error.log.',
+    74 => 'Pingback je uspeno odposlan.',
+    75 => 'Trackbacks morajo biti poslani prek zahteve po objavi.',
+    76 => 'Hoe res izbrisati ta predmet?',
+    77 => 'OPOZORILO:<br>Privzeto kodiranje si nastavil/a na UTF-8, a tvoj sterenik ne podpira vebajtnega kodiranja. Namesti funkcije mbstring za PHP ali izberi drug nabor znakov/jezik.',
+    78 => 'Zagotovi prosim, da sta e-naslov in naslov potrditvene e-pote ista.',
+    79 => 'Stran, ki jo poskua odpreti, se nanaa na funkcijo, ki na tem mestu ne obstaja ve.',
+    80 => 'Vtinik, ki je ustvaril to zdrueno vsebino, je trenutno onemogoen. Te zdruene vsebine ne bo mogoe urejati, dokler ne bo starevski  vtinik ponovno omogoen.',
+    81 => 'Mogoe si narobe vtipkal/a login credentials. Poskusi se prosim ponovno prijaviti spodaj.',
+    82 => 'tevilo dovoljenih poskusov prijave je bilo preseeno. Prosim poskusi ponovno pozneje.',
+    83 => 'Za spremembo gesla in e-naslova ter za izbiro tega, koliko asa naj si te stran zapomni, vnesi svoje trenutno veljavno geslo.',
+    84 => 'Za izbris svojega rauna vnesi svoje trenutno veljavno geslo.'
 );
 
 ###############################################################################
 
 $LANG_ACCESS = array(
     'access' => 'Dostop',
-    'ownerroot' => 'Lastnik/Root',
+    'ownerroot' => 'Lastnik/Koren (Root)',
     'group' => 'Skupina',
     'readonly' => 'Samo za branje',
     'accessrights' => 'Pravice dostopa',
     'owner' => 'Lastnik',
-    'grantgrouplabel' => 'Dovoli zgornji skupini pravice spreminjanja',
-    'permmsg' => 'OBVESTILO: uporabniki so vsi prijavljeni lani, anonimni uporabniki in vsi trenutni neprijavljeni obiskovalci strani.',
+    'grantgrouplabel' => 'Dodeli zgornji skupini pravice za spreminjanje',
+    'permmsg' => 'OBVESTILO: Uporabniki so vsi prijavljeni lani, anonimni uporabniki in vsi trenutni neprijavljeni obiskovalci strani.',
     'securitygroups' => 'Varnostne skupine',
-    'editrootmsg' => "eprav ste administrator, ne morete spreminjati nastavitev root uporabnika, e sami niste root uporabnik. Lahko pa urejate nastavitve vseh ostalih uporabnikov. Vsi poizkusi nedovoljenega dostopa se beleijo. Vrnite se na <a href=\"{$_CONF['site_url']}/admin/users.php\">Administratorske strani</a>.",
-    'securitygroupsmsg' => 'Izberite skupine, katerim naj pripada uporabnik',
+    'editrootmsg' => "eprav si skrbnik, ne more spreminjati nastavitev korenskega uporabnika, e nisi sam korenski uporabnik. Lahko pa ureja nastavitve vseh drugih uporabnikov. Vsi poskusi dostopa do nepooblaenih funkcij se beleijo. Vrni se na <a href=\"{$_CONF['site_url']}/admin/users.php\">stran za skrbnitvo uporabnikov</a>.",
+    'securitygroupsmsg' => 'Izberite skupine, ki naj jim pripada uporabnik',
     'groupeditor' => 'Urejanje skupin',
     'description' => 'Opis',
     'name' => 'Ime',
     'rights' => 'Pravice',
     'missingfields' => 'Manjkajoa polja',
-    'missingfieldsmsg' => 'Vpiite ime in opis skupine!',
-    'groupmanager' => 'Administracija skupin',
-    'newgroupmsg' => 'Izberite skupinpo, ki jo eleite odstraniti skupino ali spremeniti njene nastavitve. e elite oblikovati novo skupino, kliknite na Nova skupina zgoraj! Osnovnih skupin ni mogoe odstraniti!',
+    'missingfieldsmsg' => 'Vpii ime in opis skupine.',
+    'groupmanager' => 'Upravitelj skupin',
+    'newgroupmsg' => 'Za spreminjanje ali izbris skupine kliknite na njeno ikono za urejanje spodaj. e hoete oblikovati novo skupino, kliknite na "Ustvari" zgoraj. Jedrnih skupin ni mogoe odstraniti, ker jih uporablja sistem.',
     'groupname' => 'Ime skupine',
-    'coregroup' => 'Osnovna skupina',
+    'coregroup' => 'Jedrna skupina',
     'yes' => 'Da',
     'no' => 'Ne',
-    'corerightsdescr' => "Ta skupina je osnovna skupina {$_CONF['site_name']}. Pravice te skupine ne morejo biti spremenjene. Pravice, ki pripadajo tej skupini so na spodnjem seznamu!",
-    'groupmsg' => 'Varnost skupin na tej strnai je urejena hierarhino. Vsaka podskupina ima enake pravice kot njena nadskupina. Zato je priporoljiva uporaba podskupin. e skupina potrebuje posebne pravice, jih izberite v meniju \'Pravice\'.',
-    'coregroupmsg' => "Ta skupina je osnovna skupina strani {$_CONF['site_name']}. Nastavitve skupin, ki ji pripadajo zato ne morejo biti spremenjene. Spodnji seznam vsebuje imena skupin, ki ji pripadajo.",
-    'rightsdescr' => 'Pravice, ki jih doloite skupini, so avtomatsko dodeljene tudi vsem njenim podskupinam. Pravice lahko dodajate tako, da jih izberete iz spodnjega seznama. e doloena pravica nima \'checkboxa\' pomeni, da ji je ta pravica dodeljena, ker je podskupina neke druge skupine.',
+    'corerightsdescr' => "Ta skupina je jedrna skupina {$_CONF['site_name']}. Njenih pravic se ne da urejati. Pravice, ki pripadajo tej skupini, si poglej na spodnjem seznamu.",
+    'groupmsg' => 'Varnostne skupine na tej strani so urejene hierarhino. e to skupino doda h kateri koli od spodnjih skupin, ji bodo s tem dodeljene iste pravice, kot jih imajo tiste skupine. e je le mogoe,  skupinam dodeli pravice tako, da jih doda k spodnjim skupinam. e naj ima ta skupina pravice po meri, lahko pravice do raznih funkcij te spletne strani izbere spodaj v meniju \'Pravice\'. e hoe to skupino dodati h kateri od spodnjih skupin, potrdi okence poleg ene ali ve elenih skupin.',
+    'coregroupmsg' => "Ta skupina je jedrna skupina strani {$_CONF['site_name']}. Nastavitve skupin, ki ji pripadajo zato ne morejo biti spremenjene. Spodnji seznam vsebuje imena skupin, ki ji pripadajo.",
+    'rightsdescr' => 'Dostop skupine do doloene spodaj navedene pravice je lahko dodan tej skupini neposredno ALI pa drugi skupini, katere del je ta skupina. Tiste od spodaj navedenih pravic, ki nimajo potrditvenega okenca, so tej skupini e dodeljene zato, ker pripada drugi skupini, ki to pravico ima. Tiste od spodaj navedenih pravic, ki imajo potrdirveno okence, pa lahko skupini dodate neposredno.',
     'lock' => 'Zakleni',
-    'members' => 'lani',
+    'members' => 'lani',
     'anonymous' => 'Anonimni uporabnik',
-    'permissions' => 'Pravice',
-    'permissionskey' => 'R = branje, E = spreminjanje, pravice spreminjanja predpostavljajo pravice branja',
+    'permissions' => 'Dovoljenja',
+    'permissionskey' => 'R = branje, E = urejanje, pravice urejanja predpostavljajo pravice branja',
     'edit' => 'Uredi',
     'none' => 'Nihe',
-    'accessdenied' => 'Dostop zavrnjen!',
-    'storydenialmsg' => "al nimate dostopa do tega lanka. Morda zato, ker niste registrirani uporabnik {$_CONF['site_name']}? <a href=users.php?mode=New> Registrirajte se!</a> in dobili boste popoln dostop do strani {$_CONF['site_name']}",
-    'eventdenialmsg' => "al nimate dostopa do tega dogodka. Morda zato, ker niste registrirani uporabnik {$_CONF['site_name']}? <a href=users.php?mode=New> Registrirajte se!</a> in dobili boste popoln dostop do strani {$_CONF['site_name']}",
-    'nogroupsforcoregroup' => 'Ta skupina ne pripada nobeni od preostalih skupin',
-    'grouphasnorights' => 'Ta skupina nima nobenih administratorskih pravic.',
+    'accessdenied' => 'Dostop zavrnjen',
+    'storydenialmsg' => "al nima dostopa do tega lanka. Morda zato, ker nisi lan? <a href=\"{$_CONF['site_url']}/users.php?mode=new\">Postani lan</a> spletne strani {$_CONF['site_name']} in dobil/a bo popoln dostop.",
+    'nogroupsforcoregroup' => 'Ta skupina ne pripada nobeni drugi skupini',
+    'grouphasnorights' => 'Ta skupina nima dostopa do skrbnikih funkcij na tem spletnem mestu.',
     'newgroup' => 'Nova skupina',
-    'adminhome' => 'Administratorske strani',
-    'save' => 'Shrani',
-    'cancel' => 'Preklii',
-    'delete' => 'Izbrii',
-    'canteditroot' => 'Poizkusili ste urejati nastavitve glavne skupine. Ker niste lan glavne skupine je va dostop zavrnjen. e mislite, da je to napaka, kontatkirajte administratorja sistema.',
-    'listusers' => 'Izpii uporabnike',
-    'listthem' => 'Izpis',
+    'adminhome' => 'Skrbnikova stran',
+    'save' => 'shrani',
+    'cancel' => 'preklii',
+    'delete' => 'izbrii',
+    'canteditroot' => 'Poskusil/a si urejati jedrno skupino, a ker nisi njen lan, je tvoj dostop zavrnjen. e misli, da gre za napako, se posvetuj s skrbnikom sistema.',
+    'listusers' => 'lani',
+    'listthem' => 'seznam',
     'usersingroup' => 'Uporabniki v skupini %s',
-    'usergroupadmin' => 'Administracija skupin uporabnikov',
+    'usergroupadmin' => 'Skrbnitvo skupin uporabnikov',
     'add' => 'Dodaj',
     'remove' => 'Odstrani',
-    'availmembers' => 'Uporabniki na voljo',
+    'availmembers' => 'lani na voljo',
     'groupmembers' => 'lani skupine',
-    'canteditgroup' => 'Za urejanje te skupine, morate biti njen lan. Prosim posvetujte se z administratorjem, e se vam zdi da je to sporoilo napaka.',
-    'cantlistgroup' => 'To see the members of this group, you have to be a member yourself. Please contact the system administrator if you feel this is an error.',
-    'editgroupmsg' => 'To modify the group membership, click on the member names(s) and use the add or remove buttons. If the member is a member of the group, their name will appear on the right side only. Once you are complete - press <b>Save</b> to update the group and return to the main group admin page.',
-    'listgroupmsg' => 'Listing of all current members in the group: <b>%s</b>',
-    'search' => 'Search',
-    'submit' => 'Submit',
-    'limitresults' => 'Limit Results',
-    'group_id' => 'Group ID',
-    'plugin_access_denied_msg' => 'You are illegally trying access a plugin administration page.  Please note that all attempts to illegally access this page are logged.',
-    'groupexists' => 'Group name already exists',
-    'groupexistsmsg' => 'There is already a group with this name. Group names must be unique.'
+    'canteditgroup' => 'Za urejanje te skupine mora biti njen lan. e misli, da gre za napako, se posvetuj s skrbnikom sistema.',
+    'cantlistgroup' => 'Da lahko vidi lane te skupine, mora biti njen lan. e misli, da gre za napako, se posvetuj s skrbnikom sistema.',
+    'editgroupmsg' => 'Za spreminjanje lanstva v skupini klikni na izbrana imena lanov in uporabi gumb Dodaj ali Odstrani. e je lan tudi lan te skupine, se bo njegovo ime pojavilo samo ne desni strani. Ko kona, pritisni na <b>Shrani</b>, da se skupina posodobi, in se vrni na glavno stran za skrbnitvo skupin uporabnikov.',
+    'listgroupmsg' => 'Seznam vseh trenutnih lanov skupine: <b>%s</b>',
+    'search' => 'Ii',
+    'submit' => 'Oddaj',
+    'limitresults' => 'Rezultati omejitve',
+    'group_id' => 'ID skupine',
+    'plugin_access_denied_msg' => 'Nedovoljeno poskua dostopiti do strani za skrbnitvo vtinikov. Vedi, da se vsi nedovoljeni poskusi dostopa do te strani beleijo.',
+    'groupexists' => 'Ime skupine e obstaja',
+    'groupexistsmsg' => 'Skupina s tem imenom e obstaja. Imena skupin morajo biti razlina.'
 );
 
 ###############################################################################
 # admin/database.php
 
 $LANG_DB_BACKUP = array(
-    'last_ten_backups' => 'Zadnjih 10 backupov',
-    'do_backup' => 'Naredi backup',
-    'backup_successful' => 'Bravo. Baza podatkov se je uspeno bekapirala ;-).',
-    'db_explanation' => 'e elite narediti backup vaega Geeklog sistema, kliknite gumb spodaj',
-    'not_found' => "Napana pot ali mysqldump utility nima izvrevalnih pravic.<br>Preveri <strong>\$_DB_mysqldump_path</strong> definicijo v config.php.<br>Spremenljivka je trenutno definirana kot: <var>{$_DB_mysqldump_path}</var>",
-    'zero_size' => 'Backup neuspeen: Velikost datoteka je bila 0 bytov',
+    'last_ten_backups' => 'Zadnjih 10 varnostnih kopij',
+    'do_backup' => 'Naredi varnostno kopijo',
+    'backup_successful' => 'Varnostno shranjevanje baze podatkov je bilo uspeno.',
+    'db_explanation' => 'e hoe ustvariti novo varnostno kopijo baze podatkov sistema Geeklog , klikni "Ustvari" zgoraj.',
+    'not_found' => "Napana pot ali pa orodje mysqldump ni izvrljivo.<br>Preveri definicijo <strong>\$_DB_mysqldump_path</strong> v config.php.<br>Spremenljivka je trenutno definirana kot: <var>{$_DB_mysqldump_path}</var>",
+    'zero_size' => 'Varnostno kopiranje neuspeno: Velikost datoteke je 0 bajtov',
     'path_not_found' => "{$_CONF['backup_path']} ne obstaja ali pa ni direktorij",
     'no_access' => "NAPAKA: Direktorij {$_CONF['backup_path']} ni dosegljiv.",
-    'backup_file' => 'Backup datoteka',
+    'backup_file' => 'Datoteka z varnostno kopijo',
     'size' => 'Velikost',
-    'bytes' => 'Bytov',
-    'total_number' => 'Skupno tevilo bekapov: %d'
+    'bytes' => 'Bajtov',
+    'total_number' => 'Skupno tevilo varnostnih kopij: %d'
 );
 
 ###############################################################################
 
 $LANG_BUTTONS = array(
     1 => 'Domov',
-    2 => 'Kontakt',
+    2 => 'Stik',
     3 => 'Objavi',
-    4 => 'Povezave',
-    5 => 'Ankete',
-    6 => 'Koledar',
+    4 => '',
+    5 => '',
+    6 => '',
     7 => 'Statistika strani',
     8 => 'Osebne nastavitve',
     9 => 'Ii',
-    10 => 'Napredno iskanje',
-    11 => 'Directory'
+    10 => 'napredno iskanje',
+    11 => 'Direktorij'
 );
 
 ###############################################################################
@@ -1271,17 +1248,17 @@
 
 $LANG_404 = array(
     1 => 'Napaka 404',
-    2 => 'Ups, pogledal sem povsod, ampak ne najdem <b>%s</b>.',
-    3 => "<p>al mi je, ampak, datoteka ki jo zahteva ne obstaja. Prosim preveri <a href=\"{$_CONF['site_url']}\">glavno stran</a> ali <a href=\"{$_CONF['site_url']}/search.php\">iskalno stran</a> in poglej e lahko najde kar si izgubil."
+    2 => 'Pogledal sem povsod, ampak ne najdem <b>%s</b>.',
+    3 => "<p>al datoteka, ki jo zahteva, ne obstaja. Prosim preveri <a href=\"{$_CONF['site_url']}\">glavno stran</a> ali <a href=\"{$_CONF['site_url']}/search.php\">iskalno stran</a> in poglej, e lahko najde, kar si izgubil."
 );
 
 ###############################################################################
 # login form
 
 $LANG_LOGIN = array(
-    1 => 'Zahtevan je vpis',
-    2 => 'al, za ogled tega dela strani, mora biti logiran kot uporabnik.',
-    3 => 'Logiraj se',
+    1 => 'Zahtevana je prijava',
+    2 => 'Oprosti, za ogled tega dela strani mora biti prijavljen kot uporabnik.',
+    3 => 'Prijava',
     4 => 'Nov uporabnik'
 );
 
@@ -1289,20 +1266,20 @@
 # pdfgenerator.php
 
 $LANG_PDF = array(
-    1 => 'PDF nain je onemogoen',
-    2 => 'Zahtevani dokument ni bil renderiran. Dokument je bil prejte ampak ga ni bilo mono sprocesirati. Prosim prepriaj se da poilja PDF procesorju samo dokumente v obliki html, ki so bili napisani po xHTML standardu. Upotevajte da pri pre-kompleksnih dokumentih lahko pride do tega, da se sploh ne sprocesirajo. Dokument ki je nastal na vao zahtevo je dolg 0 bytov, in je bil izbrisan. e ste prepriani, da bi se ta dokument moral pravilno izraunati, ga prosimo poljite ponovno.',
-    3 => 'Neznana napaka med izdelavo PDF dokumenta',
-    4 => "Dobil nisem nobenih podatkov o strani, ali pa elite uporabiti ad-hoc PDF generator spodaj. e mislite da ste dobili to stran\n          Po nesrei prosim sporoite to upravniku strani. e temu ni tako, lahko uporabite spodnjo formo in si ustvarite PDF dokumente na nain ad-hoc.",
-    5 => 'Nalagam va dokument.',
-    6 => 'Prosim poakajte, da naloim va dokument.',
-    7 => 'Spodnji gumb lahko kliknete z desnim mikinim gumbom in izberete \'save target...\' ali \'save link location...\' da shranite kopijo dokumenta.',
-    8 => "Pot do HTMLDoc izvrilne datoteke, ki je zapisana v nastavitvah je napana in sistem je ne more zagnati. Prosimo sporoite ta problem upravniku strani\n          e se ponavlja.",
+    1 => 'Funkcija PDF je onemogoena',
+    2 => 'Priskrbljeni dokument ni bil renderiran. Bil je prejet, ampak ga ni bilo mogoe procesirati. Pepriaj se, da oddaja samo dokumente v obliki html, ki so bili napisani po standardu xHTML. Izjemno kompleksni dokumenti se lahko renderirajo nepravilno ali pa sploh ne. Dokument, ki je nastal v poskusu renderiranja, je imel 0 bajtov in je bil izbrisan. e si preprian/a, da bi se ta dokument moral pravilno renderirati, ga polji ponovno.',
+    3 => 'Neznana napaka med izdelavo dokumenta PDF',
+    4 => "Podatki o strani niso bili podani ali pa hoe uporabiti orodje za ad-hoc izdelavo dokumentov PDF spodaj. e misli, da si to stran dobil/a pomotoma, prosim sporoi to skrbniku sistema. V nasprotnem primeru lahko uporabi spodnji obrazec in ustvari dokumente PDF na nain ad-hoc.",
+    5 => 'Nalagam dokument.',
+    6 => 'Prosim poakaj, dokument se nalaga.',
+    7 => 'Spodnji gumb lahko desnokliknete in izberete \'shrani ciljni dokument ...\' ali \'shrani mesto povezave ...\', da shranite kopijo dokumenta.',
+    8 => "Pot do izvrilne datoteke HTMLDoc, ki je zapisana v nastavitvah, je napana, zato je sistem ne more zagnati. e se teava ponavlja, to prosim sporoite skrbniku strani.",
     9 => 'Izdelovalnik PDF',
-    10 => "To je orodje za Ad-hoc izdelavo PDF dokumentov. Orodje bo poizkusilo predelati vse URL naslove v PDF. Prosim zavedaj se, da se nekatere internetne strani NE bodo pravilno renderirale s tem nainom (ad-hoc).  To\n           je omejitev orodja HTMLDoc in teh napak ne rabite prijavljati upravniku strani",
+    10 => "To je orodje za ad-hoc izdelavo dokumentov PDF. Orodje bo poskusilo predelati vse URL-je  v PDF-ju. Prosim zavedaj se, da se nekatere spletne strani s tem nainom ne bodo pravilno renderirale.  To je omejitev orodja HTMLDoc za izdelavo dokumentov PDF, zato teh napak ni treba prijavljati skrbniku strani.",
     11 => 'URL',
-    12 => 'Naredi PDF!',
-    13 => 'PHP konfiguracija na tem serverju ne dovoli odpiranja internetnih naslovov (URL) z ukazom fopen(). Upravnik strani mora popraviti php.ini datoteko in v njej prestaviti allow_url_fopen na On',
-    14 => 'PDF ki ste ga zahtevali ali ne obstaja ali pa ste nepravilno dostopali do datoteke.'
+    12 => 'Izdelaj PDF!',
+    13 => 'PHP konfiguracija na tem streniku ne dovoli odpiranja URL-jev z ukazom fopen(). Skrbnik strani mora popraviti datoteko php.ini, tako da v njej prestavi allow_url_fopen na On.',
+    14 => 'Zahtevani PDF ne obstaja ali pa si poskusil/a do datoteke dostopiti nedovoljeno.'
 );
 
 ###############################################################################
@@ -1388,7 +1365,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1399,7 +1377,7 @@
     'title_year' => 'Article Directory for %d',
     'title_month_year' => 'Article Directory for %s %d',
     'nav_top' => 'Back to Article Directory',
-    'no_articles' => 'No articles.'
+    'no_articles' => 'Ni lankov.'
 );
 
 ###############################################################################
@@ -1413,18 +1391,49 @@
 # %s    scale, "hrs", "weeks"
 
 $LANG_WHATSNEW = array(
-    'new_string' => '%n new %i in the last %t %s',
-    'new_last' => 'last %t %s',
-    'minutes' => 'minutes',
-    'hours' => 'hours',
-    'days' => 'days',
-    'weeks' => 'weeks',
-    'months' => 'months',
-    'minute' => 'minute',
-    'hour' => 'hour',
-    'day' => 'day',
-    'week' => 'week',
-    'month' => 'month'
+    'new_string' => '%n novi %i v zadnjih %t %s',
+    'new_last' => 'zadnja %t %s',
+    'minutes' => 'minut',
+    'hours' => 'urah',
+    'days' => 'dni',
+    'weeks' => 'tedna',
+    'months' => 'mesecev',
+    'minute' => 'minuta',
+    'hour' => 'ura',
+    'day' => 'dan',
+    'week' => 'teden',
+    'month' => 'mesec'
+);
+
+###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'januar',
+    2 => 'februar',
+    3 => 'marec',
+    4 => 'april',
+    5 => 'maj',
+    6 => 'junij',
+    7 => 'julij',
+    8 => 'avgust',
+    9 => 'september',
+    10 => 'oktober',
+    11 => 'november',
+    12 => 'december'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'nedelja',
+    2 => 'ponedeljek',
+    3 => 'torek',
+    4 => 'sreda',
+    5 => 'etrtek',
+    6 => 'petek',
+    7 => 'sobota'
 );
 
 ###############################################################################
@@ -1434,23 +1443,28 @@
 # display administration lists and edit pages
 
 $LANG_ADMIN = array(
-    'search' => 'Search',
-    'limit_results' => 'Limit Results',
-    'submit' => 'Submit',
-    'edit' => 'Edit',
-    'admin_home' => 'Admin Home',
-    'create_new' => 'Create New',
-    'enabled' => 'Enabled',
-    'title' => 'Title',
-    'type' => 'Type',
-    'topic' => 'Topic',
-    'help_url' => 'Help File URL',
-    'save' => 'Save',
-    'cancel' => 'Cancel',
-    'delete' => 'Delete',
-    'copy' => 'Copy',
-    'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'search' => 'Ii',
+    'limit_results' => 'Omeji rezultate',
+    'submit' => 'Oddaj',
+    'edit' => 'Uredi',
+    'edit_adv' => 'Napr. urejanje',
+    'admin_home' => 'Skrbnikova stran',
+    'create_new' => 'Ustvari',
+    'create_new_adv' => 'Ustvari (napredno)',
+    'enabled' => 'Omogoeno',
+    'title' => 'Naslov',
+    'type' => 'Tip',
+    'topic' => 'Rubrika',
+    'help_url' => 'URL dokumenta za pomo',
+    'save' => 'Shrani',
+    'cancel' => 'Preklii',
+    'delete' => 'Izbrii',
+    'delete_sel' => 'Izbrii izbrano',
+    'copy' => 'Kopiraj',
+    'no_results' => '- Ni najdenih vnosov -',
+    'data_error' => 'Pri obdelavi naronikih podatkov je prilo do napake. Prosim preveri podatke.',
+    'preview' => 'Predogled',
+    'records_found' => 'Najdeni zapisi'
 );
 
 ###############################################################################
@@ -1459,56 +1473,56 @@
 # database.
 
 $LANG_commentcodes = array(
-    0 => 'Comments Enabled',
-    -1 => 'Comments Disabled'
+    0 => 'Komentarji omogoeni',
+    -1 => 'Komentarji onemogoeni'
 );
 
 
 $LANG_commentmodes = array(
-    'flat' => 'Flat',
-    'nested' => 'Nested',
-    'threaded' => 'Threaded',
-    'nocomment' => 'No Comments'
+    'flat' => 'Plosko',
+    'nested' => 'Gnezdeno',
+    'threaded' => 'Nitno',
+    'nocomment' => 'Brez komentarjev'
 );
 
 $LANG_cookiecodes = array(
     0 => '(don\'t)',
-    3600 => '1 Hour',
-    7200 => '2 Hours',
-    10800 => '3 Hours',
-    28800 => '8 Hours',
-    86400 => '1 Day',
-    604800 => '1 Week',
-    2678400 => '1 Month'
+    3600 => '1 ura',
+    7200 => '2 uri',
+    10800 => '3 ure',
+    28800 => '8 ur',
+    86400 => '1 dan',
+    604800 => '1 teden',
+    2678400 => '1 mesec'
 );
 
 $LANG_dateformats = array(
-    0 => 'System Default'
+    0 => 'Sistemsko privzeto'
 );
 
 $LANG_featurecodes = array(
-    0 => 'Not Featured',
-    1 => 'Featured'
+    0 => 'Ni udarni lanek',
+    1 => 'Udarni lanek'
 );
 
 $LANG_frontpagecodes = array(
-    0 => 'Show Only in Topic',
-    1 => 'Show on Front Page'
+    0 => 'Pokai le v rubriki',
+    1 => 'Pokai na prvi strani'
 );
 
 $LANG_postmodes = array(
-    'plaintext' => 'Plain Old Text',
-    'html' => 'HTML Formatted'
+    'plaintext' => 'Samo besedilo',
+    'html' => 'Oblikovano v HTML'
 );
 
 $LANG_sortcodes = array(
-    'ASC' => 'Oldest First',
-    'DESC' => 'Newest First'
+    'ASC' => 'Najprej najstareji',
+    'DESC' => 'Najprej najnoveji'
 );
 
 $LANG_trackbackcodes = array(
-    0 => 'Trackback Enabled',
-    -1 => 'Trackback Disabled'
+    0 => 'Trackback omogoen',
+    -1 => 'Trackback onemogoen'
 );
 
 ?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/slovenian_utf-8.php 1.4.1.src/cpanel-glprivate/language/slovenian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/slovenian_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/slovenian_utf-8.php	2006-10-15 02:47:47.000000000 -0500
@@ -2,15 +2,12 @@
 
 ###############################################################################
 # slovenian.php
-# language file for geeklog version 1.3.10
+# language file for geeklog version 1.4.1 beta by mb
+# gape@gape.org ; za pripombe, predloge ipd ... piši na email
 #
 # This is the slovenian language page for GeekLog!
 # Special thanks to Mischa Polivanov for his work on this project
 #
-# Prevedel gape@gape.org ; za pripombe, predloge ipd ... piši na email
-# med plug-ini še nekaj manjka ... ker ne razumem scene
-# 
-#
 # Copyright (C) 2000 Jason Whittenburg
 # jwhitten@securitygeeks.com
 #
@@ -59,7 +56,7 @@
     10 => 'Čakajoča vsebina',
     11 => 'Članki',
     12 => 'Bloki',
-    13 => 'Teme',
+    13 => 'Rubrike',
     14 => 'Povezave',
     15 => 'Dogodki',
     16 => 'Ankete',
@@ -71,7 +68,7 @@
     22 => 'Uporabniški ID',
     23 => 'Varnostni nivo',
     24 => 'Anonimni uporabnik',
-    25 => 'Odgovori',
+    25 => 'Komentiraj',
     26 => 'Za komentarje so odgovorni njihovi avtorji. Avtorji spletne strani na komentarje obiskovalcev nimamo nobenega vpliva.',
     27 => 'Zadnjikrat komentirano',
     28 => 'Izbriši',
@@ -86,10 +83,10 @@
     37 => 'Ni člankov',
     38 => 'Združevanje vsebine (Syndication)',
     39 => 'Osveži',
-    40 => 'Izključene so <tt>register_globals = Off</tt> v <tt>php.ini</tt>. Geeklog zahteva <tt>register_globals</tt> <strong>vključene</strong>. Preden nadaljuješ, jih prosim <strong>vključi</strong> in ponovno zaženi web server.',
+    40 => 'Izključene so <tt>register_globals = Off</tt> v <tt>php.ini</tt>. Geeklog zahteva <tt>register_globals</tt> <strong>vključene</strong>. Preden nadaljuješ, jih prosim <strong>vključi</strong> in ponovno zaženi spletni strežnik.',
     41 => 'Gostje',
     42 => 'Prispeval/a:',
-    43 => 'Odgovori na To',
+    43 => 'Odgovori na to',
     44 => 'Starš',
     45 => 'MySQL številka napake',
     46 => 'MySQL sporočilo o napaki',
@@ -97,21 +94,21 @@
     48 => 'Podatki o uporabniškem računu',
     49 => 'Nastavitve',
     50 => 'Napaka v SQL ukazu',
-    51 => 'pomoč',
+    51 => 'Pomoč',
     52 => 'Novo',
-    53 => 'Administratorske strani',
+    53 => 'Skrbnikova stran',
     54 => 'Ne morem odpreti datoteke',
     55 => 'Napaka na',
     56 => 'Glasuj',
     57 => 'Geslo',
     58 => 'Prijava',
-    59 => "Niste registriran uporabnik?  <a href=\"{$_CONF['site_url']}/users.php?mode=new\">Registrirajte se</a>.",
+    59 => "Nisi registriran uporabnik?  <a href=\"{$_CONF['site_url']}/users.php?mode=new\">Registrirajte se</a>.",
     60 => 'Dodaj komentar',
     61 => 'Nov uporabnik',
     62 => 'besed',
     63 => 'Nastavitve komentarjev',
     64 => 'Pošlji članek prijatelju po e-pošti',
-    65 => 'Stran prijazna za tisk',
+    65 => 'Za tisk prijazna stran',
     66 => 'Osebni koledar',
     67 => 'Dobrodošli na ',
     68 => 'Domov',
@@ -126,8 +123,8 @@
     77 => 'Priključeni moduli',
     78 => 'Dogodki',
     79 => 'Kaj je novega',
-    80 => 'Člankov v zadnjih',
-    81 => 'Članek v zadnjih ',
+    80 => 'člankov v zadnjih',
+    81 => 'članek v zadnjih',
     82 => 'urah',
     83 => 'KOMENTARJI BRALCEV<br>',
     84 => 'POVEZAVE<br>',
@@ -137,7 +134,7 @@
     88 => 'ni novih povezav',
     89 => 'Trenutno ni nobenih prihajajočih dogodkov.',
     90 => 'Na osnovno stran',
-    91 => 'Spletna stran zgenerirana v',
+    91 => 'Spletna stran generirana v',
     92 => 'sekundah',
     93 => 'Copyright',
     94 => 'Vsa naša koda pripada vam.',
@@ -149,48 +146,30 @@
     100 => 'Ni novih člankov',
     101 => 'Vaši dogodki',
     102 => 'Najavljeno je:',
-    103 => 'DB Bekapi',
+    103 => 'Varnostne kopije DB',
     104 => 'z',
-    105 => 'Email uporabniki',
+    105 => 'Pošiljanje e-pošte',
     106 => 'Ogledov',
     107 => 'GL Test verzije',
     108 => 'Izprazni cache',
     109 => 'Prijavi zlorabo',
-    110 => 'Prijavi ta prispevek upravniku strani',
-    111 => 'PDF verzija',
+    110 => 'Prijavi ta prispevek skrbniku strani',
+    111 => 'Različica PDF',
     112 => 'Prijavljeni uporabniki',
     113 => 'Dokumentacija',
     114 => 'TRACKBACKS',
-    115 => 'No new trackback comments',
+    115 => 'Ni novih trackback komentarjev',
     116 => 'Trackback',
     117 => 'Directory',
-    118 => 'Please continue reading on the next page:',
-    119 => "Lost your <a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">password</a>?",
-    120 => 'Permanent link to this comment',
-    121 => 'Comments (%d)',
+    118 => 'Beri dalje na naslednji strani:',
+    119 => "Si izgubil svoje <a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">geslo</a>?",
+    120 => 'Trajna povezava na ta komentar',
+    121 => 'Komentarji (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Koledar dogodkov',
-    2 => 'Trenutno ni v koledar vpisanega nobenega dogodka.',
-    3 => 'Kdaj',
-    4 => 'Kje',
-    5 => 'Opis',
-    6 => 'Dodaj dogodek',
-    7 => 'Prihajajoči dogodki',
-    8 => 'Ko boste dodali nov dogodek v vaš osebni koledar, lahko te dogodke pregledate s klikom na "Osebni koledar" v meniju "Osebne nastavitve".',
-    9 => 'Dodaj v Osebni koledar',
-    10 => 'Odstrani iz Osebnega koledarja',
-    11 => "Dodajanje dogodka v Osebni koledar uporabnika {$_USER['username']}",
-    12 => 'Dogodek',
-    13 => 'Začetek dogodka',
-    14 => 'Konec dogodka',
-    15 => 'nazaj na koledar'
+    123 => 'Dovoljen je ves HTML',
+    124 => 'Klikni za izbris vseh preverjenih predmetov',
+    125 => 'Hočeš res izbrisati vse preverjene predmete?',
+    126 => 'Izberi ali prekliči vse predmete'
 );
 
 ###############################################################################
@@ -202,27 +181,27 @@
     3 => 'Odjava',
     4 => 'Registrirajte se',
     5 => 'Uporabniško ime',
-    6 => 'Če želite posredovati komentar se morate registrirati. Če še nimate svojega uporabniškega imena in gesla, kliknite spodaj.',
-    7 => 'Vaš zadnji komentar je bil pred',
-    8 => " sekundami.  Med posameznimi komentarji bralca mora preteči vsaj {$_CONF['commentspeedlimit']} sekund",
+	6 => 'Za objavo komentarjev na tej spletni strani je treba biti registriran. Če še nimaš svojega uporabniškega imena in gesla, klikni spodaj.',
+    7 => 'Tvoj zadnji komentar je bil objavljen pred ',
+    8 => " sekundami.  Med posameznimi komentarji istega uporabnika mora preteči vsaj {$_CONF['commentspeedlimit']} sekund.",
     9 => 'Komentar',
     10 => 'Pošlji prijavo',
-    11 => 'Pošlji komentar',
-    12 => 'Če želite posredovati komentar, vpišite vaše ime, e-mail naslov, naslov komentarja in vsebino komentarja.',
-    13 => 'Vaše informacije',
+    11 => 'Oddaj komentar',
+	12 => 'Za objavo komentarja izpolni polji Naslov in Komentar,  ker je to za  oddajo vsebine nujno.',
+    13 => 'Tvoji podatki',
     14 => 'Predogled',
-    15 => 'Report this post',
+    15 => 'Prijavite ta komentar',
     16 => 'Naslov',
     17 => 'Napaka',
     18 => 'Pomembno',
-    19 => 'Prosimo da se skušate držati teme objavljenega članka.',
-    20 => 'Zaželeno je argumentiranje vaših trditev.',
-    21 => 'Preberite komentarje ostalih - morda je kdo že napisal kaj kar nameravate napisati tudi vi.',
-    22 => 'Pazite na pravilno slovnico in se izogibajte žalitvam drugih.',
-    23 => 'Vaš e-mail naslov ne bo javno objavljen.',
+    19 => 'Skušaj se prosim držati teme rubrike, v kateri je objavljen članek.',
+    20 => 'Raje odgovarjaj na komentarje drugih, namesto da začneš novo nit (thread).',
+    21 => 'Pred objavo svojega komentarja preberi druge, da ne bo ponavljanja. Morda je kdo že povedal kaj, kar nameravaš napisati.',
+    22 => 'Uporabi tak naslov, da bo jasno, o čem govori tvoj komentar.',
+    23 => 'Tvoj e-naslov ne bo javno objavljen.',
     24 => 'Anonimni uporabnik',
-    25 => 'Ste prepričani da hočete prijaviti ta orispevek upravniku strani?',
-    26 => '%s je prijavil naslednji prispevek ki zlorablja:',
+    25 => 'Hočeš ta prispevek res prijaviti skrbniku strani?',
+    26 => '%s je prijavil sledeči prispevek, ki zlorablja:',
     27 => 'Prijava zlorabe'
 );
 
@@ -237,177 +216,210 @@
     5 => 'Elektronski naslov',
     6 => 'Spletna stran',
     7 => 'Opis',
-    8 => 'PGP javni ključ',
+    8 => 'Javni ključ PGP',
     9 => 'Shrani podatke',
     10 => 'Zadnjih 10 komentarjev uporabnika',
     11 => 'Uporabnik ni prispeval nobenih komentarjev',
     12 => 'Uporabniške nastavitve za',
-    13 => 'Pošlji nočno poročilo (Nightly Digest)',
-    14 => 'Geslo se generira naključno. Priporočamo vam, da geslo takoj spremenite. To storite s klikom na Informacije o računu v  meniju Osebne nastavitve. Za spremembe osebnih nastavitev se morate prijaviti v sistem.',
-    15 => 'Vaš uporabniški račun na spletni strani je bil uspešno vzpostavljen. Če ga želite uporabljati, se morate prijaviti s spodnjimi podatki. Svetujemo vam da podatke o vašem uporabniškem računu shranite.',
-    16 => 'Informacije o vašem uporabniškem računu',
+    13 => 'Pošlji nočni pegled',
+    14 => 'Geslo se generira naključno. Priporočljivo je, da geslo takoj spremenite. To storite s klikom na Informacije o računu v  meniju Osebne nastavitve. Za spremembe osebnih nastavitev se je treba prijaviti v sistem.',
+    15 => 'Tvoj uporabniški račun na tej spletni strani je bil uspešno ustvarjen. Če ga hočeš uporabljati, se moraš prijaviti s spodnjimi podatki. Prosim shrani to e-pošto za  potrebe v prihodnje.',
+    16 => 'Podatki o tvojem uporabniškem računu',
     17 => 'Uporabniški račun ne obstaja',
-    18 => 'Vnešeni e-mail naslov ni veljaven',
-    19 => 'Vnešeno uporabniško ime ali e-mail naslov sta že uporabljena na tem sistemu',
-    20 => 'Vnešeni e-mail naslov ni veljaven',
+    18 => 'Vneseni e-naslov ni veljaven',
+    19 => 'Vneseno uporabniško ime ali e-naslov že obstaja',
+    20 => 'Vneseni e-naslov ni veljaven',
     21 => 'Napaka',
     22 => "Registracija {$_CONF['site_name']}!",
-    23 => "Registracija vam omogoča članstvo na naši spletni strani{$_CONF['site_name']}. To pomeni da boste lahko objavljali komentarje, pošiljali svoje članke, dostopali in dodajali zapiske in bili deležni vseh pomembnih informacij. Če se ne registrirate, boste na spletni strani lahko sodelovali le kot anonimni uporabnik. <font color=red>Elektronski naslovi registriranih uporabnikov <b><i>ne bodo javno objavljeni</i></b>.",
-    24 => 'Geslo vam bomo poslali na e-mail naslov, ki ste ga vnesli.',
-    25 => 'Ste pozabili geslo?',
-    26 => 'Vnesite <em>uporabniško ime</em> <em>ali</em> email naslov s katerim ste se registrirali in kliknite spodnji gumb (Pošlji geslo po emailu). Navodila kako nastaviti novo geslo vam bomo sporočili na registrirani e-mail naslov.',
-    27 => 'Registrirajte se!',
-    28 => 'Pošlji geslo na e-mail naslov',
+    23 => "Ustvarjenje uporabniškega računa omogoča uporabo vseh ugodnosti na spletni strani {$_CONF['site_name']}. Lahko boš v svojem imenu objavljal komentarje ter oddajal članke in slike.  Brez uporabniškega računa lahko objavljaš le anonimno. <font color=red>Elektronski naslovi registriranih uporabnikov na tej spletni strani ne bodo <b><i>nikoli</i></b> javno prikazani.",
+    24 => 'Tvoje geslo bo poslano na vneseni e-naslov.',
+    25 => 'Si pozabil/a geslo?',
+    26 => 'Vnesi <em>uporabniško ime</em> <em>ali</em> e-naslov, s katerim si se registriral/a, in klikni gumb Pošlji geslo po e-pošti. Navodila za nastavitev novega gesla bodo poslana na registrirani e-naslov.',
+    27 => 'Registriraj se',
+    28 => 'Pošlji geslo na e-naslov',
     29 => 'odjava',
     30 => 'prijava',
-    31 => 'Za izvedbo te funkcije se morate prijaviti',
+    31 => 'Za izvedbo te funkcije se je treba prijaviti',
     32 => 'Podpis',
-    33 => 'Se nikoli javno ne prikaže',
-    34 => 'Vaše pravo ime',
+    33 => 'Nikoli se ne prikaže javno',
+    34 => 'Tvoje pravo ime',
     35 => 'Vpiši spremenjeno geslo',
-    36 => 'Začneš z http://',
+    36 => 'Začne se s http://',
     37 => 'Nastavitve komentarjev',
     38 => 'To lahko prebere vsakdo',
-    39 => 'PGP javni klju?',
-    40 => 'Brez ikone teme',
+    39 => 'Javni ključ PGP',
+    40 => 'Brez ikone rubrike',
     41 => 'Pripravljen moderirati',
-    42 => 'Format datuma',
+    42 => 'Oblika zapisa datuma',
     43 => 'Največ člankov',
     44 => 'Brez okvirjev',
     45 => 'Prikaži nastavitve za',
     46 => 'Izključeni deli',
     47 => 'Nastavitve novosti za',
-    48 => 'Teme',
+    48 => 'Rubrike',
     49 => 'Brez ikon v člankih',
-    50 => 'Če vas ne zanima, odznačite',
+    50 => 'Če te ne zanima, odstrani oznako',
     51 => 'Samo novi članki',
     52 => 'Privzeta nastavitev je 10',
     53 => 'Prejmi nove članke vsako noč',
-    54 => 'Označi teme in avtorje, katerih prispevki vas ne zanimajo',
-    55 => 'Če pustite prazno, se bodo ohranile privzete nastavitve. Če začnete izbirati bloke, se bodo prikazali samo tisti, ki ste jih izbrali (brez privzetih). Privzete nastavitve so <B> povdarjene</B>.',
+    54 => 'Označi rubrike in avtorje, katerih prispevki te ne zanimajo',
+    55 => 'Če pustiš prazno, se bodo ohranile privzete nastavitve. Če začneš izbirati bloke, izberi vse, ki jih želiš, ker se bodo prikazali samo izbrani (brez privzetih). Privzeti vnosi so prikazani <B> krepko</B>.',
     56 => 'Avtorji',
-    57 => 'Način prikaza',
+    57 => 'Oblikovanje',
     58 => 'Uredi po',
     59 => 'Omejitve komentarja',
-    60 => 'Kakšen način izpisa želite za svoje komentarje',
-    61 => 'Najprej novi ali stari?',
+    60 => 'Kako naj bodo izpisani tvoji komentarji?',
+    61 => 'Najprej najnovejši ali najstarejši?',
     62 => 'Prevzeta vrednost je 100',
-    63 => "Geslo je bilo poslano na vaš e-mail naslov. Sledite navodilom, ki jih boste dobili. Hvala ker uporabljate spletno stran {$_CONF['site_name']}",
+    63 => "Geslo je bilo poslano na tvoj e-naslov in bi moralo prispeti vsak hip. Sledi prosim navodilom, ki jih boš prejel/a. Hvala, da uporabljaš spletno stran {$_CONF['site_name']}.",
     64 => 'Nastavitve komentarjev za',
-    65 => 'Poizkusite se ponovno prijaviti',
-    66 => "Morda ste se zmotili pri vnosu svojega uporabniškega imena ali gesla? Poizkusite se ponovno prijaviti. Ste morda še neregistriran uporabnik - v tem primeru se <a href=\"{$_CONF['site_url']}/users.php?mode=new\">registrirajte</a>.",
+    65 => 'Poskusi se prijaviti ponovno',
+    66 => "Morda si se zmotil/a pri vnosu svojega uporabniškega imena ali gesla. Poskusi se ponovno prijaviti. Si morda še neregistriran uporabnik? V tem primeru se <a href=\"{$_CONF['site_url']}/users.php?mode=new\">registriraj</a>.",
     67 => 'Uporabnik od',
-    68 => 'Zapomni se me za',
-    69 => 'Kako dolgo naj si te zapomnim po zadnji prijavi?',
-    70 => "Priredi izgled spletne strani {$_CONF['site_name']}",
-    71 => "Ena od posebnosti spletne strani{$_CONF['site_name']} je popolna možnost prilagajanja izgleda posameznemu uporabniku.  Če želite uporabiti to možnost se morate najprej <a href=\"{$_CONF['site_url']}/users.php?mode=new\">prijaviti</a> na {$_CONF['site_name']}.  Ali ste že postali registrirani uporabnik?  Prijavite se!",
+    68 => 'Zapomni si me za',
+    69 => 'Koliko časa po zadnji prijavi naj si te zapomnim?',
+    70 => "Priredi postavitev in vsebino spletne strani {$_CONF['site_name']}",
+    71 => "Ena od posebnosti spletne strani {$_CONF['site_name']} je možnost popolnega prilagajanja izgleda posameznemu uporabniku.  Če hočeš uporabiti to možnost, se moraš najprej <a href=\"{$_CONF['site_url']}/users.php?mode=new\">prijaviti</a> na {$_CONF['site_name']}. Si že postal/a registrirani uporabnik? Prijavi se!",
     72 => 'Tema',
     73 => 'Jezik',
-    74 => 'Spremeni izgled strani!',
-    75 => 'Teme po e-mailu',
-    76 => 'Nove članke iz izbranih področij boste ob koncu vsakega dneva prejeli po e-mailu. Izberite teme, ki vas zanimajo!',
+    74 => 'Spremeni izgled strani.',
+    75 => 'Rubrike po e-pošti za',
+    76 => 'Če  na spodnjem seznamu izbereš rubriko, boš nove članke, objavljene v njej, ob koncu vsakega dneva prejel/a po e-pošti. Izberi le rubrike, ki te zanimajo.',
     77 => 'Slika',
-    78 => 'Dodaj svojo sliko!',
+    78 => 'Dodaj svojo sliko.',
     79 => 'Izbriši izbrano sliko',
-    80 => 'Vpis',
-    81 => 'Pošlji Email',
+    80 => 'Prijava',
+    81 => 'Pošlji e-pošto',
     82 => 'Zadnjih 10 člankov uporabnika',
-    83 => 'Statistika objavljanja uporabnika',
+    83 => 'Statistika uporabnikovih objav',
     84 => 'Skupno število člankov:',
     85 => 'Skupno število komentarjev:',
     86 => 'Najdi vse objave uporabnika',
-    87 => 'Vaše uporabniško ime',
-    88 => "Nekdo (verjetno ti) je zahteval novo geslo za tvoj račun  \"%s\" na {$_CONF['site_name']}, <{$_CONF['site_url']}>.\n\nČe res želiš novo geslo, prosim klikni povezavo :\n\n",
-    89 => "Če nočeš novega gesla, preprosto ignoriraj to sporočilo in zahtevo bomo zavrgli (tvoje geslo bo ostalo nespremenjeno).\n\n",
-    90 => 'Spodaj lahko vpišeš novo geslo za svoj račun. Prosim, vedi, da je staro geslo še vedno veljavno, dokler ne  odpošlješ tega obrazca.',
+    87 => 'Tvoje uporabniško ime',
+    88 => "Nekdo (verjetno ti) je zahteval novo geslo za tvoj račun  \"%s\" na {$_CONF['site_name']}, <{$_CONF['site_url']}>.\n\nČe res hočeš novo geslo, prosim klikni povezavo: \n\n",
+    89 => "Če nočeš novega gesla, to sporočilo preprosto prezri. Zahteva bo zavržena in tvoje geslo bo ostalo nespremenjeno.\n\n",
+    90 => 'Spodaj lahko vpišeš novo geslo za svoj račun. Staro geslo bo veljalo, dokler ne oddaš tega obrazca.',
     91 => 'Nastavljanje novega gesla',
     92 => 'Vpiši novo geslo',
-    93 => 'Tvoja zadnja zahteva za novo geslo je bila sprejeta pred %d sekundami. Te strani zahtevajo vsaj %d sekund med spremembami gesla.',
+    93 => 'Tvoja zadnja zahteva za novo geslo je bila sprejeta pred %d sekundami. Ta stran zahteva, da med spremembami gesla preteč vsaj %d sekund.',
     94 => 'Izbriši račun "%s"',
-    95 => 'Klikni gumb "Izbriši račun" spodaj za izbris svojega uporabniškega računa iz naše baze podatkov. Vedi, da bodo vsi prispevki, ki si jih prispeval/a pod tem računom <strong>ostali</strong> na naših straneh. Uporabnik, ki jih je prispeval pa bo postal anonimnež.',
+    95 => 'Za izbris svojega uporabniškega računa iz naše baze podatkov klikni spodnji gumb "Izbriši račun". Vsi prispevki, ki si jih prispeval/a pod tem računom, bodo <strong>ostali</strong> na naših straneh, ime objavitelja pa bo spremenjeno v "Anonimnež".',
     96 => 'Izbriši račun',
     97 => 'Potrdi brisanje računa',
-    98 => 'Si prepričan da želiš pobrisati svoj uporabniški račun. Po tem prijava na naše strani ne bo več mogoča (razen, če si ustvariš nov račun). Če si prepričan/a ponovno klikni "Izbriši račun" v spodnjem obrazcu.',
+    98 => 'Hočeš res izbrisati svoj uporabniški račun? Po tem dejanju prijava na našo spletno stran ne bo več mogoča, razen če si ustvariš nov račun. Če si prepričan/a o izbrisu, ponovno klikni "Izbriši račun" v spodnjem obrazcu.',
     99 => 'Nastavitve zasebnosti za',
-    100 => 'Adminov email',
-    101 => 'Dovoli emaile od upravljalcev strani',
-    102 => 'Email od uporabnikov',
-    103 => 'Dovoli emaile od drugih uporabnikov strani',
-    104 => 'Prikaži Online Status',
+    100 => 'Skrbnikov e-naslov',
+    101 => 'Dovoli e-pošto skrbnikov strani',
+    102 => 'E-pošta uporabnikov',
+    103 => 'Dovoli e-pošto drugih uporabnikov strani',
+    104 => 'Prikaži status Na liniji',
     105 => 'Dovoli prikaz v bloku Na liniji so',
-    106 => 'Lokacija',
-    107 => 'Prikazano v vašem javnem profilu',
-    108 => 'Confirm new password',
-    109 => 'Enter the New password again here',
-    110 => 'Current Password',
-    111 => 'Please enter your Current password',
-    112 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
-    113 => 'Login Attempt Failed',
-    114 => 'Account Disabled',
-    115 => 'Your account has been disabled, you may not login. Please contact an Administrator.',
-    116 => 'Account Awaiting Activation',
-    117 => 'Your account is currently awaiting activation by an administrator. You will not be able to login until your account has been approved.',
-    118 => "Your {$_CONF['site_name']} account has now been activated by an administrator. You may now login to the site at the url below using your username (<username>) and password as previously emailed to you.",
-    119 => 'If you have forgotten your password, you may request a new one at this url:',
-    120 => 'Account Activated',
-    121 => 'Service',
-    122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    106 => 'Mesto',
+    107 => 'Prikazano v tvojem javnem profilu',
+    108 => 'Potrdi novo geslo',
+    109 => 'Ponovno vnesi novo geslo',
+    110 => 'Trenutno veljavno geslo',
+    111 => 'Ponovno vnesi trenutno veljavno geslo',
+    112 => 'Število dovoljenih poskusov prijave je bilo preseženo.  Prosim poskusi ponovno pozneje.',
+    113 => 'Poskus prijave je spodletel',
+    114 => 'Račun je onemogočen',
+    115 => 'Tvoj račun je bil onemogočen, ne moreš se prijaviti. Prosim sporoči to skrbniku.',
+    116 => 'Račun čaka na potrditev',
+    117 => 'Tvoj račun trenutno čaka na potrditev skrbnika. Dokler račun ni potrjen, se ne moreš prijaviti.',
+    118 => "Tvoj račun na strani {$_CONF['site_name']} je sedaj potrdil skrbnik. Sedaj se lahko na spletno stran prijaviš na spodnji povezavi s svojim uporabniškim imenom (<username>) in geslom, ki si ju prejel po e-pošti.",
+    119 => 'Če si pozabil/a svoje geslo, lahko zahtevaš novega na tej povezavi:',
+    120 => 'Račun potrjen',
+    121 => 'Storitev',
+    122 => 'Žal je registracija novih uporabnikov onemogočena.',
+    123 => "Si <a href=\"{$_CONF['site_url']}/users.php?mode=new\">nov uporabnik</a>?",
+    124 => 'Potrdi e-naslov',
+    125 => 'V obe polji moraš vnesti isti e-naslov.',
+    126 => 'Ponovi za potrditev.',
+    127 => 'Za spremembo katere koli od teh nastavitev moraš vpisati svoje veljavno geslo.',
+    128 => 'Tvoje ime',
+    129 => 'Geslo &amp; e-naslov',
+    130 => 'O tebi',
+    131 => 'Možnost dnevnih pregledov',
+    132 => 'Funkcija dnevnih pregledov',
+    133 => 'Prikaz komentarjev',
+    134 => 'Možnosti komentarjev',
+    135 => '<li>Privzeti način za prikaz komentarjev</li><li>Privzeti vrstni red za prikaz komentarjev</li><li>Nastavi največje število prikazanih komentarjev - privzeto je 100</li>',
+    136 => 'Izloči rubrike in avtorje',
+    137 => 'Filtriraj vsebino članka',
+    138 => 'Druge nastavitve',
+    139 => 'Postavitev in jezik',
+    140 => '<li>Če je možnost Brez ikone rubrike potrjena, ikone rubrik ne bodo prikazane</li><li>Če je možnost Brez okenca potrjena, bodo prikazani le skrbnikov meni, uporabniški meni in teme<li>Nastavi največje število na eni strani prikazanih člankov</li><li>Nastavi svojo temo in želeni zapis datuma</li>',
+    141 => 'Zasebne nastavitve',
+    142 => 'Privzeta nastavitev uporabnikom in skrbnikom omogoča, da pošiljajo e-pošto drugim članom spletne strani in da je tvoje stanje prikazano kot Na liniji. Za zaščito zasebnosti te možnosti odznači. ',
+    143 => 'Filtriraj vsebino bloka',
+    144 => 'Prikaži in skrij okenca',
+    145 => 'Tvoj javni profil',
+    146 => 'Geslo in e-naslov',
+    147 => 'Uredi geslo svojega računa, e-naslov in funkcijo samodejne prijave. Za potrditev bo treba isto geslo ali e-naslov vnesti dvakrat.',
+    148 => 'Uporabniške informacije',
+    149 => 'Spremeni svoje uporabniške informacije, ki bodo vidne drugim uporabnikom.<li>Podpis bo dodan k vsem tvojim komentarjem in objavam na forumu</li><li>BIO je kratek povzetek o tebi, ki ga želiš deliti z drugimi</li><li>Deli z drugimi svoj ključ PGP</li>',
+    150 => 'Opozorilo: Javascript priporočen za razširjeno funkcionalnost',
+    151 => 'Predogled',
+    152 => 'Uporabniško ime in geslo',
+    153 => 'Postavitev in jezik',
+    154 => 'Vsebina',
+    155 => 'Zasebnost',
+    156 => 'Izbriši račun'
 );
 
 ###############################################################################
 # index.php
 
 $LANG05 = array(
-    1 => 'Področje je trenutno prazno',
-    2 => 'Trenutno v tem tematskem področju ni nobenega članka, ali pa so vaše uporabniške nastavitve takšne da nimate dostopa do tega področja',
-    3 => '.',
+    1 => 'Ni novic za prikaz',
+    2 => 'Trenutno v tej rubriki ni nobene nove objave ali pa imaš v svojih uporabniških nastavitvah izbrane omejitve.',
+    3 => ' za rubriko %s',
     4 => 'Današnji udarni članek',
-    5 => 'naslednja stran',
-    6 => 'prejšnja stran',
-    7 => 'Prva',
-    8 => 'Zadnja'
+    5 => 'naslednja',
+    6 => 'prejšnja',
+    7 => 'prva',
+    8 => 'zadnja'
 );
 
 ###############################################################################
 # profiles.php
 
 $LANG08 = array(
-    1 => 'Napaka!!! Poskusite znova.',
-    2 => 'Sporočilo je bilo poslano',
-    3 => 'Uporabite pravi e-mail naslov!',
-    4 => 'Izpolnite polja: Ime, e-mail za odgovor, Zadeva in vpišite sporočilo',
-    5 => 'Napaka. Neznan uporabnik!',
-    6 => 'Upsss... Napaka ;-).',
-    7 => 'Uporabnik',
+    1 => 'Napaka pri pošiljanju sporočila. Poskusi znova.',
+    2 => 'Sporočilo je bilo uspešno poslano',
+    3 => 'Prepričaj se, da je v polje Odgovori vnesen pravi e-naslov.',
+    4 => 'Izpolni polja Tvoje ime, Odgovori, Zadeva in Sporočilo',
+    5 => 'Napaka: Neznan uporabnik.',
+    6 => 'Prišlo je do napake.',
+    7 => 'Uporabniški profil za',
     8 => 'Uporabniško ime',
-    9 => 'URL naslov',
-    10 => 'e-mail naslov',
-    11 => 'Ime:',
-    12 => 'e-mail za odgovor:',
+    9 => 'Naslov URL',
+    10 => 'Pošlji e-pošto k',
+    11 => 'Tvoje ime:',
+    12 => 'Odgovori:',
     13 => 'Zadeva:',
     14 => 'Sporočilo:',
     15 => 'HTML ukazi ne bodo upoštevani.',
     16 => 'Pošlji sporočilo',
-    17 => 'Pošlji članek prijatelju po e-mailu',
+    17 => 'Pošlji članek prijatelju',
     18 => 'Ime prijatelja',
-    19 => 'Elektronski naslov prijatelja',
-    20 => 'Vaše ime',
-    21 => 'Vaš e-mail naslov',
-    22 => 'Izpolniti je potrebno vsa polja!',
-    23 => "To sporočilo vam je poslal naš obiskovalec %s (%s). Upravitelji spletne strani {$_CONF['site_url']} od koder je bilo sporočilo poslano, vaših podatkov nismo shranili v nobeno bazo podatkov.",
-    24 => 'Članek se nahaja na spletnem naslovu: ',
-    25 => 'Če želite poslati članek po e-pošti, se morate predhodno registrirati. Registracija je potrebna da preprečimo morebitne zlorabe sistema.',
-    26 => 'S pomočjo tega obrazca boste poslali e-mail izbranemu uporabniku. Izpolniti je potrebno vsa polja!',
-    27 => 'Kratko spremno sporočilo',
-    28 => 'Obiskovalec %s je napisal sledeče spremno sporočilo: ',
-    29 => "Dnevni pregled strani {$_CONF['site_name']} za ",
+    19 => 'E-naslov prijatelja',
+    20 => 'Tvoje ime',
+    21 => 'Tvoj e-naslov',
+    22 => 'Izpolniti je treba vsa polja',
+    23 => "To ni neželena pošta (SPAM). Sporočilo vam je poslal obiskovalec %s (%s) s spletne strani {$_CONF['site_url']}, ker je menil, da vas to utegne zanimati.  Vaših podatkov nismo nikamor shranili.",
+    24 => 'Članek lahko komentirate tukaj:',
+    25 => 'Za uporabo te funkcije se je treba prijaviti. Prijava nam pomaga preprečevati morebitne zlorabe sistema.',
+    26 => 'S tem obrazcem lahko izbranemu uporabniku pošlješ e-pošto. Izpolniti je treba vsa polja.',
+    27 => 'Kratko sporočilo',
+    28 => 'Obiskovalec %s je napisal: ',
+    29 => "To je dnevni pregled strani od {$_CONF['site_name']} za ",
     30 => 'Dnevne novice za',
     31 => 'Naslov',
     32 => 'Datum',
-    33 => 'Celotno besedilo:',
+    33 => 'Preberi celotno besedilo na povezavi ',
     34 => 'Konec sporočila',
-    35 => 'Žal, ta uporabnik ne želi prejemati emailov.'
+    35 => 'Žal ta uporabnik ne želi prejemati e-pošte.'
 );
 
 ###############################################################################
@@ -416,46 +428,46 @@
 $LANG09 = array(
     1 => 'Napredno iskanje',
     2 => 'Ključne besede',
-    3 => 'Tematsko področje',
-    4 => 'vse',
-    5 => 'Nasvet',
+    3 => 'Rubrika',
+    4 => 'Vse',
+    5 => 'Področja iskanja',
     6 => 'Članki',
-    7 => 'komentarji bralcev',
+    7 => 'Komentarji',
     8 => 'Avtorji',
-    9 => 'vse',
+    9 => 'Vse',
     10 => 'Išči',
     11 => 'Rezultati iskanja',
-    12 => 'zadetki',
-    13 => 'Iskanje med članki: nič zadetkov',
-    14 => 'Za iskalni pojem',
-    15 => 'ni nobenega zadetka. Prosimo poizkusite ponovno.',
+    12 => 'Zadetki',
+    13 => 'Rezultati iskanja: Ni zadetkov',
+    14 => 'Za iskano besed(il)o ni nobenega zadetka.',
+    15 => 'Prosim poskusite ponovno.',
     16 => 'Naslov',
-    17 => 'datum',
-    18 => 'avtor',
-    19 => 'Iskalnik celotne baze podatkov (vsi članki in vsi komentarji bralcev)',
+    17 => 'Datum',
+    18 => 'Avtor',
+    19 => 'Iskanje po celotni bazi podatkov vseh člankov in komentarjev',
     20 => 'Datum',
     21 => 'do',
-    22 => '(format datuma YYYY-MM-DD)',
-    23 => 'Št. zadetkov',
-    24 => 'Našel sem %d zadetkov',
+    22 => '(oblika zapisa datuma YYYY-MM-DD)',
+    23 => 'Število ogledov',
+    24 => 'Število najdenih predmetov: %d ',
     25 => 'Iskal sem',
     26 => 'zadetkov ',
-    27 => 'sekund.',
-    28 => 'Za vpisani iskalni pogoj ni bilo najdenega nobenega članka niti nobenega komentarja',
+    27 => 'sekund',
+    28 => 'Iskalnemu pogoju ne ustreza noben članek ali komentar',
     29 => 'Rezultati iskanja',
-    30 => 'Nobena povezava ne ustreza vašemu iskalnemu pogoju. Poizkusite znova!',
-    31 => 'Ni zadetkov za ta plug-in. Poizkusite znova!',
-    32 => 'Dogodek',
+    30 => '',
+    31 => 'Za ta vtičnik ni zadetkov .',
+    32 => '',
     33 => 'URL',
     34 => 'Lokacija',
     35 => 'Celodnevno dogajanje',
-    36 => 'Noben dogodek ne ustreza vašemu iskalnemu pogoju. Poizkusite znova!',
-    37 => 'Rezultati za dogodke',
-    38 => 'Rezultati za povezave',
-    39 => 'Povezave',
-    40 => 'Dogodki',
+    36 => '',
+    37 => '',
+    38 => '',
+    39 => '',
+    40 => '',
     41 => 'Iskalni niz mora imeti vsaj tri znake.',
-    42 => 'Datum naj bo formatiran na način: YYYY-MM-DD (leto-mesec-dan).',
+    42 => 'Datum naj bo prikazan na način: LLLL-MM-DD (leto-mesec-dan).',
     43 => 'točna fraza',
     44 => 'vse besede',
     45 => 'katerakoli beseda',
@@ -464,17 +476,17 @@
     48 => 'Avtor',
     49 => 'Datum',
     50 => 'Zadetki',
-    51 => 'Povezava',
+    51 => '',
     52 => 'Lokacija',
     53 => 'Rezultati člankov',
     54 => 'Rezultati komentarjev',
     55 => 'fraza',
-    56 => 'AND',
-    57 => 'OR',
-    58 => 'More results &gt;&gt;',
-    59 => 'Results',
-    60 => 'per page',
-    61 => 'Refine search'
+    56 => 'IN',
+    57 => 'ALI',
+    58 => 'Več  rezultatov &gt;&gt;',
+    59 => 'Rezultati',
+    60 => 'na stran',
+    61 => 'Podrobnejše iskanje'
 );
 
 ###############################################################################
@@ -484,34 +496,34 @@
     1 => 'Statistike spletne strani',
     2 => 'Število vseh obiskov strani',
     3 => 'Število objavljenih člankov (komentarjev)',
-    4 => 'Število anket (odgovorov)',
-    5 => 'Število povezav (obiskov)',
-    6 => 'Število napovedanih dogodkov',
-    7 => 'Deset najbolj branih člankov',
+    4 => '',
+    5 => '',
+    6 => '',
+    7 => 'Deset najbolj ogledovanih člankov',
     8 => 'Naslov članka',
     9 => 'Št. ogledov',
-    10 => 'Na spletni strani ni objavljenih člankov, ali pa nihče ni prebral nobenega članka.',
+    10 => 'Na spletni strani ni objavljenih člankov ali pa si jih ni še nihče ogledal.',
     11 => 'Deset najbolj komentiranih člankov',
     12 => 'Št. komentarjev',
-    13 => 'Na spletni strani ni objavljenih komentarjev, ali pa nihče ni objavil nobenega komentarja.',
-    14 => 'Deset najbolj obiskanih anket',
-    15 => 'Anketno vprašanje',
-    16 => 'Št. glasov',
-    17 => 'Na spletni strani ni objavljena nobena anketa, ali pa nihče ni glasoval pri nobeni anketi.',
-    18 => 'Deset najbolj obiskanih povezav',
-    19 => 'Povezave',
-    20 => 'Št. ogledov',
-    21 => 'Na spletni strani ni objavljena nobena povezava ali pa nihče ni obiskal nobene povezave.',
-    22 => 'Deset najbolj po e-mailu posredovanih člankov',
+    13 => 'Na spletni strani ni objavljenih komentarjev ali pa si jih ni še nihče ogledal.',
+    14 => '',
+    15 => '',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => '',
+    20 => '',
+    21 => '',
+    22 => 'Deset največ po e-pošti posredovanih člankov',
     23 => 'Št. posredovanj',
-    24 => 'Nihče ni posredoval nobenega članka po e-mailu.',
-    25 => 'Top Ten Trackback Commented Stories',
-    26 => 'No trackback comments found.',
-    27 => 'Number of active users',
-    28 => 'Top Ten Events',
-    29 => 'Event',
-    30 => 'Hits',
-    31 => 'It appears that there are no events on this site or no one has ever clicked on one.'
+    24 => 'Nihče ni posredoval nobenega članka po e-pošti.',
+    25 => 'Deset najbolj Trackback komentiranih člankov',
+    26 => 'Najden ni bil noben trackback ckmentar.',
+    27 => 'Število aktivnih uporabnikov',
+    28 => '',
+    29 => '',
+    30 => 'Zadetki',
+    31 => ''
 );
 
 ###############################################################################
@@ -519,69 +531,69 @@
 
 $LANG11 = array(
     1 => 'Sorodne povezave',
-    2 => 'Pošlji članek po e-pošti',
-    3 => 'Stran prijazna za tisk',
+    2 => 'Pošlji članek prijatelju po e-pošti',
+    3 => 'Za tisk prijazna stran',
     4 => 'Dodatne možnosti',
-    5 => 'PDF format članka'
+    5 => 'Članek v formatu PDF'
 );
 
 ###############################################################################
 # submit.php
 
 $LANG12 = array(
-    1 => "Če želite objaviti %s se morate prijaviti. Še niste registrirani uporabnik? <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> Registrirajte se</a>.",
+    1 => 'Če želiš objaviti %s, se moraš prijaviti kot uporabnik.',
     2 => 'Prijava',
     3 => 'Nov uporabnik',
-    4 => 'Pošlji dogodek',
-    5 => 'Pošlji povezavo',
-    6 => 'Članek',
-    7 => 'Potrebno se je prijaviti!',
-    8 => 'Pošlji',
-    9 => 'Pri pošiljanju informacij se držite naslednjih priporočil:<ul><li>izpolnite vsa polja,<li>poskrbite da bo informacija, ki jo pošiljate točna in ustrezna,<li>pazite na slovnico,<li>preverite da delujejo vse povezave,<li><font color=red>prosimo da pošiljate <b>samo članke</b>, komentarje vpisujte pod posamezen članek, za splošne debate ali mnenja pa uporabite forum.</font></ul>',
+    4 => '',
+    5 => '',
+    6 => 'Oddaj članek',
+    7 => 'Treba se je prijaviti',
+    8 => 'Oddaj',
+    9 => 'Pri oddajanju podatkov za uporabo na tem spletnem mestu prosim upoštevaj naslednja priporočila: <ul><li>Izpolni vsa polja.<li>Poskrbi, da bodo podatki celostni in točni.<li>Upoštevaj pravopis.<li>Preveri, da delujejo vse povezave.<li><font color=red>Pošiljaj <b>samo članke in dogodke</b>. Komentarje vpisuj pod posamezne članke, za splošne debate in mnenja pa uporabi forum.</font><li>V naslov NE piši celih besed z VELIKIMI črkami. Besedila, ki bodo zapisana z velikimi črkami, bomo v celoti prekodirali v male črke.</li> <br> <b>Pri vnašanju dogodka ali oglasa: </b><li>Uredništvo si pridržuje pravico, da ne objavi dogodkov in oglasov, ki niso v skladu z navedenimi pogoji, ki imajo sporno vsebino in/ali ki niso v skladu z veljavno zakonodajo Republike Slovenije.<li>Pri vpisu ponudbe za  delavnice, seminarje, storitve, zaposlitve idr. v oknu z besedilom oglasa (polje opis dogodka ali vsebina članka)  v skladu z zakonodajo <b>obvezno navedite še</b><ul><li>naziv podjetja ter ime in priimek odgovorne osebe oziroma ime in priimek naročnika oglasa (če ne gre za podjetje ali organizacijo) ,<li>sedež podjetja, organizacije ali naslov naročnika oglasa (če ne gre za podjetje).</ul>',
     10 => 'Naslov',
-    11 => 'Povezava',
+    11 => '',
     12 => 'Datum začetka',
     13 => 'Datum zaključka',
     14 => 'Lokacija',
     15 => 'Opis',
-    16 => 'Če \'drugo\', vpiši ime',
-    17 => 'Kategorija',
-    18 => 'Drugo',
-    19 => 'Prosimo, preberite',
-    20 => 'Napaka: ni določena kategorija',
-    21 => 'Kadar izberete "Drugo" vpišite tudi ime kategorije',
-    22 => 'Napaka: niso izpolnjena vsa polja',
-    23 => 'Prosimo izpolnite vsa polja obrazca.',
-    24 => 'Shranjeno!',
-    25 => 'Vaš %s prispevek je bil shranjen.',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => 'Najprej preberi',
+    20 => '',
+    21 => '',
+    22 => 'Napaka: Niso izpolnjena vsa polja',
+    23 => 'Izpolnite vsa polja obrazca. Zahtevana so vsa.',
+    24 => 'Shranjeno',
+    25 => 'Tvoj prispevek %s je bil uspešno shranjen.',
     26 => 'Omejitev hitrosti',
     27 => 'Uporabniško ime',
-    28 => 'Tematsko področje',
-    29 => 'Vsebina članka',
-    30 => 'Vaša zadnja objava je bila poslana pred ',
-    31 => " sekundami. Nastavitve te spletne strani pa zahtevajo da med dvema objavama istega avtorja mine vsaj {$_CONF['speedlimit']} sekund",
+    28 => 'Rubrika',
+    29 => 'Članek',
+    30 => 'Tvoja zadnja objava je bila poslana pred ',
+    31 => " sekundami. Med objavami istega uporabnika mora preteči vsaj {$_CONF['speedlimit']} sekund.",
     32 => 'Predogled',
     33 => 'Predogled članka',
-    34 => 'izhod',
-    35 => 'HTML ukazi ne bodo upoštevani',
+    34 => 'Odjava',
+    35 => 'Ukazi HTML niso dovoljeni',
     36 => 'Oblika besedila',
-    37 => 'Dogodek bo dodan na skupni koledar, od koder ga registrirani uporabniki lahko dodajo na svoj osebni koledar. Ta aplikacija zato <b>NI</b> namenjena shranjevanju osebnih dogodkov (obletnice, rojstni dnevi, zabave...) če nas ne mislite nanje povabiti ;-)<br><br>Preden bo dogodek objavljen na skupnem koledarju dogodkov, ga bo pregledal administrator!',
-    38 => 'Dodaj dogodek v',
-    39 => 'Skupni koledar',
-    40 => 'Osebni koledar',
-    41 => 'Čas zaključka',
-    42 => 'Čas začetka',
-    43 => 'Celodnevni dogodek',
+    37 => '',
+    38 => '',
+    39 => '',
+    40 => '',
+    41 => '',
+    42 => '',
+    43 => '',
     44 => 'Naslov 1',
     45 => 'Naslov 2',
-    46 => 'Mesto',
-    47 => 'Država',
+    46 => 'Mesto/kraj',
+    47 => 'Pokrajina',
     48 => 'Poštna številka',
-    49 => 'Tip dogodka',
-    50 => 'Uredi tipe dogodkov',
+    49 => '',
+    50 => '',
     51 => 'Lokacija',
-    52 => 'Odstrani',
-    53 => 'Naredi račun'
+    52 => 'Zbriši',
+    53 => 'Ustvari račun'
 );
 
 ###############################################################################
@@ -592,12 +604,12 @@
 # admin/auth.inc.php
 
 $LANG20 = array(
-    1 => 'Obvezna prijava',
-    2 => 'Dostop zavrnjen! Vnesli ste napačne podatke.',
-    3 => 'Napačno geslo za uporabnika',
+    1 => 'Obvezno preverjanje pristnosti',
+    2 => 'Dostop zavrnjen! Napačni prijavni podaki.',
+    3 => 'Napačno uporabniško geslo',
     4 => 'Uporabniško ime:',
     5 => 'Geslo:',
-    6 => 'Vsi dostopi do administracijske strani se beležijo.<br>Ta del spletne strani lahko uporabljajo samo pooblaščene osebe.<p>',
+    6 => 'Vsi dostopi do skrbniških delov tega spletnega mesta se beležijo in pregledujejo.<br>Te strani lahko uporabljajo samo pooblaščene osebe.<p>',
     7 => 'prijava'
 );
 
@@ -605,102 +617,73 @@
 # admin/block.php
 
 $LANG21 = array(
-    1 => 'Ups... ne bo šlo. Nimate zahtevanih administratorskih pravic ;-)',
-    2 => 'Za urejanje tega bloka nimate zahtevanih administratorskih pravic',
+    1 => 'Ni ustreznih skrbniških pravic',
+    2 => 'Za urejanje tega bloka nimaš potrebnih skrbniških pravic.',
     3 => 'Urejanje blokov',
-    4 => 'Pri branju je nastala težava (za detajle glej error.log).',
-    5 => 'Ime bloka',
-    6 => 'Tema',
+    4 => 'Pri branju je nastala težava (za podrobnosti glej error.log).',
+    5 => '',
+    6 => '',
     7 => 'Vse',
     8 => 'Varnostna raven bloka',
     9 => 'Pravila bloka',
-    10 => 'Tip bloka',
+    10 => '',
     11 => 'Blok na portalu',
     12 => 'Običajni blok',
     13 => 'Nastavitve bloka na portalu',
     14 => 'RDF URL',
-    15 => 'Zadnja RDF osvežitev',
+    15 => 'Zadnja posodobitev RDF',
     16 => 'Nastavitve običajnega bloka',
-    17 => 'Komentar',
-    18 => 'Vnesite ime in vsebino bloka',
-    19 => 'Administracija bloka',
-    20 => 'Ime bloka',
-    21 => 'Varnostna raven',
-    22 => 'Tip bloka',
+    17 => 'Vsebina bloka',
+    18 => 'Izpolni polji Naslov bloka in Vsebina bloka',
+    19 => 'Upravitelj bloka',
+    20 => '',
+    21 => 'Varnostna raven bloka',
+    22 => '',
     23 => 'Pravila bloka',
-    24 => 'Tema bloka',
-    25 => 'Izberite blok, ki ga želite urediti ali odstraniti. Če želite ustvariti nov blok, kliknite zgoraj.',
-    26 => 'Izgled',
-    27 => 'PHP blok',
-    28 => 'Nastavitve PHP bloka',
+    24 => '',
+    25 => 'Za spreminjanje ali izbris bloka klikni na njegovo spodnjo ikono za urejanje. Če hočeš ustvariti nov blok, klikni na "Ustvari" zgoraj. Če hočeš blok premakniti, klikni na puščici ali v polji [R] in [L].',
+    26 => 'Izgled bloka',
+    27 => 'Blok PHP',
+    28 => 'Nastavitve bloka PHP',
     29 => 'Funkcije bloka',
-    30 => 'Če želiš da blok uporablja php kodo, zgoraj vpiši ime funkcije. Ime funkcije se mora začeti z izrazom "phpblock_" (t.j. phpblock_getweather). Če funkcija nima te predpone, NE bo klicana.  To je narejeno tako zaradi tega, da potencialni hekerji ne morejo izvesti kode, ki bi lahko škodovala sistemu. Pazi da ne vstaviš praznih oklepajev "()" za ime funkcije. Priporočamo vso svojo kodo, tudi to za bloke, vpisujete v /pot/do/geekloga/system/lib-custom.php. Tako bo ta koda brez težav ostala z vami tudi po nadgradnji Geekloga.',
-    31 => 'Napaka v PHP bloku. Funkcija %s, ne obstaja.',
-    32 => 'Napaka. Manjkajo podatki',
-    33 => 'Vnesite URL naslov v datoteko .rdf za blok na portalu',
-    34 => 'Vnesite naslov in funkcijo PHP bloka',
-    35 => 'Vnesite naslov in vsebino bloka',
-    36 => 'Vnesite vsebino in izberite izgled bloka',
-    37 => 'Napačno ime funkcije PHP bloka',
-    38 => 'Funkcije PHP bloka morajo imeti predpono \'phpblock_\' (npr. phpblock_imefunkcije).  Predpona \'phpblock_\' je potrebna zaradi varnosti!',
+    30 => 'Če želiš, da blok uporablja kodo PHP, zgoraj vpiši ime funkcije. Ime funkcije se mora začeti s "phpblock_" (npr. phpblock_getweather). Brez te predpone funkcija NE bo klicana. Zaradi tega tisti, ki bi morda vdrli v to namestitev Geekloga, ne bi mogli poljubno spreminjati kode in škodovati sistemu. Pazi, da za ime funkcije ne vstaviš praznih oklepajev "()". Priporočamo, da vso kodo svojega bloka PHP, vpisujete v /pot/do/geekloga/system/lib-custom.php. Tako se bo ta koda brez težav ohranila tudi po nadgradnji Geekloga.',
+    31 => 'Napaka v bloku PHP. Funkcija %s ne obstaja.',
+    32 => 'Napaka. Manjkajo podatki.',
+    33 => 'Vnesi naslov URL v datoteko .rdf za blok na portalu',
+    34 => 'Vnesi naslov in funkcijo PHP bloka',
+    35 => 'Vnesi naslov in vsebino bloka',
+    36 => 'Vnesi vsebino in izberi izgled bloka',
+    37 => 'Napačno ime funkcije bloka PHP',
+    38 => 'Funkcije bloka PHP morajo imeti predpono \'phpblock_\' (npr. phpblock_imefunkcije).  Predpona \'phpblock_\' je potrebna zaradi varnosti.',
     39 => 'Stran',
     40 => 'Levo',
     41 => 'Desno',
-    42 => 'Vnesite ime bloka in vrstni red zanj.',
+    42 => 'Vnesite ime bloka in vrstni red za prednastavljene bloke Geekloga.',
     43 => 'Samo domača stran',
-    44 => 'Dostop zavrnjen',
-    45 => "Do tega bloka nimate dostopa. Vaš poskus je bil zabeležen v bazo podatkov! Prosimo, vrnite se na <a href=\"{$_CONF['site_url']}/admin/block.php\"> stran za administracijo</a>!",
-    46 => 'Nov blok',
-    47 => 'Administratorske strani',
+    44 => '',
+    45 => "Do tega bloka nimaš dostopa. Poskus je bil zabeležen v bazo podatkov. Prosim vrni se na <a href=\"{$_CONF['site_url']}/admin/block.php\">zaslon za skrbništvo blokov</a>.",
+    46 => 'Premakni',
+    47 => '',
     48 => 'Ime bloka',
-    49 => ' (Presledki niso dovoljeni. Imena blokov ne smejo biti podvojena',
-    50 => 'URL za pomoč',
-    51 => 'Začneš s http://',
-    52 => 'Če pustite prazno, se ikona za pomoč ne bo izpisala!',
+    49 => ' (brez presledkiov in imena ne smejo biti podvojena)',
+    50 => '',
+    51 => 'začni s http://',
+    52 => 'Če pustiš prazno, se ikona za pomoč za ta blok ne bo izpisala!',
     53 => 'Omogočeno',
-    54 => 'Shrani',
-    55 => 'Prekliči',
-    56 => 'Izbriši',
+    54 => 'shrani',
+    55 => 'prekliči',
+    56 => 'izbriši',
     57 => 'Premakni blok dol',
     58 => 'Premakni blok gor',
     59 => 'Premakni blok na desno stran',
     60 => 'Premakni blok na levo stran',
-    61 => 'No Title',
-    62 => 'Article Limit',
-    63 => 'Bad Block Title',
-    64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Urejanje dogodkov',
-    2 => 'Error',
-    3 => 'Naslov dogodka',
-    4 => 'URL dogodka',
-    5 => 'Začetek dogodka',
-    6 => 'Zaključek dogodka',
-    7 => 'Kraj dogodka',
-    8 => 'Opis dogodka',
-    9 => '(Začneš z http://)',
-    10 => 'Izpolniti morate vsa polja!',
-    11 => 'Urejevalnik dogodkov',
-    12 => 'Izberite dogodek, ki ga želite urediti ali odstraniti. Če želite objaviti nov dogodek, kliknite na nov dogodek spodaj. Kliknite na [C] če želite narediti kopijo že obstoječega dogodka.',
-    13 => 'Naslov dogodka',
-    14 => 'Začetek',
-    15 => 'Konec',
-    16 => 'Dostop zavrnjen',
-    17 => "Do tega dogodka nimate dostopa. Vaš poskus je bil zabeležen v bazo podatkov. Prosimo, vrnite se na <a href=\"{$_CONF['site_url']}/admin/event.php\"> urejanje dogodkov</a>!",
-    18 => 'Nov dogodek',
-    19 => 'Administratorske strani',
-    20 => 'Shrani',
-    21 => 'Prekliči',
-    22 => 'Izbriši',
-    23 => 'Neveljaven začetni čas.',
-    24 => 'Neveljaven končni čas.',
-    25 => 'Končni čas je pred začetnim časom.'
+    61 => 'Braz naslova',
+    62 => 'Omejitev članka',
+    63 => 'Slab naslov bloka',
+    64 => 'Polje za naslov ne sme biti prazno in ne sme vsebovati HTML.',
+    65 => 'naročilo',
+    66 => 'Samodejni ukazi',
+    67 => 'Potrdi za odobritev samodejnih ukazov'
 );
 
 ###############################################################################
@@ -712,174 +695,205 @@
     3 => 'Nastavitve članka',
     4 => 'Oblikovanje članka',
     5 => 'Urejanje članka',
-    6 => 'Ni člankov v sistemu',
+    6 => 'V sistemu ni člankov',
     7 => 'Avtor',
-    8 => 'Shrani',
-    9 => 'Predogled',
-    10 => 'Prekliči',
-    11 => 'Izbriši',
+    8 => 'shrani',
+    9 => 'predogled',
+    10 => 'prekliči',
+    11 => 'izbriši',
     12 => 'ID',
-    13 => 'Naslov',
-    14 => 'tematsko področje',
-    15 => 'datum',
+    13 => '',
+    14 => '',
+    15 => 'Datum',
     16 => 'Uvodno besedilo',
     17 => 'Razširjeno besedilo',
-    18 => 'Št. branj',
-    19 => 'Komentarjev',
+    18 => 'Število ogledov',
+    19 => 'Komentarji',
     20 => 'Ping',
-    21 => 'Send Ping',
+    21 => 'Pošlji Ping',
     22 => 'Seznam člankov',
-    23 => 'Če želite spreminjati ali izbrisati članek, kliknite na njegovo številko. Če želite članek pregledati, kliknite na njegov naslov. Če želite objaviti nov članek, kliknite na zgornjo povezavo.',
-    24 => 'The ID you chose for this story is already in use. Please use another ID.',
-    25 => 'Error when saving story',
+    23 => 'Če hočeš članek spremeniti ali izbrisati, klikni na njegovo številko. Če ga hočeš pregledati, klikni na njegov naslov. Če hočeš objaviti nov članek, klikni na "Ustvari novega" zgoraj.',
+    24 => 'ID, ki si ga izbral/a za ta članek, je že v rabi. Prosim uporabi drug ID.',
+    25 => 'Napaka pri shranjevanju članka.',
     26 => 'Predogled članka',
-    27 => 'If you use [unscaledX] instead of [imageX], the image will be inserted at its original dimensions.',
-    28 => '<p><b>PREVIEWING</b>: Previewing a story with images attached is best done by saving the article as a draft INSTEAD OF hitting the preview button.  Use the preview button only when images are not attached.',
+    27 => 'Če uporabiš [unscaledX] namesto [imageX], bo slika vstavljena s svojimi originalnimi merami.',
+    28 => '<p><b>PREDOGLEDOVANJE</b>: Za predogled članka skupaj s slikami je najprimerneje, da ga shraniš kot  osnutek, NAMESTO da klikneš gumb za predogled.  Ta gumb uporabi le, če ni priloženih slik.',
     29 => 'Trackbacks',
-    30 => 'Napake pri shranjevanju datoteke',
-    31 => 'Prosimo izpolnite polji Naslov in Uvodno besedilo',
+    30 => 'Napake pri nalaganju datoteke',
+    31 => 'Prosim izpolni polji Naslov in Uvodno besedilo',
     32 => 'Udarni članek',
-    33 => 'Udarni članek je lahko smo eden',
-    34 => 'Draft',
+    33 => 'Udarni članek je lahko samo eden',
+    34 => 'Osnutek',
     35 => 'Da',
     36 => 'Ne',
     37 => 'Več od avtorja',
-    38 => 'Več iz področja',
-    39 => 'Št. posredovanj po e-mailu',
-    40 => 'Dostop zavrnjen',
-    41 => "Poizkušate dostopati do članka do katerega nimate dostopa. Ta poizkus neveljavnega dostopa je bil zabeležen in shranjen. članek lahko samo preberete, ne morete pa ga urejati. Če želite lahko vstopite <a href=\"{$_CONF['site_url']}/admin/story.php\"> na administracijo članka</a>.",
-    42 => "Poizkušate dostopati do članka do katerega nimate dostopa. Ta poizkus neveljavnega dostopa je bil zabeležen in shranjen. Če želite lahko vstopite <a href=\"{$_CONF['site_url']}/admin/story.php\">na administracijo člankov</a>.",
-    43 => 'Nov članek',
-    44 => 'Administracijska stran',
-    45 => 'Dostop',
-    46 => '<b>POZOR:</b> vaš prispevek ne bo objavljen do izbranega datuma.Do tega datuma tudi na bo v vašem RDF in ne bo vključn v iskalnik.',
+    38 => 'Več s področja',
+    39 => 'Št. posredovanj po e-pošti',
+    40 => '',
+    41 => "Poskušaš dostopiti do članka, do katerega nimaš pravice dostopa. Ta poskus je bil zabeležen in shranjen. Članek lahko samo preberete, ne morete pa ga urejati. Ko končaš, pojdi prosim nazaj na <a href=\"{$_CONF['site_url']}/admin/story.php\">zaslon za skrbništvo člankov</a>.",
+    42 => "Poskušaš dostopiti do članka, do katerega nimaš pravice dostopa. Ta poskus je bil zabeležen in shranjen. Pojdi prosim nazaj na <a href=\"{$_CONF['site_url']}/admin/story.php\">zaslon za skrbništvo člankov</a>.",
+    43 => '',
+    44 => '',
+    45 => '',
+    46 => '<b>OPOMBA:</b> Če tu nastaviš datum v prihodnosti, članek ne bo objavljen do izbranega datuma. Do tega datuma članka ne bo niti v RDF niti ne bo vključn v iskalnik in statistične strani.',
     47 => 'Slike',
     48 => 'slika',
     49 => 'desno',
     50 => 'levo',
-    51 => 'Sliko vstavite v članek s posebnim ukazom [imageX], [imageX_right] ali [imageX_left], kjer je X številka slike v prilogi. POZOR: uporabite lahko samo slike iz priloge. V nasprotnem primeru članka ne bo mogoče objaviti. <BR><P><B>PREDOGLED</B>: Predogled članka s slikami najenostavneje opraviter tako, da članek shranite kot draft in ne uporabite gumba Predogled. Funkcija Predogled deluje deluje le, če članek brez slik.',
-    52 => 'Odstrani',
-    53 => 'ni bila uporabljena. Sliko morate pred shranjevanjem vključiti v uvod ali med besedilo članka.',
+    51 => 'Sliko vstavi v članek s posebnim ukazom [imageX], [imageX_right] ali [imageX_left], pri čemer je X zaporedna številka slike v prilogi. OPOMBA: Slike iz priloge je treba uporabiti, sicer članka ne bo mogoče shraniti.',
+    52 => '',
+    53 => 'ni bila uporabljena. Sliko morate pred shranitvijo sprememb vključiti v uvodno ali razširjeno besedilo članka.',
     54 => 'Priložene slike niso bile uporabljene',
-    55 => 'Napaka pri shranjevanju članka. Prosimo popravite napake na spodnjem seznamu:',
-    56 => 'Prikaži ikono teme',
-    57 => 'Oglej si nezmanjšano sliko',
-    58 => 'Administracija člankov',
-    59 => 'Opcija',
-    60 => 'Omogočeno',
+    55 => 'Pri shranjevanju članka je prišlo do napak. Prosim popravi napake s spodnjega seznama:',
+    56 => 'Prikaži ikono rubrike',
+    57 => 'Oglej si nepomanjšano sliko',
+    58 => 'Možnosti arhiviranja',
+    59 => 'Možnost',
+    60 => '',
     61 => 'Samodejno arhiviranje',
     62 => 'Samodejno brisanje',
     63 => '',
     64 => '',
     65 => '',
     66 => '',
-    67 => 'Expand the Content Edit Area size',
-    68 => 'Reduce the Content Edit Area size',
-    69 => 'Publish Story Date',
-    70 => 'Toolbar Selection',
-    71 => 'Basic Toolbar',
-    72 => 'Common Toolbar',
-    73 => 'Advanced Toolbar',
-    74 => 'Advanced II Toolbar',
-    75 => 'Full Featured',
-    76 => 'Publish Options',
-    77 => 'Javascript needs to be enabled for Advanced Editor. Option can be disabled in the main site config.php',
-    78 => 'Click <a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default">here</a> to use default editor',
-    79 => 'Preview',
-    80 => 'Editor',
-    81 => 'Publish Options',
-    82 => 'Images',
-    83 => 'Archive Options',
-    84 => 'Permissions',
-    85 => 'Show All'
+    67 => 'Raztegni področje urejanja vsebine',
+    68 => 'Skrči področje urejanja vsebine',
+    69 => 'Datum objave članka',
+    70 => 'Izbira orodne vrstice',
+    71 => 'Osnovna orodna vrstica',
+    72 => 'Navadna orodna vrstica',
+    73 => 'Napredna orodna vrstica',
+    74 => 'Napredna orodna vrstica II',
+    75 => 'Vse funkcije',
+    76 => 'Možnosti objave',
+    77 => ' Za napredno urejanje mora biti Javascript omogočen. Možnost lahko onemogočite na glavni strani config.php.',
+    78 => 'Za uporabo privzetega urejevalnika klikni <a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default">tukaj</a>.',
+    79 => 'Predogled',
+    80 => 'Urejevalnik',
+    81 => 'Možnosti objave',
+    82 => 'Slike',
+    83 => 'Možnosti arhiva',
+    84 => 'Dovoljenja',
+    85 => 'Pokaži vse',
+    86 => 'Napredni urejevalnik',
+    87 => 'Statistike člankov'
 );
 
 ###############################################################################
 # admin/topic.php
 
 $LANG27 = array(
-    1 => 'Urejanje tem',
-    2 => 'ID teme',
-    3 => 'Ime teme',
-    4 => 'Slika teme',
-    5 => '(ne uporabljajte presledkov)',
-    6 => 'Če odstranite temo, odstranite tudi vse članke in bloke, ki so z njo povezani',
-    7 => 'Izpolnite ID teme in naslov teme.',
-    8 => 'Urejevalnik tem',
-    9 => 'Izberite temo, ki jo želite urediti ali odstraniti. Če želite ustvariti novo temo, kliknite gumb Nova tema, na levi. V vsaki temi najdeš, v oklepajih, svoj nivo dostopa. Zvazdica (*) označuje privzeto temo.',
+    1 => 'Urejevalnik rubrik',
+    2 => 'ID rubrike',
+    3 => 'Ime rubrike',
+    4 => 'Slika rubrike',
+    5 => '(ne uporabljaj presledkov)',
+    6 => 'Izbris rubrike izbriše tudi vse z njo povezane članke in bloke',
+    7 => 'Izpolni polji za ID in naslov rubrike',
+    8 => 'Upravitelj rubrik',
+    9 => 'Izberi rubriko, ki jo hočeš urediti ali odstraniti. Če hočeš ustvariti novo rubriko, klikni gumb Nova rubrika zgoraj. Svojo raven dostopa do posamezne rubrike najdeš v oklepajih. Zvazdica (*) označuje privzeto rubriko.',
     10 => 'Uredi po',
     11 => 'Člankov/Strani',
-    12 => 'Dostop zavrnjen!',
-    13 => "Do te teme nimate dostopa. Vaš poskus je bil zabeležen in shranjen. Prosimo, vrnite se na <a href=\"{$_CONF['site_url']}/admin/topic.php\"> administracijo tem</a>!",
+    12 => 'Dostop zavrnjen',
+    13 => "Do te rubrike nimaš dostopa. Tvoj poskus je bil zabeležen in shranjen. Prosim vrni se na <a href=\"{$_CONF['site_url']}/admin/topic.php\">zaslon za skrbništvo rubrik</a>.",
     14 => 'Uredi po',
     15 => 'abecedi',
     16 => 'privzeto',
-    17 => 'Nova tema',
-    18 => 'Administratorske strani',
-    19 => 'Shrani',
-    20 => 'Prekliči',
-    21 => 'Izbriši',
+    17 => 'Nova rubrika',
+    18 => 'Skrbnikova stran',
+    19 => 'shrani',
+    20 => 'prekliči',
+    21 => 'izbriši',
     22 => 'Privzeto',
-    23 => 'Ustvari to temo privzeto za novo oddane članke',
+    23 => 'Naredi to rubriko privzeto za novo oddane članke',
     24 => '(*)',
-    25 => 'Arhiviraj temo',
-    26 => 'naredi to temo privzeto za arhivirane članke. Samo ena tema je dovoljena.',
-    27 => 'Or Upload Topic Icon',
-    28 => 'Maximum',
-    29 => 'File Upload Errors'
+    25 => 'Arhiviraj rubriko',
+    26 => 'Naredi to rubriko privzeto za arhivirane članke. Dovoljena je samo ena rubrika.',
+    27 => 'ali naloži ikono za rubriko',
+    28 => 'Največ',
+    29 => 'Napake pri nalaganju datotek'
 );
 
 ###############################################################################
 # admin/user.php
 
 $LANG28 = array(
-    1 => 'Urejanje uporabnika',
+    1 => 'Urejevalnik uporabnika',
     2 => 'ID uporabnika',
-    3 => 'uporabniško ime',
-    4 => 'ime uporabnika',
+    3 => 'Uporabniško ime',
+    4 => 'Celotno ime uporabnika',
     5 => 'Geslo',
     6 => 'Varnostni nivo',
-    7 => 'e-mail naslov',
-    8 => 'Vaša spletna stran',
-    9 => '(ne uporabljajte presledkov)',
-    10 => 'Prosimo vpišite uporabniško ime in e-mail.',
-    11 => 'Administracija uporabnikov',
-    12 => 'Če želite spremeniti ali izbrisati uporabnika, kliknite na njegovo uporabniško ime spodaj. Če želite ustvariti novega uporabnika, kliknite gumb Nov uporabnik na levi. V spodnje okence vpišite iskalni niz, iščete lahko po imenu, delu imena, emailu ali celotnem imenu (npr. *sin* ali *.si*).',
+    7 => 'E-naslov',
+    8 => 'Tvoja spletna stran',
+    9 => '(ne uporabljaj presledkov)',
+    10 => 'Vpiši uporabniško ime in e-naslov.',
+    11 => 'Upravitelj uporabnikov',
+    12 => 'Za spreminjanje ali izbris uporabnika klikni na njegovo ikono za urejanje spodaj. Za ogled uporabnika klikni na njegovo uporabniško ime. Za ustvarjenje novega uporabnika klikni na "Ustvari novega" zgoraj.',
     13 => 'Varnostni nivo',
     14 => 'Datum registracije',
-    15 => 'nov uporabnik',
-    16 => 'Administratorske strani',
-    17 => 'spremeni geslo',
-    18 => 'prekini',
-    19 => 'izbriši',
+    15 => '',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => '',
     20 => 'shrani',
-    21 => 'Uporabniško ime, ki ga želite hraniti že obstaja.',
+    21 => 'Uporabniško ime, ki ga hočeš shraniti, že obstaja.',
     22 => 'Napaka',
     23 => 'Zaporedno dodajanje',
-    24 => 'Zaporedno dodajanje uporabnikov',
-    25 => 'Uvoziš lahko zaporedje uporabnikov v Geekloga.  Datoteka za uvoz mora biti razdeljena s tabi in mora biti navadna tekstovna datoteka. Polja naj si sledijo v naslednjem vrstnem redu: polno ime, uporabniško ime, email naslov.  Vsak uporabnik bo prejel email z naključnim geslom. Vsak uporabnik naj bo vpisan v svoji vrstici. Če ne upoštevaš teh navodil, lahko nastanejo precejšnje težave, ki bodo zahtevale ročno delo, zato, še enkrat preveri vpise v datoteki preden jo začneš uvažati!',
-    26 => 'Išči',
-    27 => 'Omejitve iskanja',
-    28 => 'Izbriši sliko',
+    24 => 'Zaporedni uvoz uporabnikov',
+    25 => 'V Geeklog lahko uvoziš zaporedje uporabnikov. Datoteka za uvoz mora biti navadna tekstovna datoteka, razdeljena s tabulatorji. Polja naj si sledijo v naslednjem vrstnem redu: celotno ime, uporabniško ime, e-naslov.  Vsak uporabnik bo prejel e-pošto z naključnim geslom. Vsak uporabnik naj bo vpisan v svoji vrstici. Če teh navodil ne upoštevaš, lahko nastanejo precejšnje težave, ki bodo zahtevale ročno obdelavo, zato pred uvozom še enkrat preveri vpise v datoteki.',
+    26 => '',
+    27 => '',
+    28 => 'Izbris slike potrdi tu',
     29 => 'Pot',
     30 => 'Uvozi',
     31 => 'Novi uporabniki',
-    32 => 'Končano. Uvoženo %d in %d napak',
-    33 => 'pošlji',
-    34 => 'Napaka: Moraš določiti datoteko.',
-    35 => 'Zadnji vpis',
-    36 => '(nikoli)',
+    32 => 'Končano. Uvoženo %d , najdenih je %d napak',
+    33 => 'oddaj',
+    34 => 'Napaka: Določiti je treba datoteko za nalaganje.',
+    35 => 'Zadna prijava',
+    36 => 'nikoli',
     37 => 'UID',
-    38 => 'Group Listing',
-    39 => 'Password (again)',
-    40 => 'Registration Date',
-    41 => 'Last login Date',
-    42 => 'Banned',
-    43 => 'Awaiting Activation',
-    44 => 'Awaiting Authorization',
-    45 => 'Active',
-    46 => 'User Status',
-    47 => 'Edit'
+    38 => 'Pregled skupine',
+    39 => 'Geslo (ponovno)',
+    40 => 'Datum registracije',
+    41 => 'Datum zadnje prijave',
+    42 => 'Prepovedan',
+    43 => 'Čaka aktivacijo',
+    44 => 'Čaka avtorizacijo',
+    45 => 'Dovoljen',
+    46 => 'Status uporabnika',
+    47 => 'Uredi',
+    48 => 'Prikaži skupine skrbnikov',
+    49 => 'Skupina skrbnikov',
+    50 => 'Potrdi za odobritev filtriranja te skupine kot  Admin Use Group',
+    51 => 'Dnevi na liniji',
+    52 => '<br>Opomba: "Dnevi na liniji" je število dni med prvo registracijo in zadnjo prijavo.',
+    53 => 'registrran',
+    54 => 'Izbris zaporedja',
+    55 => 'To deluje le, če imaš v svojem config.php <code>$_CONF[\'lastlogin\'] = true;</code>.',
+    56 => 'Izberi tip uporabnika, ki ga hočeš izbrisati, in pritisni "Posodobi seznam". Na seznamu odznači tiste, ki hošeč, da ostanejo, in pritisni "Izbriši". Vedi, da bodo v primeru, ko obstaja več strani seznama, izbrisani samo tisti tipi, ki jih trenutno vidiš.',
+    57 => 'Fantomski uporabniki',
+    58 => 'Kratkotrajni uporabniki',
+    59 => 'Stari uporabniki',
+    60 => 'Uporabniki, registrirani pred več kot ',
+    61 => ' meseci, ki se niso nikoli prijavili.',
+    62 => 'Uporabniki, registrirani pred več kot ',
+    63 => ' meseci, ki so se prijavili v 24 urah, potem pa nikoli več.',
+    64 => 'Običajni uporabniki, ki spletne strani niso obiskali že ',
+    65 => ' mesecev.',
+    66 => 'Posodobi seznam',
+    67 => 'mesecev od registracije',
+    68 => 'Ure na liniji',
+    69 => 'Meseci brez povezave z linijo',
+    70 => 'ni moglo biti izbrisano',
+    71 => 'uspešno izbrisano',
+    72 => 'Za izbris ni bil izbran noben uporabnik',
+    73 => 'Hočeš res trajno izbrisati VSE izbrane uporabnike?',
+    74 => 'zadnji uporabniki',
+    75 => 'Uporabniki, ki so se registrirali v zadnjih ',
+    76 => ' mesecih'
 );
 
 ###############################################################################
@@ -895,64 +909,17 @@
     12 => 'URL',
     13 => 'Kategorija',
     14 => 'Datum',
-    15 => 'Tema',
+    15 => 'Rubrika',
     16 => 'Uporabniško ime',
-    17 => 'Popolno ime',
-    18 => 'E-mail',
-    34 => 'Administratorske strani',
+    17 => 'Celotno ime',
+    18 => 'E-naslov',
+    34 => 'Skrbnikove strani',
     35 => 'Čakajoči članki',
-    36 => 'Čakajoče povezave',
-    37 => 'Čakajoči dogodki',
-    38 => 'Potrdi',
-    39 => 'Trenutno v tem področju ni nobene čakajoče vsebine.',
-    40 => 'Uporabniki so poslali'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'nedelja',
-    2 => 'ponedeljek',
-    3 => 'torek',
-    4 => 'sreda',
-    5 => 'četrtek',
-    6 => 'petek',
-    7 => 'sobota',
-    8 => 'Dodaj dogodek',
-    9 => '%s Dogodek',
-    10 => 'Dogodki za',
-    11 => 'Skupni koledar',
-    12 => 'Osebni koledar',
-    13 => 'januar',
-    14 => 'februar',
-    15 => 'marec',
-    16 => 'april',
-    17 => 'maj',
-    18 => 'junij',
-    19 => 'julij',
-    20 => 'avgust',
-    21 => 'september',
-    22 => 'oktober',
-    23 => 'november',
-    24 => 'december',
-    25 => 'Nazaj na ',
-    26 => 'Ves dan',
-    27 => 'teden',
-    28 => 'Osebni koledar za uporabnika',
-    29 => 'Skupni koledar',
-    30 => 'izbriši dogodek',
-    31 => 'Dodaj',
-    32 => 'Dogodek',
-    33 => 'Datum',
-    34 => 'Čas',
-    35 => 'Hitro dodajanje',
-    36 => 'Pošlji',
-    37 => 'Žal ta spletna stran ne omogoča upravljanja osebnih koledarjev',
-    38 => 'Urejanje osebnega koledarja',
-    39 => 'Dan',
-    40 => 'Teden',
-    41 => 'Mesec'
+    36 => '',
+    37 => '',
+    38 => 'Oddaj',
+    39 => 'Trenutno ni nobene čakajoče vsebine',
+    40 => 'Uporabniška čakajoča vsebina'
 );
 
 ###############################################################################
@@ -960,310 +927,320 @@
 
 $LANG31 = array(
     1 => "{$_CONF['site_name']} EMail pripomoček",
-    2 => 'Od:',
-    3 => 'Naslov za odgovor:',
-    4 => 'Zadeva:',
-    5 => 'Sporočilo:',
+    2 => 'Od',
+    3 => 'E-naslov za odgovore',
+    4 => 'Zadeva',
+    5 => 'Sporočilo',
     6 => 'Naslov:',
     7 => 'Vsem uporabnikom',
-    8 => 'Admin',
-    9 => 'Nastavitve',
+    8 => 'Skrbnik',
+    9 => 'Možnosti',
     10 => 'HTML',
     11 => 'Nujno sporočilo!',
     12 => 'Pošlji',
-    13 => 'Zbriši',
+    13 => 'Ponastavi',
     14 => 'Prezri uporabniške nastavitve',
-    15 => 'Napaka pri pošiljanju: ',
-    16 => 'Sporočilo je bilo uspešno poslano na naslov: ',
+    15 => 'Napaka pri pošiljanju  ',
+    16 => 'Sporočilo je bilo uspešno poslano: ',
     17 => "<a href={$_CONF['site_url']}/admin/mail.php>Pošlji novo sporočilo</a>",
-    18 => 'Za:',
-    19 => 'POZOR: če želite poslati sporočilo vsem uporabnikom strani, izberite skupino Prijavljeni uporabniki iz menija Uporabniki',
-    20 => "Uspešno poslana sporočila: <successcount>;<BR>Neuspešno poslana sporočila: <failcount>. Podrobnosti o neuspešno poslanih sporočilh najdete spodaj.<BR><BR>Želite poslati še kakšno <a href=\"{$_CONF['site_url']}/admin/mail.php\">sporočilo</a>? <BR><BR>Nazaj na <a href=\"{$_CONF['site_url']}/admin/moderation.php\">administratorkse strani</a>.",
+    18 => 'Za',
+    19 => 'OPOMBA: Če hošeč poslati sporočilo vsem uporabnikom strani, izberi skupino Prijavljeni uporabniki iz menija Uporabniki.',
+    20 => "Uspešno poslana sporočila: <successcount>;<BR>Neuspešno poslana sporočila: <failcount>. Podrobnosti o neuspešno poslanih sporočilh so spodaj.<BR><BR>Hočeš poslati še kakšno <a href=\"{$_CONF['site_url']}/admin/mail.php\">sporočilo</a>? <BR><BR>Nazaj na <a href=\"{$_CONF['site_url']}/admin/moderation.php\">skrbnikovo stran</a>.",
     21 => 'Neuspešno poslana sporočila',
     22 => 'Uspešno poslana sporočila',
     23 => 'Nobenega neuspešno poslanega sporočila',
     24 => 'Nobenega uspešno poslanega sporočila',
     25 => '-- Izberi skupino --',
-    26 => 'Prosim izpolni vsa polja v obrazcu in izberi skupino uporabnikov iz menija.'
+    26 => 'Izpolni vsa polja v obrazcu in izberi skupino uporabnikov iz menija.'
 );
 
 ###############################################################################
 # admin/plugins.php
 
 $LANG32 = array(
-    1 => 'Instalacija vtičnikov (plugin) lahko povzroči škodo tvoji instalaciji Geekloga, lahko tudi tvojemu sistemu. Pomemno je, da instaliraš samo vtičnike, ki jih pretočiš z <a href="http://www.geeklog.net" target="_blank">Geeklogove domače strani</a> saj smo samo te dodobra preizkusili na različnih operacijskih sistemih. Pomembno je razumeti, da je instalacija vtičnikov proces, ki zahteva izvajanje nekaterih komand na nivoju datotečnega sistema. Te lahko vodijo do varnostnih lukenj, posebno če uporabljaš vtičnik iz strani tretjih oseb. Tudi s tem opozorilom, ne garantiramo uspeh katerekoli instalacije niti nismo odgovorni za škodo povzročeno z instalacijo vtičnika za Geeklog. Z drugimi besedami instaliraš na svojo lastno odgovornost. Navodila za ročno instalacijo vtičnika so vključena v paketu vsakega vtičnika.',
-    2 => 'Plug-in Installation Disclaimer',
-    3 => 'Plug-in Installation Form',
-    4 => 'Plug-in File',
-    5 => 'Spisek vtičnikov',
-    6 => 'Opozorilo: Plug-in je že nameščen!',
-    7 => 'Vtičnik ki ga skušaš namestiti je že nameščen. Prosim pobriši stari vtičnik pred ponovno instalacijo',
-    8 => 'Test kompatibilnosti vtičnika ni uspel',
-    9 => 'Ta vtičnik zahteva novejšo verzijo Geekloga. Namesti novo različico <a href="http://www.geeklog.net">Geekloga</a> ali najdi novejšo verzijo vtičnika.',
+    1 => 'Namestitev vtičnikov (plugins) lahko Geeklogu in tvojemu sistemu povzroči škodo. Pomembno je, da namestiš samo vtičnike, ki jih preneseš z <a href="http://www.geeklog.net" target="_blank">Geeklogove domače strani</a>, saj smo samo te dodobra preizkusili na različnih operacijskih sistemih. Pomembno je razumeti, da je namestitev vtičnikov postopek, ki zahteva izvajanje nekaterih ukazov na ravni datotečnega sistema. Ti lahko vodijo do varnostnih lukenj, posebej če uporabljaš vtičnik s spletnih mest tretjih oseb. Kljub temu opozorilu ne jamčimo za uspeh nobene namestitve niti nismo odgovorni za škodo, povzročeno z namestitvijo vtičnika za Geeklog. Z drugimi besedami – nameščaš na lastno odgovornost. V paket vsakega vtičnika so vključena navodila za njegovo ročno namestitev.',
+    2 => 'Zavrnitev namestitve vtičnika',
+    3 => 'Obrazec za namestitev vtičnika',
+    4 => 'Datoteka vtičnika',
+    5 => 'Seznam vtičnikov',
+    6 => 'Opozorilo: Vtičnik je že nameščen.',
+    7 => 'Vtičnik, ki ga skušaš namestiti, je že nameščen. Pred ponovno namestitvijo prosim izbriši stari vtičnik.',
+    8 => 'Test združljivost vtičnika ni uspel',
+    9 => 'Ta vtičnik zahteva novejšo verzijo Geekloga. Namesti novo različico <a href="http://www.geeklog.net">Geekloga</a> ali najdi novejšo različico vtičnika.',
     10 => '<br><b>Trenutno ni nameščenih nobenih vtičnikov.</b><br><br>',
-    11 => 'Za spremembo ali izbris vtičnika, klikni njegovo številko spodaj. Za več informacij o vtičniku, klikni njegovo ime in preusmerjen boš na njegovo domačo stran. Za instalacijo ali nadgradnjo vtičnika, klikni na gumb Nov vtičnik zgoraj.',
-    12 => 'nobeno ime vtičnika ni bilo poslano v plugineditor()',
-    13 => 'Urejevalnik vtičnikov(Plugin Editor)',
+    11 => 'Za spremembo ali izbris vtičnika klikni njegovo ikono za urejanje spodaj. Prikazale se bodo podrobnosti o vtičniku, vključno z avtorjevo spletno stranjo. Prikazani sta nameščena in iz vtičnikove kode vrnjena različica. Tako bo lažje vedeti, ali je treba vtičnik nadgraditi ali ne. Za namestitev ali nadgradnjo vtičnika poglej v njegovo dokumentacijo.',
+    12 => 'nobeno ime vtičnika ni bilo poslano v urejevalnik vtičnikov ()',
+    13 => 'Urejevalnik vtičnikov',
     14 => 'Nov vtičnik',
-    15 => 'Administratorske strani',
+    15 => 'Skrbnikova stran',
     16 => 'Ime vtičnika',
-    17 => 'Verzija vtičnika',
-    18 => 'Verzija Geekloga',
-    19 => 'Omogočen',
+    17 => 'Različica vtičnika',
+    18 => 'Različica Geekloga',
+    19 => 'Omogočeno',
     20 => 'Da',
     21 => 'Ne',
     22 => 'Namesti',
     23 => 'Shrani',
     24 => 'Prekliči',
-    25 => 'Odstrani',
-    26 => 'Ime Plug-ina',
-    27 => 'Plug-in Homepage',
-    28 => 'Verzija Plug-in',
-    29 => 'Verzija Geekloga',
-    30 => 'Odstrani Plug-in?',
-    31 => 'Ali ste prepričani da želite odstraniti ta plug-in?  S tem bodo iz baze izbrisani tudi vsi podatki, ki jih uporablja ta plug-in.',
-    32 => '<p><b>Error AutoLink tag not correct format</b></p>',
-    33 => 'Code Version',
-    34 => 'Update',
-    35 => 'Edit',
-    36 => 'Code',
-    37 => 'Data',
-    38 => 'Update!'
+    25 => 'Izbriši',
+    26 => 'Ime vtičnika',
+    27 => 'Domača stran vtičnika',
+    28 => 'Različica vtičnika',
+    29 => 'Različica Geekloga',
+    30 => 'Izbriši vtičnik?',
+    31 => 'Hočeš res odstraniti ta vtičnik?  S tem bodo iz baze izbrisani tudi vsi podatki, ki jih uporablja.',
+    32 => '<p><b>Napaka AutoLink tag ni v pravem formatu</b></p>',
+    33 => 'Različica kode',
+    34 => 'Posodobi',
+    35 => 'Uredi',
+    36 => 'Koda',
+    37 => 'Podatki',
+    38 => 'Posodobi!'
 );
 
 ###############################################################################
 # admin/syndication.php
 
 $LANG33 = array(
-    1 => 'ustvari vsebino (feed)',
+    1 => 'ustvari združeno vsebino',
     2 => 'shrani',
-    3 => 'zbriši',
+    3 => 'izbriši',
     4 => 'prekliči',
-    10 => 'Vsebina (Syndication)',
-    11 => 'Nova vsebina (Feed)',
-    12 => 'Adminov dom',
-    13 => 'Za spreminjanje ali brisanje vsebine (feed), kliknite na vsebino spodaj. Za novo vsebino, kliknite na gumb Nova vsebina zgoraj.',
+    10 => 'Združevanje vsebine ',
+    11 => 'Nova združena vsebina',
+    12 => 'Skrbnikova stran',
+    13 => 'Za spreminjanje ali brisanje združene vsebine klikni na njeno ikono za urejanje spodaj. Za novo vsebino klikni na "Ustvari" zgoraj.',
     14 => 'Naslov',
     15 => 'Tip',
     16 => 'Ime datoteke',
-    17 => 'Format',
-    18 => 'zadnji obnovljen',
+    17 => 'Oblika',
+    18 => 'zadnji posodobljen',
     19 => 'Omogočeno',
     20 => 'Da',
     21 => 'Ne',
-    22 => '<i>(ni vsebine)</i>',
+    22 => '<i>(ni združene vsebine)</i>',
     23 => 'vsi članki',
-    24 => 'Urejevalnik (RDF) vsebine',
-    25 => 'naslov vsebine',
-    26 => 'Meja',
-    27 => 'Dolžine vnosov',
-    28 => '(0 = brez dodatnega teksta, 1 = ves tekst, drugo = omeji tekst na to število znakov.)',
+    24 => 'Urejevalnik združene vsebine',
+    25 => 'naslov združene vsebine',
+    26 => 'Omejitev prikaza',
+    27 => 'Omejitev števila znakov',
+    28 => '(0 = brez besedila, 1 = vse besedilo, drugo = omeji na to število znakov)',
     29 => 'Opis',
-    30 => 'Zadnjič obnovljeno',
+    30 => 'Zadnja posodobitev',
     31 => 'Nabor znakov',
     32 => 'Jezik',
     33 => 'Vsebina',
     34 => 'Vpisi',
     35 => 'Ure',
-    36 => 'Izberite tip vsebine',
-    37 => 'Nameščen imate vsaj en vtičnik, ki podpira sodelovanje (content syndication). Spodaj morate izbrati ali delate RDF vsebino za Geekloga ali za katerega od vtičnikov.',
+    36 => 'Izberi tip združene vsebine',
+    37 => 'Nameščen imaš vsaj en vtičnik, ki podpira združevanje vsebine. Spodaj je treba izbrati, ali hočeš ustvariti združeno vsebino za Geeklog ali za katerega od vtičnikov.',
     38 => 'Napaka: Manjkajoča polja',
-    39 => 'Prosim izpolnite polja Naslov, Opis, Ime datoteke.',
-    40 => 'Prosim vpišite število vpisov ali število ur.',
-    41 => 'Povezave',
-    42 => 'Dogodki',
-    43 => 'All',
-    44 => 'None',
-    45 => 'Header-link in topic',
-    46 => 'Limit Results',
-    47 => 'Search',
-    48 => 'Edit',
-    49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    39 => 'Izpolni polja Naslov združene vsebine, Opis, Ime datoteke.',
+    40 => 'Vpiši število vpisov ali število ur.',
+    41 => 'Oddaj',
+    42 => '',
+    43 => 'Vsi',
+    44 => 'Noben',
+    45 => 'Naslovna povezava v rubriki',
+    46 => 'Rezultati omejitve',
+    47 => 'Išči',
+    48 => 'Uredi',
+    49 => 'Logotip združene vsebine',
+    50 => "Glede na url strani ({$_CONF['site_url']})",
+    51 => 'Izbrano ime datoteke že uporablja druga združena vsebina. Prosim izberi drugega.',
+    52 => 'Napaka: Ime datoteke že obstaja.'
 );
 
 ###############################################################################
 # confirmation and error messages
 
 $MESSAGE = array(
-    1 => 'Geslo smo vam poslali na vaš e-mail naslov. Elektronsko sporočilo vsebuje tudi vsa ustrezna navodila.',
-    2 => 'Za poslani članek se vam najlepše zahvaljujemo. Pred objavo ga bo pregledal eden izmed urednikov. Če bo odobren, bo objavljen na spletni strani.',
-    3 => "Za poslano povezavo se vam najlepše zahvaljujemo. Pred objavo jo bo pregledal eden izmed urednikov. Če bo odobrena, bo objavljena na strani <a href={$_CONF['site_url']}/links.php>povezav</a>.",
-    4 => "Za poslani dogodek se vam najlepše zahvaljujemo. Pred objavo ga bo pregledal eden izmed urednikov. Če bo odobren, bo objavljen v <a href={$_CONF['site_url']}/calendar.php>koledarju dogodkov</a>.",
-    5 => 'Podatki o vašem uporabniškem računu so bili shranjeni.',
-    6 => 'Nastavitve so bile uspešno shranjene.',
-    7 => 'Vaše nastavitve komentarjev so bile uspešno shranjene.',
+    1 => "Geslo je bilo  poslano na tvoj e-naslov in bi moralo prispeti vsak čas. Sledi navodilom v sporočilu in hvala, da uporabljaš {$_CONF['site_name']}.",
+    2 => "Hvala, da si dogodek oddal/a na spletno mesto {$_CONF['site_name']}. Pred objavo ga bo pregledal eden od urednikov. Če bo odobren, bo objavljen in dan na razpolago bralcem te spletne strani.",
+    3 => "",
+    4 => "",
+    5 => 'Podatki o uporabniškem računu so bili uspešno shranjeni.',
+    6 => 'Osebne nastavitve so bile uspešno shranjene.',
+    7 => 'Osebne nastavitve komentarjev so bile uspešno shranjene.',
     8 => 'Odjava je bila uspešna.',
-    9 => 'članek je bil uspešno shranjen.',
-    10 => 'članek je bil izbrisan.',
-    11 => 'Vaši bloki so bili uspešno shranjeni.',
-    12 => 'Blok je bil izbrisan.',
-    13 => 'Tematsko področje je bilo uspešno shranjeno.',
-    14 => 'Tematsko področje skupaj z vsemi članki v njem z je bilo izbrisano.',
-    15 => 'Povezava je bila uspešno shranjena v bazo povezav.',
-    16 => 'Povezava je bila izbrisana.',
-    17 => 'Dogodek je bil uspešno shranjen v bazo dogodkov.',
-    18 => 'Dogodek je bil izbrisan.',
-    19 => 'Anketa je bila uspešno shranjena.',
-    20 => 'Anketa je bila izbrisana.',
-    21 => 'Uporabniške nastavitve so bile uspešno shranjene.',
-    22 => 'Uporabnik je bil izbrisan.',
-    23 => 'Napaka pri dodajanju dogodka v koledar dogodkov. Vnesite ID dogodka.',
-    24 => 'Dogodek je bil uspešno shranjen v vaš koledar dogodkov',
-    25 => 'Dostop do osebnega koledarja je mogoč le če ste prijavljeni.',
-    26 => 'Dogodek je bil odstranjen iz vašega osebnega koledarja dogodkov',
-    27 => 'Sporočilo je bilo poslano.',
+    9 => 'Članek je bil uspešno shranjen.',
+    10 => 'Članek je bil izbrisan.',
+    11 => 'Blok je bil uspešno shranjen.',
+    12 => 'Blok je bil uspešno izbrisan.',
+    13 => 'Rubrika je bila uspešno shranjeno.',
+    14 => 'Rubrika skupaj z vsemi članki in bloki je bila uspešno izbrisana.',
+    15 => '',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => '',
+    20 => '',
+    21 => 'Uporabnik je bil uspešno shranjen.',
+    22 => 'Uporabnik je bil uspešno izbrisan.',
+    23 => '',
+    24 => '',
+    25 => '',
+    26 => '',
+    27 => 'Sporočilo je bilo uspešno poslano.',
     28 => 'Vtičnik je bil uspešno shranjen',
-    29 => 'Žal ta stran ne podpira osebnega koledarja.',
+    29 => '',
     30 => 'Dostop zavrnjen',
-    31 => 'Žal nimate dostopa do administracije člankov. Vsi poizkusi nedovoljenega dostopa se beležijo!',
-    32 => 'Žal nimate dostopa do administracije tematskih področij. Vsi poizkusi nedovoljenega dostopa se beležijo!',
-    33 => 'Žal nimate dostopa do administracije blokov. Vsi poizkusi nedovoljenega dostopa se beležijo!',
-    34 => 'Žal nimate dostopa do administracije povezav. Vsi poizkusi nedovoljenega dostopa se beležijo1',
-    35 => 'Žal nimate dostopa do administracije dogodkov. Vsi poizkusi nedovoljenega dostopa se beležijo!',
-    36 => 'Žal nimate dostopa do administracije anket. Vsi poizkusi nedovoljenega dostopa se beležijo!',
-    37 => 'Žal nimate dostopa do administracije uporabnikov. Vsi poizkusi nedovoljenega dostopa se beležijo!',
-    38 => 'Žal nimate dostopa do administracije priključnih modulov. Vsi poizkusi nedovoljenega dostopa se beležijo!',
-    39 => 'Žal nimate dostopa do administracije elektronske pošte. Vsi poizkusi nedovoljenega dostopa se beležijo!',
+    31 => 'Žal nimaš dostopa do skrbništva člankov. Vsi poskusi dostopa do nepooblaščenih funkcij se beležijo.',
+    32 => 'Žal nimaš dostopa do skrbništva tematskih področij. Vsi poskusi dostopa do nepooblaščenih funkcij se beležijo.',
+    33 => 'Žal nimaš dostopa do skrbništva blokov. Vsi poskusi dostopa do nepooblaščenih funkcij se beležijo.',
+    34 => '',
+    35 => '',
+    36 => '',
+    37 => 'Žal nimaš dostopa do skrbništva uporabnikov. Vsi poskusi dostopa do nepooblaščenih funkcij se beležijo.',
+    38 => 'Žal nimaš dostopa do skrbništva vtičnikov. Vsi poskusi dostopa do nepooblaščenih funkcij se beležijo.',
+    39 => 'Žal nimaš dostopa do skrbništva elektronske pošte. Vsi poskusi dostopa do nepooblaščenih funkcij se beležijo.',
     40 => 'Sistemsko sporočilo',
-    41 => 'Žal nimaš dostopa do strani za menjavo besed. Vsi poizkusi nedovoljenega dostopa se beležijo!',
-    42 => 'Beseda je bila uspešno shranjena.',
-    43 => 'Beseda je bila uspešno pobrisana.',
-    44 => 'Vtičnik je bil uspešno nameščen!',
-    45 => 'Vtičnik je bil odstranjen.',
-    46 => 'Žal nimate dostopa do bekapa baze. Vsak poskus nedovoljenega dostopa se beleži',
-    47 => 'To deluje samo pod operacijskim sistemom *nix.  Če uporabljaš *nix za svoj operacijski sistem, potem je bil cache uspešno izpraznjen. Če uporabljaš Windows OS, boš moral poiskati datoteke po imenu adodb_*.php in jih pobrisati ročno.',
-    48 => "Hvala ker ste se prijavili za članstvo v {$_CONF['site_name']}. Naše osebje vam bo sporočilo odgovor v kratkem. Če boste sprejeti, vam bomo poslali vaše geslo email naslov, ki te ga ravnokar napisali.",
-    49 => 'Skupina je bila uspešno shranjena.',
-    50 => 'Skupina je bila uspešno izbrisana.',
-    51 => 'To uporabniško ime je že zasedeno. Prosim izberi drugo.',
-    52 => 'Vpisani email ne izgleda kot pravi email naslov.',
+    41 => 'Žal nimaš dostopa do strani za menjavo besed. Vsi poskusi dostopa do nepooblaščenih funkcij se beležijo.',
+    42 => 'Beseda je uspešno shranjena.',
+    43 => 'Beseda je uspešno izbrisana.',
+    44 => 'Vtičnik je uspešno nameščen.',
+    45 => 'Vtičnik je uspešno odstranjen.',
+    46 => 'Žal nimaš dostopa do varnostnih kopij baze. Vsak poskus nedovoljenega dostopa se beleži.',
+    47 => 'To deluje samo v operacijskem sistemu *nix.  Če uporabljaš operacijski sistem, potem *nix , je bil cache uspešno izpraznjen. Če uporabljaš Windows OS, boš moral poiskati datoteke po imenu adodb_*.php in jih odstraniti ročno.',
+    48 => "Hvala, da si zaprosil za članstvo v {$_CONF['site_name']}. Pregledali bomo tvojo prošnjo. Če bo odobrena, boš dobil geslo na e-naslov, ki si ga ravnokar vnesel.",
+    49 => 'Skupina je uspešno shranjena.',
+    50 => 'Skupina je uspešno izbrisana.',
+    51 => 'To uporabniško ime je že zasedeno. Prosim izberi drugega.',
+    52 => 'Vpisani e-naslov ne izgleda kot pravi e-naslov.',
     53 => 'Tvoje novo geslo je sprejeto. Prosim uporabi to novo geslo spodaj za vpis v sistem.',
-    54 => 'Tvoja zahteva za novo geslo je potekla. Prosim poizkusi ponovno spodaj.',
-    55 => 'Poslal sem Email. Na tvoj naslov bi moral priti takoj. Prosim upoštevaj navodila v tem emailu, za izbiro novega gesla za svoj račun.',
-    56 => 'Vpisani email je že uporabljen za enega od računov na naši bazi podatkov.',
-    57 => 'Tvoj račun je bil uspešno pobrisan.',
-    58 => '(RDF) vsebina je bila uspešno shranjena.',
-    59 => '(RDF) vsebina je bila uspešno izbrisana.',
-    60 => 'Vtičnik je bil uspešno obnovljen (updated)',
-    61 => 'Vtičnik %s: Neznan okvir sporočila (Unknown message placeholder)',
-    62 => 'The trackback comment has been deleted.',
-    63 => 'An error occurred when deleting the trackback comment.',
-    64 => 'Your trackback comment has been successfully sent.',
-    65 => 'Weblog directory service successfully saved.',
-    66 => 'The weblog directory service has been deleted.',
-    67 => 'The new password does not match the confirmation password!',
-    68 => 'You have to enter the correct current password.',
-    69 => 'Your account has been blocked!',
-    70 => 'Your account is awaiting administrator approval.',
-    71 => 'Your account has now been confirmed and is awaiting administrator approval.',
-    72 => 'An error occured while attempting to install the plugin. See error.log for details.',
-    73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
-    74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    54 => 'Tvoja zahteva za novo geslo je potekla. Prosim poskusi ponovno spodaj.',
+    55 => 'Poslali smo ti e-pošto. Na tvoj e-naslov bi morala prispeti vsak čas. Za izbiro novega gesla za svoj račun prosim upoštevaj navodila v e-pošti.',
+    56 => 'Vpisani e-naslov je že uporabljen za enega od računov v naši bazi podatkov.',
+    57 => 'Tvoj račun je uspešno pobrisan.',
+    58 => 'Združena vsebina je uspešno shranjena.',
+    59 => 'Združena vsebina je uspešno izbrisana.',
+    60 => 'Vtičnik je uspešno posodobljen.',
+    61 => 'Vtičnik %s: Neznan okvir sporočila.',
+    62 => 'Trackback komentar je izbrisan.',
+    63 => 'Med brisanjem trackback komentarja je prišlo do napake.',
+    64 => 'Trackback komentar je bil uspešno odposlan.',
+    65 => 'Storitev za Weblog directory je uspešno shranjena.',
+    66 => 'Storitev za Weblog directory je izbrisana.',
+    67 => 'Novo geslo se ne ujema s potrditvenim geslom.',
+    68 => 'Vnesi pravilno veljavno geslo.',
+    69 => 'Tvoj račun je blokiran.',
+    70 => 'Tvoj račun čaka na skrbnikovo odobritev.',
+    71 => 'Tvoj račun je sedaj potrjen in čaka na skrbnikovo odobritev.',
+    72 => 'Med nameščanjem vtičnika je prišlo do napake. Za podrobnosti glej error.log.',
+    73 => 'Med deinstaliranjem vtičnika je prišlo do napake. Za podrobnosti glej error.log.',
+    74 => 'Pingback je uspešno odposlan.',
+    75 => 'Trackbacks morajo biti poslani prek zahteve po objavi.',
+    76 => 'Hočeš res izbrisati ta predmet?',
+    77 => 'OPOZORILO:<br>Privzeto kodiranje si nastavil/a na UTF-8, a tvoj sterežnik ne podpira večbajtnega kodiranja. Namesti funkcije mbstring za PHP ali izberi drug nabor znakov/jezik.',
+    78 => 'Zagotovi prosim, da sta e-naslov in naslov potrditvene e-pošte ista.',
+    79 => 'Stran, ki jo poskušaš odpreti, se nanaša na funkcijo, ki na tem mestu ne obstaja več.',
+    80 => 'Vtičnik, ki je ustvaril to združeno vsebino, je trenutno onemogočen. Te združene vsebine ne bo mogoče urejati, dokler ne bo starševski  vtičnik ponovno omogočen.',
+    81 => 'Mogoče si narobe vtipkal/a login credentials. Poskusi se prosim ponovno prijaviti spodaj.',
+    82 => 'Število dovoljenih poskusov prijave je bilo preseženo. Prosim poskusi ponovno pozneje.',
+    83 => 'Za spremembo gesla in e-naslova ter za izbiro tega, koliko časa naj si te stran zapomni, vnesi svoje trenutno veljavno geslo.',
+    84 => 'Za izbris svojega računa vnesi svoje trenutno veljavno geslo.'
 );
 
 ###############################################################################
 
 $LANG_ACCESS = array(
     'access' => 'Dostop',
-    'ownerroot' => 'Lastnik/Root',
+    'ownerroot' => 'Lastnik/Koren (Root)',
     'group' => 'Skupina',
     'readonly' => 'Samo za branje',
     'accessrights' => 'Pravice dostopa',
     'owner' => 'Lastnik',
-    'grantgrouplabel' => 'Dovoli zgornji skupini pravice spreminjanja',
-    'permmsg' => 'OBVESTILO: uporabniki so vsi prijavljeni člani, anonimni uporabniki in vsi trenutni neprijavljeni obiskovalci strani.',
+    'grantgrouplabel' => 'Dodeli zgornji skupini pravice za spreminjanje',
+    'permmsg' => 'OBVESTILO: Uporabniki so vsi prijavljeni člani, anonimni uporabniki in vsi trenutni neprijavljeni obiskovalci strani.',
     'securitygroups' => 'Varnostne skupine',
-    'editrootmsg' => "Čeprav ste administrator, ne morete spreminjati nastavitev root uporabnika, če sami niste root uporabnik. Lahko pa urejate nastavitve vseh ostalih uporabnikov. Vsi poizkusi nedovoljenega dostopa se beležijo. Vrnite se na <a href=\"{$_CONF['site_url']}/admin/users.php\">Administratorske strani</a>.",
-    'securitygroupsmsg' => 'Izberite skupine, katerim naj pripada uporabnik',
+    'editrootmsg' => "Čeprav si skrbnik, ne moreš spreminjati nastavitev korenskega uporabnika, če nisi sam korenski uporabnik. Lahko pa urejaš nastavitve vseh drugih uporabnikov. Vsi poskusi dostopa do nepooblaščenih funkcij se beležijo. Vrni se na <a href=\"{$_CONF['site_url']}/admin/users.php\">stran za skrbništvo uporabnikov</a>.",
+    'securitygroupsmsg' => 'Izberite skupine, ki naj jim pripada uporabnik',
     'groupeditor' => 'Urejanje skupin',
     'description' => 'Opis',
     'name' => 'Ime',
     'rights' => 'Pravice',
     'missingfields' => 'Manjkajoča polja',
-    'missingfieldsmsg' => 'Vpišite ime in opis skupine!',
-    'groupmanager' => 'Administracija skupin',
-    'newgroupmsg' => 'Izberite skupinpo, ki jo želeite odstraniti skupino ali spremeniti njene nastavitve. Če želite oblikovati novo skupino, kliknite na Nova skupina zgoraj! Osnovnih skupin ni mogoče odstraniti!',
+    'missingfieldsmsg' => 'Vpiši ime in opis skupine.',
+    'groupmanager' => 'Upravitelj skupin',
+    'newgroupmsg' => 'Za spreminjanje ali izbris skupine kliknite na njeno ikono za urejanje spodaj. Če hočete oblikovati novo skupino, kliknite na "Ustvari" zgoraj. Jedrnih skupin ni mogoče odstraniti, ker jih uporablja sistem.',
     'groupname' => 'Ime skupine',
-    'coregroup' => 'Osnovna skupina',
+    'coregroup' => 'Jedrna skupina',
     'yes' => 'Da',
     'no' => 'Ne',
-    'corerightsdescr' => "Ta skupina je osnovna skupina {$_CONF['site_name']}. Pravice te skupine ne morejo biti spremenjene. Pravice, ki pripadajo tej skupini so na spodnjem seznamu!",
-    'groupmsg' => 'Varnost skupin na tej strnai je urejena hierarhično. Vsaka podskupina ima enake pravice kot njena nadskupina. Zato je priporočljiva uporaba podskupin. Če skupina potrebuje posebne pravice, jih izberite v meniju \'Pravice\'.',
-    'coregroupmsg' => "Ta skupina je osnovna skupina strani {$_CONF['site_name']}. Nastavitve skupin, ki ji pripadajo zato ne morejo biti spremenjene. Spodnji seznam vsebuje imena skupin, ki ji pripadajo.",
-    'rightsdescr' => 'Pravice, ki jih določite skupini, so avtomatsko dodeljene tudi vsem njenim podskupinam. Pravice lahko dodajate tako, da jih izberete iz spodnjega seznama. Če določena pravica nima \'checkboxa\' pomeni, da ji je ta pravica dodeljena, ker je podskupina neke druge skupine.',
+    'corerightsdescr' => "Ta skupina je jedrna skupina {$_CONF['site_name']}. Njenih pravic se ne da urejati. Pravice, ki pripadajo tej skupini, si poglej na spodnjem seznamu.",
+    'groupmsg' => 'Varnostne skupine na tej strani so urejene hierarhično. Če to skupino dodaš h kateri koli od spodnjih skupin, ji bodo s tem dodeljene iste pravice, kot jih imajo tiste skupine. Če je le mogoče,  skupinam dodeli pravice tako, da jih dodaš k spodnjim skupinam. Če naj ima ta skupina pravice po meri, lahko pravice do raznih funkcij te spletne strani izbereš spodaj v meniju \'Pravice\'. Če hočeš to skupino dodati h kateri od spodnjih skupin, potrdi okence poleg ene ali več želenih skupin.',
+    'coregroupmsg' => "Ta skupina je jedrna skupina strani {$_CONF['site_name']}. Nastavitve skupin, ki ji pripadajo zato ne morejo biti spremenjene. Spodnji seznam vsebuje imena skupin, ki ji pripadajo.",
+    'rightsdescr' => 'Dostop skupine do določene spodaj navedene pravice je lahko dodan tej skupini neposredno ALI pa drugi skupini, katere del je ta skupina. Tiste od spodaj navedenih pravic, ki nimajo potrditvenega okenca, so tej skupini že dodeljene zato, ker pripada drugi skupini, ki to pravico ima. Tiste od spodaj navedenih pravic, ki imajo potrdirveno okence, pa lahko skupini dodate neposredno.',
     'lock' => 'Zakleni',
-    'members' => 'člani',
+    'members' => 'Člani',
     'anonymous' => 'Anonimni uporabnik',
-    'permissions' => 'Pravice',
-    'permissionskey' => 'R = branje, E = spreminjanje, pravice spreminjanja predpostavljajo pravice branja',
+    'permissions' => 'Dovoljenja',
+    'permissionskey' => 'R = branje, E = urejanje, pravice urejanja predpostavljajo pravice branja',
     'edit' => 'Uredi',
     'none' => 'Nihče',
-    'accessdenied' => 'Dostop zavrnjen!',
-    'storydenialmsg' => "Žal nimate dostopa do tega članka. Morda zato, ker niste registrirani uporabnik {$_CONF['site_name']}? <a href=users.php?mode=New> Registrirajte se!</a> in dobili boste popoln dostop do strani {$_CONF['site_name']}",
-    'eventdenialmsg' => "Žal nimate dostopa do tega dogodka. Morda zato, ker niste registrirani uporabnik {$_CONF['site_name']}? <a href=users.php?mode=New> Registrirajte se!</a> in dobili boste popoln dostop do strani {$_CONF['site_name']}",
-    'nogroupsforcoregroup' => 'Ta skupina ne pripada nobeni od preostalih skupin',
-    'grouphasnorights' => 'Ta skupina nima nobenih administratorskih pravic.',
+    'accessdenied' => 'Dostop zavrnjen',
+    'storydenialmsg' => "Žal nimaš dostopa do tega članka. Morda zato, ker nisi član? <a href=\"{$_CONF['site_url']}/users.php?mode=new\">Postani član</a> spletne strani {$_CONF['site_name']} in dobil/a boš popoln dostop.",
+    'nogroupsforcoregroup' => 'Ta skupina ne pripada nobeni drugi skupini',
+    'grouphasnorights' => 'Ta skupina nima dostopa do skrbniških funkcij na tem spletnem mestu.',
     'newgroup' => 'Nova skupina',
-    'adminhome' => 'Administratorske strani',
-    'save' => 'Shrani',
-    'cancel' => 'Prekliči',
-    'delete' => 'Izbriši',
-    'canteditroot' => 'Poizkusili ste urejati nastavitve glavne skupine. Ker niste član glavne skupine je vaš dostop zavrnjen. Če mislite, da je to napaka, kontatkirajte administratorja sistema.',
-    'listusers' => 'Izpiši uporabnike',
-    'listthem' => 'Izpis',
+    'adminhome' => 'Skrbnikova stran',
+    'save' => 'shrani',
+    'cancel' => 'prekliči',
+    'delete' => 'izbriši',
+    'canteditroot' => 'Poskusil/a si urejati jedrno skupino, a ker nisi njen član, je tvoj dostop zavrnjen. Če misliš, da gre za napako, se posvetuj s skrbnikom sistema.',
+    'listusers' => 'Člani',
+    'listthem' => 'seznam',
     'usersingroup' => 'Uporabniki v skupini %s',
-    'usergroupadmin' => 'Administracija skupin uporabnikov',
+    'usergroupadmin' => 'Skrbništvo skupin uporabnikov',
     'add' => 'Dodaj',
     'remove' => 'Odstrani',
-    'availmembers' => 'Uporabniki na voljo',
+    'availmembers' => 'Člani na voljo',
     'groupmembers' => 'Člani skupine',
-    'canteditgroup' => 'Za urejanje te skupine, morate biti njen član. Prosim posvetujte se z administratorjem, če se vam zdi da je to sporočilo napaka.',
-    'cantlistgroup' => 'To see the members of this group, you have to be a member yourself. Please contact the system administrator if you feel this is an error.',
-    'editgroupmsg' => 'To modify the group membership, click on the member names(s) and use the add or remove buttons. If the member is a member of the group, their name will appear on the right side only. Once you are complete - press <b>Save</b> to update the group and return to the main group admin page.',
-    'listgroupmsg' => 'Listing of all current members in the group: <b>%s</b>',
-    'search' => 'Search',
-    'submit' => 'Submit',
-    'limitresults' => 'Limit Results',
-    'group_id' => 'Group ID',
-    'plugin_access_denied_msg' => 'You are illegally trying access a plugin administration page.  Please note that all attempts to illegally access this page are logged.',
-    'groupexists' => 'Group name already exists',
-    'groupexistsmsg' => 'There is already a group with this name. Group names must be unique.'
+    'canteditgroup' => 'Za urejanje te skupine moraš biti njen član. Če misliš, da gre za napako, se posvetuj s skrbnikom sistema.',
+    'cantlistgroup' => 'Da lahko vidiš člane te skupine, moraš biti njen član. Če misliš, da gre za napako, se posvetuj s skrbnikom sistema.',
+    'editgroupmsg' => 'Za spreminjanje članstva v skupini klikni na izbrana imena članov in uporabi gumb Dodaj ali Odstrani. Če je član tudi član te skupine, se bo njegovo ime pojavilo samo ne desni strani. Ko končaš, pritisni na <b>Shrani</b>, da se skupina posodobi, in se vrni na glavno stran za skrbništvo skupin uporabnikov.',
+    'listgroupmsg' => 'Seznam vseh trenutnih članov skupine: <b>%s</b>',
+    'search' => 'Išči',
+    'submit' => 'Oddaj',
+    'limitresults' => 'Rezultati omejitve',
+    'group_id' => 'ID skupine',
+    'plugin_access_denied_msg' => 'Nedovoljeno poskušaš dostopiti do strani za skrbništvo vtičnikov. Vedi, da se vsi nedovoljeni poskusi dostopa do te strani beležijo.',
+    'groupexists' => 'Ime skupine že obstaja',
+    'groupexistsmsg' => 'Skupina s tem imenom že obstaja. Imena skupin morajo biti različna.'
 );
 
 ###############################################################################
 # admin/database.php
 
 $LANG_DB_BACKUP = array(
-    'last_ten_backups' => 'Zadnjih 10 backupov',
-    'do_backup' => 'Naredi backup',
-    'backup_successful' => 'Bravo. Baza podatkov se je uspešno bekapirala ;-).',
-    'db_explanation' => 'Če želite narediti backup vašega Geeklog sistema, kliknite gumb spodaj',
-    'not_found' => "Napačna pot ali mysqldump utility nima izvrševalnih pravic.<br>Preveri <strong>\$_DB_mysqldump_path</strong> definicijo v config.php.<br>Spremenljivka je trenutno definirana kot: <var>{$_DB_mysqldump_path}</var>",
-    'zero_size' => 'Backup neuspešen: Velikost datoteka je bila 0 bytov',
+    'last_ten_backups' => 'Zadnjih 10 varnostnih kopij',
+    'do_backup' => 'Naredi varnostno kopijo',
+    'backup_successful' => 'Varnostno shranjevanje baze podatkov je bilo uspešno.',
+    'db_explanation' => 'Če hočeš ustvariti novo varnostno kopijo baze podatkov sistema Geeklog , klikni "Ustvari" zgoraj.',
+    'not_found' => "Napačna pot ali pa orodje mysqldump ni izvršljivo.<br>Preveri definicijo <strong>\$_DB_mysqldump_path</strong> v config.php.<br>Spremenljivka je trenutno definirana kot: <var>{$_DB_mysqldump_path}</var>",
+    'zero_size' => 'Varnostno kopiranje neuspešno: Velikost datoteke je 0 bajtov',
     'path_not_found' => "{$_CONF['backup_path']} ne obstaja ali pa ni direktorij",
     'no_access' => "NAPAKA: Direktorij {$_CONF['backup_path']} ni dosegljiv.",
-    'backup_file' => 'Backup datoteka',
+    'backup_file' => 'Datoteka z varnostno kopijo',
     'size' => 'Velikost',
-    'bytes' => 'Bytov',
-    'total_number' => 'Skupno število bekapov: %d'
+    'bytes' => 'Bajtov',
+    'total_number' => 'Skupno število varnostnih kopij: %d'
 );
 
 ###############################################################################
 
 $LANG_BUTTONS = array(
     1 => 'Domov',
-    2 => 'Kontakt',
+    2 => 'Stik',
     3 => 'Objavi',
-    4 => 'Povezave',
-    5 => 'Ankete',
-    6 => 'Koledar',
+    4 => '',
+    5 => '',
+    6 => '',
     7 => 'Statistika strani',
     8 => 'Osebne nastavitve',
     9 => 'Išči',
-    10 => 'Napredno iskanje',
-    11 => 'Directory'
+    10 => 'napredno iskanje',
+    11 => 'Direktorij'
 );
 
 ###############################################################################
@@ -1271,17 +1248,17 @@
 
 $LANG_404 = array(
     1 => 'Napaka 404',
-    2 => 'Ups, pogledal sem povsod, ampak ne najdem <b>%s</b>.',
-    3 => "<p>Žal mi je, ampak, datoteka ki jo zahtevaš ne obstaja. Prosim preveri <a href=\"{$_CONF['site_url']}\">glavno stran</a> ali <a href=\"{$_CONF['site_url']}/search.php\">iskalno stran</a> in poglej če lahko najdeš kar si izgubil."
+    2 => 'Pogledal sem povsod, ampak ne najdem <b>%s</b>.',
+    3 => "<p>Žal datoteka, ki jo zahtevaš, ne obstaja. Prosim preveri <a href=\"{$_CONF['site_url']}\">glavno stran</a> ali <a href=\"{$_CONF['site_url']}/search.php\">iskalno stran</a> in poglej, če lahko najdeš, kar si izgubil."
 );
 
 ###############################################################################
 # login form
 
 $LANG_LOGIN = array(
-    1 => 'Zahtevan je vpis',
-    2 => 'Žal, za ogled tega dela strani, moraš biti logiran kot uporabnik.',
-    3 => 'Logiraj se',
+    1 => 'Zahtevana je prijava',
+    2 => 'Oprosti, za ogled tega dela strani moraš biti prijavljen kot uporabnik.',
+    3 => 'Prijava',
     4 => 'Nov uporabnik'
 );
 
@@ -1289,20 +1266,20 @@
 # pdfgenerator.php
 
 $LANG_PDF = array(
-    1 => 'PDF način je onemogočen',
-    2 => 'Zahtevani dokument ni bil renderiran. Dokument je bil prejte ampak ga ni bilo možno sprocesirati. Prosim prepričaj se da pošiljaš PDF procesorju samo dokumente v obliki html, ki so bili napisani po xHTML standardu. Upoštevajte da pri pre-kompleksnih dokumentih lahko pride do tega, da se sploh ne sprocesirajo. Dokument ki je nastal na vašo zahtevo je dolg 0 bytov, in je bil izbrisan. Če ste prepričani, da bi se ta dokument moral pravilno izračunati, ga prosimo pošljite ponovno.',
-    3 => 'Neznana napaka med izdelavo PDF dokumenta',
-    4 => "Dobil nisem nobenih podatkov o strani, ali pa želite uporabiti ad-hoc PDF generator spodaj. Če mislite da ste dobili to stran\n          Po nesreči prosim sporočite to upravniku strani. Če temu ni tako, lahko uporabite spodnjo formo in si ustvarite PDF dokumente na način ad-hoc.",
-    5 => 'Nalagam vaš dokument.',
-    6 => 'Prosim počakajte, da naložim vaš dokument.',
-    7 => 'Spodnji gumb lahko kliknete z desnim miškinim gumbom in izberete \'save target...\' ali \'save link location...\' da shranite kopijo dokumenta.',
-    8 => "Pot do HTMLDoc izvršilne datoteke, ki je zapisana v nastavitvah je napačna in sistem je ne more zagnati. Prosimo sporočite ta problem upravniku strani\n          če se ponavlja.",
+    1 => 'Funkcija PDF je onemogočena',
+    2 => 'Priskrbljeni dokument ni bil renderiran. Bil je prejet, ampak ga ni bilo mogoče procesirati. Pepričaj se, da oddajaš samo dokumente v obliki html, ki so bili napisani po standardu xHTML. Izjemno kompleksni dokumenti se lahko renderirajo nepravilno ali pa sploh ne. Dokument, ki je nastal v poskusu renderiranja, je imel 0 bajtov in je bil izbrisan. Če si prepričan/a, da bi se ta dokument moral pravilno renderirati, ga pošlji ponovno.',
+    3 => 'Neznana napaka med izdelavo dokumenta PDF',
+    4 => "Podatki o strani niso bili podani ali pa hočeš uporabiti orodje za ad-hoc izdelavo dokumentov PDF spodaj. Če misliš, da si to stran dobil/a pomotoma, prosim sporoči to skrbniku sistema. V nasprotnem primeru lahko uporabiš spodnji obrazec in ustvariš dokumente PDF na način ad-hoc.",
+    5 => 'Nalagam dokument.',
+    6 => 'Prosim počakaj, dokument se nalaga.',
+    7 => 'Spodnji gumb lahko desnokliknete in izberete \'shrani ciljni dokument ...\' ali \'shrani mesto povezave ...\', da shranite kopijo dokumenta.',
+    8 => "Pot do izvršilne datoteke HTMLDoc, ki je zapisana v nastavitvah, je napačna, zato je sistem ne more zagnati. Če se težava ponavlja, to prosim sporočite skrbniku strani.",
     9 => 'Izdelovalnik PDF',
-    10 => "To je orodje za Ad-hoc izdelavo PDF dokumentov. Orodje bo poizkusilo predelati vse URL naslove v PDF. Prosim zavedaj se, da se nekatere internetne strani NE bodo pravilno renderirale s tem načinom (ad-hoc).  To\n           je omejitev orodja HTMLDoc in teh napak ne rabite prijavljati upravniku strani",
+    10 => "To je orodje za ad-hoc izdelavo dokumentov PDF. Orodje bo poskusilo predelati vse URL-je  v PDF-ju. Prosim zavedaj se, da se nekatere spletne strani s tem načinom ne bodo pravilno renderirale.  To je omejitev orodja HTMLDoc za izdelavo dokumentov PDF, zato teh napak ni treba prijavljati skrbniku strani.",
     11 => 'URL',
-    12 => 'Naredi PDF!',
-    13 => 'PHP konfiguracija na tem serverju ne dovoli odpiranja internetnih naslovov (URL) z ukazom fopen(). Upravnik strani mora popraviti php.ini datoteko in v njej prestaviti allow_url_fopen na On',
-    14 => 'PDF ki ste ga zahtevali ali ne obstaja ali pa ste nepravilno dostopali do datoteke.'
+    12 => 'Izdelaj PDF!',
+    13 => 'PHP konfiguracija na tem strežniku ne dovoli odpiranja URL-jev z ukazom fopen(). Skrbnik strani mora popraviti datoteko php.ini, tako da v njej prestavi allow_url_fopen na On.',
+    14 => 'Zahtevani PDF ne obstaja ali pa si poskusil/a do datoteke dostopiti nedovoljeno.'
 );
 
 ###############################################################################
@@ -1388,7 +1365,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1399,7 +1377,7 @@
     'title_year' => 'Article Directory for %d',
     'title_month_year' => 'Article Directory for %s %d',
     'nav_top' => 'Back to Article Directory',
-    'no_articles' => 'No articles.'
+    'no_articles' => 'Ni člankov.'
 );
 
 ###############################################################################
@@ -1413,18 +1391,49 @@
 # %s    scale, "hrs", "weeks"
 
 $LANG_WHATSNEW = array(
-    'new_string' => '%n new %i in the last %t %s',
-    'new_last' => 'last %t %s',
-    'minutes' => 'minutes',
-    'hours' => 'hours',
-    'days' => 'days',
-    'weeks' => 'weeks',
-    'months' => 'months',
-    'minute' => 'minute',
-    'hour' => 'hour',
-    'day' => 'day',
-    'week' => 'week',
-    'month' => 'month'
+    'new_string' => '%n novi %i v zadnjih %t %s',
+    'new_last' => 'zadnja %t %s',
+    'minutes' => 'minut',
+    'hours' => 'urah',
+    'days' => 'dni',
+    'weeks' => 'tedna',
+    'months' => 'mesecev',
+    'minute' => 'minuta',
+    'hour' => 'ura',
+    'day' => 'dan',
+    'week' => 'teden',
+    'month' => 'mesec'
+);
+
+###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'januar',
+    2 => 'februar',
+    3 => 'marec',
+    4 => 'april',
+    5 => 'maj',
+    6 => 'junij',
+    7 => 'julij',
+    8 => 'avgust',
+    9 => 'september',
+    10 => 'oktober',
+    11 => 'november',
+    12 => 'december'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'nedelja',
+    2 => 'ponedeljek',
+    3 => 'torek',
+    4 => 'sreda',
+    5 => 'četrtek',
+    6 => 'petek',
+    7 => 'sobota'
 );
 
 ###############################################################################
@@ -1434,23 +1443,28 @@
 # display administration lists and edit pages
 
 $LANG_ADMIN = array(
-    'search' => 'Search',
-    'limit_results' => 'Limit Results',
-    'submit' => 'Submit',
-    'edit' => 'Edit',
-    'admin_home' => 'Admin Home',
-    'create_new' => 'Create New',
-    'enabled' => 'Enabled',
-    'title' => 'Title',
-    'type' => 'Type',
-    'topic' => 'Topic',
-    'help_url' => 'Help File URL',
-    'save' => 'Save',
-    'cancel' => 'Cancel',
-    'delete' => 'Delete',
-    'copy' => 'Copy',
-    'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'search' => 'Išči',
+    'limit_results' => 'Omeji rezultate',
+    'submit' => 'Oddaj',
+    'edit' => 'Uredi',
+    'edit_adv' => 'Napr. urejanje',
+    'admin_home' => 'Skrbnikova stran',
+    'create_new' => 'Ustvari',
+    'create_new_adv' => 'Ustvari (napredno)',
+    'enabled' => 'Omogočeno',
+    'title' => 'Naslov',
+    'type' => 'Tip',
+    'topic' => 'Rubrika',
+    'help_url' => 'URL dokumenta za pomoč',
+    'save' => 'Shrani',
+    'cancel' => 'Prekliči',
+    'delete' => 'Izbriši',
+    'delete_sel' => 'Izbriši izbrano',
+    'copy' => 'Kopiraj',
+    'no_results' => '- Ni najdenih vnosov -',
+    'data_error' => 'Pri obdelavi naročniških podatkov je prišlo do napake. Prosim preveri podatke.',
+    'preview' => 'Predogled',
+    'records_found' => 'Najdeni zapisi'
 );
 
 ###############################################################################
@@ -1459,56 +1473,56 @@
 # database.
 
 $LANG_commentcodes = array(
-    0 => 'Comments Enabled',
-    -1 => 'Comments Disabled'
+    0 => 'Komentarji omogočeni',
+    -1 => 'Komentarji onemogočeni'
 );
 
 
 $LANG_commentmodes = array(
-    'flat' => 'Flat',
-    'nested' => 'Nested',
-    'threaded' => 'Threaded',
-    'nocomment' => 'No Comments'
+    'flat' => 'Plosko',
+    'nested' => 'Gnezdeno',
+    'threaded' => 'Nitno',
+    'nocomment' => 'Brez komentarjev'
 );
 
 $LANG_cookiecodes = array(
     0 => '(don\'t)',
-    3600 => '1 Hour',
-    7200 => '2 Hours',
-    10800 => '3 Hours',
-    28800 => '8 Hours',
-    86400 => '1 Day',
-    604800 => '1 Week',
-    2678400 => '1 Month'
+    3600 => '1 ura',
+    7200 => '2 uri',
+    10800 => '3 ure',
+    28800 => '8 ur',
+    86400 => '1 dan',
+    604800 => '1 teden',
+    2678400 => '1 mesec'
 );
 
 $LANG_dateformats = array(
-    0 => 'System Default'
+    0 => 'Sistemsko privzeto'
 );
 
 $LANG_featurecodes = array(
-    0 => 'Not Featured',
-    1 => 'Featured'
+    0 => 'Ni udarni članek',
+    1 => 'Udarni članek'
 );
 
 $LANG_frontpagecodes = array(
-    0 => 'Show Only in Topic',
-    1 => 'Show on Front Page'
+    0 => 'Pokaži le v rubriki',
+    1 => 'Pokaži na prvi strani'
 );
 
 $LANG_postmodes = array(
-    'plaintext' => 'Plain Old Text',
-    'html' => 'HTML Formatted'
+    'plaintext' => 'Samo besedilo',
+    'html' => 'Oblikovano v HTML'
 );
 
 $LANG_sortcodes = array(
-    'ASC' => 'Oldest First',
-    'DESC' => 'Newest First'
+    'ASC' => 'Najprej najstarejši',
+    'DESC' => 'Najprej najnovejši'
 );
 
 $LANG_trackbackcodes = array(
-    0 => 'Trackback Enabled',
-    -1 => 'Trackback Disabled'
+    0 => 'Trackback omogočen',
+    -1 => 'Trackback onemogočen'
 );
 
 ?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/spanish_argentina.php 1.4.1.src/cpanel-glprivate/language/spanish_argentina.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/spanish_argentina.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/spanish_argentina.php	2006-09-17 03:58:44.000000000 -0500
@@ -161,28 +161,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendario de Eventos',
-    2 => 'Disculpe, no hay eventos para mostrar.',
-    3 => 'Cuando',
-    4 => 'Donde',
-    5 => 'Descripcin',
-    6 => 'Agregar un Evento',
-    7 => 'Prximos Eventos',
-    8 => 'Al agregar este evento en su calendario usted podr ver rpidamente los eventos que le interesan. Para ello elija "Mi Calendario" en el rea de Funciones del usuario.',
-    9 => 'Agregar a Mi Calendario',
-    10 => 'Sacar de Mi Calendario',
-    11 => "Agregando el Evento al Calendario de {$_USER['username']}",
-    12 => 'Evento',
-    13 => 'Empieza',
-    14 => 'Termina',
-    15 => 'Volver al Calendario'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -344,7 +326,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -661,38 +676,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editor de Eventos',
-    2 => 'Error',
-    3 => 'Ttulo',
-    4 => 'URL',
-    5 => 'Fecha de Inicio',
-    6 => 'Fecha de Finalizacin',
-    7 => 'Lugar',
-    8 => 'Descripcin',
-    9 => '(incluir http://)',
-    10 => 'Necesita completar todos los campos de este formulario.',
-    11 => 'Administrador del Evento',
-    12 => 'Para modificar o borrar el evento seleccionarlo ms abajo. Para crear uno nuevo seleccionar \'Nuevo Evento\' ms arriba.',
-    13 => 'Ttulo',
-    14 => 'Fecha de Inicio',
-    15 => 'Fecha de Finalizacin',
-    16 => 'Acceso Denegado',
-    17 => "No tiene permiso para acceder a este Evento. Todo intento de acceso ser registrado. Por favor, vuelva a <a href=\"{$_CONF['site_admin_url']}/event.php\">la pgina de Administracin de Eventos</a>.",
-    18 => 'Nuevo Evento',
-    19 => 'Pgina de Inicio - Administrador',
-    20 => 'grabar',
-    21 => 'cancelar',
-    22 => 'borrar',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -783,7 +769,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -871,7 +859,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -901,53 +918,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Domingo',
-    2 => 'Lunes',
-    3 => 'Martes',
-    4 => 'Mircoles',
-    5 => 'Jueves',
-    6 => 'Viernes',
-    7 => 'Sbado',
-    8 => 'Agregar un Evento',
-    9 => 'Evento de Argos',
-    10 => 'Eventos para',
-    11 => 'Calendario Maestro',
-    12 => 'Mi Calendario',
-    13 => 'Enero',
-    14 => 'Febrero',
-    15 => 'Marzo',
-    16 => 'Abril',
-    17 => 'Mayo',
-    18 => 'Junio',
-    19 => 'Julio',
-    20 => 'Agosto',
-    21 => 'Septiembre',
-    22 => 'Octubre',
-    23 => 'Noviembre',
-    24 => 'Deciembre',
-    25 => 'Volver a ',
-    26 => 'Todo el da',
-    27 => 'Semana',
-    28 => 'Calendario Personal para',
-    29 => 'Calendario Pblico',
-    30 => 'borrar evento',
-    31 => 'Agregar',
-    32 => 'Evento',
-    33 => 'Fecha',
-    34 => 'Hora',
-    35 => 'Agregado rpido',
-    36 => 'Enviar',
-    37 => 'Disculpe, la opcin de calendario personal no se encuentra habilitada en este sitio',
-    38 => 'Editor Personal de Eventos',
-    39 => 'Da',
-    40 => 'Semana',
-    41 => 'Mes'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1071,7 +1041,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1152,7 +1124,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1194,7 +1175,6 @@
     'none' => 'Ninguno',
     'accessdenied' => 'Acceso Denegado',
     'storydenialmsg' => "No tiene acceso para ver esta Nota. Esto puede ser porque no es miembro de {$_CONF['site_name']}. Por favor <a href=users.php?mode=new>convirtase en un miembro</a> de {$_CONF['site_name']} para tener acceso.",
-    'eventdenialmsg' => "No tiene acceso para ver este Evento. Esto puede ser porque no es miembro de {$_CONF['site_name']}. Por favor <a href=users.php?mode=new>convirtase en un miembro</a> de {$_CONF['site_name']} para tener acceso.",
     'nogroupsforcoregroup' => 'Este grupo no pertenece a ninguno de los otros grupos',
     'grouphasnorights' => 'Este grupo no tiene acceso a las funciones de administracin',
     'newgroup' => 'Nuevo Grupo',
@@ -1380,7 +1360,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1420,6 +1401,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Enero',
+    2 => 'Febrero',
+    3 => 'Marzo',
+    4 => 'Abril',
+    5 => 'Mayo',
+    6 => 'Junio',
+    7 => 'Julio',
+    8 => 'Agosto',
+    9 => 'Septiembre',
+    10 => 'Octubre',
+    11 => 'Noviembre',
+    12 => 'Deciembre'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Domingo',
+    2 => 'Lunes',
+    3 => 'Martes',
+    4 => 'Mircoles',
+    5 => 'Jueves',
+    6 => 'Viernes',
+    7 => 'Sbado'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1430,8 +1442,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1440,9 +1454,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/spanish_argentina_utf-8.php 1.4.1.src/cpanel-glprivate/language/spanish_argentina_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/spanish_argentina_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/spanish_argentina_utf-8.php	2006-09-17 03:58:44.000000000 -0500
@@ -161,28 +161,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendario de Eventos',
-    2 => 'Disculpe, no hay eventos para mostrar.',
-    3 => 'Cuando',
-    4 => 'Donde',
-    5 => 'Descripción',
-    6 => 'Agregar un Evento',
-    7 => 'Próximos Eventos',
-    8 => 'Al agregar este evento en su calendario usted podrá ver rápidamente los eventos que le interesan. Para ello elija "Mi Calendario" en el área de Funciones del usuario.',
-    9 => 'Agregar a Mi Calendario',
-    10 => 'Sacar de Mi Calendario',
-    11 => "Agregando el Evento al Calendario de {$_USER['username']}",
-    12 => 'Evento',
-    13 => 'Empieza',
-    14 => 'Termina',
-    15 => 'Volver al Calendario'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -344,7 +326,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -661,38 +676,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editor de Eventos',
-    2 => 'Error',
-    3 => 'Título',
-    4 => 'URL',
-    5 => 'Fecha de Inicio',
-    6 => 'Fecha de Finalización',
-    7 => 'Lugar',
-    8 => 'Descripción',
-    9 => '(incluir http://)',
-    10 => 'Necesita completar todos los campos de este formulario.',
-    11 => 'Administrador del Evento',
-    12 => 'Para modificar o borrar el evento seleccionarlo más abajo. Para crear uno nuevo seleccionar \'Nuevo Evento\' más arriba.',
-    13 => 'Título',
-    14 => 'Fecha de Inicio',
-    15 => 'Fecha de Finalización',
-    16 => 'Acceso Denegado',
-    17 => "No tiene permiso para acceder a este Evento. Todo intento de acceso será registrado. Por favor, vuelva a <a href=\"{$_CONF['site_admin_url']}/event.php\">la página de Administración de Eventos</a>.",
-    18 => 'Nuevo Evento',
-    19 => 'Página de Inicio - Administrador',
-    20 => 'grabar',
-    21 => 'cancelar',
-    22 => 'borrar',
-    23 => 'Bad start date.',
-    24 => 'Bad end date.',
-    25 => 'End date is before start date.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -783,7 +769,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -871,7 +859,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -901,53 +918,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Domingo',
-    2 => 'Lunes',
-    3 => 'Martes',
-    4 => 'Miércoles',
-    5 => 'Jueves',
-    6 => 'Viernes',
-    7 => 'Sábado',
-    8 => 'Agregar un Evento',
-    9 => 'Evento de Argos',
-    10 => 'Eventos para',
-    11 => 'Calendario Maestro',
-    12 => 'Mi Calendario',
-    13 => 'Enero',
-    14 => 'Febrero',
-    15 => 'Marzo',
-    16 => 'Abril',
-    17 => 'Mayo',
-    18 => 'Junio',
-    19 => 'Julio',
-    20 => 'Agosto',
-    21 => 'Septiembre',
-    22 => 'Octubre',
-    23 => 'Noviembre',
-    24 => 'Deciembre',
-    25 => 'Volver a ',
-    26 => 'Todo el día',
-    27 => 'Semana',
-    28 => 'Calendario Personal para',
-    29 => 'Calendario Público',
-    30 => 'borrar evento',
-    31 => 'Agregar',
-    32 => 'Evento',
-    33 => 'Fecha',
-    34 => 'Hora',
-    35 => 'Agregado rápido',
-    36 => 'Enviar',
-    37 => 'Disculpe, la opción de calendario personal no se encuentra habilitada en este sitio',
-    38 => 'Editor Personal de Eventos',
-    39 => 'Día',
-    40 => 'Semana',
-    41 => 'Mes'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1071,7 +1041,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1152,7 +1124,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1194,7 +1175,6 @@
     'none' => 'Ninguno',
     'accessdenied' => 'Acceso Denegado',
     'storydenialmsg' => "No tiene acceso para ver esta Nota. Esto puede ser porque no es miembro de {$_CONF['site_name']}. Por favor <a href=users.php?mode=new>conviértase en un miembro</a> de {$_CONF['site_name']} para tener acceso.",
-    'eventdenialmsg' => "No tiene acceso para ver este Evento. Esto puede ser porque no es miembro de {$_CONF['site_name']}. Por favor <a href=users.php?mode=new>conviértase en un miembro</a> de {$_CONF['site_name']} para tener acceso.",
     'nogroupsforcoregroup' => 'Este grupo no pertenece a ninguno de los otros grupos',
     'grouphasnorights' => 'Este grupo no tiene acceso a las funciones de administración',
     'newgroup' => 'Nuevo Grupo',
@@ -1380,7 +1360,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1420,6 +1401,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Enero',
+    2 => 'Febrero',
+    3 => 'Marzo',
+    4 => 'Abril',
+    5 => 'Mayo',
+    6 => 'Junio',
+    7 => 'Julio',
+    8 => 'Agosto',
+    9 => 'Septiembre',
+    10 => 'Octubre',
+    11 => 'Noviembre',
+    12 => 'Deciembre'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Domingo',
+    2 => 'Lunes',
+    3 => 'Martes',
+    4 => 'Miércoles',
+    5 => 'Jueves',
+    6 => 'Viernes',
+    7 => 'Sábado'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1430,8 +1442,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1440,9 +1454,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/spanish.php 1.4.1.src/cpanel-glprivate/language/spanish.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/spanish.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/spanish.php	2006-09-17 03:58:44.000000000 -0500
@@ -161,28 +161,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendario de Eventos',
-    2 => 'Disculpa, no hay eventos para mostrar.',
-    3 => 'Cuando',
-    4 => 'Donde',
-    5 => 'Descripcin',
-    6 => 'Agrega un evento',
-    7 => 'Prximos eventos',
-    8 => 'Al agregar este evento a tu calendario podrs ver rpidamente los eventos que te interesen. Para ello elije "Mi Calendario" en el rea de Funciones del(a) usuario(a).',
-    9 => 'Agregar a Mi Calendario',
-    10 => 'Sacar de Mi Calendario',
-    11 => "Agregando el Evento al Calendario de {$_USER['username']}",
-    12 => 'Evento',
-    13 => 'Empieza',
-    14 => 'Termina',
-    15 => 'Volver al Calendario'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -344,7 +326,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -661,38 +676,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editor de Eventos',
-    2 => 'Error',
-    3 => 'Ttulo',
-    4 => 'URL',
-    5 => 'Fecha de Inicio',
-    6 => 'Fecha de Finalizacin',
-    7 => 'Lugar',
-    8 => 'Descripcin',
-    9 => '(incluye http://)',
-    10 => 'Tienes que completar todos los campos de este formulario.',
-    11 => 'Administrador del Evento',
-    12 => 'Para modificar o borrar un evento, pulsa en ese evento abajo. Para crear un Nuevo Evento pulsa sobre Evento Nuevo arriba. Pulsa sobre [C] para crear una copia de un evento ya existente.',
-    13 => 'Ttulo',
-    14 => 'Fecha de Inicio',
-    15 => 'Fecha de Finalizacin',
-    16 => 'Acceso Denegado',
-    17 => "No tienes permiso para acceder a este Evento. Todo intento de acceso ser registrado. Por favor, vuelve a <a href=\"{$_CONF['site_admin_url']}/event.php\">la pgina de Administracin de Eventos</a>.",
-    18 => 'Nuevo Evento',
-    19 => 'Pgina de Inicio - Administrador',
-    20 => 'guardar',
-    21 => 'cancelar',
-    22 => 'borrar',
-    23 => 'Fecha de inicio incorecta.',
-    24 => 'Fecha de terminacin incorrecta.',
-    25 => 'La fecha de terminacin es anterior a la de inicio.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -783,7 +769,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -871,7 +859,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -901,53 +918,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Domingo',
-    2 => 'Lunes',
-    3 => 'Martes',
-    4 => 'Mircoles',
-    5 => 'Jueves',
-    6 => 'Viernes',
-    7 => 'Sbado',
-    8 => 'Agrega un evento',
-    9 => 'Evento de %s',
-    10 => 'Eventos para',
-    11 => 'Calendario Maestro',
-    12 => 'Mi Calendario',
-    13 => 'Enero',
-    14 => 'Febrero',
-    15 => 'Marzo',
-    16 => 'Abril',
-    17 => 'Mayo',
-    18 => 'Junio',
-    19 => 'Julio',
-    20 => 'Agosto',
-    21 => 'Septiembre',
-    22 => 'Octubre',
-    23 => 'Noviembre',
-    24 => 'Diciembre',
-    25 => 'Volver a ',
-    26 => 'Todo el da',
-    27 => 'Semana',
-    28 => 'Calendario Personal para',
-    29 => 'Calendario Pblico',
-    30 => 'borra el evento',
-    31 => 'Agrega',
-    32 => 'Evento',
-    33 => 'Fecha',
-    34 => 'Hora',
-    35 => 'Agregado rpido',
-    36 => 'Enva',
-    37 => 'Disculpa, la opcin de calendario personal no se encuentra habilitada en este sitio',
-    38 => 'Editor Personal de Eventos',
-    39 => 'Da',
-    40 => 'Semana',
-    41 => 'Mes'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1071,7 +1041,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1152,7 +1124,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1194,7 +1175,6 @@
     'none' => 'Ninguno',
     'accessdenied' => 'Acceso Denegado',
     'storydenialmsg' => "No tienes acceso para ver esta Noticia. Esto puede ser porque no eres miembro de {$_CONF['site_name']}. Por favor <a href=users.php?mode=new>convirtete en un miembro</a> de {$_CONF['site_name']} para tener acceso.",
-    'eventdenialmsg' => "No tienes acceso para ver este Evento. Esto puede ser porque no eres miembro de {$_CONF['site_name']}. Por favor <a href=users.php?mode=new>convirtete en un miembro</a> de {$_CONF['site_name']} para tener acceso.",
     'nogroupsforcoregroup' => 'Este grupo no pertenece a ninguno de los otros grupos',
     'grouphasnorights' => 'Este grupo no tiene acceso a las funciones de administracin',
     'newgroup' => 'Nuevo Grupo',
@@ -1380,7 +1360,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1420,6 +1401,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Enero',
+    2 => 'Febrero',
+    3 => 'Marzo',
+    4 => 'Abril',
+    5 => 'Mayo',
+    6 => 'Junio',
+    7 => 'Julio',
+    8 => 'Agosto',
+    9 => 'Septiembre',
+    10 => 'Octubre',
+    11 => 'Noviembre',
+    12 => 'Diciembre'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Domingo',
+    2 => 'Lunes',
+    3 => 'Martes',
+    4 => 'Mircoles',
+    5 => 'Jueves',
+    6 => 'Viernes',
+    7 => 'Sbado'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1430,8 +1442,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1440,9 +1454,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/spanish_utf-8.php 1.4.1.src/cpanel-glprivate/language/spanish_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/spanish_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/spanish_utf-8.php	2006-09-17 03:58:44.000000000 -0500
@@ -161,28 +161,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Calendario de Eventos',
-    2 => 'Disculpa, no hay eventos para mostrar.',
-    3 => 'Cuando',
-    4 => 'Donde',
-    5 => 'Descripción',
-    6 => 'Agrega un evento',
-    7 => 'Próximos eventos',
-    8 => 'Al agregar este evento a tu calendario podrás ver rápidamente los eventos que te interesen. Para ello elije "Mi Calendario" en el área de Funciones del(a) usuario(a).',
-    9 => 'Agregar a Mi Calendario',
-    10 => 'Sacar de Mi Calendario',
-    11 => "Agregando el Evento al Calendario de {$_USER['username']}",
-    12 => 'Evento',
-    13 => 'Empieza',
-    14 => 'Termina',
-    15 => 'Volver al Calendario'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -344,7 +326,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -661,38 +676,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Editor de Eventos',
-    2 => 'Error',
-    3 => 'Título',
-    4 => 'URL',
-    5 => 'Fecha de Inicio',
-    6 => 'Fecha de Finalización',
-    7 => 'Lugar',
-    8 => 'Descripción',
-    9 => '(incluye http://)',
-    10 => 'Tienes que completar todos los campos de este formulario.',
-    11 => 'Administrador del Evento',
-    12 => 'Para modificar o borrar un evento, pulsa en ese evento abajo. Para crear un Nuevo Evento pulsa sobre Evento Nuevo arriba. Pulsa sobre [C] para crear una copia de un evento ya existente.',
-    13 => 'Título',
-    14 => 'Fecha de Inicio',
-    15 => 'Fecha de Finalización',
-    16 => 'Acceso Denegado',
-    17 => "No tienes permiso para acceder a este Evento. Todo intento de acceso será registrado. Por favor, vuelve a <a href=\"{$_CONF['site_admin_url']}/event.php\">la página de Administración de Eventos</a>.",
-    18 => 'Nuevo Evento',
-    19 => 'Página de Inicio - Administrador',
-    20 => 'guardar',
-    21 => 'cancelar',
-    22 => 'borrar',
-    23 => 'Fecha de inicio incorecta.',
-    24 => 'Fecha de terminación incorrecta.',
-    25 => 'La fecha de terminación es anterior a la de inicio.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -783,7 +769,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -871,7 +859,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -901,53 +918,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Domingo',
-    2 => 'Lunes',
-    3 => 'Martes',
-    4 => 'Miércoles',
-    5 => 'Jueves',
-    6 => 'Viernes',
-    7 => 'Sábado',
-    8 => 'Agrega un evento',
-    9 => 'Evento de %s',
-    10 => 'Eventos para',
-    11 => 'Calendario Maestro',
-    12 => 'Mi Calendario',
-    13 => 'Enero',
-    14 => 'Febrero',
-    15 => 'Marzo',
-    16 => 'Abril',
-    17 => 'Mayo',
-    18 => 'Junio',
-    19 => 'Julio',
-    20 => 'Agosto',
-    21 => 'Septiembre',
-    22 => 'Octubre',
-    23 => 'Noviembre',
-    24 => 'Diciembre',
-    25 => 'Volver a ',
-    26 => 'Todo el día',
-    27 => 'Semana',
-    28 => 'Calendario Personal para',
-    29 => 'Calendario Público',
-    30 => 'borra el evento',
-    31 => 'Agrega',
-    32 => 'Evento',
-    33 => 'Fecha',
-    34 => 'Hora',
-    35 => 'Agregado rápido',
-    36 => 'Envía',
-    37 => 'Disculpa, la opción de calendario personal no se encuentra habilitada en este sitio',
-    38 => 'Editor Personal de Eventos',
-    39 => 'Día',
-    40 => 'Semana',
-    41 => 'Mes'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1071,7 +1041,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1152,7 +1124,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1194,7 +1175,6 @@
     'none' => 'Ninguno',
     'accessdenied' => 'Acceso Denegado',
     'storydenialmsg' => "No tienes acceso para ver esta Noticia. Esto puede ser porque no eres miembro de {$_CONF['site_name']}. Por favor <a href=users.php?mode=new>conviértete en un miembro</a> de {$_CONF['site_name']} para tener acceso.",
-    'eventdenialmsg' => "No tienes acceso para ver este Evento. Esto puede ser porque no eres miembro de {$_CONF['site_name']}. Por favor <a href=users.php?mode=new>conviértete en un miembro</a> de {$_CONF['site_name']} para tener acceso.",
     'nogroupsforcoregroup' => 'Este grupo no pertenece a ninguno de los otros grupos',
     'grouphasnorights' => 'Este grupo no tiene acceso a las funciones de administración',
     'newgroup' => 'Nuevo Grupo',
@@ -1380,7 +1360,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1420,6 +1401,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Enero',
+    2 => 'Febrero',
+    3 => 'Marzo',
+    4 => 'Abril',
+    5 => 'Mayo',
+    6 => 'Junio',
+    7 => 'Julio',
+    8 => 'Agosto',
+    9 => 'Septiembre',
+    10 => 'Octubre',
+    11 => 'Noviembre',
+    12 => 'Diciembre'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Domingo',
+    2 => 'Lunes',
+    3 => 'Martes',
+    4 => 'Miércoles',
+    5 => 'Jueves',
+    6 => 'Viernes',
+    7 => 'Sábado'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1430,8 +1442,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1440,9 +1454,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/swedish.php 1.4.1.src/cpanel-glprivate/language/swedish.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/swedish.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/swedish.php	2006-09-17 03:58:44.000000000 -0500
@@ -167,28 +167,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Aktivitetskalender',
-    2 => 'Det finns tyvrr inga aktiviteter att visa.',
-    3 => 'Nr',
-    4 => 'Var',
-    5 => 'Beskrivning',
-    6 => 'Ny aktivitet',
-    7 => 'Kommande aktiviteter',
-    8 => 'Genom att lgga till denna aktivitet till din kalender s kan du snabbt se enbart de aktiviteter du r intresserad av genom att klicka p "Min kalender" frn anvndarfunktionsmenyn.',
-    9 => 'Lgg till i min kalender',
-    10 => 'Radera frn min kalender',
-    11 => "Lgger till aktivitet i {$_USER['username']}:s kalender",
-    12 => 'Aktivitet',
-    13 => 'Startar',
-    14 => 'Slutar',
-    15 => 'Tillbaka till kalendern'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -350,7 +332,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -667,38 +682,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Aktivitetseditor',
-    2 => 'Error',
-    3 => 'Aktivitet',
-    4 => 'Aktivitetslnk',
-    5 => 'Startdatum fr aktivitet',
-    6 => 'Slutdatum fr aktivitet',
-    7 => 'Plats',
-    8 => 'Aktivitetsbeskrivning',
-    9 => '(inkludera http://)',
-    10 => 'Du mste ange datum/tider, aktivitetstitel och beskrivning!',
-    11 => 'Aktivitetsadministratr',
-    12 => 'Klicka p en aktivitet fr att frndra eller radera den.  Klicka p "Ny aktivitet" ovan fr att skapa en ny aktivitet.  Klicka p [C] fr att kopiera en aktivitet.',
-    13 => 'Aktivitet',
-    14 => 'Startdatum',
-    15 => 'Slutdatum',
-    16 => 'tkomst nekad',
-    17 => "Du ger inte tillgng till denna aktivitet.  Denna incident har loggats.  G tillbaka till <a href=\"{$_CONF['site_admin_url']}/event.php\">aktivitetsadministrationen</a>.",
-    18 => 'Ny aktivitet',
-    19 => 'Administratrsmeny',
-    20 => 'spara',
-    21 => 'ngra',
-    22 => 'radera',
-    23 => 'Felaktigt startdatum.',
-    24 => 'Felaktigt slutdatum.',
-    25 => 'Slutdatum r fre startdatum, ju.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -789,7 +775,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -877,7 +865,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -907,53 +924,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'sndag',
-    2 => 'mndag',
-    3 => 'tisdag',
-    4 => 'onsdag',
-    5 => 'torsdag',
-    6 => 'fredag',
-    7 => 'lrdag',
-    8 => 'Ny aktivitet',
-    9 => '%s-aktivitet',
-    10 => 'Aktiviteter fr',
-    11 => 'Huvudkalender',
-    12 => 'Min kalender',
-    13 => 'januari',
-    14 => 'februari',
-    15 => 'mars',
-    16 => 'april',
-    17 => 'maj',
-    18 => 'juni',
-    19 => 'juli',
-    20 => 'augusti',
-    21 => 'september',
-    22 => 'oktober',
-    23 => 'november',
-    24 => 'december',
-    25 => 'Tillbaka till ',
-    26 => 'Hela dagen',
-    27 => 'Vecka',
-    28 => 'Personlig kalender fr',
-    29 => 'Publik kalender',
-    30 => 'radera aktivitet',
-    31 => 'Lgg till',
-    32 => 'Aktivitet',
-    33 => 'Datum',
-    34 => 'Tid',
-    35 => 'Snabbokning',
-    36 => 'Godknn',
-    37 => 'Den personliga kalendern r inte aktiverad p denna sajt.',
-    38 => 'Personlig aktivitetseditor',
-    39 => 'Dag',
-    40 => 'Vecka',
-    41 => 'Mnad'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1077,7 +1047,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1158,7 +1130,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1200,7 +1181,6 @@
     'none' => 'Ingen',
     'accessdenied' => 'tkomst nekad',
     'storydenialmsg' => "Du ger inga rttigheter att lsa denna artikel.  Det kan bero p att du inte r medlem i {$_CONF['site_name']}.  Du kan <a href=users.php?mode=new>skapa ett konto</a> fr att f tillgng till allt innehll p sajten!",
-    'eventdenialmsg' => "Du ger inga rttigheter att lsa denna aktivitet.  Det kan bero p att du inte r medlem i {$_CONF['site_name']}.  Du kan <a href=users.php?mode=new>skapa ett konto</a> fr att f tillgng till allt innehll p sajten!",
     'nogroupsforcoregroup' => 'Denna grupp r inte medlem i ngon annan grupp',
     'grouphasnorights' => 'Denna grupp ger inte tillgng till ngra administrativa funktioner p denna sajt',
     'newgroup' => 'Ny grupp',
@@ -1386,7 +1366,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1426,6 +1407,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'januari',
+    2 => 'februari',
+    3 => 'mars',
+    4 => 'april',
+    5 => 'maj',
+    6 => 'juni',
+    7 => 'juli',
+    8 => 'augusti',
+    9 => 'september',
+    10 => 'oktober',
+    11 => 'november',
+    12 => 'december'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'sndag',
+    2 => 'mndag',
+    3 => 'tisdag',
+    4 => 'onsdag',
+    5 => 'torsdag',
+    6 => 'fredag',
+    7 => 'lrdag'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1436,8 +1448,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1446,9 +1460,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/swedish_utf-8.php 1.4.1.src/cpanel-glprivate/language/swedish_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/swedish_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/swedish_utf-8.php	2006-09-17 03:58:44.000000000 -0500
@@ -167,28 +167,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Comments (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Aktivitetskalender',
-    2 => 'Det finns tyvärr inga aktiviteter att visa.',
-    3 => 'När',
-    4 => 'Var',
-    5 => 'Beskrivning',
-    6 => 'Ny aktivitet',
-    7 => 'Kommande aktiviteter',
-    8 => 'Genom att lägga till denna aktivitet till din kalender så kan du snabbt se enbart de aktiviteter du är intresserad av genom att klicka på "Min kalender" från användarfunktionsmenyn.',
-    9 => 'Lägg till i min kalender',
-    10 => 'Radera från min kalender',
-    11 => "Lägger till aktivitet i {$_USER['username']}:s kalender",
-    12 => 'Aktivitet',
-    13 => 'Startar',
-    14 => 'Slutar',
-    15 => 'Tillbaka till kalendern'
+    123 => 'All HTML is allowed',
+    124 => 'Click to delete all checked items',
+    125 => 'Are you sure you want to Delete all checked items?',
+    126 => 'Select or de-select all items'
 );
 
 ###############################################################################
@@ -350,7 +332,40 @@
     120 => 'Account Activated',
     121 => 'Service',
     122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?",
+    124 => 'Confirm Email',
+    125 => 'You have to enter the same email address in both fields!',
+    126 => 'Please repeat for confirmation',
+    127 => 'To change any of these settings, you will have to enter your current password.',
+    128 => 'Your Name',
+    129 => 'Password &amp; Email',
+    130 => 'About You',
+    131 => 'Daily Digest Options',
+    132 => 'Daily Digest Feature',
+    133 => 'Comment Display',
+    134 => 'Comment Options',
+    135 => '<li>Default mode for how comments will be displayed</li><li>Default order to display comments</li><li>Set maximum number of comments to show - default is 100</li>',
+    136 => 'Exclude Topics and Authors',
+    137 => 'Filter Story Content',
+    138 => 'Misc Settings',
+    139 => 'Layout and Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Privacy Settings',
+    142 => 'The default setting is to allow users & admins to email fellow site members and show your status as online. Un-check these options to protect your privacy.',
+    143 => 'Filter Block Content',
+    144 => 'Show & hide boxes',
+    145 => 'Your Public Profile',
+    146 => 'Password and email',
+    147 => 'Edit your account password, email and autologin feature. You will need to enter the same password or email address twice as a confirmation.',
+    148 => 'User Information',
+    149 => 'Modify your user information that will be shown to other users.<li>The signature will be added to any comments or forum posts you made</li><li>The BIO is a brief summary of yourself to share</li><li>Share your PGP Key</li>',
+    150 => 'Warning: Javascript recommended for enhanced functionality',
+    151 => 'Preview',
+    152 => 'Username & Password',
+    153 => 'Layout & Language',
+    154 => 'Content',
+    155 => 'Privacy',
+    156 => 'Delete Account'
 );
 
 ###############################################################################
@@ -667,38 +682,9 @@
     62 => 'Article Limit',
     63 => 'Bad Block Title',
     64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Aktivitetseditor',
-    2 => 'Error',
-    3 => 'Aktivitet',
-    4 => 'Aktivitetslänk',
-    5 => 'Startdatum för aktivitet',
-    6 => 'Slutdatum för aktivitet',
-    7 => 'Plats',
-    8 => 'Aktivitetsbeskrivning',
-    9 => '(inkludera http://)',
-    10 => 'Du måste ange datum/tider, aktivitetstitel och beskrivning!',
-    11 => 'Aktivitetsadministratör',
-    12 => 'Klicka på en aktivitet för att förändra eller radera den.  Klicka på "Ny aktivitet" ovan för att skapa en ny aktivitet.  Klicka på [C] för att kopiera en aktivitet.',
-    13 => 'Aktivitet',
-    14 => 'Startdatum',
-    15 => 'Slutdatum',
-    16 => 'Åtkomst nekad',
-    17 => "Du äger inte tillgång till denna aktivitet.  Denna incident har loggats.  Gå tillbaka till <a href=\"{$_CONF['site_admin_url']}/event.php\">aktivitetsadministrationen</a>.",
-    18 => 'Ny aktivitet',
-    19 => 'Administratörsmeny',
-    20 => 'spara',
-    21 => 'ångra',
-    22 => 'radera',
-    23 => 'Felaktigt startdatum.',
-    24 => 'Felaktigt slutdatum.',
-    25 => 'Slutdatum är före startdatum, ju.'
+    65 => 'Order',
+    66 => 'Autotags',
+    67 => 'Check to allow autotags'
 );
 
 ###############################################################################
@@ -789,7 +775,9 @@
     82 => 'Images',
     83 => 'Archive Options',
     84 => 'Permissions',
-    85 => 'Show All'
+    85 => 'Show All',
+    86 => 'Advanced Editor',
+    87 => 'Story Stats'
 );
 
 ###############################################################################
@@ -877,7 +865,36 @@
     44 => 'Awaiting Authorization',
     45 => 'Active',
     46 => 'User Status',
-    47 => 'Edit'
+    47 => 'Edit',
+    48 => 'Show Admin Groups',
+    49 => 'Admin Group',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Days',
+    52 => '<br>Note: "Online Days" is the number of days between the first registration and the last login.',
+    53 => 'registered',
+    54 => 'Batch Delete',
+    55 => 'This only works if you have <code>$_CONF[\'lastlogin\'] = true;</code> in your config.php',
+    56 => 'Please choose the type of user you want to delete and press "Update List". Then, uncheck those from the list you do not want to delete and press "Delete". Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom users',
+    58 => 'Short-Time Users',
+    59 => 'Old Users',
+    60 => 'Users that registered more than ',
+    61 => ' months ago, but never logged in.',
+    62 => 'Users that registered more than ',
+    63 => ' months ago, then logged in within 24 hours, but since then never came back to your site.',
+    64 => 'Normal users, who simply did not visit your site since ',
+    65 => ' months.',
+    66 => 'Update List',
+    67 => 'Months since registration',
+    68 => 'Online Hours',
+    69 => 'Offline Months',
+    70 => 'could not be deleted',
+    71 => 'sucessfully deleted',
+    72 => 'No User selected for deletion',
+    73 => 'Are You sure you want to permanently delete ALL selected users?',
+    74 => 'Recent Users',
+    75 => 'Users that registered in the last ',
+    76 => ' months'
 );
 
 ###############################################################################
@@ -907,53 +924,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'söndag',
-    2 => 'måndag',
-    3 => 'tisdag',
-    4 => 'onsdag',
-    5 => 'torsdag',
-    6 => 'fredag',
-    7 => 'lördag',
-    8 => 'Ny aktivitet',
-    9 => '%s-aktivitet',
-    10 => 'Aktiviteter för',
-    11 => 'Huvudkalender',
-    12 => 'Min kalender',
-    13 => 'januari',
-    14 => 'februari',
-    15 => 'mars',
-    16 => 'april',
-    17 => 'maj',
-    18 => 'juni',
-    19 => 'juli',
-    20 => 'augusti',
-    21 => 'september',
-    22 => 'oktober',
-    23 => 'november',
-    24 => 'december',
-    25 => 'Tillbaka till ',
-    26 => 'Hela dagen',
-    27 => 'Vecka',
-    28 => 'Personlig kalender för',
-    29 => 'Publik kalender',
-    30 => 'radera aktivitet',
-    31 => 'Lägg till',
-    32 => 'Aktivitet',
-    33 => 'Datum',
-    34 => 'Tid',
-    35 => 'Snabbokning',
-    36 => 'Godkänn',
-    37 => 'Den personliga kalendern är inte aktiverad på denna sajt.',
-    38 => 'Personlig aktivitetseditor',
-    39 => 'Dag',
-    40 => 'Vecka',
-    41 => 'Månad'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1077,7 +1047,9 @@
     47 => 'Search',
     48 => 'Edit',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'Error: existing Filename'
 );
 
 ###############################################################################
@@ -1158,7 +1130,16 @@
     72 => 'An error occured while attempting to install the plugin. See error.log for details.',
     73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
     74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    75 => 'Trackbacks must be sent using a POST request.',
+    76 => 'Do you really want to delete this item?',
+    77 => 'WARNING:<br>You have set your default encoding to UTF-8. However, your server does not support multibyte encodings. Please install mbstring functions for PHP or choose a different character set/language.',
+    78 => 'Please make sure that the email address and the confirmation email address are the same.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Please try logging in again below.',
+    82 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
+    83 => 'To change your password, email address, or for how long to remember you, please enter your current password.',
+    84 => 'To delete your account, please enter your current password.'
 );
 
 ###############################################################################
@@ -1200,7 +1181,6 @@
     'none' => 'Ingen',
     'accessdenied' => 'Åtkomst nekad',
     'storydenialmsg' => "Du äger inga rättigheter att läsa denna artikel.  Det kan bero på att du inte är medlem i {$_CONF['site_name']}.  Du kan <a href=users.php?mode=new>skapa ett konto</a> för att få tillgång till allt innehåll på sajten!",
-    'eventdenialmsg' => "Du äger inga rättigheter att läsa denna aktivitet.  Det kan bero på att du inte är medlem i {$_CONF['site_name']}.  Du kan <a href=users.php?mode=new>skapa ett konto</a> för att få tillgång till allt innehåll på sajten!",
     'nogroupsforcoregroup' => 'Denna grupp är inte medlem i någon annan grupp',
     'grouphasnorights' => 'Denna grupp äger inte tillgång till några administrativa funktioner på denna sajt',
     'newgroup' => 'Ny grupp',
@@ -1386,7 +1366,8 @@
     'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'pb_error_details' => 'Error when sending the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1426,6 +1407,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'januari',
+    2 => 'februari',
+    3 => 'mars',
+    4 => 'april',
+    5 => 'maj',
+    6 => 'juni',
+    7 => 'juli',
+    8 => 'augusti',
+    9 => 'september',
+    10 => 'oktober',
+    11 => 'november',
+    12 => 'december'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'söndag',
+    2 => 'måndag',
+    3 => 'tisdag',
+    4 => 'onsdag',
+    5 => 'torsdag',
+    6 => 'fredag',
+    7 => 'lördag'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1436,8 +1448,10 @@
     'limit_results' => 'Limit Results',
     'submit' => 'Submit',
     'edit' => 'Edit',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => 'Admin Home',
     'create_new' => 'Create New',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => 'Enabled',
     'title' => 'Title',
     'type' => 'Type',
@@ -1446,9 +1460,12 @@
     'save' => 'Save',
     'cancel' => 'Cancel',
     'delete' => 'Delete',
+    'delete_sel' => 'Delete selected',
     'copy' => 'Copy',
     'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'data_error' => 'There was an error processing the subscription data. Please check the data source.',
+    'preview' => 'Preview',
+    'records_found' => 'Records found'
 );
 
 ###############################################################################
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/turkish.php 1.4.1.src/cpanel-glprivate/language/turkish.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/turkish.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/turkish.php	2006-12-28 16:46:32.000000000 -0600
@@ -123,7 +123,7 @@
     80 => 'hikaye son',
     81 => 'hikaye son',
     82 => 'saat',
-    83 => 'Yorumlar',
+    83 => 'YORUMLAR',
     84 => 'Adresler',
     85 => 'son 48 saat',
     86 => 'Hi yeni yorum yok',
@@ -163,28 +163,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Yorumlar (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'Tm HTML kodlar izinli'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Etkinlik Takvimi',
-    2 => 'zgnm, gsterilebilinecek etkinlik yok.',
-    3 => 'Ne Zaman',
-    4 => 'Nerede',
-    5 => 'Aklama',
-    6 => 'Etkinlik Ekle',
-    7 => 'gelecek Etkinlikler',
-    8 => 'Bu etkinlii ekleyerek ileride sadece ilgilendiiniz etkinlikleri "Takvimim" dmesine basarak izleyebilirsiniz.',
-    9 => 'Takvimime Ekle',
-    10 => 'Takvimimden kar',
-    11 => "Etkinlik {$_USER['username']} Takvimine ekleniyor",
-    12 => 'Etkinlik',
-    13 => 'Balang',
-    14 => 'Biti',
-    15 => 'Takvime Geri Dn'
+    123 => 'Tm HTML kodlar izinli',
+    124 => 'Seili tm eleri Silmek iin Tklayn',
+    125 => 'Seili tm eleri silmek istediinize emin misiniz?',
+    126 => 'Tm eleri aretle veya iareti kaldr '
 );
 
 ###############################################################################
@@ -346,7 +328,40 @@
     120 => 'Aktif Hesap',
     121 => 'Servis',
     122 => 'zgnm, Yeni Kullanc kayd kapatlmtr',
-    123 => "<a href=\"{$_CONF['site_url']}/users.php?mode=new\">Yeni ye misiniz?</a>?"
+    123 => "<a href=\"{$_CONF['site_url']}/users.php?mode=new\">Yeni ye misiniz?</a>?",
+    124 => 'Email Tekrar ',
+    125 => 'Girdiiniz E-mail adresleri ayn deil!',
+    126 => 'Dorulama iin ltfen tekrar yazn',
+    127 => 'Burada ki ayarlardan herhangi birini deitirmek iin ifrenizi girmeniz gerekiyor.',
+    128 => 'Adnz',
+    129 => 'ifre &amp; Email',
+    130 => 'Hakknzda',
+    131 => 'Gnlk zet Ayarlar',
+    132 => 'Gnlk zet zellii',
+    133 => 'Yorum Ekran',
+    134 => 'Yorum Ayarlar',
+    135 => '<li>Yorumlarnn nasl gsterileceine ait ayarlar</li><li>Yorumlarn sralanma ekline ait ayar</li><li>En fazla gsterilecek yorum says - geerli say 100</li>',
+    136 => 'Gsterilmeyecek Konu ve Yazarlar',
+    137 => 'Yaz erii Filtreleme',
+    138 => 'Dier Ayarlar',
+    139 => 'Grnm ve Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Eriilebilirlik Ayarlar',
+    142 => 'Geerli site ayarlar yelerden ve yneticiden ye almanza izin vermekte ve online kullanlar blounda grnmenize izin vermektedir.Kutuda iareti kaldrarak istemediiniz zellii iptal edebilirsiniz.',
+    143 => 'Block erii Filtresi',
+    144 => 'Gster & Gizle Bloklar',
+    145 => 'Kiisel Profilimi Gster',
+    146 => 'ifre ve E-mail',
+    147 => 'ifrenizi, emailinizi ve beni hatrla zelliklerini dzenleyin. Dorulama iin ifrenizi veya e-mail adresinizi iki kez girmeniz gerekmektedir.',
+    148 => 'Kullanc Bilgileri',
+    149 => 'Dier Kullanclarn da grecei kullanc bilgilerinizi dzenleyin.<li>mzanz yorumlarnza ve forumda ki mesajlarnzn altna otomatik olarak eklenir</li><li>Kendiniz hakknda paylamak istediklerinizi BIO blmne yazabilirsiniz</li><li>PGP Anahtar (Bo Brakabilirsiniz)</li>',
+    150 => 'DKKAT: Javascript recommended for enhanced functionality',
+    151 => 'nzleme',
+    152 => 'Kullanc Ad & ifre',
+    153 => 'Grnm & Language',
+    154 => 'erik',
+    155 => 'Eriilebilirlil',
+    156 => 'Hesabm Sil'
 );
 
 ###############################################################################
@@ -468,7 +483,7 @@
     58 => 'Daha fazla sonu &gt;&gt;',
     59 => 'Sonular',
     60 => 'sayfa',
-    61 => 'Refine search'
+    61 => 'Basit Arama'
 );
 
 ###############################################################################
@@ -505,7 +520,7 @@
     28 => 'Top 10 Etkinlikler',
     29 => 'Etkinlik',
     30 => 'Hitler',
-    31 => 'It appears that there are no events on this site or no one has ever clicked on one.'
+    31 => 'yle grnyor ki sitede yeni etkinlik yok veya henz kimse bir etkinlie tklamam.'
 );
 
 ###############################################################################
@@ -516,7 +531,7 @@
     2 => 'Arkadana Gnder',
     3 => 'Baslmaya Uygun ekli',
     4 => 'Seenekler',
-    5 => 'PDF Story Format'
+    5 => 'PDF Yaz Format'
 );
 
 ###############################################################################
@@ -660,41 +675,12 @@
     59 => 'Blou Saa Ta',
     60 => 'Blou Sola Ta',
     61 => 'Balk Yok',
-    62 => 'Article Limit',
+    62 => 'Yaz Limiti',
     63 => 'Geersiz Blok Bal',
     64 => 'Balnz bo olamaz ve HTML kodu ieremez!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Etkinlik Dzenleyicisi',
-    2 => 'Error',
-    3 => 'Etkinlik Bal',
-    4 => 'Etkinlik Adresi',
-    5 => 'Etkinlik Balang Tarihi',
-    6 => 'Etkinlik Biti Tarihi',
-    7 => 'Etkinlik Yeri',
-    8 => 'Etkinlik Aklamas',
-    9 => '(http:// ile balayn)',
-    10 => 'Tm alanlar doldurmanz gerekmektedir',
-    11 => 'Etkinlik Yneticisi',
-    12 => 'Bir etkinlii deitirmek veya silmek istiyorsanz, adna basn. Yeni etkinlik yaratmak iin Yeni Etkinlik dmesine basn.',
-    13 => 'Etkinlik Bal',
-    14 => 'Balang Tarihi',
-    15 => 'Biti Tarihi',
-    16 => 'Eriim Engellendi',
-    17 => "Eriim hakknz olmayan bir yazya erimek istiyorsunuz. Bu eyleminiz kaytlara eklenmitir. Ltfen <a href=\"{$_CONF['site_admin_url']}/event.php\">kontrol ana sayfasna geri dnn</a>.",
-    18 => 'Yeni Etkinlik',
-    19 => 'Kontrol Ana Sayfas',
-    20 => 'Kaydet',
-    21 => 'Vazge',
-    22 => 'Sil',
-    23 => 'Geersiz Balang.',
-    24 => 'Geersiz Biti tarihi.',
-    25 => 'Biti tarihi balangtan nce.'
+    65 => 'Sra',
+    66 => 'Autotaglar',
+    67 => 'Auttag izini iin iaretleyin'
 );
 
 ###############################################################################
@@ -727,8 +713,8 @@
     24 => 'Setiiniz ID kullanlyor. Ltfen baka bir ID seiniz.',
     25 => 'Yazy kaydederken hata olutu!',
     26 => 'Yaz n zleme',
-    27 => 'If you use [unscaledX] instead of [imageX], the image will be inserted at its original dimensions.',
-    28 => '<p><b>NZLEME</b>: Previewing a story with images attached is best done by saving the article as a draft INSTEAD OF hitting the preview button.  Use the preview button only when images are not attached.',
+    27 => 'eer [imageX]yerine [unscaledX] kodunu kullanrsanz , eklediiniz resim orjinal boyutunda grntlenir.',
+    28 => '<p><b>NZLEME</b>: Eer yaznza bir resim eklediyseniz nizleme yapmak yerine Taslak olarak kaydetmeniz gerekir. nzleme seenei yalnzca resim atalanmam iken kullanlabilir.',
     29 => 'Trackbacks',
     30 => 'Dosya Upload Hatalar',
     31 => 'Ltfen, Yazar, Balk ve Konu alanlarn doldurunuz.',
@@ -745,7 +731,7 @@
     42 => "Eriim hakknz olmayan bir yazya erimek istiyorsunuz.  Bu eyleminiz kaytlara eklenmitir.  Ltfen <a href=\"{$_CONF['site_admin_url']}/story.php\">kontrol ekranna geri dnnz</a>.",
     43 => 'Yeni Yaz',
     44 => 'Kontrol Ana Sayfas',
-    45 => 'A(access)',
+    45 => 'A(eriim)',
     46 => '<b>NOT:</b> eer ileride bir tarih verirseniz, yaznz o tarihe kadar yaymlanmayacaktr. Bu ayn zamanda bu yaznn RDF balklarnda ve arama ve istatistik sayfalarda grntlenmeyecektir.',
     47 => 'Resimler',
     48 => 'resim',
@@ -759,7 +745,7 @@
     56 => 'Sembol Gster',
     57 => 'leksiz resim gster',
     58 => 'Yaz Ynetimi',
-    59 => 'Option',
+    59 => 'Ayar',
     60 => 'zinli',
     61 => 'Auto Archive',
     62 => 'Otomatik Silme',
@@ -767,15 +753,15 @@
     64 => '',
     65 => '',
     66 => '',
-    67 => 'Expand the Content Edit Area size',
-    68 => 'Reduce the Content Edit Area size',
+    67 => 'erik Dzenleme Alann Genilet',
+    68 => 'erik Dzenleme Alann Daralt',
     69 => 'Yaz Yaym Tarihi',
     70 => 'Toolbar Seimi',
     71 => 'Basit Toolbar',
-    72 => 'Common Toolbar',
+    72 => 'Genel Toolbar',
     73 => 'Gelimi Toolbar',
     74 => 'Gelimi II Toolbar',
-    75 => 'Full Featured',
+    75 => 'Full zellikli',
     76 => 'Yaym zellikleri',
     77 => 'Advanced Editor altrabilmek iin Javascript gereksinimi vardr.  config.php den gerekli ayarlar yapabilirsiniz',
     78 => 'Click <a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default">here</a> to use default editor',
@@ -785,7 +771,9 @@
     82 => 'Resimler',
     83 => 'Arivleme Ayarlar',
     84 => 'Eriim Haklar',
-    85 => 'Tmn Gster'
+    85 => 'Tmn Gster',
+    86 => 'Gelimi Editor',
+    87 => 'Yaz statistikleri'
 );
 
 ###############################################################################
@@ -817,8 +805,8 @@
     23 => 'bildirilen yeni yaz iin bunu varsaylan balk yap',
     24 => '(*)',
     25 => 'Archive Topic',
-    26 => 'make this the default topic for archived stories. Only one topic allowed.',
-    27 => 'Or Upload Topic Icon',
+    26 => 'Arivlenmi yazlar iin geerli balk yap.Sadece bir konu izinli.',
+    27 => 'Veya Konu Simgesi Upload Et',
     28 => 'EN Fazla',
     29 => 'Dosya Upload Hatalar'
 );
@@ -873,7 +861,36 @@
     44 => 'Yetkilendirilme ',
     45 => 'Aktif',
     46 => 'ye Durumu',
-    47 => 'Dzenle'
+    47 => 'Dzenle',
+    48 => 'Admin Gruplarn Gster',
+    49 => 'Admin Gruplar',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Gnler',
+    52 => '<br>Note: "Online Gnler" lk ye olunan tarih ve son giri tarihi arasnda ki gn saysdr.',
+    53 => 'ye Oldu',
+    54 => 'Toplu Silme',
+    55 => 'Bu ilem yalnzca config.php de <code>$_CONF[\'lastlogin\'] = true;</code> eklinde ayarladnzda alr',
+    56 => 'Silmek istediiniz kullanc tipini seip "Listeyi Gncelle" butonuna basnz. Ardndan, silmek istemediiniz kullanclarn iaretini kaldrp "Sil" butonuna basnz. Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom yeler',
+    58 => 'Ksa Sreli yeler',
+    59 => 'Eski yeler',
+    60 => 'u kadar zaman nce ye olanlar ',
+    61 => ' ay nce , fakat hi giri yapmayanlar.',
+    62 => 'u kadar zaman nce ye olanlar  ',
+    63 => ' ay nce ye olan ve 24 saat iinde giri yapan ancak bu tarihten sonra tekrar giri yapmayan yeler.',
+    64 => 'Normal yeler, u kadar zamandr siteye uramayanlar ',
+    65 => ' ay.',
+    66 => 'Listeyi Gncelle',
+    67 => 'Aydr ye',
+    68 => 'Online Saatler',
+    69 => 'Offline Aylar',
+    70 => 'Silinemedi',
+    71 => 'Baaryla Silindi',
+    72 => 'Silinecek ye Seilmedi',
+    73 => 'Setiiniz TM Kullanclar silmek istediinize emin misiniz?',
+    74 => 'Son yeler',
+    75 => 'Son Kaydolan yeler ',
+    76 => ' ay'
 );
 
 ###############################################################################
@@ -903,53 +920,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Pazar',
-    2 => 'Pazartesi',
-    3 => 'Sal',
-    4 => 'aramba',
-    5 => 'Perembe',
-    6 => 'Cuma',
-    7 => 'Cumartesi',
-    8 => 'Etkinlik Ekle',
-    9 => 'Site Etkinlii',
-    10 => 'Etkinlikler:',
-    11 => 'Genel Takvim',
-    12 => 'Takvimim',
-    13 => 'Ocak',
-    14 => 'ubat',
-    15 => 'Mart',
-    16 => 'Nisan',
-    17 => 'Mays',
-    18 => 'Haziran',
-    19 => 'Temmuz',
-    20 => 'Austos',
-    21 => 'Eyll',
-    22 => 'Ekim',
-    23 => 'Kasm',
-    24 => 'Aralk',
-    25 => 'Geri: ',
-    26 => 'Tm Gn',
-    27 => 'Hafta',
-    28 => 'Kiisel Takvim:',
-    29 => 'Genel Takvim',
-    30 => 'etkinlii sil',
-    31 => 'Ekle',
-    32 => 'Etkinlik',
-    33 => 'Tarih',
-    34 => 'Saat',
-    35 => 'Hzl Ekle',
-    36 => 'Gnder',
-    37 => 'zr dilerim, kiisel takvim zellii bu sitede tanmlanmam',
-    38 => 'Kiisel Etkinlik Dzenleyicisi',
-    39 => 'Gn',
-    40 => 'Hafta',
-    41 => 'Ay'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1016,7 +986,7 @@
     29 => 'Geeklog Srm',
     30 => 'Eklentiyi Sil?',
     31 => 'Bu eklentiyi silmek istediinizden eminmisiniz? Bunu yaparsanz eklentinin kulland tm veriler ve veri yaplar da silinecektir. Eminseniz Sil dmesine bir daha basnz.',
-    32 => '<p><b>Error AutoLink tag not correct format</b></p>',
+    32 => '<p><b>Hata: AutoLink tag doru formatta deil</b></p>',
     33 => 'Yazlm versionu',
     34 => 'Gncelle',
     35 => 'Dzenle',
@@ -1036,51 +1006,53 @@
     10 => 'Content Syndication',
     11 => 'Yeni Feed',
     12 => 'Admin Home',
-    13 => 'To modify or delete a feed, click on the feed\'s title below. To create a new feed, click on New Feed above.',
-    14 => 'Title',
-    15 => 'Type',
-    16 => 'Filename',
+    13 => 'Bir feedi silmek veya dzenlemek iin , aadaki feed\'in  balna tklayn. Yeni bir feed oluturmak iin , yukarda ki Yeni Feed e tklayn.',
+    14 => 'Balk',
+    15 => 'Tip',
+    16 => 'Dosya Ad',
     17 => 'Format',
-    18 => 'last updated',
-    19 => 'Enabled',
-    20 => 'Yes',
-    21 => 'No',
-    22 => '<i>(no feeds)</i>',
-    23 => 'all Stories',
-    24 => 'Feed Editor',
-    25 => 'Feed Title',
+    18 => 'Son Gncelleme',
+    19 => 'zinli',
+    20 => 'Evet',
+    21 => 'Hyr',
+    22 => '<i>(feed yok)</i>',
+    23 => 'Tm Yazlar',
+    24 => 'Feed Dzenleyici',
+    25 => 'Feed Bal',
     26 => 'Limit',
-    27 => 'Length of entries',
+    27 => 'Giri uzunluu',
     28 => '(0 = no text, 1 = full text, other = limit to that number of chars.)',
-    29 => 'Description',
-    30 => 'Last Update',
-    31 => 'Character Set',
-    32 => 'Language',
-    33 => 'Contents',
+    29 => 'Aklama',
+    30 => 'Son Gncelleme',
+    31 => 'Karakter Set',
+    32 => 'Dil',
+    33 => 'erik',
     34 => 'Entries',
-    35 => 'Saats',
-    36 => 'Select type of feed',
+    35 => 'Saat',
+    36 => 'feedin Tipini sein',
     37 => 'You have at least one plugin installed that supports content syndication. Below you will need to select whether you want to create a Geeklog feed or a feed from one of the plugins.',
-    38 => 'Error: Missing Fields',
-    39 => 'Please fill in the Feed Title, Description, and Filename.',
-    40 => 'Please enter a  number of entries or number of Saats.',
-    41 => 'Links',
-    42 => 'Events',
-    43 => 'All',
-    44 => 'None',
+    38 => 'Hata: Bo Braklan Alanlar',
+    39 => 'Ltfen Feed Bal, Aklama ve Dosya Ad alanlarn doldurunuz.',
+    40 => 'Ltfen bir say girin of entries or number of Saat.',
+    41 => 'Linkler',
+    42 => 'Etkinlikler',
+    43 => 'Hepsi',
+    44 => 'Hibirisi',
     45 => 'Header-link in topic',
-    46 => 'Limit Results',
-    47 => 'Search',
-    48 => 'Edit',
+    46 => 'Sonu Limiti',
+    47 => 'Arama',
+    48 => 'Dzenle',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'HATA: Bu Dosya Ad var'
 );
 
 ###############################################################################
 # confirmation and error messages
 
 $MESSAGE = array(
-    1 => "ifreniz email adresinize gnderilmitir. Ltfen, email adresinize gelen mesajdaki admlar uygulayn. {$_CONF['site_name']} kullandnz iin teekkr ederiz.",
+    1 => "ifreniz email adresinize gnderilmitir. Ltfen, email adresinize gelen mesajdaki admlar uygulayn. (Eer ifreniz elinize ulamadysa ltfen Junk-Bulk Mail Klasrnz kontrol edin) {$_CONF['site_name']} kullandnz iin teekkr ederiz.",
     2 => 'Yaznz sitemize gnderdiiniz iin teekkr ederiz.  Yaznz, site ynetimi tarafndan onaylandktan sonra yaymlanacaktr.',
     3 => "nternet adresini sitemize gnderdiiniz iin teekkr ederiz. Adresiniz, site ynetimi tarafndan onaylandktan sonra yaymlanacaktr. Onaylandktan sonra gnderdiiniz adresi<a href={$_CONF['site_url']}/links.php>Adresler</a> blmnde grebilirsiniz.",
     4 => "Sitemize eklediiniz etkinlik iin teekkr ederiz.  Gnderdiiniz etkinlik, site ynetimi tarafndan onaylandktan sonra yaymlanacaktr. Onaylandktan sonra <a href={$_CONF['site_url']}/calendar.php>takvim</a> blmnde grebilirsiniz.",
@@ -1154,7 +1126,16 @@
     72 => 'Eklenti kurulumunda hata olutu. Ayrntlar iin  error.log dosyasna baknz.',
     73 => 'Eklenti kaldrlrken bir hata olutu. Ayrntlar iin  error.log dosyasna baknz',
     74 => 'pingback baaryla gnderildi.',
-    75 => 'Trackbacklar POST sorgulamas gerektirmektedir.'
+    75 => 'Trackbacklar POST sorgulamas gerektirmektedir.',
+    76 => 'Bu eyi gerekten silmek istiyor musunuz?',
+    77 => 'DKKAT:<br>Geerli dil kodlamanz UTF-8 dir. Ancak, servernz bu kodlamay desteklememektedir. Ltefen PHP iin mbstring fonsiyonunu kurunuz veya farkl bir dil kodlamas/dil seiniz.',
+    78 => 'Girdiiniz iki mail adresininde ayn olduuna emin olun.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Ltfen yeniden giri yapmay deneyin.',
+    82 => 'zin verilen giri saysn atnz.  Ltfen daha sonra tekrar deneyin.',
+    83 => 'ifrenizi, e-mail adresini deitirmek veya ne sistemin ifrenizi kadar hatrlayacan belirlemek iin ltfen ifrenizi girin.',
+    84 => 'Hesabnza silmek iin ifrenizi giriniz.'
 );
 
 ###############################################################################
@@ -1196,7 +1177,6 @@
     'none' => 'Hibiri',
     'accessdenied' => 'Eriim Engellendi',
     'storydenialmsg' => "Bu yazy okuma yetkiniz yok. Bunun nedeni {$_CONF['site_name']} sitesinin bir yesi olmamanzdan kaynaklanyor olabilir. Ltfen {$_CONF['site_name']} sitesinin <a href=users.php?mode=new> yesi olun</a> ve sadece yelere verilen haklara kavuun!",
-    'eventdenialmsg' => "Bu etkinlii grntleme yetkiniz yok. Bunun nedeni {$_CONF['site_name']} sitesinin bir yesi olmamanzdan kaynaklanyor olabilir. Ltfen {$_CONF['site_name']} sitesinin <a href=users.php?mode=new> yesi olun</a> ve sadece yelere verilen haklara kavuun!",
     'nogroupsforcoregroup' => 'Bu grup bir baka gruba dail deil.',
     'grouphasnorights' => 'Bu grup, sitenin hi bir ynetimsel zelliklerine sahip deil.',
     'newgroup' => 'Yeni Grup',
@@ -1221,9 +1201,9 @@
     'submit' => 'Submit',
     'limitresults' => 'Limit Results',
     'group_id' => 'Grup ID',
-    'plugin_access_denied_msg' => 'Ynetim sayfasna yetkisiz olarak girmeye altnz.  Please note that all attempts to illegally access this page are logged.',
+    'plugin_access_denied_msg' => 'Ynetim sayfasna yetkisiz olarak girmeye altnz.  Ip numaranz ve Adnz Kaydedildi.',
     'groupexists' => 'Grup ad Kullanlyor',
-    'groupexistsmsg' => 'Setiiniz grup ad kullanlmda, Baak bir grup ad seiniz.'
+    'groupexistsmsg' => 'Setiiniz grup ad kullanlmda, baka bir grup ad seiniz.'
 );
 
 ###############################################################################
@@ -1382,7 +1362,8 @@
     'pingback_note' => 'To Gnder a pingback for a story, go to the list of stories and click on "Gnder Ping" for the story. To Gnder a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when Gndering the pingback:'
+    'pb_error_details' => 'Error when Gndering the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1422,6 +1403,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Ocak',
+    2 => 'ubat',
+    3 => 'Mart',
+    4 => 'Nisan',
+    5 => 'Mays',
+    6 => 'Haziran',
+    7 => 'Temmuz',
+    8 => 'Austos',
+    9 => 'Eyll',
+    10 => 'Ekim',
+    11 => 'Kasm',
+    12 => 'Aralk'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Pazar',
+    2 => 'Pazartesi',
+    3 => 'Sal',
+    4 => 'aramba',
+    5 => 'Perembe',
+    6 => 'Cuma',
+    7 => 'Cumartesi'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1429,22 +1441,27 @@
 
 $LANG_ADMIN = array(
     'search' => 'Arama',
-    'limit_results' => 'Limit Results',
-    'submit' => 'Submit',
-    'edit' => 'Edit',
-    'admin_home' => 'Admin Home',
-    'create_new' => 'Create New',
-    'enabled' => 'Enabled',
-    'title' => 'Title',
-    'type' => 'Type',
-    'topic' => 'Topic',
-    'help_url' => 'Help File URL',
-    'save' => 'Save',
-    'cancel' => 'Cancel',
-    'delete' => 'Delete',
-    'copy' => 'Copy',
-    'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'limit_results' => 'Sonu Limiti',
+    'submit' => 'Gnder',
+    'edit' => 'Dzenle',
+    'edit_adv' => 'Glm.Dzenleme',
+    'admin_home' => 'Ynetim AnaSayfa',
+    'create_new' => 'Yeni Olutur',
+    'create_new_adv' => 'Yeni Olutur(Glm.)',
+    'enabled' => 'zinli',
+    'title' => 'Balk',
+    'type' => 'Tip',
+    'topic' => 'Konu',
+    'help_url' => 'Yardm Dosyas URL',
+    'save' => 'Kaydet',
+    'cancel' => 'Vazge',
+    'delete' => 'Sil',
+    'delete_sel' => 'Seileni Sil',
+    'copy' => 'Kopyala',
+    'no_results' => '- Giri Bulunumad -',
+    'data_error' => 'Veriniz ilenirken bir hata olutu. Ltfen veri kaynan kontrol edin.',
+    'preview' => 'nzleme',
+    'records_found' => 'Kayt Bulundu'
 );
 
 ###############################################################################
@@ -1460,7 +1477,7 @@
 
 $LANG_commentmodes = array(
     'flat' => 'Alt Alta',
-    'nested' => 'Nested',
+    'nested' => ' e',
     'threaded' => 'Threaded',
     'nocomment' => 'Yorum Gsterme'
 );
@@ -1477,7 +1494,7 @@
 );
 
 $LANG_dateformats = array(
-    0 => 'System Default'
+    0 => 'Sistem Default'
 );
 
 $LANG_featurecodes = array(
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/turkish_utf-8.php 1.4.1.src/cpanel-glprivate/language/turkish_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/turkish_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/turkish_utf-8.php	2006-12-28 16:55:22.000000000 -0600
@@ -123,7 +123,7 @@
     80 => 'hikaye son',
     81 => 'hikaye son',
     82 => 'saat',
-    83 => 'Yorumlar',
+    83 => 'YORUMLAR',
     84 => 'Adresler',
     85 => 'son 48 saat',
     86 => 'Hiç yeni yorum yok',
@@ -163,28 +163,10 @@
     120 => 'Permanent link to this comment',
     121 => 'Yorumlar (%d)',
     122 => 'Trackbacks (%d)',
-    123 => 'Tüm HTML kodlarý izinli'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Etkinlik Takvimi',
-    2 => 'Üzgünüm, gösterilebilinecek etkinlik yok.',
-    3 => 'Ne Zaman',
-    4 => 'Nerede',
-    5 => 'Açýklama',
-    6 => 'Etkinlik Ekle',
-    7 => 'gelecek Etkinlikler',
-    8 => 'Bu etkinliði ekleyerek ileride sadece ilgilendiðiniz etkinlikleri "Takvimim" düðmesine basarak izleyebilirsiniz.',
-    9 => 'Takvimime Ekle',
-    10 => 'Takvimimden Çýkar',
-    11 => "Etkinlik {$_USER['username']} Takvimine ekleniyor",
-    12 => 'Etkinlik',
-    13 => 'Baþlangýç',
-    14 => 'Bitiþ',
-    15 => 'Takvime Geri Dön'
+    123 => 'Tüm HTML kodlarý izinli',
+    124 => 'Seçili tüm öðeleri Silmek için Týklayýn',
+    125 => 'Seçili tüm öðeleri silmek istediðinize emin misiniz?',
+    126 => 'Tüm Öðeleri Ýþaretle veya iþareti kaldýr '
 );
 
 ###############################################################################
@@ -346,7 +328,40 @@
     120 => 'Aktif Hesap',
     121 => 'Servis',
     122 => 'Üzgünüm, Yeni Kullanýcý kaydý kapatýlmýþtýr',
-    123 => "<a href=\"{$_CONF['site_url']}/users.php?mode=new\">Yeni Üye misiniz?</a>?"
+    123 => "<a href=\"{$_CONF['site_url']}/users.php?mode=new\">Yeni Üye misiniz?</a>?",
+    124 => 'Email Tekrar ',
+    125 => 'Girdiðiniz E-mail adresleri ayný deðil!',
+    126 => 'Doðrulama için lütfen tekrar yazýn',
+    127 => 'Burada ki ayarlardan herhangi birini deðiþtirmek için þifrenizi girmeniz gerekiyor.',
+    128 => 'Adýnýz',
+    129 => 'Þifre &amp; Email',
+    130 => 'Hakkýnýzda',
+    131 => 'Günlük Özet Ayarlarý',
+    132 => 'Günlük Özet Özelliði',
+    133 => 'Yorum Ekraný',
+    134 => 'Yorum Ayarlarý',
+    135 => '<li>Yorumlarýnýn nasýl gösterileceðine ait ayarlar</li><li>Yorumlarýn sýralanma þekline ait ayar</li><li>En fazla gösterilecek yorum sayýsý - geçerli sayý 100</li>',
+    136 => 'Gösterilmeyecek Konu ve Yazarlar',
+    137 => 'Yazý Ýçeriði Filtreleme',
+    138 => 'Diðer Ayarlar',
+    139 => 'Görünüm ve Language',
+    140 => '<li>No Topic Icons if checked will not display the story topic icons</li><li>No boxes if checked will only show the Admin Menu, User Menu and Topics<li>Set the maximum number of stories to show per page</li><li>Set your theme and perferred date format</li>',
+    141 => 'Eriþilebilirlik Ayarlarý',
+    142 => 'Geçerli site ayarlarý üyelerden ve yöneticiden üye almanýza izin vermekte ve online kullanýlar bloðunda görünmenize izin vermektedir.Kutuda iþareti kaldýrarak istemediðiniz özelliði iptal edebilirsiniz.',
+    143 => 'Block Ýçeriði Filtresi',
+    144 => 'Göster & Gizle Bloklarý',
+    145 => 'Kiþisel Profilimi Göster',
+    146 => 'Þifre ve E-mail',
+    147 => 'Þifrenizi, emailinizi ve beni hatýrla özelliklerini düzenleyin. Doðrulama için þifrenizi veya e-mail adresinizi iki kez girmeniz gerekmektedir.',
+    148 => 'Kullanýcý Bilgileri',
+    149 => 'Diðer Kullanýcýlarýn da göreceði kullanýcý bilgilerinizi düzenleyin.<li>Ýmzanýz yorumlarýnýza ve forumda ki mesajlarýnýzýn altýna otomatik olarak eklenir</li><li>Kendiniz hakkýnda paylaþmak istediklerinizi BIO bölümüne yazabilirsiniz</li><li>PGP Anahtarý (Boþ Býrakabilirsiniz)</li>',
+    150 => 'DÝKKAT: Javascript recommended for enhanced functionality',
+    151 => 'ÖnÝzleme',
+    152 => 'Kullanýcý Adý & Þifre',
+    153 => 'Görünüm & Language',
+    154 => 'Ýçerik',
+    155 => 'Eriþilebilirlil',
+    156 => 'Hesabýmý Sil'
 );
 
 ###############################################################################
@@ -468,7 +483,7 @@
     58 => 'Daha fazla sonuç &gt;&gt;',
     59 => 'Sonuçlar',
     60 => 'sayfa',
-    61 => 'Refine search'
+    61 => 'Basit Arama'
 );
 
 ###############################################################################
@@ -505,7 +520,7 @@
     28 => 'Top 10 Etkinlikler',
     29 => 'Etkinlik',
     30 => 'Hitler',
-    31 => 'It appears that there are no events on this site or no one has ever clicked on one.'
+    31 => 'Öyle görünüyor ki sitede yeni etkinlik yok veya henüz kimse bir etkinliðe týklamamýþ.'
 );
 
 ###############################################################################
@@ -516,7 +531,7 @@
     2 => 'Arkadaþýna Gönder',
     3 => 'Basýlmaya Uygun Þekli',
     4 => 'Seçenekler',
-    5 => 'PDF Story Format'
+    5 => 'PDF Yazý Formatý'
 );
 
 ###############################################################################
@@ -660,41 +675,12 @@
     59 => 'Bloðu Saða Taþý',
     60 => 'Bloðu Sola Taþý',
     61 => 'Baþlýk Yok',
-    62 => 'Article Limit',
+    62 => 'Yazý Limiti',
     63 => 'Geçersiz Blok Baþlýðý',
     64 => 'Baþlýðýnýz boþ olamaz ve HTML kodu içeremez!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Etkinlik Düzenleyicisi',
-    2 => 'Error',
-    3 => 'Etkinlik Baþlýðý',
-    4 => 'Etkinlik Adresi',
-    5 => 'Etkinlik Baþlangýç Tarihi',
-    6 => 'Etkinlik Bitiþ Tarihi',
-    7 => 'Etkinlik Yeri',
-    8 => 'Etkinlik Açýklamasý',
-    9 => '(http:// ile baþlayýn)',
-    10 => 'Tüm alanlarý doldurmanýz gerekmektedir',
-    11 => 'Etkinlik Yöneticisi',
-    12 => 'Bir etkinliði deðiþtirmek veya silmek istiyorsanýz, adýna basýn. Yeni etkinlik yaratmak için Yeni Etkinlik düðmesine basýn.',
-    13 => 'Etkinlik Baþlýðý',
-    14 => 'Baþlangýç Tarihi',
-    15 => 'Bitiþ Tarihi',
-    16 => 'Eriþim Engellendi',
-    17 => "Eriþim hakkýnýz olmayan bir yazýya eriþmek istiyorsunuz. Bu eyleminiz kayýtlara eklenmiþtir. Lütfen <a href=\"{$_CONF['site_admin_url']}/event.php\">kontrol ana sayfasýna geri dönün</a>.",
-    18 => 'Yeni Etkinlik',
-    19 => 'Kontrol Ana Sayfasý',
-    20 => 'Kaydet',
-    21 => 'Vazgeç',
-    22 => 'Sil',
-    23 => 'Geçersiz Baþlangýç.',
-    24 => 'Geçersiz Bitiþ tarihi.',
-    25 => 'Bitiþ tarihi baþlangýçtan önce.'
+    65 => 'Sýra',
+    66 => 'Autotaglar',
+    67 => 'Autýtag izini için iþaretleyin'
 );
 
 ###############################################################################
@@ -727,8 +713,8 @@
     24 => 'Seçtiðiniz ID kullanýlýyor. Lütfen baþka bir ID seçiniz.',
     25 => 'Yazýyý kaydederken hata oluþtu!',
     26 => 'Yazý Ön Ýzleme',
-    27 => 'If you use [unscaledX] instead of [imageX], the image will be inserted at its original dimensions.',
-    28 => '<p><b>ÖNÝZLEME</b>: Previewing a story with images attached is best done by saving the article as a draft INSTEAD OF hitting the preview button.  Use the preview button only when images are not attached.',
+    27 => 'eðer [imageX]yerine [unscaledX] kodunu kullanýrsanýz , eklediðiniz resim orjinal boyutunda görüntülenir.',
+    28 => '<p><b>ÖNÝZLEME</b>: Eðer yazýnýza bir resim eklediyseniz Önizleme yapmak yerine Taslak olarak kaydetmeniz gerekir. ÖnÝzleme seçeneði yalnýzca resim ataçlanmamýþ iken kullanýlabilir.',
     29 => 'Trackbacks',
     30 => 'Dosya Upload Hatalarý',
     31 => 'Lütfen, Yazar, Baþlýk ve Konu alanlarýný doldurunuz.',
@@ -745,7 +731,7 @@
     42 => "Eriþim hakkýnýz olmayan bir yazýya eriþmek istiyorsunuz.  Bu eyleminiz kayýtlara eklenmiþtir.  Lütfen <a href=\"{$_CONF['site_admin_url']}/story.php\">kontrol ekranýna geri dönünüz</a>.",
     43 => 'Yeni Yazý',
     44 => 'Kontrol Ana Sayfasý',
-    45 => 'Aç(access)',
+    45 => 'Aç(eriþim)',
     46 => '<b>NOT:</b> eðer ileride bir tarih verirseniz, yazýnýz o tarihe kadar yayýmlanmayacaktýr. Bu ayný zamanda bu yazýnýn RDF baþlýklarýnda ve arama ve istatistik sayfalarda görüntülenmeyecektir.',
     47 => 'Resimler',
     48 => 'resim',
@@ -759,7 +745,7 @@
     56 => 'Sembolü Göster',
     57 => 'Ölçeksiz resim göster',
     58 => 'Yazý Yönetimi',
-    59 => 'Option',
+    59 => 'Ayar',
     60 => 'Ýzinli',
     61 => 'Auto Archive',
     62 => 'Otomatik Silme',
@@ -767,15 +753,15 @@
     64 => '',
     65 => '',
     66 => '',
-    67 => 'Expand the Content Edit Area size',
-    68 => 'Reduce the Content Edit Area size',
+    67 => 'Ýçerik Düzenleme Alanýný Geniþlet',
+    68 => 'Ýçerik Düzenleme Alanýný Daralt',
     69 => 'Yazý Yayým Tarihi',
     70 => 'Toolbar Seçimi',
     71 => 'Basit Toolbar',
-    72 => 'Common Toolbar',
+    72 => 'Genel Toolbar',
     73 => 'Geliþmiþ Toolbar',
     74 => 'Geliþmiþ II Toolbar',
-    75 => 'Full Featured',
+    75 => 'Full Özellikli',
     76 => 'Yayým Özellikleri',
     77 => 'Advanced Editorü çalýþtýrabilmek için Javascript gereksinimi vardýr.  config.php den gerekli ayarlarý yapabilirsiniz',
     78 => 'Click <a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default">here</a> to use default editor',
@@ -785,7 +771,9 @@
     82 => 'Resimler',
     83 => 'Arþivleme Ayarlarý',
     84 => 'Eriþim Haklarý',
-    85 => 'Tümünü Göster'
+    85 => 'Tümünü Göster',
+    86 => 'Geliþmiþ Editor',
+    87 => 'Yazý Ýstatistikleri'
 );
 
 ###############################################################################
@@ -817,8 +805,8 @@
     23 => 'bildirilen yeni yazý için bunu varsayýlan baþlýk yap',
     24 => '(*)',
     25 => 'Archive Topic',
-    26 => 'make this the default topic for archived stories. Only one topic allowed.',
-    27 => 'Or Upload Topic Icon',
+    26 => 'Arþivlenmiþ yazýlar için geçerli baþlýk yap.Sadece bir konu izinli.',
+    27 => 'Veya Konu Simgesi Upload Et',
     28 => 'EN Fazla',
     29 => 'Dosya Upload Hatalarý'
 );
@@ -873,7 +861,36 @@
     44 => 'Yetkilendirilme ',
     45 => 'Aktif',
     46 => 'Üye Durumu',
-    47 => 'Düzenle'
+    47 => 'Düzenle',
+    48 => 'Admin Gruplarýný Göster',
+    49 => 'Admin Gruplarý',
+    50 => 'Check to allow filtering this group as an Admin Use Group',
+    51 => 'Online Günler',
+    52 => '<br>Note: "Online Günler" Ýlk üye olunan tarih ve son giriþ tarihi arasýnda ki gün sayýsýdýr.',
+    53 => 'Üye Oldu',
+    54 => 'Toplu Silme',
+    55 => 'Bu iþlem yalnýzca config.php de <code>$_CONF[\'lastlogin\'] = true;</code> þeklinde ayarladýðýnýzda çalýþýr',
+    56 => 'Silmek istediðiniz kullanýcý tipini seçip "Listeyi Güncelle" butonuna basýnýz. Ardýndan, silmek istemediðiniz kullanýcýlarýn iþaretini kaldýrýp "Sil" butonuna basýnýz. Please note that you will only delete those that are currently visible in case the list spans over several pages.',
+    57 => 'Phantom Üyeler',
+    58 => 'Kýsa Süreli Üyeler',
+    59 => 'Eski Üyeler',
+    60 => 'Þu kadar zaman önce Üye olanlar ',
+    61 => ' ay önce , fakat hiç giriþ yapmayanlar.',
+    62 => 'Þu kadar zaman önce Üye olanlar  ',
+    63 => ' ay önce üye olan ve 24 saat içinde giriþ yapan ancak bu tarihten sonra tekrar giriþ yapmayan üyeler.',
+    64 => 'Normal Üyeler, þu kadar zamandýr siteye uðramayanlar ',
+    65 => ' ay.',
+    66 => 'Listeyi Güncelle',
+    67 => 'Aydýr Üye',
+    68 => 'Online Saatler',
+    69 => 'Offline Aylar',
+    70 => 'Silinemedi',
+    71 => 'Baþarýyla Silindi',
+    72 => 'Silinecek Üye Seçilmedi',
+    73 => 'Seçtiðiniz TÜM Kullanýcýlarý silmek istediðinize emin misiniz?',
+    74 => 'Son Üyeler',
+    75 => 'Son Kaydolan Üyeler ',
+    76 => ' ay'
 );
 
 ###############################################################################
@@ -903,53 +920,6 @@
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Pazar',
-    2 => 'Pazartesi',
-    3 => 'Salý',
-    4 => 'Çarþamba',
-    5 => 'Perþembe',
-    6 => 'Cuma',
-    7 => 'Cumartesi',
-    8 => 'Etkinlik Ekle',
-    9 => 'Site Etkinliði',
-    10 => 'Etkinlikler:',
-    11 => 'Genel Takvim',
-    12 => 'Takvimim',
-    13 => 'Ocak',
-    14 => 'Þubat',
-    15 => 'Mart',
-    16 => 'Nisan',
-    17 => 'Mayýs',
-    18 => 'Haziran',
-    19 => 'Temmuz',
-    20 => 'Aðustos',
-    21 => 'Eylül',
-    22 => 'Ekim',
-    23 => 'Kasým',
-    24 => 'Aralýk',
-    25 => 'Geri: ',
-    26 => 'Tüm Gün',
-    27 => 'Hafta',
-    28 => 'Kiþisel Takvim:',
-    29 => 'Genel Takvim',
-    30 => 'etkinliði sil',
-    31 => 'Ekle',
-    32 => 'Etkinlik',
-    33 => 'Tarih',
-    34 => 'Saat',
-    35 => 'Hýzlý Ekle',
-    36 => 'Gönder',
-    37 => 'Özür dilerim, kiþisel takvim özelliði bu sitede tanýmlanmamýþ',
-    38 => 'Kiþisel Etkinlik Düzenleyicisi',
-    39 => 'Gün',
-    40 => 'Hafta',
-    41 => 'Ay'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1016,7 +986,7 @@
     29 => 'Geeklog Sürümü',
     30 => 'Eklentiyi Sil?',
     31 => 'Bu eklentiyi silmek istediðinizden eminmisiniz? Bunu yaparsanýz eklentinin kullandýðý tüm veriler ve veri yapýlarý da silinecektir. Eminseniz Sil düðmesine bir daha basýnýz.',
-    32 => '<p><b>Error AutoLink tag not correct format</b></p>',
+    32 => '<p><b>Hata: AutoLink tag doðru formatta deðil</b></p>',
     33 => 'Yazýlým versionu',
     34 => 'Güncelle',
     35 => 'Düzenle',
@@ -1036,51 +1006,53 @@
     10 => 'Content Syndication',
     11 => 'Yeni Feed',
     12 => 'Admin Home',
-    13 => 'To modify or delete a feed, click on the feed\'s title below. To create a new feed, click on New Feed above.',
-    14 => 'Title',
-    15 => 'Type',
-    16 => 'Filename',
+    13 => 'Bir feedi silmek veya düzenlemek için , aþaðýdaki feed\'in  baþlýðýna týklayýn. Yeni bir feed oluþturmak için , yukarýda ki Yeni Feed e týklayýn.',
+    14 => 'Baþlýk',
+    15 => 'Tip',
+    16 => 'Dosya Adý',
     17 => 'Format',
-    18 => 'last updated',
-    19 => 'Enabled',
-    20 => 'Yes',
-    21 => 'No',
-    22 => '<i>(no feeds)</i>',
-    23 => 'all Stories',
-    24 => 'Feed Editor',
-    25 => 'Feed Title',
+    18 => 'Son Güncelleme',
+    19 => 'Ýzinli',
+    20 => 'Evet',
+    21 => 'Hyýr',
+    22 => '<i>(feed yok)</i>',
+    23 => 'Tüm Yazýlar',
+    24 => 'Feed Düzenleyici',
+    25 => 'Feed Baþlýðý',
     26 => 'Limit',
-    27 => 'Length of entries',
+    27 => 'Giriþ uzunluðu',
     28 => '(0 = no text, 1 = full text, other = limit to that number of chars.)',
-    29 => 'Description',
-    30 => 'Last Update',
-    31 => 'Character Set',
-    32 => 'Language',
-    33 => 'Contents',
+    29 => 'Açýklama',
+    30 => 'Son Güncelleme',
+    31 => 'Karakter Set',
+    32 => 'Dil',
+    33 => 'Ýçerik',
     34 => 'Entries',
-    35 => 'Saats',
-    36 => 'Select type of feed',
+    35 => 'Saat',
+    36 => 'feedin Tipini seçin',
     37 => 'You have at least one plugin installed that supports content syndication. Below you will need to select whether you want to create a Geeklog feed or a feed from one of the plugins.',
-    38 => 'Error: Missing Fields',
-    39 => 'Please fill in the Feed Title, Description, and Filename.',
-    40 => 'Please enter a  number of entries or number of Saats.',
-    41 => 'Links',
-    42 => 'Events',
-    43 => 'All',
-    44 => 'None',
+    38 => 'Hata: Boþ Býrakýlan Alanlar',
+    39 => 'Lütfen Feed Baþlýðý, Açýklama ve Dosya Adý alanlarýný doldurunuz.',
+    40 => 'Lütfen bir sayý girin of entries or number of Saat.',
+    41 => 'Linkler',
+    42 => 'Etkinlikler',
+    43 => 'Hepsi',
+    44 => 'Hiçbirisi',
     45 => 'Header-link in topic',
-    46 => 'Limit Results',
-    47 => 'Search',
-    48 => 'Edit',
+    46 => 'Sonuç Limiti',
+    47 => 'Arama',
+    48 => 'Düzenle',
     49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    50 => "Relative to site url ({$_CONF['site_url']})",
+    51 => 'The filename you have chosen is already used by another feed. Please choose a different one.',
+    52 => 'HATA: Bu Dosya Adý var'
 );
 
 ###############################################################################
 # confirmation and error messages
 
 $MESSAGE = array(
-    1 => "Þifreniz email adresinize gönderilmiþtir. Lütfen, email adresinize gelen mesajdaki adýmlarý uygulayýn. {$_CONF['site_name']} kullandýðýnýz için teþekkür ederiz.",
+    1 => "Þifreniz email adresinize gönderilmiþtir. Lütfen, email adresinize gelen mesajdaki adýmlarý uygulayýn. (Eðer Þifreniz elinize ulaþmadýysa lütfen Junk-Bulk Mail Klasörünüzü kontrol edin) {$_CONF['site_name']} kullandýðýnýz için teþekkür ederiz.",
     2 => 'Yazýnýzý sitemize gönderdiðiniz için teþekkür ederiz.  Yazýnýz, site yönetimi tarafýndan onaylandýktan sonra yayýmlanacaktýr.',
     3 => "Ýnternet adresini sitemize gönderdiðiniz için teþekkür ederiz. Adresiniz, site yönetimi tarafýndan onaylandýktan sonra yayýmlanacaktýr. Onaylandýktan sonra gönderdiðiniz adresi<a href={$_CONF['site_url']}/links.php>Adresler</a> bölümünde görebilirsiniz.",
     4 => "Sitemize eklediðiniz etkinlik için teþekkür ederiz.  Gönderdiðiniz etkinlik, site yönetimi tarafýndan onaylandýktan sonra yayýmlanacaktýr. Onaylandýktan sonra <a href={$_CONF['site_url']}/calendar.php>takvim</a> bölümünde görebilirsiniz.",
@@ -1154,7 +1126,16 @@
     72 => 'Eklenti kurulumunda hata oluþtu. Ayrýntýlar için  error.log dosyasýna bakýnýz.',
     73 => 'Eklenti kaldýrýlýrken bir hata oluþtu. Ayrýntýlar için  error.log dosyasýna bakýnýz',
     74 => 'pingback baþarýyla gönderildi.',
-    75 => 'Trackbacklar POST sorgulamasý gerektirmektedir.'
+    75 => 'Trackbacklar POST sorgulamasý gerektirmektedir.',
+    76 => 'Bu Öðeyi gerçekten silmek istiyor musunuz?',
+    77 => 'DÝKKAT:<br>Geçerli dil kodlamanýz UTF-8 dir. Ancak, serverýnýz bu kodlamayý desteklememektedir. Lütefen PHP için mbstring fonsiyonunu kurunuz veya farklý bir dil kodlamasý/dil seçiniz.',
+    78 => 'Girdiðiniz iki mail adresininde ayný olduðuna emin olun.',
+    79 => 'The page you have been trying to open refers to a function that no longer exists on this site.',
+    80 => 'The plugin that created this feed is currently disabled. You will not be able to edit this feed until you re-enable the parent plugin.',
+    81 => 'You may have mistyped your login credentials.  Lütfen yeniden giriþ yapmayý deneyin.',
+    82 => 'Ýzin verilen giriþ sayýsýný aþtýnýz.  Lütfen daha sonra tekrar deneyin.',
+    83 => 'Þifrenizi, e-mail adresini deðiþtirmek veya ne sistemin þifrenizi kadar hatýrlayacaðýný belirlemek için lütfen þifrenizi girin.',
+    84 => 'Hesabýnýza silmek için þifrenizi giriniz.'
 );
 
 ###############################################################################
@@ -1196,7 +1177,6 @@
     'none' => 'Hiçbiri',
     'accessdenied' => 'Eriþim Engellendi',
     'storydenialmsg' => "Bu yazýyý okuma yetkiniz yok. Bunun nedeni {$_CONF['site_name']} sitesinin bir üyesi olmamanýzdan kaynaklanýyor olabilir. Lütfen {$_CONF['site_name']} sitesinin <a href=users.php?mode=new> üyesi olun</a> ve sadece üyelere verilen haklara kavuþun!",
-    'eventdenialmsg' => "Bu etkinliði görüntüleme yetkiniz yok. Bunun nedeni {$_CONF['site_name']} sitesinin bir üyesi olmamanýzdan kaynaklanýyor olabilir. Lütfen {$_CONF['site_name']} sitesinin <a href=users.php?mode=new> üyesi olun</a> ve sadece üyelere verilen haklara kavuþun!",
     'nogroupsforcoregroup' => 'Bu grup bir baþka gruba daðil deðil.',
     'grouphasnorights' => 'Bu grup, sitenin hiç bir yönetimsel özelliklerine sahip deðil.',
     'newgroup' => 'Yeni Grup',
@@ -1221,9 +1201,9 @@
     'submit' => 'Submit',
     'limitresults' => 'Limit Results',
     'group_id' => 'Grup ID',
-    'plugin_access_denied_msg' => 'Yönetim sayfasýna yetkisiz olarak girmeye çalýþtýnýz.  Please note that all attempts to illegally access this page are logged.',
+    'plugin_access_denied_msg' => 'Yönetim sayfasýna yetkisiz olarak girmeye çalýþtýnýz.  Ip numaranýz ve Adýnýz Kaydedildi.',
     'groupexists' => 'Grup adý Kullanýlýyor',
-    'groupexistsmsg' => 'Seçtiðiniz grup adý kullanýlýmda, Baþak bir grup adý seçiniz.'
+    'groupexistsmsg' => 'Seçtiðiniz grup adý kullanýlýmda, baþka bir grup adý seçiniz.'
 );
 
 ###############################################################################
@@ -1382,7 +1362,8 @@
     'pingback_note' => 'To Gönder a pingback for a story, go to the list of stories and click on "Gönder Ping" for the story. To Gönder a pingback that is not related to a story, <a href="%s">click here</a>.',
     'pbtarget_missing' => 'No Pingback URL',
     'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when Göndering the pingback:'
+    'pb_error_details' => 'Error when Göndering the pingback:',
+    'delete_trackback' => 'To delete this Trackback click: '
 );
 
 ###############################################################################
@@ -1422,6 +1403,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Ocak',
+    2 => 'Þubat',
+    3 => 'Mart',
+    4 => 'Nisan',
+    5 => 'Mayýs',
+    6 => 'Haziran',
+    7 => 'Temmuz',
+    8 => 'Aðustos',
+    9 => 'Eylül',
+    10 => 'Ekim',
+    11 => 'Kasým',
+    12 => 'Aralýk'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Pazar',
+    2 => 'Pazartesi',
+    3 => 'Salý',
+    4 => 'Çarþamba',
+    5 => 'Perþembe',
+    6 => 'Cuma',
+    7 => 'Cumartesi'
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1429,22 +1441,27 @@
 
 $LANG_ADMIN = array(
     'search' => 'Arama',
-    'limit_results' => 'Limit Results',
-    'submit' => 'Submit',
-    'edit' => 'Edit',
-    'admin_home' => 'Admin Home',
-    'create_new' => 'Create New',
-    'enabled' => 'Enabled',
-    'title' => 'Title',
-    'type' => 'Type',
-    'topic' => 'Topic',
-    'help_url' => 'Help File URL',
-    'save' => 'Save',
-    'cancel' => 'Cancel',
-    'delete' => 'Delete',
-    'copy' => 'Copy',
-    'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'limit_results' => 'Sonuç Limiti',
+    'submit' => 'Gönder',
+    'edit' => 'Düzenle',
+    'edit_adv' => 'Glþmþ.Düzenleme',
+    'admin_home' => 'Yönetim AnaSayfa',
+    'create_new' => 'Yeni Oluþtur',
+    'create_new_adv' => 'Yeni Oluþtur(Glþmþ.)',
+    'enabled' => 'Ýzinli',
+    'title' => 'Baþlýk',
+    'type' => 'Tip',
+    'topic' => 'Konu',
+    'help_url' => 'Yardým Dosyasý URL',
+    'save' => 'Kaydet',
+    'cancel' => 'Vazgeç',
+    'delete' => 'Sil',
+    'delete_sel' => 'Seçileni Sil',
+    'copy' => 'Kopyala',
+    'no_results' => '- Giriþ Bulunumadý -',
+    'data_error' => 'Veriniz iþlenirken bir hata oluþtu. Lütfen veri kaynaðýný kontrol edin.',
+    'preview' => 'ÖnÝzleme',
+    'records_found' => 'Kayýt Bulundu'
 );
 
 ###############################################################################
@@ -1460,7 +1477,7 @@
 
 $LANG_commentmodes = array(
     'flat' => 'Alt Alta',
-    'nested' => 'Nested',
+    'nested' => 'Ýç Ýçe',
     'threaded' => 'Threaded',
     'nocomment' => 'Yorum Gösterme'
 );
@@ -1477,7 +1494,7 @@
 );
 
 $LANG_dateformats = array(
-    0 => 'System Default'
+    0 => 'Sistem Default'
 );
 
 $LANG_featurecodes = array(
@@ -1505,4 +1522,4 @@
     -1 => 'Trackback Ýzinsiz'
 );
 
-?>
\ No newline at end of file
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/ukrainian_koi8-u.php 1.4.1.src/cpanel-glprivate/language/ukrainian_koi8-u.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/ukrainian_koi8-u.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/ukrainian_koi8-u.php	2006-12-11 14:10:11.000000000 -0600
@@ -2,12 +2,15 @@
 
 ###############################################################################
 # ukrainian.php
-# This is the Ukrainian language page for GeekLog!
-# Special thanks to Mischa Polivanov for his work on this project
+# This is the ukrainian language page for GeekLog!
+#
+#
+# Ukrainian language is so rich and versatile! 
+# Please, email me your comments and suggestions
 #
-# Copyright (C) 2005 Yaroslav Fedevych
-# jaroslaw@nospam.kiev.ua
-# 
+#
+# Copyright (C) 2006 Vitaliy Biliyenko
+# v.lokki@gmail.com
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -25,7 +28,7 @@
 #
 ###############################################################################
 
-$LANG_CHARSET = 'koi8-u';
+$LANG_CHARSET = 'KOI8-U';
 
 ###############################################################################
 # Array Format:
@@ -42,322 +45,339 @@
 # lib-common.php
 
 $LANG01 = array(
-    1 => 'Ħ:',
+    1 => 'Ħ():',
     2 => ' ̦',
-    3 => 'Ӧ',
-    4 => '',
+    3 => 'Ҧ',
+    4 => '',
     5 => '',
     6 => '',
-    7 => ' ',
-    8 => 'Ӧ',
-    9 => 'ͦΦ˦ æ:',
-    10 => 'Ħ',
+    7 => '',
+    8 => '(,)',
+    9 => 'æ ͦΦ:',
+    10 => ' ',
     11 => 'Ԧ',
     12 => '',
     13 => '',
-    14 => '',
-    15 => 'Ħ',
-    16 => '',
+    14 => '',
+    15 => '',
+    16 => '',
     17 => 'ަ',
     18 => ' SQL',
-    19 => '',
+    19 => ' ',
     20 => 'æ  :',
-    21 => 'Ťæ \'',
-    22 => 'Ʀ ',
-    23 => ' ',
+    21 => '\' ',
+    22 => 'ID ',
+    23 => ' ',
     24 => 'Φ',
-    25 => 'צ',
-    26 => '  Ҧ  Φ ަ.    צצ  Φ ͦ.',
-    27 => 'צ֦ ',
-    28 => '',
-    29 => '  Ҧ.',
-    30 => 'Φۦ Ԧ',
-    31 => 'Φ ͦ HTML:',
-    32 => ',  Ťæ \'',
-    33 => ',   Ħ    ',
+    25 => 'צ',
+    26 => ' ͦΦæ    Ц   Ҧ.    צצԦ  ͦ Ҧ.',
+    27 => 'צ֦ۦ צ',
+    28 => '',
+    29 => ' Ҧ.',
+    30 => 'Φ Ԧ',
+    31 => 'Φ  HTML:',
+    32 => ':  \' ',
+    33 => ':     ',
     34 => '',
-    35 => 'Ť',
-    36 => '',
-    37 => '  ',
-    38 => 'æ ͦ',
-    39 => '',
-    40 => '  <tt>php.ini</tt>  <tt>register_globals = Off</tt>. Geeklog, , դ,   <tt>register_globals</tt>  <strong>on</strong>.  Φ ,  , צ   <strong>on</strong>  Ԧ -.',
-    41 => 'ަ-Ԧ',
-    42 => ':',
-    43 => 'צ  ',
-    44 => '',
+    35 => '  ',
+    36 => 'צ',
+    37 => '  ަ',
+    38 => ' ',
+    39 => '',
+    40 => '  <tt>php.ini</tt>  <tt>register_globals = Off</tt>.  Geeklog դ  <tt>register_globals</tt>  <strong>on</strong>.  Φ , -, צ    <strong>on</strong>  Ԧ  .',
+    41 => 'Ԧ',
+    42 => ':',
+    43 => 'צ',
+    44 => '',
     45 => '  MySQL',
-    46 => 'צ MySQL  ',
-    47 => 'æ ',
-    48 => 'Ʀ ',
-    49 => '',
+    46 => 'צ   MySQL',
+    47 => 'i ',
+    48 => ' ̦ ',
+    49 => '',
     50 => '  ڦ SQL',
     51 => 'צ',
     52 => '',
-    53 => 'ͦΦ ͦ',
-    54 => '  צ .',
-    55 => ' ',
-    56 => '',
+    53 => 'ͦΦ',
+    54 => ' צ .',
+    55 => ' ',
+    56 => '',
     57 => '',
-    58 => 'צ',
-    59 => "  Ť? Ť  <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> </a>",
-    60 => 'ͦ ',
-    61 => '  Ʀ',
-    62 => '̦',
-    63 => '  Ҧ',
-    64 => 'Ħ  צ  ',
-    65 => 'Ҧ  ',
-    66 => ' ',
+    58 => 'Ǧ',
+    59 => "   Ť? ¦   <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> </a>",
+    60 => 'Ħ ',
+    61 => '  ̦ ',
+    62 => '',
+    63 => ' Ҧ',
+    64 => 'Ħ   ',
+    65 => ' Ӧ  ',
+    66 => '',
     67 => '   ',
-    68 => 'ͦ',
-    69 => '\'',
+    68 => '',
+    69 => '',
     70 => '',
-    71 => ' ',
-    72 => ' ',
-    73 => 'Φ ',
-    74 => '',
-    75 => ' ',
+    71 => '̦æ',
+    72 => ' ',
+    73 => '',
+    74 => '',
+    75 => ' ',
     76 => ' ',
-    77 => '',
-    78 => 'ަ Ħ',
+    77 => '̦',
+    78 => '',
     79 => ' ',
-    80 => 'צ  Φ',
-    81 => 'צ  Φ',
-    82 => '',
-    83 => '',
-    84 => '',
-    85 => ' Φ 48 ',
-    86 => '  Ҧ',
+    80 => '  Φ',
+    81 => '  Φ',
+    82 => '()',
+    83 => 'i',
+    84 => '',
+    85 => ' Φ 48 ',
+    86 => '  Ҧ',
     87 => ' Φ 2 Φ',
-    88 => ' Φ  ',
-    89 => '    Ħ',
-    90 => 'ͦ',
-    91 => ' Ҧ  ',
+    88 => '',
+    89 => '',
+    90 => '',
+    91 => 'Ҧ  ',
     92 => '',
-    93 => 'Copyright',
-    94 => 'Ӧ צ   ˦   æ Ҧæ   צצ .',
-    95 => ' ',
+    93 => ' ',
+    94 => 'Ӧ צ   ˦   æ Ҧæ  צצ .',
+    95 => '  ',
     96 => '',
-    97 => '̦ ̦',
-    98 => '',
-    99 => '',
-    100 => '  ',
-    101 => 'ۦ Ħ',
-    102 => 'Ħ  Ԧ',
-    103 => 'Φ Ц ',
-    104 => 'by',
-    105 => ' ',
-    106 => '',
-    107 => ' Ӧ GL',
+    97 => ' ̦',
+    98 => '̦',
+    99 => 'Ԧ',
+    100 => '  ',
+    101 => '',
+    102 => '',
+    103 => 'Ц  ',
+    104 => 'צ',
+    105 => 'Ħ ',
+    106 => '',
+    107 => ' Ӧ Geeklog',
     108 => ' ',
-    109 => 'צ  ',
-    110 => 'צ ͦΦ   ',
-    111 => ' PDF-Ҧ',
+    109 => 'צ  ',
+    110 => 'צ    ͦΦ',
+    111 => ' PDF-Ӧ',
     112 => 'ŤΦ ަ',
     113 => 'æ',
-    114 => 'TRACKBACKS',
-    115 => 'No new trackback comments',
-    116 => 'Trackback',
-    117 => 'Directory',
-    118 => 'Please continue reading on the next page:',
-    119 => "Lost your <a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">password</a>?",
-    120 => 'Permanent link to this comment',
-    121 => 'Comments (%d)',
-    122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => ' Ħ',
-    2 => ',   Φ.',
-    3 => '',
-    4 => '',
-    5 => '',
-    6 => ' Ħ',
-    7 => 'ަ Ħ',
-    8 => '  Ħ   ,      æצ   Ħ,  " "   æ .',
-    9 => '   ',
-    10 => '   ',
-    11 => " Ħ    {$_USER['username']}",
-    12 => 'Ħ',
-    13 => '',
-    14 => 'դ',
-    15 => '  '
+    114 => '',
+    115 => '  -Ҧ',
+    116 => '',
+    117 => 'Ȧ',
+    118 => '-,    Φ Ҧæ:',
+    119 => " <a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\"></a>?",
+    120 => 'Ԧ    ',
+    121 => 'Ҧ (%d)',
+    122 => ' (%d)',
+    123 => ' HTML ',
+    124 => 'Φ   Ӧ צͦΦ ',
+    125 => ' Φ,    Ӧ צͦΦ ?',
+    126 => 'Ħ/ Ħ  Ӧ Ԧ'
 );
 
 ###############################################################################
 # comment.php
 
 $LANG03 = array(
-    1 => 'ͦ ',
-    2 => ' ',
-    3 => 'Ť',
-    4 => 'Ť',
-    5 => 'Ťæ \'',
-    6 => '  Ԧ   Ťæ  ͦ Ҧ.      Ʀ,         .',
-    7 => ' Φ   ',
-    8 => "  .    Ԧ  {$_CONF['commentspeedlimit']} () ͦ ",
+    1 => 'Ħ ',
+    2 => ' ̦æ',
+    3 => '',
+    4 => ' ̦ ',
+    5 => '\' ',
+    6 => ' Φ Ħ , ̦ צ  .  Ҧ  ̦ ,     ŤΦ.',
+    7 => ' Φ   ',
+    8 => "  . դ,  ͦ      {$_CONF['commentspeedlimit']} ",
     9 => '',
-    10 => 'Ħ צ',
+    10 => 'Ħ צ',
     11 => 'Ħ ',
-    12 => ' צ   &laquo;&raquo;  &laquo;&raquo; &mdash;  ȦΦ  Ħ  .',
+    12 => '-, Φ    ,   Ȧ  ̦æ  .',
     13 => ' æ',
     14 => 'Φ ',
-    15 => 'צ   ',
-    16 => '',
+    15 => 'צ   ',
+    16 => '',
     17 => '',
-    18 => ' æ',
-    19 => ' ,   .',
-    20 => ' צצ  Ҧ  ͦ  צ .',
-    21 => '    ͦ     ,    .',
-    22 => '  ,  ,      צΦ.',
-    23 => '  ϧ   ̦.',
+    18 => ' Ҧ',
+    19 => '-,   צ.',
+    20 => ' צצ  Ҧ   ͦ   .',
+    21 => '  ,  צ    ,  צ .',
+    22 => ' ,     ͦ צ.',
+    23 => '     ̦.',
     24 => 'Φ ',
-    25 => ' Φ,   צ    ͦΦצ?',
-    26 => '%s צѤ    Ӧ  ͦ:',
-    27 => 'צ  '
+    25 => ' Φ,   צ    ͦΦ?',
+    26 => '%s צ    :',
+    27 => 'צ  '
 );
 
 ###############################################################################
 # users.php
 
 $LANG04 = array(
-    1 => ' Ʀ ',
-    2 => 'Ťæ \'',
+    1 => 'Ʀ  ',
+    2 => '\' ',
     3 => ' \'',
-    4 => '',
-    5 => ' ',
-    6 => 'ͦ',
+    4 => ' ',
+    5 => ' ',
+    6 => ' Ҧ',
     7 => 'Ʀ',
     8 => ' PGP',
     9 => ' æ',
     10 => 'Φ 10 Ҧ ',
     11 => ' Ҧ ',
-    12 => '˦  ',
-    13 => ' Φ  ',
-    14 => '     ˦.   ͦ  !   , Ť  Φ &laquo;æ  &raquo;   &laquo;æ &raquo;.',
-    15 => " Ʀ  {$_CONF['site_name']} Ц .     ,  Ҧ צ  ,   æ.  , ֦    .",
-    16 => 'æ   Ʀ',
-    17 => 'Ʀ  դ',
-    18 => '  ϧ     Ħ',
-    19 => ' Ťæ \'   ϧ   Ť',
-    20 => '      Ħ',
+    12 => ' ',
+    13 => '   ',
+    14 => '  .  ͦ  . צĦ    Ҧ  " ̦ "  æ .',
+    15 => " ̦   {$_CONF['site_name']} Ц .    צĦ    Φ '  . -, ֦ צ  ,     ڦ ȦԦ.",
+    16 => ' ̦ ',
+    17 => '̦   դ',
+    18 => '   ',
+    19 => '    \'   ',
+    20 => '   ',
     21 => '',
-    22 => "Ť  {$_CONF['site_name']}!",
-    23 => "  Ʀ   Ӧ    Ԧ {$_CONF['site_name']},     ͦ   ̦ Ҧ צ  Φ.     Ʀ, ͦ Ҧ    Φ. ,     <b><i>Φ</i></b>  ̦    Ԧ.",
-    24 => '  Ħ     .',
-    25 => '  צ ?',
-    26 => 'ۦ <em></em> Ϥ Ťæ \', <em></em>    Ťæ  , Ц  Φ &laquo;Ħ &raquo;. æ      ĦΦ    ۦ ڦ .',
-    27 => 'Ť !',
+    22 => "Ť  {$_CONF['site_name']}!",
+    23 => "Ťæ  ۦ ͦ   Ӧ    {$_CONF['site_name']}   צ Ҧ  ̦ Ԧ Ц ϧ '.    Ťդ, Ӧ ۦ ̦æ  Φ. ,     <b><i>Φ</i></b>   ̦ צ   Ԧ.",
+    24 => '  צ   .',
+    25 => ' ?',
+    26 => 'Ħ <em></em>  Ǧ, <em></em>  ,    Ťæ  Φ Ħ . æ ڦ     Ħ   .',
+    27 => 'Ť !',
     28 => 'Ħ ',
-    29 => 'Ť ',
-    30 => 'Ť ',
-    31 => '  æ  צ  Ťæ',
+    29 => ' ',
+    30 => 'צ ',
+    31 => ' Φ  æ æ, צĦ  ',
     32 => '',
-    33 => '  դ ',
-    34 => '  Τ \'',
-    35 => 'Ħ    ͦ',
-    36 => '  http://',
-    37 => 'դ   Ҧ',
-    38 => '  &mdash;  !    ',
-    39 => ' ̦  PGP  ',
-    40 => ' ˦  ',
-    41 => '  ',
+    33 => ' ̦  צ',
+    34 => '  Τ \'',
+    35 => 'Ħ  ,    ͦ',
+    36 => '   http://',
+    37 => 'դ  Ҧ',
+    38 => 'æ  ,  Ӧ ',
+    39 => '̦  PGP  ',
+    40 => ' ˦ ',
+    41 => ' ',
     42 => ' ',
-    43 => ' ˦˦ ',
-    44 => ' צ',
-    45 => '   ',
-    46 => 'Φ  ',
-    47 => ' צ  ',
+    43 => ' ˦˦ ',
+    44 => ' ˦',
+    45 => ' צ ',
+    46 => 'Φ  ',
+    47 => 'Ʀæ   ',
     48 => '',
-    49 => ' ˦ ¦ ',
-    50 => 'Φͦ ,     æ',
-    51 => ' Ԧ-',
-    52 => ':',
-    53 => ' Ԧ  ',
-    54 => '   Ҧ,    .',
-    55 => '    ,    ¦ צ.   צ, \'  Ӧ, ˦ ,   ¦ դ. Φ    .',
+    49 => ' צ   ',
+    50 => 'Φͦ Ħ,     Ҧ',
+    51 => '  ',
+    52 => ' ',
+    53 => '  Ԧ  ',
+    54 => 'ͦ   Ҧ,     .',
+    55 => '  Φ  צͦ,  ,    ¦  .   צͦ ˦ ,     ,   , ˦ ¦    Ϧ. ¦   Ħ Ц .',
     56 => '',
-    57 => ' ',
-    58 => 'Ӧ ',
+    57 => ' צ',
+    58 => ' ',
     59 => ' Ҧ',
-    60 => '   ۦ Ҧ?',
-    61 => ' צۦ  Ҧۦ?',
-    62 => ' 100',
-    63 => "    ,   צ  .  ,  Φ  Ԧ ; դ   {$_CONF['site_name']}!",
-    64 => '  Ҧ ',
-    65 => ' Ť  ',
-    66 => "    Φ Ťæ .  צ  , .   <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> </a>?",
-    67 => ' צ',
-    68 => '\' ',
-    69 => '   \'  Ц   ?',
-    70 => " ΦΦ   ͦ {$_CONF['site_name']}",
-    71 => " צ  {$_CONF['site_name']}  ,        ͦ  Φ ͦ   .   ,   Φ <a href=\"{$_CONF['site_url']}/users.php?mode=new\"></a>  {$_CONF['site_name']}.   ?   ̦  צĦ  !",
-    72 => '',
+    60 => '   צ ϧ Ҧ?',
+    61 => '   Ҧ  ?',
+    62 => '  100',
+    63 => "  צ    . -,  ڦ  צΦ. դ    {$_CONF['site_name']}",
+    64 => ' Ҧ ',
+    65 => '   צ  ',
+    66 => '    ϧ Φ. -,   .',
+    67 => 'Ť',
+    68 => '\'  ',
+    69 => '   Φ \'  Ц    ?',
+    70 => " Ц    ͦ {$_CONF['site_name']}",
+    71 => "  Ԧ    ͦ æ,   դ,    æ æ.    ,  Φ  <a href=\"{$_CONF['site_url']}/users.phpmode=new\">Ť</a>  {$_CONF['site_name']}.   ŤΦ?  Ħ   ̦    !",
+    72 => ' ',
     73 => '',
-    74 => 'ͦΦ ΦΦ !',
-    75 => 'Φ  ',
-    76 => '    ,   Ӧ צ Ԧ    Ц ˦  . Ҧ  , Ҧ  æ!',
-    77 => 'צ',
-    78 => '  צ!',
-    79 => ' ,    צ',
+    74 => 'ͦΦ  !',
+    75 => 'Φ   ',
+    76 => '     ,    Ԧ, ˦ צ  æ   ˦æ  . Ҧ Ԧ Ԧ , ˦  æ!',
+    77 => '',
+    78 => '  !',
+    79 => '  , Φ ',
     80 => 'צ',
-    81 => 'Ħ ',
-    82 => 'Φ 10  ',
-    83 => ' ̦æ ',
-    84 => ' :',
-    85 => ' Ҧ:',
-    86 => ' , Ħ',
-    87 => ' Ťæ \'',
-    88 => " (, )      Ʀ \"%s\"  {$_CONF['site_name']}, <{$_CONF['site_url']}>.\n\n  Ħ ,   Ħ צ,  , Φ   :\n\n",
-    89 => "     æ Ħ,    צ      (    ͦ).\n\n",
-    90 => '        Ʀ. :     ̦,    Ħ  .',
+    81 => 'Ħ ',
+    82 => 'Φ 10   ',
+    83 => ' Ԧ  ',
+    84 => '˦ :',
+    85 => '˦ Ҧ:',
+    86 => ' i  i',
+    87 => ' Ǧ',
+    88 => " ( )      ̦  \"%s\"  {$_CONF['site_name']}, <{$_CONF['site_url']}>.\n\n  Ħ  , -, Φ  :\n\n",
+    89 => "    , Ϧ  צ    צ (   ͦ). \n\n",
+    90 => '     . -, Φ   ,      Ħ  צ æ .',
     91 => '  ',
-    92 => 'ۦ  ',
-    93 => ' Φ     צ %d  .     %d  ͦ  .',
-    94 => '  "%s"',
-    95 => 'Φ  " ",  ,      ϧ  . ,  Ӧ Ԧ  Ҧ, Φ  Ц  , <strong> </strong>,    ĦΦ Φ.',
-    96 => ' Ʀ',
-    97 => 'Ħ  Ʀ',
-    98 => ' Φ,    צ Ʀ?  ,    צ     (Ȧ    Ʀ).   Φ  , Φ  &laquo; Ʀ&raquo;    ͦ,  .',
+    92 => '  ',
+    93 => ' Φ      %d  .  դ Φ %d  ͦ    .',
+    94 => ' ̦  "%s"',
+    95 => 'Ҧ " ̦ ",     ϧ  . ,  Ӧ Ҧ, ĦΦ  Ц  Ǧ <strong></strong>  ,  Ц  "Φ".',
+    96 => ' ̦ ',
+    97 => 'Ħ  ',
+    98 => ' Φ,    ̦ ?  ,    צ    (  Ťդ  ).   Φ, Φ " " .',
     99 => ' Ԧ ',
-    100 => ' צ ͦΦҦ',
-    101 => '  צ ͦΦҦ ',
+    100 => ' צ ͦΦæ',
+    101 => '  צ ͦΦæ ',
     102 => ' צ ަ',
-    103 => '  צ  ަ',
-    104 => '    ̦Φ',
-    105 => '  צæ &laquo;  ̦Φ&raquo;',
-    106 => '',
-    107 => '   ̦ Ʀ̦',
-    108 => 'Confirm new password',
-    109 => 'Enter the New password again here',
-    110 => 'Current Password',
-    111 => 'Please enter your Current password',
-    112 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
-    113 => 'Login Attempt Failed',
-    114 => 'Account Disabled',
-    115 => 'Your account has been disabled, you may not login. Please contact an Administrator.',
-    116 => 'Account Awaiting Activation',
-    117 => 'Your account is currently awaiting activation by an administrator. You will not be able to login until your account has been approved.',
-    118 => "Your {$_CONF['site_name']} account has now been activated by an administrator. You may now login to the site at the url below using your username (<username>) and password as previously emailed to you.",
-    119 => 'If you have forgotten your password, you may request a new one at this url:',
-    120 => 'Account Activated',
-    121 => 'Service',
-    122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    103 => '  צ  ަ',
+    104 => ' -',
+    105 => '  æ " "',
+    106 => ' ',
+    107 => '  Φ æ',
+    108 => '  ',
+    109 => 'Ħ    ',
+    110 => ' ',
+    111 => '-, Ħ   ',
+    112 => '   ˦˦  . -,    ЦΦ.',
+    113 => '  ',
+    114 => '̦  ',
+    115 => ' ̦  ,    צ. -, Φ  ͦΦ.',
+    116 => '̦  ަդ  æ',
+    117 => '  ̦  ަդ  æ ͦΦ.    צ,     .',
+    118 => " ̦   {$_CONF['site_name']}  ͦΦ.   צ    ,  ,   Ǧ (<username>)   Ħ  .",
+    119 => '   ,      æ :',
+    120 => '̦  ',
+    121 => '',
+    122 => ', Ťæ  ަ ',
+    123 => " <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> </a>?",
+    124 => '  ',
+    125 => ' Φ       !',
+    126 => '-, Ҧ  Ц',
+    127 => ' ͦ æ , Ҧ    .',
+    128 => ' \'',
+    129 => '   ',
+    130 => ' ',
+    131 => 'æ  ',
+    132 => ' ',
+    133 => ' Ҧ',
+    134 => 'æ Ҧ',
+    135 => '<li> צ Ҧ  </li><li> צ Ҧ  </li><li>  ˦˦ Ҧ  ,   - 100</li>',
+    136 => '   Ҧ',
+    137 => ' ͦ Ԧ',
+    138 => 'ۦ ',
+    139 => 'ΦΦ   ',
+    140 => '<li>   -     ¦ </li><li> ˦ -    ͦΦ,    <li>  ˦˦   Ҧ</li><li>     </li>',
+    141 => ' Ԧ',
+    142 => '  ަ  ͦΦ         -. ͦΦ æ æ,     Φ.',
+    143 => ' ͦ ',
+    144 => '/ ',
+    145 => '  Ʀ',
+    146 => '   ',
+    147 => '  ,    æ .  Ȧ      צަ  Ц.',
+    148 => 'æ  ',
+    149 => 'ͦ æ  ,     .<li>     Ҧ  Ԧ  ͦ</li><li>Ʀ -    Ԥ,    Ħ  </li><li>   PGP</li>',
+    150 => ':  ϧ æԦ Ȧ Ц Javascript',
+    151 => 'Φ ',
+    152 => '\'   ',
+    153 => 'ΦΦ   ',
+    154 => 'ͦ',
+    155 => 'Φ',
+    156 => ' ̦ ',
+    157 => 'æ '
+
 );
 
 ###############################################################################
 # index.php
 
 $LANG05 = array(
-    1 => '   ',
-    2 => '   . ,     ,   ۦ   Φ',
-    3 => '   &laquo;%s&raquo;',
-    4 => ' Φ ',
+    1 => '   ',
+    2 => '    .        ۦ  Ʀæ  ˦',
+    3 => '   %s',
+    4 => 'Φ  ',
     5 => '',
     6 => '',
     7 => '',
@@ -368,108 +388,108 @@
 # profiles.php
 
 $LANG08 = array(
-    1 => ' צΦ צ  .  ,   .',
-    2 => 'צ Ц צ.',
-    3 => ' , Φ,  դ Ħ  ϧ   ̦ &laquo;צ &raquo;.',
-    4 => ' , Φ  &laquo; \'&raquo;, &laquo;צ &raquo;, &laquo;&raquo;  &laquo;צ&raquo;',
-    5 => ':   .',
-    6 => ' .',
-    7 => 'Ʀ  ',
-    8 => 'Ťæ \'',
+    1 => '  צ צ  .   .',
+    2 => 'צ Ц צ.',
+    3 => 'צ Φ   ̦ צ.',
+    4 => 'Φ : \', צ, , צ',
+    5 => ':   .',
+    6 => ' .',
+    7 => 'Ʀ ',
+    8 => '\' ',
     9 => 'URL ',
-    10 => '  ',
+    10 => 'Ħ  ',
     11 => ' \':',
-    12 => 'צ :',
+    12 => 'צ:',
     13 => ':',
     14 => 'צ:',
-    15 => 'HTML  .',
-    16 => 'Ħ צ',
-    17 => 'Ħ צ   ',
-    18 => ' \'',
-    19 => '  ϧ ',
-    20 => ' Φ',
-    21 => '  ϧ ',
-    22 => 'Ӧ   \'  ',
-    23 => "   Ħ צ %s  %s,  צ() ,   æ  {$_CONF['site_url']}.    ; Φ  ϧ           .",
-    24 => '   ',
-    25 => '  æ æ  Φ Ť  ͦ.  Ťæ   ¦   .',
-    26 => '    Ħ   צ. Ӧ   \'.',
+    15 => 'HTML   .',
+    16 => 'Ħ צ',
+    17 => 'Ħ  ',
+    18 => '',
+    19 => ' ',
+    20 => '',
+    21 => ' ',
+    22 => 'Ӧ  \'צ',
+    23 => "  Ħ  %s  %s   צ() (),   æ    {$_CONF['site_url']}.     Φ , Φ   Ħ,     .",
+    24 => '    ',
+    25 => '   æ,  Φ צ  .  Ťæ   ¦   ',
+    26 => '    Ħ  צ  . Ӧ  \'צ.',
     27 => ' צ',
-    28 => '%s (-): ',
-    29 => " &mdash;    {$_CONF['site_name']}  ",
-    30 => '    ',
-    31 => '',
+    28 => '%s (): ',
+    29 => "    {$_CONF['site_name']}  ",
+    30 => '     ',
+    31 => '',
     32 => '',
-    33 => '   Ԧ ',
+    33 => '  Φ ',
     34 => ' צ',
-    35 => ',  צ      Ԧ.'
+    35 => ',       .'
 );
 
 ###############################################################################
 # search.php
 
 $LANG09 = array(
-    1 => ' ',
-    2 => 'צ ',
+    1 => ' ',
+    2 => 'i ',
     3 => '',
-    4 => 'Ӧ',
+    4 => '',
     5 => '',
-    6 => 'Ԧ',
-    7 => 'Ҧ',
+    6 => 'i',
+    7 => 'i',
     8 => '',
-    9 => 'Ӧ',
-    10 => '',
-    11 => '  ',
-    12 => 'Ц',
-    13 => ' :  Ц',
-    14 => '  Ц   ',
-    15 => ' ,   .',
-    16 => '',
+    9 => '',
+    10 => '',
+    11 => ' ',
+    12 => 'i(,)',
+    13 => ' : ii ',
+    14 => '   i   ',
+    15 => '-,   .',
+    16 => '',
     17 => '',
     18 => '',
-    19 => "       -  Ԧ {$_CONF['site_name']}",
-    20 => ' ',
+    19 => "  i i  i i  {$_CONF['site_name']}",
+    20 => '',
     21 => '',
-    22 => '(  --)',
-    23 => '',
-    24 => ' %d Ҧ̦',
-    25 => ' ',
-    26 => 'Ҧ̦ ',
+    22 => '(  -MM-)',
+    23 => 'i',
+    24 => ' %d \'():',
+    25 => '',
+    26 => 'i ',
     27 => '',
-    28 => '     Φ Ц , Φ Ҧ',
-    29 => '     ',
-    30 => '    צצ  ',
-    31 => '     ',
-    32 => 'Ħ',
+    28 => 'ϧ i       ',
+    29 => '    i',
+    30 => '',
+    31 => '  ̦   ¦Ǧ',
+    32 => '',
     33 => 'URL',
-    34 => '',
-    35 => ' ',
-    36 => '    צצ  Ħ',
-    37 => '   Ħ',
-    38 => '   ',
-    39 => '',
-    40 => 'Ħ',
-    41 => '    ͦ  3 .',
-    42 => ' ,    Ħ -- (Ҧ-ͦ-).',
+    34 => '',
+    35 => ' ',
+    36 => '',
+    37 => '',
+    38 => '',
+    39 => '',
+    40 => '',
+    41 => '   i i 3 .',
+    42 => '    - -MM- (i-i-).',
     43 => ' ',
-    44 => 'Ӧ æ ',
-    45 => '-˦   ̦',
-    46 => 'Φ',
-    47 => 'Φ',
+    44 => ' i ',
+    45 => ' - i i',
+    46 => '',
+    47 => 'i',
     48 => '',
     49 => '',
-    50 => 'צ',
-    51 => '',
-    52 => '',
-    53 => '  ',
-    54 => '  Ҧ',
+    50 => 'i',
+    51 => '',
+    52 => '',
+    53 => '  ',
+    54 => '  Ҧ',
     55 => '',
-    56 => '',
-    57 => '',
-    58 => 'More results &gt;&gt;',
-    59 => 'Results',
-    60 => 'per page',
-    61 => 'Refine search'
+    56 => 'AND',
+    57 => 'OR',
+    58 => '  &gt;&gt;',
+    59 => '',
+    60 => ' Ҧ',
+    61 => ' '
 );
 
 ###############################################################################
@@ -477,106 +497,106 @@
 
 $LANG10 = array(
     1 => ' ',
-    2 => '   ',
-    3 => '(Ҧ)  ͦ',
-    4 => '(צ)  ͦ',
-    5 => '()  ͦ',
-    6 => 'Ħ  ͦ',
-    7 => ' Φ ',
+    2 => ' ˦˦ צצ ',
+    3 => ' (Ҧ)  ͦ',
+    4 => '',
+    5 => '',
+    6 => '',
+    7 => ' Φ ',
     8 => ' Ԧ',
-    9 => 'Ħ',
-    10 => ',   Ԧ  ,    Φ Φ  .',
-    11 => ' Φ ',
+    9 => '',
+    10 => ' Ԧ צΦ Ԧ  Φ   .',
+    11 => ' ¦  ',
     12 => 'Ҧ',
-    13 => ',   Ԧ  ,    Φ Φ  .',
-    14 => ' Φ ',
-    15 => '',
-    16 => 'Ӧ',
-    17 => ',   Ԧ  ,     Φ Φ  .',
-    18 => ' Φ ',
-    19 => '',
-    20 => 'צ',
-    21 => ',   Ԧ  ,    Φ   Φ Φ  .',
-    22 => ' Ԧ צ  ',
-    23 => 'Ԧ',
-    24 => ',   Ԧ Φ    ϧ Ԧ.',
-    25 => 'Top Ten Trackback Commented Stories',
-    26 => 'No trackback comments found.',
-    27 => 'Number of active users',
-    28 => 'Top Ten Events',
-    29 => 'Event',
-    30 => 'Hits',
-    31 => 'It appears that there are no events on this site or no one has ever clicked on one.'
+    13 => ' Ԧ צΦ Ԧ  Φ   .',
+    14 => '',
+    15 => '',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => '',
+    20 => '',
+    21 => '',
+    22 => ' , ˦ Ԧ ',
+    23 => 'צ צ',
+    24 => ',  Φ      Ԧ ',
+    25 => '10 ¦ - ',
+    26 => '  -Ҧ.',
+    27 => '˦  ަ',
+    28 => '',
+    29 => '',
+    30 => '',
+    31 => ''
 );
 
 ###############################################################################
 # article.php
 
 $LANG11 = array(
-    1 => 'Ħ',
-    2 => 'Ħ  צ',
-    3 => '  Ħ  ',
-    4 => ' Ԧ',
-    5 => '  Ԧ PDF'
+    1 => 'Ci',
+    2 => 'Ħ  ',
+    3 => ' Ԧ  ',
+    4 => '',
+    5 => ' Ԧ PDF'
 );
 
 ###############################################################################
 # submit.php
 
 $LANG12 = array(
-    1 => ' ͦ %s,  Φ Ť  .',
-    2 => 'Ť',
+    1 => ' ̦æ  Φ Ť  .',
+    2 => 'צ',
     3 => ' ',
-    4 => 'ͦ Ħ',
-    5 => 'ͦ ',
-    6 => 'ͦ ',
-    7 => ' Ťæ',
-    8 => 'ͦ',
-    9 => '  ͦΦ Ҧ̦   Ԧ   :<ul><li>Φ Ӧ ,  \'צ<li> Φ  Φ צԦ<li>צ  צަ</ul>',
-    10 => '',
-    11 => '',
+    4 => '',
+    5 => '',
+    6 => '̦æ Ԧ',
+    7 => 'Ťæ  ͦ \'',
+    8 => '̦',
+    9 => ' ̦æ æ   Ԧ    , դ   ڦ...<ul><li> \' Φ Ӧ <li>    צ æ<li> צަ צ URL,  դ</li></ul>',
+    10 => '',
+    11 => '',
     12 => ' ',
-    13 => ' ˦',
-    14 => '',
+    13 => ' ˦',
+    14 => ' ',
     15 => '',
-    16 => '֦,   ',
-    17 => 'Ҧ',
-    18 => '',
-    19 => ' ',
-    20 => ': դ Ҧ',
-    21 => ' &laquo;&raquo;, ֦    Ҧ',
-    22 => ': դ ̦',
-    23 => ' , Φ Ӧ  .  \'צ.',
-    24 => '̦æ ',
-    25 => ' ̦æ %s Ц .',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => '   ',
+    20 => '',
+    21 => '',
+    22 => ': Φ ',
+    23 => '-, Φ Ӧ  . Ӧ   \'.',
+    24 => '̦æ ',
+    25 => ' ̦æ Ц .',
     26 => ' Ԧ',
-    27 => 'Ťæ \'',
+    27 => '\' ',
     28 => '',
     29 => '',
-    30 => ' Τ ̦ ',
-    31 => " () .     {$_CONF['speedlimit']}  ͦ ̦æ.",
+    30 => '  ̦æ  ',
+    31 => "  .  դ Φ {$_CONF['speedlimit']}  ͦ ̦æ",
     32 => 'Φ ',
     33 => 'Φ  Ԧ',
-    34 => 'Ť',
-    35 => 'ͦ HTML  ',
-    36 => ' צ',
-    37 => "̦æ Ħ  Ԧ {$_CONF['site_name']} ͦ  Ħ   Ҧ, צ ަ      Ҧ.  æ <b></b>  Ҧ ۦ Ԧ Ħ, - Φ   Ҧæ.<br><br> ͦ Ħ  Ħ  ͦΦ,  Ц    Ħ '   Ҧ.",
-    38 => ' Ħ ',
-    39 => ' ',
-    40 => ' ',
-    41 => ' ',
-    42 => ' ',
-    43 => 'Ħ æ ',
-    44 => '  1',
-    45 => '  2',
-    46 => '',
-    47 => '',
-    48 => ' ',
-    49 => ' Ħ',
-    50 => '  Ħ',
-    51 => '',
-    52 => '',
-    53 => ' '
+    34 => 'Ȧ  ',
+    35 => ' HTML Ǧ ',
+    36 => ' ̦æ',
+    37 => '',
+    38 => '',
+    39 => '',
+    40 => '',
+    41 => '',
+    42 => '',
+    43 => '',
+    44 => ',  1',
+    45 => ',  2',
+    46 => '/',
+    47 => '',
+    48 => '',
+    49 => '',
+    50 => '',
+    51 => '',
+    52 => '',
+    53 => ' ̦ '
 );
 
 ###############################################################################
@@ -587,12 +607,12 @@
 # admin/auth.inc.php
 
 $LANG20 = array(
-    1 => ' Ʀæ',
+    1 => 'Ȧ Ʀæ',
     2 => '! צ Ťæ æ',
-    3 => 'צ   ',
-    4 => 'Ťæ \':',
+    3 => '  ',
+    4 => '\' :',
     5 => ':',
-    6 => '   ͦΦ      .<br> Ҧ     .',
+    6 => '  ͦΦ æ   դ  . <br> Ҧ     .',
     7 => 'צ'
 );
 
@@ -600,102 +620,73 @@
 # admin/block.php
 
 $LANG21 = array(
-    1 => 'դ ͦΦ ',
-    2 => '   Φ     .',
+    1 => ' ͦΦ ',
+    2 => '     ͦ  .',
     3 => ' ˦',
-    4 => ' Φ æ æ  Ц (  צ error.log).',
-    5 => ' ',
-    6 => '',
-    7 => 'Ӧ',
-    8 => '  ',
+    4 => '  Ц   Ҧ.  error.log,  Ħ ¦.',
+    5 => '',
+    6 => '',
+    7 => '',
+    8 => ' ',
     9 => ' ',
-    10 => ' ',
-    11 => ' ',
+    10 => '',
+    11 => ' ',
     12 => ' ',
-    13 => '  ',
-    14 => 'URL  RSS',
-    15 => 'Τ  RSS',
-    16 => '   ',
+    13 => '  ',
+    14 => 'RSS URL',
+    15 => 'Τ  RSS',
+    16 => '  ',
     17 => 'ͦ ',
-    18 => ' , Φ     ͦ ',
-    19 => ' ',
-    20 => ' ',
+    18 => 'Φ :    ͦ ',
+    19 => ' ˦',
+    20 => '',
     21 => '  ',
-    22 => ' ',
+    22 => '',
     23 => ' ',
-    24 => ' ',
-    25 => ' ͦ   , Φ   .    , Φ &laquo; &raquo; .',
-    26 => ' ',
+    24 => '',
+    25 => ' ͦ   , Φ    .     , Φ " " Ҧ.  ͦ ,  Ҧ   [R]  [L].',
+    26 => ' ͦ',
     27 => ' PHP',
-    28 => '  PHP',
+    28 => '  PHP',
     29 => 'æ ',
-    30 => '   Ԧ   PHP   ڦ ϧ ˦, Ħ  æ .  ϧ æ    "phpblock_" (, phpblock_getweather).   æ    Ʀ,    .  ,   , Ҧ     ϧ æ Geeklog, צ  צ æ,    ۦ ͦ.  Φ,  Ц  æ   Φ  "()". Ԧ, ,   ͦ  צ   PHP  /path/to/geeklog/system/lib-custom.php. Ħ    צ    Geeklog  צϧ Ӧ.',
+    30 => '  ,    ˦  PHP , Ħ \' æ.  æ    Ʀ "phpblock_" (, phpblock_getweather).      Ʀ,     .    ,    , ˦    Geeklog,  æ,    ϧ .  ͦ Φ  "()" Ц  ϧ æ.  դ ͦ  æ  /path/to/geeklog/system/lib-custom.php.       ڦ   ϧ Ӧ Geeklog.',
     31 => '  æ PHP. æ %s  դ.',
-    32 => ' &mdash;   (̦)',
-    33 => ' Φ  URL   RSS   ˦',
-    34 => ' Φ    æ  ˦ PHP',
-    35 => ' Φ    ͦ   ˦',
-    36 => ' Φ  ͦ   ˦',
-    37 => '  æ   PHP',
-    38 => 'æ  ˦ PHP Φ  Ʀ &laquo;phpblock_&raquo; (, phpblock_getweather). Ʀ &laquo;phpblock_&raquo;   ͦ ,  ¦  צ .',
-    39 => '',
+    32 => ' () ()',
+    33 => 'Ħ URL RSS    ',
+    34 => 'Ħ   æ  PHP ',
+    35 => 'Ħ   ͦ   ',
+    36 => 'Ħ ͦ   ',
+    37 => ' \'  æ  PHP',
+    38 => 'æ   PHP   Ʀ \'phpblock_\' (, phpblock_getweather). Ʀ \'phpblock_\' Ȧ  ͦ   ¦   .',
+    39 => '',
     40 => '',
     41 => '',
-    42 => 'Ȧ        ˦ Geeklog.',
-    43 => '  Ҧ',
-    44 => ' Ц צ',
-    45 => "    ,     .   .  , <a href=\"{$_CONF['site_admin_url']}/block.php\">Φ  Ҧ ͦΦ ˦</a>.",
-    46 => ' ',
-    47 => 'ͦ ͦΦ',
+    42 => 'Ȧ      ˦',
+    43 => '  Ҧ',
+    44 => '',
+    45 => "     ,      .    . -, <a href=\"{$_CONF['site_admin_url']}/block.php\"> Φ  Ҧ ͦΦ ˦</a>.",
+    46 => '',
+    47 => '',
     48 => ' ',
-    49 => ' (   ¦̦   Φ )',
-    50 => 'URL  צ',
-    51 => 'ަ http://',
-    52 => '    Φ,  צ     ',
-    53 => 'צ',
+    49 => ' ( ͦ˦    Φ)',
+    50 => '',
+    51 => ' http://',
+    52 => '     Φ,       ',
+    53 => '',
     54 => '',
     55 => '',
     56 => '',
-    57 => 'ͦ  ',
-    58 => 'ͦ  ',
+    57 => 'ͦ  ',
+    58 => 'ͦ  ',
     59 => 'ͦ  ',
     60 => 'ͦ  ̦',
-    61 => 'No Title',
-    62 => 'Article Limit',
-    63 => 'Bad Block Title',
-    64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => ' Ħ',
-    2 => '',
-    3 => ' Ħ',
-    4 => 'URL Ħ',
-    5 => '  Ħ',
-    6 => ' ˦ Ħ',
-    7 => ' Ħ',
-    8 => ' Ħ',
-    9 => '(ަ http://)',
-    10 => ' Φ  /,  Ħ   ',
-    11 => ' Ħ',
-    12 => ' ͦ   Ħ Φ  Φ .   ϧ Ħ Φ &laquo; Ħ&raquo; Ҧ. Φ [C]   Ц ϧ  Ħ.',
-    13 => ' Ħ',
-    14 => ' ',
-    15 => ' ˦',
-    16 => ' Ц צ',
-    17 => "    Ħ,     .   .  , <a href=\"{$_CONF['site_admin_url']}/event.php\">Φ  Ҧ ͦΦ Ħ</a>.",
-    18 => ' Ħ',
-    19 => 'ͦ ͦΦ',
-    20 => '',
-    21 => '',
-    22 => '',
-    23 => '  .',
-    24 => 'צ ˦ .',
-    25 => '    .'
+    61 => ' ',
+    62 => ' ',
+    63 => ' ',
+    64 => '    Φ   ͦ HTML!',
+    65 => '',
+    66 => '',
+    67 => 'ͦ,    Ǧ'
 );
 
 ###############################################################################
@@ -705,88 +696,90 @@
     1 => 'Φ Ԧ',
     2 => 'Φ Ԧ',
     3 => '',
-    4 => ' ',
-    5 => ' ',
-    6 => ' ͦ  ',
+    4 => ' ̦æ',
+    5 => ' Ԧ',
+    6 => ' ͦ  ϧ Ԧ',
     7 => '',
     8 => '',
     9 => 'Φ ',
     10 => '',
     11 => '',
-    12 => 'Ʀ',
-    13 => '',
-    14 => '',
+    12 => 'ID',
+    13 => '',
+    14 => '',
     15 => '',
-    16 => ' ',
+    16 => '',
     17 => ' ',
-    18 => '',
-    19 => 'Ҧ',
-    20 => 'Ping',
-    21 => 'Send Ping',
-    22 => '̦ ',
-    23 => '    , Φ  Ҧ æ Ԧ .   , Φ  ϧ Ԧ.   ϧ Ԧ Φ &laquo; &raquo; .',
-    24 => '  Ʀ  Ԧ  դ.  ,  .',
-    25 => 'Error when saving story',
+    18 => '(,i)',
+    19 => '(,)',
+    20 => '',
+    21 => 'Ħ Ц',
+    22 => ' ',
+    23 => ' ͦ   , Φ    .   , Φ  .    , Ҧ " " Ҧ.',
+    24 => 'ID,     æ Ԧ,  . -, Ҧ  ID.',
+    25 => ' Ц  Ҧ Ԧ',
     26 => 'Φ  Ԧ',
-    27 => 'If you use [unscaledX] instead of [imageX], the image will be inserted at its original dimensions.',
-    28 => '<p><b>PREVIEWING</b>: Previewing a story with images attached is best done by saving the article as a draft INSTEAD OF hitting the preview button.  Use the preview button only when images are not attached.',
-    29 => 'Trackbacks',
-    30 => '  Φ ',
-    31 => ' , Φ  &laquo;&raquo;  &laquo; &raquo;',
-    32 => '',
-    33 => '     ',
+    27 => '   [unscaledX] ͦ [imageX],     Ǧ ͦ.',
+    28 => '<p><b> </b>:     , Ҧ   , ͦ   .       ˦ .',
+    29 => '',
+    30 => '  ̦',
+    31 => '-, Φ    ',
+    32 => '',
+    33 => '     ',
     34 => '',
     35 => '',
     36 => '',
-    37 => ' צ',
-    38 => ' ',
-    39 => '',
-    40 => ' Ц צ',
-    41 => "     Ԧ,     .   .        ͦ Ԧ  .  ,  ˦Φ <a href=\"{$_CONF['site_admin_url']}/story.php\">Φ  Ҧ ͦΦ </a>.",
-    42 => "     Ԧ,     .   .  , <a href=\"{$_CONF['site_admin_url']}/story.php\">Φ  Ҧ ͦΦ </a>.",
-    43 => ' ',
-    44 => 'ͦ ͦΦ',
-    45 => '',
-    46 => '<b>:</b>   ͦ   ,     ,   ̦դ   æ .   ,         æ ˦ RSS,       Ҧ   .',
-    47 => '',
-    48 => '',
+    37 => ' צ',
+    38 => ' ',
+    39 => '',
+    40 => '',
+    41 => "     Ԧ,  ϧ    .    .     . -, <a href=\"{$_CONF['site_admin_url']}/story.php\"> Φ  Ҧ ͦΦ   </a>  ˦.",
+    42 => "     Ԧ,  ϧ    .    . -, <a href=\"{$_CONF['site_admin_url']}/story.php\">Φ  Ҧ ͦΦ </a>.",
+    43 => '',
+    44 => '',
+    45 => '',
+    46 => '<b>:</b>   ͦ      ,     ̦  ϧ  .   ,       ۦ Ҧæ RSS        æ .',
+    47 => '',
+    48 => '',
     49 => '',
     50 => '̦',
-    51 => '    , Ҧ    æ Ԧ,  Ȧ    ͦ .    [imageX], [imageX_right]  [imageX_left],  X &mdash;    . :  Φ  Φ .       .<br><p><b> </b>: Φ  Ԧ     Ħ, Ҧ   ,     &laquo;Φ &raquo;.     Ħ,    .',
-    52 => '',
-    53 => ' .  Φ        ,  Φ    ',
-    54 => 'Φ Φ ',
-    55 => ' ҦΦ ϧ Ԧ  Φ .  ,    Ҧ',
-    56 => '  ',
-    57 => '    ',
-    58 => ' ',
-    59 => 'æ',
-    60 => 'צ',
-    61 => 'Ȧ',
-    62 => '',
+    51 => '      ˦ Ц\'  æ Ԧ,  Φ  æ צ .  æ צ   [imageX], [imageX_right]  [imageX_left],  X     ,   Ц\'. :  Φ  , ˦  Ц\'.       .<BR>',
+    52 => '',
+    53 => '  .  Φ        ,  Φ   ͦ',
+    54 => '\'Φ   ',
+    55 => ' Φ Ԧ  Φ .  -,    ',
+    56 => '  ',
+    57 => '    ͦ',
+    58 => 'æ Ȧ',
+    59 => 'æ',
+    60 => '',
+    61 => ' Ȧ',
+    62 => ' ',
     63 => '',
     64 => '',
     65 => '',
     66 => '',
-    67 => 'Expand the Content Edit Area size',
-    68 => 'Reduce the Content Edit Area size',
-    69 => 'Publish Story Date',
-    70 => 'Toolbar Selection',
-    71 => 'Basic Toolbar',
-    72 => 'Common Toolbar',
-    73 => 'Advanced Toolbar',
-    74 => 'Advanced II Toolbar',
-    75 => 'Full Featured',
-    76 => 'Publish Options',
-    77 => 'Javascript needs to be enabled for Advanced Editor. Option can be disabled in the main site config.php',
-    78 => 'Click <a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default">here</a> to use default editor',
-    79 => 'Preview',
-    80 => 'Editor',
-    81 => 'Publish Options',
-    82 => 'Images',
-    83 => 'Archive Options',
-    84 => 'Permissions',
-    85 => 'Show All'
+    67 => '¦ ͦ  ͦ',
+    68 => ' ͦ  ͦ',
+    69 => '̦  Ԧ',
+    70 => '¦ ̦ Ԧ',
+    71 => ' ',
+    72 => ' ',
+    73 => ' ',
+    74 => '  II',
+    75 => 'Ӧ Ԧ',
+    76 => 'æ ̦æ',
+    77 => '    Ҧ   Javascript.  æ  צ  ̦ config.php',
+    78 => 'Φ <a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default"></a>,    ',
+    79 => '',
+    80 => '',
+    81 => 'æ ̦æ',
+    82 => '',
+    83 => 'æ Ȧ',
+    84 => ' ',
+    85 => ' ',
+    86 => ' ',
+    87 => ' Ԧ'
 );
 
 ###############################################################################
@@ -794,34 +787,34 @@
 
 $LANG27 = array(
     1 => ' ',
-    2 => 'Ʀ ',
+    2 => 'ID ',
     3 => ' ',
-    4 => ' ',
-    5 => '(  ¦̦)',
-    6 => '    Ӧ \'Φ   Ԧ  ',
-    7 => ' , Φ  &laquo;Ʀ &raquo;  &laquo; &raquo;',
+    4 => ' ',
+    5 => '(  ͦ)',
+    6 => '     Ӧ \'     ˦',
+    7 => '-, Φ  ID    ',
     8 => ' ',
-    9 => ' ͦ   , Φ  Φ.    , Φ  &laquo; &raquo;,  ̦.     צ Ҧ   ϧ .  (*)   .',
+    9 => ' ͦ   , Φ .    , Ҧ " " Ҧ.     Ҧ   ϧ .  (*) צͦ   .',
     10 => ' ',
-    11 => '/Ҧ',
-    12 => ' Ц צ',
-    13 => "     ,     .   .  , <a href=\"{$_CONF['site_admin_url']}/topic.php\">Φ  Ҧ ͦΦ </a>.",
-    14 => 'Ӧ ',
-    15 => '',
-    16 => '',
+    11 => '  Ҧ',
+    12 => '  Ц',
+    13 => "     ,  ϧ    .    . -, <a href=\"{$_CONF['site_admin_url']}/topic.php\"> Φ  Ҧ ͦΦ  </a>.",
+    14 => ' ',
+    15 => 'צ',
+    16 => ' ',
     17 => ' ',
-    18 => 'ͦ ͦΦ',
+    18 => 'ͦΦ',
     19 => '',
     20 => '',
     21 => '',
-    22 => '',
-    23 => '     Ħ ',
+    22 => ' ',
+    23 => '       ',
     24 => '(*)',
     25 => 'Ȧ ',
-    26 => '     Ȧ .     .',
-    27 => 'Or Upload Topic Icon',
-    28 => 'Maximum',
-    29 => 'File Upload Errors'
+    26 => '      Ȧ .      .',
+    27 => '  ',
+    28 => '',
+    29 => '  ̦'
 );
 
 ###############################################################################
@@ -829,52 +822,81 @@
 
 $LANG28 = array(
     1 => ' ަ',
-    2 => 'Ʀ ',
-    3 => 'Ťæ \' ',
+    2 => 'ID ',
+    3 => '\' ',
     4 => ' \'',
     5 => '',
     6 => ' ',
     7 => ' ',
-    8 => 'ͦ',
-    9 => '(  ¦̦)',
-    10 => ' , Φ  &laquo;Ťæ \' &raquo;  &laquo; &raquo;',
+    8 => ' Ҧ',
+    9 => '(  ͦ)',
+    10 => '-, Φ  \'    ',
     11 => ' ަ',
-    12 => ' ͦ   , Φ   .     Φ  &laquo; &raquo; ̦.   Ħ  ,   Ťæ Φ,  Φ  ϧ  (, *son*  *.edu)   .',
-    13 => '',
+    12 => ' ͦ   , Φ    .   æ  , Ҧ  Ǧ ڦ .   , Φ " " Ҧ.     ,    Φ,   Ǧ ( *son*  *.edu)  ͦ .',
+    13 => ' ',
     14 => ' Ťæ',
-    15 => ' ',
-    16 => 'ͦ ͦΦ',
-    17 => 'changepw',
-    18 => '',
-    19 => '',
+    15 => '',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => '',
     20 => '',
-    21 => '\' ,    ,  դ.',
+    21 => ' \'  դ.',
     22 => '',
-    23 => ' ',
-    24 => '  ަ',
-    25 => '    Geeklog  ަ.         , Ħ æ.     :  \', Ťæ \',  .   צ  Ħ  ЦĦ . Φ    Φ ͦ   .   ڦ   , Ҧ   ,  צ  Ӧ !',
-    26 => '',
-    27 => ' ',
-    28 => 'ͦ ,    ',
+    23 => ' ',
+    24 => '  ަ',
+    25 => '    ަ  Geeklog.        -ͦ       :  \', \' ,  ϧ .  צ,  ,  Ħ  .  Φ      .         ϧ ,  צަ צ Φ Φ!',
+    26 => '',
+    27 => '',
+    28 => 'ͦ   ',
     29 => '',
     30 => '',
     31 => 'צ ަ',
-    32 => ' .  %d ަ,  %d ',
+    32 => ' .  %d Ӧ,  %d ',
     33 => 'Ħ',
     34 => ':  Φ    .',
-    35 => ' Ťæ',
+    35 => 'Φ Ȧ  ',
     36 => '(Φ)',
     37 => 'UID',
-    38 => 'Group Listing',
-    39 => 'Password (again)',
-    40 => 'Registration Date',
-    41 => 'Last login Date',
-    42 => 'Banned',
-    43 => 'Awaiting Activation',
-    44 => 'Awaiting Authorization',
-    45 => 'Active',
-    46 => 'User Status',
-    47 => 'Edit'
+    38 => ' ',
+    39 => ' ( )',
+    40 => ' Ťæ',
+    41 => '  ',
+    42 => '',
+    43 => 'ަդ  æ',
+    44 => 'ަդ  æ',
+    45 => '',
+    46 => ' ',
+    47 => '',
+    48 => ' ͦΦΦ ',
+    49 => 'ͦΦ ',
+    50 => 'ͦ,  Ʀ    ͦΦ',
+    51 => 'Φ ',
+    52 => '<br>: "Φ " -  ˦˦ Φ ͦ  Ťæ  Φ   .',
+    53 => 'Ť',
+    54 => ' ',
+    55 => ' ¤   ,    <code>$_CONF[\'lastlogin\'] = true;</code>   ̦ config.php',
+    56 => '-, Ҧ  ,      Φ " ". Ħ Φͦ Ħ  ,    ,  Φ "". ,       ,   Φ Ҧæ,    ˦ Ҧ.',
+    57 => 'Φ ަ',
+    58 => 'צ ަ',
+    59 => 'Φ ަ',
+    60 => 'ަ,  Ť ¦ ',
+    61 => ' ͦ() ,       .',
+    62 => 'ަ,  Ť ¦ ',
+    63 => ' ͦ() , צ    Φ 24 ,  צĦ    .',
+    64 => 'Φ ަ, ˦   צצ    Φ ',
+    65 => ' ͦ().',
+    66 => ' ',
+    67 => 'æ צ Ťæ',
+    68 => ' ',
+    69 => 'æ ',
+    70 => '  ',
+    71 => 'Ц ',
+    72 => '     ',
+    73 => ' Φ,       ަ?',
+    74 => 'Φ ަ',
+    75 => 'ަ,  Ť  Φ ',
+    76 => ' ͦ()'
 );
 
 ###############################################################################
@@ -882,280 +904,244 @@
 
 $LANG29 = array(
     1 => '',
-    2 => '',
-    3 => '',
+    2 => '',
+    3 => 'ͦ',
     4 => 'Ʀ',
-    10 => '',
+    10 => '',
     11 => ' ',
     12 => 'URL',
-    13 => 'Ҧ',
+    13 => ' ',
     14 => '',
     15 => '',
-    16 => 'Ťæ \'',
+    16 => '\' ',
     17 => ' \'',
-    18 => 'Email',
-    34 => 'Command and Control',
-    35 => 'ĦΦ Ԧ',
-    36 => 'ĦΦ ',
-    37 => 'ĦΦ Ħ',
-    38 => 'Ħ',
-    39 => 'ڦ  Ҧ̦  æ',
-    40 => '˦ ̦æ'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Ħ',
-    2 => 'Ħ',
-    3 => '',
-    4 => '',
-    5 => '',
-    6 => '\'',
-    7 => '',
-    8 => ' Ħ',
-    9 => '%s Event',
-    10 => 'Ħ ',
-    11 => ' ',
-    12 => ' ',
-    13 => '',
-    14 => '',
-    15 => '',
-    16 => 'צ',
-    17 => '',
-    18 => '',
-    19 => '',
-    20 => '',
-    21 => '',
-    22 => '',
-    23 => '',
-    24 => '',
-    25 => '  ',
-    26 => ' ',
-    27 => '',
-    28 => '  ',
-    29 => '̦ ',
-    30 => ' Ħ',
-    31 => '',
-    32 => 'Ħ',
-    33 => '',
-    34 => '',
-    35 => ' ',
-    36 => 'Ħ',
-    37 => ', æ  Ҧ     Ԧ',
-    38 => '  Ħ',
-    39 => '',
-    40 => '',
-    41 => ''
+    18 => ' ',
+    34 => '̦',
+    35 => 'Ԧ  ',
+    36 => '',
+    37 => '',
+    38 => '',
+    39 => '    Φ',
+    40 => 'ަ  '
 );
 
 ###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
-    1 => " Ӧ {$_CONF['site_name']}",
-    2 => '',
-    3 => 'צ ',
+    1 => " {$_CONF['site_name']}",
+    2 => 'i',
+    3 => 'ii:',
     4 => '',
     5 => '',
-    6 => ' Ħ:',
-    7 => 'Ӧ ',
-    8 => 'Admin',
-    9 => '',
+    6 => ':',
+    7 => 'i i',
+    8 => 'ii',
+    9 => '',
     10 => 'HTML',
-    11 => 'ͦ צ!',
+    11 => 'i i!',
     12 => 'Ħ',
-    13 => '',
-    14 => '  ',
-    15 => '  צΦ : ',
-    16 => 'Ц צĦ צ : ',
-    17 => "<a href={$_CONF['site_admin_url']}/mail.php>Ħ  צ</a>",
+    13 => '',
+    14 => 'I  ',
+    15 => '  ii : ',
+    16 => 'i i i : ',
+    17 => "<a href=\"{$_CONF['site_admin_url']}/mail.php\">Ħ  צ</a>",
     18 => '',
-    19 => ':    Ħ צ Ӧ , Ҧ ڦ   &laquo;ŤΦ ަ&raquo;.',
-    20 => "Ц  <successcount> צ,  <failcount> צ   Ħ. \n	  ҦΦ æ,       צ .  \n	   <a href=\"{$_CONF['site_admin_url']}/mail.php\">Ħ  צ</a>  <a href=\"{$_CONF['site_admin_url']}/moderation.php\">  ͦΦ Ҧ</a>.",
-    21 => '',
-    22 => 'Ц æ',
-    23 => ' ',
-    24 => ' Ц æ',
-    25 => '-- Ҧ  --',
-    26 => 'Φ Ӧ    Ҧ  ަ ڦ .'
+    19 => ':    Ħ צ Ӧ , Ҧ  ŤΦ ަ ڦ .',
+    20 => "Ц צ <successcount> צ  Ц - <failcount>.   Ҧ, æ   צ .     <a href=\"{$_CONF['site_admin_url']}/mail.php\">Ħ  צ</a>  <a href=\"{$_CONF['site_admin_url']}/moderation.php\">   Ҧ ͦΦ</a>.",
+    21 => '()',
+    22 => 'i',
+    23 => ' ',
+    24 => ' ЦȦ',
+    25 => '-- Ҧ  --',
+    26 => 'Φ Ӧ    Ҧ  ަ ڦ .'
 );
 
 ###############################################################################
 # admin/plugins.php
 
 $LANG32 = array(
-    1 => '     ۦ æ Geeklog , , ۦ ͦ. ,     , Φ  <a href="http://www.geeklog.net">ͦ Geeklog</a>, ˦   צѤ Ӧ ĦΦ      æ Ħ æ . ,   ͦ,       ˦     ,     Ԧ  ,  ,   դ  ڦ Φ Ԧ. צ Ц æ ,   դ Ц - , Φ  צצ  ,     Geeklog.  ,      .  , Ҧ ڦ       .',
-    2 => ' צ ϧ ',
-    3 => '  ',
-    4 => ' ',
-    5 => '̦ ',
-    6 => ':   !',
-    7 => ',    ,  դ.  , ަ    ',
-    8 => 'צ   ͦΦ  ',
-    9 => '   צϧ Ӧ Geeklog.  צ צ ͦ <a href="http://www.geeklog.net">Geeklog</a>,    צ Ӧ .',
-    10 => '<br><b>     ϧ .</b><br><br>',
-    11 => '    , Φ   צ .   æ ,   ̦    (Ҧ).    Ӧ,  Ӧ,    .    Ħ,    .      Φ   צϧ æ.',
-    12 => 'plugineditor()    ',
-    13 => ' ',
-    14 => ' ',
-    15 => 'ͦ ͦΦ',
-    16 => ' ',
-    17 => 'Ӧ ',
+    1 => '    Geeklog  צ ۦ ͦ. ,     ̦, Φ  <a href="http://www.geeklog.net" target="_blank">ϧ Ҧ Geeklog</a>, ˦  դ Ӧ ̦,   ,  Ҧ æ . ,   ͦ,   ̦     , ˦     ,   դ ̦,     .  צ Ц      ,     ЦΦ æ    צצԦ  , Φ   Geeklog.  ,     צ . Ҧ        æ .',
+    2 => '   ̦',
+    3 => '  ̦',
+    4 => ' ',
+    5 => ' ̦',
+    6 => ':   !',
+    7 => ',    ,  դ.  ,   , ަ ',
+    8 => '   צ ͦԦ Ӧ',
+    9 => ' դ ¦ ϧ Ӧ Geeklog. צ  Ц <a href="http://www.geeklog.net">Geeklog</a>     Ӧ .',
+    10 => '<br><b> ͦ   ̦.</b><br><br>',
+    11 => ' ͦ   , Φ    .   ̦  ,   Ҧ .    Ӧ,   Ӧ   .    ,    .     , -, Φ   æ.',
+    12 => '\'     plugineditor()',
+    13 => ' ̦',
+    14 => ' ',
+    15 => 'ͦΦ',
+    16 => ' ',
+    17 => 'Ӧ ',
     18 => 'Ӧ Geeklog',
-    19 => 'צ',
+    19 => '',
     20 => '',
     21 => '',
     22 => '',
     23 => '',
     24 => '',
     25 => '',
-    26 => ' ',
-    27 => 'ͦ ',
-    28 => ' Ӧ',
+    26 => ' ',
+    27 => ' Ҧ',
+    28 => 'Ӧ ',
     29 => 'Ӧ Geeklog',
-    30 => ' ?',
-    31 => ' Φ,     ?  ,    Ӧ Φ   , Φ æ .   Φ, Φ &laquo;&raquo;    ͦ,  .',
-    32 => '<p><b>: צ   ͦ AutoLink</b></p>',
+    30 => ' ?',
+    31 => ' Φ,     ? ,   Ӧ   Φ, ˦   .   Φ, Φ "".',
+    32 => '<p><b> -    AutoLink</b></p>',
     33 => 'Ӧ ',
-    34 => '',
-    35 => 'Edit',
-    36 => 'Code',
-    37 => 'Data',
-    38 => 'Update!'
+    34 => '',
+    35 => '',
+    36 => '',
+    37 => 'Φ',
+    38 => '!'
 );
 
 ###############################################################################
 # admin/syndication.php
 
 $LANG33 = array(
-    1 => ' æ',
+    1 => ' Ҧ',
     2 => '',
     3 => '',
     4 => '',
-    10 => 'æ ͦ',
-    11 => ' æ',
-    12 => 'ͦ ͦΦ',
-    13 => ' ͦ   æ, Φ  צ æ .   ϧ æ Φ &laquo; æ&raquo; .',
-    14 => '',
+    10 => ' ',
+    11 => ' Ҧ',
+    12 => 'ͦΦ',
+    13 => ' ͦ   Ҧ, Φ    .   , Ҧ " " Ҧ.',
+    14 => '',
     15 => '',
-    16 => ' ',
+    16 => '\' ',
     17 => '',
-    18 => 'Τ ',
-    19 => '',
+    18 => 'Τ ',
+    19 => '',
     20 => '',
     21 => '',
-    22 => '<i>( æ)</i>',
+    22 => '<i>( Ҧ)</i>',
     23 => 'Ӧ Ԧ',
-    24 => ' æ',
-    25 => ' æ',
+    24 => ' Ҧ ',
+    25 => ' Ҧ',
     26 => '',
-    27 => ' Ԧ',
-    28 => '(0 =  , 1 =  ,   =   æ ˦Ԧ ̦.)',
+    27 => ' Ӧ',
+    28 => '(0 =  , 1 =  ,   =   ϧ ˦Ԧ ˦.)',
     29 => '',
     30 => 'Τ ',
-    31 => '¦ ̦',
+    31 => '',
     32 => '',
     33 => 'ͦ',
-    34 => '',
-    35 => '',
-    36 => 'Ҧ  æ',
-    37 => '     ,  Цդ æ ͦ.   Ҧ  ,     æ Geeklog  æ Φ  .',
-    38 => ':   æ',
-    39 => ' , Φ  &laquo; æ&raquo;, &laquo;&raquo;  &laquo; &raquo;.',
-    40 => ' , ֦ ˦˦   ˦˦ Ԧ.',
-    41 => '',
-    42 => 'Ħ',
-    43 => 'All',
-    44 => 'None',
-    45 => 'Header-link in topic',
-    46 => 'Limit Results',
-    47 => 'Search',
-    48 => 'Edit',
-    49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    34 => '',
+    35 => '',
+    36 => 'Ҧ  Ҧ',
+    37 => '   Φ  ,  Цդ  .   Ҧ ,    Ҧ Geeklog  Ҧ   ̦.',
+    38 => ': Φ ',
+    39 => '-, Φ  Ҧ,   \' .',
+    40 => '-, Ħ ˦˦ Ӧ  ˦˦ .',
+    41 => 'Ħ',
+    42 => '',
+    43 => 'Ӧ',
+    44 => 'ϧ',
+    45 => '  ͦ',
+    46 => ' ',
+    47 => '',
+    48 => '',
+    49 => ' Ҧ',
+    50 => "  URL  ({$_CONF['site_url']})",
+    51 => '\'    ,    ϧ Ҧ. -, Ҧ .',
+    52 => ': \'   դ'
 );
 
 ###############################################################################
 # confirmation and error messages
 
 $MESSAGE = array(
-    1 => "  צĦ ,  צ -    Ħ.  ,  ڦ  Ԧ. դ    {$_CONF['site_name']}",
-    2 => "դ  Ħ ϧ Ԧ  {$_CONF['site_name']}.  Ħ  צ  .   ,      .",
-    3 => "դ  Ħ   {$_CONF['site_name']}.  Ħ  צ  .   ,     Ħ̦ <a href={$_CONF['site_url']}/links.php></a>.",
-    4 => "դ  Ħ Ħ  {$_CONF['site_name']}.  Ħ  צ  .  Ħ ,     Ħ̦ <a href={$_CONF['site_url']}/calendar.php></a>.",
-    5 => 'æ    Ц .',
-    6 => 'ۦ  Ц .',
-    7 => 'ۦ   Ҧ Ц .',
-    8 => ' Ц   .',
+    1 => "  צ   . -,  ڦ   צΦ. դ   {$_CONF['site_name']}",
+    2 => "դ   Ԧ  {$_CONF['site_name']}.     .  צ  ,     ۦ ަ  .",
+    3 => '',
+    4 => '',
+    5 => 'æ   ̦  Ц .',
+    6 => 'ۦ   Ц .',
+    7 => 'ۦ  Ҧ Ц .',
+    8 => ' Ц   .',
     9 => '  Ц .',
     10 => ' Ц .',
     11 => '  Ц .',
     12 => ' Ц .',
-    13 => '  Ц .',
-    14 => ', Ӧ  Ԧ   Ц .',
-    15 => '  Ц .',
-    16 => ' Ц .',
-    17 => ' Ħ Ц .',
-    18 => 'Ħ Ц .',
-    19 => '  Ц .',
-    20 => ' Ц .',
-    21 => ' Ц .',
+    13 => ' Ц .',
+    14 => ', Ӧ   Ԧ, ˦ צ  ŧ, Ц .',
+    15 => '',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => '',
+    20 => '',
+    21 => 'Φ  Ц .',
     22 => ' Ц .',
-    23 => '  ¦  Ħ   .   Ʀ Ħ.',
-    24 => 'Ħ    ',
-    25 => '     צ,    צ  ',
-    26 => 'Ħ Ц     ',
-    27 => 'צ Ц צĦ.',
-    28 => ' Ц ',
-    29 => ', Ԧ Ҧ   Ԧ Φ',
-    30 => ' Ц צ',
-    31 => ',      Ҧ ͦΦ . ,  Ӧ     æ ',
-    32 => ',      Ҧ ͦΦ . ,  Ӧ     æ ',
-    33 => ',      Ҧ ͦΦ ˦. ,  Ӧ     æ ',
-    34 => ',      Ҧ ͦΦ . ,  Ӧ     æ ',
-    35 => ',      Ҧ ͦΦ Ħ. ,  Ӧ     æ ',
-    36 => ',      Ҧ ͦΦ . ,  Ӧ     æ ',
-    37 => ',      Ҧ ͦΦ ަ. ,  Ӧ     æ ',
-    38 => ',      Ҧ ͦΦ . ,  Ӧ     æ ',
-    39 => ',      Ҧ ͦΦ . ,  Ӧ     æ ',
+    23 => '',
+    24 => '',
+    25 => '',
+    26 => '',
+    27 => 'צ Ц צ.',
+    28 => ' Ц .',
+    29 => '',
+    30 => '  Ц',
+    31 => ',      ͦΦ .  ,  Ӧ     æ ',
+    32 => ',      ͦΦ .  ,  Ӧ     æ ',
+    33 => ',      ͦΦ ˦.  ,  Ӧ     æ ',
+    34 => '',
+    35 => '',
+    36 => '',
+    37 => ',      ͦΦ ަ.  ,  Ӧ     æ ',
+    38 => ',      ͦΦ ̦.  ,  Ӧ     æ ',
+    39 => ',      ͦΦ .  ,  Ӧ     æ ',
     40 => ' צ',
-    41 => ',      word replacement page. ,  Ӧ     æ ',
-    42 => '  Ц .',
-    43 => ' Ц .',
-    44 => ' Ц !',
-    45 => ' Ц .',
-    46 => ',        Ц  . ,  Ӧ     æ ',
-    47 => ' æΦ   Ц *nix.   æ   *nix, Ħ  Ц .    Windows,        adodb_*.php    Ԧ.',
-    48 => "դ       {$_CONF['site_name']}.     .  ڦ ,    Ħ       ϧ .",
+    41 => ',      ͦΦ ̦-ͦ.  ,  Ӧ     æ ',
+    42 => ' Ц .',
+    43 => ' Ц .',
+    44 => ' Ц !',
+    45 => ' Ц .',
+    46 => ',        Ц.  ,  Ӧ     æ ',
+    47 => ' æΦ Ԧ    Unix-.   դ Unix,   æ  Ц  .     Windows,   Ҧ   adodb_*.php    .',
+    48 => "դ  Ťæ  ̦ {$_CONF['site_name']}.     .  ڦ      Ħ    .",
     49 => '  Ц .',
-    50 => ' Ц .',
-    51 => ' Ťæ \'  դ.  , Ҧ  .',
-    52 => '   , ,   .',
-    53 => '   .  ,  ,        .',
-    54 => '     Ҧ.  ,   , .',
-    55 => '   ,  -  .  ,  ڦ  Ԧ,       .',
-    56 => '    դ  .',
-    57 => '  Ц .',
-    58 => ' æ Ц .',
-    59 => 'æ Ц .',
-    60 => ' Ц ',
-    61 => ' %s: צ  ͦ  צ',
-    62 => 'The trackback comment has been deleted.',
-    63 => 'An error occurred when deleting the trackback comment.',
-    64 => 'Your trackback comment has been successfully sent.',
-    65 => 'Weblog directory service successfully saved.',
-    66 => 'The weblog directory service has been deleted.',
-    67 => 'The new password does not match the confirmation password!',
-    68 => 'You have to enter the correct current password.',
-    69 => 'Your account has been blocked!',
-    70 => 'Your account is awaiting administrator approval.',
-    71 => 'Your account has now been confirmed and is awaiting administrator approval.',
-    72 => 'An error occured while attempting to install the plugin. See error.log for details.',
-    73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
-    74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    50 => '  Ц .',
+    51 => ' \'   դ. -, Ҧ .',
+    52 => '    Ħ.',
+    53 => '   . -,       .',
+    54 => '     Ҧ. -,   .',
+    55 => '    Ħ ,    . -,  ڦ  צ,       ̦ .',
+    56 => '   դ   ̦ .',
+    57 => ' ̦  Ц .',
+    58 => ' Ҧ  Ц .',
+    59 => 'Ҧ  Ц .',
+    60 => ' Ц ',
+    61 => ' %s: צ ͦ צ',
+    62 => '- .',
+    63 => '   -  .',
+    64 => ' - Ц צ.',
+    65 => '  Ц .',
+    66 => '  Ц .',
+    67 => '    Ц  Ц!',
+    68 => ' Φ    .',
+    69 => ' ̦  !',
+    70 => ' ̦  ަդ   ͦΦ.',
+    71 => ' ̦  Ц   צ ަդ   ͦΦ.',
+    72 => '  æ   .   Φ   error.log.',
+    73 => '  Ŧæ   .   Φ   error.log.',
+    74 => ' Ц צ.',
+    75 => ' Φ צ  POST .',
+    76 => ' Φ,     ?',
+    77 => ':<br>  ̦   - UTF-8.     Цդ צ . -, צ æ mbstring  PHP  Ҧ  /.',
+    78 => '-, ,      Ц Ц.',
+    79 => 'Ҧ,    צ,   æ,      Ԧ.',
+    80 => ',    Ҧ, ڦ .      Ҧ,   צ צצ ˦ .',
+    81 => ',    Ҧ  .  -,   .',
+    82 => '  ˦˦   .  -,    ЦΦ.',
+    83 => ' ͦ  ,    ,     \'դ, Ħ   .',
+    84 => '   ̦ , Ħ צ  .'
 );
 
 ###############################################################################
@@ -1164,67 +1150,66 @@
     'access' => '',
     'ownerroot' => '/Root',
     'group' => '',
-    'readonly' => ' ',
+    'readonly' => ' ',
     'accessrights' => ' ',
     'owner' => '',
-    'grantgrouplabel' => ' Φ Ц  ',
-    'permmsg' => ':  &mdash;  Ӧ ŤΦ ަ ,  Φ &mdash;  Ӧ ަ ,   צ  .',
+    'grantgrouplabel' => '   Φ Ц',
+    'permmsg' => ': ަ - Ӧ ˦ צ    ŤΦ, ΦΦ ަ -  Ӧ צצަ , ˦  צ  .',
     'securitygroups' => ' ',
-    'editrootmsg' => "   ͦΦ ަ,      root, ͦ    root.    Ӧ ަ, Ҧ ަ root. ,  Ӧ    ަ root .  , Φ  <a href=\"{$_CONF['site_admin_url']}/user.php\">Ҧ ͦΦ ަ</a>.",
-    'securitygroupsmsg' => 'ͦ ,    צ .',
+    'editrootmsg' => "    ͦΦ ަ,       ,     ͦ  .     Ӧ ަ, Ҧ .   ڦ,  Ӧ    ަ .  -, Φ  <a href=\"{$_CONF['site_admin_url']}/user.php\">Ҧ ͦΦ ަ</a>.",
+    'securitygroupsmsg' => 'Ҧ      .',
     'groupeditor' => ' ',
     'description' => '',
-    'name' => '',
+    'name' => '\'',
     'rights' => '',
-    'missingfields' => 'դ ̦',
-    'missingfieldsmsg' => ' Φ      ',
+    'missingfields' => 'Φ ',
+    'missingfieldsmsg' => ' Φ     ',
     'groupmanager' => ' ',
-    'newgroupmsg' => '    , Φ  .   ϧ  Φ &laquo; &raquo; Ҧ. ,  Φ   ,    .',
-    'groupname' => ' ',
-    'coregroup' => ' ',
+    'newgroupmsg' => ' ͦ   , Φ    .   , Ҧ " " Ҧ. ,  ˦ צ    , ˦   .',
+    'groupname' => '\' ',
+    'coregroup' => ' ',
     'yes' => '',
     'no' => '',
-    'corerightsdescr' => "      {$_CONF['site_name']}.      .   ͦ ̦ ,  æ Ц.",
-    'groupmsg' => '    Ԧ  Ȧ.     -ϧ   ,    Ӧ  Ԧ .  Ԧ ,  դ  Φ    Ц .        Ϥ ,       Ҧ    Ħ̦ &laquo;&raquo;,  .      ϧ   ,  צͦ     .',
-    'coregroupmsg' => "      {$_CONF['site_name']}.  ,    ,   .      (  ).",
-    'rightsdescr' => '          Ц  ۦ,  ϧ  Ҧ  . , Ҧ    ̦  ,  æ Ц,     ϧ    . ,     	,    æ Ц.',
-    'lock' => '',
-    'members' => '',
+    'corerightsdescr' => "     {$_CONF['site_name']}.    æ   .  ̦Φ , ˦   .",
+    'groupmsg' => '   Ȧ.     ,   Φ Ц Ԧ  ,    .    , ˦  ,    ۦ Ц.     æ Ц צΦ ,       æ   Ħ̦ "" .   Ц -˦    ,   צͦ  Ҧ .',
+    'coregroupmsg' => "     {$_CONF['site_name']}.  ,       Ц .  ̦Φ      .",
+    'rightsdescr' => 'צ     Ц  ۦ Ц,  ϧ  .  , ˦   Ӧ ,  ,  Ħ Ц   צ ,    .       æ Ц .',
+    'lock' => '',
+    'members' => 'ަ',
     'anonymous' => 'Φ',
-    'permissions' => '',
-    'permissionskey' => 'R = , E = ,        ',
-    'edit' => '',
-    'none' => '',
-    'accessdenied' => ' Ц צ',
-    'storydenialmsg' => "      æ Ԧ.     ,       {$_CONF['site_name']}.  , <a href=users.php?mode=new>ɤ</a>  {$_CONF['site_name']}     !",
-    'eventdenialmsg' => "      æ Ħ.     ,       {$_CONF['site_name']}.   , <a href=users.php?mode=new>ɤ</a>  {$_CONF['site_name']}     !",
-    'nogroupsforcoregroup' => '     ϧ ϧ ',
-    'grouphasnorights' => '      ϧ ͦΦϧ æ  ',
+    'permissions' => '',
+    'permissionskey' => 'R = , E = ,      ',
+    'edit' => '',
+    'none' => '',
+    'accessdenied' => '  Ц',
+    'storydenialmsg' => "       æ Ԧ. ,     ŤΦ  {$_CONF['site_name']}.  , <a href=\"{$_CONF['site_url']}/users.php?mode=new\">Ť</a>  {$_CONF['site_name']}    !",
+    'nogroupsforcoregroup' => '     ϧ   ',
+    'grouphasnorights' => '       ϧ  ͦΦϧ æ ',
     'newgroup' => ' ',
-    'adminhome' => 'ͦ ͦΦ',
+    'adminhome' => 'ͦΦ',
     'save' => '',
     'cancel' => '',
     'delete' => '',
-    'canteditroot' => '    Root,    ŧ.   Ц  æ   צ.   ,   , Φ   ͦΦ.',
-    'listusers' => '̦ ަ',
-    'listthem' => '̦',
-    'usersingroup' => 'ަ  Ц "%s"',
+    'canteditroot' => '    ,        ,    ŧ .  , Φ  ͦΦ,    .',
+    'listusers' => 'ަ',
+    'listthem' => '',
+    'usersingroup' => 'ަ  "%s"',
     'usergroupadmin' => 'ͦΦ  ަ',
     'add' => '',
-    'remove' => '',
-    'availmembers' => 'Φ ',
-    'groupmembers' => ' ',
-    'canteditgroup' => '  æ   Φ   .    ,   , Φ   ͦΦ.',
-    'cantlistgroup' => '  Φ æ ,  ͦ Φ   .   ,   , Φ   ͦΦ.',
-    'editgroupmsg' => 'To modify the group membership, click on the member names(s) and use the add or remove buttons. If the member is a member of the group, their name will appear on the right side only. Once you are complete - press <b>Save</b> to update the group and return to the main group admin page.',
-    'listgroupmsg' => 'Listing of all current members in the group: <b>%s</b>',
-    'search' => 'Search',
-    'submit' => 'Submit',
-    'limitresults' => 'Limit Results',
-    'group_id' => 'Group ID',
-    'plugin_access_denied_msg' => 'You are illegally trying access a plugin administration page.  Please note that all attempts to illegally access this page are logged.',
-    'groupexists' => 'Group name already exists',
-    'groupexistsmsg' => 'There is already a group with this name. Group names must be unique.'
+    'remove' => '',
+    'availmembers' => 'Φ ަ',
+    'groupmembers' => 'ަ ',
+    'canteditgroup' => '   ,     . -, Φ  ͦΦ,    .',
+    'cantlistgroup' => '  Φ æ ,  ͦ Φ   . -, Φ  ͦΦ,    .',
+    'editgroupmsg' => ' ͦ   , Ҧ Ǧ() ަ      .     ,  Ǧ     .  Ԧ  - Φ <b></b>,       ϧ Ҧ ͦΦ .',
+    'listgroupmsg' => '  Φ : <b>%s</b>',
+    'search' => '',
+    'submit' => '',
+    'limitresults' => ' ',
+    'group_id' => 'ID ',
+    'plugin_access_denied_msg' => '      ͦΦ ̦.  ,  Ӧ ĦΦ  .',
+    'groupexists' => ' \'   դ',
+    'groupexistsmsg' => ' դ    \'.   Φ  Φ.'
 );
 
 ###############################################################################
@@ -1232,33 +1217,33 @@
 
 $LANG_DB_BACKUP = array(
     'last_ten_backups' => 'Φ 10  Ц',
-    'do_backup' => '  Ц',
-    'backup_successful' => ' Ц   צ Ц.',
-    'db_explanation' => '  ϧ ϧ Ц  Geeklog, Φ ,  ',
-    'not_found' => "צ ,   ̦ mysqldump   .<br>צ  <strong>\$_DB_mysqldump_path</strong>  config.php.<br>ڦ ͦ  : <var>{$_DB_mysqldump_path}</var>",
-    'zero_size' => ' Ц  : ͦ   0 Ԧ',
+    'do_backup' => '  Ц',
+    'backup_successful' => ' Ц    .',
+    'db_explanation' => '    Ц    , Φ ',
+    'not_found' => "   ̦ mysqldump  դ.<br>צ ͦ <strong>\$_DB_mysqldump_path</strong>  ̦ config.php.<br> ҦΤ : <var>{$_DB_mysqldump_path}</var>",
+    'zero_size' => '  Ц: ͦ  0 ',
     'path_not_found' => "{$_CONF['backup_path']}  դ    ",
-    'no_access' => ":  {$_CONF['backup_path']} .",
+    'no_access' => ":  {$_CONF['backup_path']} .",
     'backup_file' => ' ϧ Ц',
     'size' => 'ͦ',
-    'bytes' => 'Ԧ',
-    'total_number' => ' ˦˦  Ц: %d'
+    'bytes' => '',
+    'total_number' => '  Ц: %d'
 );
 
 ###############################################################################
 
 $LANG_BUTTONS = array(
-    1 => 'ͦ',
-    2 => 'Contact',
-    3 => '̦',
-    4 => '',
-    5 => '',
-    6 => '',
-    7 => ' ',
-    8 => 'Personalize',
-    9 => '',
-    10 => ' ',
-    11 => 'Directory'
+    1 => '',
+    2 => '',
+    3 => '̦',
+    4 => '',
+    5 => '',
+    6 => '',
+    7 => '',
+    8 => '',
+    9 => '',
+    10 => ' ',
+    11 => 'Ȧ'
 );
 
 ###############################################################################
@@ -1266,16 +1251,16 @@
 
 $LANG_404 = array(
     1 => ' 404',
-    2 => ',   ,    צ <b>%s</b>.',
-    3 => "<p> ,      դ.  , צ <a href=\"{$_CONF['site_url']}\"> Ҧ</a>  <a href=\"{$_CONF['site_url']}/search.php\">Ҧ </a>,  ,   ,   ."
+    2 => ',   Ҧ,     <b>%s</b>.',
+    3 => "<p> ,  ,   Ҧ,  դ. -, צ <a href=\"{$_CONF['site_url']}\"> Ҧ</a>  <a href=\"{$_CONF['site_url']}/search.php\">Ҧ </a>    Ҧ æ."
 );
 
 ###############################################################################
 # login form
 
 $LANG_LOGIN = array(
-    1 => ' Ťæ',
-    2 => ',    Ȧ Ť  .',
+    1 => 'Ȧ \'',
+    2 => ',     æ Ԧ,  Ҧ Ť.',
     3 => 'צ',
     4 => ' '
 );
@@ -1284,117 +1269,118 @@
 # pdfgenerator.php
 
 $LANG_PDF = array(
-    1 => 'æΦ PDF ',
-    2 => '   צ.   ,    . Φ,   צ    Ԧ HTML,  צצ צ xHTML. ,   Φ  html  צ ,    Ӧ  צ. ,    Ԧ ϧ ,   0 Ԧ   .   Φ,    צ  ,  , ̦   .',
-    3 => 'צ   Φ PDF',
-    4 => '    Ҧ,       ad-hoc   PDF,  .   ,     Ҧ , \'֦   ͦΦ.          PDF  ad-hoc.',
-    5 => 'դ  .',
-    6 => ' , ,    .',
-    7 => '  ͦ       ۦ  æ,  ,      &laquo; ...&raquo;',
-    8 => '  Ʀæ ̦   צ  HTMLDoc ,       .  , Φ   ͦΦ,    .',
-    9 => ' PDF',
-    10 => ' &mdash;   Ad-hoc   PDF.      -  URL   PDF.  , ,    Ҧ    צ    .       PDF HTMLDoc,   ˦   ̦ צ ͦΦ  ',
+    1 => 'æ PDF צ',
+    2 => 'Ҧ   צ.   ,    .  -,     Ԧ html, Φ   xHTML.   ڦ,   Φ       ̦  .   ϧ   0 Ԧ  ,    .   Φ,      , - ̦ .',
+    3 => 'צ  Ц  æ PDF',
+    4 => '    Ҧ,     ad-hoc PDF.    ,    צ , Φ  ͦΦ .    ڦ       æ PDF  ͦ ad-hoc.',
+    5 => '  .',
+    6 => '-,     .',
+    7 => '         \' ...\',   Ц  .',
+    8 => '   HTMLDoc,   Ʀæ ̦,       ڦ  .  -, Φ  ͦΦ .',
+    9 => ' PDF',
+    10 => '    Ad-hoc PDF.  դ  URL,   , PDF .    ڦ,  ˦ -Ҧ   Φ  .     HTMLDoc,   ˦   Ҧ צ ͦΦ ',
     11 => 'URL',
-    12 => ' PDF!',
-    13 => ' PHP   Ҧ   URL  Ħ fopen().  ͦΦ    php.ini,  allow_url_fopen   On',
-    14 => ' PDF,   դ,   դ,      ͦ   .'
+    12 => ' PDF!',
+    13 => 'צæ PHP   Ҧ  Ѥ  URL-   fopen().  ͦΦ   צ  php.ini   allow_url_fopen   On',
+    14 => 'PDF,   Ҧ   դ,        .'
 );
 
 ###############################################################################
 # trackback.php
 
 $LANG_TRB = array(
-    'trackback' => 'Trackback',
-    'from' => 'from',
-    'tracked_on' => 'Tracked on',
-    'read_more' => '[read more]',
-    'intro_text' => 'Here\'s what others have to say about \'%s\':',
-    'no_comments' => 'No trackback comments for this entry.',
-    'this_trackback_url' => 'Trackback URL for this entry:',
-    'num_comments' => '%d trackback comments',
-    'send_trackback' => 'Send Pings',
-    'preview' => 'Preview',
-    'editor_title' => 'Send trackback comment',
-    'trackback_url' => 'Trackback URL',
-    'entry_url' => 'Entry URL',
-    'entry_title' => 'Entry Title',
-    'blog_name' => 'Site Name',
-    'excerpt' => 'Excerpt',
-    'truncate_warning' => 'Note: The receiving site may truncate your excerpt',
-    'button_send' => 'Send',
-    'button_preview' => 'Preview',
-    'send_error' => 'Error',
-    'send_error_details' => 'Error when sending trackback comment:',
-    'url_missing' => 'No Entry URL',
-    'url_required' => 'Please enter at least a URL for the entry.',
-    'target_missing' => 'No Trackback URL',
-    'target_required' => 'Please enter a trackback URL',
-    'error_socket' => 'Could not open socket.',
-    'error_response' => 'Response not understood.',
-    'error_unspecified' => 'Unspecified error.',
-    'select_url' => 'Select Trackback URL',
-    'not_found' => 'Trackback URL not found',
-    'autodetect_failed' => 'Geeklog could not detect the Trackback URL for the post you want to send your comment to. Please enter it manually below.',
-    'trackback_explain' => 'From the links below, please select the URL you want to send your Trackback comment to. Geeklog will then try to determine the correct Trackback URL for that post. Or you can <a href="%s">enter it manually</a> if you know it already.',
-    'no_links_trackback' => 'No links found. You can not send a Trackback comment for this entry.',
-    'pingback' => 'Pingback',
-    'pingback_results' => 'Pingback results',
-    'send_pings' => 'Send Pings',
-    'send_pings_for' => 'Send Pings for "%s"',
-    'no_links_pingback' => 'No links found. No Pingbacks were sent for this entry.',
-    'pingback_success' => 'Pingback sent.',
-    'no_pingback_url' => 'No pingback URL found.',
-    'resend' => 'Resend',
-    'ping_all_explain' => 'You can now notify the sites you linked to (<a href="http://en.wikipedia.org/wiki/Pingback">Pingback</a>), advertise that your site has been updated by pinging weblog directory services, or send a <a href="http://en.wikipedia.org/wiki/Trackback">Trackback</a> comment in case you wrote about a post on someone else\'s site.',
-    'pingback_button' => 'Send Pingback',
-    'pingback_short' => 'Send Pingbacks to all sites linked from this entry.',
-    'pingback_disabled' => '(Pingback disabled)',
-    'ping_button' => 'Send Ping',
-    'ping_short' => 'Ping weblog directory services.',
-    'ping_disabled' => '(Ping disabled)',
-    'trackback_button' => 'Send Trackback',
-    'trackback_short' => 'Send a Trackback comment.',
-    'trackback_disabled' => '(Trackback disabled)',
-    'may_take_a_while' => 'Please note that sending Pingbacks and Pings may take a while.',
-    'ping_results' => 'Ping results',
-    'unknown_method' => 'Unknown ping method',
-    'ping_success' => 'Ping sent.',
-    'error_site_name' => 'Please enter the site\'s name.',
-    'error_site_url' => 'Please enter the site\'s URL.',
-    'error_ping_url' => 'Please enter a valid Ping URL.',
-    'no_services' => 'No weblog directory services configured.',
-    'services_headline' => 'Weblog Directory Services',
-    'service_explain' => 'To modify or delete a weblog directory service, click on the edit icon of that service below. To add a new weblog directory service, click on "Create New" above.',
-    'service' => 'Service',
-    'ping_method' => 'Ping method',
-    'service_website' => 'Website',
-    'service_ping_url' => 'URL to ping',
-    'ping_standard' => 'Standard Ping',
-    'ping_extended' => 'Extended Ping',
-    'ping_unknown' => '(unknown method)',
-    'edit_service' => 'Edit Weblog Directory Service',
-    'trackbacks' => 'Trackbacks',
-    'editor_intro' => 'Prepare your trackback comment for <a href="%s">%s</a>.',
-    'editor_intro_none' => 'Prepare your trackback comment.',
-    'trackback_note' => 'To send a trackback comment for a story, go to the list of stories and click on "Send Ping" for the story. To send a trackback that is not related to a story, <a href="%s">click here</a>.',
-    'pingback_explain' => 'Enter a URL to send the Pingback to. The pingback will point to your site\'s homepage.',
-    'pingback_url' => 'Pingback URL',
-    'site_url' => 'This site\'s URL',
-    'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
-    'pbtarget_missing' => 'No Pingback URL',
-    'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'trackback' => '',
+    'from' => 'צ',
+    'tracked_on' => ' ',
+    'read_more' => '[ ̦]',
+    'intro_text' => '  ۦ    \'%s\':',
+    'no_comments' => ' -Ҧ   .',
+    'this_trackback_url' => '-URL   :',
+    'num_comments' => '%d -Ҧ',
+    'send_trackback' => 'Ħ Ц',
+    'preview' => '',
+    'editor_title' => 'Ħ -',
+    'trackback_url' => '-URL',
+    'entry_url' => 'URL ',
+    'entry_title' => ' ',
+    'blog_name' => ' ',
+    'excerpt' => '',
+    'truncate_warning' => ': -    ',
+    'button_send' => 'Ħ',
+    'button_preview' => '',
+    'send_error' => '',
+    'send_error_details' => ' Ц  צ -:',
+    'url_missing' => ' URL ',
+    'url_required' => '-, Ħ   URL  .',
+    'target_missing' => ' -URL',
+    'target_required' => '-, Ħ -URL',
+    'error_socket' => '  צ .',
+    'error_response' => 'צ ͦ.',
+    'error_unspecified' => ' .',
+    'select_url' => ' -URL',
+    'not_found' => '-URL  ',
+    'autodetect_failed' => 'Geeklog  ͦ  -URL  ,     Ħ . -, Ħ   .',
+    'trackback_explain' => '  , Ҧ URL     צĦ  -. Geeklog դ   -URL   .    <a href="%s">  ,</a>    .',
+    'no_links_trackback' => '  .    צ -   .',
+    'pingback' => '',
+    'pingback_results' => ' Ц',
+    'send_pings' => 'Ħ Ц',
+    'send_pings_for' => 'Ħ Ц  "%s"',
+    'no_links_pingback' => '  .      צ Ц˦.',
+    'pingback_success' => ' צ.',
+    'no_pingback_url' => '  Ц-URL.',
+    'resend' => '',
+    'ping_all_explain' => '   צ ,  ˦  (<a href="http://en.wikipedia.org/wiki/Pingback"></a>),     Ц  Ǧ,   <a href="http://en.wikipedia.org/wiki/Trackback"></a>-,        Ԧ.',
+    'pingback_button' => 'Ħ Ц',
+    'pingback_short' => 'Ħ Ц  Ӧ ,  ˦   .',
+    'pingback_disabled' => '( )',
+    'ping_button' => 'Ħ Ц',
+    'ping_short' => '  Ǧ.',
+    'ping_disabled' => '( )',
+    'trackback_button' => 'Ħ ',
+    'trackback_short' => 'Ħ -.',
+    'trackback_disabled' => '( )',
+    'may_take_a_while' => ',   ЦǦ  Ц˦   .',
+    'ping_results' => ' Ц',
+    'unknown_method' => 'צ  Ц',
+    'ping_success' => ' Ħ.',
+    'error_site_name' => '-, Ħ  .',
+    'error_site_url' => '-, Ħ URL .',
+    'error_ping_url' => '-, Ħ  Ц-URL.',
+    'no_services' => ' Ʀ   Ǧ.',
+    'services_headline' => ' Ǧ',
+    'service_explain' => ' ͦ   , Φ   .    , Φ " " Ҧ.',
+    'service' => '',
+    'ping_method' => ' ',
+    'service_website' => '',
+    'service_ping_url' => ' URL',
+    'ping_standard' => ' Ц',
+    'ping_extended' => ' Ц',
+    'ping_unknown' => '(צ )',
+    'edit_service' => '  Ǧ',
+    'trackbacks' => '',
+    'editor_intro' => '  -  <a href="%s">%s</a>.',
+    'editor_intro_none' => '  -.',
+    'trackback_note' => ' Ħ -  Ԧ, Ħ     Φ "Ħ Ц" ¦ Ԧ.  צ ,  \' ڦ , Φ <a href="%s"></a>.',
+    'pingback_explain' => 'Ħ URL,   Ҧ Ħ Ц.      Ҧ  .',
+    'pingback_url' => '-URL',
+    'site_url' => 'URL  ',
+    'pingback_note' => ' Ħ Ц  Ԧ, Ħ     Φ "Ħ Ц" ¦ Ԧ.  צ Ц,  \' ڦ , Φ <a href="%s"></a>.',
+    'pbtarget_missing' => ' Ц-URL',
+    'pbtarget_required' => '-, Ħ Ц-URL',
+    'pb_error_details' => ' Ц  צ Ц:',
+    'delete_trackback' => '   , Φ: '
 );
 
 ###############################################################################
 # directory.php
 
 $LANG_DIR = array(
-    'title' => 'Article Directory',
-    'title_year' => 'Article Directory for %d',
-    'title_month_year' => 'Article Directory for %s %d',
-    'nav_top' => 'Back to Article Directory',
-    'no_articles' => 'No articles.'
+    'title' => 'Ȧ ',
+    'title_year' => 'Ȧ   %d',
+    'title_month_year' => 'Ȧ   %s %d',
+    'nav_top' => '  Ȧ ',
+    'no_articles' => ' .'
 );
 
 ###############################################################################
@@ -1408,18 +1394,49 @@
 # %s    scale, "hrs", "weeks"
 
 $LANG_WHATSNEW = array(
-    'new_string' => '%n new %i in the last %t %s',
-    'new_last' => 'last %t %s',
-    'minutes' => 'minutes',
-    'hours' => 'hours',
-    'days' => 'days',
-    'weeks' => 'weeks',
-    'months' => 'months',
-    'minute' => 'minute',
-    'hour' => 'hour',
-    'day' => 'day',
-    'week' => 'week',
-    'month' => 'month'
+    'new_string' => '%n  %i  Φ %t %s',
+    'new_last' => 'Φ %t %s',
+    'minutes' => '',
+    'hours' => '',
+    'days' => 'Φ',
+    'weeks' => 'Φ',
+    'months' => 'ͦæ',
+    'minute' => '',
+    'hour' => '',
+    'day' => '',
+    'week' => '',
+    'month' => 'ͦ'
+);
+
+###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => '',
+    2 => '',
+    3 => '',
+    4 => 'צ',
+    5 => '',
+    6 => '',
+    7 => '',
+    8 => '',
+    9 => '',
+    10 => '',
+    11 => '',
+    12 => ''
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Ħ',
+    2 => 'Ħ',
+    3 => '',
+    4 => '',
+    5 => '',
+    6 => '\'',
+    7 => ''
 );
 
 ###############################################################################
@@ -1429,23 +1446,28 @@
 # display administration lists and edit pages
 
 $LANG_ADMIN = array(
-    'search' => 'Search',
-    'limit_results' => 'Limit Results',
-    'submit' => 'Submit',
-    'edit' => 'Edit',
-    'admin_home' => 'Admin Home',
-    'create_new' => 'Create New',
-    'enabled' => 'Enabled',
-    'title' => 'Title',
-    'type' => 'Type',
-    'topic' => 'Topic',
-    'help_url' => 'Help File URL',
-    'save' => 'Save',
-    'cancel' => 'Cancel',
-    'delete' => 'Delete',
-    'copy' => 'Copy',
-    'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'search' => '',
+    'limit_results' => ' ',
+    'submit' => 'Ħ',
+    'edit' => '',
+    'edit_adv' => 'Adv. Edit',
+    'admin_home' => 'ͦΦ',
+    'create_new' => ' ',
+    'create_new_adv' => 'Create New (Adv.)',
+    'enabled' => '',
+    'title' => '',
+    'type' => '',
+    'topic' => '',
+    'help_url' => 'URL  צ',
+    'save' => '',
+    'cancel' => '',
+    'delete' => '',
+    'delete_sel' => 'Delete selected',
+    'copy' => 'Ц',
+    'no_results' => '-   Ӧ -',
+    'data_error' => '     . -, צ ۦ Φ.',
+    'preview' => 'Φ ',
+    'records_found' => ' '
 );
 
 ###############################################################################
@@ -1454,56 +1476,56 @@
 # database.
 
 $LANG_commentcodes = array(
-    0 => 'Comments Enabled',
-    -1 => 'Comments Disabled'
+    0 => 'Ҧ ',
+    -1 => 'Ҧ '
 );
 
 
 $LANG_commentmodes = array(
-    'flat' => 'Flat',
-    'nested' => 'Nested',
-    'threaded' => 'Threaded',
-    'nocomment' => 'No Comments'
+    'flat' => '',
+    'nested' => 'Ȧ',
+    'threaded' => '',
+    'nocomment' => ' Ҧ'
 );
 
 $LANG_cookiecodes = array(
-    0 => '(don\'t)',
-    3600 => '1 Hour',
-    7200 => '2 Hours',
-    10800 => '3 Hours',
-    28800 => '8 Hours',
-    86400 => '1 Day',
-    604800 => '1 Week',
-    2678400 => '1 Month'
+    0 => '( )',
+    3600 => '1 ',
+    7200 => '2 ',
+    10800 => '3 ',
+    28800 => '8 ',
+    86400 => '1 ',
+    604800 => '1 ',
+    2678400 => '1 ͦ'
 );
 
 $LANG_dateformats = array(
-    0 => 'System Default'
+    0 => ''
 );
 
 $LANG_featurecodes = array(
-    0 => 'Not Featured',
-    1 => 'Featured'
+    0 => '',
+    1 => ''
 );
 
 $LANG_frontpagecodes = array(
-    0 => 'Show Only in Topic',
-    1 => 'Show on Front Page'
+    0 => '   ͦ',
+    1 => '  Φ'
 );
 
 $LANG_postmodes = array(
-    'plaintext' => 'Plain Old Text',
-    'html' => 'HTML Formatted'
+    'plaintext' => ' ',
+    'html' => ' HTML'
 );
 
 $LANG_sortcodes = array(
-    'ASC' => 'Oldest First',
-    'DESC' => 'Newest First'
+    'ASC' => ' ۦ',
+    'DESC' => ' צۦ'
 );
 
 $LANG_trackbackcodes = array(
-    0 => 'Trackback Enabled',
-    -1 => 'Trackback Disabled'
+    0 => ' צ',
+    -1 => ' '
 );
 
 ?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/ukrainian.php 1.4.1.src/cpanel-glprivate/language/ukrainian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/ukrainian.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/ukrainian.php	2006-12-11 14:08:54.000000000 -0600
@@ -4,7 +4,12 @@
 # ukrainian.php
 # This is the ukrainian language page for GeekLog!
 #
-# Copyright (C) 2005 Vitaliy Biliyenko
+#
+# Ukrainian language is so rich and versatile! 
+# Please, email me your comments and suggestions
+#
+#
+# Copyright (C) 2006 Vitaliy Biliyenko
 # v.lokki@gmail.com
 #
 # This program is free software; you can redistribute it and/or
@@ -46,16 +51,16 @@
     4 => '',
     5 => '',
     6 => '',
-    7 => ' ',
+    7 => '',
     8 => '(,)',
     9 => ' :',
     10 => ' ',
     11 => '',
     12 => '',
     13 => '',
-    14 => '',
-    15 => '䳿',
-    16 => '',
+    14 => '',
+    15 => '',
+    16 => '',
     17 => '',
     18 => ' SQL',
     19 => ' ',
@@ -72,13 +77,13 @@
     30 => ' ',
     31 => '  HTML:',
     32 => ':  \' ',
-    33 => ':     ',
+    33 => ':     ',
     34 => '',
     35 => '  ',
-    36 => 'on',
+    36 => '',
     37 => '  ',
-    38 => ' ',
-    39 => '',
+    38 => ' ',
+    39 => '',
     40 => '  <tt>php.ini</tt>  <tt>register_globals = Off</tt>.  Geeklog   <tt>register_globals</tt>  <strong>on</strong>.   , -,     <strong>on</strong>    .',
     41 => '',
     42 => ':',
@@ -86,8 +91,8 @@
     44 => '',
     45 => '  MySQL',
     46 => '   MySQL',
-    47 => 'i ',
-    48 => 'I  ',
+    47 => 'i ',
+    48 => '̳  ',
     49 => '',
     50 => '   SQL',
     51 => '',
@@ -98,39 +103,39 @@
     56 => '',
     57 => '',
     58 => '',
-    59 => "   ?   : <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> </a>",
+    59 => "   ?    <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> </a>",
     60 => ' ',
     61 => '   ',
     62 => '',
     63 => ' ',
     64 => '³   ',
     65 => '   ',
-    66 => '̳ ',
+    66 => '',
     67 => '   ',
     68 => '',
     69 => '',
     70 => '',
-    71 => '',
+    71 => '',
     72 => ' ',
-    73 => ' ',
-    74 => '',
+    73 => '',
+    74 => '',
     75 => ' ',
     76 => ' ',
     77 => '',
-    78 => ' 䳿',
+    78 => '',
     79 => ' ',
     80 => '  ',
     81 => '  ',
-    82 => '',
+    82 => '()',
     83 => 'i',
-    84 => '',
+    84 => '',
     85 => '  48 ',
     86 => '  ',
     87 => '  2 ',
-    88 => '  ',
-    89 => 'ͳ   ',
-    90 => '',
-    91 => '  ',
+    88 => '',
+    89 => '',
+    90 => '',
+    91 => '  ',
     92 => '',
     93 => ' ',
     94 => '           .',
@@ -140,13 +145,13 @@
     98 => '',
     99 => '',
     100 => '  ',
-    101 => ' 䳿',
-    102 => '䳿 ',
+    101 => '',
+    102 => '',
     103 => 'ﳿ  ',
     104 => '',
     105 => ' ',
     106 => '',
-    107 => '  GL',
+    107 => '  Geeklog',
     108 => ' ',
     109 => '  ',
     110 => '    ',
@@ -162,28 +167,10 @@
     120 => '    ',
     121 => ' (%d)',
     122 => ' (%d)',
-    123 => ' HTML '
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => ' ',
-    2 => ',    .',
-    3 => '',
-    4 => '',
-    5 => '',
-    6 => ' ',
-    7 => ' 䳿',
-    8 => '      ,       䳿,   ,  "̳ "   .',
-    9 => '  ̳ ',
-    10 => '   ',
-    11 => "    {$_USER['username']}",
-    12 => '',
-    13 => '',
-    14 => 'ʳ',
-    15 => '  '
+    123 => ' HTML ',
+    124 => '     ',
+    125 => ' ,      ?',
+    126 => '/    '
 );
 
 ###############################################################################
@@ -227,7 +214,7 @@
     2 => '\' ',
     3 => ' \'',
     4 => ' ',
-    5 => ' ',
+    5 => ' ',
     6 => ' ',
     7 => '',
     8 => ' PGP',
@@ -235,8 +222,8 @@
     10 => ' 10  ',
     11 => '  ',
     12 => ' ',
-    13 => '  ',
-    14 => '  .    .       "  "   .',
+    13 => '   ',
+    14 => '  .    .       "̳  "   .',
     15 => "    {$_CONF['site_name']}  .         '  . -,    ,      .",
     16 => '  ',
     17 => '   ',
@@ -252,7 +239,7 @@
     27 => ' !',
     28 => ' ',
     29 => ' ',
-    30 => ' ',
+    30 => ' ',
     31 => '    ,   ',
     32 => 'ϳ',
     33 => 'ͳ   ',
@@ -266,39 +253,39 @@
     41 => ' ',
     42 => ' ',
     43 => '  ',
-    44 => ' ',
-    45 => '  ',
-    46 => '  ',
-    47 => '   ',
+    44 => ' ',
+    45 => '  ',
+    46 => '  ',
+    47 => '   ',
     48 => '',
     49 => '    ',
-    50 => ' ,    ',
+    50 => ' ,     ',
     51 => '³  ',
     52 => ' ',
     53 => '    ',
-    54 => '   ,     .',
-    55 => '    ,  ,      .     ,     ,   ,      .      .',
+    54 => '³   ,     .',
+    55 => '    ,  ,      .     ,     ,   ,      .      .',
     56 => '',
     57 => ' ',
     58 => ' ',
     59 => ' ',
     60 => '     ?',
     61 => '³     ?',
-    62 => '  100',
+    62 => '  100',
     63 => "      . -,    .     {$_CONF['site_name']}",
     64 => '  ',
     65 => '     ',
-    66 => '      \' .      .',
+    66 => '     . -,   .',
     67 => '',
     68 => '\'  ',
     69 => '    \'      ?',
     70 => "      {$_CONF['site_name']}",
-    71 => "       ,   ,     .    ,    <a href=\"{$_CONF['site_url']}/users.phpmode=new\"></a>  {$_CONF['site_name']}.   ?         !",
+    71 => "       ,   ,     .    ,    <a href=\"{$_CONF['site_url']}/users.phpmode=new\"></a>  {$_CONF['site_name']}.   ?         !",
     72 => ' ',
     73 => '',
     74 => '  !',
     75 => '   ',
-    76 => '     ,    ,         .    ,   !',
+    76 => '     ,    ,         .    ,   !',
     77 => '',
     78 => '  !',
     79 => '  ,  ',
@@ -312,16 +299,16 @@
     87 => ' ',
     88 => " ( )        \"%s\"  {$_CONF['site_name']}, <{$_CONF['site_url']}>.\n\n    , -,   :\n\n",
     89 => "    ,        (   ). \n\n",
-    90 => '     . -,    ,          ',
+    90 => '     . -,    ,          .',
     91 => '  ',
     92 => '  ',
     93 => '       %d  .    %d      .',
-    94 => '  "%s"',
-    95 => ' " ",        . ,   ,      <strong></strong>  ,    "".',
-    96 => ' ',
+    94 => '   "%s"',
+    95 => ' "  ",       . ,   ,      <strong></strong>  ,    "".',
+    96 => '  ',
     97 => 'ϳ  ',
-    98 => ' ,    ?  ,        (   ).   ,  " " .',
-    99 => '  ',
+    98 => ' ,     ?  ,        (    ).   ,  " " .',
+    99 => '  ',
     100 => '  ',
     101 => '    ',
     102 => '  ',
@@ -340,12 +327,47 @@
     115 => '   ,    . -,   .',
     116 => '    ',
     117 => '       .    ,     .',
-    118 => "    {$_CONF['site_name']}  .      ,  ,    (<username>)     .",
+    118 => "    {$_CONF['site_name']}  .       ,  ,    (<username>)     .",
     119 => '   ,       :',
     120 => '  ',
     121 => '',
     122 => ',    ',
-    123 => " <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> </a>?"
+    123 => " <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> </a>?",
+    124 => 'ϳ  ',
+    125 => '        !',
+    126 => '-,   ',
+    127 => '   ,     .',
+    128 => ' \'',
+    129 => '   ',
+    130 => ' ',
+    131 => '  ',
+    132 => ' ',
+    133 => '³ ',
+    134 => ' ',
+    135 => '<li>    </li><li>    </li><li>     ,   - 100</li>',
+    136 => '   ',
+    137 => 'Գ  ',
+    138 => ' ',
+    139 => '   ',
+    140 => '<li>   -      </li><li>  -    ,    <li>     </li><li>     </li>',
+    141 => ' ',
+    142 => '             -. ³  ,     .',
+    143 => 'Գ  ',
+    144 => '/ ',
+    145 => '  ',
+    146 => '   ',
+    147 => '  ,     .          .',
+    148 => '  ',
+    149 => '   ,     .<li>ϳ         </li><li> -    ,      </li><li>   PGP</li>',
+    150 => ':      Javascript',
+    151 => ' ',
+    152 => '\'   ',
+    153 => '   ',
+    154 => '',
+    155 => '',
+    156 => '  ',
+    157 => ' '
+
 );
 
 ###############################################################################
@@ -353,9 +375,9 @@
 
 $LANG05 = array(
     1 => '   ',
-    2 => '    .            ',
+    2 => '    .            ',
     3 => '   %s',
-    4 => '  ',
+    4 => '  ',
     5 => '',
     6 => '',
     7 => '',
@@ -388,10 +410,10 @@
     20 => '',
     21 => ' ',
     22 => '  \'',
-    23 => "    %s  %s   / ,       {$_CONF['site_url']}.      ,    ,     .",
+    23 => "    %s  %s   () (),       {$_CONF['site_url']}.      ,    ,     .",
     24 => '    ',
     25 => '   ,     .        ',
-    26 => '        .   \'.',
+    26 => '        .   \'.',
     27 => ' ',
     28 => '%s (): ',
     29 => "    {$_CONF['site_name']}  ",
@@ -418,14 +440,14 @@
     9 => '',
     10 => '',
     11 => ' ',
-    12 => 'i()',
-    13 => ' : ii ',
+    12 => 'i(,)',
+    13 => ' : ii ',
     14 => '   i   ',
     15 => '-,   .',
     16 => '',
     17 => '',
     18 => '',
-    19 => "  i i  i i  {$_CONF['site_name']}",
+    19 => "  i i  i i  {$_CONF['site_name']}",
     20 => '',
     21 => '',
     22 => '(  -MM-)',
@@ -434,21 +456,21 @@
     25 => '',
     26 => 'i ',
     27 => '',
-    28 => ' i     ,  ',
-    29 => '    i',
-    30 => '     ',
+    28 => ' i       ',
+    29 => '    i',
+    30 => '',
     31 => '     ',
-    32 => 'i',
+    32 => '',
     33 => 'URL',
     34 => '',
     35 => ' ',
-    36 => '  i  ii  ',
-    37 => '  i',
-    38 => '  ',
-    39 => '',
-    40 => 'i',
+    36 => '',
+    37 => '',
+    38 => '',
+    39 => '',
+    40 => '',
     41 => '   i i 3 .',
-    42 => '    -MM- (i-i-).',
+    42 => '    - -MM- (i-i-).',
     43 => ' ',
     44 => ' i ',
     45 => ' - i i',
@@ -457,7 +479,7 @@
     48 => '',
     49 => '',
     50 => 'i',
-    51 => '',
+    51 => '',
     52 => '',
     53 => '  ',
     54 => '  ',
@@ -479,7 +501,7 @@
     3 => ' ()  ',
     4 => '',
     5 => '',
-    6 => '  ',
+    6 => '',
     7 => '  ',
     8 => ' ',
     9 => '',
@@ -494,17 +516,17 @@
     18 => '',
     19 => '',
     20 => '',
-    21 => '        .',
-    22 => ' ,   ',
+    21 => '',
+    22 => ' ,   ',
     23 => ' ',
     24 => ',         ',
     25 => '10  - ',
     26 => '  -.',
     27 => 'ʳ  ',
-    28 => '10  ',
-    29 => '',
+    28 => '',
+    29 => '',
     30 => 'ճ',
-    31 => '    ,     .'
+    31 => ''
 );
 
 ###############################################################################
@@ -525,14 +547,14 @@
     1 => '      .',
     2 => '',
     3 => ' ',
-    4 => ' ',
-    5 => ' ',
+    4 => '',
+    5 => '',
     6 => ' ',
     7 => '   \'',
     8 => '',
-    9 => '         ,    ...<ul><li> \'   <li>     <li>   URL  </li></ul>',
+    9 => '         ,    ...<ul><li> \'   <li>     <li>   URL,  </li></ul>',
     10 => '',
-    11 => '',
+    11 => '',
     12 => ' ',
     13 => ' ',
     14 => '̳ ',
@@ -558,20 +580,20 @@
     34 => '  ',
     35 => ' HTML  ',
     36 => ' ',
-    37 => " 䳿  {$_CONF['site_name']}     ,           .   <b></b>      , ,    .<br><br>              '   .",
-    38 => '  ',
-    39 => ' ',
-    40 => ' ',
-    41 => 'ʳ',
-    42 => '',
-    43 => '   ',
+    37 => '',
+    38 => '',
+    39 => '',
+    40 => '',
+    41 => '',
+    42 => '',
+    43 => '',
     44 => ',  1',
     45 => ',  2',
     46 => '̳/',
     47 => '',
     48 => '',
-    49 => ' 䳿',
-    50 => '  ',
+    49 => '',
+    50 => '',
     51 => '',
     52 => '',
     53 => '  '
@@ -622,7 +644,7 @@
     22 => '',
     23 => ' ',
     24 => '',
-    25 => '    ,     .     ,  " " .   ,     [R]  [L].',
+    25 => '    ,     .     ,  " " .   ,     [R]  [L].',
     26 => ' ',
     27 => ' PHP',
     28 => '  PHP',
@@ -635,7 +657,7 @@
     35 => '      ',
     36 => '    ',
     37 => ' \'    PHP',
-    38 => '   PHP    \'phpblock_\' (, phpblock_getweather).  \'phpblock_\'         .',
+    38 => '   PHP    \'phpblock_\' (, phpblock_getweather).  \'phpblock_\'         .',
     39 => '',
     40 => '˳',
     41 => '',
@@ -660,40 +682,11 @@
     60 => '  ',
     61 => ' ',
     62 => ' ',
-    63 => ' ',
+    63 => ' ',
     64 => '        HTML!',
-    65 => ''
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => ' 䳿',
-    2 => '',
-    3 => ' ',
-    4 => 'URL 䳿',
-    5 => '  䳿',
-    6 => '  䳿',
-    7 => '̳ 䳿',
-    8 => ' 䳿',
-    9 => '( http://)',
-    10 => '     /,    䳿',
-    11 => ' ',
-    12 => '    ,     .     ,  " " .        䳿.',
-    13 => '',
-    14 => ' ',
-    15 => ' ',
-    16 => '',
-    17 => "     䳿,      .    . -, <a href=\"{$_CONF['site_admin_url']}/event.php\">    </a>.",
-    18 => '',
-    19 => '',
-    20 => '',
-    21 => '',
-    22 => '',
-    23 => '  .',
-    24 => '  .',
-    25 => '    .'
+    65 => '',
+    66 => '',
+    67 => '³,    '
 );
 
 ###############################################################################
@@ -721,18 +714,18 @@
     19 => '(,)',
     20 => 'ϳ',
     21 => ' ',
-    22 => ' ',
-    23 => '    ,     .   ,   .    ,  " " .',
+    22 => ' ',
+    23 => '    ,     .   ,   .    ,  " " .',
     24 => 'ID,      ,  . -,   ID.',
     25 => '    ',
     26 => '  ',
     27 => '   [unscaledX]  [imageX],      .',
-    28 => '<p><b>Ͳ </b>:      ,        .        .',
+    28 => '<p><b>Ͳ </b>:     ,    ,    .        .',
     29 => '',
     30 => '  ',
     31 => '-,     ',
-    32 => '',
-    33 => '     ',
+    32 => '',
+    33 => '     ',
     34 => '',
     35 => '',
     36 => 'ͳ',
@@ -750,7 +743,7 @@
     48 => '',
     49 => '',
     50 => '',
-    51 => '       \'   ,      .      [imageX], [imageX_right]  [imageX_left],  X     ,   \'. :    ,   \'.       .<BR>',
+    51 => '       \'   ,      .      [imageX], [imageX_right]  [imageX_left],  X     ,   \'. :    ,   \'.       .<BR>',
     52 => '',
     53 => '  .          ,     ',
     54 => 'ϳ\'   ',
@@ -761,7 +754,7 @@
     59 => '',
     60 => '',
     61 => ' ',
-    62 => ' ',
+    62 => ' ',
     63 => '',
     64 => '',
     65 => '',
@@ -784,7 +777,9 @@
     82 => '',
     83 => ' ',
     84 => ' ',
-    85 => ' '
+    85 => ' ',
+    86 => ' ',
+    87 => ' '
 );
 
 ###############################################################################
@@ -799,7 +794,7 @@
     6 => '      \'     ',
     7 => '-,   ID    ',
     8 => ' ',
-    9 => '    ,  .    ,  " " .         . ǳ (*)    .',
+    9 => '    ,  .    ,  " " .         . ǳ (*)    .',
     10 => ' ',
     11 => '  ',
     12 => '³  ',
@@ -831,7 +826,7 @@
     3 => '\' ',
     4 => ' \'',
     5 => '',
-    6 => 'г ',
+    6 => 'г ',
     7 => ' ',
     8 => ' ',
     9 => '(  )',
@@ -872,7 +867,36 @@
     44 => '  ',
     45 => '',
     46 => ' ',
-    47 => ''
+    47 => '',
+    48 => '  ',
+    49 => ' ',
+    50 => '³,      ',
+    51 => ' ',
+    52 => '<br>: " " -           .',
+    53 => '',
+    54 => ' ',
+    55 => '    ,    <code>$_CONF[\'lastlogin\'] = true;</code>    config.php',
+    56 => '-,   ,       " ".     ,    ,   "". ,       ,    ,     .',
+    57 => ' ',
+    58 => ' ',
+    59 => ' ',
+    60 => ',    ',
+    61 => ' () ,       .',
+    62 => ',    ',
+    63 => ' () ,      24 ,      .',
+    64 => ' ,         ',
+    65 => ' ().',
+    66 => ' ',
+    67 => '̳  ',
+    68 => ' ',
+    69 => '̳ ',
+    70 => '  ',
+    71 => ' ',
+    72 => '     ',
+    73 => ' ,     Ѳ  ?',
+    74 => ' ',
+    75 => ',     ',
+    76 => ' ()'
 );
 
 ###############################################################################
@@ -895,60 +919,13 @@
     34 => '',
     35 => '  ',
     36 => '',
-    37 => '䳿  ',
+    37 => '',
     38 => '',
     39 => '    ',
     40 => '  '
 );
 
 ###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => '',
-    2 => '',
-    3 => '³',
-    4 => '',
-    5 => '',
-    6 => '\'',
-    7 => '',
-    8 => ' ',
-    9 => ' %s',
-    10 => '䳿 ',
-    11 => ' ',
-    12 => '̳ ',
-    13 => 'ѳ',
-    14 => '',
-    15 => '',
-    16 => '',
-    17 => '',
-    18 => '',
-    19 => '',
-    20 => '',
-    21 => '',
-    22 => '',
-    23 => '',
-    24 => '',
-    25 => '  ',
-    26 => ' ',
-    27 => '',
-    28 => '  ',
-    29 => ' ',
-    30 => ' ',
-    31 => '',
-    32 => '',
-    33 => '',
-    34 => '',
-    35 => ' ',
-    36 => '',
-    37 => ',        ',
-    38 => '  ',
-    39 => '',
-    40 => '',
-    41 => '̳'
-);
-
-###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
@@ -1032,10 +1009,10 @@
     2 => '',
     3 => '',
     4 => '',
-    10 => ' ',
+    10 => ' ',
     11 => ' ',
     12 => '',
-    13 => '    ,     .   ,  " " .',
+    13 => '    ,     .   ,  " " .',
     14 => '',
     15 => '',
     16 => '\' ',
@@ -1059,12 +1036,12 @@
     34 => '',
     35 => '',
     36 => '  ',
-    37 => '     ,    .    ,     Geeklog     .',
+    37 => '     ,    .    ,     Geeklog     .',
     38 => ':  ',
     39 => '-,   ,   \' .',
     40 => '-,      .',
     41 => '',
-    42 => '䳿',
+    42 => '',
     43 => '',
     44 => '',
     45 => '  ',
@@ -1072,7 +1049,9 @@
     47 => '',
     48 => '',
     49 => ' ',
-    50 => "³  URL  ({$_CONF['site_url']})"
+    50 => "³  URL  ({$_CONF['site_url']})",
+    51 => '\'    ,     . -,  .',
+    52 => ': \'   '
 );
 
 ###############################################################################
@@ -1082,7 +1061,7 @@
     1 => "     . -,     .    {$_CONF['site_name']}",
     2 => "     {$_CONF['site_name']}.     .    ,        .",
     3 => '',
-    4 => "   䳿  {$_CONF['site_name']}.     .    ,        <a href=\"{$_CONF['site_url']}/calendar.php\"></a>.",
+    4 => '',
     5 => '      .',
     6 => '    .',
     7 => '    .',
@@ -1095,26 +1074,26 @@
     14 => ',    ,    ,  .',
     15 => '',
     16 => '',
-    17 => '   .',
-    18 => '  .',
-    19 => '   .',
-    20 => '  .',
+    17 => '',
+    18 => '',
+    19 => '',
+    20 => '',
     21 => '   .',
     22 => '  .',
-    23 => '    䳿   :   ID 䳿.',
-    24 => '      ',
-    25 => '     ,      .',
-    26 => '       ',
+    23 => '',
+    24 => '',
+    25 => '',
+    26 => '',
     27 => '  .',
     28 => '  .',
-    29 => ',       ',
+    29 => '',
     30 => '³  ',
     31 => ',       .  ,        ',
     32 => ',       .  ,        ',
     33 => ',       .  ,        ',
-    34 => ',       .  ,        ',
-    35 => ',       .  ,        ',
-    36 => ',       .  ,        ',
+    34 => '',
+    35 => '',
+    36 => '',
     37 => ',       .  ,        ',
     38 => ',       .  ,        ',
     39 => ',       .  ,        ',
@@ -1125,7 +1104,7 @@
     44 => '  !',
     45 => '  .',
     46 => ',        .  ,        ',
-    47 => 'ֳ      Unix-.    Unix,       .     Windows,      adodb_*.php    .',
+    47 => 'ֳ      Unix-.    Unix,       .     Windows,      adodb_*.php    .',
     48 => "     {$_CONF['site_name']}.     .            .",
     49 => '   .',
     50 => '   .',
@@ -1141,10 +1120,10 @@
     60 => '  ',
     61 => ' %s:   ',
     62 => '- .',
-    63 => 'ϳ   -  .',
+    63 => 'ϳ   -  .',
     64 => ' -  .',
     65 => '   .',
-    66 => '   .',
+    66 => '   .',
     67 => '      !',
     68 => '     .',
     69 => '   !',
@@ -1153,7 +1132,16 @@
     72 => 'ϳ     .      error.log.',
     73 => 'ϳ     .      error.log.',
     74 => 'ϳ  .',
-    75 => '    POST .'
+    75 => '    POST .',
+    76 => ' ,     ?',
+    77 => ':<br>     - UTF-8.       . -,   mbstring  PHP    /.',
+    78 => '-, ,       .',
+    79 => ',    ,   ,      .',
+    80 => ',    ,  .      ,      .',
+    81 => ',      .  -,   .',
+    82 => '     .  -,    .',
+    83 => '   ,    ,     \',    .',
+    84 => '    ,    .'
 );
 
 ###############################################################################
@@ -1195,7 +1183,6 @@
     'none' => '',
     'accessdenied' => '³  ',
     'storydenialmsg' => "        . ,       {$_CONF['site_name']}.  , <a href=\"{$_CONF['site_url']}/users.php?mode=new\"></a>  {$_CONF['site_name']}    !",
-    'eventdenialmsg' => "        䳿. ,      {$_CONF['site_name']}.  , <a href=\"{$_CONF['site_url']}/users.php?mode=new\"></a>  {$_CONF['site_name']}    !",
     'nogroupsforcoregroup' => '        ',
     'grouphasnorights' => '           ',
     'newgroup' => ' ',
@@ -1232,7 +1219,7 @@
     'last_ten_backups' => ' 10  ',
     'do_backup' => '  ',
     'backup_successful' => '     .',
-    'db_explanation' => '       Geeklog,  ',
+    'db_explanation' => '        ,  ',
     'not_found' => "    mysqldump  .<br>  <strong>\$_DB_mysqldump_path</strong>   config.php.<br>  : <var>{$_DB_mysqldump_path}</var>",
     'zero_size' => '  :   0 ',
     'path_not_found' => "{$_CONF['backup_path']}      ",
@@ -1249,9 +1236,9 @@
     1 => '',
     2 => '',
     3 => '',
-    4 => '',
-    5 => '',
-    6 => '',
+    4 => '',
+    5 => '',
+    6 => '',
     7 => '',
     8 => '',
     9 => '',
@@ -1362,7 +1349,7 @@
     'error_ping_url' => '-,   -URL.',
     'no_services' => '    .',
     'services_headline' => ' ',
-    'service_explain' => '    ,    .    ,  " " .',
+    'service_explain' => '    ,    .    ,  " " .',
     'service' => '',
     'ping_method' => ' ',
     'service_website' => '',
@@ -1381,7 +1368,8 @@
     'pingback_note' => '    ,       " "  .   ,  \'  ,  <a href="%s"></a>.',
     'pbtarget_missing' => ' -URL',
     'pbtarget_required' => '-,  -URL',
-    'pb_error_details' => '    :'
+    'pb_error_details' => '    :',
+    'delete_trackback' => '   , : '
 );
 
 ###############################################################################
@@ -1421,6 +1409,37 @@
 );
 
 ###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'ѳ',
+    2 => '',
+    3 => '',
+    4 => '',
+    5 => '',
+    6 => '',
+    7 => '',
+    8 => '',
+    9 => '',
+    10 => '',
+    11 => '',
+    12 => ''
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => '',
+    2 => '',
+    3 => '³',
+    4 => '',
+    5 => '',
+    6 => '\'',
+    7 => ''
+);
+
+###############################################################################
 # Admin - Strings
 # 
 # These are some standard strings used by core functions as well as plugins to
@@ -1431,8 +1450,10 @@
     'limit_results' => ' ',
     'submit' => '',
     'edit' => '',
+    'edit_adv' => 'Adv. Edit',
     'admin_home' => '',
     'create_new' => ' ',
+    'create_new_adv' => 'Create New (Adv.)',
     'enabled' => '',
     'title' => '',
     'type' => '',
@@ -1441,9 +1462,12 @@
     'save' => '',
     'cancel' => '',
     'delete' => '',
+    'delete_sel' => 'Delete selected',
     'copy' => '',
     'no_results' => '-    -',
-    'data_error' => 'ϳ     . -,   .'
+    'data_error' => 'ϳ     . -,   .',
+    'preview' => ' ',
+    'records_found' => ' '
 );
 
 ###############################################################################
@@ -1481,7 +1505,7 @@
 
 $LANG_featurecodes = array(
     0 => '',
-    1 => ''
+    1 => ''
 );
 
 $LANG_frontpagecodes = array(
@@ -1490,7 +1514,7 @@
 );
 
 $LANG_postmodes = array(
-    'plaintext' => ' ',
+    'plaintext' => ' ',
     'html' => ' HTML'
 );
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/language/ukrainian_utf-8.php 1.4.1.src/cpanel-glprivate/language/ukrainian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/language/ukrainian_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/language/ukrainian_utf-8.php	2006-12-11 14:11:42.000000000 -0600
@@ -2,12 +2,15 @@
 
 ###############################################################################
 # ukrainian.php
-# This is the Ukrainian language page for GeekLog!
-# Special thanks to Mischa Polivanov for his work on this project
+# This is the ukrainian language page for GeekLog!
+#
+#
+# Ukrainian language is so rich and versatile! 
+# Please, email me your comments and suggestions
 #
-# Copyright (C) 2005 Yaroslav Fedevych
-# jaroslaw@nospam.kiev.ua
-# 
+#
+# Copyright (C) 2006 Vitaliy Biliyenko
+# v.lokki@gmail.com
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -25,7 +28,7 @@
 #
 ###############################################################################
 
-$LANG_CHARSET = 'utf-8';
+$LANG_CHARSET = 'UTF-8';
 
 ###############################################################################
 # Array Format:
@@ -42,322 +45,339 @@
 # lib-common.php
 
 $LANG01 = array(
-    1 => 'Надіслано:',
+    1 => 'Надіслав(ла):',
     2 => 'читати далі',
-    3 => 'дописів',
-    4 => 'Редаґувати',
+    3 => 'коментарі',
+    4 => 'Редагувати',
     5 => 'Голосувати',
     6 => 'Результати',
-    7 => 'Підсумки опитування',
-    8 => 'голосів',
-    9 => 'Адміністраторські функції:',
-    10 => 'Надіслане',
+    7 => '',
+    8 => 'голос(и,ів)',
+    9 => 'Функції адміністратора:',
+    10 => 'Редактор сайту',
     11 => 'Статті',
     12 => 'Блоки',
     13 => 'Теми',
-    14 => 'Посилання',
-    15 => 'Події',
-    16 => 'Опитування',
+    14 => '',
+    15 => '',
+    16 => '',
     17 => 'Користувачі',
     18 => 'Запит SQL',
-    19 => 'Вийти',
+    19 => 'Завершити сеанс',
     20 => 'Інформація про користувача:',
-    21 => 'Реєстраційне ім\'я',
-    22 => 'Ідентифікатор користувача',
-    23 => 'Рівень безпеки',
+    21 => 'Ім\'я користувача',
+    22 => 'ID користувача',
+    23 => 'Рівень захисту',
     24 => 'Анонім',
-    25 => 'Відповідь',
-    26 => 'Власниками нижчеподаних коментарів є їхні дописувачі. Власники сайту не відповідають за їхній зміст.',
-    27 => 'Найсвіжіший допис',
-    28 => 'Видалити',
-    29 => 'Нема користувацьких коментарів.',
-    30 => 'Давніші статті',
-    31 => 'Дозволені мітки HTML:',
-    32 => 'Помилка, недопустиме реєстраційне ім\'я',
-    33 => 'Помилка, не вдалося здійснити запис до протокольного файлу',
+    25 => 'Відповісти',
+    26 => 'Думки адміністрації сайту можуть не співпадати із думками коментаторів. Сайт не несе відповідальності за зміст коментарів.',
+    27 => 'Найсвіжіші повідомлення',
+    28 => 'Вилучити',
+    29 => 'Немає коментарів.',
+    30 => 'Попередні статті',
+    31 => 'Дозволені теги HTML:',
+    32 => 'Помилка: неправильне ім\'я користувача',
+    33 => 'Помилка: неможливий запис до журнального файлу',
     34 => 'Помилка',
-    35 => 'Відреєструватись',
-    36 => 'на',
-    37 => 'Нема користувацьких статей',
-    38 => 'Трансляція вмісту',
-    39 => 'Поновити',
-    40 => 'У вашому <tt>php.ini</tt> встановлено <tt>register_globals = Off</tt>. Geeklog, однак, потребує, щоб значенням <tt>register_globals</tt> було <strong>on</strong>. Перш ніж продовжити, будь ласка, встановіть його в <strong>on</strong> та перезапустіть веб-сервер.',
-    41 => 'Користувачі-гості',
-    42 => 'Написав:',
-    43 => 'Відповісти на це',
-    44 => 'Предок',
+    35 => 'Вийти з системи',
+    36 => 'увімкнено',
+    37 => 'Немає статей користувачів',
+    38 => 'Експорт контенту',
+    39 => 'Оновити',
+    40 => 'У вашому <tt>php.ini</tt> встановлено <tt>register_globals = Off</tt>. Проте Geeklog потребує встановлення <tt>register_globals</tt> в <strong>on</strong>. Перш ніж продовжувати, будь-ласка, встановіть цю директиву в <strong>on</strong> і перезапустіть ваш вебсервер.',
+    41 => 'Гості',
+    42 => 'Автор:',
+    43 => 'Відповісти',
+    44 => 'Вгору',
     45 => 'Номер помилки MySQL',
-    46 => 'Повідомлення MySQL про помилку',
-    47 => 'Функції користувача',
-    48 => 'Профіль користувача',
-    49 => 'Вподобання',
+    46 => 'Повідомлення про помилку MySQL',
+    47 => 'Функцiї користувача',
+    48 => 'Мій обліковий запис',
+    49 => 'Налаштування',
     50 => 'Помилка у виразі SQL',
     51 => 'довідка',
     52 => 'Створити',
-    53 => 'Адміністраторська домівка',
-    54 => 'Не вдалося відкрити файл.',
-    55 => 'Помилка при',
-    56 => 'Голосувати',
+    53 => 'Адміністрування',
+    54 => 'Неможливо відкрити файл.',
+    55 => 'Помилка у',
+    56 => 'Проголосувати',
     57 => 'Пароль',
-    58 => 'Увійти',
-    59 => "Ще не зареєструвались? Зареєструйтесь як <a href=\"{$_CONF['site_url']}/users.php?mode=new\">новий користувач</a>",
-    60 => 'Розмістити коментар',
-    61 => 'Створити новий профіль',
-    62 => 'слів',
-    63 => 'Вподобання щодо коментарів',
-    64 => 'Надіслати статтю другові електронною поштою',
-    65 => 'Варіант для друку',
-    66 => 'Мій календар',
+    58 => 'Логін',
+    59 => "Ви ще не зареєструвалися? Зробіть це як <a href=\"{$_CONF['site_url']}/users.php?mode=new\">новий користувач</a>",
+    60 => 'Надіслати коментар',
+    61 => 'Створити новий обліковий запис',
+    62 => 'слова',
+    63 => 'Налаштування коментарів',
+    64 => 'Відіслати статтю другу поштою',
+    65 => 'Перегляд версії для друку',
+    66 => '',
     67 => 'Ласкаво просимо до ',
-    68 => 'Домівка',
-    69 => 'Зв\'язок',
+    68 => 'Додому',
+    69 => 'Контакт',
     70 => 'Пошук',
-    71 => 'Зробити внесок',
-    72 => 'Ресурси Тенет',
-    73 => 'Попередні опитування',
-    74 => 'Календар',
-    75 => 'Складний пошук',
+    71 => 'Публікація',
+    72 => 'Веб ресурси',
+    73 => '',
+    74 => '',
+    75 => 'Розширений пошук',
     76 => 'Статистика сайту',
-    77 => 'Втулки',
-    78 => 'Найближчі події',
+    77 => 'Модулі',
+    78 => '',
     79 => 'Що нового',
-    80 => 'повідомлень за останні',
-    81 => 'повідомлення за останні',
-    82 => 'годин',
-    83 => 'КОМЕНТАРІ',
-    84 => 'ПОСИЛАННЯ',
-    85 => 'за останні 48 год',
-    86 => 'Нема нових коментарів',
+    80 => 'статей за останні',
+    81 => 'стаття за останні',
+    82 => 'годин(и)',
+    83 => 'Коментарi',
+    84 => '',
+    85 => 'за останні 48 годин',
+    86 => 'Немає нових коментарів',
     87 => 'за останні 2 тижні',
-    88 => 'Нема недавніх нових посилань',
-    89 => 'Наближчим часом немає жодних подій',
-    90 => 'Домівка',
-    91 => 'Цю сторінку створено за',
+    88 => '',
+    89 => '',
+    90 => 'Головна',
+    91 => 'Сторінку створено за',
     92 => 'секунд',
-    93 => 'Copyright',
-    94 => 'Всі торгові марки й авторські права на цій сторінці належать їх відповідним власникам.',
-    95 => 'Тут використано',
+    93 => 'Авторське право',
+    94 => 'Всі торгові марки і авторські права на цій сторінці належать відповідним власникам.',
+    95 => 'Створений за допомогою',
     96 => 'Групи',
-    97 => 'Перелік слів',
-    98 => 'Втулки',
-    99 => 'СТАТТІ',
-    100 => 'Нема нових статей',
-    101 => 'Ваші події',
-    102 => 'Події на сайті',
-    103 => 'Резервні копії БД',
-    104 => 'by',
-    105 => 'Листувати користувачам',
-    106 => 'Перегляди',
-    107 => 'Тест версії GL',
+    97 => 'Список слів',
+    98 => 'Модулі',
+    99 => 'Статті',
+    100 => 'Немає нових статтей',
+    101 => '',
+    102 => '',
+    103 => 'Копії бази даних',
+    104 => 'від',
+    105 => 'Надіслати пошту',
+    106 => 'Переглянуто',
+    107 => 'Тест версії Geeklog',
     108 => 'Очистити кеш',
-    109 => 'Повідомити про зловживання',
-    110 => 'Повідомити адміністратора про цей допис',
-    111 => 'Перегляд PDF-варіанту',
+    109 => 'Доповісти про образу',
+    110 => 'Доповісти про цей пост адміністратору',
+    111 => 'Переглянути PDF-версію',
     112 => 'Зареєстровані користувачі',
     113 => 'Документація',
-    114 => 'TRACKBACKS',
-    115 => 'No new trackback comments',
-    116 => 'Trackback',
-    117 => 'Directory',
-    118 => 'Please continue reading on the next page:',
-    119 => "Lost your <a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">password</a>?",
-    120 => 'Permanent link to this comment',
-    121 => 'Comments (%d)',
-    122 => 'Trackbacks (%d)',
-    123 => 'All HTML is allowed'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG02 = array(
-    1 => 'Календар подій',
-    2 => 'Пробачте, однак показати нічого.',
-    3 => 'Коли',
-    4 => 'Де',
-    5 => 'Опис',
-    6 => 'Додати подію',
-    7 => 'Найближчі події',
-    8 => 'Додавши цю подію до свого календаря, ви можете швидко оглянути лише цікаві для вас події, клацнувши "Мій календар" з зони функцій користувача.',
-    9 => 'Додати до мого календаря',
-    10 => 'Вилучити з мого календаря',
-    11 => "Додавання події до календаря користувача {$_USER['username']}",
-    12 => 'Подія',
-    13 => 'Розпочинається',
-    14 => 'Завершується',
-    15 => 'Повернутись до календаря'
+    114 => 'Трекбеки',
+    115 => 'Нема нових трекбек-коментарів',
+    116 => 'Трекбек',
+    117 => 'Архів',
+    118 => 'Будь-ласка, продовжуйте читати на наступній сторінці:',
+    119 => "Забули <a href=\"{$_CONF['site_url']}/users.php?mode=getpassword\">пароль</a>?",
+    120 => 'Постійне посилання на цей коментар',
+    121 => 'Коментарі (%d)',
+    122 => 'Трекбеки (%d)',
+    123 => 'Весь HTML дозволено',
+    124 => 'Натисніть щоб вилучити всі відмічені елементи',
+    125 => 'Ви впевнені, що хочете вилучити всі відмічені елементи?',
+    126 => 'Виділити/зняти виділення з усіх елементів'
 );
 
 ###############################################################################
 # comment.php
 
 $LANG03 = array(
-    1 => 'Розмістити коментар',
-    2 => 'Режим допису',
-    3 => 'Відреєструватись',
-    4 => 'Зареєструватись',
-    5 => 'Реєстраційне ім\'я',
-    6 => 'На цьому сайті вимагається ваша реєстрація для розміщення коментарів.  Якщо у вас немає профілю, ви можете скористатись поданою нижче формою для його створення.',
-    7 => 'Ваш останній коментар зроблено ',
-    8 => " секунд тому.  На цьому сайті вимагається {$_CONF['commentspeedlimit']} секунд(и) між коментарями",
+    1 => 'Надіслати коментар',
+    2 => 'Режим публікації',
+    3 => 'Вийти',
+    4 => 'Створити обліковий запис',
+    5 => 'Ім\'я користувача',
+    6 => 'Перш ніж надіслати коментар, слід увійти до системи.  Створіть новий обліковий запис, якщо ви ще не зареєстровані.',
+    7 => 'Ваш останній коментар був ',
+    8 => " секунд тому. Перепрошуємо, але між коментарями має минути щонаймеше  {$_CONF['commentspeedlimit']} секунд",
     9 => 'Коментар',
-    10 => 'Надіслати звіт',
+    10 => 'Відіслати звіт',
     11 => 'Надіслати коментар',
-    12 => 'Будьте ласкаві заповнити поля &laquo;Назва&raquo; й &laquo;Коментар&raquo; &mdash; вони необхідні для надіслання вашого коментаря.',
+    12 => 'Будь-ласка, заповніть поля Заголовок та Коментар, це є необхідним для публікації вашого коментаря.',
     13 => 'Ваша інформація',
     14 => 'Попередній перегляд',
-    15 => 'Повідомити про цей допис',
-    16 => 'Назва',
+    15 => 'Доповісти про цей пост',
+    16 => 'Заголовок',
     17 => 'Помилка',
-    18 => 'Важлива інформація',
-    19 => 'Будь ласка, дотримуйтесь теми обговорення.',
-    20 => 'Намагайтесь відповідати на коментарі інших замість створювати нові нитки.',
-    21 => 'Читайте дописи інших перед розміщенням власних задля уникнення повторень того, що вже було сказано.',
-    22 => 'Використайте ясну тему, котра опише, про що йдеться у вашому повідомленні.',
-    23 => 'Ваша адреса електронної пошти НЕ публікуватиметься.',
+    18 => 'Важливий матеріал',
+    19 => 'Будь-ласка, дотримуйтесь теми повідомлення.',
+    20 => 'Намагайтеся відповідати на коментарі інших людей замість створення нового обговорення.',
+    21 => 'Для уникнення повторень, прочитайте повідомлення інших людей перед тим, як відправляти власне.',
+    22 => 'Використовуйте заголовок, який би точно передав зміст повідомлення.',
+    23 => 'Ваша поштова адреса НЕ буде опублікована.',
     24 => 'Анонімний користувач',
-    25 => 'Ви впевнені, що бажаєте повідомити про цей допис адміністраторові?',
-    26 => '%s повідомляє про надуживання в дописі наступного змісту:',
-    27 => 'Звіт про надуживання'
+    25 => 'Ви впевнені, що хочете доповісти про цей пост адміністратору?',
+    26 => '%s доповів про наступний образливий коментар:',
+    27 => 'Доповідь про образу'
 );
 
 ###############################################################################
 # users.php
 
 $LANG04 = array(
-    1 => 'Користувацький профіль для',
-    2 => 'Реєстраційне ім\'я',
+    1 => 'Профіль користувача для',
+    2 => 'Ім\'я користувача',
     3 => 'Повне ім\'я',
-    4 => 'Пароль',
-    5 => 'Електронна пошта',
-    6 => 'Домівка',
+    4 => 'Новий пароль',
+    5 => 'Електронна адреса',
+    6 => 'Домашня сторінка',
     7 => 'Біографія',
     8 => 'Ключ PGP',
     9 => 'Зберегти інформацію',
     10 => 'Останні 10 коментарів користувача',
     11 => 'Немає коментарів користувача',
-    12 => 'Користувацькі вподобання для',
-    13 => 'Відсилати нічний дайджест поштою',
-    14 => 'Цей пароль створено ґенератором випадкових рядків. Радимо негайно змінити цей пароль! Щоб зробити це, зареєструйтеся й клацніть &laquo;Інформація про рахунок&raquo; з меню &laquo;Функції користувача&raquo;.',
-    15 => "Ваш профіль для {$_CONF['site_name']} успішно створено. Щоб мати змогу ним скористатись, вам потрібно увійти до системи, використавши нижчеподану інформацію. Будь ласка, збережіть листа для подальшого використання.",
-    16 => 'Інформація про ваш профіль',
-    17 => 'Профіль не існує',
-    18 => 'Подана адреса електронної пошти не скидається на дійсну',
-    19 => 'Подане реєстраційне ім\'я чи адресу електронної пошти вже зареєстровано',
-    20 => 'Подана поштова адреса не скидається на дійсну',
+    12 => 'Налаштування користувача',
+    13 => 'Надсилати щоденний дайджест поштою',
+    14 => 'Згенеровано випадковий пароль. Рекомендовано змінити його негайно. Увійдіть до системи і оберіть пункт "Мій обліковий запис" з Функцій користувача.',
+    15 => "Ваш обліковий запис на {$_CONF['site_name']} успішно створено. Для його використання увійдіть до системи використовуючи вказані ім'я та пароль. Будь-ласка, збережіть повідомлення з паролем, щоб скористатися ним у разі необхідності.",
+    16 => 'Ваш обліковий запис',
+    17 => 'Облікового запису не існує',
+    18 => 'Вказано неправильну електронну адресу',
+    19 => 'Вказана електронна адреса чи ім\'я користувача вже існують',
+    20 => 'Вказано неправильну електронну адресу',
     21 => 'Помилка',
-    22 => "Зареєструйтесь на {$_CONF['site_name']}!",
-    23 => "Створення користувацького профілю надасть вам усі переваги членства на сайті {$_CONF['site_name']}, як також дозволить вам розміщувати дописи й публікувати матеріали від власного імені. Якщо у вас нема профілю, розмістити матеріал можна буде лише анонімно. Зауважте, що ваша поштова адреса <b><i>ніколи</i></b> не публікуватиметься в нас на сайті.",
-    24 => 'Ваш пароль надішлеться на подану вами поштову адресу.',
-    25 => 'Ви забули свій пароль?',
-    26 => 'Впишіть <em>або</em> своє реєстраційне ім\'я, <em>або</em> або використану при реєстрації поштову адресу, після чого клацніть &laquo;Надіслати пароль&raquo;. Інструкції щодо встановлення нового паролю будуть надіслані на адресу в нашій базі даних.',
-    27 => 'Зареєструйте мене!',
+    22 => "Зареєструватися на {$_CONF['site_name']}!",
+    23 => "Реєстрація в нашій системі надасть вам всі переваги членства на {$_CONF['site_name']} і дозволить відправляти коментарі та публіковувати статті під своїм ім'ям. Якщо Ви не зареєструєтесь, всі Ваші публікації будуть анонімними. Зауважте, що ваша електронну адресу <b><i>ніколи</i></b> не буде публічно відображено на цьому сайті.",
+    24 => 'Пароль буде відправлено за вказаною адресою.',
+    25 => 'Забули пароль?',
+    26 => 'Введіть <em>або</em> ваш логін, <em>або</em> електронну адресу, використану вами для реєстрації і натисніть Надіслати пароль. Інструкції зі встановлення нового пароля буде надіслано на електронну адресу.',
+    27 => 'Зареєструватися зараз!',
     28 => 'Надіслати пароль',
-    29 => 'розреєструвався з',
-    30 => 'зареєструвався з',
-    31 => 'Обрана вами функція вимагає від вас реєстрації',
+    29 => 'вийшли з',
+    30 => 'ввійшли з',
+    31 => 'Перш ніж скористатися цією функцією, увійдіть в систему',
     32 => 'Підпис',
-    33 => 'Ніколи не показується прилюдно',
-    34 => 'Це ваше справжнє ім\'я',
-    35 => 'Введіть пароль для його зміни',
-    36 => 'Починається з http://',
-    37 => 'Долучується до ваших коментарів',
-    38 => 'Усе це &mdash; про вас! Кожен може це прочитати',
-    39 => 'Ваш публічний ключ PGP для розповсюдження',
-    40 => 'Немає значків для теми',
-    41 => 'Бажаю бути наглядачем',
+    33 => 'Ніколи публічно не відображається',
+    34 => 'Це Ваше справжнє ім\'я',
+    35 => 'Введіть новий пароль, якщо бажаєте його змінити',
+    36 => 'Повинна починатися з http://',
+    37 => 'Застосовується до коментарів',
+    38 => 'Інформація про вас, доступна всім користувачам',
+    39 => 'Публічний ключ PGP для розповсюдження',
+    40 => 'Без малюнків тем',
+    41 => 'Бажаєте модерувати',
     42 => 'Формат дати',
-    43 => 'Максимальна кількість статей',
-    44 => 'Без віконець',
-    45 => 'Вподобання щодо показу для',
-    46 => 'Вилучені елементи для',
-    47 => 'Налаштування віконця новин для',
+    43 => 'Максимальна кількість статтей',
+    44 => 'Без блоків',
+    45 => 'Налаштування відображення для',
+    46 => 'Ігноровані елементи для',
+    47 => 'Конфігурація блоку новин для',
     48 => 'Теми',
-    49 => 'Без значків біля статей',
-    50 => 'Зніміть позначку, якщо це вас не цікавить',
-    51 => 'Лише статті-новини',
-    52 => 'Усталено:',
-    53 => 'Отримувати статті дня щовечора',
-    54 => 'Позначте теми й авторів, котрих не бажаєте бачити.',
-    55 => 'Якщо ви не залишите позначок, це означатиме усталений вибір віконець. Почавши вибирати віконця, пам\'ятайте встановити всі, які бажаєте, бо усталений вибір знехтується. Усталені елементи показано погрубшеним шрифтом.',
+    49 => 'Не відображати іконки в статтях',
+    50 => 'Зніміть виділення, якщо вам це не потрібно',
+    51 => 'Відображати лише новини',
+    52 => 'За замовчуванням',
+    53 => 'Отримувати щовечора статті за день',
+    54 => 'Відмітьте теми і авторів, яких ви не хочете бачити.',
+    55 => 'Якщо ви нічого не відмітили, це означає, що ви обрали вибір за замовчуванням. Якщо ви відмітили деякі пункти, то не забудьте обрати все, що ви хочете, оскільки вибір за замовчуванням буде проігноровано. Вибір за замовчуванням виділено напівжирним шрифтом.',
     56 => 'Автори',
-    57 => 'Режим показу',
-    58 => 'Спосіб упорядкування',
+    57 => 'Режим відображення',
+    58 => 'Порядок сортування',
     59 => 'Обмеження коментарів',
-    60 => 'Як вам показувати ваші коментарі?',
-    61 => 'Спершу найновіші чи найстаріші?',
-    62 => 'Початково 100',
-    63 => "Ваш пароль вислано вам поштою, за хвилю він повинен прийти. Будь ласка, виконайте описані в листі кроки; дякуємо за використання {$_CONF['site_name']}!",
-    64 => 'Вподобання щодо коментарів для',
-    65 => 'Спробуйте зареєструватись іще раз',
-    66 => "Ви могли помились при вписуванні реєстраційних даних. Спробуйте ввійти ще раз, нижче. Чи ви <a href=\"{$_CONF['site_url']}/users.php?mode=new\">новий користувач</a>?",
-    67 => 'Учасник від',
-    68 => 'Пам\'ятати мене',
-    69 => 'Як довго нам пам\'ятати вас після входу до системи?',
-    70 => "Облаштувати зовнішній вигляд і вміст {$_CONF['site_name']}",
-    71 => "Чудовою властивістю сайту {$_CONF['site_name']} є те, що ви можете налаштувати для себе отримуваний вміст і повністю змінити загальний макет сайту. Аби цим скористатись, ви спершу повинні <a href=\"{$_CONF['site_url']}/users.php?mode=new\">записатись</a> на {$_CONF['site_name']}. Ви вже учасник? Скористайтесь формою ліворуч і ввійдіть на сайт!",
-    72 => 'Тема',
+    60 => 'Як ви хочете відображати свої коментарі?',
+    61 => 'Від нових до старіших чи навпаки?',
+    62 => 'За замовчуванням 100',
+    63 => "Пароль було відправлено вам на електронну пошту. Будь-ласка, виконуйте вказівки у повідомленні. Дякуємо вам за використання {$_CONF['site_name']}",
+    64 => 'Налаштування коментарів для',
+    65 => 'Спробуйте ще раз увійти до системи',
+    66 => 'Можливо ви неправильно ввели свої дані. Будь-ласка, спробуйте ще раз.',
+    67 => 'Зареєстровано',
+    68 => 'Запам\'ятати мене на',
+    69 => 'Як довго ми повинні пам\'ятати вас після вашого входу в систему?',
+    70 => "Налаштуйте під себе вигляд і зміст {$_CONF['site_name']}",
+    71 => "На нашому сайті Ви можете налаштувати зміст інформації, яку Ви отримуєте, а також вигляд цієї інформації. Щоб скористатися цими можливостями, Ви повинні спочатку <a href=\"{$_CONF['site_url']}/users.phpіmode=new\">зареєструватися</a> на {$_CONF['site_name']}.  Ви зареєстровані?  Тоді використовуйте форму ліворуч для входу в систему!",
+    72 => 'Тема дизайну',
     73 => 'Мова',
-    74 => 'Змініть зовнішність сайту!',
-    75 => 'Надсилані теми для',
-    76 => 'Вибравши тему з нижчеподаного списку, ви отримуватимете всі нові статті на цю тему під кінець кожного дня. Оберіть лише теми, котрі вас цікавлять!',
-    77 => 'Світлина',
-    78 => 'Додайте власну світлину!',
-    79 => 'Позначте тут, щоб видалити поточну світлину',
+    74 => 'Змініть вигляд сайту!',
+    75 => 'Отримувані поштою теми для',
+    76 => 'Якщо ви вибирете тему із списку, то зможете отримувати статті, які відсилаються до цієї теми в кінці кожного дня. Виберіть тільки ті теми, які вас цікавлять!',
+    77 => 'Фото',
+    78 => 'Додати свою фотокартку!',
+    79 => 'Щоб вилучити малюнок, клацніть тут',
     80 => 'Увійти',
-    81 => 'Надіслати листа',
-    82 => 'Останні 10 статей користувача',
-    83 => 'Статистика публікацій користувача',
-    84 => 'Всього статей:',
-    85 => 'Всього коментарів:',
-    86 => 'Знайти все, надіслане',
-    87 => 'Ваше реєстраційне ім\'я',
-    88 => "Хтось (можливо, ви) замовив новий пароль для вашого профілю \"%s\" на {$_CONF['site_name']}, <{$_CONF['site_url']}>.\n\nЯкщо ви справді бажаєте, щоб ця дія відбулась, будь ласка, клацніть ось це посилання:\n\n",
-    89 => "Якщо ви не хочете виконання цієї дії, просто знехтуйте це повідомлення й запит також буде знехтувано (ваш пароль залишиться без змін).\n\n",
-    90 => 'Нижче ви можете ввести новий пароль для свого профілю. Зауважте: ваш пароль залишиться в силі, доки ви не надішлете цю форму.',
+    81 => 'Надіслати пошту',
+    82 => 'Останні 10 статтей для користувача',
+    83 => 'Статистика активності для користувача',
+    84 => 'Кількість статтей:',
+    85 => 'Кількість коментарів:',
+    86 => 'Знайти всi надходження вiд',
+    87 => 'Ваш логін',
+    88 => "Хтось (можливо ви) замовив новий пароль для вашого облікового запису \"%s\" на {$_CONF['site_name']}, <{$_CONF['site_url']}>.\n\nЯкщо ви справді хочете цього, будь-ласка, натисніть наступне посилання:\n\n",
+    89 => "Якщо Ви не бажаєте цього, проігноруйте це повідомлення і запит буде відхилено (ваш пароль залишиться незміненим). \n\n",
+    90 => 'Ви можете ввести новий пароль нижче. Будь-ласка, зверніть увагу на те, що ваш старий пароль залишиться дійсним до відправлення цієї форми.',
     91 => 'Встановити новий пароль',
-    92 => 'Впишіть новий пароль',
-    93 => 'Ваш останній запит на новий пароль відбувся %d секунд тому. Цей сайт вимагає щонайменше %d секунд між такими запитами.',
-    94 => 'Вилучити рахунок "%s"',
-    95 => 'Клацніть кнопку "вилучити рахунок", що нижче, для усунення вашого рахунку з нашої бази даних. Зауважте, що всі статті та коментарі, залишені вами під цим рахунком, <strong>не видалятимуться</strong>, а показуватимуться як надіслані анонімно.',
-    96 => 'вилучити профіль',
-    97 => 'Підтвердіть вилучення профілю',
-    98 => 'Ви впевнені, що бажаєте вилучити свій профіль? Зробивши це, ви не зможете ввійти на цей сайт знову (хіба що створите новий профіль). Якщо ви певні щодо цього, клацніть кнопку &laquo;вилучити профіль&raquo; ще раз на формі, що нижче.',
+    92 => 'Ввести новий пароль',
+    93 => 'Ваш останній запит про новий пароль був %d секунд тому. Система потребує принаймні %d секунд між запитами про новий пароль.',
+    94 => 'Вилучити обліковий запис "%s"',
+    95 => 'Оберіть "Вилучити обліковий запис", щоб вилучити вас із нашої бази даних. Зауважте, що усі коментарі, надіслані вами під цим логіном <strong>не</strong> буде вилучено, а підписано іменем "Анонім".',
+    96 => 'вилучити обліковий запис',
+    97 => 'Підтвердіть вилучення користувача',
+    98 => 'Ви впевнені, що бажаєте вилучити облікови запис? Зробивши це, ви не зможете увійти на сайт знову (якщо не зареєструєтесь ще раз). Якщо ви впевнені, натисніть "вилучити користувача" знову.',
     99 => 'Налаштування приватності для',
-    100 => 'Пошта від адміністраторів',
-    101 => 'Дозволити пошту від адміністраторів сайту',
+    100 => 'Пошта від адміністрації',
+    101 => 'Дозволяти пошту від адміністрації сайту',
     102 => 'Пошта від користувачів',
-    103 => 'Дозволити пошту від інших користувачів',
-    104 => 'Показувати ваш стан на лінії',
-    105 => 'Показувати у віконці &laquo;хто на лінії&raquo;',
-    106 => 'Місцеперебування',
-    107 => 'Показувати у вашому публічному профілі',
-    108 => 'Confirm new password',
-    109 => 'Enter the New password again here',
-    110 => 'Current Password',
-    111 => 'Please enter your Current password',
-    112 => 'You have exceeded the number of allowed login attempts.  Please try again later.',
-    113 => 'Login Attempt Failed',
-    114 => 'Account Disabled',
-    115 => 'Your account has been disabled, you may not login. Please contact an Administrator.',
-    116 => 'Account Awaiting Activation',
-    117 => 'Your account is currently awaiting activation by an administrator. You will not be able to login until your account has been approved.',
-    118 => "Your {$_CONF['site_name']} account has now been activated by an administrator. You may now login to the site at the url below using your username (<username>) and password as previously emailed to you.",
-    119 => 'If you have forgotten your password, you may request a new one at this url:',
-    120 => 'Account Activated',
-    121 => 'Service',
-    122 => 'Sorry, new user registration is disabled',
-    123 => "Are you a <a href=\"{$_CONF['site_url']}/users.php?mode=new\">new user</a>?"
+    103 => 'Дозволяти пошту від інших користувачів',
+    104 => 'Відображати онлайн-статус',
+    105 => 'Відображати в блоці "Хто онлайн"',
+    106 => 'Місце перебування',
+    107 => 'Відображається в загальнодоступній інформації',
+    108 => 'Підтвердити новий пароль',
+    109 => 'Введіть тут новий пароль знову',
+    110 => 'Поточний пароль',
+    111 => 'Будь-ласка, введіть ваш поточний пароль',
+    112 => 'Ви перевищили дозволену кількість спроб входу. Будь-ласка, спробуйте ще раз пізніше.',
+    113 => 'Спроба входу невдала',
+    114 => 'Обліковий запис заблоковано',
+    115 => 'Ваш обліковий запис заблоковано, ви не можете увійти. Будь-ласка, зверніться до адміністратора.',
+    116 => 'Обліковий запис очікує на активацію',
+    117 => 'Зараз ваш обліковий запис очікує на активацію адміністратором. Ви не зможете увійти, поки його не буде активовано.',
+    118 => "Ваш обліковий запис на {$_CONF['site_name']} активовано адміністратором. Ви можете увійти на сайт за адресою, вказаною нижче, використовуючи ваш логін (<username>) і попередньо надісланий вам пароль.",
+    119 => 'Якщо ви забули пароль, ви можете замовити новий за цією адресою:',
+    120 => 'Обліковий запис активовано',
+    121 => 'Служба',
+    122 => 'Вибачте, реєстрацію нових користувачів заборонено',
+    123 => "Ви <a href=\"{$_CONF['site_url']}/users.php?mode=new\">новий користувач</a>?",
+    124 => 'Підтвердити електронну адресу',
+    125 => 'Ви повинні ввести однакову електронну адресу в обидва поля!',
+    126 => 'Будь-ласка, повторіть для підтвердження',
+    127 => 'Щоб змінити ці налаштування, потрібно ввести ваш поточний пароль.',
+    128 => 'Ваше ім\'я',
+    129 => 'Пароль та електронна пошта',
+    130 => 'Про вас',
+    131 => 'Опції щоденного дайджесту',
+    132 => 'Щоденний дайджест',
+    133 => 'Відображення коментарів',
+    134 => 'Опції коментарів',
+    135 => '<li>Режим відображення коментарів за замовчуванням</li><li>Порядок відображення коментарів за замовчуванням</li><li>Встановити максимальну кількість коментарів для виводу, за замовчуванням - 100</li>',
+    136 => 'Ігнорувати теми та авторів',
+    137 => 'Фільтрувати вміст статті',
+    138 => 'Інші налаштування',
+    139 => 'Зовнішній вигляд та мова',
+    140 => '<li>Без іконок тем - не показувати малюночки тем біля статей</li><li>Без блоків - виводити лише меню адміністратора, користувача та теми новин<li>Встановити максимальну кількість статей на сторінку</li><li>Встановити тему дизайну та формат дати</li>',
+    141 => 'Налаштування приватності',
+    142 => 'За замовчуванням користувачі та адміністратори можуть надсилати пошту іншим користувачам і бачити їх онлайн-статус. Відмініть ці опції, якщо бажаєте посилити свою приватність.',
+    143 => 'Фільтрувати вміст блоку',
+    144 => 'Показати/сховати блоки',
+    145 => 'Ваш загальнодоступний профіль',
+    146 => 'Пароль та електронна пошта',
+    147 => 'Редагувати ваш пароль, електронну адресу та опцію автовходу. Вам необхідно повторити пароль чи електронну адресу двічі для підтвердження.',
+    148 => 'Інформація про користувача',
+    149 => 'Змінити інформацію про вас, що буде доступна іншим користувачам.<li>Підпис буде додано до ваших коментарів та постів у форумі</li><li>Біографія - це ваш короткий життєпис, яким ви хочете поділитись з іншими</li><li>Додати ваш ключ PGP</li>',
+    150 => 'Попередження: для розширеної функціональності необхідна підтримка Javascript',
+    151 => 'Попередній перегляд',
+    152 => 'Ім\'я користувача та пароль',
+    153 => 'Зовнішній вигляд та мова',
+    154 => 'Вміст',
+    155 => 'Приватність',
+    156 => 'Вилучити обліковий запис',
+    157 => 'Опція вилучення'
+
 );
 
 ###############################################################################
 # index.php
 
 $LANG05 = array(
-    1 => 'Нема новин до показу',
-    2 => 'Нема новин до показу. Можливо, на цю тему немає новин, або ж ваші вподобання занадто обмежувальні',
-    3 => ' для теми &laquo;%s&raquo;',
-    4 => 'Вибрана сьогодні стаття',
+    1 => 'Новин для перегляду немає',
+    2 => 'Нових статтей для перегляду немає. Можливо немає новин на дану тему або ваші налаштування фільтрації занадто жорсткі',
+    3 => ' для теми %s',
+    4 => 'Сьогоднішня головна стаття',
     5 => 'Наступна',
     6 => 'Попередня',
     7 => 'Перша',
@@ -368,108 +388,108 @@
 # profiles.php
 
 $LANG08 = array(
-    1 => 'При відправленні повідомлення сталась помилка. Будь ласка, спробуйте ще раз.',
-    2 => 'Повідомлення успішно відправлене.',
-    3 => 'Будь ласка, впевніться, що використовуєте дійсну адресу електронної пошти в полі &laquo;Відповідати на&raquo;.',
-    4 => 'Будь ласка, заповніть поля &laquo;Ваше ім\'я&raquo;, &laquo;Відповідати на&raquo;, &laquo;Тема&raquo; й &laquo;Повідомлення&raquo;',
-    5 => 'Помилка: Нема такого користувача.',
-    6 => 'Сталась помилка.',
-    7 => 'Профіль користувача для',
-    8 => 'Реєстраційне ім\'я',
+    1 => 'Під час відправлення повідомлення виникла помилка. Спробуйте ще раз.',
+    2 => 'Повідомлення успішно відправлено.',
+    3 => 'Перевірте правильність адреси в полі Відповісти.',
+    4 => 'Заповніть поля: Ім\'я, Відповісти, Тема, Повідомлення',
+    5 => 'Помилка: вказаного користувача немає.',
+    6 => 'Виникла помилка.',
+    7 => 'Профіль користувача',
+    8 => 'Ім\'я користувача',
     9 => 'URL користувача',
-    10 => 'Надсилати пошту на',
+    10 => 'Надістати пошту для',
     11 => 'Ваше ім\'я:',
-    12 => 'Відповідати на:',
+    12 => 'Відповісти:',
     13 => 'Тема:',
     14 => 'Повідомлення:',
-    15 => 'HTML не дозволено.',
-    16 => 'Відіслати повідомлення',
-    17 => 'Надіслати другові цю статтю листом',
-    18 => 'На ім\'я',
-    19 => 'На адресу електронної пошти',
-    20 => 'Від імені',
-    21 => 'Від адреси електронної пошти',
-    22 => 'Всі поля є обов\'язковими до заповнення',
-    23 => "Цього листа вам надіслано від %s о %s, бо він(вона) вважає, що вас зацікавить стаття {$_CONF['site_url']}. Це не є спамом; залучені адреси електронної пошти не занесено в список і не збережено для подальшого вжитку.",
-    24 => 'Коментуйте цю статтю на',
-    25 => 'Для використання цієї функції ви повинні зареєструватись у системі. Примусова реєстрація допомагає нам запобігти неправильному використанню системи.',
-    26 => 'Ця форма дозволить вам надіслати листа вибраному користувачеві. Всі поля є обов\'язковими.',
+    15 => 'HTML не буде інтерпретовано.',
+    16 => 'Надіслати повідомлення',
+    17 => 'Надіслати статтю другу',
+    18 => 'Відправник',
+    19 => 'Зворотня адреса',
+    20 => 'Одержувач',
+    21 => 'Адреса одержувача',
+    22 => 'Всі поля обов\'язкові',
+    23 => "Цей лист надіслано вам %s з %s тому що він(вона) вважалв(ла), що вас зацікавить ця стаття з {$_CONF['site_url']}. Це не СПАМ і електронні адреси, залучені в цю дію, не збережено для подальшого використання.",
+    24 => 'Коментар на цю тему на',
+    25 => 'Щоб використати цю функцію, ви повинні увійти до системи. Ваша реєстрація допоможе нам запобігти неправильному використанню системи',
+    26 => 'Ця форма дозволить вам надіслати електронне повідомлення обраному користувачу. Всі поля обов\'язкові.',
     27 => 'Коротке повідомлення',
-    28 => '%s написав(-ла): ',
-    29 => "Це &mdash; щоденний дайджест сайту {$_CONF['site_name']} для ",
-    30 => ' Щоденна розсилка новин ',
-    31 => 'Назва',
+    28 => '%s написав(ла): ',
+    29 => "Це щоденний дайджест з {$_CONF['site_name']} для ",
+    30 => ' Щоденний бюлетень новин для ',
+    31 => 'Заголовок',
     32 => 'Дата',
-    33 => 'Читайте повний текст статті на',
+    33 => 'Прочитати статтю повністю на',
     34 => 'Кінець повідомлення',
-    35 => 'Вибачте, цьому користувачеві до вподоби не отримувати жодних листів.'
+    35 => 'Вибачте, але цей користувач не бажає отримувати пошту.'
 );
 
 ###############################################################################
 # search.php
 
 $LANG09 = array(
-    1 => 'Складний пошук',
-    2 => 'Ключові слова',
+    1 => 'Розширений пошук',
+    2 => 'Ключовi слова',
     3 => 'Тема',
-    4 => 'Всі',
+    4 => 'Все',
     5 => 'Тип',
-    6 => 'Статті',
-    7 => 'Коментарі',
+    6 => 'Статтi',
+    7 => 'Коментарi',
     8 => 'Автори',
-    9 => 'Всі',
-    10 => 'Шукати',
-    11 => 'Шукати серед знайденого',
-    12 => 'співпадань',
-    13 => 'Результат пошуку: без співпадань',
-    14 => 'Не знайдено співпадань для вашого пошуку',
-    15 => 'Будь ласка, спробуйте ще раз.',
-    16 => 'Назва',
+    9 => 'Все',
+    10 => 'Пошук',
+    11 => 'Результат пошуку',
+    12 => 'збiг(и,ів)',
+    13 => 'Результат пошуку: збiгiв немає',
+    14 => 'Не знайдено жодного збiгу за вашим запитом',
+    15 => 'Будь-ласка, спробуйте ще раз.',
+    16 => 'Заголовок',
     17 => 'Дата',
     18 => 'Автор',
-    19 => "Перешукати всю базу даних поточних і старих статей-новин на сайті {$_CONF['site_name']}",
-    20 => 'Дата з',
+    19 => "Пошук по всiй базi поточних i архiвних статей {$_CONF['site_name']}",
+    20 => 'Дата',
     21 => 'по',
-    22 => '(Вигляд дати РРРР-ММ-ДД)',
-    23 => 'Перегляди',
-    24 => 'Знайдено %d матеріалів',
-    25 => 'Ви шукали',
-    26 => 'матеріалів ',
+    22 => '(Формат дати РРРР-MM-ДД)',
+    23 => 'Переглядiв',
+    24 => 'Знайдено %d об\'єкти(ів):',
+    25 => 'Пошук',
+    26 => 'пунктiв за',
     27 => 'секунд',
-    28 => 'Для вашого пошуку не знайдено ні підхожих статей, ні коментарів',
-    29 => 'Результати пошуку в статтях і коментарях',
-    30 => 'Вашим умовам пошуку не відповідає жодне посилання',
-    31 => 'Ця втулка не повернула жодного результату',
-    32 => 'Подія',
+    28 => 'Жодної статтi або коментаря за вашим запитом не знайдено',
+    29 => 'Результати серед статей та коментарiв',
+    30 => '',
+    31 => 'В цьому модулі не знайдено збігів',
+    32 => '',
     33 => 'URL',
-    34 => 'Місцезнаходження',
-    35 => 'Цілий день',
-    36 => 'Вашим умовам пошуку не віповідає жодна подія',
-    37 => 'Результати пошуку серед подій',
-    38 => 'Результати пошуку серед посилань',
-    39 => 'Посилання',
-    40 => 'Події',
-    41 => 'Рядок вашого запиту повинен містити щонайменше 3 символи.',
-    42 => 'Будь ласка, використовуйте дати у вигляді РРРР-ММ-ДД (рік-місяць-день).',
+    34 => 'Розташування',
+    35 => 'Весь день',
+    36 => '',
+    37 => '',
+    38 => '',
+    39 => '',
+    40 => '',
+    41 => 'Ваш запит повинен мiстити принаймнi 3 символи.',
+    42 => 'Використовуйте такий формат дати - РРРР-MM-ДД (рiк-мiсяць-день).',
     43 => 'точна фраза',
-    44 => 'всі ці слова',
-    45 => 'будь-які з цих слів',
-    46 => 'Наступні',
-    47 => 'Попередні',
+    44 => 'з усiма словами',
+    45 => 'з будь-яким зi слiв',
+    46 => 'Наступний',
+    47 => 'Попереднiй',
     48 => 'Автор',
     49 => 'Дата',
-    50 => 'Відвідувань',
-    51 => 'Посилання',
-    52 => 'Місцезнаходження',
-    53 => 'Результати для статей',
-    54 => 'Результати для коментарів',
+    50 => 'Переглядiв',
+    51 => '',
+    52 => 'Розташування',
+    53 => 'Результати серед статей',
+    54 => 'Результати серед коментарів',
     55 => 'фразу',
-    56 => 'І',
-    57 => 'АБО',
-    58 => 'More results &gt;&gt;',
-    59 => 'Results',
-    60 => 'per page',
-    61 => 'Refine search'
+    56 => 'AND',
+    57 => 'OR',
+    58 => 'Ще результати &gt;&gt;',
+    59 => 'Результати',
+    60 => 'на сторінку',
+    61 => 'Очистити пошук'
 );
 
 ###############################################################################
@@ -477,106 +497,106 @@
 
 $LANG10 = array(
     1 => 'Статистика сайту',
-    2 => 'Всього звертань до системи',
-    3 => 'Статей(Коментарів) у системі',
-    4 => 'Опитувань(Відповідей) у системі',
-    5 => 'Посилань(Клацань) у системі',
-    6 => 'Подій у системі',
-    7 => 'Десятка найпопулярніших статей',
+    2 => 'Загальна кількість відвідувань системи',
+    3 => 'Статей (коментарів) у системі',
+    4 => '',
+    5 => '',
+    6 => '',
+    7 => 'Десять найпопулярніших статей',
     8 => 'Назва статті',
-    9 => 'Переглядів',
-    10 => 'Схоже, на цьому сайті нема статей, або ж їх ніхто ніколи не читав.',
-    11 => 'Десятка найобговорюваніших статей',
+    9 => 'Перегляди',
+    10 => 'На сайті відсутні статті або ніхто їх не переглядав.',
+    11 => 'Десять найбільш коментованих статей',
     12 => 'Коментарі',
-    13 => 'Схоже, на цьому сайті нема статей, або ж їх ніхто ніколи не коментував.',
-    14 => 'Десятка найпопулярніших опитувань',
-    15 => 'Запитання',
-    16 => 'Голосів',
-    17 => 'Схоже, на цьому сайті нема опитувань, або ж у них ніхто ніколи не голосував.',
-    18 => 'Десятка найпопулярніших посилань',
-    19 => 'Посилання',
-    20 => 'Відвідувань',
-    21 => 'Схоже, на цьому сайті нема посилань, або ж на жодній з них ніхто ніколи не клацав.',
-    22 => 'Десятка найчастіше відсиланих поштою статей',
-    23 => 'Листів',
-    24 => 'Схоже, на цьому сайті ніхто не надсилав поштою жодної статті.',
-    25 => 'Top Ten Trackback Commented Stories',
-    26 => 'No trackback comments found.',
-    27 => 'Number of active users',
-    28 => 'Top Ten Events',
-    29 => 'Event',
-    30 => 'Hits',
-    31 => 'It appears that there are no events on this site or no one has ever clicked on one.'
+    13 => 'На сайті відсутні статті або ніхто не коментував їх.',
+    14 => '',
+    15 => '',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => '',
+    20 => '',
+    21 => '',
+    22 => 'Десять статей, які найчастіше надсилаються',
+    23 => 'Поштові повідомлення',
+    24 => 'Схоже, що ніхто не пересилав статтю на цьому сайті поштою',
+    25 => '10 найбільш трекбек-коментованих статей',
+    26 => 'Не знайдено трекбек-коментарів.',
+    27 => 'Кількість активних користувачів',
+    28 => '',
+    29 => '',
+    30 => 'Хіти',
+    31 => ''
 );
 
 ###############################################################################
 # article.php
 
 $LANG11 = array(
-    1 => 'Подібне',
-    2 => 'Надіслати статтю другові',
-    3 => 'Стаття у вигляді для друку',
-    4 => 'Налаштування статті',
-    5 => 'Стаття в форматі PDF'
+    1 => 'Cпорiднене',
+    2 => 'Відіслати статтю ',
+    3 => 'Форма статті для друку',
+    4 => 'Параметри',
+    5 => 'Формат статті PDF'
 );
 
 ###############################################################################
 # submit.php
 
 $LANG12 = array(
-    1 => 'Щоб розмістити %s, ви повинні зареєструватись як користувач.',
-    2 => 'Зареєструватись',
+    1 => 'Для публікації Ви повинні зареєструватися як користувач.',
+    2 => 'Увійти',
     3 => 'Новий користувач',
-    4 => 'Розмістити подію',
-    5 => 'Розмістити посилання',
-    6 => 'Розмістити статтю',
-    7 => 'Вимагається реєстрація',
-    8 => 'Розмістити',
-    9 => 'Просимо при розміщенні матеріалів тут на сайті додержувати цих порад:<ul><li>Заповніть усі поля, вони обов\'язкові<li>Надавайте повні й точні відомості<li>Перевірте посилання двічі</ul>',
-    10 => 'Назва',
-    11 => 'Посилання',
+    4 => '',
+    5 => '',
+    6 => 'Публікація статті',
+    7 => 'Реєстрація в системі обов\'язкова',
+    8 => 'Опублікувати',
+    9 => 'При публікації інформації на цьому сайті для подальшого її використання, рекомендується дотримуватись таких вказівок...<ul><li> Обов\'язково заповніть всі поля<li> Забезпечте повну і достовірну інформацію<li> Двічі перевірте URL, який використовуєте</li></ul>',
+    10 => 'Заголовок',
+    11 => '',
     12 => 'Дата початку',
-    13 => 'Дата закінчення',
-    14 => 'Місце',
+    13 => 'Дата кінця',
+    14 => 'Місце проведення',
     15 => 'Опис',
-    16 => 'Вкажіть, якщо якась інша',
-    17 => 'Категорія',
-    18 => 'Інше',
-    19 => 'Спершу прочитайте',
-    20 => 'Помилка: бракує категорії',
-    21 => 'Вибравши &laquo;Інше&raquo;, вкажіть також і назву категорії',
-    22 => 'Помилка: бракує полів',
-    23 => 'Будь ласка, заповніть усі поля форми. Вони обов\'язкові.',
-    24 => 'Публікацію збережено',
-    25 => 'Вашу публікацію %s успішно збережено.',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => 'Прочитайте в першу чергу',
+    20 => '',
+    21 => '',
+    22 => 'Помилка: незаповнені поля',
+    23 => 'Будь-ласка, заповніть всі поля форми. Всі поля є обов\'язковими.',
+    24 => 'Публікація збережена',
+    25 => 'Вашу публікацію успішно збережено.',
     26 => 'Обмеження швидкості',
-    27 => 'Реєстраційне ім\'я',
+    27 => 'Ім\'я користувача',
     28 => 'Тема',
     29 => 'Стаття',
-    30 => 'Ви востаннє публікувались ',
-    31 => " секунд(и) тому. Цей сайт вимагає щонайменше {$_CONF['speedlimit']} секунд між публікаціями.",
+    30 => 'Ваша остання публікація була ',
+    31 => " секунд тому. Система потребує принаймні {$_CONF['speedlimit']} секунд між публікаціями",
     32 => 'Попередній перегляд',
     33 => 'Попередній перегляд статті',
-    34 => 'Розреєструватись',
-    35 => 'Розмітку HTML не дозволено',
-    36 => 'Режим відправлення',
-    37 => "Публікація події на сайті {$_CONF['site_name']} розмістить вашу подію на головному календарі, звідки користувачі зможуть додавати її до особистих календарів. Ця функція <b>НЕ</b> призначена зберігати ваші особисті події, як-от дні народження та річниці.<br><br>Після розміщення подію буде надіслано нашим адміністраторам, і після їхнього схвалення ваша подія з'явиться на головному календарі.",
-    38 => 'Додати подію до',
-    39 => 'головного календаря',
-    40 => 'особистого календаря',
-    41 => 'Час завершення',
-    42 => 'Час початку',
-    43 => 'Подія цілого дня',
-    44 => 'Рядок адреси 1',
-    45 => 'Рядок адреси 2',
-    46 => 'Місто',
-    47 => 'Штат',
-    48 => 'Поштовий індекс',
-    49 => 'Тип події',
-    50 => 'Редагувати типи подій',
-    51 => 'Місце',
-    52 => 'Викреслити',
-    53 => 'Створити рахунок'
+    34 => 'Вихід з системи',
+    35 => 'Використання HTML тегів заборонено',
+    36 => 'Режим публікації',
+    37 => '',
+    38 => '',
+    39 => '',
+    40 => '',
+    41 => '',
+    42 => '',
+    43 => '',
+    44 => 'Адреса, рядок 1',
+    45 => 'Адреса, рядок 2',
+    46 => 'Місто/Село',
+    47 => 'Область',
+    48 => 'Індекс',
+    49 => '',
+    50 => '',
+    51 => 'Розташування',
+    52 => 'Вилучити',
+    53 => 'Створити обліковий запис'
 );
 
 ###############################################################################
@@ -587,12 +607,12 @@
 # admin/auth.inc.php
 
 $LANG20 = array(
-    1 => 'Вимагається автентифікація',
+    1 => 'Необхідна аутентифікація',
     2 => 'Відмовлено! Невірна реєстраційна інформація',
-    3 => 'Невірний пароль для користувача',
-    4 => 'Реєстраційне ім\'я:',
+    3 => 'Неправильний пароль користувача',
+    4 => 'Ім\'я користувача:',
     5 => 'Пароль:',
-    6 => 'Увесь доступ до адміністративних частин цього сайту протоколюється і наглядається.<br>Ця сторінка призначена лише для допущеного персоналу.',
+    6 => 'Доступ до адміністративних функцій цього сайта записується і переглядається. <br>Ця сторінка лише для авторизованого персоналу сайту.',
     7 => 'увійти'
 );
 
@@ -600,102 +620,73 @@
 # admin/block.php
 
 $LANG21 = array(
-    1 => 'Бракує адміністративних прав',
-    2 => 'Ви не маєте достатніх прав для редагування цього блоку.',
+    1 => 'Недостатньо адміністративних прав',
+    2 => 'У вас немає прав для зміни цього блоку.',
     3 => 'Редактор блоків',
-    4 => 'При читанні цієї трансляції виник клопіт (за подробицями дивіться error.log).',
-    5 => 'Назва блоку',
-    6 => 'Тема',
-    7 => 'Всі',
-    8 => 'Рівень безпеки блоку',
+    4 => 'Виникла помилка під час читання стрічки. Перегляньте error.log, щоб дізнатись більше.',
+    5 => '',
+    6 => '',
+    7 => 'Все',
+    8 => 'Рівень безпеки',
     9 => 'Порядок блоку',
-    10 => 'Тип блоку',
-    11 => 'Блок порталу',
+    10 => '',
+    11 => 'Портальний блок',
     12 => 'Звичайний блок',
-    13 => 'Налаштування портального блоку',
-    14 => 'URL для RSS',
-    15 => 'Останнє поновлення RSS',
-    16 => 'Налаштування для звичайного блоку',
+    13 => 'Параметри портального блоку',
+    14 => 'RSS URL',
+    15 => 'Останнє оновлення RSS',
+    16 => 'Параметри звичайного блоку',
     17 => 'Вміст блоку',
-    18 => 'Будь ласка, заповніть поля для назви та вмісту блоку',
-    19 => 'Керування блоками',
-    20 => 'Назва блоку',
+    18 => 'Заповніть поля: Заголовок блоку і Вміст блоку',
+    19 => 'Менеджер блоків',
+    20 => '',
     21 => 'Рівень безпеки блоку',
-    22 => 'Тип блоку',
+    22 => '',
     23 => 'Порядок блоку',
-    24 => 'Тема блоку',
-    25 => 'Аби змінити чи вилучити блок, клацніть на ньому нижче. Щоб створити новий блок, клацніть &laquo;Новий блок&raquo; вище.',
-    26 => 'Блок макету',
+    24 => '',
+    25 => 'Щоб змінити або вилучити блок, натисніть його іконку редагування нижче.  Щоб створити новий блок, натисніть "Створити нове" вгорі. Щоб перемістити блок, натискайте стрілки чи кнопки [R] та [L].',
+    26 => 'Блок розміщення',
     27 => 'Блок PHP',
-    28 => 'Налаштування блоку PHP',
+    28 => 'Параметри блоку PHP',
     29 => 'Функція блоку',
-    30 => 'Якщо ви б хотіли використати код PHP в одному зі своїх блоків, введіть назву функції вище. Назва вашої функції повинна починатися з "phpblock_" (наприклад, phpblock_getweather).  Якщо функція не матиме такого префіксу, вона не буде викликана. Це зроблено, щоб стримати людей, котрі могли б уламатись до вашої інсталяції Geeklog, від виклику довільних функцій, що зашкодили б вашій системі.  Упевніться, що після назви функції НЕ йдуть порожні дужки "()". Нарешті, радиться, щоб ви розмістили весь свій код блоку PHP в /path/to/geeklog/system/lib-custom.php. Тоді цей код залишиться навіть коли ви поновите Geeklog до новішої версії.',
+    30 => 'Якщо Ви бажаєте, щоб один із блоків використовував PHP код, введіть ім\'я функції. Ваша функція повинна починатися з префікса "phpblock_" (наприклад, phpblock_getweather). Якщо вона не має вказаного префікса, то її не буде викликано. Це зроблено для того, щоб не дозволити людям, які можуть зламати ваш Geeklog, викликати функції,що є небезпечними для вашої системи. Не розміщуйте порожні дужки "()" після назви Вашої функції. Ми рекомендуємо розміщувати код функцій в /path/to/geeklog/system/lib-custom.php. Це дозволить Вам зберегти код у разі переходу до нової версії Geeklog.',
     31 => 'Помилка в блоці PHP. Функція %s не існує.',
-    32 => 'Помилка &mdash; брак поля (полів)',
-    33 => 'Ви повинні ввести URL до файлу RSS для портальних блоків',
-    34 => 'Ви повинні ввести назву й функцію для блоків PHP',
-    35 => 'Ви повинні ввести назву та вміст для звичайних блоків',
-    36 => 'Ви повинні ввести вміст для макетних блоків',
-    37 => 'Недопустима назва функції для блоку PHP',
-    38 => 'Функції для блоків PHP повинні мати префікс &laquo;phpblock_&raquo; (наприклад, phpblock_getweather). Префікс &laquo;phpblock_&raquo; вимагається з міркувань безпеки, щоб запобігти виконанню довільного коду.',
-    39 => 'Боковий',
+    32 => 'Помилка незаповнене(і) поле(я)',
+    33 => 'Введіть URL RSS файлу для портального блоку',
+    34 => 'Введіть заголовок і функцію для PHP блоку',
+    35 => 'Введіть заголовок і вміст для звичайного блоку',
+    36 => 'Введіть вміст для структурного блоку',
+    37 => 'Неправильне ім\'я для функції блоку PHP',
+    38 => 'Функція для блоку PHP повинна мати префікс \'phpblock_\' (наприклад, phpblock_getweather). Префікс \'phpblock_\' необхідний з міркувань безпеки для запобігання використанню небажаного коду.',
+    39 => 'Сторона',
     40 => 'Ліворуч',
     41 => 'Праворуч',
-    42 => 'Необхідно ввести назву й порядок блоку для усталених блоків Geeklog.',
-    43 => 'Лише домашня сторінка',
-    44 => 'В доступі відмовлено',
-    45 => "Ви намагаєтесь доступитись до блоку, на який не маєте прав. Цю спробу запротокольовано. Будь ласка, <a href=\"{$_CONF['site_admin_url']}/block.php\">поверніться на сторінку адміністрування блоків</a>.",
-    46 => 'Новий блок',
-    47 => 'Домівка адміністратора',
+    42 => 'Необхідно ввести заголовок блоку та порядок блоків',
+    43 => 'Лише головна сторінка',
+    44 => '',
+    45 => "Ви спробували отримати доступ до блоку, для якого у вас немає прав. Цю спробу було записано. Будь-ласка, <a href=\"{$_CONF['site_admin_url']}/block.php\"> поверніться на сторінку адміністрування блоків</a>.",
+    46 => 'Пересунути',
+    47 => '',
     48 => 'Назва блоку',
-    49 => ' (повинен бути без пробілів і мати унікальну назву)',
-    50 => 'URL файлу довідки',
-    51 => 'включіть http://',
-    52 => 'Якщо залишити це поле порожнім, значок довідки для цього блоку не показуватиметься',
-    53 => 'Увімкнено',
+    49 => ' (без проміжків і повинна бути унікальною)',
+    50 => '',
+    51 => 'включаючи http://',
+    52 => 'Якщо ви залишите це поле порожнім, то позначку для блоку не буде показано',
+    53 => 'Дозволений',
     54 => 'зберегти',
     55 => 'скасувати',
     56 => 'вилучити',
-    57 => 'Перемістити блок донизу',
-    58 => 'Перемістити блок догори',
+    57 => 'Перемістити блок вниз',
+    58 => 'Перемістити блок вгору',
     59 => 'Перемістити блок праворуч',
     60 => 'Перемістити блок ліворуч',
-    61 => 'No Title',
-    62 => 'Article Limit',
-    63 => 'Bad Block Title',
-    64 => 'Your Title must not be empty and cannot contain HTML!',
-    65 => 'Order'
-);
-
-###############################################################################
-# admin/event.php
-
-$LANG22 = array(
-    1 => 'Редактор подій',
-    2 => 'Помилка',
-    3 => 'Назва події',
-    4 => 'URL події',
-    5 => 'Дата початку події',
-    6 => 'Дата кінця події',
-    7 => 'Місце події',
-    8 => 'Опис події',
-    9 => '(включіть http://)',
-    10 => 'Ви повинні подати дати/час, назву події й її опис',
-    11 => 'Менеджер подій',
-    12 => 'Для зміни чи вилучення події клацніть на ній нижче. Для створення нової події клацніть &laquo;нову подію&raquo; вгорі. Клацніть [C] для створення копії наявної вже події.',
-    13 => 'Назва події',
-    14 => 'Дата початку',
-    15 => 'Дата кінця',
-    16 => 'В доступі відмовлено',
-    17 => "Ви намагаєтесь доступитись до події, на котру не маєте прав. Цю спробу запротокольовано. Будь ласка, <a href=\"{$_CONF['site_admin_url']}/event.php\">поверніться на стоорінку адміністрування подій</a>.",
-    18 => 'Нова подія',
-    19 => 'Домівка адміністратора',
-    20 => 'зберегти',
-    21 => 'скасувати',
-    22 => 'вилучити',
-    23 => 'Неправильна початкова дата.',
-    24 => 'Невірна кінцева дата.',
-    25 => 'Кінцева дата настає перед початковою.'
+    61 => 'Немає заголовку',
+    62 => 'Обмеження статей',
+    63 => 'Неправильний заголовок',
+    64 => 'Ваш заголовок повинен бути непорожнім і не містити HTML!',
+    65 => 'Порядок',
+    66 => 'Автотеги',
+    67 => 'Відмітьте, щоб дозволити використання автотегів'
 );
 
 ###############################################################################
@@ -705,88 +696,90 @@
     1 => 'Попередні статті',
     2 => 'Наступні статті',
     3 => 'Режим',
-    4 => 'Режим допису',
-    5 => 'Редактор статей',
-    6 => 'В системі немає статей',
+    4 => 'Режим публікації',
+    5 => 'Редактор статті',
+    6 => 'В системі немає жодної статті',
     7 => 'Автор',
     8 => 'зберегти',
     9 => 'попередній перегляд',
     10 => 'скасувати',
     11 => 'вилучити',
-    12 => 'Ідентифікатор',
-    13 => 'Назва',
-    14 => 'Тема',
+    12 => 'ID',
+    13 => '',
+    14 => '',
     15 => 'Дата',
-    16 => 'Текст вступу',
+    16 => 'Вступ',
     17 => 'Основний текст',
-    18 => 'Звертань',
-    19 => 'Коментарів',
-    20 => 'Ping',
-    21 => 'Send Ping',
-    22 => 'Перелік статей',
-    23 => 'Щоб виправити чи вилучити статтю, клацніть на номері цієї статті нижче. Щоб переглянути статтю, клацніть назву бажаної статті. Для створення нової статті клацніть &laquo;Нова стаття&raquo; вище.',
-    24 => 'Обраний вами ідентифікатор для статті вже використовується. Будь ласка, використайте інший.',
-    25 => 'Error when saving story',
+    18 => 'Перегляд(и,iв)',
+    19 => 'Коментар(і,ів)',
+    20 => 'Пінг',
+    21 => 'Надіслати пінг',
+    22 => 'Список статей',
+    23 => 'Щоб змінити чи вилучити статтю, натисніть її іконку редагування нижче. Щоб переглянути статтю, натисніть її заголовок. Щоб створити нову статтю, оберіть "Створити нове" вгорі.',
+    24 => 'ID, що ви обрали для цієї статті, вже використано. Будь-ласка, оберіть інший ID.',
+    25 => 'Помилка під час зберігання статті',
     26 => 'Попередній перегляд статті',
-    27 => 'If you use [unscaledX] instead of [imageX], the image will be inserted at its original dimensions.',
-    28 => '<p><b>PREVIEWING</b>: Previewing a story with images attached is best done by saving the article as a draft INSTEAD OF hitting the preview button.  Use the preview button only when images are not attached.',
-    29 => 'Trackbacks',
-    30 => 'Помилка при завантаженні файлу',
-    31 => 'Будь ласка, заповніть поля &laquo;Назва&raquo; та &laquo;Текст вступу&raquo;',
-    32 => 'Вибрана',
-    33 => 'Вибраною може бути лише одна стаття',
+    27 => 'Якщо ви використаєте [unscaledX] замість [imageX], малюнок буде вставлено з оригінальними розмірами.',
+    28 => '<p><b>ПОПЕРЕДНІЙ ПЕРЕГЛЯД</b>: Переглядати статтю з малюнками найкраще, зберігаючи статтю як чорновик, замість натискати кнопку перегляду.  Використовуйте цю кнопку лише коли малюнків немає.',
+    29 => 'Трекбеки',
+    30 => 'Помилки завантаження файлів',
+    31 => 'Будь-ласка, заповніть поля Заголовок та Вступ',
+    32 => 'Головна',
+    33 => 'Може існувати лише одна головна стаття',
     34 => 'Чернетка',
     35 => 'Так',
     36 => 'Ні',
-    37 => 'Більше від',
-    38 => 'Більше з',
-    39 => 'Пошта',
-    40 => 'В доступі відмовлено',
-    41 => "Ви намагаєтесь отримати доступ до статті, на яку не маєте прав. Цю спробу запротокольовано. Нижче ви можете прочитати цю статтю в режимі тільки для перегляду. Будь ласка, по закінченні <a href=\"{$_CONF['site_admin_url']}/story.php\">поверніться на сторінку адміністрування статей</a>.",
-    42 => "Ви намагаєтесь отримати доступ до статті, на яку не маєте прав. Цю спробу запротокольовано. Будь ласка, <a href=\"{$_CONF['site_admin_url']}/story.php\">поверніться на сторінку адміністрування статей</a>.",
-    43 => 'Нова стаття',
-    44 => 'Домівка адміністратора',
-    45 => 'Доступ',
-    46 => '<b>УВАГА:</b> якщо ви зміните цю дату так, що вона буде в майбутньому, стаття не опублікується до настання цієї дати. Це також означає, що цю статтю не буде включено у вашу трансляцію заголовків RSS, а також вона буде знехтувана на сторінках пошуку та статистики.',
-    47 => 'Зображення',
-    48 => 'зображення',
+    37 => 'Ще від',
+    38 => 'Ще із',
+    39 => 'Пересилання',
+    40 => '',
+    41 => "Ви намагалися отримати доступ до статті, до якої в Вас немає прав. Ця спроба була записана. Ви можете лише прочитати статтю. Будь-ласка, <a href=\"{$_CONF['site_admin_url']}/story.php\"> поверніться на сторінку адміністрування  статтей </a> коли закінчите.",
+    42 => "Ви намагалися отримати доступ до статті, до якої в Вас немає прав. Ця спроба була записана. Будь-ласка, <a href=\"{$_CONF['site_admin_url']}/story.php\">поверніться на сторінку адміністрування статтей</a>.",
+    43 => '',
+    44 => '',
+    45 => '',
+    46 => '<b>Зауваження:</b> якщо ви зміните цю дату на дату в майбутньому, ця стаття не буде опублікована до вказаної вами дати. Це також означає, що стаття не буде вказана в вашій стрічці RSS і буде ігноруватися при пошуку та в статистиці сайту.',
+    47 => 'Малюнки',
+    48 => 'малюнок',
     49 => 'праворуч',
     50 => 'ліворуч',
-    51 => 'Щоб додати одне з зображень, котрі ви долучаєте до цієї статті, вам необхідно вставити особливим чином розмічений текст. Таким текстом є [imageX], [imageX_right] або [imageX_left], де X &mdash; це номер долученого зображення. УВАГА: ви повинні використати долучувані зображення. Інакше ви не зможете зберегти свою статтю.<br><p><b>ПОПЕРЕДНІЙ ПЕРЕГЛЯД</b>: Попередній перегляд статті з долученими зображеннями найкраще здійснювати, зберігаючи статтю як чернетку, А НЕ натискаючи кнопку &laquo;попередній перегляд&raquo;. Використовуйте цю кнопку лише тоді, коли долучених зображень немає.',
-    52 => 'Вилучити',
-    53 => 'не використано. Ви повинні включити це зображення у вступ чи основний текст, перш ніж зможете зберегти цю статтю',
-    54 => 'Невикористані долучені зображення',
-    55 => 'При зберіганні вашої статті стались наступні помилки. Будь ласка, виправте їх перед зберіганням',
-    56 => 'Показувати значок теми',
-    57 => 'Переглянути зображення в натуральну величину',
-    58 => 'Керування статтями',
-    59 => 'Опція',
-    60 => 'Увімкнено',
-    61 => 'Автоархівування',
-    62 => 'Автовилучення',
+    51 => 'Для того щоб додати один з малюнків під\'єднаних до цієї статті, ви повинні вставити спеціально відформатований текст. Цей спеціально відформатований текст це [imageX], [imageX_right] або [imageX_left], де X  це порядковий номер малюнка, який ви під\'єднали. Зауваження: ви повинні використати малюнки, які ви під\'єднали. Інакше ви не зможете зберегти вашу статтю.<BR>',
+    52 => '',
+    53 => 'не було використано. Ви повинні включити цей малюнок у вступу або основний текс, перш ніж зможете зберегти зміни',
+    54 => 'Під\'єднані малюнки не використано',
+    55 => 'При збереженні статті виникли наступні помилки.  Будь-ласка, виправте їх перед збереженням',
+    56 => 'Показувати малюнок теми',
+    57 => 'Перегляд малюнка в повний розмір',
+    58 => 'Опції архівування',
+    59 => 'Опції',
+    60 => '',
+    61 => 'Автоматично архівувати',
+    62 => 'Автоматично вилучити',
     63 => '',
     64 => '',
     65 => '',
     66 => '',
-    67 => 'Expand the Content Edit Area size',
-    68 => 'Reduce the Content Edit Area size',
-    69 => 'Publish Story Date',
-    70 => 'Toolbar Selection',
-    71 => 'Basic Toolbar',
-    72 => 'Common Toolbar',
-    73 => 'Advanced Toolbar',
-    74 => 'Advanced II Toolbar',
-    75 => 'Full Featured',
-    76 => 'Publish Options',
-    77 => 'Javascript needs to be enabled for Advanced Editor. Option can be disabled in the main site config.php',
-    78 => 'Click <a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default">here</a> to use default editor',
-    79 => 'Preview',
-    80 => 'Editor',
-    81 => 'Publish Options',
-    82 => 'Images',
-    83 => 'Archive Options',
-    84 => 'Permissions',
-    85 => 'Show All'
+    67 => 'Збільшити розмір поля змісту',
+    68 => 'Зменшити розмір поля змісту',
+    69 => 'Публікувати дату статті',
+    70 => 'Вибір панелі інструментів',
+    71 => 'Базова панель',
+    72 => 'Звичайна панель',
+    73 => 'Розширена панель',
+    74 => 'Розширена панель II',
+    75 => 'Всі можливості',
+    76 => 'Опції публікації',
+    77 => 'Для роботи Розширеного Редактора потрібно дозволити виконання Javascript. Цю опцію можна відключити у файлі config.php',
+    78 => 'Натисніть <a href="%s/story.php?mode=edit&amp;sid=%s&amp;editopt=default">тут</a>, щоб використовувати звичайний редактор',
+    79 => 'Перегляд',
+    80 => 'Редактор',
+    81 => 'Опції публікації',
+    82 => 'Зображення',
+    83 => 'Опції архівування',
+    84 => 'Права доступу',
+    85 => 'Показати все',
+    86 => 'Розширений редактор',
+    87 => 'Статистика статті'
 );
 
 ###############################################################################
@@ -794,34 +787,34 @@
 
 $LANG27 = array(
     1 => 'Редактор тем',
-    2 => 'Ідентифікатор теми',
+    2 => 'ID теми',
     3 => 'Назва теми',
-    4 => 'Зображення теми',
-    5 => '(не використовуйте пробілів)',
-    6 => 'Вилучення теми видалить також усі пов\'язані з нею статті й блоки',
-    7 => 'Будь ласка, заповніть поля &laquo;Ідентифікатор теми&raquo; й &laquo;Назва теми&raquo;',
+    4 => 'Малюнок теми',
+    5 => '(не використовувати проміжки)',
+    6 => 'Вилучення теми призведе до вилучення всіх пов\'язаних з нею статей і блоків',
+    7 => 'Будь-ласка, заповніть поля ID теми і Назва теми',
     8 => 'Менеджер тем',
-    9 => 'Аби змінити чи вилучити тему, клацніть на ній. Щоб створити нову тему, клацніть кнопку &laquo;нова тема&raquo;, що ліворуч. В дужках ви знайдете свій рівень доступу до кожної теми. Зірочка (*) позначає усталену тему.',
+    9 => 'Щоб змінити або вилучити тему, натисніть її.  Щоб створити нову, оберіть "Створити нове" вгорі. В дужках записано ваш рівень доступу до кожної теми. Зірочка (*) відмічає тему за замовчуванням.',
     10 => 'Порядок сортування',
-    11 => 'Статей/Сторінка',
-    12 => 'В доступі відмовлено',
-    13 => "Ви намагаєтесь отримати доступ до теми, на яку не маєте прав. Цю спробу запротокольовано. Будь ласка, <a href=\"{$_CONF['site_admin_url']}/topic.php\">поверніться на сторінку адміністрування тем</a>.",
-    14 => 'Спосіб сортування',
-    15 => 'абетковий',
-    16 => 'усталено',
+    11 => 'Статей на сторінку',
+    12 => 'Відмовлено у доступі',
+    13 => "Ви намагалися отримати доступ до теми, до якої у вас немає прав. Ця спроба була записана. Будь-ласка, <a href=\"{$_CONF['site_admin_url']}/topic.php\"> поверніться на сторінку адміністрування тем </a>.",
+    14 => 'Метод сортування',
+    15 => 'алфавітний',
+    16 => 'за замовчуванням',
     17 => 'Нова тема',
-    18 => 'Домівка адміністратора',
+    18 => 'Адміністрування',
     19 => 'зберегти',
     20 => 'скасувати',
     21 => 'вилучити',
-    22 => 'Усталено',
-    23 => 'зробити цю тему усталеною для новонадісланих статей',
+    22 => 'За замовчуванням',
+    23 => 'зробити це темою за замовчуванням для нових статтей',
     24 => '(*)',
     25 => 'Архівна тема',
-    26 => 'зробити цю тему усталеною для архівних статей. Дозволено лише одну таку тему.',
-    27 => 'Or Upload Topic Icon',
-    28 => 'Maximum',
-    29 => 'File Upload Errors'
+    26 => 'зробити це темою за замовчуванням для архівних статей. Може існувати лише одна така тема.',
+    27 => 'Або завантажити малюнок',
+    28 => 'Максимум',
+    29 => 'Помилки завантаження файлів'
 );
 
 ###############################################################################
@@ -829,52 +822,81 @@
 
 $LANG28 = array(
     1 => 'Редактор користувачів',
-    2 => 'Ідентифікатор користувача',
-    3 => 'Реєстраційне ім\'я користувача',
+    2 => 'ID користувача',
+    3 => 'Ім\'я користувача',
     4 => 'Повне ім\'я',
     5 => 'Пароль',
     6 => 'Рівень безпеки',
     7 => 'Електронна адреса',
-    8 => 'Домівка',
-    9 => '(не використовуйте пробілів)',
-    10 => 'Будь ласка, заповніть поля &laquo;Реєстраційне ім\'я користувача&raquo; й &laquo;Електронна адреса&raquo;',
+    8 => 'Домашня сторінка',
+    9 => '(не використовувати проміжки)',
+    10 => 'Будь-ласка, заповніть поля Ім\'я користувача та Електронна адреса',
     11 => 'Менеджер користувачів',
-    12 => 'Аби змінити чи вилучити користувача, клацніть на ньому нижче. Для створення нового користувача клацніть кнопку &laquo;новий користувач&raquo; ліворуч. Ви можете здійснювати простий пошук, вводячи частини реєстраційного імені, повного імені й електронної адреси (наприклад, *son* або *.edu) в нижчеподану форму.',
-    13 => 'РівБезп',
+    12 => 'Щоб змінити чи вилучити користувача, натисніть його іконку редагування нижче. Щоб переглянути інформацію про користувача, оберіть його логін зі списку. Щоб створити нового, натисніть "Створити нове" вгорі. Ви можете виконувати простий пошук, вводячи лише частину імені, адреси чи логіна (наприклад *son* чи *.edu) у формі нижче.',
+    13 => 'Рівень захисту',
     14 => 'Дата реєстрації',
-    15 => 'Новий користувач',
-    16 => 'Домівка адміністратора',
-    17 => 'changepw',
-    18 => 'скасувати',
-    19 => 'вилучити',
+    15 => '',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => '',
     20 => 'зберегти',
-    21 => 'Ім\'я користувача, котре ви намагалися зберегти, вже існує.',
+    21 => 'Таке ім\'я вже існує.',
     22 => 'Помилка',
-    23 => 'Пакетне додавання',
-    24 => 'Пакетне імпортування користувачів',
-    25 => 'Ві можете заімпортувати в Geeklog пакет користувачів. Файл для імпорту мусить бути текстовим файлом з полями, розділеними табуляціями. Ось поля та їх порядок: повне ім\'я, реєстраційне ім\'я, електронна адреса. Кожному імпортованому користувачеві буде надіслано випадково підібраний пароль. Дані про кожного користувача повинні міститися в окремому рядку. Невиконання цих вказівок може спричинити клопоти, котрі вимагатимуть ручного втручання, тож перевірте добре всі поля!',
-    26 => 'Пошук',
-    27 => 'Обмежити результати',
-    28 => 'Відмітьте тут, якщо бажаєте стерти зображення',
+    23 => 'Додати групу',
+    24 => 'Груповий імпорт користувачів',
+    25 => 'Ви можете імпортувати групу користувачів у Geeklog. Імпортований файл повинен бути текстовим файлом із таб-розміткою і повинен мати поля в такому порядку: повне ім\'я, ім\'я користувача, адреса електронної пошти. Кожому користувачеві, доданому вами, буде надіслано випадковий пароль. Ви повинні мати в одному рядку одного користувача. Недотримання цих вимог призведе до помилок і потреби ручної роботи, отже двічі перевірте введені дані!',
+    26 => '',
+    27 => '',
+    28 => 'Відмітьте для вилучення малюнку',
     29 => 'Шлях',
     30 => 'Імпорт',
     31 => 'Нові користувачі',
-    32 => 'Обробку завершено. Імпортовано %d користувачів, сталося %d невдач',
+    32 => 'Обробку завершено. Імпортовано %d записів, виникло %d помилок',
     33 => 'надіслати',
     34 => 'Помилка: ви повинні вказати файл для завантаження.',
-    35 => 'Остання реєстрація',
+    35 => 'Останній вхід до системи',
     36 => '(ніколи)',
     37 => 'UID',
-    38 => 'Group Listing',
-    39 => 'Password (again)',
-    40 => 'Registration Date',
-    41 => 'Last login Date',
-    42 => 'Banned',
-    43 => 'Awaiting Activation',
-    44 => 'Awaiting Authorization',
-    45 => 'Active',
-    46 => 'User Status',
-    47 => 'Edit'
+    38 => 'Список груп',
+    39 => 'Пароль (ще раз)',
+    40 => 'Дата реєстрації',
+    41 => 'Дата останнього входу',
+    42 => 'Забанений',
+    43 => 'Очікує на активацію',
+    44 => 'Очікує на авторизацію',
+    45 => 'Активний',
+    46 => 'Статус користувача',
+    47 => 'Редагувати',
+    48 => 'Показувати адміністративні групи',
+    49 => 'Адміністративна група',
+    50 => 'Відмітьте, щоб фільтрувати цю групу як адміністративну',
+    51 => 'Днів онлайн',
+    52 => '<br>Зауважте: "Днів онлайн" - це кількість днів між першою реєстрацією та останнім входом до системи.',
+    53 => 'зареєстровано',
+    54 => 'Масове вилучення',
+    55 => 'Це працбє лише у випадку, коли ви встановили <code>$_CONF[\'lastlogin\'] = true;</code> у вашому файлі config.php',
+    56 => 'Будь-ласка, оберіть тип користувача, що ви хочете вилучити і натисніть "Оновити список". Тоді зніміть виділення з тих, кого не хочете вилучати, і натисніть "Вилучити". Зауважте, що таким чином ви вилучите лише тих, хто на поточній сторінці, якщо список займає кілька сторінок.',
+    57 => 'Неактивні користувачі',
+    58 => 'Короткострокові користувачі',
+    59 => 'Давні користувачі',
+    60 => 'Користувачі, що зареєструвались більше ',
+    61 => ' місяця(ів) тому, але жодного разу не входили до системи.',
+    62 => 'Користувачі, що зареєструвались більше ',
+    63 => ' місяця(ів) тому, увійшли до системи за наступні 24 години, і відтоді не заходили в систему.',
+    64 => 'Звичайні користувачі, які просто не відвідували ваш сайт за останні ',
+    65 => ' місяць(і).',
+    66 => 'Оновити список',
+    67 => 'Місяців від реєстрації',
+    68 => 'Годин онлайн',
+    69 => 'Місяців офлайн',
+    70 => 'вилучити не вдалося',
+    71 => 'успішно вилучено',
+    72 => 'Не обрано для вилучення жодного користувача',
+    73 => 'Ви впевнені, що хочете остаточно вилучити ВСІХ обраних користувачів?',
+    74 => 'Недавні користувачі',
+    75 => 'Користувачі, що зареєструвались за останні ',
+    76 => ' місяць(і)'
 );
 
 ###############################################################################
@@ -882,280 +904,244 @@
 
 $LANG29 = array(
     1 => 'Схвалити',
-    2 => 'Видалити',
-    3 => 'Редагувати',
+    2 => 'Вилучити',
+    3 => 'Змінити',
     4 => 'Профіль',
-    10 => 'Назва',
+    10 => 'Заголовок',
     11 => 'Дата початку',
     12 => 'URL',
-    13 => 'Категорія',
+    13 => 'Для ухвалення',
     14 => 'Дата',
     15 => 'Тема',
-    16 => 'Реєстраційне ім\'я',
+    16 => 'Ім\'я користувача',
     17 => 'Повне ім\'я',
-    18 => 'Email',
-    34 => 'Command and Control',
-    35 => 'Надіслані статті',
-    36 => 'Надіслані посилання',
-    37 => 'Надіслані події',
-    38 => 'Надіслати',
-    39 => 'Наразі немає матеріалів для модерації',
-    40 => 'Користувацькі публікації'
-);
-
-###############################################################################
-# calendar.php
-
-$LANG30 = array(
-    1 => 'Неділя',
-    2 => 'Понеділок',
-    3 => 'Вівторок',
-    4 => 'Середа',
-    5 => 'Четвер',
-    6 => 'П\'ятниця',
-    7 => 'Субота',
-    8 => 'Додати подію',
-    9 => '%s Event',
-    10 => 'Події для',
-    11 => 'Головний календар',
-    12 => 'Мій календар',
-    13 => 'Січень',
-    14 => 'Лютий',
-    15 => 'Березень',
-    16 => 'Квітень',
-    17 => 'Травень',
-    18 => 'Червень',
-    19 => 'Липень',
-    20 => 'Серпень',
-    21 => 'Вересень',
-    22 => 'Жовтень',
-    23 => 'Листопад',
-    24 => 'Грудень',
-    25 => 'Повернутись до ',
-    26 => 'Весь день',
-    27 => 'Тиждень',
-    28 => 'Особистий календар для',
-    29 => 'Публічний календар',
-    30 => 'витерти подію',
-    31 => 'Додати',
-    32 => 'Подія',
-    33 => 'Дата',
-    34 => 'Час',
-    35 => 'Швидке додавання',
-    36 => 'Надіслати',
-    37 => 'Пробачте, функція особистих календарів не дозволена на цьому сайті',
-    38 => 'Редактор особистих подій',
-    39 => 'День',
-    40 => 'Тиждень',
-    41 => 'Місяць'
+    18 => 'Електронна адреса',
+    34 => 'Управління',
+    35 => 'Статті для ухвалення',
+    36 => '',
+    37 => '',
+    38 => 'Виконати',
+    39 => 'На даний момент модерувати нічого',
+    40 => 'Користувачі для ухвалення'
 );
 
 ###############################################################################
 # admin/mail.php
 
 $LANG31 = array(
-    1 => "Поштовий засіб {$_CONF['site_name']}",
-    2 => 'Від',
-    3 => 'Відповідати на',
+    1 => "Пошта {$_CONF['site_name']}",
+    2 => 'Вiд',
+    3 => 'Вiдповiдати:',
     4 => 'Тема',
     5 => 'Текст',
-    6 => 'Кому надіслати:',
-    7 => 'Всім користувачам',
-    8 => 'Admin',
-    9 => 'Налаштування',
+    6 => 'Кому:',
+    7 => 'Всi користувачi',
+    8 => 'Адмiнiстратор',
+    9 => 'Параметри',
     10 => 'HTML',
-    11 => 'Термінове повідомлення!',
+    11 => 'Термiнове повiдомлення!',
     12 => 'Надіслати',
-    13 => 'Скинути',
-    14 => 'Знехтувати користувацькими налаштуваннями',
-    15 => 'Помилка при відсиланні до: ',
-    16 => 'Успішно відіслано повідомлення до: ',
-    17 => "<a href={$_CONF['site_admin_url']}/mail.php>Надіслати ще повідомлення</a>",
+    13 => 'Очистити',
+    14 => 'Iгнорувати установки користувача',
+    15 => 'Помилка при вiдправленнi на: ',
+    16 => 'Повiдомлення успiшно вiдправлено на: ',
+    17 => "<a href=\"{$_CONF['site_admin_url']}/mail.php\">Надіслати ще повідомлення</a>",
     18 => 'До',
-    19 => 'УВАГА: якщо ви бажаєте надіслати повідомлення всім учасникам, виберіть зі списку групу &laquo;Зареєстровані користувачі&raquo;.',
-    20 => "Успішно послано <successcount> повідомлення, а <failcount> повідомлень не вдалось надіслати. \n	Якщо вам потрібні подробиці, ви можете переглянути їх про кожне повідомлення нижче.  \n	Або ж можна <a href=\"{$_CONF['site_admin_url']}/mail.php\">Надіслати ще повідомлення</a> або <a href=\"{$_CONF['site_admin_url']}/moderation.php\">повернутись на адміністраторську сторінку</a>.",
-    21 => 'Невдач',
-    22 => 'Успішних операцій',
-    23 => 'Нема невдач',
-    24 => 'Нема успішних операцій',
-    25 => '-- Виберіть групу --',
-    26 => 'Заповніть усі поля форми й виберіть групу користувачів зі списку.'
+    19 => 'Зауваження: якщо ви бажаєте надіслати повідомлення усім користувачам, оберіть групу Зареєстровані користувачі зі списку.',
+    20 => "Успішно відправлено <successcount> повідомлень і безуспішно - <failcount>.  Якщо потрібно, подробиці щодо кожного повідомлення нижче.  Також ви можете <a href=\"{$_CONF['site_admin_url']}/mail.php\">Відіслати ще повідомлення</a> або <a href=\"{$_CONF['site_admin_url']}/moderation.php\">повернутись назад на сторінку адміністрування</a>.",
+    21 => 'Відмов(и)',
+    22 => 'Успiшно',
+    23 => 'Без помилок',
+    24 => 'Без успіхів',
+    25 => '-- Оберіть групу --',
+    26 => 'Заповніть всі поля форми і оберіть групу користувачів зі списку.'
 );
 
 ###############################################################################
 # admin/plugins.php
 
 $LANG32 = array(
-    1 => 'Встановлення втулок може завдати шкоди вашій інсталяції Geeklog і, можливо, вашій системі. Важливо, щоб ви встановлювали лише втулки, звантажені з <a href="http://www.geeklog.net">Домівки Geeklog</a>, оскільки ми ретельно перевіряємо всі надіслані на наш сайт втулки на цілому ряді операційних систем. Важливо, щоб ви розуміли, що процес встановення втулки вимагатиме виконання кількох команд роботи з файловою системою, що може призвести до клопотів з безпекою, особливо ж, якщо ви використовуєте втулки зі сторонніх сайтів. Навіть після цієї остороги, ми не ґарантуємо успіху будь-якого встановлення, ані не відповідаємо за шкоду, спричинену встановленням втулки для Geeklog. Іншими словами, встановлюйте на власний страх і ризик. Для обережних, керівництво зі встановлення втулки власноруч постачається з кожною втулкою.',
-    2 => 'Юридичне повідомлення встановлюваної втулки',
-    3 => 'Форма встановлення втулки',
-    4 => 'Файл втулки',
-    5 => 'Перелік втулок',
-    6 => 'Увага: втулку вже встановлено!',
-    7 => 'Втулка, котру ви намагаєтесь встановити, вже існує. Будь ласка, вилучіть втулку перед її перевстановленням',
-    8 => 'Перевірку втулки на сумісність не пройдено',
-    9 => 'Ця втулка вимагає новішої версії Geeklog. Або поновіть свій примірник <a href="http://www.geeklog.net">Geeklog</a>, або ж отримайте новішу версію втулки.',
-    10 => '<br><b>В даний момент не встановлено жодної втулки.</b><br><br>',
-    11 => 'Аби виправити чи вилучити втулку, клацніть на її назві нижче. Це покаже подробиці втулки, в тому числі й сайт автора (авторів). Показуються і встановлена версія, й версія, отримана з коду втулки. Це допоможе вам дізнатись, чи варто поновлювати втулку. Для встановлення чи поновлення втулки зверніться до її супровідної документації.',
-    12 => 'plugineditor() не надано назви втулки',
-    13 => 'Редактор втулок',
-    14 => 'Нова втулка',
-    15 => 'Домівка адміністратора',
-    16 => 'Назва втулки',
-    17 => 'Версія втулки',
+    1 => 'Встановлення модуля може пошкодити Geeklog або навіть вашій системі. Важливо, щоб ви встановлювали лише модулі, завантажені з <a href="http://www.geeklog.net" target="_blank">Домашньої сторінки Geeklog</a>, оскільки ми тестуємо всі модулі, що нам присилають, на різних операційних системах. Важливо, щоб ви розуміли, що встановлення модулів вимагає виконання деяких системних команд, які можуть викликати проблеми з безпекою, особливо це стосується модулів, завантажених не з нашого сайту. Якщо навіть після цього попередження ви все ж продовжите, ми не можемо гарантувати успішність інсталяції і не несемо відповідальності за проблеми, викликані встановленням модуля Geeklog. Інакше кажучи, ви встановлюєте модуль на свій ризик. Керівництво з ручного встановлення модуля включено в кожний інсталяційний пакет.',
+    2 => 'Попередження про встановлення модулів',
+    3 => 'Форма встановлення модулів',
+    4 => 'Файл модуля',
+    5 => 'Список модулів',
+    6 => 'Попередження: Модуль вже встановлено!',
+    7 => 'Модуль, який Ви намагаєтесь встановити, вже існує. Перед тим, як перевстановити модуль, вилучіть старий',
+    8 => 'Модуль не пройшов перевірку сумісності версії',
+    9 => 'Модуль потребує більш нової версії Geeklog. Оновіть Вашу копію <a href="http://www.geeklog.net">Geeklog</a> або спробуйте знайти іншу версію модуля.',
+    10 => '<br><b>В системі немає встановлених модулів.</b><br><br>',
+    11 => 'Щоб змінити чи вилучити модуль, натисніть його іконку редагування нижче. Буде виведено деталі про модуль, включаючи домашню сторінку автора. Виводиться як інстальована версія, так і версія з коду модуля. Це дасть вам знати, коли варто оновлювати модуль. Щоб встановити чи оновити модуль, будь-ласка, зверніться до його документації.',
+    12 => 'ім\'я модуля не передано в plugineditor()',
+    13 => 'Редактор модулів',
+    14 => 'Новий модуль',
+    15 => 'Адміністрування',
+    16 => 'Назва модуля',
+    17 => 'Версія модуля',
     18 => 'Версія Geeklog',
-    19 => 'Увімкнена',
+    19 => 'Дозволено',
     20 => 'Так',
     21 => 'Ні',
     22 => 'Встановити',
     23 => 'Зберегти',
     24 => 'Скасувати',
     25 => 'Вилучити',
-    26 => 'Назва втулки',
-    27 => 'Домівка втулки',
-    28 => 'Встановлена версія',
+    26 => 'Назва модуля',
+    27 => 'Домашня сторінка',
+    28 => 'Версія модуля',
     29 => 'Версія Geeklog',
-    30 => 'Вилучити втулку?',
-    31 => 'Ви впевнені, що хочете вилучити цю втулку? Зробивши це, ви усунете також усі дані й структури даних, використовувані цією втулкою. Якщо ви впевнені, клацніть &laquo;вилучити&raquo; ще раз на формі, що нижче.',
-    32 => '<p><b>Помилка: невірний формат для мітки AutoLink</b></p>',
+    30 => 'Вилучити модуль?',
+    31 => 'Ви впевнені, що бажаєте вилучити цей модуль? Продовживши, ви вилучите всі файли і дані, які даний модуль використовував. Якщо ви впевнені, натисніть "Вилучити".',
+    32 => '<p><b>Помилка - некоректний формат тега AutoLink</b></p>',
     33 => 'Версія коду',
-    34 => 'Поновити',
-    35 => 'Edit',
-    36 => 'Code',
-    37 => 'Data',
-    38 => 'Update!'
+    34 => 'Оновити',
+    35 => 'Редагувати',
+    36 => 'Код',
+    37 => 'Дані',
+    38 => 'Оновити!'
 );
 
 ###############################################################################
 # admin/syndication.php
 
 $LANG33 = array(
-    1 => 'створити трансляцію',
+    1 => 'створити стрічку',
     2 => 'зберегти',
     3 => 'вилучити',
     4 => 'скасувати',
-    10 => 'Трансляція вмісту',
-    11 => 'Нова трансляція',
-    12 => 'Домівка адміністратора',
-    13 => 'Щоб змінити чи вилучити трансляцію, клацніть на назві трансляції нижче. Для створення нової трансляції клацніть &laquo;Нова трансляція&raquo; вище.',
-    14 => 'Назва',
+    10 => 'Експорт контенту',
+    11 => 'Нова стрічка',
+    12 => 'Адміністрування',
+    13 => 'Щоб змінити чи вилучити стрічку, натисніть її іконку редагування нижче. Щоб створити нову, оберіть "Створити нове" вгорі.',
+    14 => 'Заголовок',
     15 => 'Тип',
-    16 => 'Назва файлу',
+    16 => 'Ім\'я файла',
     17 => 'Формат',
-    18 => 'востаннє поновлено',
-    19 => 'Дозволено',
+    18 => 'останнє оновлення',
+    19 => 'Дозволена',
     20 => 'Так',
     21 => 'Ні',
-    22 => '<i>(нема трансляцій)</i>',
+    22 => '<i>(немає стрічок)</i>',
     23 => 'всі статті',
-    24 => 'Редактор трансляцій',
-    25 => 'Назва трансляції',
+    24 => 'Редактор стрічок новин',
+    25 => 'Заголовок стрічки',
     26 => 'Обмеження',
-    27 => 'Довжина елементів',
-    28 => '(0 = без тексту, 1 = повний текст, все інше = обмежити до цієї кількості символів.)',
+    27 => 'Довжина записів',
+    28 => '(0 = без тексту, 1 = повний текст, інше число = обмежити до такої кількості знаків.)',
     29 => 'Опис',
     30 => 'Останнє поновлення',
-    31 => 'Набір символів',
+    31 => 'Кодування',
     32 => 'Мова',
     33 => 'Зміст',
-    34 => 'Елементи',
-    35 => 'Години',
-    36 => 'Виберіть тип трансляції',
-    37 => 'У вас встановлена щонайменше одна втулка, що підтримує трансляцію вмісту. Нижче вам потрібно буде вибрати, чи ви бажаєте створити трансляцію Geeklog чи трансляцію однієї з втулок.',
-    38 => 'Помилка: не вказано трансляцію',
-    39 => 'Будь ласка, заповніть поля &laquo;Назва трансляції&raquo;, &laquo;Опис&raquo; і &laquo;Назва файлу&raquo;.',
-    40 => 'Будь ласка, вкажіть кількість годин або кількість елементів.',
-    41 => 'Посилання',
-    42 => 'Події',
-    43 => 'All',
-    44 => 'None',
-    45 => 'Header-link in topic',
-    46 => 'Limit Results',
-    47 => 'Search',
-    48 => 'Edit',
-    49 => 'Feed Logo',
-    50 => "Relative to site url ({$_CONF['site_url']})"
+    34 => 'Записи',
+    35 => 'Годин',
+    36 => 'Оберіть тип стрічки',
+    37 => 'У вас встановлено принаймні один модуль, що підтримує експорт контенту. Нижче вам потрібно обрати, хочете ви створити стрічку Geeklog чи стрічку одного з модулів.',
+    38 => 'Помилка: незаповнені поля',
+    39 => 'Будь-ласка, заповніть Заголовок стрічки, Опис та Ім\'я файла.',
+    40 => 'Будь-ласка, введіть кількість записів або кількість годин.',
+    41 => 'Надіслати',
+    42 => '',
+    43 => 'Всі',
+    44 => 'Жодної',
+    45 => 'Посилання в темі',
+    46 => 'Обмежити результати',
+    47 => 'Пошук',
+    48 => 'Редагувати',
+    49 => 'Логотип стрічки',
+    50 => "Відносно до URL сайту ({$_CONF['site_url']})",
+    51 => 'Ім\'я файла яке ви обрали, вже використано для іншої стрічки. Будь-ласка, оберіть інше.',
+    52 => 'Помилка: ім\'я файла вже існує'
 );
 
 ###############################################################################
 # confirmation and error messages
 
 $MESSAGE = array(
-    1 => "Ваш пароль відіслано поштою, й він ось-ось повинен до вас надійти. Будь ласка, виконайте вказівки в листі. Дякуємо вам за користування {$_CONF['site_name']}",
-    2 => "Дякуємо за надіслання вашої статті на {$_CONF['site_name']}. Її надіслано нашому штатові для схвалення. Якщо статтю схвалять, вона стане доступною для прочитання іншим.",
-    3 => "Дякуємо за надіслання посилання на {$_CONF['site_name']}. Його надіслано нашому штатові для схвалення. Якщо посилання схвалять, воно стане видимим у розділі <a href={$_CONF['site_url']}/links.php>посилань</a>.",
-    4 => "Дякуємо за надіслання події на {$_CONF['site_name']}. Її надіслано нашому штатові для схвалення. Якщо подію схвалять, її буде видно в розділі <a href={$_CONF['site_url']}/calendar.php>календаря</a>.",
-    5 => 'Інформацію про ваш рахунок успішно збережено.',
-    6 => 'Ваші вподобання успішно збережено.',
-    7 => 'Ваші вподобання щодо коментарів успішно збережено.',
-    8 => 'Ви успішно вийшли із системи.',
+    1 => "Ваш пароль відправлено на електронну пошту. Будь-ласка, дотримуйтесь вказівок в отриманому повідомленні. Дякуємо за використання {$_CONF['site_name']}",
+    2 => "Дякуємо за додання статті на {$_CONF['site_name']}.  Вона прийнята до розгляду. Якщо дозвіл буде отримано, вашу статтю зможуть читати інші користувачі нашого сайту.",
+    3 => '',
+    4 => '',
+    5 => 'Інформацію про Ваш обліковий запис успішно збережено.',
+    6 => 'Ваші налаштування зображення успішно збережено.',
+    7 => 'Ваші параметри коментарів успішно збережено.',
+    8 => 'Ви успішно вийшли з системи.',
     9 => 'Вашу статтю успішно збережено.',
     10 => 'Статтю успішно вилучено.',
     11 => 'Ваш блок успішно збережено.',
     12 => 'Блок успішно вилучено.',
-    13 => 'Вашу тему успішно збережено.',
-    14 => 'Тему, всі її статті та блоки успішно вилучено.',
-    15 => 'Ваше посилання успішно збережено.',
-    16 => 'Посилання успішно вилучено.',
-    17 => 'Вашу подію успішно збережено.',
-    18 => 'Подію успішно вилучено.',
-    19 => 'Ваше опитування успішно збережено.',
-    20 => 'Опитування успішно вилучено.',
-    21 => 'Користувача успішно збережено.',
+    13 => 'Тему успішно збережено.',
+    14 => 'Тему, всі блоки і статті, які відносяться до неї, успішно вилучено.',
+    15 => '',
+    16 => '',
+    17 => '',
+    18 => '',
+    19 => '',
+    20 => '',
+    21 => 'Дані користувача успішно збережено.',
     22 => 'Користувача успішно вилучено.',
-    23 => 'Помилка при спробі додати подію до вашого календаря. Не передано ідентифікатор події.',
-    24 => 'Подію збережено до вашого календаря',
-    25 => 'Ваш особистий календар не вдасться відкрити, поки ви не ввійдете в систему',
-    26 => 'Подію успішно усунено з вашого особистого календаря',
-    27 => 'Повідомлення успішно відіслано.',
-    28 => 'Втулку успішно збережено',
-    29 => 'Вибачте, особисті календарі на цьому сайті недозволені',
-    30 => 'В доступі відмовлено',
-    31 => 'Пробачте, у вас немає доступу до сторінки адміністрування статей. Зауважте, що всі спроби доступу до недозволених функцій протоколюються',
-    32 => 'Пробачте, у вас немає доступу до сторінки адміністрування тем. Зауважте, що всі спроби доступу до недозволених функцій протоколюються',
-    33 => 'Пробачте, у вас немає доступу до сторінки адміністрування блоків. Зауважте, що всі спроби доступу до недозволених функцій протоколюються',
-    34 => 'Пробачте, у вас немає доступу до сторінки адміністрування посилань. Зауважте, що всі спроби доступу до недозволених функцій протоколюються',
-    35 => 'Пробачте, у вас немає доступу до сторінки адміністрування подій. Зауважте, що всі спроби доступу до недозволених функцій протоколюються',
-    36 => 'Пробачте, у вас немає доступу до сторінки адміністрування опитувань. Зауважте, що всі спроби доступу до недозволених функцій протоколюються',
-    37 => 'Пробачте, у вас немає доступу до сторінки адміністрування користувачів. Зауважте, що всі спроби доступу до недозволених функцій протоколюються',
-    38 => 'Пробачте, у вас немає доступу до сторінки адміністрування втулок. Зауважте, що всі спроби доступу до недозволених функцій протоколюються',
-    39 => 'Пробачте, у вас немає доступу до сторінки адміністрування пошти. Зауважте, що всі спроби доступу до недозволених функцій протоколюються',
+    23 => '',
+    24 => '',
+    25 => '',
+    26 => '',
+    27 => 'Повідомлення успішно відправлено.',
+    28 => 'Модуль успішно збережено.',
+    29 => '',
+    30 => 'Відмовлено у доступі',
+    31 => 'Вибачте, у Вас немає доступу до адміністрування статей. Просимо врахувати, що всі спроби доступу до заборонених функцій записуються',
+    32 => 'Вибачте, у Вас немає доступу до адміністрування тем. Просимо врахувати, що всі спроби доступу до заборонених функцій записуються',
+    33 => 'Вибачте, у Вас немає доступу до адміністрування блоків. Просимо врахувати, що всі спроби доступу до заборонених функцій записуються',
+    34 => '',
+    35 => '',
+    36 => '',
+    37 => 'Вибачте, у Вас немає доступу до адміністрування користувачів. Просимо врахувати, що всі спроби доступу до заборонених функцій записуються',
+    38 => 'Вибачте, у Вас немає доступу до адміністрування модулів. Просимо врахувати, що всі спроби доступу до заборонених функцій записуються',
+    39 => 'Вибачте, у Вас немає доступу до адміністрування пошти. Просимо врахувати, що всі спроби доступу до заборонених функцій записуються',
     40 => 'Системне повідомлення',
-    41 => 'Пробачте, у вас немає доступу до word replacement page. Зауважте, що всі спроби доступу до недозволених функцій протоколюються',
-    42 => 'Ваше слово успішно збережене.',
-    43 => 'Слово успішно вилучене.',
-    44 => 'Втулку успішно встановлено!',
-    45 => 'Втулку успішно вилучено.',
-    46 => 'Пробачте, у вас немає доступу до засобу резервного копіювання бази даних. Зауважте, що всі спроби доступу до недозволених функцій протоколюються',
-    47 => 'Ця функціональність працює лише під *nix. Якщо вашою операційною системою є *nix, тоді кеш успішно очищено. Якщо у вас Windows, вам треба буде пошукати файли за назвою adodb_*.php і усунути їх самостійно.',
-    48 => "Дякуємо вам за ваше бажання стати учасником {$_CONF['site_name']}. Наша команда розгляне вашу заяву. В разі ухвали, ваш пароль буде надіслано вам на щойно вами вказану адресу електронної пошти.",
+    41 => 'Вибачте, у Вас немає доступу до адміністрування слів-замін. Просимо врахувати, що всі спроби доступу до заборонених функцій записуються',
+    42 => 'Слово успішно збережено.',
+    43 => 'Слово успішно вилучено.',
+    44 => 'Модуль успішно встановлено!',
+    45 => 'Модуль успішно вилучено.',
+    46 => 'Вибачте, у Вас немає доступу до створення резервних копій. Просимо врахувати, що всі спроби доступу до заборонених функцій записуються',
+    47 => 'Ці функціональні можливості працюють лише в Unix-системах. Якщо ви використовуєте Unix, то ваша операційна система успішно очистить кеш. Якщо ви працюєте з Windows, вам буде потрібно розшукати файли adodb_*.php і вилучити їх вручну.',
+    48 => "Дякуємо за реєстрацію на порталі {$_CONF['site_name']}. Наша команда перегляне ваше подання. У разі його схвалення ваш пароль буде надіслано вам на електронну адресу.",
     49 => 'Вашу групу успішно збережено.',
-    50 => 'Групу успішно вилучено.',
-    51 => 'Це реєстраційне ім\'я вже використовується. Будь ласка, оберіть якесь інше.',
-    52 => 'Надана вами електронна адреса, схоже, не є допустимою.',
-    53 => 'Ваш новий пароль прийнято. А тепер, будь ласка, використайте цей новий пароль для входу в систему.',
-    54 => 'Ваш запит на новий пароль застарів. Будь ласка, спробуйте ще раз, нижче.',
-    55 => 'Вам вислано електронного листа, який ось-ось має прийти. Будь ласка, виконайте вказівки в листі, щоб встановити новий пароль для вашого рахунку.',
-    56 => 'Надана електронна адреса вже використовується іншим рахунком.',
-    57 => 'Ваш рахунок успішно вилучено.',
-    58 => 'Вашу трансляцію успішно збережено.',
-    59 => 'Трансляцію успішно вилучено.',
-    60 => 'Втулку успішно поновлено',
-    61 => 'Втулка %s: Невідоме поле заміщення для повідомлення',
-    62 => 'The trackback comment has been deleted.',
-    63 => 'An error occurred when deleting the trackback comment.',
-    64 => 'Your trackback comment has been successfully sent.',
-    65 => 'Weblog directory service successfully saved.',
-    66 => 'The weblog directory service has been deleted.',
-    67 => 'The new password does not match the confirmation password!',
-    68 => 'You have to enter the correct current password.',
-    69 => 'Your account has been blocked!',
-    70 => 'Your account is awaiting administrator approval.',
-    71 => 'Your account has now been confirmed and is awaiting administrator approval.',
-    72 => 'An error occured while attempting to install the plugin. See error.log for details.',
-    73 => 'An error occured while attempting to uninstall the plugin. See error.log for details.',
-    74 => 'The pingback has been successfully sent.',
-    75 => 'Trackbacks must be sent using a POST request.'
+    50 => 'Групу було успішно вилучено.',
+    51 => 'Таке ім\'я користувача вже існує. Будь-ласка, оберіть інше.',
+    52 => 'Наведена електронна адреса є недійсною.',
+    53 => 'Ваш новий пароль прийнято. Будь-ласка, скористайтесь ним зараз для входу до системи.',
+    54 => 'Ваш запит про новий пароль застарілий. Будь-ласка, спробуйте знову нижче.',
+    55 => 'На вашу електронну адресу надіслано листа, що повинен прибути негайно. Будь-ласка, виконайте вказівки з повідомлення, щоб встановити новий пароль для вашого облікового запису.',
+    56 => 'Введена адреса вже використовується для іншого облікового запису.',
+    57 => 'Ваш обліковий запис успішно вилучено.',
+    58 => 'Вашу стрічку новин успішно збережено.',
+    59 => 'Стрічку новин успішно вилучено.',
+    60 => 'Модуль успішно оновлено',
+    61 => 'Модуль %s: Невідомий замісник повідомлення',
+    62 => 'Трекбек-коментар вилучено.',
+    63 => 'Під час вилучення трекбек-коментаря сталася помилка.',
+    64 => 'Ваш трекбек-коментар успішно відправлено.',
+    65 => 'Службу Веблог успішно збережено.',
+    66 => 'Службу Веблог успішно вилучено.',
+    67 => 'Новий пароль та його підтвердження не співпадають!',
+    68 => 'Ви повинні ввести правильний поточний пароль.',
+    69 => 'Ваш обліковий запис заблоковано!',
+    70 => 'Ваш обліковий запис очікує на схвалення адміністратора.',
+    71 => 'Ваш обліковий запис підтверджено і зараз він очікує на схвалення адміністратора.',
+    72 => 'Під час інсталяції модуля сталася помилка. За деталями зверніться до файла error.log.',
+    73 => 'Під час деінсталяції модуля сталася помилка. За деталями зверніться до файла error.log.',
+    74 => 'Пінгбек успішно відправлено.',
+    75 => 'Трекбеки повинні відправлятись через POST запит.',
+    76 => 'Ви впевнені, що хочете вилучити цей елемент?',
+    77 => 'ПОПЕРЕДЖЕННЯ:<br>Ваше кодування символів за замовчуванням - UTF-8. Проте ваш сервер не підтримує багатобайтові кодування. Будь-ласка, встановіть функції mbstring для PHP або оберіть інше кодування/мову.',
+    78 => 'Будь-ласка, переконайтеся, що електронна адреса та її підтвердження співпадають.',
+    79 => 'Сторінка, яку ви намагалися відкрити, посилається на функцію, якою вже немає на цьому сайті.',
+    80 => 'Модуль, що створив цю стрічку, наразі вимкнено. Ви не зможете редагувати цю стрічку, поки не увімкнете відповідний батьківський модуль.',
+    81 => 'Можливо, ви помилилися при наборі ваших даних.  Будь-ласка, спробуйте ще раз.',
+    82 => 'Ви перевищили кількість дозволених спроб входу.  Будь-ласка, спробуйте ще раз пізніше.',
+    83 => 'Щоб змінити ваш пароль, електронну адресу чи час, на який сайт вас запам\'ятовує, введіть ваш поточний пароль.',
+    84 => 'Щоб вилучити ваш обліковий запис, введіть свій поточний пароль.'
 );
 
 ###############################################################################
@@ -1164,67 +1150,66 @@
     'access' => 'Доступ',
     'ownerroot' => 'Власник/Root',
     'group' => 'Група',
-    'readonly' => 'Лише читання',
+    'readonly' => 'Тільки читання',
     'accessrights' => 'Права доступу',
     'owner' => 'Власник',
-    'grantgrouplabel' => 'Надати вищеподаній групі права редагування',
-    'permmsg' => 'УВАГА: учасники &mdash; це всі зареєстровані користувачі сайту, а аноніми &mdash; це всі користувачі сайту, що не ввійшли до системи.',
+    'grantgrouplabel' => 'Дати права редагування згаданій групі',
+    'permmsg' => 'Зауваження: користувачі - всі які увійшли до системи і зареєстровані, анонімні користувачі -  всі відвідувачі сайту, які не увійшли до системи.',
     'securitygroups' => 'Групи безпеки',
-    'editrootmsg' => "Хоча ви є адміністратором користувачів, ви не зможете редагувати користувача root, самі не бувши користувачем root. Ви можете редагувати всіх користувачів, окрім користувачів root. Зауважте, що всі спроби незаконно редагувати користувачів root протоколюються. Будь ласка, поверніться на <a href=\"{$_CONF['site_admin_url']}/user.php\">сторінку адміністрування користувачів</a>.",
-    'securitygroupsmsg' => 'Відмітьте групи, до котрих бажаєте віднести користувача.',
+    'editrootmsg' => "Хоча ви і є Адміністратором Користувачів, але ви не можете редагувати кореневого користувача, не будучи при цьому самі кореневим користувачем.  Ви можете редагувати всіх користувачів, крім кореневих. Майте на увазі, що всі спроби незаконно редагувати користувачів записуються.  Будь-ласка, поверніться на <a href=\"{$_CONF['site_admin_url']}/user.php\">сторінку адміністрування користувачів</a>.",
+    'securitygroupsmsg' => 'Оберіть групи до яких повинен належати користувач.',
     'groupeditor' => 'Редактор груп',
     'description' => 'Опис',
-    'name' => 'Назва',
+    'name' => 'Ім\'я',
     'rights' => 'Права',
-    'missingfields' => 'Бракує полів',
-    'missingfieldsmsg' => 'Ви повинні надати назву та опис для групи',
+    'missingfields' => 'Пропущені поля',
+    'missingfieldsmsg' => 'Ви повинні надати назву і опис групи',
     'groupmanager' => 'Менеджер груп',
-    'newgroupmsg' => 'Аби виправити чи вилучити групу, клацніть її нижче. Для створення нової групи клацніть &laquo;нова група&raquo; вгорі. Зауважте, що основні групи неможливо вилучити, бо вони використовуються системою.',
-    'groupname' => 'Назва групи',
-    'coregroup' => 'Основна група',
+    'newgroupmsg' => 'Щоб змінити чи вилучити групу, натисніть її іконку редагування нижче. Щоб створити нову, оберіть "Створити нове" вгорі. Зазначте, що деякі базові групи не можна вилучити, оскільки вони використовуються системою.',
+    'groupname' => 'Ім\'я групи',
+    'coregroup' => 'Базова група',
     'yes' => 'Так',
     'no' => 'Ні',
-    'corerightsdescr' => "Ця група є основною для сайту {$_CONF['site_name']}. Тому її права не можна редагувати. Нижче наведено незмінюваний перелік прав, наданих цій групі.",
-    'groupmsg' => 'Групи безпеки на цьому сайті є ієрархічними. Додаючи цю групу до будь-якої з нижчеподаних груп, ви дасте їй всі права тієї групи. Де тільки можливо, вас заохочується використовувати нижчеподані групи для надання групі прав. Якщо ж ви бажаєте окремих прав для своєї групи, то можете обрати права доступу до різних можливостей сайту в розділі &laquo;Права&raquo;, що нижче. Щоб додати цю групу до якоїсь із нижченаведених груп, просто відмітьте поля поряд з бажаними групами.',
-    'coregroupmsg' => "Ця група є основною для сайту {$_CONF['site_name']}. Тому групи, до яких вона належить, редагувати не можна. Нижче подано список цих груп (лише для читання).",
-    'rightsdescr' => 'Доступ групи до певного з нижчеподаних прав можна прямо надати групі АБО іншій, частиною якої є потрібна нам група. Права, котрі ви бачите без полів для галочки, надаються цій групі, бо вона належить до іншої групи з таким правом. Права, що мають поряд поля для	галочки, можуть прямо надаватись цій групі.',
-    'lock' => 'Замкнути',
-    'members' => 'Учасники',
+    'corerightsdescr' => "Ця група є базовою на {$_CONF['site_name']}. Тому права для цієї групи не редагуються. Нижче перелічені права, які має ця група.",
+    'groupmsg' => 'Структура груп гезпеки ієрархічна. Включаючи дану групу в іншу, ви даєте даній групі ті ж права, що має та група. Радимо вам використати групи, які перераховано нижче, для призначення прав вашій групі. Якщо Ви бажаєте призначити цій групі довільні права, то можете обрати права до окремих функцій сайту в розділі "Права" нижче. Щоб додати групі будь-які права з перерахованих нижче, просто поставте відмітки навпроти потрібних прав.',
+    'coregroupmsg' => "Ця група є базовою для {$_CONF['site_name']}. Тому групи, до яких ця група належить не підлягають редагуванню. Нижче перелічені групи до яких належить ця група.",
+    'rightsdescr' => 'Групові права можуть призначатися напряму групі АБО іншій групі, до якої належить дана. Ті права, які не мають чекбоксів поруч, є правами, що дісталися групі у спадок від груп, до яких вона належить. Права з чекбоксами поруч можуть призначатися цій групі напряму.',
+    'lock' => 'Блокування',
+    'members' => 'Користувачі',
     'anonymous' => 'Аноніми',
-    'permissions' => 'Дозволи',
-    'permissionskey' => 'R = читання, E = редагування, права на редагування включають і права на читання',
-    'edit' => 'Редагування',
-    'none' => 'Немає',
-    'accessdenied' => 'В доступі відмовлено',
-    'storydenialmsg' => "Ви не маєте доступу до перегляду цієї статті. Це може бути через те, що ви не є учасником сайту {$_CONF['site_name']}. Будь ласка, <a href=users.php?mode=new>приєднайтесь</a> до {$_CONF['site_name']} для отримання повного учасницького доступу!",
-    'eventdenialmsg' => "Ви не маєте доступу до перегляду цієї події. Це може бути через те, що ви не є учасником сайту {$_CONF['site_name']}.  Будь ласка, <a href=users.php?mode=new>приєднайтесь</a> до {$_CONF['site_name']} для отримання повного учасницького доступу!",
-    'nogroupsforcoregroup' => 'Ця група не належить до жодної іншої групи',
-    'grouphasnorights' => 'Ця група не має доступу до жодної адміністративної функції цього сайту',
+    'permissions' => 'Права',
+    'permissionskey' => 'R = читати, E = редагувати, право редагувати припускає і право читати',
+    'edit' => 'Редагувати',
+    'none' => 'Жодних',
+    'accessdenied' => 'Відмовлено у доступі',
+    'storydenialmsg' => "У вас не має прав на перегляд цієї статті. Можливо, ви просто не  зареєстровані на {$_CONF['site_name']}. Будь ласка, <a href=\"{$_CONF['site_url']}/users.php?mode=new\">зареєструйтесь</a> на {$_CONF['site_name']} для отримання користувацького доступу!",
+    'nogroupsforcoregroup' => 'Ця група не належить до жодної з інших груп',
+    'grouphasnorights' => 'Ця група не має права доступу до жодної з адміністративної функції сайту',
     'newgroup' => 'Нова група',
-    'adminhome' => 'Домівка адміністратора',
+    'adminhome' => 'Адміністрування',
     'save' => 'зберегти',
     'cancel' => 'скасувати',
     'delete' => 'вилучити',
-    'canteditroot' => 'Ви намагались редагувати групу Root, не належачи до неї. Тому в доступі до цієї групи вам відмовлено. Якщо ви вважаєте, що це помилка, зверніться до системного адміністратора.',
-    'listusers' => 'Перелік користувачів',
-    'listthem' => 'перелік',
-    'usersingroup' => 'Користувачі в групі "%s"',
+    'canteditroot' => 'Ви намагаєтесь редагувати Кореневу групу, але при цьому ви не є її членом, тому доступ до неї закрито. Будь ласка, зверніться до адміністратора, якщо вважаєте це помилкою.',
+    'listusers' => 'Користувачі',
+    'listthem' => 'список',
+    'usersingroup' => 'Користувачів групи "%s"',
     'usergroupadmin' => 'Адміністрування груп користувачів',
     'add' => 'Додати',
-    'remove' => 'Усунути',
-    'availmembers' => 'Доступні учасники',
-    'groupmembers' => 'Члени групи',
-    'canteditgroup' => 'Для редагування цієї групи ви повинні бути її членом.  Якщо ви вважаєте, що це помилка, зверніться до системного адміністратора.',
-    'cantlistgroup' => 'Щоб бачити членів цієї групи, ви самі повинні бути її членом. Якщо ви вважаєте, що це помилка, зверніться до системного адміністратора.',
-    'editgroupmsg' => 'To modify the group membership, click on the member names(s) and use the add or remove buttons. If the member is a member of the group, their name will appear on the right side only. Once you are complete - press <b>Save</b> to update the group and return to the main group admin page.',
-    'listgroupmsg' => 'Listing of all current members in the group: <b>%s</b>',
-    'search' => 'Search',
-    'submit' => 'Submit',
-    'limitresults' => 'Limit Results',
-    'group_id' => 'Group ID',
-    'plugin_access_denied_msg' => 'You are illegally trying access a plugin administration page.  Please note that all attempts to illegally access this page are logged.',
-    'groupexists' => 'Group name already exists',
-    'groupexistsmsg' => 'There is already a group with this name. Group names must be unique.'
+    'remove' => 'Вилучити',
+    'availmembers' => 'Доступні користувачі',
+    'groupmembers' => 'Користувачі групи',
+    'canteditgroup' => 'Щоб редагувати цю групу, ви маєте бути її членом. Будь-ласка, зверніться до адміністратора, якщо вважаєте це помилкою.',
+    'cantlistgroup' => 'Щоб побачити членів цієї групи, ви самі повинні бути її членом. Будь-ласка, зверніться до адміністратора, якщо вважаєте це помилкою.',
+    'editgroupmsg' => 'Щоб змінити членство в групах, оберіть логін(и) користувачів і використовуйте кнопки додавання та вилучення. Якщо користувач є членом групи, його логін буде лише з правого боку. Як тільки завершите - натисніть <b>Зберегти</b>, щоб оновити групу і повернутись до головної сторінки адміністрування груп.',
+    'listgroupmsg' => 'Список поточних членів групи: <b>%s</b>',
+    'search' => 'Пошук',
+    'submit' => 'Відправити',
+    'limitresults' => 'Обмежити результати',
+    'group_id' => 'ID групи',
+    'plugin_access_denied_msg' => 'Ви намагаєтесь незаконно отримати доступ до адміністрування модулів.  Зазначте, що всі подібні спроби записуються.',
+    'groupexists' => 'Таке ім\'я групи вже існує',
+    'groupexistsmsg' => 'Уже існує група з таким ім\'ям. Імена груп повинні бути унікальними.'
 );
 
 ###############################################################################
@@ -1232,33 +1217,33 @@
 
 $LANG_DB_BACKUP = array(
     'last_ten_backups' => 'Останні 10 резервних копій',
-    'do_backup' => 'Зробити резервну копію',
-    'backup_successful' => 'Резервне копіювання бази даних відбулося успішно.',
-    'db_explanation' => 'Для створення нової резервної копії системи Geeklog, натисніть кнопку, що нижче',
-    'not_found' => "Невірний шлях, або ж утиліта mysqldump не є виконуваною.<br>Перевірте означення <strong>\$_DB_mysqldump_path</strong> в config.php.<br>Наразі змінну означено як: <var>{$_DB_mysqldump_path}</var>",
-    'zero_size' => 'Резервне копіювання не вдалося: розмір файлу становив 0 байтів',
+    'do_backup' => 'Створити резервну копію',
+    'backup_successful' => 'Резервне копіювання бази даних вдало завершено.',
+    'db_explanation' => 'Щоб створити нову резервну копію бази даних вашого сайту, клацніть нижче',
+    'not_found' => "Неправильний шлях або утиліта mysqldump не виконується.<br>Перевірте змінну <strong>\$_DB_mysqldump_path</strong> у файлі config.php.<br>Її теперішнє значення: <var>{$_DB_mysqldump_path}</var>",
+    'zero_size' => 'Помилка резервного копіювання: Розмір файла 0 байт',
     'path_not_found' => "{$_CONF['backup_path']} не існує або не є каталогом",
-    'no_access' => "ПОМИЛКА: Каталог {$_CONF['backup_path']} недоступний.",
+    'no_access' => "Помилка: каталог {$_CONF['backup_path']} недоступний.",
     'backup_file' => 'Файл резервної копії',
     'size' => 'Розмір',
-    'bytes' => 'Байтів',
-    'total_number' => 'Загальна кількість резервних копій: %d'
+    'bytes' => 'Байт',
+    'total_number' => 'Всього резервних копій: %d'
 );
 
 ###############################################################################
 
 $LANG_BUTTONS = array(
-    1 => 'Домівка',
-    2 => 'Contact',
-    3 => 'Опублікуватись',
-    4 => 'Посилання',
-    5 => 'Опитування',
-    6 => 'Календар',
-    7 => 'Статистика сайту',
-    8 => 'Personalize',
-    9 => 'Шукати',
-    10 => 'складний пошук',
-    11 => 'Directory'
+    1 => 'Додому',
+    2 => 'Контакт',
+    3 => 'Опублікувати',
+    4 => '',
+    5 => '',
+    6 => '',
+    7 => 'Статистика',
+    8 => 'Вигляд',
+    9 => 'Пошук',
+    10 => 'розширений пошук',
+    11 => 'Архів'
 );
 
 ###############################################################################
@@ -1266,16 +1251,16 @@
 
 $LANG_404 = array(
     1 => 'Помилка 404',
-    2 => 'Бачте, ми дивилися всюди, та не змогли відшукати <b>%s</b>.',
-    3 => "<p>Просимо пробачення, однак запитаний вами файл не існує. Будь ласка, перевірте <a href=\"{$_CONF['site_url']}\">головну сторінку</a> або <a href=\"{$_CONF['site_url']}/search.php\">сторінку пошуку</a>, щоб побачити, чи знайдеться те, що ви шукаєте."
+    2 => 'Вибачте, я дивився скрізь, але не можу знайти <b>%s</b>.',
+    3 => "<p>Нам шкода, але файл, який вам потрібен, не існує. Будь-ласка, перевірте <a href=\"{$_CONF['site_url']}\">головну сторінку</a> або <a href=\"{$_CONF['site_url']}/search.php\">сторінку пошуку</a> щоб спробувати знайти потрібну інформацію."
 );
 
 ###############################################################################
 # login form
 
 $LANG_LOGIN = array(
-    1 => 'Вимагається реєстрація',
-    2 => 'Вибачте, для доступу сюди необхідно зареєструватись як користувач.',
+    1 => 'Вхід обов\'язковий',
+    2 => 'Вибачте, щоб мати доступ до цієї області, вам потрібно зареєструватися.',
     3 => 'Увійти',
     4 => 'Новий користувач'
 );
@@ -1284,117 +1269,118 @@
 # pdfgenerator.php
 
 $LANG_PDF = array(
-    1 => 'Функціональність PDF вимкнено',
-    2 => 'Наданий документ не відтворено. Документ було прийнято, однак не вдалось обробити. Впевніться, що ви відсилаєте лише документи в форматі HTML, що відповідають стандартові xHTML. Зауважте, що занадто складні документи html можуть відтворитись неправильно, а то й зовсім не відтворитись. Документ, що створився в результаті вашої спроби, мав довжину 0 байтів та був видалений. Якщо ви впевнені, що документ повинен відтворитись без проблем, будь ласка, вишліть його ще раз.',
-    3 => 'Невідома помилка при створенні PDF',
-    4 => 'Не подано даних про сторінку, або ж ви бажаєте скористатись інструментом ad-hoc для створення PDF, що нижче. Якщо ви вважаєте, що потрапили на цю сторінку помилково, зв\'яжіться з системним адміністратором. В іншому випадку можете скористатись нижчеподаною формою для створення PDF способом ad-hoc.',
-    5 => 'Завантажується ваш документ.',
-    6 => 'Будь ласка, зачекайте, доки ваш документ завантажиться.',
-    7 => 'Для збереження примірника вашого документу можете клацнути правою кнопкою миші на кнопці, що нижче, й вибрати з контекстного меню &laquo;Зберегти посилання...&raquo;',
-    8 => 'Поданий у конфігураційному файлі шлях до двійкового файлу HTMLDoc непримустимий, або ця система не може його виконати. Будь ласка, зверніться до системного адміністратора, якщо проблема не зникає.',
-    9 => 'Створювач PDF',
-    10 => 'Це &mdash; інструмент  Ad-hoc для створення PDF. Він намагається перетворити документ з будь-якого поданого URL в формат PDF. Будь ласка, зауважте, що не кожна сторінка Тенет зможе правильно відтворитись за допомогою цього знаряддя. Це є обмеженням інструменту для створення PDF HTMLDoc, і про такі помилки не слід звітувати адміністраторам цього сайту',
+    1 => 'Функцію PDF відключено',
+    2 => 'Рендерінг документу не відбувся. Документ було отримано, але обробка не завершилась.  Будь-ласка, надсилайте документи лише у форматі html, написані за стандартом xHTML. Майте на увазі, що дуже складні документи можуть обробитись з помилками або взагалі не обробитись. Документ із вашої спроби мав 0 байтів у довжину, тому його було знищено. Якщо ви впевнені, що ваш документ повинен обробитись правильно, будь-ласка перешліть його.',
+    3 => 'Невідома помилка під час генерації PDF',
+    4 => 'Не надано даних про сторінку, можливо ви хочете використати ad-hoc PDF.  Якщо ви вважаєте, що отримали це повідомлення помилково, зверніться до адміністратора сайту.  В іншому разі ви можете скористатися формою внизу для генерації PDF в режимі ad-hoc.',
+    5 => 'Завантажую ваш документ.',
+    6 => 'Будь-ласка, зачекайте доки ваш документ завантажиться.',
+    7 => 'Ви можете натиснути правою кнопкою мишки внизу і обрати \'зберегти посилання...\', щоб зберегти копію вашого документу.',
+    8 => 'Шлях до програми HTMLDoc, вказаний в конфігураційному файлі, неправильний або ця система не в змозі її запустити.  Будь-ласка, зверніться до адміністратора сайту.',
+    9 => 'Генератор PDF',
+    10 => 'Це інструмент для генерування Ad-hoc PDF. Він спробує перетворити URL, який ви вкажете,на PDF файл.  Майте на увазі, що деякі веб-сторінки можуть бути оьроьлені з помилками.  Це обмеження програми HTMLDoc, і про такі помилки не потрібно доповідати адміністраторам сайту',
     11 => 'URL',
-    12 => 'Створити PDF!',
-    13 => 'Налаштування PHP на цьому сервері не дозволяють URL у команді fopen(). Системний адміністратор повинен виправити файл php.ini, встановивши allow_url_fopen в значення On',
-    14 => 'Файл PDF, котрий ви запитуєте, або не існує, або ж ви вчинили спробу неправомірного доступу до файлу.'
+    12 => 'Згенерувати PDF!',
+    13 => 'Конвігурація PHP на цьому сервері не дозволяє використання URL-ів через команду fopen().  Адміністратор системи повинен відредагувати файл php.ini і встановити allow_url_fopen в значення On',
+    14 => 'PDF, який вам потрібен або не існує, або ви намагалися незаконно отримати доступ до файлу.'
 );
 
 ###############################################################################
 # trackback.php
 
 $LANG_TRB = array(
-    'trackback' => 'Trackback',
-    'from' => 'from',
-    'tracked_on' => 'Tracked on',
-    'read_more' => '[read more]',
-    'intro_text' => 'Here\'s what others have to say about \'%s\':',
-    'no_comments' => 'No trackback comments for this entry.',
-    'this_trackback_url' => 'Trackback URL for this entry:',
-    'num_comments' => '%d trackback comments',
-    'send_trackback' => 'Send Pings',
-    'preview' => 'Preview',
-    'editor_title' => 'Send trackback comment',
-    'trackback_url' => 'Trackback URL',
-    'entry_url' => 'Entry URL',
-    'entry_title' => 'Entry Title',
-    'blog_name' => 'Site Name',
-    'excerpt' => 'Excerpt',
-    'truncate_warning' => 'Note: The receiving site may truncate your excerpt',
-    'button_send' => 'Send',
-    'button_preview' => 'Preview',
-    'send_error' => 'Error',
-    'send_error_details' => 'Error when sending trackback comment:',
-    'url_missing' => 'No Entry URL',
-    'url_required' => 'Please enter at least a URL for the entry.',
-    'target_missing' => 'No Trackback URL',
-    'target_required' => 'Please enter a trackback URL',
-    'error_socket' => 'Could not open socket.',
-    'error_response' => 'Response not understood.',
-    'error_unspecified' => 'Unspecified error.',
-    'select_url' => 'Select Trackback URL',
-    'not_found' => 'Trackback URL not found',
-    'autodetect_failed' => 'Geeklog could not detect the Trackback URL for the post you want to send your comment to. Please enter it manually below.',
-    'trackback_explain' => 'From the links below, please select the URL you want to send your Trackback comment to. Geeklog will then try to determine the correct Trackback URL for that post. Or you can <a href="%s">enter it manually</a> if you know it already.',
-    'no_links_trackback' => 'No links found. You can not send a Trackback comment for this entry.',
-    'pingback' => 'Pingback',
-    'pingback_results' => 'Pingback results',
-    'send_pings' => 'Send Pings',
-    'send_pings_for' => 'Send Pings for "%s"',
-    'no_links_pingback' => 'No links found. No Pingbacks were sent for this entry.',
-    'pingback_success' => 'Pingback sent.',
-    'no_pingback_url' => 'No pingback URL found.',
-    'resend' => 'Resend',
-    'ping_all_explain' => 'You can now notify the sites you linked to (<a href="http://en.wikipedia.org/wiki/Pingback">Pingback</a>), advertise that your site has been updated by pinging weblog directory services, or send a <a href="http://en.wikipedia.org/wiki/Trackback">Trackback</a> comment in case you wrote about a post on someone else\'s site.',
-    'pingback_button' => 'Send Pingback',
-    'pingback_short' => 'Send Pingbacks to all sites linked from this entry.',
-    'pingback_disabled' => '(Pingback disabled)',
-    'ping_button' => 'Send Ping',
-    'ping_short' => 'Ping weblog directory services.',
-    'ping_disabled' => '(Ping disabled)',
-    'trackback_button' => 'Send Trackback',
-    'trackback_short' => 'Send a Trackback comment.',
-    'trackback_disabled' => '(Trackback disabled)',
-    'may_take_a_while' => 'Please note that sending Pingbacks and Pings may take a while.',
-    'ping_results' => 'Ping results',
-    'unknown_method' => 'Unknown ping method',
-    'ping_success' => 'Ping sent.',
-    'error_site_name' => 'Please enter the site\'s name.',
-    'error_site_url' => 'Please enter the site\'s URL.',
-    'error_ping_url' => 'Please enter a valid Ping URL.',
-    'no_services' => 'No weblog directory services configured.',
-    'services_headline' => 'Weblog Directory Services',
-    'service_explain' => 'To modify or delete a weblog directory service, click on the edit icon of that service below. To add a new weblog directory service, click on "Create New" above.',
-    'service' => 'Service',
-    'ping_method' => 'Ping method',
-    'service_website' => 'Website',
-    'service_ping_url' => 'URL to ping',
-    'ping_standard' => 'Standard Ping',
-    'ping_extended' => 'Extended Ping',
-    'ping_unknown' => '(unknown method)',
-    'edit_service' => 'Edit Weblog Directory Service',
-    'trackbacks' => 'Trackbacks',
-    'editor_intro' => 'Prepare your trackback comment for <a href="%s">%s</a>.',
-    'editor_intro_none' => 'Prepare your trackback comment.',
-    'trackback_note' => 'To send a trackback comment for a story, go to the list of stories and click on "Send Ping" for the story. To send a trackback that is not related to a story, <a href="%s">click here</a>.',
-    'pingback_explain' => 'Enter a URL to send the Pingback to. The pingback will point to your site\'s homepage.',
-    'pingback_url' => 'Pingback URL',
-    'site_url' => 'This site\'s URL',
-    'pingback_note' => 'To send a pingback for a story, go to the list of stories and click on "Send Ping" for the story. To send a pingback that is not related to a story, <a href="%s">click here</a>.',
-    'pbtarget_missing' => 'No Pingback URL',
-    'pbtarget_required' => 'Please enter a pingback URL',
-    'pb_error_details' => 'Error when sending the pingback:'
+    'trackback' => 'Трекбек',
+    'from' => 'від',
+    'tracked_on' => 'Простежено на',
+    'read_more' => '[читати далі]',
+    'intro_text' => 'Ось що інші мають сказати про \'%s\':',
+    'no_comments' => 'Немає трекбек-коментарів для цього запису.',
+    'this_trackback_url' => 'Трекбек-URL для цього запису:',
+    'num_comments' => '%d трекбек-коментарів',
+    'send_trackback' => 'Надіслати пінг',
+    'preview' => 'Перегляд',
+    'editor_title' => 'Надіслати трекбек-коментар',
+    'trackback_url' => 'Трекбек-URL',
+    'entry_url' => 'URL запису',
+    'entry_title' => 'Заголовок запису',
+    'blog_name' => 'Назва сайту',
+    'excerpt' => 'Витяг',
+    'truncate_warning' => 'Увага: Сайт-отримувач може скоротити ваш витяг',
+    'button_send' => 'Надіслати',
+    'button_preview' => 'Перегляд',
+    'send_error' => 'Помилка',
+    'send_error_details' => 'Помилка під час відправлення трекбек-коментаря:',
+    'url_missing' => 'Немає URL запису',
+    'url_required' => 'Будь-ласка, введіть хоча б URL для запису.',
+    'target_missing' => 'Немає трекбек-URL',
+    'target_required' => 'Будь-ласка, введіть трекбек-URL',
+    'error_socket' => 'Не вийшло відкрити сокет.',
+    'error_response' => 'Відповідь незрозуміла.',
+    'error_unspecified' => 'Невизначена помилка.',
+    'select_url' => 'Обрати трекбек-URL',
+    'not_found' => 'трекбек-URL не знайдено',
+    'autodetect_failed' => 'Geeklog не зміг визначити трекбек-URL для поста, до якого ви хочете надіслати коментар. Будь-ласка, введіть його вручну нижче.',
+    'trackback_explain' => 'З посилань нижче, оберіть URL на який ви хочете відіслати ваш трекбек-коментар. Geeklog спробує визначити правильний трекбек-URL для цього поста. Або ви можете <a href="%s">ввести його вручну,</a> якщо уже знаєте його.',
+    'no_links_trackback' => 'Посилань не знайдено. Ви не можете відправляти трекбек-коментар для цього запису.',
+    'pingback' => 'Пінгбек',
+    'pingback_results' => 'Результати пінгбеку',
+    'send_pings' => 'Надіслати пінги',
+    'send_pings_for' => 'Надіслати пінги для "%s"',
+    'no_links_pingback' => 'Посилань не знайдено. Для цього запису не було відправлено пінгбеків.',
+    'pingback_success' => 'Пінгбек відправлено.',
+    'no_pingback_url' => 'Не знайдено пінгбек-URL.',
+    'resend' => 'Переслати',
+    'ping_all_explain' => 'Ви тепер можете повідомляти сайти, на які посилались (<a href="http://en.wikipedia.org/wiki/Pingback">Пінгбек</a>), що вас сайт оновився пінгуючи служби веблогів, або надсилати <a href="http://en.wikipedia.org/wiki/Trackback">Трекбек</a>-коментар, якщо ви написали про пост на іншому сайті.',
+    'pingback_button' => 'Надіслати пінгбек',
+    'pingback_short' => 'Надіслати пінгбеки на всі сайти, на які посилається цей запис.',
+    'pingback_disabled' => '(Пінгбек вимкнено)',
+    'ping_button' => 'Надіслати пінг',
+    'ping_short' => 'Пінг служб веблогів.',
+    'ping_disabled' => '(Пінг вимкнено)',
+    'trackback_button' => 'Надіслати трекбек',
+    'trackback_short' => 'Надіслати трекбек-коментар.',
+    'trackback_disabled' => '(Трекбек вимкнено)',
+    'may_take_a_while' => 'Зауважте, що надсилання пінгів та пінгбеків займає певний час.',
+    'ping_results' => 'Результати пінгу',
+    'unknown_method' => 'Невідомий метод пінгу',
+    'ping_success' => 'Пінг надіслано.',
+    'error_site_name' => 'Будь-ласка, введіть назву сайту.',
+    'error_site_url' => 'Будь-ласка, введіть URL сайту.',
+    'error_ping_url' => 'Будь-ласка, введіть правильний пінг-URL.',
+    'no_services' => 'Не сконфігуровано жодних служб веблогів.',
+    'services_headline' => 'Служби веблогів',
+    'service_explain' => 'Щоб змінити чи вилучити службу, натисніть її іконку нижче. Щоб додати нову службу, натисніть "Створити нове" вгорі.',
+    'service' => 'Служба',
+    'ping_method' => 'Метод пнгу',
+    'service_website' => 'Вебсайт',
+    'service_ping_url' => 'Пінгувати URL',
+    'ping_standard' => 'Стандартний пінг',
+    'ping_extended' => 'Розширений пінг',
+    'ping_unknown' => '(невідомий метод)',
+    'edit_service' => 'Редагувати службу веблогів',
+    'trackbacks' => 'Трекбеки',
+    'editor_intro' => 'Підготувати ваш трекбек-коментар для <a href="%s">%s</a>.',
+    'editor_intro_none' => 'Підготувати ваш трекбек-коментар.',
+    'trackback_note' => 'Щоб надіслати трекбек-коментар для статті, перейдіть до списку статей і натисніть "Надіслати пінг" біля статті. Щоб відправити трекбек, не пов\'язаний зі статтею, натисніть <a href="%s">тут</a>.',
+    'pingback_explain' => 'Введіть URL, на який потрібно надіслати пінгбек. Пінгбек буде вказувати на головну сторінку вашого сайту.',
+    'pingback_url' => 'Пінгбек-URL',
+    'site_url' => 'URL цього сайту',
+    'pingback_note' => 'Щоб надіслати пінгбек для статті, перейдіть до списку статей і натисніть "Надіслати пінг" біля статті. Щоб відправити пінгбек, не пов\'язаний зі статтею, натисніть <a href="%s">тут</a>.',
+    'pbtarget_missing' => 'Немає пінгбек-URL',
+    'pbtarget_required' => 'Будь-ласка, введіть пінгбек-URL',
+    'pb_error_details' => 'Помилка під час відправлення пінгбека:',
+    'delete_trackback' => 'Щоб вилучити цей трекбек, натисніть: '
 );
 
 ###############################################################################
 # directory.php
 
 $LANG_DIR = array(
-    'title' => 'Article Directory',
-    'title_year' => 'Article Directory for %d',
-    'title_month_year' => 'Article Directory for %s %d',
-    'nav_top' => 'Back to Article Directory',
-    'no_articles' => 'No articles.'
+    'title' => 'Архів статей',
+    'title_year' => 'Архів статей за %d',
+    'title_month_year' => 'Архів статей за %s %d',
+    'nav_top' => 'Назад до Архіву статей',
+    'no_articles' => 'Немає статей.'
 );
 
 ###############################################################################
@@ -1408,18 +1394,49 @@
 # %s    scale, "hrs", "weeks"
 
 $LANG_WHATSNEW = array(
-    'new_string' => '%n new %i in the last %t %s',
-    'new_last' => 'last %t %s',
-    'minutes' => 'minutes',
-    'hours' => 'hours',
-    'days' => 'days',
-    'weeks' => 'weeks',
-    'months' => 'months',
-    'minute' => 'minute',
-    'hour' => 'hour',
-    'day' => 'day',
-    'week' => 'week',
-    'month' => 'month'
+    'new_string' => '%n нових %i за останні %t %s',
+    'new_last' => 'останні %t %s',
+    'minutes' => 'хвилин',
+    'hours' => 'годин',
+    'days' => 'днів',
+    'weeks' => 'тижнів',
+    'months' => 'місяців',
+    'minute' => 'хвилина',
+    'hour' => 'година',
+    'day' => 'день',
+    'week' => 'тиждень',
+    'month' => 'місяць'
+);
+
+###############################################################################
+# Month names
+
+$LANG_MONTH = array(
+    1 => 'Січень',
+    2 => 'Лютий',
+    3 => 'Березень',
+    4 => 'Квітень',
+    5 => 'Травень',
+    6 => 'Червень',
+    7 => 'Липень',
+    8 => 'Серпень',
+    9 => 'Вересень',
+    10 => 'Жовтень',
+    11 => 'Листопад',
+    12 => 'Грудень'
+);
+
+###############################################################################
+# Weekdays
+
+$LANG_WEEK = array(
+    1 => 'Неділя',
+    2 => 'Понеділок',
+    3 => 'Вівторок',
+    4 => 'Середа',
+    5 => 'Четвер',
+    6 => 'П\'ятниця',
+    7 => 'Субота'
 );
 
 ###############################################################################
@@ -1429,23 +1446,28 @@
 # display administration lists and edit pages
 
 $LANG_ADMIN = array(
-    'search' => 'Search',
-    'limit_results' => 'Limit Results',
-    'submit' => 'Submit',
-    'edit' => 'Edit',
-    'admin_home' => 'Admin Home',
-    'create_new' => 'Create New',
-    'enabled' => 'Enabled',
-    'title' => 'Title',
-    'type' => 'Type',
-    'topic' => 'Topic',
-    'help_url' => 'Help File URL',
-    'save' => 'Save',
-    'cancel' => 'Cancel',
-    'delete' => 'Delete',
-    'copy' => 'Copy',
-    'no_results' => '- No entries found -',
-    'data_error' => 'There was an error processing the subscription data. Please check the data source.'
+    'search' => 'Пошук',
+    'limit_results' => 'Обмежити результати',
+    'submit' => 'Надіслати',
+    'edit' => 'Редагувати',
+    'edit_adv' => 'Adv. Edit',
+    'admin_home' => 'Адміністрування',
+    'create_new' => 'Створити нове',
+    'create_new_adv' => 'Create New (Adv.)',
+    'enabled' => 'Дозволено',
+    'title' => 'Заголовок',
+    'type' => 'Тип',
+    'topic' => 'Тема',
+    'help_url' => 'URL файла довідки',
+    'save' => 'Зберегти',
+    'cancel' => 'Скасувати',
+    'delete' => 'Вилучити',
+    'delete_sel' => 'Delete selected',
+    'copy' => 'Копіювати',
+    'no_results' => '- Не знайдено записів -',
+    'data_error' => 'Під час обробки даних сталася помилка. Будь-ласка, перевірте ваші дані.',
+    'preview' => 'Попередній перегляд',
+    'records_found' => 'Знайдено записи'
 );
 
 ###############################################################################
@@ -1454,56 +1476,56 @@
 # database.
 
 $LANG_commentcodes = array(
-    0 => 'Comments Enabled',
-    -1 => 'Comments Disabled'
+    0 => 'Коментарі дозволено',
+    -1 => 'Коментарі заборонено'
 );
 
 
 $LANG_commentmodes = array(
-    'flat' => 'Flat',
-    'nested' => 'Nested',
-    'threaded' => 'Threaded',
-    'nocomment' => 'No Comments'
+    'flat' => 'Звичайний',
+    'nested' => 'Ієрархічний',
+    'threaded' => 'Нитковидний',
+    'nocomment' => 'Без коментарів'
 );
 
 $LANG_cookiecodes = array(
-    0 => '(don\'t)',
-    3600 => '1 Hour',
-    7200 => '2 Hours',
-    10800 => '3 Hours',
-    28800 => '8 Hours',
-    86400 => '1 Day',
-    604800 => '1 Week',
-    2678400 => '1 Month'
+    0 => '(не треба)',
+    3600 => '1 година',
+    7200 => '2 години',
+    10800 => '3 години',
+    28800 => '8 годин',
+    86400 => '1 день',
+    604800 => '1 тиждень',
+    2678400 => '1 місяць'
 );
 
 $LANG_dateformats = array(
-    0 => 'System Default'
+    0 => 'Системний'
 );
 
 $LANG_featurecodes = array(
-    0 => 'Not Featured',
-    1 => 'Featured'
+    0 => 'Звичайна',
+    1 => 'Головна'
 );
 
 $LANG_frontpagecodes = array(
-    0 => 'Show Only in Topic',
-    1 => 'Show on Front Page'
+    0 => 'Показувати лише в темі',
+    1 => 'Показувати на головній'
 );
 
 $LANG_postmodes = array(
-    'plaintext' => 'Plain Old Text',
-    'html' => 'HTML Formatted'
+    'plaintext' => 'Простий текст',
+    'html' => 'Форматування HTML'
 );
 
 $LANG_sortcodes = array(
-    'ASC' => 'Oldest First',
-    'DESC' => 'Newest First'
+    'ASC' => 'Спочатку старші',
+    'DESC' => 'Спочатку новіші'
 );
 
 $LANG_trackbackcodes = array(
-    0 => 'Trackback Enabled',
-    -1 => 'Trackback Disabled'
+    0 => 'Трекбек увімкнено',
+    -1 => 'Трекбек вимкнено'
 );
 
 ?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/config.php 1.4.1.src/cpanel-glprivate/plugins/calendar/config.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/config.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/config.php	2006-09-03 16:08:03.000000000 -0500
@@ -0,0 +1,90 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Calendar Plugin 1.0                                                       |
+// +---------------------------------------------------------------------------+
+// | config.php                                                                |
+// |                                                                           |
+// | Calendar plugin configuration file                                        |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2000-2006 by the following authors:                         |
+// |                                                                           |
+// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
+// |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
+// |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
+// |          Dirk Haun         - dirk AT haun-online DOT de                   |
+// |          Trinity Bays      - trinity93 AT steubentech DOT com             |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is free software; you can redistribute it and/or             |
+// | modify it under the terms of the GNU General Public License               |
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
+// | GNU General Public License for more details.                              |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+// $Id: config.php,v 1.8 2006/09/03 21:08:03 dhaun Exp $
+
+$_CA_CONF['version']            = '1.0.0'; // Plugin Version
+
+// Calendar Settings
+
+// when set to 1 will only allow logged-in users to view the list of past events
+// (also see $_CONF['loginrequired'] in Geeklog's config.php)
+$_CA_CONF['calendarloginrequired']   = 0;
+
+// enable (set to 1) or disable (set to 0) submission queues:
+$_CA_CONF['eventsubmission'] = 1;
+
+/**
+ * Set to 1 to hide the "Calendar" entry from the top menu:
+ * 
+ * @global array $_CA_CONF['hidecalendarmenu']
+ */
+$_CA_CONF['hidecalendarmenu']    = 0;
+
+// Calendar Settings
+$_CA_CONF['personalcalendars']     = 1;
+$_CA_CONF['showupcomingevents']    = 1;
+$_CA_CONF['upcomingeventsrange']   = 14; // days
+$_CA_CONF['event_types']           = "Anniversary,Appointment,Birthday,Business,"
+                                    ."Education,Holiday,Meeting,Miscellaneous,"
+                                    ."Personal,Phone Call,Special Occasion,"
+                                    ."Travel,Vacation";
+
+// Whether to use 12 hour (am/pm) or 24 hour mode
+$_CA_CONF['hour_mode'] = $_CONF['hour_mode']; // 12 hour am/pm or 24 hour format
+
+// notify when a new event was submitted for the site calendar (when set = 1)
+$_CA_CONF['notification'] = 0;
+
+// When a user is deleted, ownership of events created by that user can
+// be transfered to a user in the Root group (= 0) or the events can be
+// deleted (= 1).
+$_CA_CONF['delete_event'] = 0;
+
+// Define default permissions for new events created from the Admin panel.
+// Permissions are perm_owner, perm_group, perm_members, perm_anon (in that
+// order). Possible values:
+// 3 = read + write permissions (perm_owner and perm_group only)
+// 2 = read-only
+// 0 = neither read nor write permissions
+// (a value of 1, ie. write-only, does not make sense and is not allowed)
+$_CA_CONF['default_permissions'] = array (3, 2, 2, 2);
+
+// database table names - don't change
+$_TABLES['events']              = $_DB_table_prefix . 'events';
+$_TABLES['eventsubmission']     = $_DB_table_prefix . 'eventsubmission';
+$_TABLES['personal_events']     = $_DB_table_prefix . 'personal_events';
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/functions.inc 1.4.1.src/cpanel-glprivate/plugins/calendar/functions.inc
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/functions.inc	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/functions.inc	2006-12-21 09:44:21.000000000 -0600
@@ -0,0 +1,1649 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Calendar Plugin 1.0                                                       |
+// +---------------------------------------------------------------------------+
+// | functions.inc                                                             |
+// |                                                                           |
+// | This file does two things: 1) it implements the necessary Geeklog Plugin  |
+// | API method and 2) implements all the common code needed by the CAlendar   |
+// | plugin' PHP files.                                                        |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2000-2006 by the following authors:                         |
+// |                                                                           |
+// | Authors: Tony Bibbs       - tony AT tonybibbs DOT com                     |
+// |          Tom Willett      - twillett AT users DOT sourceforge DOT net     |
+// |          Blaine Lang      - langmail AT sympatico DOT ca                  |
+// |          Dirk Haun        - dirk AT haun-online DOT de                    |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is free software; you can redistribute it and/or             |
+// | modify it under the terms of the GNU General Public License               |
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
+// | GNU General Public License for more details.                              |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+// $Id: functions.inc,v 1.61 2006/12/18 06:45:37 ospiess Exp $
+
+if (strpos ($_SERVER['PHP_SELF'], 'functions.inc') !== false) {
+    die ('This file can not be used on its own.');
+}
+
+$langfile = $_CONF['path'] . 'plugins/calendar/language/'
+          . $_CONF['language'] . '.php';
+
+if (file_exists ($langfile)) {
+    require_once ($langfile);
+} else {
+    require_once ($_CONF['path'] . 'plugins/calendar/language/english.php');
+}
+
+require_once ($_CONF['path'] . 'plugins/calendar/config.php');
+
+
+/**
+* Returns the items for this plugin that should appear on the main menu
+*
+* NOTE: this MUST return the url/value pairs in the following format
+* $<arrayname>[<label>] = <url>
+*
+*/
+function plugin_getmenuitems_calendar ()
+{
+    global $_CONF, $_USER, $_CA_CONF, $LANG_CAL_1;
+
+    $anon = (empty ($_USER['uid']) || ($_USER['uid'] <= 1)) ? true : false;
+    if (($_CA_CONF['hidecalendarmenu'] == 1) || ($anon &&
+            ($_CONF['loginrequired'] || $_CA_CONF['calendarloginrequired']))) {
+        return false;
+    }
+
+    $menuitems[$LANG_CAL_1[16]] = $_CONF['site_url'] . '/calendar/index.php';
+
+    return $menuitems;
+}
+
+/**
+* Returns the upcoming events block
+*
+* Returns the HTML for any upcoming events in the calendar
+*
+* @param        string      $help       Help file for block
+* @param        string      $title      Title to be used in block header
+* @return   string  HTML formatted block containing events.
+*/
+function phpblock_calendar( $help='', $title='' )
+{
+    global $_CONF, $_TABLES, $_USER, $_CA_CONF, $LANG_CAL_1;
+
+    $retval = '';
+
+    if( !$_USER['noboxes'] && $_CA_CONF['showupcomingevents'] ) {
+        $range = $_CA_CONF['upcomingeventsrange'];
+        if( $range == 0 ) {
+            $range = 14; // fallback: 14 days
+        }
+        $dateonly = $_CONF['dateonly'];
+        if( empty( $dateonly )) {
+            $dateonly = '%d-%b'; // fallback: day - abbrev. month name
+        }
+
+        if( empty( $title )) {
+            $title = DB_getItem( $_TABLES['blocks'], 'title',
+                                 "name = 'events_block'" );
+        }
+
+        $eventSql = 'SELECT eid,title,url,datestart,dateend,group_id,owner_id,perm_owner,perm_group,perm_members,perm_anon '
+        . "FROM {$_TABLES['events']} "
+        . "WHERE dateend >= NOW() AND (TO_DAYS(datestart) - TO_DAYS(NOW()) < $range) "
+        . 'ORDER BY datestart,timestart';
+
+        if(( $_CA_CONF['personalcalendars'] == 1 ) && !empty( $_USER['uid'] )) {
+            $personaleventsql = 'SELECT eid,title,url,datestart,dateend,group_id,owner_id,perm_owner,perm_group,perm_members,perm_anon '
+            . "FROM {$_TABLES['personal_events']} "
+            . "WHERE uid = {$_USER['uid']} AND dateend >= NOW() AND (TO_DAYS(datestart) - TO_DAYS(NOW()) < $range) "
+            . 'ORDER BY datestart, dateend';
+        }
+
+        $allEvents = DB_query( $eventSql );
+        $numRows = DB_numRows( $allEvents );
+        $totalrows = $numRows;
+
+        $numDays = 0;          // Without limits, I'll force them.
+        $theRow = 1;           // Start with today!
+        $oldDate1 = 'no_day';  // Invalid Date!
+        $oldDate2 = 'last_d';  // Invalid Date!
+
+        if( $_CA_CONF['personalcalendars'] == 1 AND !empty( $_USER['uid'] )) {
+            $iterations = 2;
+        } else {
+            $iterations = 1;
+        }
+
+        $eventsFound = 0;
+        $skipFirstBreak = false;
+
+        for( $z = 1; $z <= $iterations; $z++ ) {
+            if( $z == 2 ) {
+                $allEvents = DB_query( $personaleventsql );
+                $numRows = DB_numRows( $allEvents );
+                $totalrows = $totalrows + $numRows;
+
+                $numDays = 0;          // Without limits, I'll force them.
+                $theRow = 1;           // Start with today!
+                $oldDate1 = 'no_day';  // Invalid Date!
+                $oldDate2 = 'last_d';  // Invalid Date!
+                $classname = 'list-new-plugins';
+                $headline = false;
+            } else {
+                $classname = 'list-new-plugins';
+                $headline = false;
+            }
+            if( $_CA_CONF['personalcalendars'] == 0 ) {
+                $headline = true; // no headline needed
+                $skipFirstBreak = true;
+            }
+
+            while( $theRow <= $numRows AND $numDays < $range ) {
+                // Retreive the next event, and format the start date.
+                $theEvent = DB_fetchArray( $allEvents );
+
+                if( SEC_hasAccess( $theEvent['owner_id'], $theEvent['group_id'],
+                                   $theEvent['perm_owner'], $theEvent['perm_group'],
+                                   $theEvent['perm_members'], $theEvent['perm_anon'] ) > 0 ) {
+                    $eventsFound++;
+
+                    if( !$headline ) {
+                        if($z == 2) {
+                            if( $numRows > 0 ) {
+                                $retval .= '<p><b>' . $LANG_CAL_1[23] . '</b><br>';
+                            }
+                        } else {
+                            if( $totalrows > 0 ) {
+                                $retval .= '<b>' . $LANG_CAL_1[24] . '</b><br>';
+                            }
+                        }
+                        $headline = true;
+                    }
+
+                    // Start Date strings...
+                    $startDate = $theEvent['datestart'];
+                    $theTime1 = strtotime( $startDate );
+                    $dayName1 = strftime( '%A', $theTime1 );
+                    $abbrDate1 = strftime( $dateonly, $theTime1 );
+
+                    // End Date strings...
+                    $endDate = $theEvent['dateend'];
+                    $theTime2 = strtotime( $endDate );
+                    $dayName2 = strftime( '%A', $theTime2 );
+                    $abbrDate2 = strftime( $dateonly, $theTime2 );
+
+                    $todaysEvent = false;
+                    if( date( 'Ymd', $theTime1 ) == date( 'Ymd', time())) {
+                        $todaysEvent = true;
+                        if( $z == 2 ) {
+                            $todaysClassName = 'personal-event-today';
+                        } else {
+                            $todaysClassName = 'site-event-today';
+                        }
+                    }
+
+                    // If either of the dates [start/end] change, then display a new header.
+                    if( $oldDate1 != $abbrDate1 OR $oldDate2 != $abbrDate2 ) {
+                        $oldDate1 = $abbrDate1;
+                        $oldDate2 = $abbrDate2;
+                        $numDays ++;
+
+                        if( $numDays < $range ) {
+                            if( !empty( $newevents )) {
+                                 $retval .= COM_makeList( $newevents, $classname );
+                            }
+                            if( $skipFirstBreak ) {
+                                $skipFirstBreak = false;
+                            } else {
+                                $retval .= '<br>';
+                            }
+                            if( $todaysEvent ) {
+                                $retval .= '<span class="' . $todaysClassName . '">';
+                            }
+                            $retval .= '<b>' . $dayName1 . '</b>&nbsp;<small>'
+                                    . $abbrDate1 . '</small>';
+
+                            // If different start and end dates, then display end date:
+                            if( $abbrDate1 != $abbrDate2 ) {
+                                $retval .= ' - <br><b>' . $dayName2 . '</b>&nbsp;<small>' . $abbrDate2 . '</small>';
+                            }
+                            if( $todaysEvent ) {
+                                $retval .= '</span>';
+                            }
+                        }
+                        $newevents = array();
+                    }
+
+                    // Now display this event record.
+                    if( $numDays < $range ) {
+                        // Display the url now!
+                        $newevent = '<a href="' . $_CONF['site_url']
+                                  . '/calendar/event.php?';
+
+                        if( $z == 2 ) {
+                            $newevent .= 'mode=personal&amp;';
+                        }
+
+                        $newevent .= 'eid=' . $theEvent['eid'] . '"';
+                        if( $todaysEvent ) {
+                            $newevent .= ' class="' . $todaysClassName . '"';
+                        }
+                        $newevent .= '>' . stripslashes( $theEvent['title'] )
+                                  . '</a>';
+                        $newevents[] = $newevent;
+                    }
+
+                    if( !empty( $newevents )) {
+                        $retval .= COM_makeList( $newevents, $classname );
+                        $newevents = array();
+                    }
+                }
+                $theRow++;
+            }
+        } // end for z
+
+        if( $eventsFound == 0 ) {
+            // There aren't any upcoming events, show a nice message
+            $retval .= $LANG_CAL_1[25];
+        }
+    }
+
+    return $retval;
+}
+
+/**
+*
+* Checks that the current user has the rights to moderate the
+* plugin, returns true if this is the case, false otherwise
+*
+* @return        boolean       Returns true if moderator
+*
+*/
+function plugin_ismoderator_calendar() {
+    return SEC_hasRights ('calendar.moderate');
+}
+
+/**
+* Returns SQL & Language texts to moderation.php
+*/
+function plugin_itemlist_calendar()
+{
+    global $_TABLES, $LANG_CAL_1;
+
+    if (plugin_ismoderator_calendar()) {
+        $plugin = new Plugin();
+        $plugin->submissionlabel = $LANG_CAL_1[19];
+        $plugin->submissionhelpfile = 'cceventsubmission.html';
+        $plugin->getsubmissionssql = "SELECT eid AS id,title,datestart as day,url "
+                                   . "FROM {$_TABLES['eventsubmission']} "
+                                   . "ORDER BY datestart ASC";
+        $plugin->addSubmissionHeading($LANG_CAL_1[20]);
+        $plugin->addSubmissionHeading($LANG_CAL_1[21]);
+        $plugin->addSubmissionHeading($LANG_CAL_1[22]);
+
+        return $plugin;
+    }
+}
+
+/**
+* returns list of moderation values
+*
+* The array returned contains (in order): the row 'id' label, main plugin
+* table, moderation fields (comma seperated), and plugin submission table
+*
+* @return       array        Returns array of useful moderation values
+*
+*/
+function plugin_moderationvalues_calendar()
+{
+    global $_TABLES;
+
+    return array (
+        'eid',
+        $_TABLES['events'],
+        "eid,title,description,location,address1,address2,city,state,zipcode,datestart,timestart,dateend,timeend,url",
+        $_TABLES['eventsubmission']
+    );
+}
+
+
+/**
+* Performs plugin exclusive work for items approved by moderation
+*
+* While moderation.php handles the actual move from linkssubmission
+* to links tables, within the function we handle all other approval
+* relate tasks
+*
+* @param      string       $id      Identifying string
+* @return     string       Any wanted HTML output
+*
+*/
+function plugin_moderationapprove_calendar ($id)
+{
+    global $_CA_CONF, $_GROUPS, $_TABLES, $_USER;
+
+    $A = array ();
+    SEC_setDefaultPermissions ($A, $_CA_CONF['default_permissions']);
+
+    // Since the eventsubmission table does not contain fields for the owner
+    // and group, we set those to the current user. Also set the default
+    // permissions as specified in the plugin's config.php
+    if (isset ($_GROUPS['Calendar Admin'])) {
+        $group_id = $_GROUPS['Calendar Admin'];
+    } else {
+        $group_id = SEC_getFeatureGroup ('calendar.moderate');
+    }
+    DB_query ("UPDATE {$_TABLES['events']} SET owner_id = '{$_USER['uid']}',"
+             ."group_id = '$group_id',perm_owner = {$A['perm_owner']}, "
+             ."perm_group = {$A['perm_group']}, perm_members = {$A['perm_members']},"
+             ."perm_anon = {$A['perm_anon']} WHERE eid = $id");
+}
+
+/**
+* Performs plugin exclusive work for items deleted by moderation
+*
+* While moderation.php handles the actual removal from <plugin>submission
+* table, within this function we handle all other deletion
+* relate tasks
+*
+* @param      string       $id      Identifying string
+* @return     string       Any wanted HTML output
+*
+*/
+function plugin_moderationdelete_calendar($id)
+{
+    global $_TABLES;
+
+    // these tables should not contain any rows with ml_id = $id
+    // this is done 'just in case'
+    DB_delete ($_TABLES['eventsubmission'], 'eid', $id);
+
+    return '';
+}
+
+/**
+* Check calendar submission form for missing fields
+* and Saves a calendar submission
+*
+* @param    array   $A  Data for that submission
+* @return   string      HTML redirect
+*
+*/
+function plugin_savesubmission_calendar($A)
+{
+    global $_CONF, $_CA_CONF, $_TABLES, $_USER, $LANG12, $LANG_CAL_1;
+
+    $A['title'] = strip_tags (COM_checkWords ($A['title']));
+    $A['start_year'] = COM_applyFilter ($A['start_year'], true);
+    $A['start_month'] = COM_applyFilter ($A['start_month'], true);
+    $A['start_day'] = COM_applyFilter ($A['start_day'], true);
+
+    // check for missing textfields
+    if (empty ($A['title']) || empty ($A['start_month']) || empty ($A['start_day']) || empty ($A['start_year'])) {
+        $retval .= COM_siteHeader ('menu', $LANG_CAL_1[27])
+            . COM_startBlock ($LANG12[22], '',
+                           COM_getBlockTemplate ('_msg_block', 'header'))
+            . $LANG12[23]
+            . COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'))
+            . plugin_submit_calendar ($A['calendar_type'])
+            . COM_siteFooter ();
+
+        return $retval;
+    }
+    // check ok, proceed to saving
+    $A['end_year'] = COM_applyFilter ($A['end_year'], true);
+    $A['end_month'] = COM_applyFilter ($A['end_month'], true);
+    $A['end_day'] = COM_applyFilter ($A['end_day'], true);
+
+    $A['datestart'] = sprintf ('%4d-%02d-%02d',
+                        $A['start_year'], $A['start_month'], $A['start_day']);
+    if (empty ($A['end_year']) || empty ($A['end_month']) ||
+            empty ($A['end_day'])) {
+        $A['dateend'] = $A['datestart'];
+    } else {
+        $A['dateend'] = sprintf ('%4d-%02d-%02d',
+                            $A['end_year'], $A['end_month'], $A['end_day']);
+    }
+
+    // for the quickadd form, which doesn't have end date/time fields
+    if (!isset ($A['end_hour'])) {
+        $A['end_hour'] = $A['start_hour'];
+    }
+    if (!isset ($A['end_minute'])) {
+        $A['end_minute'] = $A['start_minute'];
+    }
+
+    // pseudo-formatted event description for the spam check
+    $spamcheck = '<p><a href="' . $A['url'] . '">' . $A['title'] . '</a><br>'
+               . $A['location'] . '<br>' . $A['address1'] . '<br>'
+               . $A['address2'] . '<br>' . $A['city'] . ', ' . $A['zipcode']
+               . '<br>' . $A['description'] . '</p>';
+    $result = PLG_checkforSpam ($spamcheck, $_CONF['spamx']);
+    if ($result > 0) {
+        COM_updateSpeedlimit ('submit');
+        COM_displayMessageAndAbort ($result, 'spamx', 403, 'Forbidden');
+    }
+
+    $A['description'] = addslashes (htmlspecialchars (COM_checkWords ($A['description'])));
+    $A['address1'] = addslashes (strip_tags (COM_checkWords ($A['address1'])));
+    $A['address2'] = addslashes (strip_tags (COM_checkWords ($A['address2'])));
+    $A['city'] = addslashes (strip_tags (COM_checkWords ($A['city'])));
+    $A['zipcode'] = addslashes (strip_tags (COM_checkWords ($A['zipcode'])));
+    $A['state'] = addslashes (strip_tags (COM_checkWords ($A['state'])));
+    $A['location'] = addslashes (strip_tags (COM_checkWords ($A['location'])));
+    $A['event_type'] = addslashes (strip_tags (COM_checkWords ($A['event_type'])));
+    $A['title'] = addslashes ($A['title']);
+
+    $A['url'] = addslashes (COM_sanitizeUrl ($A['url']));
+    if ($A['url'] == 'http://') {
+        $A['url'] = '';
+    }
+
+    if (!empty ($A['eid'])) {
+        $A['eid'] = addslashes (COM_applyFilter ($A['eid']));
+    }
+    if (empty ($A['eid'])) {
+        $A['eid'] = addslashes (COM_makeSid ());
+    }
+
+    COM_updateSpeedlimit ('submit');
+
+    if (isset ($A['allday']) && ($A['allday'] == 'on')) {
+        $A['allday'] = 1;
+    } else {
+        $A['allday'] = 0;
+    }
+
+    if (isset ($A['hour_mode']) && ($A['hour_mode'] == 24)) {
+        $start_hour = COM_applyFilter ($A['start_hour'], true);
+        if ($start_hour >= 12) {
+            $A['start_ampm'] = 'pm';
+            $A['start_hour'] = $start_hour - 12;
+        } else {
+            $A['start_ampm'] = 'am';
+            $A['start_hour'] = $start_hour;
+        }
+        if ($A['start_hour'] == 0) {
+            $A['start_hour'] = 12;
+        }
+        $end_hour = COM_applyFilter ($A['end_hour'], true);
+        if ($end_hour >= 12) {
+            $A['end_ampm'] = 'pm';
+            $A['end_hour'] = $end_hour - 12;
+        } else {
+            $A['end_ampm'] = 'am';
+            $A['end_hour'] = $end_hour;
+        }
+        if ($A['end_hour'] == 0) {
+            $A['end_hour'] = 12;
+        }
+    }
+    if (!isset ($A['end_ampm'])) {
+        $A['end_ampm'] = $A['start_ampm'];
+    }
+
+    $A['start_hour'] = COM_applyFilter ($A['start_hour'], true);
+    $A['start_minute'] = COM_applyFilter ($A['start_minute'], true);
+    $A['end_hour'] = COM_applyFilter ($A['end_hour'], true);
+    $A['end_minute'] = COM_applyFilter ($A['end_minute'], true);
+
+    if ($A['start_ampm'] == 'pm' AND $A['start_hour'] <> 12) {
+        $A['start_hour'] = $A['start_hour'] + 12;
+    }
+    if ($A['start_ampm'] == 'am' AND $A['start_hour'] == 12) {
+        $A['start_hour'] = '00';
+    }
+    if ($A['end_ampm'] == 'pm' AND $A['end_hour'] <> 12) {
+        $A['end_hour'] = $A['end_hour'] + 12;
+    }
+    if ($A['end_ampm'] == 'am' AND $A['end_hour'] == 12) {
+        $A['end_hour'] = '00';
+    }
+    $A['timestart'] = $A['start_hour'] . ':' . $A['start_minute'] . ':00';
+    $A['timeend'] = $A['end_hour'] . ':' . $A['end_minute'] . ':00';
+    if ($A['calendar_type'] == 'master') { // add to site calendar
+
+        if (($_CA_CONF['eventsubmission'] == 1) &&
+                !SEC_hasRights ('calendar.submit')) {
+            DB_save ($_TABLES['eventsubmission'],
+                     'eid,title,event_type,url,datestart,timestart,dateend,timeend,allday,location,address1,address2,city,state,zipcode,description',
+                     "{$A['eid']},'{$A['title']}','{$A['event_type']}','{$A['url']}','{$A['datestart']}','{$A['timestart']}','{$A['dateend']}','{$A['timeend']}',{$A['allday']},'{$A['location']}','{$A['address1']}','{$A['address2']}','{$A['city']}','{$A['state']}','{$A['zipcode']}','{$A['description']}'");
+
+            if (isset ($_CA_CONF['notification']) &&
+                    ($_CA_CONF['notification'] == 1)) {
+                CALENDAR_sendNotification ($_TABLES['eventsubmission'], $A);
+            }
+
+            $retval = COM_refresh ($_CONF['site_url'] . '/calendar/index.php?msg=4');
+        } else {
+            if (isset ($_USER['uid']) && ($_USER['uid'] > 1)) {
+                $owner_id = $_USER['uid'];
+            } else {
+                $owner_id = 1; // anonymous user
+            }
+
+            DB_save ($_TABLES['events'],
+                     'eid,title,event_type,url,datestart,timestart,dateend,timeend,allday,location,address1,address2,city,state,zipcode,description,owner_id',
+                     "{$A['eid']},'{$A['title']}','{$A['event_type']}','{$A['url']}','{$A['datestart']}','{$A['timestart']}','{$A['dateend']}','{$A['timeend']}',{$A['allday']},'{$A['location']}','{$A['address1']}','{$A['address2']}','{$A['city']}','{$A['state']}','{$A['zipcode']}','{$A['description']}',$owner_id");
+            if (isset ($_CA_CONF['notification']) &&
+                    ($_CA_CONF['notification'] == 1)) {
+                CALENDAR_sendNotification ($_TABLES['events'], $A);
+            }
+            COM_rdfUpToDateCheck ();
+
+            $retval = COM_refresh ($_CONF['site_url'] . '/calendar/index.php');
+        }
+
+    } else if ($_CA_CONF['personalcalendars'] == 1) { // add to personal calendar
+        if (isset ($_USER['uid']) && ($_USER['uid'] > 1)) {
+            DB_save ($_TABLES['personal_events'],
+                     'uid,eid,title,event_type,url,datestart,timestart,dateend,timeend,allday,location,address1,address2,city,state,zipcode,description',
+                     "{$_USER['uid']},'{$A['eid']}','{$A['title']}','{$A['event_type']}','{$A['url']}','{$A['datestart']}','{$A['timestart']}','{$A['dateend']}','{$A['timeend']}',{$A['allday']},'{$A['location']}','{$A['address1']}','{$A['address2']}','{$A['city']}','{$A['state']}','{$A['zipcode']}','{$A['description']}'");
+            $retval = COM_refresh ($_CONF['site_url']
+                                   . '/calendar/index.php?mode=personal&msg=17');
+        } else {
+            // anonymous users don't have personal calendars - bail
+            COM_accessLog ("Attempt to write to the personal calendar of user '{$A['uid']}'.");
+
+            $retval = COM_refresh ($_CONF['site_url'] . '/calendar/index.php');
+        }
+
+    } else { // personal calendars are disabled
+        $retval = COM_refresh ($_CONF['site_url'] . '/calendar/index.php');
+    }
+
+    return $retval;
+}
+
+function plugin_getheadercode_calendar()
+{
+    global $_CONF;
+
+    $str = null;
+
+    // use the CSS only if we are on the plugin's pages
+    if (substr_count ($_SERVER['PHP_SELF'], '/calendar/') > 0) {
+        $str = '<link rel="stylesheet" type="text/css" href="'
+             . $_CONF['site_url'] . '/calendar/style.css">';
+    }
+
+    return $str;
+}
+
+/**
+* Shows event submission form or diverts to event editor if admin calls in
+*
+*/
+function plugin_submit_calendar($mode = 'master')
+{
+    global $_CONF, $_USER, $_CA_CONF, $LANG_CAL_1;
+
+    if (isset ($_POST['calendar_type'])) {
+        $mode = $_POST['calendar_type'];
+    }
+
+    if (($_CA_CONF['personalcalendars'] == 1) && ($mode == 'quickadd')) {
+        // quick add form, just save it.
+        $display = plugin_savesubmission_calendar ($_POST);
+        return $display;
+    } else if (SEC_hasRights('calendar.edit') && ($mode != 'personal')) {
+        // admin posts non-personal, go to editor
+        if (isset ($_REQUEST['year'])) {
+            $year = COM_applyFilter ($_REQUEST['year'], true);
+        } else {
+            $year = date ('Y', time ());
+        }
+        if (isset ($_REQUEST['month'])) {
+            $month = COM_applyFilter ($_REQUEST['month'], true);
+        } else {
+            $month = date ('m', time ());
+        }
+        if (isset ($_REQUEST['day'])) {
+            $day = COM_applyFilter ($_REQUEST['day'], true);
+        } else {
+            $day = date ('d', time ());
+        }
+        if (isset ($_REQUEST['hour'])) {
+            $hour = COM_applyFilter ($_REQUEST['hour'], true);
+        } else {
+            $hour = date ('H', time ());
+        }
+        $startat = '';
+        if ($year > 0) {
+            $startat = '&datestart='
+                     . urlencode (sprintf ('%04d-%02d-%02d', $year,
+                                           $month, $day))
+                     . '&timestart=' . urlencode (sprintf ('%02d:00:00',
+                                                           $hour));
+        }
+
+        echo COM_refresh ($_CONF['site_admin_url']
+                          . '/plugins/calendar/index.php?mode=edit' . $startat);
+        exit;
+    }
+    // otherwise non-admin or admin-personal. do personal form or public submission.
+
+    $retval = '';
+
+    $retval .= COM_startBlock ($LANG_CAL_1[26], 'submitevent.html');
+    $eventform = new Template ($_CONF['path'] . 'plugins/calendar/templates/');
+    $eventform->set_file ('eventform', 'submitevent.thtml');
+    if ($mode != 'personal') {
+        $eventform->set_var ('explanation', $LANG_CAL_1[27]);
+        $eventform->set_var ('submit_url', '/submit.php');
+    } else {
+        $eventform->set_var ('explanation', '');
+        $eventform->set_var ('submit_url', '/calendar/index.php?view=savepersonal');
+    }
+    if (isset ($_CA_CONF['hour_mode']) && ($_CA_CONF['hour_mode'] == 24)) {
+        $eventform->set_var ('hour_mode', 24);
+    } else {
+        $eventform->set_var ('hour_mode', 12);
+    }
+    $eventform->set_var ('site_url', $_CONF['site_url']);
+    $eventform->set_var ('site_admin_url', $_CONF['site_admin_url']);
+    $eventform->set_var ('layout_url', $_CONF['layout_url']);
+    $eventform->set_var ('lang_title', $LANG_CAL_1[28]);
+
+    $eventform->set_var('lang_eventtype', $LANG_CAL_1[37]);
+    $eventform->set_var('lang_editeventtypes', $LANG_CAL_1[38]);
+    $eventform->set_var('type_options', CALENDAR_eventTypeList ());
+
+    $eventform->set_var('lang_link', $LANG_CAL_1[43]);
+    $eventform->set_var('max_url_length', 255);
+    $eventform->set_var('lang_startdate', $LANG_CAL_1[21]);
+    $eventform->set_var('lang_starttime', $LANG_CAL_1[30]);
+    if (empty ($month)) {
+        $month = date ('m', time ());
+    }
+    if (empty ($day)) {
+        $day = date ('d', time ());
+    }
+    if (empty ($year)) {
+        $year = date ('Y', time ());
+    }
+    $eventform->set_var ('month_options', COM_getMonthFormOptions ($month));
+    $eventform->set_var ('day_options', COM_getDayFormOptions ($day));
+    $eventform->set_var ('year_options', COM_getYearFormOptions ($year));
+
+    if (empty ($hour) || ($hour < 0)) {
+        $cur_hour = date ('H', time ());
+    } else {
+        $cur_hour = $hour;
+    }
+    $cur_hour_24 = $cur_hour % 24;
+    if ($cur_hour >= 12) {
+        $ampm = 'pm';
+    } else {
+        $ampm = 'am';
+    }
+
+    $eventform->set_var ('startampm_selection',
+                         COM_getAmPmFormSelection ('start_ampm', $ampm));
+    $eventform->set_var ('endampm_selection',
+                         COM_getAmPmFormSelection ('end_ampm', $ampm));
+
+    if ($cur_hour > 12) {
+        $cur_hour = $cur_hour - 12;
+    } else if ($cur_hour == 0) {
+        $cur_hour = 12;
+    }
+
+    if (isset ($_CA_CONF['hour_mode']) && ($_CA_CONF['hour_mode'] == 24)) {
+        $eventform->set_var ('hour_options',
+                             COM_getHourFormOptions ($cur_hour_24, 24));
+    } else {
+        $eventform->set_var ('hour_options',
+                             COM_getHourFormOptions ($cur_hour));
+    }
+    $cur_min = intval (date ('i') / 15) * 15;
+    $eventform->set_var ('minute_options',
+                         COM_getMinuteFormOptions ($cur_min, 15));
+
+    $eventform->set_var('lang_enddate', $LANG_CAL_1[18]);
+    $eventform->set_var('lang_endtime', $LANG_CAL_1[29]);
+    $eventform->set_var('lang_alldayevent',$LANG_CAL_1[31]);
+    $eventform->set_var('lang_addressline1',$LANG_CAL_1[32]);
+    $eventform->set_var('lang_addressline2',$LANG_CAL_1[33]);
+    $eventform->set_var('lang_city',$LANG_CAL_1[34]);
+    $eventform->set_var('lang_state',$LANG_CAL_1[35]);
+    $eventform->set_var('state_options', CALENDAR_stateList ());
+    $eventform->set_var('lang_zipcode',$LANG_CAL_1[36]);
+    $eventform->set_var('lang_location', $LANG_CAL_1[39]);
+    $eventform->set_var('lang_description', $LANG_CAL_1[5]);
+    $eventform->set_var('lang_htmnotallowed', $LANG_CAL_1[44]);
+    $eventform->set_var('lang_submit', $LANG_CAL_1[45]);
+    $eventform->set_var('mode', $mode);
+    $eventform->parse('theform', 'eventform');
+    $retval .= $eventform->finish($eventform->get_var('theform'));
+    $retval .= COM_endBlock();
+
+    return $retval;
+}
+
+/**
+* Delete an event
+*
+* @param    string  $eid    id of event to delete
+* @param    string          HTML redirect
+*/
+function CALENDAR_deleteEvent ($eid)
+{
+    global $_CONF, $_TABLES, $_USER;
+
+    $result = DB_query ("SELECT owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon "
+                       ."FROM {$_TABLES['events']} WHERE eid = '$eid'");
+    $A = DB_fetchArray ($result);
+    $access = SEC_hasAccess ($A['owner_id'], $A['group_id'], $A['perm_owner'],
+            $A['perm_group'], $A['perm_members'], $A['perm_anon']);
+    if ($access < 3) {
+        COM_accessLog ("User {$_USER['username']} tried to illegally delete event $eid.");
+        return COM_refresh ($_CONF['site_admin_url'] . '/plugins/calendar/index.php');
+    }
+
+    DB_delete ($_TABLES['events'], 'eid', $eid);
+    DB_delete ($_TABLES['personal_events'], 'eid', $eid);
+    COM_rdfUpToDateCheck ('geeklog', 'calendar', $eid);
+
+    return COM_refresh ($_CONF['site_admin_url'] . '/plugins/calendar/index.php?msg=18');
+}
+
+function CALENDAR_listevents()
+{
+    global $_CONF, $_TABLES, $LANG_ADMIN, $LANG_CAL_ADMIN, $LANG_ACCESS,
+           $_IMAGE_TYPE;
+
+    require_once( $_CONF['path_system'] . 'lib-admin.php' );
+
+    $retval = '';
+
+    $header_arr = array(      # dislay 'text' and use table field 'field'
+                    array('text' => $LANG_ADMIN['edit'], 'field' => 'edit', 'sort' => false),
+                    array('text' => $LANG_ADMIN['copy'], 'field' => 'copy', 'sort' => false),
+                    array('text' => $LANG_ADMIN['title'], 'field' => 'title', 'sort' => true),
+                    array('text' => $LANG_CAL_ADMIN[13], 'field' => 'username', 'sort' => true),
+                    array('text' => $LANG_ACCESS['access'], 'field' => 'access', 'sort' => false),
+                    array('text' => $LANG_CAL_ADMIN[14], 'field' => 'datestart', 'sort' => true),
+                    array('text' => $LANG_CAL_ADMIN[15], 'field' => 'dateend', 'sort' => true)
+    );
+
+    $defsort_arr = array('field' => 'datestart', 'direction' => 'desc');
+
+    $menu_arr = array (
+                    array('url' => $_CONF['site_admin_url'] . '/plugins/calendar/index.php?mode=edit',
+                          'text' => $LANG_ADMIN['create_new']),
+                    array('url' => $_CONF['site_admin_url'],
+                          'text' => $LANG_ADMIN['admin_home'])
+    );
+
+    $text_arr = array('has_menu' =>  true,
+                      'has_extras'   => true,
+                      'title' => $LANG_CAL_ADMIN[11],
+                      'instructions' => $LANG_CAL_ADMIN[12],
+                      'icon' => $_CONF['site_url'] . '/calendar/images/calendar.' . $_IMAGE_TYPE,
+                      'form_url' => $_CONF['site_admin_url'] . "/plugins/calendar/index.php");
+
+    $sql = "SELECT {$_TABLES['events']}.*, {$_TABLES['users']}.username, {$_TABLES['users']}.fullname "
+          ."FROM {$_TABLES['events']} "
+          ."LEFT JOIN {$_TABLES['users']} "
+          ."ON {$_TABLES['events']}.owner_id={$_TABLES['users']}.uid "
+          ."WHERE 1=1 ";
+
+    $query_arr = array('table' => 'events',
+                       'sql' => $sql,
+                       'query_fields' => array('title', 'datestart', 'dateend'),
+                       'default_filter' => COM_getPermSQL('AND'));
+
+    $retval .= ADMIN_list ('calendar', 'plugin_getListField_calendar',
+                           $header_arr, $text_arr, $query_arr, $menu_arr,
+                           $defsort_arr);
+
+    return $retval;
+}
+
+/**
+* Send an email notification for a new submission.
+*
+* @param    string  $table  Table where the new submission can be found
+* @param    array   $A      submission data
+*
+*/
+function CALENDAR_sendNotification ($table, $A)
+{
+    global $_CONF, $_TABLES, $LANG01, $LANG08, $LANG09, $LANG_CAL_1, $LANG_CAL_2;
+
+    $title = stripslashes ($A['title']);
+    $description = stripslashes ($A['description']);
+
+    $mailbody = "$LANG09[16]: $title\n"
+              . "$LANG09[17]: " . strftime ($_CONF['date'],
+                strtotime ($A['datestart'] . ' ' . $A['timestart']));
+    if ($A['allday']) {
+        $mailbody .= ' (' . $LANG_CAL_2[26] . ')';
+    }
+    $mailbody .= "\n";
+    if (!empty ($A['url']) && ($A['url'] != 'http://')) {
+        $mailbody .= "$LANG09[33]: <" . $A['url'] . ">\n";
+    }
+    $mailbody .= "\n" . $description . "\n\n";
+    if ($table == $_TABLES['eventsubmission']) {
+        $mailbody .= "$LANG01[10] <{$_CONF['site_admin_url']}/moderation.php>\n\n";
+    } else {
+        $mailbody .= "$LANG_CAL_1[12] <{$_CONF['site_url']}/calendar/event.php?eid={$A['eid']}>\n\n";
+    }
+    $mailsubject = $_CONF['site_name'] . ' ' . $LANG_CAL_2[43];
+
+    $mailbody .= "\n------------------------------\n";
+    $mailbody .= "\n$LANG08[34]\n";
+    $mailbody .= "\n------------------------------\n";
+
+    COM_mail ($_CONF['site_mail'], $mailsubject, $mailbody);
+}
+
+
+/**
+*
+* Counts the items that are submitted
+*
+*/
+function plugin_submissioncount_calendar()
+{
+    global $_TABLES;
+
+    $num = 0;
+
+    if( SEC_hasRights( 'calendar.moderate' ))
+    {
+        $num += DB_count( $_TABLES['eventsubmission'] );
+    }
+
+    return $num;
+}
+
+/**
+* Implements the [event:] autotag.
+*
+*/
+function plugin_autotags_calendar ($op, $content = '', $autotag = '')
+{
+    global $_CONF, $_TABLES;
+
+    if ($op == 'tagname' ) {
+        return 'event';
+    } else if ($op == 'parse') {
+        $eid = COM_applyFilter ($autotag['parm1']);
+        $url = $_CONF['site_url'] . '/calendar/event.php?eid=' . $eid;
+        if (empty ($autotag['parm2'])) {
+            $linktext = stripslashes (DB_getItem ($_TABLES['events'],
+                                      'title', "eid = '$eid'"));
+        } else {
+            $linktext = $autotag['parm2'];
+        }
+        $link = '<a href="' . $url . '">' . $linktext . '</a>';
+        $content = str_replace ($autotag['tagstr'], $link, $content);
+
+        return $content;
+    }
+}
+
+/*
+* Do we support feeds?
+*/
+function plugin_getfeednames_calendar()
+{
+    global $LANG_CAL_1;
+
+    $feeds = array ();
+
+    $feeds[] = array ('id' => 'calendar', 'name' => $LANG_CAL_1[16]);
+
+    return $feeds;
+
+}
+
+/**
+* Get content for a feed that holds all events.
+*
+* @param    string   $limit    number of entries or number of stories
+* @param    string   $link     link to homepage
+* @param    string   $update   list of story ids
+* @return   array              content of the feed
+*
+*/
+function plugin_getfeedcontent_calendar( $limit, &$link, &$update, $feedType, $feedVersion )
+{
+    global $_CONF, $_TABLES;
+
+    $where = '';
+    if( !empty( $limit )) {
+        if( substr( $limit, -1 ) == 'h' ) {// next xx hours
+            $limitsql = '';
+            $hours = substr( $limit, 0, -1 );
+            $where = " AND (datestart <= DATE_ADD(NOW(), INTERVAL $hours HOUR))";
+        }
+        else {
+            $limitsql = ' LIMIT ' . $limit;
+        }
+    }
+    else {
+        $limitsql = ' LIMIT 10';
+    }
+
+    $sql = "SELECT eid,owner_id,title,description FROM {$_TABLES['events']} "
+          ."WHERE perm_anon > 0 AND dateend >= NOW()$where "
+          ."ORDER BY datestart,timestart $limitsql";
+    $result = DB_query($sql);
+
+    $content = array();
+    $eids = array();
+    $nrows = DB_numRows( $result );
+
+    for( $i = 1; $i <= $nrows; $i++ )
+    {
+        $row = DB_fetchArray( $result );
+        $eids[] = $row['eid'];
+
+        $eventtitle = stripslashes( $row['title'] );
+        $eventtext = SYND_truncateSummary( $row['description'], MBYTE_strlen($row['description']));
+        $eventlink  = $_CONF['site_url'] . '/calendar/event.php?eid='
+                    . $row['eid'];
+
+        // Need to reparse the date from the event id
+        $myyear = substr( $row['eid'], 0, 4 );
+        $mymonth = substr( $row['eid'], 4, 2 );
+        $myday = substr( $row['eid'], 6, 2 );
+        $myhour = substr( $row['eid'], 8, 2 );
+        $mymin = substr( $row['eid'], 10, 2 );
+        $mysec = substr( $row['eid'], 12, 2 );
+        $newtime = "{$mymonth}/{$myday}/{$myyear} {$myhour}:{$mymin}:{$mysec}";
+        $creationtime = strtotime( $newtime );
+        $extensionTags = array(); // PLG_getFeedElementExtensions('calendar', $row['eid'], $feedType, $feedVersion, $eventtitle, );
+        $content[] = array( 'title'  => $eventtitle,
+                            'summary'   => $eventtext,
+                            'link'   => $eventlink,
+                            'uid'    => $row['owner_id'],
+                            'author' => COM_getDisplayName( $row['owner_id'] ),
+                            'date'   => $creationtime,
+                            'format' => 'plaintext',
+                            'extensions' => $extensionTags
+                          );
+    }
+
+    $link = $_CONF['site_url'] . '/calendar/index.php';
+    $update = implode( ',', $eids );
+
+    return $content;
+}
+
+/**
+* Checking if calendar feeds are up to date
+*
+* @param    int     $feed           id of feed to be checked
+* @param    string  $topic          topic (actually: category)
+* @param    string  $update_data    data describing current feed contents
+* @param    string  $limit          number of entries or number of hours
+* @param    string  $updated_type   (optional) type of feed to be updated
+* @param    string  $updated_topic  (optional) feed's "topic" to be updated
+* @param    string  $updated_id     (optional) id of entry that has changed
+*
+*/
+function plugin_feedupdatecheck_calendar ($feed, $topic, $update_data, $limit,
+                    $updated_type = '', $updated_topic = '', $updated_id = '')
+{
+    global $_CONF, $_TABLES, $_SYND_DEBUG;
+
+    $where = '';
+    if( !empty( $limit ))
+    {
+        if( substr( $limit, -1 ) == 'h' ) // next xx hours
+        {
+            $limitsql = '';
+            $hours = substr( $limit, 0, -1 );
+            $where = " AND (datestart <= DATE_ADD(NOW(), INTERVAL $hours HOUR))";
+        }
+        else
+        {
+            $limitsql = ' LIMIT ' . $limit;
+        }
+    }
+    else
+    {
+        $limitsql = ' LIMIT 10';
+    }
+
+    $result = DB_query( "SELECT eid FROM {$_TABLES['events']} WHERE perm_anon > 0 AND dateend >= NOW()$where ORDER BY datestart,timestart $limitsql" );
+    $nrows = DB_numRows( $result );
+
+    $eids = array();
+    for( $i = 0; $i < $nrows; $i++ )
+    {
+        $A = DB_fetchArray( $result );
+
+        if( $A['eid'] == $updated_id )
+        {
+            // no need to look any further - this feed has to be updated
+            return false;
+        }
+
+        $eids[] = $A['eid'];
+    }
+    $current = implode( ',', $eids );
+
+    if ($_SYND_DEBUG) {
+        COM_errorLog ("Update check for events: comparing new list ($current) with old list ($update_info)", 1);
+    }
+
+    return ( $current != $update_data ) ? false : true;
+}
+
+
+/**
+* Calendar will not use comments
+*/
+function plugin_commentsupport_calendar()
+{
+    return false;
+}
+
+
+/**
+* Shows the statistics for the Calendar plugin on stats.php.
+* If $showsitestats is 1 then we are to only print the overall stats in the
+* 'site statistics box' otherwise we show the detailed stats
+*
+* @param    int     showsitestate   Flag to let us know which stats to get
+*/
+function plugin_showstats_calendar ($showsitestats)
+{
+    global $_CONF, $_TABLES, $LANG_CAL_1;
+
+    $display = '';
+
+    // Top Ten Events
+    $result = DB_query("SELECT eid,title,hits from {$_TABLES['events']} WHERE (hits > 0)" . COM_getPermSQL ('AND') . " ORDER BY hits DESC LIMIT 10");
+    $nrows  = DB_numRows($result);
+    if ($nrows > 0) {
+        $header_arr = array(
+            array('text' => $LANG_CAL_1[12], 'field' => 'sid', 'header_class' => 'stats-header-title'),
+            array('text' => $LANG_CAL_1[48], 'field' => 'hits', 'field_class'  => 'stats-list-count'),
+        );
+        $data_arr = array();
+        $text_arr = array('has_menu'     => false,
+                          'title'        => $LANG_CAL_1[47],
+        );
+        for ($i = 0; $i < $nrows; $i++) {
+            $A = DB_fetchArray($result);
+            $A['title'] = stripslashes(str_replace('$','&#36;',$A['title']));
+            $A['sid'] = "<a href=\"" . $_CONF['site_url']
+                      . "/calendar/event.php?eid={$A['eid']}\">{$A['title']}</a>";
+            $A['hits'] = COM_NumberFormat ($A['hits']);
+            $data_arr[$i] = $A;
+        }
+        $display .= ADMIN_simpleList("", $header_arr, $text_arr, $data_arr);
+    } else {
+        $display .= COM_startBlock($LANG_CAL_1[47]);
+        $display .= $LANG_CAL_1[49];
+        $display .= COM_endBlock();
+    }
+
+    return $display;
+}
+
+/**
+* New stats plugin API function for proper integration with the site stats
+*
+* @return   array(item text, item count);
+*
+*/
+function plugin_statssummary_calendar ()
+{
+    global $LANG_CAL_1, $_TABLES;
+
+    $result = DB_query ("SELECT COUNT(*) AS count FROM {$_TABLES['events']}" . COM_getPermSQL ());
+    $A = DB_fetchArray ($result);
+    return array ($LANG_CAL_1[46], COM_NumberFormat ($A['count']));
+}
+
+
+/**
+* This will put an option for the calendar in the command and control block on
+* moderation.php
+*
+*/
+function plugin_cclabel_calendar()
+{
+    global $_CONF, $LANG_CAL_1;
+
+    if (SEC_hasRights ('calendar.edit')) {
+        return array ($LANG_CAL_1[16],
+                $_CONF['site_admin_url'] . '/plugins/calendar/index.php',
+                plugin_geticon_calendar ());
+    }
+
+    return false;
+}
+
+
+/**
+* returns the administrative option for this plugin
+*
+*/
+function plugin_getadminoption_calendar()
+{
+    global $_CONF, $_TABLES, $LANG_CAL_1;
+
+    if (SEC_hasRights ('calendar.edit')) {
+        $result = DB_query ("SELECT COUNT(*) AS cnt FROM {$_TABLES['events']}" . COM_getPermSQL ());
+        $A = DB_fetchArray ($result);
+        $total_events = $A['cnt'];
+
+        return array ($LANG_CAL_1[16],
+                      $_CONF['site_admin_url'] . '/plugins/calendar/index.php',
+                      $total_events);
+    }
+}
+
+function plugin_getuseroption_calendar()
+{
+    global $_CONF, $LANG_CAL_1, $_CA_CONF;
+
+    if( $_CA_CONF['personalcalendars'] == 1 ) {
+        $url = $_CONF['site_url'] . '/calendar/index.php?mode=personal';
+        return array ($LANG_CAL_1[42], $url, '');
+    }
+}
+
+
+/**
+* A user is about to be deleted. Update ownership of any events owned
+* by that user or delete them.
+*
+* @param   uid   int   User id of deleted user
+*
+*/
+function plugin_user_delete_calendar ($uid)
+{
+    global $_TABLES, $_CA_CONF;
+
+    DB_delete ($_TABLES['personal_events'], 'owner_id', $uid);
+
+    if ($_CA_CONF['delete_event'] == 1) {
+        // delete the events
+        DB_delete ($_TABLES['events'], 'owner_id', $uid);
+
+    } else {
+        // assign ownership to a user from the Root group
+        $rootgroup = DB_getItem ($_TABLES['groups'], 'grp_id',
+                                 "grp_name = 'Root'");
+        $result = DB_query ("SELECT DISTINCT ug_uid FROM {$_TABLES['group_assignments']} WHERE ug_main_grp_id = $rootgroup ORDER BY ug_uid LIMIT 1");
+        list($rootuser) = DB_fetchArray ($result);
+        DB_query ("UPDATE {$_TABLES['events']} SET owner_id = $rootuser WHERE owner_id = $uid");
+    }
+}
+
+/**
+* Return the current version of code.
+* Used in the Plugin Editor to show the registered version and code version
+*/
+function plugin_chkVersion_calendar()
+{
+    global $_CA_CONF;
+
+    return $_CA_CONF['version'];
+}
+
+/**
+* Update the Calendar plugin
+*
+* @return   int     Number of message to display (true = generic success msg)
+*
+*/
+function plugin_upgrade_calendar()
+{
+    global $_TABLES, $_CA_CONF;
+
+    // the plugin needs this function so complain when it doesn't exist
+    if (!function_exists ('MBYTE_strpos')) {
+        return 3002;
+    }
+
+    // no db changes - just update the version numbers
+    DB_query ("UPDATE {$_TABLES['plugins']} SET pi_version = '{$_CA_CONF['version']}', pi_gl_version = '" . VERSION . "' WHERE pi_name = 'calendar'");
+
+    return true;
+}
+
+/**
+* Geeklog informs us that we're about to be enabled or disabled
+*
+* @param    boolean     $enabled    true = we're being enabled, false = disabled
+* @return   void
+*/
+function plugin_enablestatechange_calendar ($enable)
+{
+    global $_TABLES;
+
+    $is_enabled = $enable ? 1 : 0;
+
+    // toggle calendar feeds
+    DB_query ("UPDATE {$_TABLES['syndication']} SET is_enabled = $is_enabled WHERE type = 'calendar'");
+
+    // toggle upcoming events block
+    DB_query ("UPDATE {$_TABLES['blocks']} SET is_enabled = $is_enabled WHERE (type = 'phpblock') AND (phpblockfn = 'phpblock_calendar')");
+}
+
+/**
+* Removes the datastructures for this plugin from the Geeklog database
+*
+* This may get called by the install routine to undo anything done to this
+* point.  To do that, $steps will have a list of steps to undo
+*
+* @steps   Array    Holds all the steps that have been completed by the install
+*
+*/
+function plugin_uninstall_calendar ($steps = '')
+{
+    global $_TABLES;
+
+    // Uninstalls the calendar plugin
+
+    COM_errorLog('Dropping events table', 1);
+    DB_query("DROP TABLE {$_TABLES['events']}");
+    COM_errorLog('...success', 1);
+    COM_errorLog('Dropping event submission table', 1);
+    DB_query("DROP TABLE {$_TABLES['eventsubmission']}");
+    COM_errorLog('...success', 1);
+    COM_errorLog('Dropping personal events table', 1);
+    DB_query("DROP TABLE {$_TABLES['personal_events']}");
+    COM_errorLog('...success', 1);
+
+    // Remove Upcoming Events block
+    DB_delete ($_TABLES['blocks'], array ('type',     'phpblockfn'),
+                                   array ('phpblock', 'phpblock_calendar'));
+
+    // Remove security for this plugin
+
+    // Remove the calendar admin group
+    $grp_id = DB_getItem ($_TABLES['groups'], 'grp_id',
+                          "grp_name = 'Calendar Admin'");
+
+    // Remove Calendar Admin group from all other groups
+    if (!empty ($grp_id)) {
+        COM_errorLog ('Attempting to remove Calendar Admin group from all groups' , 1);
+        DB_query("DELETE FROM {$_TABLES['group_assignments']} WHERE ug_main_grp_id = $grp_id");
+        COM_errorLog ('...success', 1);
+
+        COM_errorLog('Attempting to remove the Calendar Admin Group', 1);
+        DB_query("DELETE FROM {$_TABLES['groups']} WHERE grp_id = $grp_id");
+        COM_errorLog('...success', 1);
+    }
+
+    // Remove related features
+    $features = array ('calendar.edit', 'calendar.moderate', 'calendar.submit');
+
+    foreach ($features as $f) {
+        $feat_id = DB_getItem ($_TABLES['features'], 'ft_id', "ft_name = '$f'");
+        if (!empty ($feat_id)) {
+            COM_errorLog ("Attempting to remove $f rights from all groups", 1);
+            DB_query ("DELETE FROM {$_TABLES['access']} WHERE acc_ft_id = $feat_id");
+            COM_errorLog ('...success', 1);
+
+            COM_errorLog ("Attempting to remove the $f feature", 1);
+            DB_query ("DELETE FROM {$_TABLES['features']} WHERE ft_id = $feat_id");
+            COM_errorLog ('...success', 1);
+        }
+    }
+
+    // Unregister the plugin with Geeklog
+    // Always attempt to remove this entry or lib-common.php would still
+    // try and read our functions.inc file ...
+    COM_errorLog('Attempting to unregister the calendar plugin from Geeklog', 1);
+    DB_query("DELETE FROM {$_TABLES['plugins']} WHERE pi_name = 'calendar'");
+    COM_errorLog('...success', 1);
+
+    COM_errorLog ('Finished uninstalling the Calendar plugin.', 1);
+
+    return true;
+}
+
+/**
+* Get path for the template files.
+*
+* @param    string  $path   subdirectory within the base template path
+* @return   string          full path to template directory
+*
+*/
+function calendar_templatePath ($path = '')
+{
+    global $_CONF;
+
+    if (empty ($path)) {
+        $layout_path = $_CONF['path_layout'] . calendar;
+    } else {
+        $layout_path = $_CONF['path_layout'] . calendar . '/' . $path;
+    }
+
+    if (is_dir ($layout_path)) {
+        $retval = $layout_path;
+    } else {
+        $retval = $_CONF['path'] . 'plugins/calendar/templates';
+        if (!empty ($path)) {
+            $retval .= '/' . $path;
+        }
+    }
+
+    return $retval;
+}
+
+/**
+* Returns the URL of the plugin's icon
+*
+* @return   string      URL of the icon
+*
+*/
+function plugin_geticon_calendar ()
+{
+    global $_CONF;
+
+    return $_CONF['site_url'] . '/calendar/images/calendar.png';
+}
+
+/**
+* Geeklog is asking us to provide any items that show up in the type
+* drop-down on search.php.  Let's users search for events.
+*
+* @return   array   (plugin name/entry title) pair for the dropdown
+*
+*/
+function plugin_searchtypes_calendar()
+{
+    global $LANG_CAL_1;
+
+    $tmp['calendar'] = $LANG_CAL_1[50];
+
+    return $tmp;
+}
+
+/**
+* This searches for events matching the user query and returns an array for the
+* header and table rows back to search.php where it will be formated and printed
+*
+* @param    string  $query      Keywords user is looking for
+* @param    date    $datestart  Start date to get results for
+* @param    date    $dateend    End date to get results for
+* @param    string  $topic      The topic they were searching in
+* @param    string  $type       Type of items they are searching, or 'all'
+* @param    int     $author     Get all results by this author
+* @param    string  $keyType    search key type: 'all', 'phrase', 'any'
+* @param    int     $page       page number of current search
+* @param    int     $perpage    number of results per page
+* @return   object              search result object
+*
+*/
+function plugin_dopluginsearch_calendar($query, $datestart, $dateend, $topic, $type, $author, $keyType, $page, $perpage)
+{
+    global $_CONF, $_TABLES, $LANG09, $LANG_CAL_1, $_LANG_CAL_SEARCH;
+
+    if (empty ($type)) {
+        $type = 'all';
+    }
+
+    // Bail if we aren't supppose to do our search
+    if ($type <> 'all' AND $type <> 'calendar') {
+        $event_results = new Plugin();
+        $event_results->plugin_name = 'calendar';
+        $event_results->num_itemssearched = 0;
+        $event_results->searchlabel = $_LANG_CAL_SEARCH['results'];
+
+        return $event_results;
+    }
+
+    $select = "SELECT eid,title,location,event_type,datestart,dateend,timestart,timeend,allday,UNIX_TIMESTAMP(datestart) AS day";
+    $sql = " FROM {$_TABLES['events']} WHERE ";
+
+    if($keyType == 'phrase') {
+        // do an exact phrase search (default)
+        $mywords[] = $query;
+        $mysearchterm = addslashes ($query);
+        $sql .= "(location LIKE '%$mysearchterm%'  ";
+        $sql .= "OR description LIKE '%$mysearchterm%' ";
+        $sql .= "OR title LIKE '%$mysearchterm%') ";
+    } elseif ($keyType == 'all') {
+        //must contain ALL of the keywords
+        $mywords = explode(' ', $query);
+        $tmp = '';
+        foreach ($mywords AS $mysearchterm) {
+            $mysearchterm = addslashes (trim ($mysearchterm));
+            $tmp .= "(location LIKE '%$mysearchterm%' OR ";
+            $tmp .= "description LIKE '%$mysearchterm%' OR ";
+            $tmp .= "title LIKE '%$mysearchterm%') AND ";
+        }
+        $tmp = substr($tmp, 0, strlen($tmp) - 4);
+        $sql .= $tmp;
+    } elseif ($keyType == 'any') {
+        //must contain ANY of the keywords
+        $mywords = explode(' ', $query);
+        $tmp = '';
+        foreach ($mywords AS $mysearchterm) {
+            $mysearchterm = addslashes (trim ($mysearchterm));
+            $tmp .= "(location LIKE '%$mysearchterm%' OR ";
+            $tmp .= "description LIKE '%$mysearchterm%' OR ";
+            $tmp .= "title LIKE '%$mysearchterm%') OR ";
+        }
+        $tmp = substr($tmp, 0, strlen($tmp) - 3);
+        $sql .= "($tmp)";
+    } else {
+        $mywords[] = $query;
+        $mysearchterm = addslashes ($query);
+        $sql .= "(location LIKE '%$mysearchterm%' ";
+        $sql .= "OR description LIKE '%$mysearchterm%' ";
+        $sql .= "OR title LIKE '%$mysearchterm%') ";
+    }
+
+    if (!empty($dateStart) AND !empty($dateEnd)) {
+        $delim = substr($dateStart, 4, 1);
+        if (!empty($delim)) {
+            $DS = explode($delim, $dateStart);
+            $DE = explode($delim, $dateEnd);
+            $startdate = mktime(0, 0, 0, $DS[1], $DS[2], $DS[0]);
+            $enddate = mktime(23, 59, 59, $DE[1], $DE[2], $DE[0]);
+            $sql .= "AND (UNIX_TIMESTAMP(datestart) BETWEEN '$startdate' AND '$enddate') ";
+        }
+    }
+    $sql .= COM_getPermSQL ('AND');
+    $sql .= ' GROUP BY datestart, eid, title, description, location, dateend, timestart, timeend, allday, event_type ORDER BY datestart DESC ';
+    $l = ($perpage * $page) - $perpage;
+    $sql .= 'LIMIT ' . $l . ',' . $perpage;
+
+    $result_events = DB_query ($select . $sql);
+    $result_count = DB_query ('SELECT COUNT(*)' . $sql);
+    $B = DB_fetchArray ($result_count, true);
+
+    $event_results = new Plugin();
+    $event_results->searchresults = array();
+    $event_results->searchlabel = $_LANG_CAL_SEARCH['results'];
+    $event_results->addSearchHeading ($_LANG_CAL_SEARCH['title']);
+    $event_results->addSearchHeading ($_LANG_CAL_SEARCH['date_time']);
+    if (empty ($_LANG_CAL_SEARCH['event_type'])) {
+        $event_results->addSearchHeading ($LANG_CAL_1[37]);
+    } else {
+        $event_results->addSearchHeading ($_LANG_CAL_SEARCH['event_type']);
+    }
+    $event_results->num_searchresults = 0;
+    $event_results->num_itemssearched = $B[0];
+    $event_results->supports_paging = true;
+
+    // NOTE if any of your data items need to be events then add them
+    // here! Make sure data elements are in an array and in the same
+    // order as your headings above!
+    while ($A = DB_fetchArray ($result_events)) {
+        if ($A['allday'] == 0) {
+            if ($A['datestart'] == $A['dateend']) {
+                $fulldate = $A['datestart'] . ' ' . $A['timestart'];
+                if ($A['timestart'] != $A['timeend']) {
+                    $fulldate .= ' - ' . $A['timeend'];
+                }
+            } else {
+                $fulldate = $A['datestart'] . ' ' . $A['timestart'] . ' - '
+                            . $A['dateend'] . ' ' . $A['timeend'];
+            }
+        } else {
+            if ($A['datestart'] <> $A['dateend']) {
+                $fulldate = $A['datestart'] . ' - ' . $A['dateend']
+                                  . ' ' . $LANG09[35];
+            } else {
+                $fulldate = $A['datestart'] . ' ' . $LANG09[35];
+            }
+        }
+        $thetime = COM_getUserDateTimeFormat ($A['day']);
+        $A['title'] = stripslashes ($A['title']);
+        $A['title'] = str_replace ('$', '&#36;', $A['title']);
+        $row = array ('<a href="' . $_CONF['site_url']
+                            . '/calendar/event.php?eid=' . $A['eid'] . '">'
+                            . $A['title'] . '</a>', $fulldate,
+                            stripslashes ($A['event_type']));
+        $event_results->addSearchResult($row);
+        $event_results->num_searchresults++;
+    }
+    return $event_results;
+}
+
+
+/**
+* Set template variables
+*
+* @param    string  $templatename   name of template, e.g. 'header'
+* @param    ref     $template       reference of actual template
+* @return   void
+*
+* Note: A plugin should use its name as a prefix for the names of its
+* template variables, e.g. 'calendar_xxx' and 'lang_calendar_xxx'.
+* 'button_calendar' is an exception, as such a variable existed for header.thtml
+* in Geeklog 1.4.0 and earlier, where the Calendar was an integral part
+* of Geeklog. It is added here for backward-compatibility.
+*
+*/
+function plugin_templatesetvars_calendar ($templatename, &$template)
+{
+    global $LANG_CAL_1;
+
+    if ($templatename == 'header') {
+        $template->set_var ('button_calendar', $LANG_CAL_1[16]);
+    }
+}
+
+function plugin_getListField_calendar($fieldname, $fieldvalue, $A, $icon_arr)
+{
+    global $_CONF, $LANG_ACCESS, $LANG_ADMIN;
+
+    $retval = '';
+
+    $access = SEC_hasAccess($A['owner_id'],$A['group_id'],$A['perm_owner'],
+                            $A['perm_group'],$A['perm_members'],$A['perm_anon']);
+
+    switch($fieldname) {
+        case "edit":
+            if ($access == 3) {
+                $retval = "<a href=\"{$_CONF['site_admin_url']}"
+                        . "/plugins/calendar/index.php?mode=edit&amp;eid="
+                        . "{$A['eid']}\">{$icon_arr['edit']}</a>";
+            }
+            break;
+        case "copy":
+            if ($access == 3) {
+                $retval = "<a href=\"{$_CONF['site_admin_url']}"
+                        . "/plugins/calendar/index.php?mode=clone&amp;eid="
+                        . "{$A['eid']}\">{$icon_arr['copy']}</a>";
+            }
+            break;
+        case 'access':
+            if ($access == 3) {
+                $retval = $LANG_ACCESS['edit'];
+            } else {
+                $retval = $LANG_ACCESS['readonly'];
+            }
+            break;
+        case 'title':
+            $retval = stripslashes ($A['title']);
+            $retval = "<a href=\"{$_CONF['site_url']}/calendar/event.php?eid="
+                    . "{$A['eid']}\">$retval</a>";
+            break;
+        case 'username':
+            $retval = COM_getDisplayName ($A['owner_id'], $A['username'], $A['fullname']);
+            break;
+        default:
+            $retval = $fieldvalue;
+            break;
+    }
+    return $retval;
+}
+
+/**
+* Creates a dropdown list of all the states
+*
+* @param    string  $currstate  current state (to preselect in the list)
+* @return   string              <option> list of states
+*
+*/
+function CALENDAR_stateList ($currstate = '')
+{
+    global $_STATES;
+
+    $retval = '';
+
+    foreach ($_STATES as $statekey => $state) {
+        $retval .= '<option value="' . $statekey . '"';
+        if ($statekey == $currstate) {
+            $retval .= ' selected="selected"';
+        }
+        $retval .= '>' . $state . '</option>';
+    }
+
+    return $retval;
+}
+
+/**
+* Creates a dropdown list of all the event types
+*
+* @param    string  $currtype   current event type (to preselect in the list)
+* @return   string              <option> list of event types
+*
+*/
+function CALENDAR_eventTypeList ($currtype = '')
+{
+    global $_CA_CONF;
+
+    $retval = '';
+
+    $event_types = explode (',', $_CA_CONF['event_types']);
+    asort ($event_types);
+
+    foreach ($event_types as $type) {
+        $retval .= '<option value="' . $type . '"';
+        if ($currtype == $type) {
+            $retval .= ' selected="selected"';
+        }
+        $retval .= '>' . $type . '</option>';
+    }
+
+    return $retval;
+}
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/english.php 1.4.1.src/cpanel-glprivate/plugins/calendar/language/english.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/english.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/language/english.php	2006-05-27 15:23:11.000000000 -0500
@@ -0,0 +1,176 @@
+<?php
+
+###############################################################################
+# english.php
+# This is the english language page for the Geeklog Calendar Plug-in!
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony@tonybibbs.com
+# Copyright (C) 2005 Trinity Bays
+# trinity93@gmail.com
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+# index.php
+$LANG_CAL_1 = array(
+    1 => 'Calendar of Events',
+    2 => 'I\'m sorry, there are no events to display.',
+    3 => 'When',
+    4 => 'Where',
+    5 => 'Description',
+    6 => 'Add An Event',
+    7 => 'Upcoming Events',
+    8 => 'By adding this event to your calendar you can quickly view only the events you are interested in by clicking "My Calendar" from the User Functions area.',
+    9 => 'Add to My Calendar',
+    10 => 'Remove from My Calendar',
+    11 => "Adding Event to %s's Calendar",
+    12 => 'Event',
+    13 => 'Starts',
+    14 => 'Ends',
+    15 => 'Back to Calendar',
+    16 => 'Calendar',
+    17 => 'Start Date',
+    18 => 'End Date',
+    19 => 'Calendar Submissions',
+    20 => 'Title',
+    21 => 'Start Date',
+    22 => 'URL',
+    23 => 'Your Events',
+    24 => 'Site Events',
+    25 => 'There are no upcoming events',
+    26 => 'Submit an Event',
+    27 => "Submitting an event to {$_CONF['site_name']} will put your event on the master calendar where users can optionally add your event to their personal calendar. This feature is <b>NOT</b> meant to store your personal events such as birthdays and anniversaries.<br><br>Once you submit your event it will be sent to our administrators and if approved, your event will appear on the master calendar.",
+    28 => 'Title',
+    29 => 'End Time',
+    30 => 'Start Time',
+    31 => 'All Day Event',
+    32 => 'Address Line 1',
+    33 => 'Address Line 2',
+    34 => 'City/Town',
+    35 => 'State',
+    36 => 'Zip Code',
+    37 => 'Event Type',
+    38 => 'Edit Event Types',
+    39 => 'Location',
+    40 => 'Add Event to',
+    41 => 'Master Calendar',
+    42 => 'Personal Calendar',
+    43 => 'Link',
+    44 => 'HTML tags are not allowed',
+    45 => 'Submit',
+    46 => 'Events in the system',
+    47 => 'Top Ten Events',
+    48 => 'Hits',
+    49 => 'It appears that there are no events on this site or no one has ever clicked on one.',
+    50 => 'Events',
+    51 => 'Delete'
+);
+
+$_LANG_CAL_SEARCH = array(
+    'results' => 'Calendar Results',
+    'title' => 'Title',
+    'date_time' => 'Date & Time',
+    'location' => 'Location',
+    'description' => 'Description'
+
+);
+
+###############################################################################
+# calendar.php ($LANG30)
+
+$LANG_CAL_2 = array(
+    8 => 'Add Personal Event',
+    9 => '%s Event',
+    10 => 'Events for',
+    11 => 'Master Calendar',
+    12 => 'My Calendar',
+    25 => 'Back to ',
+    26 => 'All Day',
+    27 => 'Week',
+    28 => 'Personal Calendar for',
+    29 => 'Public Calendar',
+    30 => 'delete event',
+    31 => 'Add',
+    32 => 'Event',
+    33 => 'Date',
+    34 => 'Time',
+    35 => 'Quick Add',
+    36 => 'Submit',
+    37 => 'Sorry, the personal calendar feature is not enabled on this site',
+    38 => 'Personal Event Editor',
+    39 => 'Day',
+    40 => 'Week',
+    41 => 'Month',
+    42 => 'Add Master Event',
+    43 => 'Event Submissions',
+);
+
+###############################################################################
+# admin/plugins/calendar/index.php, formerly admin/event.php ($LANG22)
+
+$LANG_CAL_ADMIN = array(
+    1 => 'Event Editor',
+    2 => 'Error',
+    3 => 'Post Mode',
+    4 => 'Event URL',
+    5 => 'Event Start Date',
+    6 => 'Event End Date',
+    7 => 'Event Location',
+    8 => 'Event Description',
+    9 => '(include http://)',
+    10 => 'You must provide the dates/times, event title, and description',
+    11 => 'Calendar Manager',
+    12 => 'To modify or delete an event, click on that event\'s edit icon below.  To create a new event, click on "Create New" above. Click on the copy icon to create a copy of an existing event.',
+    13 => 'Author',
+    14 => 'Start Date',
+    15 => 'End Date',
+    16 => '',
+    17 => "You are trying to access an event that you don't have rights to.  This attempt has been logged. Please <a href=\"{$_CONF['site_admin_url']}/plugins/calendar/index.php\">go back to the event administration screen</a>.",
+    18 => '',
+    19 => '',
+    20 => 'save',
+    21 => 'cancel',
+    22 => 'delete',
+    23 => 'Bad start date.',
+    24 => 'Bad end date.',
+    25 => 'End date is before start date.'
+);
+
+$LANG_CAL_MESSAGE = array(
+    'save'      => 'Your event has been successfully saved.',
+    'delete'    => 'The event has been successfully deleted.',
+    'private'   => 'The event has been saved to your calendar',
+    'login'     => 'Cannot open your personal calendar until you login',
+    'removed'   => 'Event was successfully removed from your personal calendar',
+    'noprivate' => 'Sorry, personal calendars are not enabled on this site',
+    'unauth'    => 'Sorry, you do not have access to the event administration page.  Please note that all attempts to access unauthorized features are logged',
+);
+
+$PLG_calendar_MESSAGE4  = "Thank-you for submitting an event to {$_CONF['site_name']}.  It has been submitted to our staff for approval.  If approved, your event will be seen here, in our <a href=\"{$_CONF['site_url']}/calendar/index.php\">calendar</a> section.";
+$PLG_calendar_MESSAGE17 = 'Your event has been successfully saved.';
+$PLG_calendar_MESSAGE18 = 'The event has been successfully deleted.';
+$PLG_calendar_MESSAGE24 = 'The event has been saved to your calendar.';
+$PLG_calendar_MESSAGE26 = 'The event has been successfully deleted.';
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/english_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/calendar/language/english_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/english_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/language/english_utf-8.php	2006-06-18 12:03:05.000000000 -0500
@@ -0,0 +1,176 @@
+<?php
+
+###############################################################################
+# english_utf-8.php
+# This is the english language page for the Geeklog Calendar Plug-in!
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony@tonybibbs.com
+# Copyright (C) 2005 Trinity Bays
+# trinity93@gmail.com
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+# index.php
+$LANG_CAL_1 = array(
+    1 => 'Calendar of Events',
+    2 => 'I\'m sorry, there are no events to display.',
+    3 => 'When',
+    4 => 'Where',
+    5 => 'Description',
+    6 => 'Add An Event',
+    7 => 'Upcoming Events',
+    8 => 'By adding this event to your calendar you can quickly view only the events you are interested in by clicking "My Calendar" from the User Functions area.',
+    9 => 'Add to My Calendar',
+    10 => 'Remove from My Calendar',
+    11 => "Adding Event to %s's Calendar",
+    12 => 'Event',
+    13 => 'Starts',
+    14 => 'Ends',
+    15 => 'Back to Calendar',
+    16 => 'Calendar',
+    17 => 'Start Date',
+    18 => 'End Date',
+    19 => 'Calendar Submissions',
+    20 => 'Title',
+    21 => 'Start Date',
+    22 => 'URL',
+    23 => 'Your Events',
+    24 => 'Site Events',
+    25 => 'There are no upcoming events',
+    26 => 'Submit an Event',
+    27 => "Submitting an event to {$_CONF['site_name']} will put your event on the master calendar where users can optionally add your event to their personal calendar. This feature is <b>NOT</b> meant to store your personal events such as birthdays and anniversaries.<br><br>Once you submit your event it will be sent to our administrators and if approved, your event will appear on the master calendar.",
+    28 => 'Title',
+    29 => 'End Time',
+    30 => 'Start Time',
+    31 => 'All Day Event',
+    32 => 'Address Line 1',
+    33 => 'Address Line 2',
+    34 => 'City/Town',
+    35 => 'State',
+    36 => 'Zip Code',
+    37 => 'Event Type',
+    38 => 'Edit Event Types',
+    39 => 'Location',
+    40 => 'Add Event to',
+    41 => 'Master Calendar',
+    42 => 'Personal Calendar',
+    43 => 'Link',
+    44 => 'HTML tags are not allowed',
+    45 => 'Submit',
+    46 => 'Events in the system',
+    47 => 'Top Ten Events',
+    48 => 'Hits',
+    49 => 'It appears that there are no events on this site or no one has ever clicked on one.',
+    50 => 'Events',
+    51 => 'Delete'
+);
+
+$_LANG_CAL_SEARCH = array(
+    'results' => 'Calendar Results',
+    'title' => 'Title',
+    'date_time' => 'Date & Time',
+    'location' => 'Location',
+    'description' => 'Description'
+
+);
+
+###############################################################################
+# calendar.php ($LANG30)
+
+$LANG_CAL_2 = array(
+    8 => 'Add Personal Event',
+    9 => '%s Event',
+    10 => 'Events for',
+    11 => 'Master Calendar',
+    12 => 'My Calendar',
+    25 => 'Back to ',
+    26 => 'All Day',
+    27 => 'Week',
+    28 => 'Personal Calendar for',
+    29 => 'Public Calendar',
+    30 => 'delete event',
+    31 => 'Add',
+    32 => 'Event',
+    33 => 'Date',
+    34 => 'Time',
+    35 => 'Quick Add',
+    36 => 'Submit',
+    37 => 'Sorry, the personal calendar feature is not enabled on this site',
+    38 => 'Personal Event Editor',
+    39 => 'Day',
+    40 => 'Week',
+    41 => 'Month',
+    42 => 'Add Master Event',
+    43 => 'Event Submissions',
+);
+
+###############################################################################
+# admin/plugins/calendar/index.php, formerly admin/event.php ($LANG22)
+
+$LANG_CAL_ADMIN = array(
+    1 => 'Event Editor',
+    2 => 'Error',
+    3 => 'Post Mode',
+    4 => 'Event URL',
+    5 => 'Event Start Date',
+    6 => 'Event End Date',
+    7 => 'Event Location',
+    8 => 'Event Description',
+    9 => '(include http://)',
+    10 => 'You must provide the dates/times, event title, and description',
+    11 => 'Calendar Manager',
+    12 => 'To modify or delete an event, click on that event\'s edit icon below.  To create a new event, click on "Create New" above. Click on the copy icon to create a copy of an existing event.',
+    13 => 'Author',
+    14 => 'Start Date',
+    15 => 'End Date',
+    16 => '',
+    17 => "You are trying to access an event that you don't have rights to.  This attempt has been logged. Please <a href=\"{$_CONF['site_admin_url']}/plugins/calendar/index.php\">go back to the event administration screen</a>.",
+    18 => '',
+    19 => '',
+    20 => 'save',
+    21 => 'cancel',
+    22 => 'delete',
+    23 => 'Bad start date.',
+    24 => 'Bad end date.',
+    25 => 'End date is before start date.'
+);
+
+$LANG_CAL_MESSAGE = array(
+    'save'      => 'Your event has been successfully saved.',
+    'delete'    => 'The event has been successfully deleted.',
+    'private'   => 'The event has been saved to your calendar',
+    'login'     => 'Cannot open your personal calendar until you login',
+    'removed'   => 'Event was successfully removed from your personal calendar',
+    'noprivate' => 'Sorry, personal calendars are not enabled on this site',
+    'unauth'    => 'Sorry, you do not have access to the event administration page.  Please note that all attempts to access unauthorized features are logged',
+);
+
+$PLG_calendar_MESSAGE4  = "Thank-you for submitting an event to {$_CONF['site_name']}.  It has been submitted to our staff for approval.  If approved, your event will be seen here, in our <a href=\"{$_CONF['site_url']}/calendar/index.php\">calendar</a> section.";
+$PLG_calendar_MESSAGE17 = 'Your event has been successfully saved.';
+$PLG_calendar_MESSAGE18 = 'The event has been successfully deleted.';
+$PLG_calendar_MESSAGE24 = 'The event has been saved to your calendar.';
+$PLG_calendar_MESSAGE26 = 'The event has been successfully deleted.';
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/estonian.php 1.4.1.src/cpanel-glprivate/plugins/calendar/language/estonian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/estonian.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/language/estonian.php	2006-10-15 02:54:35.000000000 -0500
@@ -0,0 +1,178 @@
+<?php
+
+###############################################################################
+# estonian.php
+# This is the estonian language page for the Geeklog Calendar Plug-in!
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony@tonybibbs.com
+# Copyright (C) 2005 Trinity Bays
+# trinity93@gmail.com
+#
+# Estonian translation by Artur Rpp <rtr AT planet DOT ee>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+# index.php
+$LANG_CAL_1 = array(
+    1 => 'Sndmuste kalender',
+    2 => 'Kahjuks pole htegi sndmust, mida nidata.',
+    3 => 'Millal',
+    4 => 'Kus',
+    5 => 'Kirjeldus',
+    6 => 'Lisa sndmus',
+    7 => 'Tuleviku sndmused',
+    8 => 'Lisades selle sndmuse oma kalendrisse saad kiire levaate just sind huvitavatest sndmustest, kui klpsad "Kasutaja funktsioonid" valikute hulgas "Minu kalender".',
+    9 => 'Lisa minu kalendrisse',
+    10 => 'Eemalda minu kalendrist',
+    11 => "Sndmuse lisamine {$_USER['username']} kalendrisse",
+    12 => 'Sndmus',
+    13 => 'Algab',
+    14 => 'Lpeb',
+    15 => 'Tagasi kalendrisse',
+    16 => 'Kalender',
+    17 => 'Alguspev',
+    18 => 'Lpupev',
+    19 => 'Sisestused kalendrisse',
+    20 => 'Tiitel',
+    21 => 'Algusaeg',
+    22 => 'URL',
+    23 => 'Sinu sndmused',
+    24 => 'Sndmused',
+    25 => 'Pole tulevasi sndmusi',
+    26 => 'Lisa sndmus',
+    27 => "Lisades {$_CONF['site_name']} lehele sndmuse, paigutub see peakalendrisse, kust kasutajad saavad soovi korral lisada selle oma enda isiklikku kalendrisse. Lehe kalender <b>ei ole </b> meldud teieisiklike sndmuste, nagu snnipevade vi thtpevade jaoks.<br><br>Prast sndmuse lisamist saadetakse see meie administraatoritele. Administraatorite poolt kinnitatud sndmus ilmub peakalendrisse.",
+    28 => 'Tiitel',
+    29 => 'Lpuaeg',
+    30 => 'Algusaeg',
+    31 => 'Kogu peva sndmus',
+    32 => 'Aadressrida 1',
+    33 => 'Aadressrida 2',
+    34 => 'Linn',
+    35 => 'Piirkond',
+    36 => 'postiindeks',
+    37 => 'Sndmuse tp',
+    38 => 'Toimeta sndmuste tpe',
+    39 => 'Asukoht',
+    40 => 'Lisa sndmus - ',
+    41 => 'Peakalender',
+    42 => 'Isiklik kalender',
+    43 => 'Link',
+    44 => 'HTML sildid pole lubatud',
+    45 => 'Sisesta',
+    46 => 'Sndmused lehel',
+    47 => 'Top 10 sndmust',
+    48 => 'klikke',
+    49 => 'Nib, et saidil pole htegi sndmust vi mitte keegi pole neil klpsanud.',
+    50 => 'Sndmused',
+    51 => 'Kustuta',
+);
+
+$_LANG_CAL_SEARCH = array(
+    'results' => 'Kalendri tulemused',
+    'title' => 'Tiitel',
+    'date_time' => 'Pev ja kellaaeg',
+    'location' => 'Asukoht',
+    'description' => 'Kirjeldus'
+
+);
+
+###############################################################################
+# calendar.php ($LANG30)
+
+$LANG_CAL_2 = array(
+    8 => 'Lisa sndmus',
+    9 => '%s sndmus',
+    10 => 'Sndmused, kasutaja',
+    11 => 'Peakalender',
+    12 => 'Minu kalender',
+    25 => 'tagasi ',
+    26 => 'Kik pevad',
+    27 => 'Ndal',
+    28 => 'Isiklik kalender, kasutaja',
+    29 => 'Avalik kalender',
+    30 => 'kustuta sndmus',
+    31 => 'Lisa',
+    32 => 'Sndmus',
+    33 => 'Kuupev',
+    34 => 'Aeg',
+    35 => 'Kiirlisamine',
+    36 => 'Sisesta',
+    37 => 'Isiklik kalender ei ole sellel lehel kahjuks aktiveeritud.',
+    38 => 'Isiklik sndmuste toimetaja',
+    39 => 'Pev',
+    40 => 'Ndal',
+    41 => 'Kuu',
+    42 => 'Lisa peasndmus',
+    43 => 'Sisestatud sndmused'
+);
+
+###############################################################################
+# admin/plugins/calendar/index.php, formerly admin/event.php ($LANG22)
+
+$LANG_CAL_ADMIN = array(
+    1 => 'Sndmuste toimetaja',
+    2 => 'Viga',
+    3 => 'Sndmuse tiitel',
+    4 => 'Sndmuse URL',
+    5 => 'Sndmuse algusaeg',
+    6 => 'Sndmuse lpuaeg',
+    7 => 'Sndmuse asukoht',
+    8 => 'Sndmuse kirjeldus',
+    9 => '(koos http://)',
+    10 => 'Sa pead mrama sndmuse aja ja kellaaja, tiitli ja kirjelduse',
+    11 => 'Sndmuste haldaja',
+    12 => 'Sndmuse toimetamiseks vi kustutamiseks klpsa allpool selle tiitlil.  Uue sndmuse loomiseks klpsa Tee uus lal. Klpsa [C] olemasolevast sndmusest koopia tegemiseks.',
+    13 => 'Sndmuse tiitel',
+    14 => 'Alguspev',
+    15 => 'lpupev',
+    16 => '', // Ligips tkestatud',
+    17 => "Sa proovisid ligi pseda sndmusele, millele sul pole igust ligi pseda. See katse on logitud. Palun <a href=\"{$_CONF['site_admin_url']}/plugins/calendar/\">mine tagasi sndmuste haldamise lehele</a>.",
+    18 => '', // Uus sndmus',
+    19 => '', // Admin avaleht',
+    20 => 'salvesta',
+    21 => 'thista',
+    22 => 'kustuta',
+    23 => 'Sobimatu algusaeg.',
+    24 => 'Sobimatu lpuaeg.',
+    25 => 'Lpuaeg on enne algusaega.'
+);
+
+$LANG_CAL_MESSAGE = array(
+    'save'      => 'Sinu sndmus on edukalt salvestatud.',
+    'delete'    => 'Sndmus on edukalt kustutatud.',
+    'private'   => 'Sndmus on sinu kalendrisse salvestatud.',
+    'login'     => 'Ei saa enne sinu sisselogimist sinu isiklikku kalendrit avada',
+    'removed'   => 'Sndmus on sinu isiklikust kalendrist kustutatud.',
+    'noprivate' => 'Kahjuks pole sellel lehel isiklikud kalendrid kasutuses.',
+    'unauth'    => 'Sul pole ligipsu sndmuste haldamise lehele. Pane thele, et kik sellised lubamatud katsed logitakse',
+);
+
+$PLG_calendar_MESSAGE4  = "Tname sind {$_CONF['site_name']} lehele sndmuse sisestamise eest.  See saadeti meie meeskonnale kinnitamiseks. Prast kinnitamist on see sndmus nha <a href=\"{$_CONF['site_url']}/calendar/\">kalendri</a> osas.";
+$PLG_calendar_MESSAGE17 = 'Sndmus on edukalt salvestatud.';
+$PLG_calendar_MESSAGE18 = 'Sinu sndmus on edukalt kustutatud.';
+$PLG_calendar_MESSAGE24 = 'Sndmus on salvestatud sinu kalendrisse.';
+$PLG_calendar_MESSAGE26 = 'Sndmus on edukalt kustutatud.';
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/estonian_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/calendar/language/estonian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/estonian_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/language/estonian_utf-8.php	2006-10-15 02:54:35.000000000 -0500
@@ -0,0 +1,178 @@
+<?php
+
+###############################################################################
+# estonian_utf-8.php
+# This is the estonian language page for the Geeklog Calendar Plug-in!
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony@tonybibbs.com
+# Copyright (C) 2005 Trinity Bays
+# trinity93@gmail.com
+#
+# Estonian translation by Artur Räpp <rtr AT planet DOT ee>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+# index.php
+$LANG_CAL_1 = array(
+    1 => 'Sündmuste kalender',
+    2 => 'Kahjuks pole ühtegi sündmust, mida näidata.',
+    3 => 'Millal',
+    4 => 'Kus',
+    5 => 'Kirjeldus',
+    6 => 'Lisa sündmus',
+    7 => 'Tuleviku sündmused',
+    8 => 'Lisades selle sündmuse oma kalendrisse saad kiire ülevaate just sind huvitavatest sündmustest, kui klõpsad "Kasutaja funktsioonid" valikute hulgas "Minu kalender".',
+    9 => 'Lisa minu kalendrisse',
+    10 => 'Eemalda minu kalendrist',
+    11 => "Sündmuse lisamine {$_USER['username']} kalendrisse",
+    12 => 'Sündmus',
+    13 => 'Algab',
+    14 => 'Lõpeb',
+    15 => 'Tagasi kalendrisse',
+    16 => 'Kalender',
+    17 => 'Alguspäev',
+    18 => 'Lõpupäev',
+    19 => 'Sisestused kalendrisse',
+    20 => 'Tiitel',
+    21 => 'Algusaeg',
+    22 => 'URL',
+    23 => 'Sinu sündmused',
+    24 => 'Sündmused',
+    25 => 'Pole tulevasi sündmusi',
+    26 => 'Lisa sündmus',
+    27 => "Lisades {$_CONF['site_name']} lehele sündmuse, paigutub see peakalendrisse, kust kasutajad saavad soovi korral lisada selle oma enda isiklikku kalendrisse. Lehe kalender <b>ei ole </b> mõeldud teieisiklike sündmuste, nagu sünnipäevade või tähtpäevade jaoks.<br><br>Pärast sündmuse lisamist saadetakse see meie administraatoritele. Administraatorite poolt kinnitatud sündmus ilmub peakalendrisse.",
+    28 => 'Tiitel',
+    29 => 'Lõpuaeg',
+    30 => 'Algusaeg',
+    31 => 'Kogu päeva sündmus',
+    32 => 'Aadressrida 1',
+    33 => 'Aadressrida 2',
+    34 => 'Linn',
+    35 => 'Piirkond',
+    36 => 'postiindeks',
+    37 => 'Sündmuse tüüp',
+    38 => 'Toimeta sündmuste tüüpe',
+    39 => 'Asukoht',
+    40 => 'Lisa sündmus - ',
+    41 => 'Peakalender',
+    42 => 'Isiklik kalender',
+    43 => 'Link',
+    44 => 'HTML sildid pole lubatud',
+    45 => 'Sisesta',
+    46 => 'Sündmused lehel',
+    47 => 'Top 10 sündmust',
+    48 => 'klikke',
+    49 => 'Näib, et saidil pole ühtegi sündmust või mitte keegi pole neil klõpsanud.',
+    50 => 'Sündmused',
+    51 => 'Kustuta',
+);
+
+$_LANG_CAL_SEARCH = array(
+    'results' => 'Kalendri tulemused',
+    'title' => 'Tiitel',
+    'date_time' => 'Päev ja kellaaeg',
+    'location' => 'Asukoht',
+    'description' => 'Kirjeldus'
+
+);
+
+###############################################################################
+# calendar.php ($LANG30)
+
+$LANG_CAL_2 = array(
+    8 => 'Lisa sündmus',
+    9 => '%s sündmus',
+    10 => 'Sündmused, kasutaja',
+    11 => 'Peakalender',
+    12 => 'Minu kalender',
+    25 => 'tagasi ',
+    26 => 'Kõik päevad',
+    27 => 'Nädal',
+    28 => 'Isiklik kalender, kasutaja',
+    29 => 'Avalik kalender',
+    30 => 'kustuta sündmus',
+    31 => 'Lisa',
+    32 => 'Sündmus',
+    33 => 'Kuupäev',
+    34 => 'Aeg',
+    35 => 'Kiirlisamine',
+    36 => 'Sisesta',
+    37 => 'Isiklik kalender ei ole sellel lehel kahjuks aktiveeritud.',
+    38 => 'Isiklik sündmuste toimetaja',
+    39 => 'Päev',
+    40 => 'Nädal',
+    41 => 'Kuu',
+    42 => 'Lisa peasündmus',
+    43 => 'Sisestatud sündmused'
+);
+
+###############################################################################
+# admin/plugins/calendar/index.php, formerly admin/event.php ($LANG22)
+
+$LANG_CAL_ADMIN = array(
+    1 => 'Sündmuste toimetaja',
+    2 => 'Viga',
+    3 => 'Sündmuse tiitel',
+    4 => 'Sündmuse URL',
+    5 => 'Sündmuse algusaeg',
+    6 => 'Sündmuse lõpuaeg',
+    7 => 'Sündmuse asukoht',
+    8 => 'Sündmuse kirjeldus',
+    9 => '(koos http://)',
+    10 => 'Sa pead määrama sündmuse aja ja kellaaja, tiitli ja kirjelduse',
+    11 => 'Sündmuste haldaja',
+    12 => 'Sündmuse toimetamiseks või kustutamiseks klõpsa allpool selle tiitlil.  Uue sündmuse loomiseks klõpsa Tee uus ülal. Klõpsa [C] olemasolevast sündmusest koopia tegemiseks.',
+    13 => 'Sündmuse tiitel',
+    14 => 'Alguspäev',
+    15 => 'lõpupäev',
+    16 => '', // Ligipääs tõkestatud',
+    17 => "Sa proovisid ligi pääseda sündmusele, millele sul pole õigust ligi pääseda. See katse on logitud. Palun <a href=\"{$_CONF['site_admin_url']}/plugins/calendar/\">mine tagasi sündmuste haldamise lehele</a>.",
+    18 => '', // Uus sündmus',
+    19 => '', // Admin avaleht',
+    20 => 'salvesta',
+    21 => 'tühista',
+    22 => 'kustuta',
+    23 => 'Sobimatu algusaeg.',
+    24 => 'Sobimatu lõpuaeg.',
+    25 => 'Lõpuaeg on enne algusaega.'
+);
+
+$LANG_CAL_MESSAGE = array(
+    'save'      => 'Sinu sündmus on edukalt salvestatud.',
+    'delete'    => 'Sündmus on edukalt kustutatud.',
+    'private'   => 'Sündmus on sinu kalendrisse salvestatud.',
+    'login'     => 'Ei saa enne sinu sisselogimist sinu isiklikku kalendrit avada',
+    'removed'   => 'Sündmus on sinu isiklikust kalendrist kustutatud.',
+    'noprivate' => 'Kahjuks pole sellel lehel isiklikud kalendrid kasutuses.',
+    'unauth'    => 'Sul pole ligipääsu sündmuste haldamise lehele. Pane tähele, et kõik sellised lubamatud katsed logitakse',
+);
+
+$PLG_calendar_MESSAGE4  = "Täname sind {$_CONF['site_name']} lehele sündmuse sisestamise eest.  See saadeti meie meeskonnale kinnitamiseks. Pärast kinnitamist on see sündmus näha <a href=\"{$_CONF['site_url']}/calendar/\">kalendri</a> osas.";
+$PLG_calendar_MESSAGE17 = 'Sündmus on edukalt salvestatud.';
+$PLG_calendar_MESSAGE18 = 'Sinu sündmus on edukalt kustutatud.';
+$PLG_calendar_MESSAGE24 = 'Sündmus on salvestatud sinu kalendrisse.';
+$PLG_calendar_MESSAGE26 = 'Sündmus on edukalt kustutatud.';
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/german_formal.php 1.4.1.src/cpanel-glprivate/plugins/calendar/language/german_formal.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/german_formal.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/language/german_formal.php	2006-10-01 12:53:35.000000000 -0500
@@ -0,0 +1,175 @@
+<?php
+
+###############################################################################
+# german_formal.php
+#
+# This is the formal German language file for the Geeklog Calendar Plugin
+#
+# Copyright (C) 2006 Dirk Haun
+# dirk AT haun-online DOT de
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+# index.php
+$LANG_CAL_1 = array(
+    1 => 'Terminkalender',
+    2 => 'Es gibt keine Termine anzuzeigen.',
+    3 => 'Wann',
+    4 => 'Wo',
+    5 => 'Beschreibung',
+    6 => 'Termin hinzufgen',
+    7 => 'Anstehende Termine',
+    8 => 'Wenn Sie diesen Termin zu Ihrem Kalender hinzufgen, knnen Sie sich schneller einen berblick ber die Termine verschaffen, die Sie interessieren, indem Sie einfach auf "Mein Kalender" klicken.',
+    9 => 'Zu Meinem Kalender hinzufgen',
+    10 => 'Aus Meinem Kalender entfernen',
+    11 => 'Termin wird zum Kalender von %s hinzugefgt',
+    12 => 'Termin',
+    13 => 'Beginnt',
+    14 => 'Endet',
+    15 => 'Zurck zum Kalender',
+    16 => 'Kalender',
+    17 => 'Startdatum',
+    18 => 'Enddatum',
+    19 => 'Beitrge: Kalender',
+    20 => 'Titel',
+    21 => 'Startdatum',
+    22 => 'URL',
+    23 => 'Meine Termine',
+    24 => 'Allgemeine Termine',
+    25 => 'Es stehen keine Termine an',
+    26 => 'Einen Termin einreichen',
+    27 => "Wenn Sie einen Termin bei {$_CONF['site_name']} einreichen, wird er in den Kalender aufgenommen, von wo aus ihn andere User in ihren persnlichen Kalender bernehmen knnen. Dies ist <b>NICHT</b> dazu gedacht, private Termine und Ereignisse wie etwa Geburtstage zu verwalten.<br><br>Wenn Sie einen Termin einreichen, wird er an die Administratoren weitergeleitet und sobald er von diesen akzeptiert wird, wird er im Kalender erscheinen.",
+    28 => 'Titel',
+    29 => 'Endzeit',
+    30 => 'Startzeit',
+    31 => 'Ganztgiger Termin',
+    32 => 'Addresse, Zeile 1',
+    33 => 'Addresse, Zeile 2',
+    34 => 'Stadt',
+    35 => 'Bundesland',
+    36 => 'Postleitzahl',
+    37 => 'Art des Termins',
+    38 => 'Termin-Arten ndern',
+    39 => 'Ort',
+    40 => 'Termin hinzufgen zu',
+    41 => 'Kalender',
+    42 => 'Persnlicher Kalender',
+    43 => 'Link',
+    44 => 'HTML ist nicht erlaubt',
+    45 => 'Abschicken',
+    46 => 'Anzahl Termine',
+    47 => 'Top Ten der Termine',
+    48 => 'Angezeigt',
+    49 => 'Es gibt keine Termine oder sie wurden von niemandem gelesen.',
+    50 => 'Termine',
+    51 => 'Lschen'
+);
+
+$_LANG_CAL_SEARCH = array(
+    'results' => 'Gefundene Termine',
+    'title' => 'Titel',
+    'date_time' => 'Datum und Uhrzeit',
+    'location' => 'Ort',
+    'description' => 'Beschreibung'
+
+);
+
+###############################################################################
+# calendar.php ($LANG30)
+
+$LANG_CAL_2 = array(
+    8 => 'Neuer Termin',
+    9 => 'Termin',
+    10 => 'Termine am',
+    11 => 'Kalender',
+    12 => 'Mein Kalender',
+    25 => 'Zurck zum ',
+    26 => 'ganztgig',
+    27 => 'Woche',
+    28 => 'Persnlicher Kalender fr',
+    29 => 'ffentlicher Kalender',
+    30 => 'Termin lschen',
+    31 => 'Hinzufgen',
+    32 => 'Termin',
+    33 => 'Datum',
+    34 => 'Uhrzeit',
+    35 => 'Neuer Termin',
+    36 => 'Abschicken',
+    37 => 'Der persnliche Kalender ist auf dieser Website nicht verfgbar.',
+    38 => 'Persnlicher Termin-Editor',
+    39 => 'Tag',
+    40 => 'Woche',
+    41 => 'Monat',
+    42 => 'Neuer Termin',
+    43 => 'Beitrge: Termine'
+);
+
+###############################################################################
+# admin/event.php (LANG22)
+
+$LANG_CAL_ADMIN = array(
+    1 => 'Termin-Editor',
+    2 => 'Fehler',
+    3 => 'Titel',
+    4 => 'URL',
+    5 => 'Startdatum',
+    6 => 'Enddatum',
+    7 => 'Ort',
+    8 => 'Beschreibung',
+    9 => '(mit http://)',
+    10 => 'Es mssen mindestens Datum und Uhrzeit, Titel und Beschreibung eingegeben werden!',
+    11 => 'Kalender-Manager',
+    12 => 'Auf das ndern-Icon klicken, um einen Termin zu ndern oder zu lschen. Mit Neu anlegen (s.o.) wird ein neuer Termin angelegt. Das Kopie-Icon erzeugt eine Kopie eines vorhandenen Termins.',
+    13 => 'Autor',
+    14 => 'Startdatum',
+    15 => 'Enddatum',
+    16 => 'Zugriff verweigert',
+    17 => "Sie haben keine Zugriffsrechte fr diesen Termin. Dieser Zugriffsversuch wurde protokolliert. <a href=\"{$_CONF['site_admin_url']}/plugins/calendar/index.php\">Zurck zum Administrator-Men</a>.",
+    18 => '',
+    19 => '',
+    20 => 'Speichern',
+    21 => 'Abbruch',
+    22 => 'Lschen',
+    23 => 'Ungltiges Startdatum.',
+    24 => 'Ungltiges Enddatum.',
+    25 => 'Enddatum ist vor dem Startdatum.'
+);
+
+$LANG_CAL_MESSAGE = array(
+    'save'      => 'Der Termin wurde gespeichert.',
+    'delete'    => 'Der Termin wurde gelscht.',
+    'private'   => 'Der Termin wurde in Ihren Kalender eingetragen.',
+    'login'     => 'Sie mssen angemeldet sein, um auf Ihren persnlichen Kalender zugreifen zu knnen.',
+    'removed'   => 'Der Termin wurde aus Ihrem persnlichen Kalender entfernt',
+    'noprivate' => 'Persnliche Kalender sind auf dieser Site nicht verfgbar.',
+    'unauth'    => 'Sie haben keinen Zugriff auf die Termin-Administrationsseite. Alle Versuche, auf Bereiche ohne entsprechende Berechtigung zuzugreifen, werden protokolliert.'
+);
+
+$PLG_calendar_MESSAGE4  = "Danke fr Ihren Beitrag zu {$_CONF['site_name']}. Ihr Termin wurde an unser Team weitergeleitet. Wenn er akzeptiert wird, wird er bald im <a href=\"{$_CONF['site_url']}/calendar/index.php\">Kalender</a> aufgelistet werden.";
+$PLG_calendar_MESSAGE17 = 'Ihr Termin wurde gespeichert.';
+$PLG_calendar_MESSAGE18 = 'Der Termin wurde gelscht.';
+$PLG_calendar_MESSAGE24 = 'Der Termin wurde in Ihren Kalender eingetragen.';
+$PLG_calendar_MESSAGE26 = 'Der Termin wurde gelscht.';
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/german_formal_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/calendar/language/german_formal_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/german_formal_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/language/german_formal_utf-8.php	2006-10-01 12:53:35.000000000 -0500
@@ -0,0 +1,175 @@
+<?php
+
+###############################################################################
+# german_formal_utf-8.php
+#
+# This is the formal German language file for the Geeklog Calendar Plugin
+#
+# Copyright (C) 2006 Dirk Haun
+# dirk AT haun-online DOT de
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+# index.php
+$LANG_CAL_1 = array(
+    1 => 'Terminkalender',
+    2 => 'Es gibt keine Termine anzuzeigen.',
+    3 => 'Wann',
+    4 => 'Wo',
+    5 => 'Beschreibung',
+    6 => 'Termin hinzufügen',
+    7 => 'Anstehende Termine',
+    8 => 'Wenn Sie diesen Termin zu Ihrem Kalender hinzufügen, können Sie sich schneller einen Überblick über die Termine verschaffen, die Sie interessieren, indem Sie einfach auf "Mein Kalender" klicken.',
+    9 => 'Zu Meinem Kalender hinzufügen',
+    10 => 'Aus Meinem Kalender entfernen',
+    11 => 'Termin wird zum Kalender von %s hinzugefügt',
+    12 => 'Termin',
+    13 => 'Beginnt',
+    14 => 'Endet',
+    15 => 'Zurück zum Kalender',
+    16 => 'Kalender',
+    17 => 'Startdatum',
+    18 => 'Enddatum',
+    19 => 'Beiträge: Kalender',
+    20 => 'Titel',
+    21 => 'Startdatum',
+    22 => 'URL',
+    23 => 'Meine Termine',
+    24 => 'Allgemeine Termine',
+    25 => 'Es stehen keine Termine an',
+    26 => 'Einen Termin einreichen',
+    27 => "Wenn Sie einen Termin bei {$_CONF['site_name']} einreichen, wird er in den Kalender aufgenommen, von wo aus ihn andere User in ihren persönlichen Kalender übernehmen können. Dies ist <b>NICHT</b> dazu gedacht, private Termine und Ereignisse wie etwa Geburtstage zu verwalten.<br><br>Wenn Sie einen Termin einreichen, wird er an die Administratoren weitergeleitet und sobald er von diesen akzeptiert wird, wird er im Kalender erscheinen.",
+    28 => 'Titel',
+    29 => 'Endzeit',
+    30 => 'Startzeit',
+    31 => 'Ganztägiger Termin',
+    32 => 'Addresse, Zeile 1',
+    33 => 'Addresse, Zeile 2',
+    34 => 'Stadt',
+    35 => 'Bundesland',
+    36 => 'Postleitzahl',
+    37 => 'Art des Termins',
+    38 => 'Termin-Arten ändern',
+    39 => 'Ort',
+    40 => 'Termin hinzufügen zu',
+    41 => 'Kalender',
+    42 => 'Persönlicher Kalender',
+    43 => 'Link',
+    44 => 'HTML ist nicht erlaubt',
+    45 => 'Abschicken',
+    46 => 'Anzahl Termine',
+    47 => 'Top Ten der Termine',
+    48 => 'Angezeigt',
+    49 => 'Es gibt keine Termine oder sie wurden von niemandem gelesen.',
+    50 => 'Termine',
+    51 => 'Löschen'
+);
+
+$_LANG_CAL_SEARCH = array(
+    'results' => 'Gefundene Termine',
+    'title' => 'Titel',
+    'date_time' => 'Datum und Uhrzeit',
+    'location' => 'Ort',
+    'description' => 'Beschreibung'
+
+);
+
+###############################################################################
+# calendar.php ($LANG30)
+
+$LANG_CAL_2 = array(
+    8 => 'Neuer Termin',
+    9 => 'Termin',
+    10 => 'Termine am',
+    11 => 'Kalender',
+    12 => 'Mein Kalender',
+    25 => 'Zurück zum ',
+    26 => 'ganztägig',
+    27 => 'Woche',
+    28 => 'Persönlicher Kalender für',
+    29 => 'Öffentlicher Kalender',
+    30 => 'Termin löschen',
+    31 => 'Hinzufügen',
+    32 => 'Termin',
+    33 => 'Datum',
+    34 => 'Uhrzeit',
+    35 => 'Neuer Termin',
+    36 => 'Abschicken',
+    37 => 'Der persönliche Kalender ist auf dieser Website nicht verfügbar.',
+    38 => 'Persönlicher Termin-Editor',
+    39 => 'Tag',
+    40 => 'Woche',
+    41 => 'Monat',
+    42 => 'Neuer Termin',
+    43 => 'Beiträge: Termine'
+);
+
+###############################################################################
+# admin/event.php (LANG22)
+
+$LANG_CAL_ADMIN = array(
+    1 => 'Termin-Editor',
+    2 => 'Fehler',
+    3 => 'Titel',
+    4 => 'URL',
+    5 => 'Startdatum',
+    6 => 'Enddatum',
+    7 => 'Ort',
+    8 => 'Beschreibung',
+    9 => '(mit http://)',
+    10 => 'Es müssen mindestens Datum und Uhrzeit, Titel und Beschreibung eingegeben werden!',
+    11 => 'Kalender-Manager',
+    12 => 'Auf das Ändern-Icon klicken, um einen Termin zu ändern oder zu löschen. Mit Neu anlegen (s.o.) wird ein neuer Termin angelegt. Das Kopie-Icon erzeugt eine Kopie eines vorhandenen Termins.',
+    13 => 'Autor',
+    14 => 'Startdatum',
+    15 => 'Enddatum',
+    16 => 'Zugriff verweigert',
+    17 => "Sie haben keine Zugriffsrechte für diesen Termin. Dieser Zugriffsversuch wurde protokolliert. <a href=\"{$_CONF['site_admin_url']}/plugins/calendar/index.php\">Zurück zum Administrator-Menü</a>.",
+    18 => '',
+    19 => '',
+    20 => 'Speichern',
+    21 => 'Abbruch',
+    22 => 'Löschen',
+    23 => 'Ungültiges Startdatum.',
+    24 => 'Ungültiges Enddatum.',
+    25 => 'Enddatum ist vor dem Startdatum.'
+);
+
+$LANG_CAL_MESSAGE = array(
+    'save'      => 'Der Termin wurde gespeichert.',
+    'delete'    => 'Der Termin wurde gelöscht.',
+    'private'   => 'Der Termin wurde in Ihren Kalender eingetragen.',
+    'login'     => 'Sie müssen angemeldet sein, um auf Ihren persönlichen Kalender zugreifen zu können.',
+    'removed'   => 'Der Termin wurde aus Ihrem persönlichen Kalender entfernt',
+    'noprivate' => 'Persönliche Kalender sind auf dieser Site nicht verfügbar.',
+    'unauth'    => 'Sie haben keinen Zugriff auf die Termin-Administrationsseite. Alle Versuche, auf Bereiche ohne entsprechende Berechtigung zuzugreifen, werden protokolliert.'
+);
+
+$PLG_calendar_MESSAGE4  = "Danke für Ihren Beitrag zu {$_CONF['site_name']}. Ihr Termin wurde an unser Team weitergeleitet. Wenn er akzeptiert wird, wird er bald im <a href=\"{$_CONF['site_url']}/calendar/index.php\">Kalender</a> aufgelistet werden.";
+$PLG_calendar_MESSAGE17 = 'Ihr Termin wurde gespeichert.';
+$PLG_calendar_MESSAGE18 = 'Der Termin wurde gelöscht.';
+$PLG_calendar_MESSAGE24 = 'Der Termin wurde in Ihren Kalender eingetragen.';
+$PLG_calendar_MESSAGE26 = 'Der Termin wurde gelöscht.';
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/german.php 1.4.1.src/cpanel-glprivate/plugins/calendar/language/german.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/german.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/language/german.php	2006-10-01 12:53:35.000000000 -0500
@@ -0,0 +1,175 @@
+<?php
+
+###############################################################################
+# german.php
+#
+# This is the German language file for the Geeklog Calendar Plugin
+#
+# Copyright (C) 2006 Dirk Haun
+# dirk AT haun-online DOT de
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+# index.php
+$LANG_CAL_1 = array(
+    1 => 'Terminkalender',
+    2 => 'Es gibt keine Termine anzuzeigen.',
+    3 => 'Wann',
+    4 => 'Wo',
+    5 => 'Beschreibung',
+    6 => 'Termin hinzufgen',
+    7 => 'Anstehende Termine',
+    8 => 'Wenn Du diesen Termin zu Deinem Kalender hinzufgst, kannst Du Dir schneller einen berblick ber die Termine verschaffen, die Dich interessieren, indem Du einfach auf "Mein Kalender" klickst.',
+    9 => 'Zu Meinem Kalender hinzufgen',
+    10 => 'Aus Meinem Kalender entfernen',
+    11 => 'Termin wird zum Kalender von %s hinzugefgt',
+    12 => 'Termin',
+    13 => 'Beginnt',
+    14 => 'Endet',
+    15 => 'Zurck zum Kalender',
+    16 => 'Kalender',
+    17 => 'Startdatum',
+    18 => 'Enddatum',
+    19 => 'Beitrge: Kalender',
+    20 => 'Titel',
+    21 => 'Startdatum',
+    22 => 'URL',
+    23 => 'Meine Termine',
+    24 => 'Allgemeine Termine',
+    25 => 'Es stehen keine Termine an',
+    26 => 'Einen Termin einreichen',
+    27 => "Wenn Du einen Termin bei {$_CONF['site_name']} einreichst, wird er in den Kalender aufgenommen, von wo aus ihn andere User in ihren persnlichen Kalender bernehmen knnen. Dies ist <b>NICHT</b> dazu gedacht, private Termine und Ereignisse wie etwa Geburtstage zu verwalten.<br><br>Wenn Du einen Termin einreichst, wird er an die Administratoren weitergeleitet und sobald er von diesen akzeptiert wird, wird er im Kalender erscheinen.",
+    28 => 'Titel',
+    29 => 'Endzeit',
+    30 => 'Startzeit',
+    31 => 'Ganztgiger Termin',
+    32 => 'Addresse, Zeile 1',
+    33 => 'Addresse, Zeile 2',
+    34 => 'Stadt',
+    35 => 'Bundesland',
+    36 => 'Postleitzahl',
+    37 => 'Art des Termins',
+    38 => 'Termin-Arten ndern',
+    39 => 'Ort',
+    40 => 'Termin hinzufgen zu',
+    41 => 'Kalender',
+    42 => 'Persnlicher Kalender',
+    43 => 'Link',
+    44 => 'HTML ist nicht erlaubt',
+    45 => 'Abschicken',
+    46 => 'Anzahl Termine',
+    47 => 'Top Ten der Termine',
+    48 => 'Angezeigt',
+    49 => 'Es gibt keine Termine oder sie wurden von niemandem gelesen.',
+    50 => 'Termine',
+    51 => 'Lschen'
+);
+
+$_LANG_CAL_SEARCH = array(
+    'results' => 'Gefundene Termine',
+    'title' => 'Titel',
+    'date_time' => 'Datum und Uhrzeit',
+    'location' => 'Ort',
+    'description' => 'Beschreibung'
+
+);
+
+###############################################################################
+# calendar.php ($LANG30)
+
+$LANG_CAL_2 = array(
+    8 => 'Neuer Termin',
+    9 => 'Termin',
+    10 => 'Termine am',
+    11 => 'Kalender',
+    12 => 'Mein Kalender',
+    25 => 'Zurck zum ',
+    26 => 'ganztgig',
+    27 => 'Woche',
+    28 => 'Persnlicher Kalender fr',
+    29 => 'ffentlicher Kalender',
+    30 => 'Termin lschen',
+    31 => 'Hinzufgen',
+    32 => 'Termin',
+    33 => 'Datum',
+    34 => 'Uhrzeit',
+    35 => 'Neuer Termin',
+    36 => 'Abschicken',
+    37 => 'Sorry, der persnliche Kalender ist auf dieser Site nicht verfgbar.',
+    38 => 'Persnlicher Termin-Editor',
+    39 => 'Tag',
+    40 => 'Woche',
+    41 => 'Monat',
+    42 => 'Neuer Termin',
+    43 => 'Beitrge: Termine'
+);
+
+###############################################################################
+# admin/event.php (LANG22)
+
+$LANG_CAL_ADMIN = array(
+    1 => 'Termin-Editor',
+    2 => 'Fehler',
+    3 => 'Titel',
+    4 => 'URL',
+    5 => 'Startdatum',
+    6 => 'Enddatum',
+    7 => 'Ort',
+    8 => 'Beschreibung',
+    9 => '(mit http://)',
+    10 => 'Es mssen mindestens Datum und Uhrzeit, Titel und Beschreibung eingegeben werden!',
+    11 => 'Kalender-Manager',
+    12 => 'Auf das ndern-Icon klicken, um einen Termin zu ndern oder zu lschen. Mit Neu anlegen (s.o.) wird ein neuer Termin angelegt. Das Kopie-Icon erzeugt eine Kopie eines vorhandenen Termins.',
+    13 => 'Autor',
+    14 => 'Startdatum',
+    15 => 'Enddatum',
+    16 => 'Zugriff verweigert',
+    17 => "Du hast keine Zugriffsrechte fr diesen Termin. Dieser Zugriffsversuch wurde protokolliert. <a href=\"{$_CONF['site_admin_url']}/plugins/calendar/index.php\">Zurck zum Administrator-Men</a>.",
+    18 => '',
+    19 => '',
+    20 => 'Speichern',
+    21 => 'Abbruch',
+    22 => 'Lschen',
+    23 => 'Ungltiges Startdatum.',
+    24 => 'Ungltiges Enddatum.',
+    25 => 'Enddatum ist vor dem Startdatum.'
+);
+
+$LANG_CAL_MESSAGE = array(
+    'save'      => 'Dein Termin wurde gespeichert.',
+    'delete'    => 'Der Termin wurde gelscht.',
+    'private'   => 'Der Termin wurde in Deinen Kalender eingetragen.',
+    'login'     => 'Du musst angemeldet sein, um auf Deinen persnlichen Kalender zugreifen zu knnen.',
+    'removed'   => 'Der Termin wurde aus Deinem persnlichen Kalender entfernt',
+    'noprivate' => 'Sorry, persnliche Kalender sind auf dieser Site nicht verfgbar.',
+    'unauth'    => 'Du hast keinen Zugriff auf die Termin-Administrationsseite. Alle Versuche, auf Bereiche ohne entsprechende Berechtigung zuzugreifen, werden protokolliert.'
+);
+
+$PLG_calendar_MESSAGE4  = "Danke fr Deinen Beitrag zu {$_CONF['site_name']}. Dein Termin wurde an unser Team weitergeleitet. Wenn er akzeptiert wird, wird er bald im <a href=\"{$_CONF['site_url']}/calendar/index.php\">Kalender</a> aufgelistet werden.";
+$PLG_calendar_MESSAGE17 = 'Dein Termin wurde gespeichert.';
+$PLG_calendar_MESSAGE18 = 'Der Termin wurde gelscht.';
+$PLG_calendar_MESSAGE24 = 'Der Termin wurde in Deinen Kalender eingetragen.';
+$PLG_calendar_MESSAGE26 = 'Der Termin wurde gelscht.';
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/german_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/calendar/language/german_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/german_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/language/german_utf-8.php	2006-10-01 12:53:35.000000000 -0500
@@ -0,0 +1,175 @@
+<?php
+
+###############################################################################
+# german_utf-8.php
+#
+# This is the German language file for the Geeklog Calendar Plugin
+#
+# Copyright (C) 2006 Dirk Haun
+# dirk AT haun-online DOT de
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+# index.php
+$LANG_CAL_1 = array(
+    1 => 'Terminkalender',
+    2 => 'Es gibt keine Termine anzuzeigen.',
+    3 => 'Wann',
+    4 => 'Wo',
+    5 => 'Beschreibung',
+    6 => 'Termin hinzufügen',
+    7 => 'Anstehende Termine',
+    8 => 'Wenn Du diesen Termin zu Deinem Kalender hinzufügst, kannst Du Dir schneller einen Überblick über die Termine verschaffen, die Dich interessieren, indem Du einfach auf "Mein Kalender" klickst.',
+    9 => 'Zu Meinem Kalender hinzufügen',
+    10 => 'Aus Meinem Kalender entfernen',
+    11 => 'Termin wird zum Kalender von %s hinzugefügt',
+    12 => 'Termin',
+    13 => 'Beginnt',
+    14 => 'Endet',
+    15 => 'Zurück zum Kalender',
+    16 => 'Kalender',
+    17 => 'Startdatum',
+    18 => 'Enddatum',
+    19 => 'Beiträge: Kalender',
+    20 => 'Titel',
+    21 => 'Startdatum',
+    22 => 'URL',
+    23 => 'Meine Termine',
+    24 => 'Allgemeine Termine',
+    25 => 'Es stehen keine Termine an',
+    26 => 'Einen Termin einreichen',
+    27 => "Wenn Du einen Termin bei {$_CONF['site_name']} einreichst, wird er in den Kalender aufgenommen, von wo aus ihn andere User in ihren persönlichen Kalender übernehmen können. Dies ist <b>NICHT</b> dazu gedacht, private Termine und Ereignisse wie etwa Geburtstage zu verwalten.<br><br>Wenn Du einen Termin einreichst, wird er an die Administratoren weitergeleitet und sobald er von diesen akzeptiert wird, wird er im Kalender erscheinen.",
+    28 => 'Titel',
+    29 => 'Endzeit',
+    30 => 'Startzeit',
+    31 => 'Ganztägiger Termin',
+    32 => 'Addresse, Zeile 1',
+    33 => 'Addresse, Zeile 2',
+    34 => 'Stadt',
+    35 => 'Bundesland',
+    36 => 'Postleitzahl',
+    37 => 'Art des Termins',
+    38 => 'Termin-Arten ändern',
+    39 => 'Ort',
+    40 => 'Termin hinzufügen zu',
+    41 => 'Kalender',
+    42 => 'Persönlicher Kalender',
+    43 => 'Link',
+    44 => 'HTML ist nicht erlaubt',
+    45 => 'Abschicken',
+    46 => 'Anzahl Termine',
+    47 => 'Top Ten der Termine',
+    48 => 'Angezeigt',
+    49 => 'Es gibt keine Termine oder sie wurden von niemandem gelesen.',
+    50 => 'Termine',
+    51 => 'Löschen'
+);
+
+$_LANG_CAL_SEARCH = array(
+    'results' => 'Gefundene Termine',
+    'title' => 'Titel',
+    'date_time' => 'Datum und Uhrzeit',
+    'location' => 'Ort',
+    'description' => 'Beschreibung'
+
+);
+
+###############################################################################
+# calendar.php ($LANG30)
+
+$LANG_CAL_2 = array(
+    8 => 'Neuer Termin',
+    9 => 'Termin',
+    10 => 'Termine am',
+    11 => 'Kalender',
+    12 => 'Mein Kalender',
+    25 => 'Zurück zum ',
+    26 => 'ganztägig',
+    27 => 'Woche',
+    28 => 'Persönlicher Kalender für',
+    29 => 'Öffentlicher Kalender',
+    30 => 'Termin löschen',
+    31 => 'Hinzufügen',
+    32 => 'Termin',
+    33 => 'Datum',
+    34 => 'Uhrzeit',
+    35 => 'Neuer Termin',
+    36 => 'Abschicken',
+    37 => 'Sorry, der persönliche Kalender ist auf dieser Site nicht verfügbar.',
+    38 => 'Persönlicher Termin-Editor',
+    39 => 'Tag',
+    40 => 'Woche',
+    41 => 'Monat',
+    42 => 'Neuer Termin',
+    43 => 'Beiträge: Termine'
+);
+
+###############################################################################
+# admin/event.php (LANG22)
+
+$LANG_CAL_ADMIN = array(
+    1 => 'Termin-Editor',
+    2 => 'Fehler',
+    3 => 'Titel',
+    4 => 'URL',
+    5 => 'Startdatum',
+    6 => 'Enddatum',
+    7 => 'Ort',
+    8 => 'Beschreibung',
+    9 => '(mit http://)',
+    10 => 'Es müssen mindestens Datum und Uhrzeit, Titel und Beschreibung eingegeben werden!',
+    11 => 'Kalender-Manager',
+    12 => 'Auf das Ändern-Icon klicken, um einen Termin zu ändern oder zu löschen. Mit Neu anlegen (s.o.) wird ein neuer Termin angelegt. Das Kopie-Icon erzeugt eine Kopie eines vorhandenen Termins.',
+    13 => 'Autor',
+    14 => 'Startdatum',
+    15 => 'Enddatum',
+    16 => 'Zugriff verweigert',
+    17 => "Du hast keine Zugriffsrechte für diesen Termin. Dieser Zugriffsversuch wurde protokolliert. <a href=\"{$_CONF['site_admin_url']}/plugins/calendar/index.php\">Zurück zum Administrator-Menü</a>.",
+    18 => '',
+    19 => '',
+    20 => 'Speichern',
+    21 => 'Abbruch',
+    22 => 'Löschen',
+    23 => 'Ungültiges Startdatum.',
+    24 => 'Ungültiges Enddatum.',
+    25 => 'Enddatum ist vor dem Startdatum.'
+);
+
+$LANG_CAL_MESSAGE = array(
+    'save'      => 'Dein Termin wurde gespeichert.',
+    'delete'    => 'Der Termin wurde gelöscht.',
+    'private'   => 'Der Termin wurde in Deinen Kalender eingetragen.',
+    'login'     => 'Du musst angemeldet sein, um auf Deinen persönlichen Kalender zugreifen zu können.',
+    'removed'   => 'Der Termin wurde aus Deinem persönlichen Kalender entfernt',
+    'noprivate' => 'Sorry, persönliche Kalender sind auf dieser Site nicht verfügbar.',
+    'unauth'    => 'Du hast keinen Zugriff auf die Termin-Administrationsseite. Alle Versuche, auf Bereiche ohne entsprechende Berechtigung zuzugreifen, werden protokolliert.'
+);
+
+$PLG_calendar_MESSAGE4  = "Danke für Deinen Beitrag zu {$_CONF['site_name']}. Dein Termin wurde an unser Team weitergeleitet. Wenn er akzeptiert wird, wird er bald im <a href=\"{$_CONF['site_url']}/calendar/index.php\">Kalender</a> aufgelistet werden.";
+$PLG_calendar_MESSAGE17 = 'Dein Termin wurde gespeichert.';
+$PLG_calendar_MESSAGE18 = 'Der Termin wurde gelöscht.';
+$PLG_calendar_MESSAGE24 = 'Der Termin wurde in Deinen Kalender eingetragen.';
+$PLG_calendar_MESSAGE26 = 'Der Termin wurde gelöscht.';
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/japanese.php 1.4.1.src/cpanel-glprivate/plugins/calendar/language/japanese.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/japanese.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/language/japanese.php	2006-12-11 18:12:56.000000000 -0600
@@ -0,0 +1,178 @@
+<?php
+
+###############################################################################
+# japanese_utf-8.php
+# This is the Japanese UTF-8 language page for the Geeklog Calendar Plug-in!
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony@tonybibbs.com
+# Copyright (C) 2005 Trinity Bays
+# trinity93@gmail.com
+# Tranlated by Geeklog Japanese group
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+# Last Update 2006/12/12 by Ivy (Geeklog Japanese)
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+# index.php
+$LANG_CAL_1 = array(
+    1 => '٥ȥ',
+    2 => '-',
+    3 => '',
+    4 => '',
+    5 => 'ܺ',
+    6 => '٥Ȥɲ',
+    7 => '줫Υ٥',
+    8 => 'ĿͥˤΥ٥ȤɲäȡָĿͥפ桼˥塼򤹤뤳ȤǸ뤳ȤǤޤ',
+    9 => 'Ŀͥɲ',
+    10 => 'Ŀͥ',
+    11 => "Υ٥Ȥ %sθĿͥɲ",
+    12 => '٥',
+    13 => '',
+    14 => 'λ',
+    15 => '',
+    16 => '',
+    17 => '',
+    18 => 'λ',
+    19 => '٥Ⱦ',
+    20 => 'ȥ',
+    21 => '',
+    22 => 'URL',
+    23 => 'ĿͤΥ٥',
+    24 => 'ȤΥ٥',
+    25 => '-',
+    26 => '٥Ȥ',
+    27 => "{$_CONF['site_name']}˥٥ȤƤȡΤΥϿޤ<br>ΥΥ٥Ȥϡƥ桼ɬפ˱ƸĿͥϿǤޤ",
+    28 => 'ȥ',
+    29 => 'λ',
+    30 => '',
+    31 => 'Υ٥',
+    32 => '1',
+    33 => '2',
+    34 => 'Į¼̾',
+    35 => 'ƻܸ',
+    36 => '͹ֹ',
+    37 => '٥Ȥμ',
+    38 => '٥ȤμԽ',
+    39 => '',
+    40 => '٥Ȥɲá',
+    41 => 'Υ',
+    42 => 'Ŀͥ',
+    43 => '',
+    44 => 'HTMLϻѤǤޤ',
+    45 => '',
+    46 => 'ƥΥ٥',
+    47 => '٥Ⱦ10',
+    48 => '',
+    49 => 'ΥȤˤϥ٥Ȥʤï⥤٥Ȥ򥯥åƤʤΤɤ餫Τ褦Ǥ',
+    50 => '٥',
+    51 => ''
+);
+
+$_LANG_CAL_SEARCH = array(
+    'results' => '٥Ⱦθ',
+    'title' => 'ȥ',
+    'date_time' => '',
+    'location' => '',
+    'description' => 'ܺ'
+
+);
+
+###############################################################################
+# calendar.php ($LANG30)
+
+$LANG_CAL_2 = array(
+    8 => 'ĿͤΥ٥Ȥɲ',
+    9 => '%s ٥',
+    10 => '٥ȡ',
+    11 => 'Υ',
+    12 => 'Ŀͥ',
+    25 => '롧',
+    26 => '',
+    27 => '',
+    28 => 'Ŀͥ',
+    29 => 'Υ',
+    30 => '٥Ȥ',
+    31 => 'ɲ',
+    32 => '٥',
+    33 => '',
+    34 => '',
+    35 => 'ʰɲ',
+    36 => '',
+    37 => 'ΥȤǤϡĿͥͭˤƤޤ',
+    38 => 'Ŀͥ٥ȥǥ',
+    39 => '',
+    40 => '',
+    41 => '',
+    42 => 'Υ٥Ȥɲ',
+    43 => '٥',
+);
+
+###############################################################################
+# admin/plugins/calendar/index.php, formerly admin/event.php ($LANG22)
+
+$LANG_CAL_ADMIN = array(
+    1 => '٥ȥǥ',
+    2 => '顼',
+    3 => 'ƥ⡼',
+    4 => '٥URL',
+    5 => '٥ȳ',
+    6 => '٥Ƚλ',
+    7 => '٥Ȥξ',
+    8 => '٥Ȥξܺ',
+    9 => '(http://ϤƤ)',
+    10 => '٥Ȥա֡ȥ롢ܺ٤ϤƤ',
+    11 => '',
+    12 => '٥ȤԽϡΥ٥ȤԽ򥯥åƤ٥Ȥ硢Ρֿ٥ȡפ򥯥åƤԡϴ¸٥ȤΥԡ򥯥åƤ',
+    13 => 'Ƽ',
+    14 => '',
+    15 => 'λ',
+    16 => '',
+    17 => "¤Τʤ٥ȤԽ褦Ȥޤι԰٤ϵϿޤ<a href=\"{$_CONF['site_admin_url']}/plugins/calendar/index.php\">٥Խ</a>äƤ",
+    18 => '',
+    19 => '',
+    20 => '¸',
+    21 => '󥻥',
+    22 => '',
+    23 => '򤿤ꤷƤ',
+    24 => 'λ򤿤ꤷƤ',
+    25 => 'λ򤿤ꤷƤ'
+);
+
+$LANG_CAL_MESSAGE = array(
+    'save'      => '٥Ȥ¸ޤ',
+    'delete'    => '٥Ȥޤ',
+    'private'   => '٥ȤĿͥ¸ޤ',
+    'login'     => 'Ŀͥ򳫤ˤϡǽ˥󤷤Ƥ',
+    'removed'   => 'Ŀͥ饤٥Ȥޤ',
+    'noprivate' => 'ޤ󤬡ΥȤǤϡĿ̵ͥǤ',
+    'unauth'    => 'ޤ󤬡٥ȴڡ˥븢¤ޤ󡣤ΥϵϿƤޤΤǤλ',
+);
+
+$PLG_calendar_MESSAGE4  = "{$_CONF['site_name']}˥٥ȤƤƤ꤬Ȥޤåդ졢ǧԤξ֤ˤʤäƤޤǧ줿硢ΥȤ<a href=\"{$_CONF['site_url']}/calendar/index.php\"></a>ɽޤ";
+$PLG_calendar_MESSAGE17 = '٥Ȥ¸ޤ';
+$PLG_calendar_MESSAGE18 = '٥Ȥޤ';
+$PLG_calendar_MESSAGE24 = '٥ȤĿͥ¸ޤ';
+$PLG_calendar_MESSAGE26 = '٥Ȥޤ';
+
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/japanese_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/calendar/language/japanese_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/japanese_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/language/japanese_utf-8.php	2006-12-11 18:13:04.000000000 -0600
@@ -0,0 +1,178 @@
+<?php
+
+###############################################################################
+# japanese_utf-8.php
+# This is the Japanese UTF-8 language page for the Geeklog Calendar Plug-in!
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony@tonybibbs.com
+# Copyright (C) 2005 Trinity Bays
+# trinity93@gmail.com
+# Tranlated by Geeklog Japanese group
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+# Last Update 2006/12/12 by Ivy (Geeklog Japanese)
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+# index.php
+$LANG_CAL_1 = array(
+    1 => 'イベントカレンダ',
+    2 => '-',
+    3 => '日時',
+    4 => '場所',
+    5 => '詳細',
+    6 => 'イベントの追加',
+    7 => 'これからのイベント',
+    8 => '個人カレンダにこのイベントを追加すると、「個人カレンダ」をユーザ管理メニューから選択することで見ることができます。',
+    9 => '個人カレンダに追加',
+    10 => '個人カレンダから削除',
+    11 => "このイベントを %sの個人カレンダに追加",
+    12 => 'イベント',
+    13 => '開始',
+    14 => '終了',
+    15 => 'カレンダに戻る',
+    16 => 'カレンダ',
+    17 => '開始日',
+    18 => '終了日',
+    19 => 'イベント情報を投稿',
+    20 => 'タイトル',
+    21 => '開始日',
+    22 => 'URL',
+    23 => '個人のイベント',
+    24 => 'サイトのイベント',
+    25 => '-',
+    26 => 'イベントを投稿',
+    27 => "{$_CONF['site_name']}にイベントを投稿すると、サイト全体のカレンダに登録されます。<br>全体カレンダのイベントは、各ユーザが必要に応じて個人カレンダに登録できます。",
+    28 => 'タイトル',
+    29 => '終了日時',
+    30 => '開始日時',
+    31 => '終日のイベント',
+    32 => '住所1',
+    33 => '住所2',
+    34 => '市町村名',
+    35 => '都道府県',
+    36 => '郵便番号',
+    37 => 'イベントの種類',
+    38 => 'イベントの種類を編集',
+    39 => '場所',
+    40 => 'イベントを追加：',
+    41 => '全体カレンダ',
+    42 => '個人カレンダ',
+    43 => 'リンク',
+    44 => 'HTMLタグは使用できません',
+    45 => '投稿',
+    46 => 'システムのイベント',
+    47 => 'イベント上位10件',
+    48 => '閲覧数',
+    49 => 'このサイトにはイベントがないか、誰もイベントをクリックしていないかのどちらかのようです。',
+    50 => 'イベント',
+    51 => '削除'
+);
+
+$_LANG_CAL_SEARCH = array(
+    'results' => 'イベント情報の検索結果',
+    'title' => 'タイトル',
+    'date_time' => '日時',
+    'location' => '場所',
+    'description' => '詳細'
+
+);
+
+###############################################################################
+# calendar.php ($LANG30)
+
+$LANG_CAL_2 = array(
+    8 => '個人のイベントを追加',
+    9 => '%s イベント',
+    10 => 'イベント：',
+    11 => '全体カレンダ',
+    12 => '個人カレンダ',
+    25 => '戻る：',
+    26 => '全日',
+    27 => '週',
+    28 => '個人カレンダ：',
+    29 => '全体カレンダ',
+    30 => 'イベントを削除',
+    31 => '追加',
+    32 => 'イベント',
+    33 => '日付',
+    34 => '時間',
+    35 => '簡易追加',
+    36 => '投稿',
+    37 => 'このサイトでは、個人カレンダを有効にしていません。',
+    38 => '個人イベントエディタ',
+    39 => '日',
+    40 => '週',
+    41 => '月',
+    42 => '全体イベントを追加',
+    43 => 'イベント投稿',
+);
+
+###############################################################################
+# admin/plugins/calendar/index.php, formerly admin/event.php ($LANG22)
+
+$LANG_CAL_ADMIN = array(
+    1 => 'イベントエディタ',
+    2 => 'エラー',
+    3 => '投稿モード',
+    4 => 'イベントURL',
+    5 => 'イベント開始日時',
+    6 => 'イベント終了日時',
+    7 => 'イベントの場所',
+    8 => 'イベントの詳細',
+    9 => '(http://から始めてください)',
+    10 => 'イベントの日付・時間、タイトル、詳細を入力してください。',
+    11 => 'カレンダ管理',
+    12 => 'イベントの編集・削除は、下のイベントの編集アイコンをクリックしてください。新しいイベントを作る場合、上の「新規イベント」をクリックしてください。コピーを作る場合は既存イベントのコピーアイコンをクリックしてください。',
+    13 => '投稿者',
+    14 => '開始日時',
+    15 => '終了日時',
+    16 => '',
+    17 => "管理権限のないイベントを編集しようとしました。この行為は記録されました。<a href=\"{$_CONF['site_admin_url']}/plugins/calendar/index.php\">イベント編集画面</a>に戻ってください。",
+    18 => '',
+    19 => '',
+    20 => '保存',
+    21 => 'キャンセル',
+    22 => '削除',
+    23 => '開始日時をただしく指定してください。',
+    24 => '終了日時をただしく指定してください。',
+    25 => '終了日時をただしく指定してください。'
+);
+
+$LANG_CAL_MESSAGE = array(
+    'save'      => 'イベントが保存されました。',
+    'delete'    => 'イベントが削除されました。',
+    'private'   => 'イベントが個人カレンダに保存されました。',
+    'login'     => '個人カレンダを開くには、最初にログインしてください。',
+    'removed'   => '個人カレンダからイベントが削除されました。',
+    'noprivate' => '申し訳ありませんが、このサイトでは、個人カレンダが無効です。',
+    'unauth'    => '申し訳ありませんが、イベント管理ページにアクセスする権限がありません。このアクセスは記録させていただきましたのでご了承ください。',
+);
+
+$PLG_calendar_MESSAGE4  = "{$_CONF['site_name']}にイベントを投稿していただき、ありがとうございます。スタッフに送信され、承認待ちの状態になっています。承認された場合、このサイトの<a href=\"{$_CONF['site_url']}/calendar/index.php\">カレンダ</a>セクションに表示されます。";
+$PLG_calendar_MESSAGE17 = 'イベントが保存されました。';
+$PLG_calendar_MESSAGE18 = 'イベントが削除されました。';
+$PLG_calendar_MESSAGE24 = 'イベントが個人カレンダに保存されました。';
+$PLG_calendar_MESSAGE26 = 'イベントが削除されました。';
+
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/README 1.4.1.src/cpanel-glprivate/plugins/calendar/language/README
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/README	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/language/README	2006-03-08 07:23:25.000000000 -0600
@@ -0,0 +1,7 @@
+This directory contains the language files for the calendarplugin. The 
+plugin will pick the appropriate language file automatically based on the 
+language settings in your user settings or the default language in config.php. 
+
+If there is no language file for your language, then the plugin will revert 
+to english.php.
+
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/russian.php 1.4.1.src/cpanel-glprivate/plugins/calendar/language/russian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/russian.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/language/russian.php	2006-12-28 16:40:30.000000000 -0600
@@ -0,0 +1,173 @@
+<?php
+
+###############################################################################
+# russian.php
+# This is the russian language page for the Geeklog Calendar Plug-in!
+#
+# Copyright (C) 2006 Alexander Yurchenko
+# archy@gala.net
+# 
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+# index.php
+$LANG_CAL_1 = array(
+    1 => ' ',
+    2 => ',    .',
+    3 => '',
+    4 => '',
+    5 => '',
+    6 => ' ',
+    7 => ' ',
+    8 => '     ,       ,   ,  " "   .',
+    9 => '   ',
+    10 => '   ',
+    11 => "    %s",
+    12 => '',
+    13 => '',
+    14 => '',
+    15 => '  ',
+    16 => '',
+    17 => ' ',
+    18 => ' ',
+    19 => '  ',
+    20 => '',
+    21 => ' ',
+    22 => 'URL',
+    23 => ' ',
+    24 => ' ',
+    25 => '  ',
+    26 => ' ',
+    27 => "     {$_CONF['site_name']},      ,   ,  ,      .   <b></b>     ,      !<br><br>   ,      , ,   ,      .",
+    28 => '',
+    29 => ' ',
+    30 => ' ',
+    31 => '   ',
+    32 => ',  ',
+    33 => ',  ',
+    34 => '/',
+    35 => '',
+    36 => '',
+    37 => ' ',
+    38 => '  ',
+    39 => '',
+    40 => '  ',
+    41 => ' ',
+    42 => ' ',
+    43 => '',
+    44 => 'HTML  ',
+    45 => '',
+    46 => '  ',
+    47 => '10   ',
+    48 => '',
+    49 => '    ,      .',
+    50 => '',
+    51 => ''
+);
+
+$_LANG_CAL_SEARCH = array(
+    'results' => '  ',
+    'title' => '',
+    'date_time' => '  ',
+    'location' => '',
+    'description' => ''
+
+);
+
+###############################################################################
+# calendar.php ($LANG30)
+
+$LANG_CAL_2 = array(
+    8 => '  ',
+    9 => ' %s',
+    10 => ' ',
+    11 => ' ',
+    12 => ' ',
+    25 => '  ',
+    26 => ' ',
+    27 => '',
+    28 => '  ',
+    29 => ' ',
+    30 => ' ',
+    31 => '',
+    32 => '',
+    33 => '',
+    34 => '',
+    35 => ' ',
+    36 => '',
+    37 => ',      ',
+    38 => '  ',
+    39 => '',
+    40 => '',
+    41 => '',
+    42 => '  ',
+    43 => ' ',
+);
+
+###############################################################################
+# admin/plugins/calendar/index.php, formerly admin/event.php ($LANG22)
+
+$LANG_CAL_ADMIN = array(
+    1 => ' ',
+    2 => '',
+    3 => ' ',
+    4 => 'URL ',
+    5 => '  ',
+    6 => '  ',
+    7 => ' ',
+    8 => ' ',
+    9 => '( http://)',
+    10 => '   /,    ',
+    11 => ' ',
+    12 => '    ,      .     ,  " " .    ,      (   ).',
+    13 => '',
+    14 => ' ',
+    15 => ' ',
+    16 => '',
+    17 => "     ,      .   . , <a href=\"{$_CONF['site_admin_url']}/plugins/calendar/index.php\">   </a>.",
+    18 => '',
+    19 => '',
+    20 => '',
+    21 => '',
+    22 => '',
+    23 => '  .',
+    24 => '  .',
+    25 => '    . ?'
+);
+
+$LANG_CAL_MESSAGE = array(
+    'save'      => '   .',
+    'delete'    => '  .',
+    'private'   => '     .',
+    'login'     => '    ,      ',
+    'removed'   => '      ',
+    'noprivate' => ',      ',
+    'unauth'    => ',         . , ,      .',
+);
+
+$PLG_calendar_MESSAGE4  = "     {$_CONF['site_name']}.      .   ,      ,   <a href=\"{$_CONF['site_url']}/calendar/index.php\"></a>.";
+$PLG_calendar_MESSAGE17 = '   .';
+$PLG_calendar_MESSAGE18 = '  .';
+$PLG_calendar_MESSAGE24 = '     .';
+$PLG_calendar_MESSAGE26 = '  .';
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/russian_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/calendar/language/russian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/russian_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/language/russian_utf-8.php	2006-12-28 16:42:54.000000000 -0600
@@ -0,0 +1,173 @@
+<?php
+
+###############################################################################
+# russian.php
+# This is the russian language page for the Geeklog Calendar Plug-in!
+#
+# Copyright (C) 2006 Alexander Yurchenko
+# archy@gala.net
+# 
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+# index.php
+$LANG_CAL_1 = array(
+    1 => 'Календарь событий',
+    2 => 'Извините, нет событий для отображения.',
+    3 => 'Когда',
+    4 => 'Где',
+    5 => 'Описание',
+    6 => 'Добавить событие',
+    7 => 'Будущие события',
+    8 => 'Добавив это событие в свой календарь, ви сможете быстро просмотреть только те события, которые Вас интересуют, нажав "Мой календарь" в Функциях пользователя.',
+    9 => 'Добавить в мой календать',
+    10 => 'Удалить из моего календаря',
+    11 => "Добавляем событие в календарь %s",
+    12 => 'Событие',
+    13 => 'Начало',
+    14 => 'Конец',
+    15 => 'Назад в календарь',
+    16 => 'Календарь',
+    17 => 'Дата начала',
+    18 => 'Дата окончания',
+    19 => 'Ссылка к календарю',
+    20 => 'Название',
+    21 => 'Дата начала',
+    22 => 'URL',
+    23 => 'Ваши события',
+    24 => 'Глобальные события',
+    25 => 'Нет будущих событий',
+    26 => 'Отослать событие',
+    27 => "Если вы отошлёте событие на {$_CONF['site_name']}, оно будет добавлено в главный календарь, где пользователи смогут, по желанию, добавить его в свои персональные календари. Эта функция <b>НЕ</b> для сберигания Ваших личных событий, таких как дни роджения и годовщины!<br><br>Когда Вы отошлёте событие, оно будет отправлено на рассмотрение администраторам, и, в случае одобрения, Ваше событие появится в главном календаре.",
+    28 => 'Название',
+    29 => 'Время начала',
+    30 => 'Время окончания',
+    31 => 'Событие на весь день',
+    32 => 'Адрес, первый ряд',
+    33 => 'Адрес, второй ряд',
+    34 => 'Город/Село',
+    35 => 'Область',
+    36 => 'Индекс',
+    37 => 'Тип события',
+    38 => 'Редактировать типы событий',
+    39 => 'Розмещение',
+    40 => 'Добавить событие к',
+    41 => 'Главному календарю',
+    42 => 'Личному календарю',
+    43 => 'Ссылки',
+    44 => 'HTML теги запрещены',
+    45 => 'Отослать',
+    46 => 'События в системе',
+    47 => '10 самых популярных событий',
+    48 => 'Просмотров',
+    49 => 'На сайте пока нет событий, или их ещё никто не просматривал.',
+    50 => 'События',
+    51 => 'Удалить'
+);
+
+$_LANG_CAL_SEARCH = array(
+    'results' => 'Результаты из Календаря',
+    'title' => 'Название',
+    'date_time' => 'Дата и время',
+    'location' => 'Размещение',
+    'description' => 'Описание'
+
+);
+
+###############################################################################
+# calendar.php ($LANG30)
+
+$LANG_CAL_2 = array(
+    8 => 'Добавить персональное событие',
+    9 => 'Событие %s',
+    10 => 'События для',
+    11 => 'Главный календарь',
+    12 => 'Мой календарь',
+    25 => 'Назад к ',
+    26 => 'Весь день',
+    27 => 'Неделя',
+    28 => 'Личный календарь для',
+    29 => 'Публичный календарь',
+    30 => 'удалить событие',
+    31 => 'Добавить',
+    32 => 'Событие',
+    33 => 'Дата',
+    34 => 'Время',
+    35 => 'Добавить быстро',
+    36 => 'Отослать',
+    37 => 'Извините, персональные календари на этом сайте запрещены',
+    38 => 'Редактор персонального события',
+    39 => 'День',
+    40 => 'Неделя',
+    41 => 'Месяц',
+    42 => 'Добавить главное событие',
+    43 => 'Отосланные события',
+);
+
+###############################################################################
+# admin/plugins/calendar/index.php, formerly admin/event.php ($LANG22)
+
+$LANG_CAL_ADMIN = array(
+    1 => 'Редактор событий',
+    2 => 'Ошибка',
+    3 => 'Режим публикации',
+    4 => 'URL события',
+    5 => 'Дата начала события',
+    6 => 'Дата окончания события',
+    7 => 'Размещение события',
+    8 => 'Описание события',
+    9 => '(включая http://)',
+    10 => 'Вы должны ввести дату/время, название события и описание',
+    11 => 'Менеджер календаря',
+    12 => 'Чтобы изменить или удалить событие, нажмите на его иконку редактирования ниже.  Чтобы создать новое событие, нажмите "Создать новое" сверху. Нажмите на иконку копирования, чтобы создать копию существующего события (и отредактируйте его потом).',
+    13 => 'Автор',
+    14 => 'Дата начала',
+    15 => 'Дата окончания',
+    16 => '',
+    17 => "Вы пытаетесь получить доступ к событию, к которому у Вас нет прав. Эта попытка запротоколирована. Пожалуйста, <a href=\"{$_CONF['site_admin_url']}/plugins/calendar/index.php\">вернитесь к администрированию событий</a>.",
+    18 => '',
+    19 => '',
+    20 => 'сохранить',
+    21 => 'отменить',
+    22 => 'удалить',
+    23 => 'Неправильная дата начала.',
+    24 => 'Неправильная дата окончания.',
+    25 => 'Дата окончания предшествует дате начала. Перепутали?'
+);
+
+$LANG_CAL_MESSAGE = array(
+    'save'      => 'Ваше событие успешно сохранено.',
+    'delete'    => 'Событие успешно удалено.',
+    'private'   => 'Событие успешно сохранено в Ваш календарь.',
+    'login'     => 'Невозможно открыть Ваш персональный календарь, пока Вы не войдёте в систему',
+    'removed'   => 'Событие успешно удалено из Вашего персонального календаря',
+    'noprivate' => 'Извините, персональные календари на этом сайте запрещены',
+    'unauth'    => 'Извините, но у вас нет доступа к странице администрирования событий. Пожалуйста, учтите, что все попытки несанкционированного доступа записываются.',
+);
+
+$PLG_calendar_MESSAGE4  = "Благодарим за отправку события в {$_CONF['site_name']}. Оно отправлено на рассмотрение нашому персоналу. У случае одобрения, ваше событие можно будет увидеть тут, в нашем <a href=\"{$_CONF['site_url']}/calendar/index.php\">календаре</a>.";
+$PLG_calendar_MESSAGE17 = 'Ваше событие успешно сохранено.';
+$PLG_calendar_MESSAGE18 = 'Событие успешно удалено.';
+$PLG_calendar_MESSAGE24 = 'Событие успешно сохранено в Ваш календарь.';
+$PLG_calendar_MESSAGE26 = 'Событие успешно удалено.';
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/slovenian.php 1.4.1.src/cpanel-glprivate/plugins/calendar/language/slovenian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/slovenian.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/language/slovenian.php	2006-10-15 02:48:24.000000000 -0500
@@ -0,0 +1,180 @@
+<?php
+
+###############################################################################
+# slovenian.php - version 1.4.1
+# This is the slovenian language page for the Geeklog Calendar Plug-in!
+# language file for geeklog version 1.4.1 beta by mb
+# gape@gape.org ; za pripombe, predloge ipd ... pii na email
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony@tonybibbs.com
+# Copyright (C) 2005 Trinity Bays
+# trinity93@gmail.com
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+# index.php
+$LANG_CAL_1 = array(
+    1 => 'Koledar dogodkov',
+    2 => 'Trenutno ni v koledar vpisanega nobenega dogodka.',
+    3 => 'Kdaj',
+    4 => 'Kje',
+    5 => 'Opis',
+    6 => 'Dodaj dogodek',
+    7 => 'Prihajajoi dogodki',
+    8 => 'Ko bo novi dogodek dodan v tvoj osebni koledar, lahko s klikom na "Moj koledar" v meniju "Uporabnike funkcije" hitro pregleda le tiste dogodke, ki te zanimajo.',
+    9 => 'Dodaj v Moj koledar',
+    10 => 'Odstrani iz Mojega koledarja',
+    11 => "Dodajanje dogodka v %s koledar",
+    12 => 'Dogodek',
+    13 => 'Zaetek',
+    14 => 'Konec',
+    15 => 'Nazaj na Koledar',
+    16 => 'Koledar',
+    17 => 'Datum zaetka',
+    18 => 'Datum konca',
+    19 => 'akajoi dogodki',
+    20 => 'Naslov',
+    21 => 'Datum zaetka',
+    22 => 'URL',
+    23 => 'Tvoji dogodki',
+    24 => 'Dogodki te strani',
+    25 => 'Ni prihajajoih dogodkov',
+    26 => 'Oddaj dogodek',
+    27 => "Oddaja dogodka na spletnem mestu {$_CONF['site_name']} bo tvoj dogodek dodala na glavni koledar, od koder lahko uporabniki tvoj dogodek dodajo v svoje osebne koledarje. Ta funkcija <b>NI</b> namenjena shranjevanju osebnih dogodkov, kot so rojstni dnevi in obletnice.<br><br>Ko svoj dogodek odda, bo poslan upravnikom, in e bo odobren, se bo pojavil v glavnem koledarju.",
+    28 => 'Naslov',
+    29 => 'Konni as',
+    30 => 'Zaetni as',
+    31 => 'Celodnevni dogodek',
+    32 => 'Naslov 1',
+    33 => 'Naslov 2',
+    34 => 'Mesto/Kraj',
+    35 => 'Pokrajina',
+    36 => 'Potna tevilka',
+    37 => 'Vrsta dogodka',
+    38 => 'Uredi vrste dogodkov',
+    39 => 'Lokacija',
+    40 => 'Dodaj dogodek v',
+    41 => 'Glavni koledar',
+    42 => 'Osebni koledar',
+    43 => 'Povezava',
+    44 => 'Oblikovanje HTML ni dovoljeno',
+    45 => 'Oddaj',
+    46 => 'Dogodki v sistemu',
+    47 => 'Najboljih 10 dogodkov',
+    48 => 'Zadetki',
+    49 => 'Izgleda, da na tem mestu ni dogodkov ali pa e nikoli ni nihe kliknil na nobenega.',
+    50 => 'Dogodki',
+    51 => 'Izbrii',
+    52 => 'Organizator',
+    53 => 'Telefon'
+);
+
+$_LANG_CAL_SEARCH = array(
+    'results' => 'Rezultati koledarja',
+    'title' => 'Naslov',
+    'date_time' => 'Datum & ura',
+    'location' => 'Kraj',
+    'description' => 'Opis'
+
+);
+
+###############################################################################
+# calendar.php ($LANG30)
+
+$LANG_CAL_2 = array(
+    8 => 'Dodaj osebni dogodek',
+    9 => '%s dogodek',
+    10 => 'Dogodki za',
+    11 => 'Glavni koledar',
+    12 => 'Moj koledar',
+    25 => 'Nazaj na ',
+    26 => 'Ves dan',
+    27 => 'Teden',
+    28 => 'Osebni koledar za',
+    29 => 'Javni koledar',
+    30 => 'izbrii dogodek',
+    31 => 'Dodaj',
+    32 => 'Dogodek',
+    33 => 'Datum',
+    34 => 'Ura',
+    35 => 'Hitro dodajanje',
+    36 => 'Oddaj',
+    37 => 'al funkcija osebnega koledarja na tej strani ni omogoena',
+    38 => 'Urejevalnik osebnih dogodkov',
+    39 => 'Dan',
+    40 => 'Teden',
+    41 => 'Mesec',
+    42 => 'Dodaj glavni dogodek',
+    43 => 'Dogodki',
+);
+
+###############################################################################
+# admin/plugins/calendar/index.php, formerly admin/event.php ($LANG22)
+
+$LANG_CAL_ADMIN = array(
+    1 => 'Urejevalnik dogodkov',
+    2 => 'Napaka',
+    3 => 'Oblikovanje',
+    4 => 'URL dogodka',
+    5 => 'Zaetek dogodka',
+    6 => 'Zakljuek dogodka',
+    7 => 'Kraj dogodka',
+    8 => 'Opis dogodka',
+    9 => '(vkljui http://)',
+    10 => 'Doloiti mora datume/ure, naslov dogodka in opis',
+    11 => 'Upravljalnik koledarja',
+    12 => 'Za spreminjanje ali izbris dogodka klikni na njegovo ikono za urejanje spodaj. Za ustvarjenje novega dogodka klikni na "Ustvari novega" zgoraj. Za ustvarjenje kopije e obstojeega dogodka klikni na ikono za kopiranje.',
+    13 => 'Avtor',
+    14 => 'Zaetni datum',
+    15 => 'Konni datum',
+    16 => '',
+    17 => "Poskua dostopiti do dogodka, za katerega nima pravic. Ta poskus je bil zabeleen. Prosim <a href=\"{$_CONF['site_admin_url']}/plugins/calendar/index.php\">pojdi nazaj na zaslon za upravljanje dogodkov</a>.",
+    18 => '',
+    19 => '',
+    20 => 'shrani',
+    21 => 'preklii',
+    22 => 'izbrii',
+    23 => 'Napaen zaetni datum.',
+    24 => 'Napaen konni datum.',
+    25 => 'Konni datum je pred zaetnim datumom.'
+);
+
+$LANG_CAL_MESSAGE = array(
+    'save'      => 'Tvoj dogodek je uspeno shranjen.',
+    'delete'    => 'Dogodek je uspeno izbrisan.',
+    'private'   => 'Dogodek je shranjen v tvoj koledar.',
+    'login'     => 'Ne morem odpreti tvojega osebnega koledarja, dokler se ne prijavi',
+    'removed'   => 'Dogodek je uspeno odstranjen iz tvojega osebnega koledarja',
+    'noprivate' => 'al osebni koledarji na tem spletnem mestu niso omogoeni',
+    'unauth'    => 'al nima dostopa do strani za upravljanje dogodkov. Vsi poskusi dostopa do nepooblaenih funkcij se beleijo.',
+);
+
+$PLG_calendar_MESSAGE4  = "Hvala, da si dogodek oddal/a na spletno mesto {$_CONF['site_name']}. Pred objavo ga bo pregledal eden od urednikov. e bo odobren, bo objavljen in dan na razpolago bralcem te spletne strani v razdelku <a href=\"{$_CONF['site_url']}/calendar/index.php\">koledar</a>.";
+$PLG_calendar_MESSAGE17 = 'Tvoj dogodek je uspeno shranjen.';
+$PLG_calendar_MESSAGE18 = 'Dogodek je uspeno izbrisan.';
+$PLG_calendar_MESSAGE24 = 'Dogodek je shranjen v tvoj koledar.';
+$PLG_calendar_MESSAGE26 = 'Dogodek je uspeno izbrisan.';
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/slovenian_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/calendar/language/slovenian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/slovenian_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/language/slovenian_utf-8.php	2006-10-15 02:48:24.000000000 -0500
@@ -0,0 +1,180 @@
+<?php
+
+###############################################################################
+# slovenian.php - version 1.4.1
+# This is the slovenian language page for the Geeklog Calendar Plug-in!
+# language file for geeklog version 1.4.1 beta by mb
+# gape@gape.org ; za pripombe, predloge ipd ... piši na email
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony@tonybibbs.com
+# Copyright (C) 2005 Trinity Bays
+# trinity93@gmail.com
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+# index.php
+$LANG_CAL_1 = array(
+    1 => 'Koledar dogodkov',
+    2 => 'Trenutno ni v koledar vpisanega nobenega dogodka.',
+    3 => 'Kdaj',
+    4 => 'Kje',
+    5 => 'Opis',
+    6 => 'Dodaj dogodek',
+    7 => 'Prihajajoči dogodki',
+    8 => 'Ko bo novi dogodek dodan v tvoj osebni koledar, lahko s klikom na "Moj koledar" v meniju "Uporabniške funkcije" hitro pregledaš le tiste dogodke, ki te zanimajo.',
+    9 => 'Dodaj v Moj koledar',
+    10 => 'Odstrani iz Mojega koledarja',
+    11 => "Dodajanje dogodka v %s koledar",
+    12 => 'Dogodek',
+    13 => 'Začetek',
+    14 => 'Konec',
+    15 => 'Nazaj na Koledar',
+    16 => 'Koledar',
+    17 => 'Datum začetka',
+    18 => 'Datum konca',
+    19 => 'Čakajoči dogodki',
+    20 => 'Naslov',
+    21 => 'Datum začetka',
+    22 => 'URL',
+    23 => 'Tvoji dogodki',
+    24 => 'Dogodki te strani',
+    25 => 'Ni prihajajočih dogodkov',
+    26 => 'Oddaj dogodek',
+    27 => "Oddaja dogodka na spletnem mestu {$_CONF['site_name']} bo tvoj dogodek dodala na glavni koledar, od koder lahko uporabniki tvoj dogodek dodajo v svoje osebne koledarje. Ta funkcija <b>NI</b> namenjena shranjevanju osebnih dogodkov, kot so rojstni dnevi in obletnice.<br><br>Ko svoj dogodek oddaš, bo poslan upravnikom, in če bo odobren, se bo pojavil v glavnem koledarju.",
+    28 => 'Naslov',
+    29 => 'Končni čas',
+    30 => 'Začetni čas',
+    31 => 'Celodnevni dogodek',
+    32 => 'Naslov 1',
+    33 => 'Naslov 2',
+    34 => 'Mesto/Kraj',
+    35 => 'Pokrajina',
+    36 => 'Poštna številka',
+    37 => 'Vrsta dogodka',
+    38 => 'Uredi vrste dogodkov',
+    39 => 'Lokacija',
+    40 => 'Dodaj dogodek v',
+    41 => 'Glavni koledar',
+    42 => 'Osebni koledar',
+    43 => 'Povezava',
+    44 => 'Oblikovanje HTML ni dovoljeno',
+    45 => 'Oddaj',
+    46 => 'Dogodki v sistemu',
+    47 => 'Najboljših 10 dogodkov',
+    48 => 'Zadetki',
+    49 => 'Izgleda, da na tem mestu ni dogodkov ali pa še nikoli ni nihče kliknil na nobenega.',
+    50 => 'Dogodki',
+    51 => 'Izbriši',
+    52 => 'Organizator',
+    53 => 'Telefon'
+);
+
+$_LANG_CAL_SEARCH = array(
+    'results' => 'Rezultati koledarja',
+    'title' => 'Naslov',
+    'date_time' => 'Datum & ura',
+    'location' => 'Kraj',
+    'description' => 'Opis'
+
+);
+
+###############################################################################
+# calendar.php ($LANG30)
+
+$LANG_CAL_2 = array(
+    8 => 'Dodaj osebni dogodek',
+    9 => '%s dogodek',
+    10 => 'Dogodki za',
+    11 => 'Glavni koledar',
+    12 => 'Moj koledar',
+    25 => 'Nazaj na ',
+    26 => 'Ves dan',
+    27 => 'Teden',
+    28 => 'Osebni koledar za',
+    29 => 'Javni koledar',
+    30 => 'izbriši dogodek',
+    31 => 'Dodaj',
+    32 => 'Dogodek',
+    33 => 'Datum',
+    34 => 'Ura',
+    35 => 'Hitro dodajanje',
+    36 => 'Oddaj',
+    37 => 'Žal funkcija osebnega koledarja na tej strani ni omogočena',
+    38 => 'Urejevalnik osebnih dogodkov',
+    39 => 'Dan',
+    40 => 'Teden',
+    41 => 'Mesec',
+    42 => 'Dodaj glavni dogodek',
+    43 => 'Dogodki',
+);
+
+###############################################################################
+# admin/plugins/calendar/index.php, formerly admin/event.php ($LANG22)
+
+$LANG_CAL_ADMIN = array(
+    1 => 'Urejevalnik dogodkov',
+    2 => 'Napaka',
+    3 => 'Oblikovanje',
+    4 => 'URL dogodka',
+    5 => 'Začetek dogodka',
+    6 => 'Zaključek dogodka',
+    7 => 'Kraj dogodka',
+    8 => 'Opis dogodka',
+    9 => '(vključi http://)',
+    10 => 'Določiti moraš datume/ure, naslov dogodka in opis',
+    11 => 'Upravljalnik koledarja',
+    12 => 'Za spreminjanje ali izbris dogodka klikni na njegovo ikono za urejanje spodaj. Za ustvarjenje novega dogodka klikni na "Ustvari novega" zgoraj. Za ustvarjenje kopije že obstoječega dogodka klikni na ikono za kopiranje.',
+    13 => 'Avtor',
+    14 => 'Začetni datum',
+    15 => 'Končni datum',
+    16 => '',
+    17 => "Poskušaš dostopiti do dogodka, za katerega nimaš pravic. Ta poskus je bil zabeležen. Prosim <a href=\"{$_CONF['site_admin_url']}/plugins/calendar/index.php\">pojdi nazaj na zaslon za upravljanje dogodkov</a>.",
+    18 => '',
+    19 => '',
+    20 => 'shrani',
+    21 => 'prekliči',
+    22 => 'izbriši',
+    23 => 'Napačen začetni datum.',
+    24 => 'Napačen končni datum.',
+    25 => 'Končni datum je pred začetnim datumom.'
+);
+
+$LANG_CAL_MESSAGE = array(
+    'save'      => 'Tvoj dogodek je uspešno shranjen.',
+    'delete'    => 'Dogodek je uspešno izbrisan.',
+    'private'   => 'Dogodek je shranjen v tvoj koledar.',
+    'login'     => 'Ne morem odpreti tvojega osebnega koledarja, dokler se ne prijaviš',
+    'removed'   => 'Dogodek je uspešno odstranjen iz tvojega osebnega koledarja',
+    'noprivate' => 'Žal osebni koledarji na tem spletnem mestu niso omogočeni',
+    'unauth'    => 'Žal nimaš dostopa do strani za upravljanje dogodkov. Vsi poskusi dostopa do nepooblaščenih funkcij se beležijo.',
+);
+
+$PLG_calendar_MESSAGE4  = "Hvala, da si dogodek oddal/a na spletno mesto {$_CONF['site_name']}. Pred objavo ga bo pregledal eden od urednikov. Če bo odobren, bo objavljen in dan na razpolago bralcem te spletne strani v razdelku <a href=\"{$_CONF['site_url']}/calendar/index.php\">koledar</a>.";
+$PLG_calendar_MESSAGE17 = 'Tvoj dogodek je uspešno shranjen.';
+$PLG_calendar_MESSAGE18 = 'Dogodek je uspešno izbrisan.';
+$PLG_calendar_MESSAGE24 = 'Dogodek je shranjen v tvoj koledar.';
+$PLG_calendar_MESSAGE26 = 'Dogodek je uspešno izbrisan.';
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/ukrainian_koi8-u.php 1.4.1.src/cpanel-glprivate/plugins/calendar/language/ukrainian_koi8-u.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/ukrainian_koi8-u.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/language/ukrainian_koi8-u.php	2006-12-16 15:02:27.000000000 -0600
@@ -0,0 +1,174 @@
+<?php
+
+###############################################################################
+# ukrainian.php
+# This is the ukrainian language page for the Geeklog Calendar Plug-in!
+#
+# Copyright (C) 2006 Vitaliy Biliyenko
+# v.lokki@gmail.com
+# 
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+# index.php
+$LANG_CAL_1 = array(
+    1 => ' Ħ',
+    2 => ',  Ħ  צ.',
+    3 => '',
+    4 => '',
+    5 => '',
+    6 => ' Ħ',
+    7 => 'Φ Ħ',
+    8 => '  Ħ   ,      Ԧ Ħ, ˦  æ,  " "  æ .',
+    9 => '   ',
+    10 => '   ',
+    11 => " Ħ   %s",
+    12 => 'Ħ',
+    13 => '',
+    14 => '',
+    15 => '  ',
+    16 => '',
+    17 => ' ',
+    18 => ' ˦',
+    19 => '  ',
+    20 => '',
+    21 => ' ',
+    22 => 'URL',
+    23 => 'ۦ Ħ',
+    24 => 'Φ Ħ',
+    25 => ' Φ Ħ',
+    26 => 'Ħ Ħ',
+    27 => "  Ħ Ħ  {$_CONF['site_name']},      ,  ަ         .  æ <b></b>  Ҧ   Ħ,   Φ   Ҧæ.<br><br>  Ħ Ħ,      ͦΦ,   ڦ   Ħ '   Ҧ.",
+    28 => '',
+    29 => ' ',
+    30 => ' ˦',
+    31 => 'Ħ   ',
+    32 => ',  ',
+    33 => ',  ',
+    34 => '/',
+    35 => '',
+    36 => '',
+    37 => ' Ħ',
+    38 => '  Ħ',
+    39 => '',
+    40 => ' Ħ ',
+    41 => ' ',
+    42 => ' ',
+    43 => '',
+    44 => 'HTML  ',
+    45 => 'Ħ',
+    46 => 'Ħ  ͦ',
+    47 => '10 Φ Ħ',
+    48 => '',
+    49 => ' Ԧ   Ħ,   Φ    .',
+    50 => 'Ħ',
+    51 => ''
+);
+
+$_LANG_CAL_SEARCH = array(
+    'results' => '  ',
+    'title' => '',
+    'date_time' => '  ',
+    'location' => '',
+    'description' => ''
+
+);
+
+###############################################################################
+# calendar.php ($LANG30)
+
+$LANG_CAL_2 = array(
+    8 => '  Ħ',
+    9 => 'Ħ %s',
+    10 => 'Ħ ',
+    11 => ' ',
+    12 => ' ',
+    25 => '  ',
+    26 => ' ',
+    27 => '',
+    28 => '  ',
+    29 => '̦ ',
+    30 => ' Ħ',
+    31 => '',
+    32 => 'Ħ',
+    33 => '',
+    34 => '',
+    35 => ' ',
+    36 => 'Ħ',
+    37 => ', Φ Ҧ   Ԧ Φ',
+    38 => ' ϧ Ħ',
+    39 => '',
+    40 => '',
+    41 => '',
+    42 => '  Ħ',
+    43 => 'ĦΦ Ħ',
+);
+
+###############################################################################
+# admin/plugins/calendar/index.php, formerly admin/event.php ($LANG22)
+
+$LANG_CAL_ADMIN = array(
+    1 => ' Ħ',
+    2 => '',
+    3 => ' ̦æ',
+    4 => 'URL Ħ',
+    5 => '  Ħ',
+    6 => ' ˦ Ħ',
+    7 => ' Ħ',
+    8 => ' Ħ',
+    9 => '( http://)',
+    10 => '   /,  Ħ  ',
+    11 => ' ',
+    12 => ' ͦ   Ħ, Φ    .     Ħ, Φ " " Ҧ. Φ  Ц,   Ц ϧ Ħ.',
+    13 => '',
+    14 => ' ',
+    15 => ' ˦',
+    16 => '',
+    17 => "     Ħ,  ϧ    .    . -, <a href=\"{$_CONF['site_admin_url']}/plugins/calendar/index.php\">Φ  ͦΦ Ħ</a>.",
+    18 => '',
+    19 => '',
+    20 => '',
+    21 => '',
+    22 => '',
+    23 => '  .',
+    24 => '  ˦.',
+    25 => ' ˦ դ Ԧ .'
+);
+
+$LANG_CAL_MESSAGE = array(
+    'save'      => ' Ħ Ц .',
+    'delete'    => 'Ħ Ц .',
+    'private'   => 'Ħ Ц    .',
+    'login'     => ' צ   ,    צ  ',
+    'removed'   => 'Ħ Ц     ',
+    'noprivate' => ', Φ Ҧ   Ԧ Φ',
+    'unauth'    => ',       Ҧ ͦΦ Ħ. -, ,  Ӧ  æ  .',
+);
+
+$PLG_calendar_MESSAGE4  = "դ   Ħ  {$_CONF['site_name']}.       .   ڦ ,  Ħ    ,   <a href=\"{$_CONF['site_url']}/calendar/index.php\">Ҧ</a>.";
+$PLG_calendar_MESSAGE17 = ' Ħ Ц .';
+$PLG_calendar_MESSAGE18 = 'Ħ Ц .';
+$PLG_calendar_MESSAGE24 = 'Ħ Ц    .';
+$PLG_calendar_MESSAGE26 = 'Ħ Ц .';
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/ukrainian.php 1.4.1.src/cpanel-glprivate/plugins/calendar/language/ukrainian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/ukrainian.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/language/ukrainian.php	2006-12-16 15:02:18.000000000 -0600
@@ -0,0 +1,174 @@
+<?php
+
+###############################################################################
+# ukrainian.php
+# This is the ukrainian language page for the Geeklog Calendar Plug-in!
+#
+# Copyright (C) 2006 Vitaliy Biliyenko
+# v.lokki@gmail.com
+# 
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+# index.php
+$LANG_CAL_1 = array(
+    1 => ' ',
+    2 => ',    .',
+    3 => '',
+    4 => '',
+    5 => '',
+    6 => ' ',
+    7 => ' 䳿',
+    8 => '     ,       䳿,   ,  "̳ "   .',
+    9 => '   ',
+    10 => '   ',
+    11 => "    %s",
+    12 => '',
+    13 => '',
+    14 => 'ʳ',
+    15 => '  ',
+    16 => '',
+    17 => ' ',
+    18 => ' ',
+    19 => '  ',
+    20 => '',
+    21 => ' ',
+    22 => 'URL',
+    23 => ' 䳿',
+    24 => ' 䳿',
+    25 => '  ',
+    26 => ' ',
+    27 => "     {$_CONF['site_name']},      ,           .   <b></b>     ,      .<br><br>   ,      ,       '   .",
+    28 => '',
+    29 => ' ',
+    30 => ' ',
+    31 => '   ',
+    32 => ',  ',
+    33 => ',  ',
+    34 => '̳/',
+    35 => '',
+    36 => '',
+    37 => ' 䳿',
+    38 => '  ',
+    39 => '',
+    40 => '  ',
+    41 => ' ',
+    42 => ' ',
+    43 => '',
+    44 => 'HTML  ',
+    45 => '',
+    46 => '䳿  ',
+    47 => '10  ',
+    48 => '',
+    49 => '    ,       .',
+    50 => '䳿',
+    51 => ''
+);
+
+$_LANG_CAL_SEARCH = array(
+    'results' => '  ',
+    'title' => '',
+    'date_time' => '  ',
+    'location' => '',
+    'description' => ''
+
+);
+
+###############################################################################
+# calendar.php ($LANG30)
+
+$LANG_CAL_2 = array(
+    8 => '  ',
+    9 => ' %s',
+    10 => '䳿 ',
+    11 => ' ',
+    12 => '̳ ',
+    25 => '  ',
+    26 => ' ',
+    27 => '',
+    28 => '  ',
+    29 => ' ',
+    30 => ' ',
+    31 => '',
+    32 => '',
+    33 => '',
+    34 => '',
+    35 => ' ',
+    36 => '',
+    37 => ',      ',
+    38 => '  䳿',
+    39 => '',
+    40 => '',
+    41 => '̳',
+    42 => '  ',
+    43 => ' 䳿',
+);
+
+###############################################################################
+# admin/plugins/calendar/index.php, formerly admin/event.php ($LANG22)
+
+$LANG_CAL_ADMIN = array(
+    1 => ' ',
+    2 => '',
+    3 => ' ',
+    4 => 'URL 䳿',
+    5 => '  䳿',
+    6 => '  䳿',
+    7 => ' 䳿',
+    8 => ' 䳿',
+    9 => '( http://)',
+    10 => '   /,  䳿  ',
+    11 => ' ',
+    12 => '    ,     .     ,  " " .   ,     䳿.',
+    13 => '',
+    14 => ' ',
+    15 => ' ',
+    16 => '',
+    17 => "     䳿,      .    . -, <a href=\"{$_CONF['site_admin_url']}/plugins/calendar/index.php\">   </a>.",
+    18 => '',
+    19 => '',
+    20 => '',
+    21 => '',
+    22 => '',
+    23 => '  .',
+    24 => '  .',
+    25 => '    .'
+);
+
+$LANG_CAL_MESSAGE = array(
+    'save'      => '   .',
+    'delete'    => '  .',
+    'private'   => '     .',
+    'login'     => '    ,      ',
+    'removed'   => '      ',
+    'noprivate' => ',      ',
+    'unauth'    => ',         . -, ,      .',
+);
+
+$PLG_calendar_MESSAGE4  = "   䳿  {$_CONF['site_name']}.       .    ,      ,   <a href=\"{$_CONF['site_url']}/calendar/index.php\"></a>.";
+$PLG_calendar_MESSAGE17 = '   .';
+$PLG_calendar_MESSAGE18 = '  .';
+$PLG_calendar_MESSAGE24 = '     .';
+$PLG_calendar_MESSAGE26 = '  .';
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/ukrainian_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/calendar/language/ukrainian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/language/ukrainian_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/language/ukrainian_utf-8.php	2006-12-16 15:02:38.000000000 -0600
@@ -0,0 +1,174 @@
+<?php
+
+###############################################################################
+# ukrainian.php
+# This is the ukrainian language page for the Geeklog Calendar Plug-in!
+#
+# Copyright (C) 2006 Vitaliy Biliyenko
+# v.lokki@gmail.com
+# 
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+# index.php
+$LANG_CAL_1 = array(
+    1 => 'Календар подій',
+    2 => 'Вибачте, немає подій для відображення.',
+    3 => 'Коли',
+    4 => 'Де',
+    5 => 'Опис',
+    6 => 'Додати подію',
+    7 => 'Майбутні події',
+    8 => 'Додавши цю подію до свого календаря, ви можете швидко переглянути лише ті події, які вас цікавлять, натиснувши "Мій календар" у Функціях користувача.',
+    9 => 'Додати до мого календаря',
+    10 => 'Вилучити з мого календаря',
+    11 => "Додаємо подію до календаря %s",
+    12 => 'Подія',
+    13 => 'Початок',
+    14 => 'Кінець',
+    15 => 'Назад до календаря',
+    16 => 'Календар',
+    17 => 'Дата початку',
+    18 => 'Дата закінчення',
+    19 => 'Надсилання до календаря',
+    20 => 'Назва',
+    21 => 'Дата початку',
+    22 => 'URL',
+    23 => 'Ваші події',
+    24 => 'Загальні події',
+    25 => 'Немає майбутніх подій',
+    26 => 'Надіслати подію',
+    27 => "Якщо ви надішлете подію на {$_CONF['site_name']}, її буде додано до головного календаря, де користувачі зможуть за бажанням додати її до свого персонального календаря. Ця функція <b>НЕ</b> для зберігання ваших особистих подій, таких як дні народження та річниці.<br><br>Коли ви надішлете подію, її буде подано на розгляд адміністраторам, і у разі схвалення ваша подія з'явиться у головному календарі.",
+    28 => 'Назва',
+    29 => 'Час початку',
+    30 => 'Час закінчення',
+    31 => 'Подія на увесь день',
+    32 => 'Адреса, перший рядок',
+    33 => 'Адреса, другий рядок',
+    34 => 'Місто/Село',
+    35 => 'Область',
+    36 => 'Індекс',
+    37 => 'Тип події',
+    38 => 'Редагувати типи подій',
+    39 => 'Розташування',
+    40 => 'Додати подію до',
+    41 => 'Головного календаря',
+    42 => 'Особистого календаря',
+    43 => 'Посилання',
+    44 => 'HTML теги заборонено',
+    45 => 'Надіслати',
+    46 => 'Події в системі',
+    47 => '10 найпопулярніших подій',
+    48 => 'Перегляди',
+    49 => 'На сайті ще немає подій, або ж ніхто ще їх не переглядав.',
+    50 => 'Події',
+    51 => 'Вилучити'
+);
+
+$_LANG_CAL_SEARCH = array(
+    'results' => 'Результати з календаря',
+    'title' => 'Назва',
+    'date_time' => 'Дата і час',
+    'location' => 'Розташування',
+    'description' => 'Опис'
+
+);
+
+###############################################################################
+# calendar.php ($LANG30)
+
+$LANG_CAL_2 = array(
+    8 => 'Додати особисту подію',
+    9 => 'Подія %s',
+    10 => 'Події для',
+    11 => 'Головний календар',
+    12 => 'Мій календар',
+    25 => 'Назад до ',
+    26 => 'Увесь день',
+    27 => 'Тиждень',
+    28 => 'Особистий календар для',
+    29 => 'Публічний календар',
+    30 => 'вилучити подію',
+    31 => 'Додати',
+    32 => 'Подія',
+    33 => 'Дата',
+    34 => 'Час',
+    35 => 'Швидко додати',
+    36 => 'Надіслати',
+    37 => 'Вибачте, персональні календарі на цьому сайті заборонені',
+    38 => 'Редактор особистої події',
+    39 => 'День',
+    40 => 'Тиждень',
+    41 => 'Місяць',
+    42 => 'Додати головну подію',
+    43 => 'Надіслані події',
+);
+
+###############################################################################
+# admin/plugins/calendar/index.php, formerly admin/event.php ($LANG22)
+
+$LANG_CAL_ADMIN = array(
+    1 => 'Редактор подій',
+    2 => 'Помилка',
+    3 => 'Режим публікації',
+    4 => 'URL події',
+    5 => 'Дата початку події',
+    6 => 'Дата закінчення події',
+    7 => 'Розташування події',
+    8 => 'Опис події',
+    9 => '(включаючи http://)',
+    10 => 'Ви маєте ввести дати/час, назву події та опис',
+    11 => 'Менеджер календаря',
+    12 => 'Щоб змінити чи вилучити подію, натисніть її іконку редагування нижче.  Щоб створити нову подію, натисніть "Створити нове" вгорі. Натисніть іконку копіювання, щоб створити копію існуючої події.',
+    13 => 'Автор',
+    14 => 'Дата початку',
+    15 => 'Дата закінчення',
+    16 => '',
+    17 => "Ви намагаєтесь отримати доступ до події, до якої у вас немає прав.  Цю спробу записано. Будь-ласка, <a href=\"{$_CONF['site_admin_url']}/plugins/calendar/index.php\">поверніться до адміністрування подій</a>.",
+    18 => '',
+    19 => '',
+    20 => 'зберегти',
+    21 => 'скасувати',
+    22 => 'вилучити',
+    23 => 'Неправильна дата початку.',
+    24 => 'Неправильна дата закінчення.',
+    25 => 'Дата закінчення передує даті початку.'
+);
+
+$LANG_CAL_MESSAGE = array(
+    'save'      => 'Вашу подію успішно збережено.',
+    'delete'    => 'Подію успішно вилучено.',
+    'private'   => 'Подію успішно збережено до вашого календаря.',
+    'login'     => 'Неможливо відкрити ваш особистий календар, доки ви не ввійдете до системи',
+    'removed'   => 'Подію успішно вилучено з вашого особистого календаря',
+    'noprivate' => 'Вибачте, персональні календарі на цьому сайті заборонені',
+    'unauth'    => 'Вибачте, але у вас немає доступу до сторінки адміністрування подій. Будь-ласка, зайважте, що всі спробу несанкціонованого доступу записуються.',
+);
+
+$PLG_calendar_MESSAGE4  = "Дякуємо за надсилання події на {$_CONF['site_name']}.  Її передано на схвалення нашому персоналу.  У разі схвалення, вашу подію можна буде побачити тут, в нашому <a href=\"{$_CONF['site_url']}/calendar/index.php\">календарі</a>.";
+$PLG_calendar_MESSAGE17 = 'Вашу подію успішно збережено.';
+$PLG_calendar_MESSAGE18 = 'Подію успішно вилучено.';
+$PLG_calendar_MESSAGE24 = 'Подію успішно збережено до вашого календаря.';
+$PLG_calendar_MESSAGE26 = 'Подію успішно вилучено.';
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/sql/mssql_install.php 1.4.1.src/cpanel-glprivate/plugins/calendar/sql/mssql_install.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/sql/mssql_install.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/sql/mssql_install.php	2006-10-10 20:36:11.000000000 -0500
@@ -0,0 +1,143 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Calendar Plugin 1.0                                                       |
+// +---------------------------------------------------------------------------+
+// | Installation SQL                                                          |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2000-2006 by the following authors:                         |
+// |                                                                           |
+// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
+// |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
+// |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
+// |          Dirk Haun         - dirk AT haun-online DOT de                   |
+// |          Trinity Bays      - trinity AT steubentech DOT com               |
+// |          Randy Kolenko     - randy AT nextide DOT ca                      |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is licensed under the terms of the GNU General Public License|
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                      |
+// | See the GNU General Public License for more details.                      |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+// $Id: mssql_install.php,v 1.3 2006/10/11 01:36:11 blaine Exp $
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['events']}] (
+    [eid] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [title] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [description] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [postmode] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [datestart] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [dateend] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [url] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [hits] [numeric](8, 0) NULL ,
+    [owner_id] [numeric](8, 0) NULL ,
+    [group_id] [numeric](8, 0) NULL ,
+    [perm_owner] [tinyint] NULL ,
+    [perm_group] [tinyint] NULL ,
+    [perm_members] [tinyint] NULL ,
+    [perm_anon] [tinyint] NULL ,
+    [address1] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [address2] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [city] [varchar] (60) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [state] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [zipcode] [varchar] (5) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [allday] [smallint] NULL ,
+    [event_type] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [location] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [timestart] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [timeend] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+) ON [PRIMARY]
+";
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['eventsubmission']}] (
+    [eid] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [title] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [description] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [location] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [datestart] [smalldatetime] NULL ,
+    [dateend] [smalldatetime] NULL ,
+    [url] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [allday] [smallint] NOT NULL ,
+    [zipcode] [varchar] (5) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [state] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [city] [varchar] (60) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [address2] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [address1] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [event_type] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [timestart] [smalldatetime] NULL ,
+    [timeend] [smalldatetime] NULL
+) ON [PRIMARY] 
+";
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['personal_events']}] (
+    [eid] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [title] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [event_type] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [datestart] [smalldatetime] NULL ,
+    [dateend] [smalldatetime] NULL ,
+    [address1] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [address2] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [city] [varchar] (60) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [state] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [zipcode] [varchar] (5) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [allday] [smallint] NOT NULL ,
+    [url] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [description] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [postmode] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [owner_id] [numeric](8, 0) NOT NULL ,
+    [group_id] [numeric](8, 0) NOT NULL ,
+    [perm_owner] [tinyint] NOT NULL ,
+    [perm_group] [tinyint] NOT NULL ,
+    [perm_members] [tinyint] NOT NULL ,
+    [perm_anon] [tinyint] NOT NULL ,
+    [uid] [int] NOT NULL ,
+    [location] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [timestart] [smalldatetime] NULL ,
+    [timeend] [smalldatetime] NULL
+) ON [PRIMARY] 
+";
+
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['events']}] ADD
+    CONSTRAINT [PK_gl_events] PRIMARY KEY  CLUSTERED
+    (
+        [eid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['eventsubmission']}] ADD
+    CONSTRAINT [PK_gl_eventsubmission] PRIMARY KEY  CLUSTERED
+    (
+        [eid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['personal_events']}] ADD
+    CONSTRAINT [PK_gl_personal_events] PRIMARY KEY  CLUSTERED
+    (
+        [eid],
+        [uid]
+    )  ON [PRIMARY]
+";
+
+
+$_SQL[] = "INSERT INTO {$_TABLES['eventsubmission']} (eid, title, description, location, datestart, dateend, url, allday, zipcode, state, city, address2, address1, event_type, timestart, timeend) VALUES ('2006051410130162','Installed the Calendar plugin','Today, you successfully installed the Calendar plugin.','Your webserver',getdate(),getdate(),'http://www.geeklog.net/',1,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL)";
+$_SQL[] = "INSERT INTO {$_TABLES['blocks']} (is_enabled, name, type, title, tid, blockorder, content, onleft, phpblockfn, owner_id, group_id, perm_owner, perm_group) VALUES (1,'events_block','phpblock','Events','all',4,'',1,'phpblock_calendar',{$_USER['uid']},#group#,3,3)";
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/sql/mysql_install.php 1.4.1.src/cpanel-glprivate/plugins/calendar/sql/mysql_install.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/sql/mysql_install.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/sql/mysql_install.php	2006-08-19 13:51:48.000000000 -0500
@@ -0,0 +1,125 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Calendar Plugin 1.0                                                       |
+// +---------------------------------------------------------------------------+
+// | Installation SQL                                                          |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2000-2006 by the following authors:                         |
+// |                                                                           |
+// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
+// |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
+// |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
+// |          Dirk Haun         - dirk AT haun-online DOT de                   |
+// |          Trinity Bays      - trinity AT steubentech DOT com               |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is licensed under the terms of the GNU General Public License|
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                      |
+// | See the GNU General Public License for more details.                      |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+// $Id: mysql_install.php,v 1.1 2006/08/19 18:51:48 dhaun Exp $
+
+$_SQL[] = "
+CREATE TABLE {$_TABLES['events']} (
+  eid varchar(20) NOT NULL default '',
+  title varchar(128) default NULL,
+  description text,
+  postmode varchar(10) NOT NULL default 'plaintext',
+  datestart date default NULL,
+  dateend date default NULL,
+  url varchar(255) default NULL,
+  hits mediumint(8) unsigned NOT NULL default '0',
+  owner_id mediumint(8) unsigned NOT NULL default '1',
+  group_id mediumint(8) unsigned NOT NULL default '1',
+  perm_owner tinyint(1) unsigned NOT NULL default '3',
+  perm_group tinyint(1) unsigned NOT NULL default '3',
+  perm_members tinyint(1) unsigned NOT NULL default '2',
+  perm_anon tinyint(1) unsigned NOT NULL default '2',
+  address1 varchar(40) default NULL,
+  address2 varchar(40) default NULL,
+  city varchar(60) default NULL,
+  state char(2) default NULL,
+  zipcode varchar(5) default NULL,
+  allday tinyint(1) NOT NULL default '0',
+  event_type varchar(40) NOT NULL default '',
+  location varchar(128) default NULL,
+  timestart time default NULL,
+  timeend time default NULL,
+  INDEX events_eid(eid),
+  INDEX events_event_type(event_type),
+  INDEX events_datestart(datestart),
+  INDEX events_dateend(dateend),
+  PRIMARY KEY  (eid)
+) TYPE=MyISAM
+";
+
+$_SQL[] = "
+CREATE TABLE {$_TABLES['eventsubmission']} (
+  eid varchar(20) NOT NULL default '',
+  title varchar(128) default NULL,
+  description text,
+  location varchar(128) default NULL,
+  datestart date default NULL,
+  dateend date default NULL,
+  url varchar(255) default NULL,
+  allday tinyint(1) NOT NULL default '0',
+  zipcode varchar(5) default NULL,
+  state char(2) default NULL,
+  city varchar(60) default NULL,
+  address2 varchar(40) default NULL,
+  address1 varchar(40) default NULL,
+  event_type varchar(40) NOT NULL default '',
+  timestart time default NULL,
+  timeend time default NULL,
+  PRIMARY KEY  (eid)
+) TYPE=MyISAM
+";
+
+$_SQL[] = "
+CREATE TABLE {$_TABLES['personal_events']} (
+  eid varchar(20) NOT NULL default '',
+  title varchar(128) default NULL,
+  event_type varchar(40) NOT NULL default '',
+  datestart date default NULL,
+  dateend date default NULL,
+  address1 varchar(40) default NULL,
+  address2 varchar(40) default NULL,
+  city varchar(60) default NULL,
+  state char(2) default NULL,
+  zipcode varchar(5) default NULL,
+  allday tinyint(1) NOT NULL default '0',
+  url varchar(255) default NULL,
+  description text,
+  postmode varchar(10) NOT NULL default 'plaintext',
+  owner_id mediumint(8) unsigned NOT NULL default '1',
+  group_id mediumint(8) unsigned NOT NULL default '1',
+  perm_owner tinyint(1) unsigned NOT NULL default '3',
+  perm_group tinyint(1) unsigned NOT NULL default '3',
+  perm_members tinyint(1) unsigned NOT NULL default '2',
+  perm_anon tinyint(1) unsigned NOT NULL default '2',
+  uid mediumint(8) NOT NULL default '0',
+  location varchar(128) default NULL,
+  timestart time default NULL,
+  timeend time default NULL,
+  PRIMARY KEY  (eid,uid)
+) TYPE=MyISAM
+";
+
+$_SQL[] = "INSERT INTO {$_TABLES['eventsubmission']} (eid, title, description, location, datestart, dateend, url, allday, zipcode, state, city, address2, address1, event_type, timestart, timeend) VALUES ('2006051410130162','Installed the Calendar plugin','Today, you successfully installed the Calendar plugin.','Your webserver',CURDATE(),CURDATE(),'http://www.geeklog.net/',1,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL)";
+
+$_SQL[] = "INSERT INTO {$_TABLES['blocks']} (is_enabled, name, type, title, tid, blockorder, content, onleft, phpblockfn, owner_id, group_id, perm_owner, perm_group) VALUES (1,'events_block','phpblock','Events','all',4,'',1,'phpblock_calendar',{$_USER['uid']},#group#,3,3)";
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/addeventoption.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/addeventoption.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/addeventoption.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/addeventoption.thtml	2006-05-14 12:04:12.000000000 -0500
@@ -0,0 +1,7 @@
+                                            <form method="post" action="{site_url}{addevent_formurl}">
+                                                <input type="submit" name="action" value="{lang_addevent}">
+                                                <input type="hidden" name="month" value="{cal_curmo_num}">
+                                                <input type="hidden" name="year" value="{cal_curyr_num}">
+                                                <input type="hidden" name="mode" value="{mode}">
+                                                <input type="hidden" name="view" value="addentry">
+                                            </form>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/addevent.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/addevent.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/addevent.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/addevent.thtml	2006-10-14 11:56:42.000000000 -0500
@@ -0,0 +1,41 @@
+                            <table cellpadding="2" cellspacing="2" border="0">
+                                <tr>
+                                    <td>{intro_msg}</td>
+                                </tr>
+                                <tr>
+                                    <td>
+                                        <table cellpadding="2" cellspacing="2" border="0">
+                                            <tr>
+                                                <td align="right"><b>{lang_event}:</b></td>
+                                                <td>{event_begin_anchortag}{event_title}{event_end_anchortag}</td>
+                                            </tr>
+                                            <tr>
+                                                <td align="right"><b>{lang_starts}:</b></td>
+                                                <td>{event_start}</td>
+                                            </tr>
+                                            <tr>
+                                                <td align="right"><b>{lang_ends}:</b></td>
+                                                <td>{event_end}</td>
+                                            </tr>
+                                            <tr>
+                                                <td align="right" valign="top"><b>{lang_where}:</b></td>
+                                                <td>{event_location}</td>
+                                            </tr>
+                                            <tr>
+                                                <td align="right"><b>{lang_description}:</b></td>
+                                                <td>{event_description}</td>
+                                            </tr>
+                                            <tr>
+                                                <td colspan="2">
+                                                    <form name="userevent" method="post" action="{site_url}/calendar/event.php">
+                                                        <input type="hidden" name="action" value="saveuserevent">
+                                                        <input type="hidden" name="eid" value="{event_id}">
+                                                        <input type="submit" value="{lang_addtomycalendar}">
+                                                    </form>
+                                                </td>
+                                            </tr>
+                                        </table>
+                                    </td>
+                                </tr>
+                            </table>
+
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/addremoveevent.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/addremoveevent.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/addremoveevent.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/addremoveevent.thtml	2006-03-08 07:23:25.000000000 -0600
@@ -0,0 +1 @@
+&nbsp;<font size="-2">[{addremove_begin_anchortag}{lang_addremovefromcal}{addremove_end_anchortag}]</font>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/admin/eventeditor.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/admin/eventeditor.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/admin/eventeditor.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/admin/eventeditor.thtml	2006-09-02 08:24:26.000000000 -0500
@@ -0,0 +1,165 @@
+                            <form action="{site_admin_url}/plugins/calendar/index.php" name="events" method="POST">
+                                <table border="0" cellspacing="0" cellpadding="3">
+                                    <tr>
+                                        <td align="right"><b>{lang_eventtitle}:</b></td>
+                                        <td>
+                                            <input type="text" size="48" maxlength="128" name="title" value="{event_title}">
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right"><b>{lang_eventtype}:</b></td>
+                                        <td>
+                                            <select name="event_type">
+                                                <option value="">--</option>
+                                                {type_options}
+                                            </select>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right" valign="top"><b>{lang_eventstartdate}:</b></td>
+                                        <td>
+                                            <select name="start_month">
+                                                {startmonth_options}
+                                            </select>
+                                            /
+                                            <select name="start_day">
+                                                {startday_options}
+                                            </select>
+                                            /
+                                            <select name="start_year">
+                                                {startyear_options}
+                                            </select>&nbsp;&nbsp;
+                                            <b>{lang_starttime}: </b>
+                                            <select name="start_hour">
+                                                {starthour_options}
+                                            </select>
+                                            :
+                                            <select name="start_minute">
+                                                {startminute_options}
+                                            </select>
+                                            {startampm_selection}
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right" valign="top"><b>{lang_eventenddate}:</b></td>
+                                        <td>
+                                            <select name="end_month">
+                                                {endmonth_options}
+                                            </select>
+                                            /
+                                            <select name="end_day">
+                                                {endday_options}
+                                            </select>
+                                            /
+                                            <select name="end_year">
+                                                {endyear_options}
+                                            </select>&nbsp;&nbsp;
+                                            <b>{lang_endtime}: </b>
+                                            <select name="end_hour">
+                                                {endhour_options}
+                                            </select>
+                                            :
+                                            <select name="end_minute">
+                                                {endminute_options}
+                                            </select>
+                                            {endampm_selection}
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right"><b>{lang_alldayevent}:</b></td>
+                                        <td><input type="checkbox" name="allday" {allday_checked}></td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right" valign="top"><b>{lang_location}:</b></td>
+                                        <td>
+                                            <textarea name="location" cols="45" rows="2">{event_location}</textarea>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right"><b>{lang_addressline1}:</b></td>
+                                        <td><input type="text" name="address1" size="40" value="{event_address1}"></td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right"><b>{lang_addressline2}:</b></td>
+                                        <td><input type="text" name="address2" size="40" value="{event_address2}"></td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right"><b>{lang_city}:</b></td>
+                                        <td><input type="text" name="city" size="40" maxlength="60" value="{event_city}"></td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right"><b>{lang_state}:</b></td>
+                                        <td>
+                                            <select name="state">
+                                                {state_options}
+                                            </select>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right"><b>{lang_zipcode}:</b></td>
+                                        <td><input type="text" name="zipcode" size="5" maxlength="5" value="{event_zipcode}"></td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right"><b>{lang_eventurl}:</b></td>
+                                        <td><input type="text" size="48"  maxlength="{max_url_length}" name="url" value="{event_url}"> {lang_includehttp}</td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right" valign="top"><b>{lang_eventdescription}:</b></td>
+                                        <td><textarea name="description" style="width:100%" rows="8">{event_description}</textarea></td>
+                                    </tr>
+                                    <tr valign="top">
+                                        <td align="right"><b>{lang_postmode}:</b></td>
+                                        <td>
+                                            <select name="postmode">
+                                                {post_options}
+                                            </select>
+                                            <br>
+                                            {lang_allowed_html}
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right"><b>{lang_hits}:</b></td>
+                                        <td>{hits}</td>
+                                    </tr>
+                                    <tr>
+                                        <td colspan="2"><hr></td>
+                                    </tr>
+                                    <tr>
+                                        <td colspan="2"><b>{lang_accessrights}</b></td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right">{lang_owner}:</td>
+                                        <td>{owner_name}<input type="hidden" name="owner_id" value="{owner_id}"></td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right">{lang_group}:</td>
+                                        <td>
+                                            {group_dropdown}
+                                        </td>
+                                    <tr>
+                                    <tr>
+                                        <td colspan="2"><b>{lang_permissions}</b>:</td>
+                                    </tr>
+                                    <tr>
+                                        <td colspan="2"></td>
+                                    </tr>
+                                    <tr>
+                                        <td colspan="2">{lang_permissionskey}</td>
+                                    </tr>
+                                    <tr>
+                                        <td colspan="2">
+                                            {permissions_editor} 
+                                        </td>
+                                    </tr>
+                                    <tr><td>&nbsp;</td></tr>
+                                    <tr>
+                                        <td colspan="2">
+                                            <input type="submit" value="{lang_save}" name="mode"> 
+                                            <input type="submit" value="{lang_cancel}" name="mode"> 
+                                            <input type="hidden" name="eid" value="{event_id}">
+                                            <input type="hidden" name="hour_mode" value="{hour_mode}">
+                                            {delete_option}
+                                        </td>
+                                    </tr>
+                                </table>
+                            </form>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/calendarday.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/calendarday.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/calendarday.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/calendarday.thtml	2006-03-08 07:23:25.000000000 -0600
@@ -0,0 +1,4 @@
+                                        <td valign="top" class="{cal_day_style}">
+                                            {cal_day_anchortags}
+                                            {cal_day_entries}
+                                        </td>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/calendarevent.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/calendarevent.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/calendarevent.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/calendarevent.thtml	2006-03-08 07:23:25.000000000 -0600
@@ -0,0 +1 @@
+                                            {event_anchortags}
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/calendar.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/calendar.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/calendar.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/calendar.thtml	2006-03-08 07:23:25.000000000 -0600
@@ -0,0 +1,103 @@
+
+                                <!-- Begin Calendar -->
+
+                                <table width="100%" cellpadding="5" cellspacing="0" border="0" class="cal-header">
+                                    <tr align="center" class="dayview_times">
+                                        <td width="33%" align="center"><a href="{site_url}/calendar/index.php?mode={mode}&amp;view=day">{lang_day}</a></td>
+                                        <td width="33%" align="center"><a href="{site_url}/calendar/index.php?mode={mode}&amp;view=week">{lang_week}</a></td>
+                                        <td width="33%" align="center"><b>{lang_month}</b></td>
+                                    </tr>
+                                </table><br>
+                                <table width="100%" cellpadding="5" cellspacing="1" border="0" class="cal-body">
+                                    <tr align="center">
+                                        <td colspan="8" class="cal-month">
+                                            <table border="0" width="100%">
+                                                <tr>
+                                                    <td class="cal-month" valign="top">
+                                                        {previous_months_calendar}
+                                                    </td>
+                                                    <td width="100%" class="cal-month" align="center">
+                                                        <table border="0" cellpadding="5" cellspacing="0">
+                                                            <tr>
+                                                                <td colspan="2" align="center"> 
+						                    <form method="post" action="index.php">
+                                                                        <input type="hidden" name="mode" value="{mode}">
+                                                                        <select name="month" onChange="this.form.submit()">
+                                                                            <option value="1" {selected_jan}>{lang_january}</option>
+                                                                            <option value="2" {selected_feb}>{lang_february}</option>
+                                                                            <option value="3" {selected_mar}>{lang_march}</option>
+                                                                            <option value="4" {selected_apr}>{lang_april}</option>
+                                                                            <option value="5" {selected_may}>{lang_may}</option>
+                                                                            <option value="6" {selected_jun}>{lang_june}</option>
+                                                                            <option value="7" {selected_jul}>{lang_july}</option>
+                                                                            <option value="8" {selected_aug}>{lang_august}</option>
+                                                                            <option value="9" {selected_sep}>{lang_september}</option>
+                                                                            <option value="10" {selected_oct}>{lang_october}</option>
+                                                                            <option value="11" {selected_nov}>{lang_november}</option>
+                                                                            <option value="12" {selected_dec}>{lang_december}</option>
+                                                                        </select>&nbsp;
+                                                                        <select name="year" onChange="this.form.submit()">
+                                                                        {year_options}
+                                                                        </select>
+                                                                    </form><br>
+                                                                </td>
+                                                            </tr>
+                                                            <tr>
+                                                                <td align="right">
+                                                                    {add_event_option} 
+                                                                </td>
+                                                                <td>
+                                                                    {personal_calendar_option} 
+                                                                    {master_calendar_option}
+                                                                </td>
+                                                            </tr>
+                                                        </table>
+                                                    </td>
+                                                    <td class="cal-month" valign="top">
+                                                        {next_months_calendar}
+                                                    </td>
+                                            </table>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>&nbsp;</td>
+                                        <td width="15%" class="cal-day">{lang_sunday}</td>
+                                        <td width="14%" class="cal-day">{lang_monday}</td>
+                                        <td width="14%" class="cal-day">{lang_tuesday}</td>
+                                        <td width="14%" class="cal-day">{lang_wednesday}</td>
+                                        <td width="14%" class="cal-day">{lang_thursday}</td>
+                                        <td width="14%" class="cal-day">{lang_friday}</td>
+                                        <td width="15%" class="cal-day">{lang_saturday}</td>
+                                    </tr>
+                                    {cal_week}
+                                </table>
+                                <table align="center">
+                                    <tr>
+                                        <td>
+                                            <form method="post" action="index.php">
+                                                <input type="submit" value="<<">
+                                                <input type="hidden" name="month" value="{cal_prevmo_num}">
+                                                <input type="hidden" name="year" value="{cal_prevyr_num}">
+                                                <input type="hidden" name="mode" value="{mode}">
+                                            </form>
+                                        </td>
+                                        <td>
+                                            {add_event_option}
+                                        </td>
+                                        <td>
+                                        {personal_calendar_option}
+                                        {master_calendar_option}
+                                        </td>
+                                        <td>
+                                            <form method="post" action="index.php">
+                                                <input type="submit" value=">>">
+                                                <input type="hidden" name="month" value="{cal_nextmo_num}">
+                                                <input type="hidden" name="year" value="{cal_nextyr_num}">
+                                                <input type="hidden" name="mode" value="{mode}">
+                                            </form>
+                                        </td>
+                                    </tr>
+                                </table>
+
+                                <!-- End Calendar -->
+                                
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/calendarweek.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/calendarweek.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/calendarweek.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/calendarweek.thtml	2006-03-08 07:23:25.000000000 -0600
@@ -0,0 +1,4 @@
+                                    <tr>
+                                        <td class="cal-weekpointers" valign="middle" align="center"><b><a href="{site_url}/calendar/index.php?mode={mode}&amp;view=week&amp;month={wmonth}&amp;day={wday}&amp;year={wyear}">&gt;&gt;</a></b></td>
+                                        {cal_days}
+                                    </tr>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/dayview/column.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/dayview/column.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/dayview/column.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/dayview/column.thtml	2006-03-08 07:23:25.000000000 -0600
@@ -0,0 +1 @@
+<td class="cal-dayx-times2">{event_entry}</td>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/dayview/dayview.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/dayview/dayview.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/dayview/dayview.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/dayview/dayview.thtml	2006-05-19 02:41:49.000000000 -0500
@@ -0,0 +1,125 @@
+<table width="100%" border="0" cellpadding="5" cellspacing="0" class="cal-header">
+  <tr align="center">
+    <td width="33%" align="center"><b>{lang_day}</b></td>
+    <td width="33%" align="center"><a href="{site_url}/calendar/index.php?mode={mode}&amp;view=week">{lang_week}</a></td>
+    <td width="33%" align="center"><a href="{site_url}/calendar/index.php?mode={mode}">{lang_month}</a></td>
+  </tr>
+</table>
+<br>
+<table cellpadding="2" cellspacing="1" border="0" width="100%" class="cal-dayx-body">
+                                <tr>
+                                    <td colspan="2" class="cal-dayx-cur"><table width="100%" border="0">
+                                      <tr>
+                                        <td colspan="2" class="cal-dayx-cur"><a href="{site_url}/calendar/index.php?mode={mode}&amp;view=day&amp;month={prevmonth}&amp;day={prevday}&amp;year={prevyear}">&lt;&lt;</a>&nbsp;&nbsp;{currentday}&nbsp;&nbsp;<a href="{site_url}/calendar/index.php?mode={mode}&amp;view=day&amp;month={nextmonth}&amp;day={nextday}&amp;year={nextyear}">&gt;&gt;</a></td>
+                                        <td>&nbsp;</td>
+                                      </tr>
+                                      <tr>
+                                        <td colspan="2" class="cal-dayx-subcur">{calendar_title} {calendar_toggle}</td>
+                                        <td>&nbsp;</td>
+                                      </tr>
+                                    </table></td>
+                                
+                                <tr>
+                                    <td width="1%" nowrap class="cal-dayx-weekevent"><div align="right">{lang_week} {week_num}</div></td>
+                                    <td>{allday_events}</td>
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=0">{0_hour}</a></div></td>
+                                    {0_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=1">{1_hour}</a></div></td>
+                                    {1_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=2">{2_hour}</a></div></td>
+                                    {2_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=3">{3_hour}</a></div></td>
+                                    {3_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=4">{4_hour}</a></div></td>
+                                    {4_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=5">{5_hour}</a></div></td>
+                                    {5_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=6">{6_hour}</a></div></td>
+                                    {6_cols}
+                                </tr>
+
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=7">{7_hour}</a></div></td>
+                                    {7_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=8">{8_hour}</a></div></td>
+                                    {8_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=9">{9_hour}</a></div></td>
+                                    {9_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=10">{10_hour}</a></div></td>
+                                    {10_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=11">{11_hour}</a></div></td>
+                                    {11_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=12">{12_hour}</a></div></td>
+                                    {12_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=13">{13_hour}</a></div></td>
+                                    {13_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=14">{14_hour}</a></div></td>
+                                    {14_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=15">{15_hour}</a></div></td>
+                                    {15_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=16">{16_hour}</a></div></td>
+                                    {16_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=17">{17_hour}</a></div></td>
+                                    {17_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=18">{18_hour}</a></div></td>
+                                    {18_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=19">{19_hour}</a></div></td>
+                                    {19_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=20">{20_hour}</a></div></td>
+                                    {20_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=21">{21_hour}</a></div></td>
+                                    {21_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=22">{22_hour}</a></div></td>
+                                    {22_cols}
+                                </tr>
+                                <tr>
+                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=calendar&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=23">{23_hour}</a></div></td>
+                                    {23_cols}
+                                </tr>
+</table>
+<br>
+                            {quickadd_form}
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/dayview/quickaddform.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/dayview/quickaddform.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/dayview/quickaddform.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/dayview/quickaddform.thtml	2006-09-02 08:24:26.000000000 -0500
@@ -0,0 +1,48 @@
+                            <form action="{site_url}/calendar/index.php" method="post">
+                                <input type="hidden" name="view" value="addentry">
+                                <input type="hidden" name="calendar_type" value="quickadd">
+                                <input type="hidden" name="hour_mode" value="{hour_mode}">
+                                <table cellpadding="0" cellspacing="1" border="0" width="100%">
+                                    <tr>
+                                        <td>{lang_quickadd}</td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <table cellpadding="0" cellspacing="0" border="0" width="100%" class="cal-quickadd">
+                                                <tr>
+                                                    <td><b>{lang_event}</b></td>
+                                                    <td><b>{lang_date}</b></td>
+                                                    <td><b>{lang_time}</b></td>
+                                                </tr>
+                                                <tr>
+                                                    <td><input type="text" size="20" maxlength="96" name="title"></td>
+                                                    <td>
+                                                        <select name="start_month">
+                                                            {month_options}
+                                                        </select>
+                                                        /
+                                                        <select name="start_day">
+                                                            {day_options}
+                                                        </select>
+                                                        /
+                                                        <select name="start_year">
+                                                            {year_options}
+                                                        </select>
+                                                    </td>
+                                                    <td>
+                                                        <select name="start_hour">
+                                                            {hour_options}
+                                                        </select>
+                                                        :
+                                                        <select name="start_minute">
+                                                            {minute_options}
+                                                        </select>
+                                                        {startampm_selection}
+                                                        <input type="submit" value="{lang_add}">
+                                                    </td>
+                                                </tr>
+                                            </table>
+                                        </td>
+                                    </tr>
+                                </table>
+                            </form>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/dayview/singleevent.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/dayview/singleevent.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/dayview/singleevent.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/dayview/singleevent.thtml	2006-05-08 23:56:39.000000000 -0500
@@ -0,0 +1 @@
+{delete_imagelink} {event_time} <a href="{site_url}/calendar/event.php?mode={mode}&amp;eid={eid}">{event_title}</a>{br}
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/editpersonalevent.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/editpersonalevent.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/editpersonalevent.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/editpersonalevent.thtml	2006-09-02 08:24:26.000000000 -0500
@@ -0,0 +1,123 @@
+                            <form action="{site_url}/calendar/event.php" method="POST">
+                                <input type="hidden" name="calendar_type" value="personal">
+                                <input type="hidden" name="hour_mode" value="{hour_mode}">
+                                <input type="hidden" name="eid" value="{eid}">
+                                <input type="hidden" name="uid" value="{uid}">
+                                <table border="0" cellspacing="0" cellpadding="3">
+                                    <tr>
+                                        <td align="right"><b>{lang_title}:</b></td>
+                                        <td><input type="text" size="36" maxlength="96" name="title" value="{event_title}"></td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right"><b>{lang_eventtype}:</b></td>
+                                        <td>
+                                            <select name="event_type">
+                                                <option value="">--</option>
+                                                {type_options}
+                                            </select>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right"><b>{lang_startdate}:</b></td>
+                                        <td>
+                                            <select name="start_month">
+                                                {startmonth_options}
+                                            </select>
+                                            /
+                                            <select name="start_day">
+                                                {startday_options}
+                                            </select>
+                                            /
+                                            <select name="start_year">
+                                                {startyear_options}
+                                            </select>&nbsp;&nbsp;
+                                            <b>{lang_starttime}: </b>
+                                            <select name="start_hour">
+                                                {starthour_options}
+                                            </select>
+                                            :
+                                            <select name="start_minute">
+                                                {startminute_options}
+                                            </select>
+                                            {startampm_selection}
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right"><b>{lang_enddate}:</b></td>
+                                        <td>
+                                            <select name="end_month">
+                                                {endmonth_options}
+                                            </select>
+                                            /
+                                            <select name="end_day">
+                                                {endday_options}
+                                            </select>
+                                            /
+                                            <select name="end_year">
+                                                {endyear_options}
+                                            </select>&nbsp;&nbsp;
+                                            <b>{lang_endtime}: </b>
+                                            <select name="end_hour">
+                                                {endhour_options}
+                                            </select>
+                                            :
+                                            <select name="end_minute">
+                                                {endminute_options}
+                                            </select>
+                                            {endampm_selection}
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right"><b>{lang_alldayevent}:</b></td>
+                                        <td><input type="checkbox" name="allday" {allday_checked}></td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right" valign="top"><b>{lang_location}:</b></td>
+                                        <td>
+                                            <textarea name="location" cols="45" rows="2">{event_location}</textarea>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right"><b>{lang_addressline1}:</b></td>
+                                        <td><input type="text" name="address1" size="36" value="{event_address1}"></td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right"><b>{lang_addressline2}:</b></td>
+                                        <td><input type="text" name="address2" size="36" value="{event_address2}"></td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right"><b>{lang_city}:</b></td>
+                                        <td><input type="text" name="city" size="36" value="{event_city}"></td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right"><b>{lang_state}:</b></td>
+                                        <td>
+                                            <select name="state">
+                                                {state_options}
+                                            </select>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right"><b>{lang_zipcode}:</b></td>
+                                        <td><input type="text" name="zipcode" size="5" maxlength="5" value="{event_zipcode}"></td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right"><b>{lang_link}:</b></td>
+                                        <td><input type="text" size="36" maxlength="128" name="url" value="{event_url}"></td>
+                                    </tr>
+                                    <tr>
+                                        <td align="right" valign="top"><b>{lang_description}:</b></td>
+                                        <td><textarea name="description" cols="50" rows="20">{event_description}</textarea></td>
+                                    </tr>
+                                    <tr>
+                                        <td align="center" colspan="2">{lang_htmlnotallowed}</td>
+                                    </tr>
+                                    <tr>
+                                        <td align="center" colspan="2">
+                                            <input type="hidden" name="type" value="event">
+                                            <input type="submit" name="action" value="{lang_submit}">
+                                            <input type="submit" name="action" value="{lang_delete}">
+                                        </td>
+                                    </tr>
+                                </table>
+                            </form>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/eventdetails.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/eventdetails.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/eventdetails.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/eventdetails.thtml	2006-03-08 07:23:25.000000000 -0600
@@ -0,0 +1,29 @@
+                            <table cellspacing="0" cellpadding="3" border="0" width="100%">
+                                <tr>
+                                    <td colspan="2">
+                                        <h1>{event_begin_anchortag}{event_title}{event_end_anchortag}</h1>
+                                    </td>
+                                </tr>
+                                <tr valign="top">
+                                    <td align="right"><b>{lang_when}:</b></td>
+                                    <td width="100%">{event_start} - {event_end}</td>
+                                </tr>
+                                <tr valign="top">
+                                    <td align="right"><b>{lang_event_type}:</b></td>
+                                    <td width="100%">{event_type}</td>
+                                </tr>
+                                <tr valign="top">
+                                    <td align="right"><b>{lang_where}:</b></td>
+                                    <td width="100%">
+                                        {event_location}{br0}
+                                        {event_address1}{br1}
+                                        {event_address2}{br2}
+                                        {event_city}{event_state} {event_zip}
+                                    </td>
+                                </tr>
+                                <tr valign="top">
+                                    <td align="right"><b>{lang_description}:</b></td>
+                                    <td width="100%">{event_description}</td>
+                                </tr>
+                                <tr><td colspan="2">{addremove_event} {edit_icon}</td></tr>
+                            </table><br><br>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/events.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/events.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/events.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/events.thtml	2006-05-19 02:54:59.000000000 -0500
@@ -0,0 +1,3 @@
+                            [ <a href="{site_url}/submit.php?type=calendar{calendar_mode}">{lang_addevent}</a> ][ <a href="{site_url}/calendar/index.php">{lang_backtocalendar}</a> ]<br><br>
+                            <h1>{lang_month} {event_year}</h1>
+                            {event_details}
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/mastercalendaroption.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/mastercalendaroption.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/mastercalendaroption.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/mastercalendaroption.thtml	2006-03-08 07:23:25.000000000 -0600
@@ -0,0 +1,3 @@
+                                            <form method="post" action="index.php">
+                                                <input type="submit" name="action" value="{lang_mastercal}">
+                                            </form>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/personalcalendaroption.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/personalcalendaroption.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/personalcalendaroption.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/personalcalendaroption.thtml	2006-03-08 07:23:25.000000000 -0600
@@ -0,0 +1,3 @@
+                                            <form method="post" action="index.php?mode=personal">
+                                                <input type="submit" name="action" value="{lang_mycalendar}">
+                                            </form>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/submitevent.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/submitevent.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/submitevent.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/submitevent.thtml	2006-10-01 12:47:03.000000000 -0500
@@ -0,0 +1,102 @@
+                            {explanation}
+                            <form class="form-theme" action="{site_url}{submit_url}" method="post">
+                                <div class="form-description">{lang_title}:</div>
+                                <div class="form-field"><input type="text" size="48" maxlength="128" name="title"></div>
+                                <div class="clear-left"></div>
+                                <div class="form-description">{lang_eventtype}:</div>
+                                <div class="form-field">
+                                    <select name="event_type">
+                                        <option value="">--</option>
+                                        {type_options}
+                                    </select>
+                                </div>
+                                <div class="clear-left"></div>
+                                <div class="form-description">{lang_startdate}:</div>
+                                <div class="form-field">
+                                    <select name="start_month">
+                                        {month_options}
+                                    </select>
+                                    /
+                                    <select name="start_day">
+                                        {day_options}
+                                    </select>
+                                    /
+                                    <select name="start_year">
+                                        {year_options}
+                                    </select>&nbsp;&nbsp;
+                                    <b>{lang_starttime}: </b>
+                                    <select name="start_hour">
+                                        {hour_options}
+                                    </select>
+                                    :
+                                    <select name="start_minute">
+                                        {minute_options}
+                                    </select>
+                                    {startampm_selection}
+                                </div>
+                                <div class="clear-left"></div>
+                                <div class="form-description">{lang_enddate}:</div>
+                                <div class="form-field">
+                                    <select name="end_month">
+                                        {month_options}
+                                    </select>
+                                    /
+                                    <select name="end_day">
+                                        {day_options}
+                                    </select>
+                                    /
+                                    <select name="end_year">
+                                        {year_options}
+                                    </select>&nbsp;&nbsp;
+                                    <b>{lang_endtime}: </b>
+                                    <select name="end_hour">
+                                        {hour_options}
+                                    </select>
+                                    :
+                                    <select name="end_minute">
+                                        {minute_options}
+                                    </select>
+                                    {startampm_selection}
+                                </div>
+                                <div class="clear-left"></div>
+                                <div class="form-description">{lang_alldayevent}:</div>
+                                <div class="form-field"><input type="checkbox" name="allday"></div>
+                                <div class="clear-left"></div>
+                                <div class="form-description">{lang_location}:</div>
+                                <div class="form-field"><textarea name="location" cols="45" rows="2"></textarea></div>
+                                <div class="clear-left"></div>
+                                <div class="form-description">{lang_addressline1}:</div>
+                                <div class="form-field"><input type="text" name="address1" size="40"></div>
+                                <div class="clear-left"></div>
+                                <div class="form-description">{lang_addressline2}:</div>
+                                <div class="form-field"><input type="text" name="address2" size="40"></div>
+                                <div class="clear-left"></div>
+                                <div class="form-description">{lang_city}:</div>
+                                <div class="form-field"><input type="text" name="city" size="40" maxlength="60"></div>
+                                <div class="clear-left"></div>
+                                <div class="form-description">{lang_state}:</div>
+                                <div class="form-field">
+                                            <select name="state">
+                                                {state_options}
+                                            </select>
+                                </div>
+                                <div class="clear-left"></div>
+                                <div class="form-description">{lang_zipcode}:</div>
+                                <div class="form-field"><input type="text" name="zipcode" size="5" maxlength="5"></div>
+                                <div class="clear-left"></div>
+                                <div class="form-description">{lang_link}:</div>
+                                <div class="form-field"><input type="text" size="48" maxlength="{max_url_length}" name="url" value="http://"></div>
+                                <div class="clear-left"></div>
+                                <div class="form-description">{lang_description}:</div>
+                                <div class="form-field"><textarea name="description" style="width:100%" rows="8"></textarea></div>
+                                <div class="clear-left"></div>
+                                <div class="form-field">{lang_htmnotallowed}</div>
+                                <div class="form-field">
+                                    <input type="hidden" name="mode" value="{lang_submit}">
+                                    <input type="hidden" name="type" value="calendar">
+                                    <input type="hidden" name="calendar_type" value="{mode}">
+                                    <input type="hidden" name="hour_mode" value="{hour_mode}">
+                                    <input type="submit" value="{lang_submit}">
+                                </div>
+                                <div class="clear-left"></div>
+                            </form>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/weekview/events.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/weekview/events.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/weekview/events.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/weekview/events.thtml	2006-09-23 15:02:45.000000000 -0500
@@ -0,0 +1 @@
+<div style="border-bottom:1px solid white;">{delete_imagelink} {event_starttime} {event_endtime} {event_title_and_link}</div>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/weekview/weekview.thtml 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/weekview/weekview.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/calendar/templates/weekview/weekview.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/calendar/templates/weekview/weekview.thtml	2006-03-08 07:23:25.000000000 -0600
@@ -0,0 +1,70 @@
+<table width="100%" border="0" cellpadding="5" cellspacing="0" class="cal-header">
+  <tr align="center">
+    <td width="33%" align="center"><a href="{site_url}/calendar/index.php?mode={mode}&amp;view=day">{lang_day}</a></td>
+    <td width="33%" align="center"><b>{lang_week}</b></td>
+    <td width="33%" align="center"><a href="{site_url}/calendar/index.php?mode={mode}">{lang_month}</a></td>
+  </tr>
+</table>
+<br>
+<table width="100%" cellspacing="0" border="0">
+                                <tr>
+                                    <td colspan="2" class="cal-weekview-daterange"><a href="{site_url}/calendar/index.php?mode={mode}&amp;view=week&amp;month={prevmonth}&amp;day={prevday}&amp;year={prevyear}">&lt;&lt;</a>&nbsp;&nbsp;{date_range}&nbsp;&nbsp<a href="{site_url}/calendar/index.php?mode={mode}&amp;view=week&amp;month={nextmonth}&amp;day={nextday}&amp;year={nextyear}">&gt;&gt;</a></td>
+                                </tr>
+                                <tr>
+                                    <td colspan="2" class="cal-weekview-caltitle">{calendar_title} {calendar_toggle}</td>                                   
+                                </tr>
+                                <tr>
+                                  <td colspan="2">&nbsp;</td>
+                                </tr>
+                                <tr class="{class1}">
+                                    <td width="80%" class="cal-weekview-dayformat">{day1}</td><td align="right" nowrap class="cal-weekview-addevent">{langlink_addevent1}</td>
+                                </tr>
+                                <tr>
+                                    <td colspan="2" valign="bottom" class="cal-dayview-times">{events_day1}</td>
+                                </tr>
+                                <tr><td colspan="2">&nbsp;</td></tr>
+                                <tr class="{class2}">
+                                    <td class="cal-weekview-dayformat">{day2}</td><td align="right" nowrap class="cal-weekview-addevent">{langlink_addevent2}</td>
+                                </tr>
+                                <tr>
+                                    <td colspan="2" class="cal-dayview-times">{events_day2}</td>
+                                </tr>
+                                <tr><td colspan="2">&nbsp;</td></tr>
+                                <tr class="{class3}">
+                                    <td class="cal-weekview-dayformat">{day3}</td><td align="right" nowrap class="cal-weekview-addevent">{langlink_addevent3}</td>
+                                </tr>
+                                <tr>
+                                    <td colspan="2" class="cal-dayview-times">{events_day3}</td>
+                                </tr>
+                                <tr><td colspan="2">&nbsp;</td></tr>
+                                <tr class="{class4}">
+                                    <td class="cal-weekview-dayformat">{day4}</td><td align="right" nowrap class="cal-weekview-addevent">{langlink_addevent4}</td>
+                                </tr>
+                                <tr>
+                                    <td colspan="2" class="cal-dayview-times">{events_day4}</td>
+                                </tr>
+                                <tr><td colspan="2">&nbsp;</td></tr>
+                                <tr class="{class5}">
+                                    <td class="cal-weekview-dayformat">{day5}</td><td align="right" nowrap class="cal-weekview-addevent">{langlink_addevent5}</td>
+                                </tr>
+                                <tr>
+                                    <td colspan="2" class="cal-dayview-times">{events_day5}</td>
+                                </tr>
+                                <tr><td colspan="2">&nbsp;</td></tr>
+                                <tr class="{class6}">
+                                    <td class="cal-weekview-dayformat">{day6}</td><td align="right" nowrap class="cal-weekview-addevent">{langlink_addevent6}</td>
+                                </tr>
+                                <tr>
+                                    <td colspan="2" class="cal-dayview-times">{events_day6}</td>
+                                </tr>
+                                <tr><td colspan="2">&nbsp;</td></tr>
+                                <tr class="{class7}">
+                                    <td class="cal-weekview-dayformat">{day7}</td><td align="right" nowrap class="cal-weekview-addevent">{langlink_addevent7}</td>
+                                </tr>
+                                <tr>
+                                    <td colspan="2" class="cal-dayview-times">{events_day7}</td>
+                                </tr>
+                                <tr><td colspan="2">&nbsp;</td></tr>
+</table>
+<br>
+                            {quickadd_form}
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/config.php 1.4.1.src/cpanel-glprivate/plugins/links/config.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/config.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/config.php	2006-10-10 06:41:16.000000000 -0500
@@ -1,10 +1,10 @@
 <?php
 
-// Reminder: always indent with 4 spaces (no tabs). 
+// Reminder: always indent with 4 spaces (no tabs).
 // +---------------------------------------------------------------------------+
 // | config.php   Links plugin configuration file                              |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
 // |          Mark Limburg      - mlimburg AT users.sourceforge DOT net        |
@@ -16,7 +16,6 @@
 // | as published by the Free Software Foundation; either version 2            |
 // | of the License, or (at your option) any later version.                    |
 // |                                                                           |
-// |                                                                           |
 // | This program is distributed in the hope that it will be useful,           |
 // | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
 // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                      |
@@ -28,109 +27,118 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: config.php,v 1.7 2005/12/09 12:05:22 ospiess Exp $
-/** 
+// $Id: config.php,v 1.11 2006/10/10 11:41:16 ospiess Exp $
+/**
  * Links plugin configuration file
- * 
+ *
  * @package Links
  * @filesource
- * @version 1.0
+ * @version 1.0.1
  * @since GL 1.4.0
- * @copyright Copyright &copy; 2005
- * @license http://opensource.org/licenses/gpl-license.php GNU Public License 
+ * @copyright Copyright &copy; 2005-2006
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  * @author Trinity Bays <trinity93@steubentech.com>
  * @author Tony Bibbs <tony@tonybibbs.com>
  * @author Tom Willett <twillett@users.sourceforge.net>
  * @author Blaine Lang <langmail@sympatico.ca>
  * @author Dirk Haun <dirk@haun-online.de>
- * 
+ *
  */
 
 /**
 * the link plugin's config aray
-* 
-* @global array $_LI_CONF 
+*
+* @global array $_LI_CONF
 */
 $_LI_CONF = array();
+
 /**
 * the link plugin's version setting
-* 
+*
 * @global array $_LI_CONF['version']
 */
-$_LI_CONF['version'] = '1.0';          // Plugin Version
+$_LI_CONF['version'] = '1.0.1';          // Plugin Version
 
 /**
  * this lets you select which functions are available for registered users only
- * 
+ *
  * @global array $_LI_CONF['linksloginrequired']
- */ 
+ */
 $_LI_CONF['linksloginrequired'] = 0;
 
 /**
  * Submission Settings
  * enable (set to 1) or disable (set to 0) submission queues:
- * 
+ *
  * @global array $_LI_CONF['linksubmission']
  */
 $_LI_CONF['linksubmission']  = 1;
 
 /**
  * Following times are in seconds
- * 
+ *
  * @global array $_LI_CONF['newlinksinterval']
- */ 
+ */
 $_LI_CONF['newlinksinterval']    = 1209600; // = 14 days
 
 /**
  * Set to 1 to hide a section from the What's New block:
- * 
+ *
  * @global array $_LI_CONF['hidenewlinks']
- */ 
+ */
 $_LI_CONF['hidenewlinks']    = 0;
 
 /**
- * Set to 1 to hide a section from the Top menu:
+ * Set to 1 to hide the "Web Resources" entry from the top menu:
  *
- * @global array $_LI_CONF['hidenewlinks']
+ * @global array $_LI_CONF['hidelinksmenu']
  */
 $_LI_CONF['hidelinksmenu']    = 0;
 
 /**
  * categories per column
- * You can set this and $_LI_CONF['linksperpage'] to 0 to get back the old (pre-1.3.6)
- * style of the links section. Setting only linkcols to 0 will hide the
- * categories but keep the paging. Setting only linksperpage to 0 will list
+ * You can set this and $_LI_CONF['linksperpage'] to 0 to get back the old
+ * (pre-1.3.6) style of the links section. Setting only linkcols to 0 will hide
+ * the categories but keep the paging. Setting only linksperpage to 0 will list
  * all the links of the selected category on one page.
- * 
- * @global array $_LI_CONF['linkcols'] 
- */ 
-$_LI_CONF['linkcols']     =  3; 
+ *
+ * @global array $_LI_CONF['linkcols']
+ */
+$_LI_CONF['linkcols']     =  3;
 
 /**
  * links per page
- * You can set this and $_LI_CONF['linkcols'] to 0 to get back the old (pre-1.3.6)
- * style of the links section. Setting only linkcols to 0 will hide the
- * categories but keep the paging. Setting only linksperpage to 0 will list
+ * You can set this and $_LI_CONF['linkcols'] to 0 to get back the old
+ * (pre-1.3.6) style of the links section. Setting only linkcols to 0 will hide
+ * the categories but keep the paging. Setting only linksperpage to 0 will list
  * all the links of the selected category on one page.
- * 
+ *
  * @global array $_LI_CONF['linksperpage']
- */ 
+ */
 $_LI_CONF['linksperpage'] = 10;
 
 /**
+ * show top ten links
+ * Whether to show the Top Ten Links on the main page or not.
+ *
+ * @global array $_LI_CONF['show_top10']
+ */
+$_LI_CONF['show_top10']   = true;
+
+/**
  * notify when a new link was submitted
- * 
+ *
  * @global array $_LI_CONF['notification']
- */ 
-$_LI_CONF['notification'] = 0; 
+ */
+$_LI_CONF['notification'] = 0;
 
 /**
  * should we remove links submited by users if account is removed? (1)
  * or change owner to root (0)
- * 
+ *
  * @global array $_LI_CONF['delete_links']
- */ 
-$_LI_CONF['delete_links'] = 0; 
+ */
+$_LI_CONF['delete_links'] = 0;
 
 /**
  * Define default permissions for new links created from the Admin panel.
@@ -140,9 +148,9 @@
  * - 2 = read-only
  * - 0 = neither read nor write permissions
  * (a value of 1, ie. write-only, does not make sense and is not allowed)
- * 
+ *
  * @global array $_LI_CONF['default_permissions']
- */ 
+ */
 $_LI_CONF['default_permissions'] = array (3, 2, 2, 2);
 
 // database table names - don't change
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/functions.inc 1.4.1.src/cpanel-glprivate/plugins/links/functions.inc
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/functions.inc	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/functions.inc	2006-12-21 09:44:21.000000000 -0600
@@ -1,7 +1,8 @@
 <?php
 
+// Reminder: always indent with 4 spaces (no tabs).
 // +---------------------------------------------------------------------------+
-// | Links Plugin 1.0  functions.inc                                           |
+// | Links Plugin 1.0.1  functions.inc                                         |
 // +---------------------------------------------------------------------------+
 // |                                                                           |
 // | This program is free software; you can redistribute it and/or             |
@@ -19,6 +20,8 @@
 // | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
 // |                                                                           |
 // +---------------------------------------------------------------------------+
+//
+// $Id: functions.inc,v 1.71 2006/12/18 06:45:37 ospiess Exp $
 
 
 /**
@@ -28,23 +31,19 @@
  *
  * @package Links
  * @filesource
- * @version 1.0
+ * @version 1.0.1
  * @since GL 1.4.0
  * @copyright Copyright &copy; 2005-2006
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
- * @author Trinity Bays <trinity93@steubentech.com>
- * @author Tony Bibbs <tony@tonybibbs.com>
- * @author Tom Willett <twillett@users.sourceforge.net>
- * @author Blaine Lang <langmail@sympatico.ca>
- * @author Dirk Haun <dirk@haun-online.de>
+ * @author Trinity Bays <trinity93 AT steubentech DOT com>
+ * @author Tony Bibbs <tony AT tonybibbs DOT com>
+ * @author Tom Willett <tom AT pigstye DOT net>
+ * @author Blaine Lang <langmail AT sympatico DOT ca>
+ * @author Dirk Haun <dirk AT haun-online DOT de>
  *
  */
 
 
-// Reminder: always indent with 4 spaces (no tabs).
-// $Id: functions.inc,v 1.49.2.2 2006/07/22 17:31:20 dhaun Exp $
-
-
 if (strpos ($_SERVER['PHP_SELF'], 'functions.inc') !== false) {
     die ('This file can not be used on its own.');
 }
@@ -61,7 +60,7 @@
 require_once ($_CONF['path'] . 'plugins/links/config.php');
 
 // +---------------------------------------------------------------------------+
-// | Geeklog Plugin API Implementations                                        |
+// | Geeklog Plugin API Implementation                                         |
 // +---------------------------------------------------------------------------+
 
 /**
@@ -70,27 +69,38 @@
 * NOTE: this MUST return the url/value pairs in the following format
 * $<arrayname>[<label>] = <url>
 *
+* @return   mixed   menu entry, or boolean false if disabled / hidden
+*
 */
 function plugin_getmenuitems_links()
 {
-    global $_CONF, $LANG_LINKS, $_LI_CONF;
+    global $_CONF, $_USER, $_LI_CONF, $LANG_LINKS;
 
-    if ($_LI_CONF['hidelinksmenu'] == 0) {
-        $menuitems[$LANG_LINKS[114]] = $_CONF['site_url'] . '/links/index.php';
+    $anon = (empty ($_USER['uid']) || ($_USER['uid'] <= 1)) ? true : false;
+    if (($_LI_CONF['hidelinksmenu'] == 1) || ($anon &&
+                ($_CONF['loginrequired'] || $_LI_CONF['linksloginrequired']))) {
+        return false;
     }
+
+    $menuitems[$LANG_LINKS[114]] = $_CONF['site_url'] . '/links/index.php';
+
     return $menuitems;
 }
 
+/**
+* Return headlines for New Links section in the What's New block, if enabled
+*
+* @return   mixed       array(headline, byline), or boolean false is disabled
+*
+*/
 function plugin_whatsnewsupported_links()
 {
     global $_TABLES, $_LI_CONF, $LANG_LINKS, $LANG_WHATSNEW;
 
-    $hidewhatsnew = $_LI_CONF['hidenewlinks'];
-    if ( $hidewhatsnew == 0 ) {
-        $retval = array( $LANG_LINKS[84], '<small>'
-                         . COM_formatTimeString( $LANG_WHATSNEW['new_last'],
-                                                 $_LI_CONF['newlinksinterval'] )
-                         . '</small>'
+    if ( $_LI_CONF['hidenewlinks'] == 0 ) {
+        $retval = array( $LANG_LINKS[84],
+                         COM_formatTimeString( $LANG_WHATSNEW['new_last'],
+                                               $_LI_CONF['newlinksinterval'] )
                        );
     } else {
         $retval = false;
@@ -99,6 +109,12 @@
     return $retval;
 }
 
+/**
+* Return new links for the What's New block
+*
+* @return   string  HTML list of new links
+*
+*/
 function plugin_getwhatsnew_links()
 {
     global $_CONF, $_TABLES, $_USER, $_LI_CONF, $LANG_LINKS;
@@ -106,7 +122,7 @@
     $retval = '';
 
     // Get newest links
-    $sql = "SELECT lid,title FROM {$_TABLES['links']} WHERE (date >= (date_sub(NOW(), INTERVAL {$_LI_CONF['newlinksinterval']} SECOND)))" . COM_getPermSQL( 'AND' ) . ' ORDER BY date DESC LIMIT 15';
+    $sql = "SELECT lid,title FROM {$_TABLES['links']} WHERE (date >= (DATE_SUB(NOW(), INTERVAL {$_LI_CONF['newlinksinterval']} SECOND)))" . COM_getPermSQL( 'AND' ) . ' ORDER BY date DESC LIMIT 15';
     $result = DB_query( $sql );
     $nrows = DB_numRows( $result );
 
@@ -122,22 +138,21 @@
             $lcount = COM_buildUrl( $_CONF['site_url']
                     . '/links/portal.php?what=link&amp;item=' . $A['lid'] );
 
-            // Trim the length if over 16 characters
-            $itemlen = strlen( $A['title'] );
-            if( $itemlen > 16 )
+            $title = COM_truncate( $A['title'], $_CONF['title_trim_length'],
+                                   '...' );
+            if( $title != $A['title'] )
             {
-                $newlinks [] = '<a href="' . $lcount . '" title="'
-                    . $A['title'] . '">' . substr( $A['title'], 0, 16 )
-                    . '...</a>' . LB;
+                $newlinks[] = '<a href="' . $lcount . '" title="'
+                            . $A['title'] . '">' . $title . '</a>' . LB;
             }
             else
             {
-                $newlinks[] = '<a href="' . $lcount . '">'
-                    . substr( $A['title'], 0, $itemlen ) . '</a>' . LB;
+                $newlinks[] = '<a href="' . $lcount . '">' . $A['title']
+                            . '</a>' . LB;
             }
         }
 
-        $retval .= COM_makeList( $newlinks, 'list-new-links' );
+        $retval .= COM_makeList( $newlinks, 'list-new-plugins' );
     }
     else
     {
@@ -150,6 +165,11 @@
 /**
 * Implements the [link:] autotag.
 *
+* @param    string  $op         operation to perform
+* @param    string  $content    item (e.g. story text), including the autotag
+* @param    array   $autotag    parameters used in the autotag
+* @param    mixed               tag names (for $op='tagname') or formatted content
+*
 */
 function plugin_autotags_links ($op, $content = '', $autotag = '')
 {
@@ -159,8 +179,8 @@
         return 'link';
     } else if ($op == 'parse') {
         $lid = COM_applyFilter ($autotag['parm1']);
-        $url = COM_buildUrl ($_CONF['site_url'] . '/links/portal.php?what=link&item='
-                             . $lid);
+        $url = COM_buildUrl ($_CONF['site_url']
+                             . '/links/portal.php?what=link&item=' . $lid);
         if (empty ($autotag['parm2'])) {
             $linktext = stripslashes (DB_getItem ($_TABLES['links'],
                                       'title', "lid = '$lid'"));
@@ -175,25 +195,12 @@
 }
 
 /**
-* Geeklog is checking to see if this plugin supports comments, tell it no.
-*
-* NOTE: to support comments you must used the same date/time based ID for your
-* widget.  In other words, to make primary keys for your plugin you should call
-* makesid().  Comments are keyed off of that...it is a limitation on how Geeklog
-* does comments.
-*
-*/
-function plugin_commentsupport_links()
-{
-    // links will not use comments
-    return false;
-}
-
-
-/**
 * Called by the plugin Editor to display the current plugin code version
-* This may be different then the version installed and registered currently.
+* This may be different than the version installed and registered currently.
 * If newer then you may want to run the update
+*
+* @return   string  version number
+*
 */
 function plugin_chkVersion_links ()
 {
@@ -213,7 +220,7 @@
     global $_TABLES;
 
     $result = DB_query ("SELECT COUNT(*) AS count,SUM(hits) AS clicks FROM {$_TABLES['links']}" . COM_getPermSQL ());
-    $A = DB_fetchArray($result);
+    $A = DB_fetchArray ($result);
     $total_links = $A['count'];
     $total_clicks = $A['clicks'];
     if (empty ($total_clicks)) {
@@ -228,41 +235,57 @@
 * If $showsitestats is 1 then we are to only print the overall stats in the
 * 'site statistics box' otherwise we show the detailed stats
 *
-* @param    int     showsitestate   Flag to let us know which stats to get
+* @param    int     $showsitestate  Flag to let us know which stats to get
+* @param    string                  HTML for the stats section
+*
 */
 function plugin_showstats_links ($showsitestats)
 {
     global $_CONF, $_TABLES, $LANG_LINKS_STATS;
-    require_once( $_CONF['path_system'] . 'lib-admin.php' );
+
+    require_once ($_CONF['path_system'] . 'lib-admin.php');
+
     $retval = '';
 
-    $result = DB_query("SELECT lid,url,title,hits FROM {$_TABLES['links']} WHERE (hits > 0)" . COM_getPermSQL ('AND') . " ORDER BY hits DESC LIMIT 10");
+    $result = DB_query ("SELECT lid,url,title,hits FROM {$_TABLES['links']} WHERE (hits > 0)" . COM_getPermSQL ('AND') . " ORDER BY hits DESC LIMIT 10");
     $nrows  = DB_numRows ($result);
     if ($nrows > 0) {
         $header_arr = array(
-            array('text' => $LANG_LINKS_STATS['stats_page_title'], 'field' => 'sid'),
-            array('text' => $LANG_LINKS_STATS['stats_hits'], 'field' => 'hits'),
+            array('text'         => $LANG_LINKS_STATS['stats_page_title'],
+                  'field'        => 'sid',
+                  'header_class' => 'stats-header-title'
+            ),
+            array('text'         => $LANG_LINKS_STATS['stats_hits'],
+                  'field'        => 'hits',
+                  'header_class' => 'stats-header-count',
+                  'field_class'  => 'stats-list-count'
+            )
         );
         $data_arr = array();
-        $text_arr = array('has_menu'     =>  false,
-                          'title'        => $LANG_LINKS_STATS['stats_headline'],
+        $text_arr = array('has_menu' => false,
+                          'title'    => $LANG_LINKS_STATS['stats_headline'],
         );
         for ($i = 0; $i < $nrows; $i++) {
-            $A = DB_fetchArray($result);
-            $A['title'] = stripslashes(str_replace('$','&#36;',$A['title']));
-            $A['sid'] = "<a href=\"" . COM_buildUrl ($_CONF['site_url']
-                      . "/links/portal.php?what=link&amp;item={$A['lid']}"). "\">{$A['title']}</a>";
-            $A['hits'] = COM_numberFormat ($A['hits']);
-            $data_arr[$i] = $A;
+            $A = DB_fetchArray ($result);
+            $title = stripslashes (str_replace ('$', '&#36;', $A['title']));
+            $url = COM_buildUrl ($_CONF['site_url']
+                        . '/links/portal.php?what=link&amp;item=' . $A['lid']);
+            $sid = '<a href="' . $url . '" title="' . $A['url'] . '">' . $title
+                 . '</a>';
+            $hits = COM_numberFormat ($A['hits']);
+            $data_arr[] = array('title' => $title,
+                                'sid' => $sid,
+                                'hits' => $hits
+                          );
         }
-        $display .= ADMIN_simpleList("", $header_arr, $text_arr, $data_arr);
+        $retval .= ADMIN_simpleList ('', $header_arr, $text_arr, $data_arr);
     } else {
-        $display .= COM_startBlock($LANG_LINKS_STATS['stats_headline']);
-        $display .= $LANG_LINKS_STATS['stats_no_hits'];
-        $display .= COM_endBlock();
+        $retval .= COM_startBlock ($LANG_LINKS_STATS['stats_headline']);
+        $retval .= $LANG_LINKS_STATS['stats_no_hits'];
+        $retval .= COM_endBlock ();
     }
 
-    return $display;
+    return $retval;
 }
 
 /**
@@ -285,9 +308,11 @@
 }
 
 /**
-* Geeklog is asking us to provide any new items that show up in the type
+* Geeklog is asking us to provide any items that show up in the type
 * drop-down on search.php.  Let's users search for links.
 *
+* @return   array   (plugin name/entry title) pair for the dropdown
+*
 */
 function plugin_searchtypes_links()
 {
@@ -300,9 +325,8 @@
 
 
 /**
-* This searches for links matching the user query and returns an array of
-* for the header and table rows back to search.php where it will be formated and
-* printed
+* This searches for links matching the user query and returns an array for the
+* header and table rows back to search.php where it will be formated and printed
 *
 * @param    string  $query      Keywords user is looking for
 * @param    date    $datestart  Start date to get results for
@@ -313,13 +337,14 @@
 * @param    string  $keyType    search key type: 'all', 'phrase', 'any'
 * @param    int     $page       page number of current search
 * @param    int     $perpage    number of results per page
+* @return   object              search result object
 *
 */
 function plugin_dopluginsearch_links($query, $datestart, $dateend, $topic, $type, $author, $keyType, $page, $perpage)
 {
     global $_CONF, $_TABLES, $LANG_LINKS_SEARCH;
 
-    if (empty($type)) {
+    if (empty ($type)) {
         $type = 'all';
     }
 
@@ -328,10 +353,11 @@
         $plugin_results = new Plugin();
         $plugin_results->plugin_name = 'links';
         $plugin_results->searchlabel = $LANG_LINKS_SEARCH['results'];
+
         return $plugin_results;
     }
 
-    $select = "SELECT *,UNIX_TIMESTAMP(date) AS day";
+    $select = 'SELECT lid,title,url,owner_id,hits,UNIX_TIMESTAMP(date) AS day';
     $sql = " FROM {$_TABLES['links']} WHERE date <> 1 ";
 
     if (!empty ($query)) {
@@ -386,9 +412,10 @@
     if (!empty ($author)) {
         $sql .= "AND (owner_id = '$author')";
     }
-    $sql .= " ORDER BY date DESC ";
+    $sql .= COM_getPermSQL ('AND');
+    $sql .= ' GROUP BY date, lid, category, url, description, title, hits, owner_id, group_id, perm_owner, perm_group, perm_members, perm_anon ORDER BY date DESC';
     $l = ($perpage * $page) - $perpage;
-    $sql .= 'LIMIT ' . $l . ',' . $perpage;
+    $sql .= ' LIMIT ' . $l . ',' . $perpage;
 
     // Perform search
     $result = DB_query ($select . $sql);
@@ -413,25 +440,24 @@
     for ($i = 0; $i < $mycount; $i++) {
         $A = DB_fetchArray ($result);
 
-        if (SEC_hasAccess ($A['owner_id'], $A['group_id'], $A['perm_owner'], $A['perm_group'], $A['perm_members'], $A['perm_anon'])) {
-            $thetime = COM_getUserDateTimeFormat ($A['day']);
-            $A['title'] = stripslashes ($A['title']);
-            $submitter = COM_getDisplayName ($A['owner_id']);
-            if ($A['owner_id'] > 1) {
-                $profile = '<a href="' . $_CONF['site_url']
-                         . '/users.php?mode=profile&amp;uid=' . $A['owner_id']
-                         . '">' . $submitter . '</a>';
-            } else {
-                $profile = $submitter;
-            }
-            $linkUrl = COM_buildURL ($_CONF['site_url']
-                                     . '/links/portal.php?what=link&amp;item='
-                                     . $A['lid']);
-            $row = array ('<a href="' . $linkUrl . '">' . $A['title'] . '</a>',
-                    $thetime[0], $profile, COM_NumberFormat ($A['hits']));
-            $plugin_results->addSearchResult ($row);
-            $plugin_results->num_searchresults++;
+        $thetime = COM_getUserDateTimeFormat ($A['day']);
+        $A['title'] = stripslashes ($A['title']);
+        $submitter = COM_getDisplayName ($A['owner_id']);
+        if ($A['owner_id'] > 1) {
+            $profile = '<a href="' . $_CONF['site_url']
+                     . '/users.php?mode=profile&amp;uid=' . $A['owner_id']
+                     . '">' . $submitter . '</a>';
+        } else {
+            $profile = $submitter;
         }
+        $linkUrl = COM_buildURL ($_CONF['site_url']
+                                 . '/links/portal.php?what=link&amp;item='
+                                 . $A['lid']);
+        $anchor = '<a href="' . $linkUrl . '" title="' . $A['url'] . '">';
+        $row = array ($anchor . $A['title'] . '</a>', $thetime[0], $profile,
+                      COM_NumberFormat ($A['hits']));
+        $plugin_results->addSearchResult ($row);
+        $plugin_results->num_searchresults++;
     }
 
     return $plugin_results;
@@ -442,6 +468,8 @@
 * This will put an option for links in the command and control block on
 * moderation.php
 *
+* @return   mixed   array(title, url, icon), or boolean false when not allowed
+*
 */
 function plugin_cclabel_links()
 {
@@ -459,6 +487,8 @@
 /**
 * returns the administrative option for this plugin
 *
+* @return   mixed   array(title, url, num. links), or void when not allowed
+*
 */
 function plugin_getadminoption_links()
 {
@@ -478,19 +508,20 @@
 * A user is about to be deleted. Update ownership of any links owned
 * by that user or delete them.
 *
-* @param   uid   int   User id of deleted user
+* @param    int     $uid    User id of deleted user
+* @return   void
 *
 */
 function plugin_user_delete_links ($uid)
 {
     global $_TABLES, $_LI_CONF;
 
-    if (DB_count ($_TABLES['links'], "owner_id = $uid") == 0) {
+    if (DB_count ($_TABLES['links'], 'owner_id', $uid) == 0) {
         return;
     }
 
     if ($_LI_CONF['delete_links'] == 1) {
-        // delete the pages
+        // delete the links
         DB_query ("DELETE FROM {$_TABLES['links']} WHERE owner_id = $uid");
     } else {
         // assign ownership to a user from the Root group
@@ -503,8 +534,11 @@
     }
 }
 
-/*
+/**
 * Do we support feeds?
+*
+* @return   array   id/name pairs of all supported feeds
+*
 */
 function plugin_getfeednames_links()
 {
@@ -512,23 +546,29 @@
 
     $feeds = array ();
 
-    $result = DB_query ("SELECT lid,category FROM {$_TABLES['links']} GROUP BY category ORDER BY category ASC");
+    $result = DB_query ("SELECT category FROM {$_TABLES['links']} GROUP BY category ORDER BY category ASC");
     $num = DB_numRows ($result);
 
     if ($num > 0) {
         $feeds[] = array ('id' => 'all', 'name' => 'all categories');
-    }
 
-    for ($i = 0; $i < $num; $i++) {
-        $A = DB_fetchArray ($result);
-        $feeds[] = array ('id' => $A['category'], 'name' => $A['category']);
+        for ($i = 0; $i < $num; $i++) {
+            $A = DB_fetchArray ($result);
+            $feeds[] = array ('id' => $A['category'], 'name' => $A['category']);
+        }
     }
 
     return $feeds;
 }
 
-/*
+/**
 * Provide feed data
+*
+* @param    int     $feed       feed ID
+* @param    ref     $link
+* @param    ref     $update
+* @return   array               feed entries
+*
 */
 function plugin_getfeedcontent_links ($feed, &$link, &$update)
 {
@@ -537,7 +577,6 @@
     $result = DB_query( "SELECT topic,limits,content_length FROM {$_TABLES['syndication']} WHERE fid = '$feed'" );
     $S = DB_fetchArray( $result );
 
-
     $result = DB_query( "SELECT lid,owner_id,title,description,UNIX_TIMESTAMP(date) AS modified FROM " . $_TABLES['links'] . links_buildSql ($S['topic'], $S['limits']) );
 
     $content = array();
@@ -571,6 +610,14 @@
     return $content;
 }
 
+/**
+* Helper function: Build part of an SQL request
+*
+* @param    string  $category   category name
+* @param    string  $limits     limit (number of entries or number of hours)
+* @return   string              part of an SQL request
+*
+*/
 function links_buildSql ($category, $limits)
 {
     $where = '';
@@ -615,6 +662,7 @@
 * @param    string  $updated_type   (optional) type of feed to be updated
 * @param    string  $updated_topic  (optional) feed's "topic" to be updated
 * @param    string  $updated_id     (optional) id of entry that has changed
+* @return   boolean                 true: feed data is up to date; false: isn't
 *
 */
 function plugin_feedupdatecheck_links ($feed, $topic, $update_data, $limit, $updated_type = '', $updated_topic = '', $updated_id = '')
@@ -651,17 +699,56 @@
 }
 
 /**
+* Update the Links plugin
+*
+* @return   int     Number of message to display (true = generic success msg)
+*
+*/
+function plugin_upgrade_links ()
+{
+    global $_TABLES, $_LI_CONF;
+
+    // the plugin needs these functions so complain when they doesn't exist
+    if (!function_exists ('COM_truncate') ||
+        !function_exists ('MBYTE_strpos')) {
+        return 3002;
+    }
+
+    // no db changes - just update the version numbers
+    DB_query ("UPDATE {$_TABLES['plugins']} SET pi_version = '{$_LI_CONF['version']}', pi_gl_version = '" . VERSION . "' WHERE pi_name = 'links'");
+
+    return true;
+}
+
+/**
+* Geeklog informs us that we're about to be enabled or disabled
+*
+* @param    boolean     $enable     true = we're being enabled, false = disabled
+* @return   void
+*
+*/
+function plugin_enablestatechange_links ($enable)
+{
+    global $_TABLES;
+
+    $is_enabled = $enable ? 1 : 0;
+
+    // toggle links feeds
+    DB_query ("UPDATE {$_TABLES['syndication']} SET is_enabled = $is_enabled WHERE type = 'links'");
+}
+
+/**
 * Removes the datastructures for this plugin from the Geeklog database
 *
 * This may get called by the install routine to undo anything done to this
 * point.
 *
-* @steps   Array    Holds all the steps that have been completed by the install
+* @return   boolean     true: uninstalled successfully
 *
 */
 function plugin_uninstall_links ()
 {
-    global $_TABLES, $_CONF;
+    global $_CONF, $_TABLES;
 
     // Uninstalls the links plugin
 
@@ -698,7 +785,7 @@
 
     // Remove Links Feeds from syndiaction table
     COM_errorLog ('removing links feeds from table', 1);
-    DB_query ("DELETE FROM {$_TABLES['syndication']} WHERE `type` = 'links'");
+    DB_query ("DELETE FROM {$_TABLES['syndication']} WHERE type = 'links'");
     COM_errorLog ('...success', 1);
 
     // Remove security for this plugin
@@ -779,19 +866,25 @@
 }
 
 /**
-*
 * Counts the items that are submitted
 *
+* @return   int     number of items in submission queue
+*
 */
 function plugin_submissioncount_links()
 {
-   global $_TABLES;
+    global $_TABLES;
+
+    $retval = 0;
+
+    if (plugin_ismoderator_links ()) {
+        $retval = DB_count ($_TABLES['linksubmission']);
+    }
 
-   return DB_count ($_TABLES['linksubmission']);
+    return $retval;
 }
 
 /**
-*
 * Checks that the current user has the rights to moderate the
 * plugin, returns true if this is the case, false otherwise
 *
@@ -806,6 +899,9 @@
 
 /**
 * Returns SQL & Language texts to moderation.php
+*
+* @return   mixed   plugin object or void if not allowed
+*
 */
 function plugin_itemlist_links()
 {
@@ -851,8 +947,8 @@
 * to links tables, within the function we handle all other approval
 * relate tasks
 *
-* @param      string       $id      Identifying string
-* @return     string       Any wanted HTML output
+* @param    string  $id     Identifying string
+* @return   string          Any wanted HTML output
 *
 */
 function plugin_moderationapprove_links ($id)
@@ -880,10 +976,10 @@
 *
 * While moderation.php handles the actual removal from <plugin>submission
 * table, within this function we handle all other deletion
-* relate tasks
+* related tasks
 *
-* @param      string       $id      Identifying string
-* @return     string       Any wanted HTML output
+* @param    string  $id     Identifying string
+* @return   string          Any wanted HTML output
 *
 */
 function plugin_moderationdelete_links($id)
@@ -900,10 +996,15 @@
 /**
 * Check submission form values and save if OK. Else show form again
 *
+* @param    array   $A  The link record
+* @return   string      Any wanted HTML output
+*
 */
 function plugin_savesubmission_links($A)
 {
-    global $_CONF, $_TABLES, $LANG12;
+    global $LANG12;
+
+    $retval = '';
 
     if (!empty ($A['title']) && !empty ($A['description']) &&
                 !empty ($A['url'])) {
@@ -924,10 +1025,12 @@
 /**
 * Shows link submission form
 *
+* @return   string  HTML for the link submission form
+*
 */
 function plugin_submit_links()
 {
-    global $_CONF, $_TABLES, $LANG_LINKS_SUBMIT, $LANG12;
+    global $_CONF, $LANG_LINKS_SUBMIT, $LANG12;
 
     $retval = COM_startBlock ($LANG_LINKS_SUBMIT[1], 'submitlink.html');
 
@@ -995,20 +1098,7 @@
     $A['category'] = addslashes ($A['category']);
     $A['description'] = addslashes (htmlspecialchars (COM_checkWords ($A['description'])));
     $A['title'] = addslashes (strip_tags (COM_checkWords ($A['title'])));
-
-    $A['url'] = strip_tags ($A['url']);
-    if (!empty ($A['url'])) {
-        $pos = strpos ($A['url'], ':');
-        if ($pos === false) {
-            $A['url'] = 'http://' . $A['url'];
-        } else {
-            $prot = substr ($A['url'], 0, $pos + 1);
-            if (($prot != 'http:') && ($prot != 'https:')) {
-                $A['url'] = 'http:' . substr ($A['url'], $pos + 1);
-            }
-        }
-        $A['url'] = addslashes ($A['url']);
-    }
+    $A['url'] = addslashes (COM_sanitizeUrl ($A['url']));
     $A['lid'] = addslashes (COM_makeSid ());
     COM_updateSpeedlimit ('submit');
 
@@ -1049,8 +1139,8 @@
 */
 function LINKS_sendNotification ($table, $A)
 {
-    global $_CONF, $_TABLES, $LANG_LINKS, $LANG_LINKS_SUBMIT,
-           $LANG08;
+    global $_CONF, $_TABLES, $LANG_LINKS, $LANG_LINKS_SUBMIT, $LANG08;
+
     $title = stripslashes ($A['title']);
     $description = stripslashes ($A['description']);
 
@@ -1087,21 +1177,26 @@
 
 function plugin_getListField_links($fieldname, $fieldvalue, $A, $icon_arr)
 {
-    global $_CONF, $LANG_ADMIN, $LANG_ACCESS;
+    global $_CONF, $LANG_ACCESS;
+
+    $retval = '';
+
     $access = SEC_hasAccess($A['owner_id'],$A['group_id'],$A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']);
     if ($access > 0) {
         switch($fieldname) {
-            case "edit":
-                $retval = "<a href=\"{$_CONF['site_admin_url']}/plugins/links/index.php?mode=edit&amp;lid={$A['lid']}\">{$icon_arr['edit']}</a>";
+            case 'edit':
+                if ($access == 3) {
+                    $retval = "<a href=\"{$_CONF['site_admin_url']}/plugins/links/index.php?mode=edit&amp;lid={$A['lid']}\">{$icon_arr['edit']}</a>";
+                }
                 break;
-            case "access":
+            case 'access':
                 if ($access == 3) {
                    $retval = $LANG_ACCESS['edit'];
                 } else {
                    $retval = $LANG_ACCESS['readonly'];
                 }
                 break;
-            case "title":
+            case 'title':
                 $title = stripslashes($A['title']);
                 $retval = "<a href=\"{$A['url']}\">$title</a>";
                 break;
@@ -1110,13 +1205,14 @@
                 break;
         }
     }
+
     return $retval;
 }
 
 /**
 * Return a list of all link categories
 *
-* @param    string  $current_category   currently selected category
+* @param    ref     $current_category   currently selected category
 * @return   string                      <option> list containing all categories
 *
 * Note: $current_category will be returned as an empty string when found in the
@@ -1131,7 +1227,7 @@
 
     $retval = '';
 
-    $result = DB_query("SELECT DISTINCT category FROM {$_TABLES['links']} GROUP BY category");
+    $result = DB_query("SELECT DISTINCT category FROM {$_TABLES['links']}" . COM_getPermSQL () . " GROUP BY category");
     $nrows = DB_numRows($result);
 
     $retval = '<option value="' . $LANG_LINKS_ADMIN[7] . '">'
@@ -1150,4 +1246,27 @@
     return $retval;
 }
 
+/**
+* Set template variables
+*
+* @param    string  $templatename   name of template, e.g. 'header'
+* @param    ref     $template       reference of actual template
+* @return   void
+*
+* Note: A plugin should use its name as a prefix for the names of its
+* template variables, e.g. 'links_xxx' and 'lang_links_xxx'.
+* 'button_links' is an exception, as such a variable existed for header.thtml
+* in Geeklog 1.3.11 and earlier, where the Links section was an integral part
+* of Geeklog. It is added here for backward-compatibility.
+*
+*/
+function plugin_templatesetvars_links ($templatename, &$template)
+{
+    global $LANG_LINKS;
+
+    if ($templatename == 'header') {
+        $template->set_var ('button_links', $LANG_LINKS[14]);
+    }
+}
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/chinese_simplified_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/links/language/chinese_simplified_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/chinese_simplified_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/chinese_simplified_utf-8.php	2006-05-13 12:13:08.000000000 -0500
@@ -75,6 +75,7 @@
  'author' => '提交者',
  'hits' => '点击'
 );
+
 ###############################################################################
 # for the submission form
 /**
@@ -104,6 +105,9 @@
 $PLG_links_MESSAGE3 = '联结已成功的删除.';
 $PLG_links_MESSAGE4 = "谢谢你为本站提交一个联结.  你的连接现在已显现在<a href={$_CONF['site_url']}/links/index.php>联结</a>处.";
 
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
+
 ###############################################################################
 # admin/link.php
 /**
@@ -133,4 +137,4 @@
     23 => '删除',
 );
 
-?>
\ No newline at end of file
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/chinese_traditional_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/links/language/chinese_traditional_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/chinese_traditional_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/chinese_traditional_utf-8.php	2006-05-13 12:13:08.000000000 -0500
@@ -75,6 +75,7 @@
  'author' => '提交者',
  'hits' => '點擊'
 );
+
 ###############################################################################
 # for the submission form
 /**
@@ -104,6 +105,9 @@
 $PLG_links_MESSAGE3 = '聯結已成功的刪除.';
 $PLG_links_MESSAGE4 = "謝謝你為本站提交一個聯結.  你的連接現在已顯現在<a href={$_CONF['site_url']}/links/index.php>聯結</a>處.";
 
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
+
 ###############################################################################
 # admin/link.php
 /**
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/dutch.php 1.4.1.src/cpanel-glprivate/plugins/links/language/dutch.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/dutch.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/dutch.php	2006-05-13 12:13:08.000000000 -0500
@@ -24,7 +24,7 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ###############################################################################
-# $Id: dutch.php,v 1.1.2.2 2006/03/04 20:54:11 dhaun Exp $
+# $Id: dutch.php,v 1.2 2006/05/13 17:13:08 dhaun Exp $
 
 /** 
  * This is the english language page for the Geeklog links Plug-in! 
@@ -123,6 +123,9 @@
 $PLG_links_MESSAGE3 = 'De link is verwijderd.';
 $PLG_links_MESSAGE4 = "Hartelijk dank voor het toevoegen van uw link op {$_CONF['site_name']}.  De link is opgenomen in de <a href={$_CONF['site_url']}/links/index.php>links</a> directory.";
 
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
+
 ###############################################################################
 # admin/link.php
 /**
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/english.php 1.4.1.src/cpanel-glprivate/plugins/links/language/english.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/english.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/english.php	2006-08-10 04:00:39.000000000 -0500
@@ -2,12 +2,12 @@
 
 ###############################################################################
 # english.php
-# This is the english language page for the Geeklog links Plug-in!
+# This is the english language file for the Geeklog Links Plugin
 #
 # Copyright (C) 2001 Tony Bibbs
-# tony@tonybibbs.com
+# tony AT tonybibbs DOT com
 # Copyright (C) 2005 Trinity Bays
-# trinity93@gmail.com
+# trinity93 AT gmail DOT com
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -24,7 +24,7 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ###############################################################################
-# $Id: english.php,v 1.10 2005/11/26 06:37:32 trinity Exp $
+# $Id: english.php,v 1.13 2006/08/10 09:00:39 ospiess Exp $
 
 /** 
  * This is the english language page for the Geeklog links Plug-in! 
@@ -34,13 +34,11 @@
  * @filesource
  * @version 1.0
  * @since GL 1.4.0
- * @copyright Copyright &copy; 2005
+ * @copyright Copyright &copy; 2005-2006
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License 
- * @author Trinity Bays <trinity93@steubentech.com>
- * @author Tony Bibbs <tony@tonybibbs.com>
- * @author Tom Willett <twillett@users.sourceforge.net>
- * @author Blaine Lang <langmail@sympatico.ca>
- * @author Dirk Haun <dirk@haun-online.de>
+ * @author Trinity Bays <trinity93 AT steubentech DOT com>
+ * @author Tony Bibbs <tony AT tonybibbs DOT com>
+ * @author Tom Willett <twillett AT users DOT sourceforge DOT net>
  * 
  */
 
@@ -61,7 +59,7 @@
     14 => 'Links',
     84 => 'LINKS',
     88 => 'No recent new links',
-    114 => 'Web Resources',
+    114 => 'Links',
     116 => 'Add A Link'
 );
 
@@ -94,6 +92,7 @@
  'author' => 'Submited by',
  'hits' => 'Clicks'
 );
+
 ###############################################################################
 # for the submission form
 /**
@@ -123,6 +122,9 @@
 $PLG_links_MESSAGE3 = 'The link has been successfully deleted.';
 $PLG_links_MESSAGE4 = "Thank-you for submitting a link to {$_CONF['site_name']}.  You can see it now in the <a href={$_CONF['site_url']}/links/index.php>links</a> section.";
 
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
+
 ###############################################################################
 # admin/link.php
 /**
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/english_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/links/language/english_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/english_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/english_utf-8.php	2006-08-10 04:00:39.000000000 -0500
@@ -24,7 +24,7 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ###############################################################################
-# $Id: english_utf-8.php,v 1.1 2006/02/11 12:43:22 dhaun Exp $
+# $Id: english_utf-8.php,v 1.3 2006/08/10 09:00:39 ospiess Exp $
 
 /** 
  * This is the english language page for the Geeklog links Plug-in! 
@@ -61,7 +61,7 @@
     14 => 'Links',
     84 => 'LINKS',
     88 => 'No recent new links',
-    114 => 'Web Resources',
+    114 => 'Links',
     116 => 'Add A Link'
 );
 
@@ -123,6 +123,9 @@
 $PLG_links_MESSAGE3 = 'The link has been successfully deleted.';
 $PLG_links_MESSAGE4 = "Thank-you for submitting a link to {$_CONF['site_name']}.  You can see it now in the <a href={$_CONF['site_url']}/links/index.php>links</a> section.";
 
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
+
 ###############################################################################
 # admin/link.php
 /**
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/estonian.php 1.4.1.src/cpanel-glprivate/plugins/links/language/estonian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/estonian.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/estonian.php	2006-10-15 02:54:35.000000000 -0500
@@ -0,0 +1,159 @@
+<?php
+
+###############################################################################
+# estonian.php
+# This is the estonian language page for the Geeklog links Plug-in
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony@tonybibbs.com
+# Copyright (C) 2005 Trinity Bays
+# trinity93@gmail.com
+#
+# Estonian translation by Artur Rpp <rtr AT planet DOT ee>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+# $Id: estonian.php,v 1.1 2006/10/15 07:54:35 dhaun Exp $
+
+/** 
+ * This is the estonian language page for the Geeklog links Plug-in! 
+ * 
+ * @package Links
+ * @subpackage Language
+ * @filesource
+ * @version 1.0
+ * @since GL 1.4.0
+ * @copyright Copyright &copy; 2005-2006
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License 
+ * @author Trinity Bays <trinity93@steubentech.com>
+ * @author Tony Bibbs <tony@tonybibbs.com>
+ * @author Tom Willett <twillett@users.sourceforge.net>
+ * 
+ */
+
+
+###############################################################################
+# Array Format:
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+/**
+* the link plugin's lang array
+* 
+* @global array $LANG_LINKS 
+*/
+$LANG_LINKS= array(
+    10 => 'Sisestatud',
+    14 => 'Linke',
+    84 => 'LINKE',
+    88 => 'Pole uusi linke',
+    114 => 'Linke',
+    116 => 'Lisa link'
+);
+
+###############################################################################
+# for stats
+/**
+* the link plugin's lang stats array
+* 
+* @global array $LANG_LINKS_STATS
+*/
+$LANG_LINKS_STATS = array(
+    'links' => 'Linke (klikke) lehtedel',
+    'stats_headline' => 'Top 10 linki',
+    'stats_page_title' => 'Lingid',
+    'stats_hits' => 'Klikke',
+    'stats_no_hits' => 'Nib, et lehel pole linke vi keegi pole neil klpsanud.',
+);
+
+###############################################################################
+# for the search
+/**
+* the link plugin's lang search array
+* 
+* @global array $LANG_LINKS_SEARCH 
+*/
+$LANG_LINKS_SEARCH = array(
+ 'results' => 'Linkide tulemus',
+ 'title' => 'Tiitel',
+ 'date' => 'Lisamisaeg',
+ 'author' => 'Lisaja',
+ 'hits' => 'Klikke'
+);
+
+###############################################################################
+# for the submission form
+/**
+* the link plugin's lang submit form array
+* 
+* @global array $LANG_LINKS_SUBMIT 
+*/
+$LANG_LINKS_SUBMIT = array(
+    1 => 'Saada link',
+    2 => 'Link',
+    3 => 'Kategooria',
+    4 => 'Muu',
+    5 => 'Kui muu, siis mratle',
+    6 => 'Viga: puudub kategooria',
+    7 => 'Kui valid "Muu", mratle ka kategooria nimi',
+    8 => 'Tiitel',
+    9 => 'URL',
+    10 => 'Kategooria',
+    11 => 'Sisestatud lingid'
+);
+
+###############################################################################
+# Messages for COM_showMessage the submission form
+
+$PLG_links_MESSAGE1 = "Tname sind {$_CONF['site_name']} lehele lingi sisestamise eest. See on saadetud meie meeskonnale kinnitamiseks. Kui meeskond kinnitab selle lingi, ilmub see <a href=\"{$_CONF['site_url']}/links/\">Linkide osas.</a>";
+$PLG_links_MESSAGE2 = 'Sinu link on edukalt salvestatud.';
+$PLG_links_MESSAGE3 = 'Link on edukalt kustutatud';
+$PLG_links_MESSAGE4 = "Tname sind {$_CONF['site_name']}  lehele lingi lisamise eest. Sa vid seda linki juba nha <a href=\"{$_CONF['site_url']}/links/\">linkide osas.</a>";
+
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
+
+###############################################################################
+# admin/link.php
+/**
+* the link plugin's lang admin array
+* 
+* @global array $LANG_LINKS_ADMIN 
+*/
+$LANG_LINKS_ADMIN = array(
+    1 => 'Lingi toimetaja',
+    2 => 'Lingi ID',
+    3 => 'Lingi tiitel',
+    4 => 'Lingi URL',
+    5 => 'Kategooria',
+    6 => '(koos http://)',
+    7 => 'Muu',
+    8 => 'Klikke lingil',
+    9 => 'Lingi kirjeldus',
+    10 => 'Sa pead mrama lingi URL-i, tiitli ja kirjelduse.',
+    11 => 'Lingi haldur',
+    12 => 'Lingi toimetamiseks vi kustutamiseks klpsa allpool vastava lingi juures oleval toimetamisikoonil. Uue lingi loomiseks klpsa "Tee uus" lal.',
+    14 => 'Lingi kategooria',
+    16 => 'Ligips tkestatud',
+    17 => "Sa proovisid ligi pseda lingile, milleks pole sul igust. See katse on logitud. Palun <a href=\"{$_CONF['site_admin_url']}/plugins/links/\"> mine tagasi linkide administreerimislehele.</a>",
+    20 => 'Kui muu, siis mratle',
+    21 => 'salvesta',
+    22 => 'thista',
+    23 => 'kustuta'
+);
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/estonian_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/links/language/estonian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/estonian_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/estonian_utf-8.php	2006-10-15 02:54:35.000000000 -0500
@@ -0,0 +1,159 @@
+<?php
+
+###############################################################################
+# estonian_utf-8.php
+# This is the estonian language page for the Geeklog links Plug-in
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony@tonybibbs.com
+# Copyright (C) 2005 Trinity Bays
+# trinity93@gmail.com
+#
+# Estonian translation by Artur Räpp <rtr AT planet DOT ee>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+# $Id: estonian_utf-8.php,v 1.1 2006/10/15 07:54:35 dhaun Exp $
+
+/** 
+ * This is the estonian language page for the Geeklog links Plug-in! 
+ * 
+ * @package Links
+ * @subpackage Language
+ * @filesource
+ * @version 1.0
+ * @since GL 1.4.0
+ * @copyright Copyright &copy; 2005-2006
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License 
+ * @author Trinity Bays <trinity93@steubentech.com>
+ * @author Tony Bibbs <tony@tonybibbs.com>
+ * @author Tom Willett <twillett@users.sourceforge.net>
+ * 
+ */
+
+
+###############################################################################
+# Array Format:
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+/**
+* the link plugin's lang array
+* 
+* @global array $LANG_LINKS 
+*/
+$LANG_LINKS= array(
+    10 => 'Sisestatud',
+    14 => 'Linke',
+    84 => 'LINKE',
+    88 => 'Pole uusi linke',
+    114 => 'Linke',
+    116 => 'Lisa link'
+);
+
+###############################################################################
+# for stats
+/**
+* the link plugin's lang stats array
+* 
+* @global array $LANG_LINKS_STATS
+*/
+$LANG_LINKS_STATS = array(
+    'links' => 'Linke (klikke) lehtedel',
+    'stats_headline' => 'Top 10 linki',
+    'stats_page_title' => 'Lingid',
+    'stats_hits' => 'Klikke',
+    'stats_no_hits' => 'Näib, et lehel pole linke või keegi pole neil klõpsanud.',
+);
+
+###############################################################################
+# for the search
+/**
+* the link plugin's lang search array
+* 
+* @global array $LANG_LINKS_SEARCH 
+*/
+$LANG_LINKS_SEARCH = array(
+ 'results' => 'Linkide tulemus',
+ 'title' => 'Tiitel',
+ 'date' => 'Lisamisaeg',
+ 'author' => 'Lisaja',
+ 'hits' => 'Klikke'
+);
+
+###############################################################################
+# for the submission form
+/**
+* the link plugin's lang submit form array
+* 
+* @global array $LANG_LINKS_SUBMIT 
+*/
+$LANG_LINKS_SUBMIT = array(
+    1 => 'Saada link',
+    2 => 'Link',
+    3 => 'Kategooria',
+    4 => 'Muu',
+    5 => 'Kui muu, siis määratle',
+    6 => 'Viga: puudub kategooria',
+    7 => 'Kui valid "Muu", määratle ka kategooria nimi',
+    8 => 'Tiitel',
+    9 => 'URL',
+    10 => 'Kategooria',
+    11 => 'Sisestatud lingid'
+);
+
+###############################################################################
+# Messages for COM_showMessage the submission form
+
+$PLG_links_MESSAGE1 = "Täname sind {$_CONF['site_name']} lehele lingi sisestamise eest. See on saadetud meie meeskonnale kinnitamiseks. Kui meeskond kinnitab selle lingi, ilmub see <a href=\"{$_CONF['site_url']}/links/\">Linkide osas.</a>";
+$PLG_links_MESSAGE2 = 'Sinu link on edukalt salvestatud.';
+$PLG_links_MESSAGE3 = 'Link on edukalt kustutatud';
+$PLG_links_MESSAGE4 = "Täname sind {$_CONF['site_name']}  lehele lingi lisamise eest. Sa võid seda linki juba näha <a href=\"{$_CONF['site_url']}/links/\">linkide osas.</a>";
+
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
+
+###############################################################################
+# admin/link.php
+/**
+* the link plugin's lang admin array
+* 
+* @global array $LANG_LINKS_ADMIN 
+*/
+$LANG_LINKS_ADMIN = array(
+    1 => 'Lingi toimetaja',
+    2 => 'Lingi ID',
+    3 => 'Lingi tiitel',
+    4 => 'Lingi URL',
+    5 => 'Kategooria',
+    6 => '(koos http://)',
+    7 => 'Muu',
+    8 => 'Klikke lingil',
+    9 => 'Lingi kirjeldus',
+    10 => 'Sa pead määrama lingi URL-i, tiitli ja kirjelduse.',
+    11 => 'Lingi haldur',
+    12 => 'Lingi toimetamiseks või kustutamiseks klõpsa allpool vastava lingi juures oleval toimetamisikoonil. Uue lingi loomiseks klõpsa "Tee uus" ülal.',
+    14 => 'Lingi kategooria',
+    16 => 'Ligipääs tõkestatud',
+    17 => "Sa proovisid ligi pääseda lingile, milleks pole sul õigust. See katse on logitud. Palun <a href=\"{$_CONF['site_admin_url']}/plugins/links/\"> mine tagasi linkide administreerimislehele.</a>",
+    20 => 'Kui muu, siis määratle',
+    21 => 'salvesta',
+    22 => 'tühista',
+    23 => 'kustuta'
+);
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/german_formal.php 1.4.1.src/cpanel-glprivate/plugins/links/language/german_formal.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/german_formal.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/german_formal.php	2006-05-13 12:13:08.000000000 -0500
@@ -24,7 +24,7 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ###############################################################################
-# $Id: german_formal.php,v 1.1 2005/12/12 21:01:30 dhaun Exp $
+# $Id: german_formal.php,v 1.2 2006/05/13 17:13:08 dhaun Exp $
 
 ###############################################################################
 # Array Format:
@@ -90,6 +90,9 @@
 $PLG_links_MESSAGE3 = 'Der Link wurde gelscht.';
 $PLG_links_MESSAGE4 = "Danke fr Ihren Link. Sie finden ihn nun unter den <a href=\"{$_CONF['site_url']}/links/index.php\">Links</a>.";
 
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
+
 ###############################################################################
 # admin/link.php
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/german_formal_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/links/language/german_formal_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/german_formal_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/german_formal_utf-8.php	2006-05-13 12:13:08.000000000 -0500
@@ -24,7 +24,7 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ###############################################################################
-# $Id: german_formal_utf-8.php,v 1.1 2005/12/12 21:01:30 dhaun Exp $
+# $Id: german_formal_utf-8.php,v 1.2 2006/05/13 17:13:08 dhaun Exp $
 
 ###############################################################################
 # Array Format:
@@ -90,6 +90,9 @@
 $PLG_links_MESSAGE3 = 'Der Link wurde gelöscht.';
 $PLG_links_MESSAGE4 = "Danke für Ihren Link. Sie finden ihn nun unter den <a href=\"{$_CONF['site_url']}/links/index.php\">Links</a>.";
 
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
+
 ###############################################################################
 # admin/link.php
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/german.php 1.4.1.src/cpanel-glprivate/plugins/links/language/german.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/german.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/german.php	2006-05-13 12:13:08.000000000 -0500
@@ -23,7 +23,7 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ###############################################################################
-# $Id: german.php,v 1.2 2005/12/12 21:01:30 dhaun Exp $
+# $Id: german.php,v 1.3 2006/05/13 17:13:08 dhaun Exp $
 
 ###############################################################################
 # Array Format:
@@ -89,6 +89,9 @@
 $PLG_links_MESSAGE3 = 'Der Link wurde gelscht.';
 $PLG_links_MESSAGE4 = "Danke fr Deinen Link. Du findest ihn nun unter den <a href=\"{$_CONF['site_url']}/links/index.php\">Links</a>.";
 
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
+
 ###############################################################################
 # admin/link.php
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/german_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/links/language/german_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/german_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/german_utf-8.php	2006-05-13 12:13:08.000000000 -0500
@@ -23,7 +23,7 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ###############################################################################
-# $Id: german_utf-8.php,v 1.1 2005/12/12 21:01:30 dhaun Exp $
+# $Id: german_utf-8.php,v 1.2 2006/05/13 17:13:08 dhaun Exp $
 
 ###############################################################################
 # Array Format:
@@ -89,6 +89,9 @@
 $PLG_links_MESSAGE3 = 'Der Link wurde gelöscht.';
 $PLG_links_MESSAGE4 = "Danke für Deinen Link. Du findest ihn nun unter den <a href=\"{$_CONF['site_url']}/links/index.php\">Links</a>.";
 
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
+
 ###############################################################################
 # admin/link.php
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/japanese.php 1.4.1.src/cpanel-glprivate/plugins/links/language/japanese.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/japanese.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/japanese.php	2006-12-11 10:58:01.000000000 -0600
@@ -1,13 +1,14 @@
 <?php
 
 ###############################################################################
-# english.php
-# This is the english language page for the Geeklog links Plug-in!
+# japanese_utf.php
+# This is the Japanese language page for the Geeklog links Plug-in!
 #
 # Copyright (C) 2001 Tony Bibbs
 # tony@tonybibbs.com
 # Copyright (C) 2005 Trinity Bays
 # trinity93@gmail.com
+# Tranlated by Geeklog Japanese group
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -24,7 +25,8 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ###############################################################################
-# $Id: japanese.php,v 1.4 2006/02/04 13:16:59 dhaun Exp $
+# $Id: japanese.php,v 1.7 2006/12/11 16:58:01 dhaun Exp $
+# Last Update 2006/12/12 by Ivy (Geeklog Japanese)
 
 ###############################################################################
 # Array Format: 
@@ -38,7 +40,7 @@
     14 => '',
     84 => '',
     88 => '󥯤Ϥޤ',
-    114 => '󥯽',
+    114 => '',
     116 => '󥯤ɲ'
 );
 
@@ -50,7 +52,7 @@
     'stats_headline' => '(10)',
     'stats_page_title' => '',
     'stats_hits' => 'ҥå',
-    'stats_no_hits' => 'ΥȤˤϥ󥯤ĤʤåͤʤΤɤ餫Τ褦Ǥ',
+    'stats_no_hits' => 'ΥȤˤϥ󥯤ʤåͤʤΤɤ餫Τ褦Ǥ',
 ); 
  
 ###############################################################################
@@ -71,7 +73,7 @@
     2 => '',
     3 => 'ƥ',
     4 => '¾',
-    5 => 'õ',
+    5 => 'ƥ̾',
     6 => '顼ƥǤ',
     7 => '֤¾פ򤹤ˤϿƥ̾Ƥ',
     8 => 'ȥ',
@@ -83,10 +85,13 @@
 ###############################################################################
 # Messages for COM_showMessage the submission form
 
-$PLG_links_MESSAGE1 = "{$_CONF['site_name']}˥󥯤ϿƤƤ꤬ȤåդƤǧƼ뤫ɤȽǤޤ줿硢<a href={$_CONF['site_url']}/links.php></a>˥󥯤ɽޤ";
+$PLG_links_MESSAGE1 = "{$_CONF['site_name']}˥Ͽ꤬ȤޤåդƤǧޤǧ줿<a href={$_CONF['site_url']}/links/index.php></a>ɽޤ";
 $PLG_links_MESSAGE2 = '󥯤̵Ͽޤ';
 $PLG_links_MESSAGE3 = '󥯤κλޤ';
-$PLG_links_MESSAGE4 = "{$_CONF['site_name']}˥󥯤ϿƤƤ꤬Ȥޤ󥯤<a href={$_CONF['site_url']}/links.php>links</a>ǳǧǤޤ";
+$PLG_links_MESSAGE4 = "{$_CONF['site_name']}˥Ͽ꤬Ȥޤ<a href={$_CONF['site_url']}/links/index.php></a>Ǥǧ";
+
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
 
 ###############################################################################
 # admin/link.php
@@ -113,4 +118,4 @@
     23 => ''
 );
 
-?>
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/japanese_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/links/language/japanese_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/japanese_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/japanese_utf-8.php	2006-12-11 10:58:01.000000000 -0600
@@ -1,13 +1,14 @@
 <?php
 
 ###############################################################################
-# english.php
-# This is the english language page for the Geeklog links Plug-in!
+# japanese_utf-8.php
+# This is the Japanese language page for the Geeklog links Plug-in!
 #
 # Copyright (C) 2001 Tony Bibbs
 # tony@tonybibbs.com
 # Copyright (C) 2005 Trinity Bays
 # trinity93@gmail.com
+# Tranlated by Geeklog Japanese group
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -24,7 +25,8 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ###############################################################################
-# $Id: japanese_utf-8.php,v 1.3 2005/12/22 11:37:04 dhaun Exp $
+# $Id: japanese_utf-8.php,v 1.6 2006/12/11 16:58:01 dhaun Exp $
+# Last Update 2006/12/12 by Ivy (Geeklog Japanese)
 
 ###############################################################################
 # Array Format: 
@@ -38,7 +40,7 @@
     14 => 'リンク',
     84 => 'リンク',
     88 => '新しいリンクはありません',
-    114 => 'リンク集',
+    114 => 'リンク',
     116 => 'リンクの追加'
 );
 
@@ -50,7 +52,7 @@
     'stats_headline' => 'リンク(上位10件)',
     'stats_page_title' => 'リンク',
     'stats_hits' => 'ヒット',
-    'stats_no_hits' => 'このサイトにはリンクが一つもないか、クリックした人がいないかのどちらかのようです。',
+    'stats_no_hits' => 'このサイトにはリンクがないか、クリックした人がいないかのどちらかのようです。',
 ); 
  
 ###############################################################################
@@ -71,7 +73,7 @@
     2 => 'リンク',
     3 => 'カテゴリ',
     4 => 'その他',
-    5 => '特記事項',
+    5 => '新しいカテゴリ名',
     6 => 'エラー：カテゴリを選んでください',
     7 => '「その他」を選択する場合には新しいカテゴリ名を記入してください。',
     8 => 'タイトル',
@@ -83,10 +85,13 @@
 ###############################################################################
 # Messages for COM_showMessage the submission form
 
-$PLG_links_MESSAGE1 = "{$_CONF['site_name']}にリンクを登録してくれてありがとう。スタッフが内容を確認して受け入れるかどうか判断いたします。受け入れられた場合、<a href={$_CONF['site_url']}/links.php>リンク</a>セクションにリンクが表示されます。";
+$PLG_links_MESSAGE1 = "{$_CONF['site_name']}にリンク登録ありがとうございます。スタッフが内容を確認します。承認されたら<a href={$_CONF['site_url']}/links/index.php>リンク</a>セクションに表示されます。";
 $PLG_links_MESSAGE2 = 'リンクは無事登録されました。';
 $PLG_links_MESSAGE3 = 'リンクの削除が完了しました。';
-$PLG_links_MESSAGE4 = "{$_CONF['site_name']}にリンクを登録してくれてありがとうございます。リンクは<a href={$_CONF['site_url']}/links.php>links</a>で確認できます。";
+$PLG_links_MESSAGE4 = "{$_CONF['site_name']}にリンク登録ありがとうございます。<a href={$_CONF['site_url']}/links/index.php>リンク</a>でご確認ください。";
+
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
 
 ###############################################################################
 # admin/link.php
@@ -113,4 +118,4 @@
     23 => '削除'
 );
 
-?>
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/polish.php 1.4.1.src/cpanel-glprivate/plugins/links/language/polish.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/polish.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/polish.php	2006-05-13 12:13:08.000000000 -0500
@@ -21,7 +21,7 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ###############################################################################
-# $Id: polish.php,v 1.1 2006/02/11 14:02:09 dhaun Exp $
+# $Id: polish.php,v 1.2 2006/05/13 17:13:08 dhaun Exp $
 
 /** 
  * This is the english language page for the Geeklog links Plug-in! 
@@ -120,6 +120,9 @@
 $PLG_links_MESSAGE3 = 'Link zosta wykasowany.';
 $PLG_links_MESSAGE4 = "Dzikuj za przesanie linka.  Link jest dostpny w sekcji <a href={$_CONF['site_url']}/links/index.php>linki</a>.";
 
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
+
 ###############################################################################
 # admin/link.php
 /**
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/russian.php 1.4.1.src/cpanel-glprivate/plugins/links/language/russian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/russian.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/russian.php	2006-05-13 12:13:08.000000000 -0500
@@ -86,6 +86,9 @@
 $PLG_links_MESSAGE3 = '  .';
 $PLG_links_MESSAGE4 = "    {$_CONF['site_name']} !      <a href={$_CONF['site_url']}/links/index.php></a>.";
 
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
+
 ###############################################################################
 # admin/link.php
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/slovenian.php 1.4.1.src/cpanel-glprivate/plugins/links/language/slovenian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/slovenian.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/slovenian.php	2006-10-15 02:48:24.000000000 -0500
@@ -0,0 +1,159 @@
+<?php
+
+###############################################################################
+# slovenian.php - version 1.4.1
+# This is the slovenian language file for the Geeklog Links Plugin
+# language file for geeklog version 1.4.1 beta by mb
+# gape@gape.org ; za pripombe, predloge ipd ... pii na email
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony AT tonybibbs DOT com
+# Copyright (C) 2005 Trinity Bays
+# trinity93 AT gmail DOT com
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+# $Id: slovenian.php,v 1.1 2006/10/15 07:48:24 dhaun Exp $
+
+/** 
+ * This is the english language page for the Geeklog links Plug-in! 
+ * 
+ * @package Links
+ * @subpackage Language
+ * @filesource
+ * @version 1.0
+ * @since GL 1.4.0
+ * @copyright Copyright &copy; 2005-2006
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License 
+ * @author Trinity Bays <trinity93 AT steubentech DOT com>
+ * @author Tony Bibbs <tony AT tonybibbs DOT com>
+ * @author Tom Willett <twillett AT users DOT sourceforge DOT net>
+ * 
+ */
+
+
+###############################################################################
+# Array Format:
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+/**
+* the link plugin's lang array
+* 
+* @global array $LANG_LINKS 
+*/
+$LANG_LINKS= array(
+    10 => 'akajoa vsebina',
+    14 => 'Povezave',
+    84 => 'POVEZAVE',
+    88 => 'Ni nedavnih novih povezav',
+    114 => 'Povezave',
+    116 => 'Dodaj povezavo'
+);
+
+###############################################################################
+# for stats
+/**
+* the link plugin's lang stats array
+* 
+* @global array $LANG_LINKS_STATS
+*/
+$LANG_LINKS_STATS = array(
+    'links' => 'Links (Clicks) in the System',
+    'stats_headline' => 'Top Ten Links',
+    'stats_page_title' => 'Links',
+    'stats_hits' => 'Hits',
+    'stats_no_hits' => 'Izgleda, da na tem mestu ni povezav ali pa e nikoli ni nihe kliknil na nobeno.',
+);
+
+###############################################################################
+# for the search
+/**
+* the link plugin's lang search array
+* 
+* @global array $LANG_LINKS_SEARCH 
+*/
+$LANG_LINKS_SEARCH = array(
+ 'results' => 'Rezultati povezav',
+ 'title' => 'Naslov',
+ 'date' => 'Dodani datum',
+ 'author' => 'Odposlal:',
+ 'hits' => 'Kliki'
+);
+
+###############################################################################
+# for the submission form
+/**
+* the link plugin's lang submit form array
+* 
+* @global array $LANG_LINKS_SUBMIT 
+*/
+$LANG_LINKS_SUBMIT = array(
+    1 => 'Oddaj povezavo',
+    2 => 'Povezava',
+    3 => 'Kategorija',
+    4 => 'Drugo',
+    5 => 'e drugo, prosim navedi',
+    6 => 'Napaka: Manjka kategorija',
+    7 => 'Kadar izbere "Drugo", prosim navedi tudi ime kategorije',
+    8 => 'Naslov',
+    9 => 'URL',
+    10 => 'Kategorija',
+    11 => 'Povezave'
+);
+
+###############################################################################
+# Messages for COM_showMessage the submission form
+
+$PLG_links_MESSAGE1 = "Hvala, da si povezavo oddal/a na spletno mesto {$_CONF['site_name']}. Pred objavo ga bo pregledal eden od urednikov. e bo odobren, bo objavljen in dan na razpolago bralcem te spletne strani v razdelku <a href={$_CONF['site_url']}/links/index.php>povezave</a>.";
+$PLG_links_MESSAGE2 = 'Tvoja povezava je uspeno shranjena.';
+$PLG_links_MESSAGE3 = 'Povezava je uspeno izbrisana.';
+$PLG_links_MESSAGE4 = "Hvala, da si povezavo oddal/a na spletno mesto {$_CONF['site_name']}.  Sedaj jo lahko vidi v razdelku <a href={$_CONF['site_url']}/links/index.php>povezave</a>.";
+
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
+
+###############################################################################
+# admin/link.php
+/**
+* the link plugin's lang admin array
+* 
+* @global array $LANG_LINKS_ADMIN 
+*/
+$LANG_LINKS_ADMIN = array(
+    1 => 'Urejevalnik povezav',
+    2 => 'ID povezave',
+    3 => 'Naslov povezave',
+    4 => 'URL povezave',
+    5 => 'Kategorija',
+    6 => '(vkljui http://)',
+    7 => 'Drugo',
+    8 => 'Zadetki povezav',
+    9 => 'Opis povezav',
+    10 => 'Doloiti mora  naslov povezave, URL in opis.',
+    11 => 'Upravljalnik povezav',
+    12 => 'Za spreminjanje ali izbris povezave klikni na njeno ikono za urejanje spodaj.  Za ustvarjenje nove povezave klikni na "Ustvari novo" zgoraj.',
+    14 => 'kategorija povezave',
+    16 => 'Dostop zavrnjen',
+    17 => "Poskua dostopiti do povezave, za katero nima pravic. Ta poskus je bil zabeleen. Prosim <a href=\"{$_CONF['site_admin_url']}/plugins/links/index.php\">pojdi nazaj na zaslon za upravljanje povezav</a>.",
+    20 => 'e drugo, navedi',
+    21 => 'shrani',
+    22 => 'preklii',
+    23 => 'izbrii'
+);
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/slovenian_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/links/language/slovenian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/slovenian_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/slovenian_utf-8.php	2006-10-15 02:48:24.000000000 -0500
@@ -0,0 +1,159 @@
+<?php
+
+###############################################################################
+# slovenian.php - version 1.4.1
+# This is the slovenian language file for the Geeklog Links Plugin
+# language file for geeklog version 1.4.1 beta by mb
+# gape@gape.org ; za pripombe, predloge ipd ... piši na email
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony AT tonybibbs DOT com
+# Copyright (C) 2005 Trinity Bays
+# trinity93 AT gmail DOT com
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+# $Id: slovenian_utf-8.php,v 1.1 2006/10/15 07:48:24 dhaun Exp $
+
+/** 
+ * This is the english language page for the Geeklog links Plug-in! 
+ * 
+ * @package Links
+ * @subpackage Language
+ * @filesource
+ * @version 1.0
+ * @since GL 1.4.0
+ * @copyright Copyright &copy; 2005-2006
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License 
+ * @author Trinity Bays <trinity93 AT steubentech DOT com>
+ * @author Tony Bibbs <tony AT tonybibbs DOT com>
+ * @author Tom Willett <twillett AT users DOT sourceforge DOT net>
+ * 
+ */
+
+
+###############################################################################
+# Array Format:
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+/**
+* the link plugin's lang array
+* 
+* @global array $LANG_LINKS 
+*/
+$LANG_LINKS= array(
+    10 => 'Čakajoča vsebina',
+    14 => 'Povezave',
+    84 => 'POVEZAVE',
+    88 => 'Ni nedavnih novih povezav',
+    114 => 'Povezave',
+    116 => 'Dodaj povezavo'
+);
+
+###############################################################################
+# for stats
+/**
+* the link plugin's lang stats array
+* 
+* @global array $LANG_LINKS_STATS
+*/
+$LANG_LINKS_STATS = array(
+    'links' => 'Links (Clicks) in the System',
+    'stats_headline' => 'Top Ten Links',
+    'stats_page_title' => 'Links',
+    'stats_hits' => 'Hits',
+    'stats_no_hits' => 'Izgleda, da na tem mestu ni povezav ali pa še nikoli ni nihče kliknil na nobeno.',
+);
+
+###############################################################################
+# for the search
+/**
+* the link plugin's lang search array
+* 
+* @global array $LANG_LINKS_SEARCH 
+*/
+$LANG_LINKS_SEARCH = array(
+ 'results' => 'Rezultati povezav',
+ 'title' => 'Naslov',
+ 'date' => 'Dodani datum',
+ 'author' => 'Odposlal:',
+ 'hits' => 'Kliki'
+);
+
+###############################################################################
+# for the submission form
+/**
+* the link plugin's lang submit form array
+* 
+* @global array $LANG_LINKS_SUBMIT 
+*/
+$LANG_LINKS_SUBMIT = array(
+    1 => 'Oddaj povezavo',
+    2 => 'Povezava',
+    3 => 'Kategorija',
+    4 => 'Drugo',
+    5 => 'Če drugo, prosim navedi',
+    6 => 'Napaka: Manjka kategorija',
+    7 => 'Kadar izbereš "Drugo", prosim navedi tudi ime kategorije',
+    8 => 'Naslov',
+    9 => 'URL',
+    10 => 'Kategorija',
+    11 => 'Povezave'
+);
+
+###############################################################################
+# Messages for COM_showMessage the submission form
+
+$PLG_links_MESSAGE1 = "Hvala, da si povezavo oddal/a na spletno mesto {$_CONF['site_name']}. Pred objavo ga bo pregledal eden od urednikov. Če bo odobren, bo objavljen in dan na razpolago bralcem te spletne strani v razdelku <a href={$_CONF['site_url']}/links/index.php>povezave</a>.";
+$PLG_links_MESSAGE2 = 'Tvoja povezava je uspešno shranjena.';
+$PLG_links_MESSAGE3 = 'Povezava je uspešno izbrisana.';
+$PLG_links_MESSAGE4 = "Hvala, da si povezavo oddal/a na spletno mesto {$_CONF['site_name']}.  Sedaj jo lahko vidiš v razdelku <a href={$_CONF['site_url']}/links/index.php>povezave</a>.";
+
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
+
+###############################################################################
+# admin/link.php
+/**
+* the link plugin's lang admin array
+* 
+* @global array $LANG_LINKS_ADMIN 
+*/
+$LANG_LINKS_ADMIN = array(
+    1 => 'Urejevalnik povezav',
+    2 => 'ID povezave',
+    3 => 'Naslov povezave',
+    4 => 'URL povezave',
+    5 => 'Kategorija',
+    6 => '(vključi http://)',
+    7 => 'Drugo',
+    8 => 'Zadetki povezav',
+    9 => 'Opis povezav',
+    10 => 'Določiti moraš  naslov povezave, URL in opis.',
+    11 => 'Upravljalnik povezav',
+    12 => 'Za spreminjanje ali izbris povezave klikni na njeno ikono za urejanje spodaj.  Za ustvarjenje nove povezave klikni na "Ustvari novo" zgoraj.',
+    14 => 'kategorija povezave',
+    16 => 'Dostop zavrnjen',
+    17 => "Poskušaš dostopiti do povezave, za katero nimaš pravic. Ta poskus je bil zabeležen. Prosim <a href=\"{$_CONF['site_admin_url']}/plugins/links/index.php\">pojdi nazaj na zaslon za upravljanje povezav</a>.",
+    20 => 'Če drugo, navedi',
+    21 => 'shrani',
+    22 => 'prekliči',
+    23 => 'izbriši'
+);
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/ukrainian_koi8-u.php 1.4.1.src/cpanel-glprivate/plugins/links/language/ukrainian_koi8-u.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/ukrainian_koi8-u.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/ukrainian_koi8-u.php	2006-12-16 15:11:15.000000000 -0600
@@ -0,0 +1,118 @@
+<?php
+
+###############################################################################
+# ukrainian.php
+# This is the ukrainian language page for the Geeklog Links Plug-in!
+#
+# Copyright (C) 2006 Vitaliy Biliyenko
+# v.lokki@gmail.com
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+# $Id: ukrainian_koi8-u.php,v 1.1 2006/12/16 21:11:15 dhaun Exp $
+
+###############################################################################
+# Array Format:
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+
+$LANG_LINKS= array(
+    10 => 'Ħ',
+    14 => '',
+    84 => '',
+    88 => ' צ ',
+    114 => ' ',
+    116 => ' '
+);
+
+###############################################################################
+# for stats
+
+$LANG_LINKS_STATS = array(
+    'links' => '˦ (̦˦)  ͦ',
+    'stats_headline' => '10 Φ ̦˦',
+    'stats_page_title' => '',
+    'stats_hits' => '',
+    'stats_no_hits' => '  Ԧ  ,   Φ   .',
+);
+
+###############################################################################
+# for the search
+
+$LANG_LINKS_SEARCH = array(
+ 'results' => '  ',
+ 'title' => '',
+ 'date' => '',
+ 'author' => '',
+ 'hits' => '̦˦'
+);
+###############################################################################
+# for the submission form
+
+$LANG_LINKS_SUBMIT = array(
+    1 => 'Ħ ',
+    2 => '',
+    3 => 'Ҧ',
+    4 => '',
+    5 => ' , ',
+    6 => ':  Ҧ',
+    7 => ' "", -, ֦  Ҧ',
+    8 => '',
+    9 => 'URL',
+    10 => 'Ҧ',
+    11 => 'ĦΦ '
+);
+
+###############################################################################
+# Messages for COM_showMessage the submission form
+
+$PLG_links_MESSAGE1 = "դ  Ħ  {$_CONF['site_name']} .       .   ڦ      Ħ <a href={$_CONF['site_url']}/links/index.php> </a>.";
+$PLG_links_MESSAGE2 = '  Ц .';
+$PLG_links_MESSAGE3 = ' Ц .';
+$PLG_links_MESSAGE4 = "դ  Ħ  {$_CONF['site_name']} .     Ħ <a href={$_CONF['site_url']}/links/index.php> </a>.";
+
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
+
+###############################################################################
+# admin/link.php
+
+$LANG_LINKS_ADMIN = array(
+    1 => ' ',
+    2 => 'ID ',
+    3 => '',
+    4 => 'URL',
+    5 => 'Ҧ',
+    6 => '( http://)',
+    7 => '',
+    8 => ' ',
+    9 => '',
+    10 => ' Φ  , URL  .',
+    11 => ' ',
+    12 => ' ͦ   , Φ    .     , Ҧ " " Ҧ.',
+    14 => 'Ҧ ',
+    16 => ' ',
+    17 => "     ,      .    . -, <a href=\"{$_CONF['site_admin_url']}/plugins/links/index.php\">Φ  ͦΦ</a>.",
+    20 => ' , ',
+    21 => '',
+    22 => '',
+    23 => ''
+);
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/ukrainian.php 1.4.1.src/cpanel-glprivate/plugins/links/language/ukrainian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/ukrainian.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/ukrainian.php	2006-12-16 15:11:14.000000000 -0600
@@ -4,7 +4,7 @@
 # ukrainian.php
 # This is the ukrainian language page for the Geeklog Links Plug-in!
 #
-# Copyright (C) 2005 Vitaliy Biliyenko
+# Copyright (C) 2006 Vitaliy Biliyenko
 # v.lokki@gmail.com
 #
 # This program is free software; you can redistribute it and/or
@@ -22,7 +22,7 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ###############################################################################
-# $Id: ukrainian.php,v 1.1 2005/12/22 11:56:37 dhaun Exp $
+# $Id: ukrainian.php,v 1.3 2006/12/16 21:11:14 dhaun Exp $
 
 ###############################################################################
 # Array Format:
@@ -87,6 +87,9 @@
 $PLG_links_MESSAGE3 = '  .';
 $PLG_links_MESSAGE4 = "    {$_CONF['site_name']} .      <a href={$_CONF['site_url']}/links/index.php> </a>.";
 
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
+
 ###############################################################################
 # admin/link.php
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/ukrainian_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/links/language/ukrainian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/language/ukrainian_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/links/language/ukrainian_utf-8.php	2006-12-16 15:11:15.000000000 -0600
@@ -0,0 +1,118 @@
+<?php
+
+###############################################################################
+# ukrainian.php
+# This is the ukrainian language page for the Geeklog Links Plug-in!
+#
+# Copyright (C) 2006 Vitaliy Biliyenko
+# v.lokki@gmail.com
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+# $Id: ukrainian_utf-8.php,v 1.1 2006/12/16 21:11:15 dhaun Exp $
+
+###############################################################################
+# Array Format:
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+
+$LANG_LINKS= array(
+    10 => 'Надіслане',
+    14 => 'Посилання',
+    84 => 'Посилання',
+    88 => 'Немає свіжих посилань',
+    114 => 'Веб ресурси',
+    116 => 'Додати посилання'
+);
+
+###############################################################################
+# for stats
+
+$LANG_LINKS_STATS = array(
+    'links' => 'Лінків (Кліків) у системі',
+    'stats_headline' => '10 найпопулярніших лінків',
+    'stats_page_title' => 'Посилання',
+    'stats_hits' => 'Хіти',
+    'stats_no_hits' => 'На цьому сайті немає посилань, або ще ніхто ними не користувався.',
+);
+
+###############################################################################
+# for the search
+
+$LANG_LINKS_SEARCH = array(
+ 'results' => 'Результати з посилань',
+ 'title' => 'Заголовок',
+ 'date' => 'Додано',
+ 'author' => 'Автор',
+ 'hits' => 'Кліків'
+);
+###############################################################################
+# for the submission form
+
+$LANG_LINKS_SUBMIT = array(
+    1 => 'Надіслати посилання',
+    2 => 'Посилання',
+    3 => 'Категорія',
+    4 => 'Інше',
+    5 => 'Якщо інше, зазначте',
+    6 => 'Помилка: Відсутня категорія',
+    7 => 'Обираючи "Інше", будь-ласка, вкажіть назву категорії',
+    8 => 'Заголовок',
+    9 => 'URL',
+    10 => 'Категорія',
+    11 => 'Надіслані посилання'
+);
+
+###############################################################################
+# Messages for COM_showMessage the submission form
+
+$PLG_links_MESSAGE1 = "Дякуємо за надіслане на {$_CONF['site_name']} посилання.  Його передано нашому персоналу для схвалення.  У разі схвалення його буде додано до розділу <a href={$_CONF['site_url']}/links/index.php>Веб ресурси</a>.";
+$PLG_links_MESSAGE2 = 'Ваше посилання успішно збережено.';
+$PLG_links_MESSAGE3 = 'Посилання успішно вилучено.';
+$PLG_links_MESSAGE4 = "Дякуємо за надіслане на {$_CONF['site_name']} посилання.  Його додано до розділу <a href={$_CONF['site_url']}/links/index.php>Веб ресурси</a>.";
+
+// Messages for the plugin upgrade
+$PLG_links_MESSAGE3002 = $LANG32[9];
+
+###############################################################################
+# admin/link.php
+
+$LANG_LINKS_ADMIN = array(
+    1 => 'Редактор посилань',
+    2 => 'ID посилання',
+    3 => 'Заголовок',
+    4 => 'URL',
+    5 => 'Категорія',
+    6 => '(включаючи http://)',
+    7 => 'Інше',
+    8 => 'Хіти посилання',
+    9 => 'Опис',
+    10 => 'Ви повинні вказати заголовок, URL та опис.',
+    11 => 'Менеджер посилань',
+    12 => 'Щоб змінити чи видалити посилання, натисніть його іконку редагування нижче.  Щоб створити нове посилання, оберіть "Створити нове" вгорі.',
+    14 => 'Категорія посилання',
+    16 => 'Доступ заборонено',
+    17 => "Ви намагались отримати доступ до посилання, до якого у вас немає прав.  Цю спробу записано. Будь-ласка, <a href=\"{$_CONF['site_admin_url']}/plugins/links/index.php\">поверніться до адміністрування</a>.",
+    20 => 'Якщо інше, зазначте',
+    21 => 'зберегти',
+    22 => 'скасувати',
+    23 => 'вилучити'
+);
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/sql/install.php 1.4.1.src/cpanel-glprivate/plugins/links/sql/install.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/sql/install.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/sql/install.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,90 +0,0 @@
-<?php
-
-/* Reminder: always indent with 4 spaces (no tabs). */
-// +---------------------------------------------------------------------------+
-// | Links Plugin 1.0                                                          |
-// +---------------------------------------------------------------------------+
-// | Installation SQL                                                          |
-// +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
-// |                                                                           |
-// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
-// |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
-// |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
-// |          Dirk Haun         - dirk AT haun-online DOT de                   |
-// |          Trinity Bays      - trinity AT steubentech DOT com               |
-// +---------------------------------------------------------------------------+
-// |                                                                           |
-// | This program is licensed under the terms of the GNU General Public License|
-// | as published by the Free Software Foundation; either version 2            |
-// | of the License, or (at your option) any later version.                    |
-// |                                                                           |
-// | This program is distributed in the hope that it will be useful,           |
-// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
-// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                      |
-// | See the GNU General Public License for more details.                      |
-// |                                                                           |
-// | You should have received a copy of the GNU General Public License         |
-// | along with this program; if not, write to the Free Software Foundation,   |
-// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
-// |                                                                           |
-// +---------------------------------------------------------------------------+
-//
-
-/** 
- * Links plugin Installation SQL  
- * 
- * @package Links
- * @filesource
- * @version 1.0
- * @since GL 1.4.0
- * @copyright Copyright &copy; 2005
- * @license http://opensource.org/licenses/gpl-license.php GNU Public License 
- * @author Trinity Bays <trinity93@steubentech.com>
- * @author Tony Bibbs <tony@tonybibbs.com>
- * @author Tom Willett <twillett@users.sourceforge.net>
- * @author Blaine Lang <langmail@sympatico.ca>
- * @author Dirk Haun <dirk@haun-online.de>
- * 
- */
-
-
-
-// $Id: install.php,v 1.2 2005/11/26 06:37:34 trinity Exp $
-
-$_SQL[] = "
-CREATE TABLE {$_TABLES['links']} (
-  lid varchar(20) NOT NULL default '',
-  category varchar(32) default NULL,
-  url varchar(255) default NULL,
-  description text,
-  title varchar(96) default NULL,
-  hits int(11) NOT NULL default '0',
-  date datetime default NULL,
-  owner_id mediumint(8) unsigned NOT NULL default '1',
-  group_id mediumint(8) unsigned NOT NULL default '1',
-  perm_owner tinyint(1) unsigned NOT NULL default '3',
-  perm_group tinyint(1) unsigned NOT NULL default '2',
-  perm_members tinyint(1) unsigned NOT NULL default '2',
-  perm_anon tinyint(1) unsigned NOT NULL default '2',
-  INDEX links_lid(lid),
-  INDEX links_category(category),
-  INDEX links_date(date),
-  PRIMARY KEY  (lid)
-) TYPE=MyISAM
-";
-
-$_SQL[] = "
-CREATE TABLE {$_TABLES['linksubmission']} (
-  lid varchar(20) NOT NULL default '',
-  category varchar(32) default NULL,
-  url varchar(255) default NULL,
-  description text,
-  title varchar(96) default NULL,
-  hits int(11) default NULL,
-  date datetime default NULL,
-  PRIMARY KEY  (lid)
-) TYPE=MyISAM
-";
-
-?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/sql/mssql_install.php 1.4.1.src/cpanel-glprivate/plugins/links/sql/mssql_install.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/sql/mssql_install.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/links/sql/mssql_install.php	2006-10-10 20:36:11.000000000 -0500
@@ -0,0 +1,105 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Links Plugin 1.0                                                          |
+// +---------------------------------------------------------------------------+
+// | Installation SQL                                                          |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2000-2006 by the following authors:                         |
+// |                                                                           |
+// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
+// |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
+// |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
+// |          Dirk Haun         - dirk AT haun-online DOT de                   |
+// |          Trinity Bays      - trinity AT steubentech DOT com               |
+// |          Randy Kolenko     - randy AT nextide DOT ca                      |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is licensed under the terms of the GNU General Public License|
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                      |
+// | See the GNU General Public License for more details.                      |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+
+/**
+ * Links plugin Installation SQL
+ *
+ * @package Links
+ * @filesource
+ * @version 1.0
+ * @since GL 1.4.0
+ * @copyright Copyright &copy; 2005
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @author Trinity Bays <trinity93@steubentech.com>
+ * @author Tony Bibbs <tony@tonybibbs.com>
+ * @author Tom Willett <twillett@users.sourceforge.net>
+ * @author Blaine Lang <langmail@sympatico.ca>
+ * @author Dirk Haun <dirk@haun-online.de>
+ *
+ */
+
+
+
+ $_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['links']}] (
+    [lid] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [category] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [url] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [description] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [title] [varchar] (96) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [hits] [int] NOT NULL ,
+    [date] [datetime] NULL ,
+    [owner_id] [numeric](8, 0) NOT NULL ,
+    [group_id] [numeric](8, 0) NOT NULL ,
+    [perm_owner] [tinyint] NOT NULL ,
+    [perm_group] [tinyint] NOT NULL ,
+    [perm_members] [tinyint] NOT NULL ,
+    [perm_anon] [tinyint] NOT NULL
+) ON [PRIMARY] 
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['linksubmission']}] (
+    [lid] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [category] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [url] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [description] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [title] [varchar] (96) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [hits] [int] NULL ,
+    [date] [datetime] NULL
+) ON [PRIMARY] 
+";
+
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['links']}] ADD
+    CONSTRAINT [DF_gl_links_perm_group] DEFAULT (3) FOR [perm_group],
+    CONSTRAINT [DF_gl_links_perm_anon] DEFAULT (2) FOR [perm_anon],
+    CONSTRAINT [DF_gl_links_perm_members] DEFAULT (2) FOR [perm_members],
+    CONSTRAINT [DF_gl_links_perm_owner] DEFAULT (3) FOR [perm_owner],
+    CONSTRAINT [DF_gl_links_hits] DEFAULT (0) FOR [hits],
+    CONSTRAINT [PK_gl_links] PRIMARY KEY  CLUSTERED
+    (
+        [lid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['linksubmission']}] ADD
+    CONSTRAINT [PK_gl_linksubmission] PRIMARY KEY  CLUSTERED
+    (
+        [lid]
+    )  ON [PRIMARY]
+";
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/sql/mysql_install.php 1.4.1.src/cpanel-glprivate/plugins/links/sql/mysql_install.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/sql/mysql_install.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/links/sql/mysql_install.php	2006-08-19 13:51:48.000000000 -0500
@@ -0,0 +1,90 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Links Plugin 1.0                                                          |
+// +---------------------------------------------------------------------------+
+// | Installation SQL                                                          |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2000-2006 by the following authors:                         |
+// |                                                                           |
+// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
+// |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
+// |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
+// |          Dirk Haun         - dirk AT haun-online DOT de                   |
+// |          Trinity Bays      - trinity AT steubentech DOT com               |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is licensed under the terms of the GNU General Public License|
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                      |
+// | See the GNU General Public License for more details.                      |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+
+/** 
+ * Links plugin Installation SQL  
+ * 
+ * @package Links
+ * @filesource
+ * @version 1.0
+ * @since GL 1.4.0
+ * @copyright Copyright &copy; 2005
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License 
+ * @author Trinity Bays <trinity93@steubentech.com>
+ * @author Tony Bibbs <tony@tonybibbs.com>
+ * @author Tom Willett <twillett@users.sourceforge.net>
+ * @author Blaine Lang <langmail@sympatico.ca>
+ * @author Dirk Haun <dirk@haun-online.de>
+ * 
+ */
+
+
+
+// $Id: mysql_install.php,v 1.1 2006/08/19 18:51:48 dhaun Exp $
+
+$_SQL[] = "
+CREATE TABLE {$_TABLES['links']} (
+  lid varchar(20) NOT NULL default '',
+  category varchar(32) default NULL,
+  url varchar(255) default NULL,
+  description text,
+  title varchar(96) default NULL,
+  hits int(11) NOT NULL default '0',
+  date datetime default NULL,
+  owner_id mediumint(8) unsigned NOT NULL default '1',
+  group_id mediumint(8) unsigned NOT NULL default '1',
+  perm_owner tinyint(1) unsigned NOT NULL default '3',
+  perm_group tinyint(1) unsigned NOT NULL default '2',
+  perm_members tinyint(1) unsigned NOT NULL default '2',
+  perm_anon tinyint(1) unsigned NOT NULL default '2',
+  INDEX links_lid(lid),
+  INDEX links_category(category),
+  INDEX links_date(date),
+  PRIMARY KEY  (lid)
+) TYPE=MyISAM
+";
+
+$_SQL[] = "
+CREATE TABLE {$_TABLES['linksubmission']} (
+  lid varchar(20) NOT NULL default '',
+  category varchar(32) default NULL,
+  url varchar(255) default NULL,
+  description text,
+  title varchar(96) default NULL,
+  hits int(11) default NULL,
+  date datetime default NULL,
+  PRIMARY KEY  (lid)
+) TYPE=MyISAM
+";
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/templates/admin/linkeditor.thtml 1.4.1.src/cpanel-glprivate/plugins/links/templates/admin/linkeditor.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/templates/admin/linkeditor.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/templates/admin/linkeditor.thtml	2006-04-13 06:14:02.000000000 -0500
@@ -48,7 +48,7 @@
                                         </tr>
                                         <tr>
                                             <td align="right">{lang_owner}:</td>
-                                            <td>{owner_username}<input type="hidden" name="owner_id" value="{link_ownerid}"></td>
+                                            <td>{owner_name}<input type="hidden" name="owner_id" value="{link_ownerid}"></td>
                                         </tr>
                                         <tr>
                                             <td align="right">{lang_group}:</td>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/templates/links.thtml 1.4.1.src/cpanel-glprivate/plugins/links/templates/links.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/templates/links.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/templates/links.thtml	2006-11-12 16:45:38.000000000 -0600
@@ -1,4 +1,8 @@
+{blockheader}
+
 {category_navigation}
-<p>[ <a href="{site_url}/submit.php?type=links">{lang_addalink}</a> ]</p>
+<div class="aligncenter" style="padding-bottom:10px;">[ <a href="{site_url}/submit.php?type=links">{lang_addalink}</a> ]</div>
 {category_links}
 {page_navigation}
+
+{blockfooter}
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/templates/submitlink.thtml 1.4.1.src/cpanel-glprivate/plugins/links/templates/submitlink.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/links/templates/submitlink.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/links/templates/submitlink.thtml	2006-10-03 08:52:44.000000000 -0500
@@ -1,25 +1,25 @@
                             <form action="{site_url}/submit.php" method="post">
-                                <table border="0" cellspacing="0" cellpadding="3">
+                                <table border="0" cellspacing="0" cellpadding="3" width="100%">
                                     <tr>
                                         <td align="right"><b>{lang_title}:</b></td>
-                                        <td><input type="text" size="36" maxlength="96" name="title"></td>
+                                        <td><input type="text" size="48" maxlength="96" name="title"></td>
                                     </tr>
                                     <tr>
                                         <td align="right"><b>{lang_link}:</b></td>
-                                        <td><input type="text" size="36" maxlength="{max_url_length}" name="url" value="http://"></td>
+                                        <td><input type="text" size="48" maxlength="{max_url_length}" name="url" value="http://"></td>
                                     </tr>
                                     <tr>
                                         <td align="right"><b>{lang_category}:</b></td>
                                         <td>
                                             <select name="categorydd">
-                                                {link_category_options}<option>{lang_other}</option>
+                                                {link_category_options}
                                             </select> 
                                             <b>{lang_ifother}:</b> <input type="text" name="category" size="12" maxlength="32">
                                         </td>
                                     </tr>
                                     <tr>
                                         <td align="right" valign="top"><b>{lang_description}:</b></td>
-                                        <td><textarea name="description" cols="45" rows="8"></textarea></td>
+                                        <td><textarea name="description" rows="8" style="width:100%"></textarea></td>
                                     </tr>
                                     <tr>
                                         <td align="center" colspan="2">{lang_htmlnotallowed}</td>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/config.php 1.4.1.src/cpanel-glprivate/plugins/polls/config.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/config.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/config.php	2006-06-17 07:22:44.000000000 -0500
@@ -8,7 +8,7 @@
 // |                                                                           |
 // | Polls plugin configuration file                                           |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
 // |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
@@ -33,9 +33,9 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: config.php,v 1.6 2005/09/18 12:09:45 dhaun Exp $
+// $Id: config.php,v 1.9 2006/06/17 12:22:44 dhaun Exp $
 
-$_PO_CONF['version']            = '1.0'; // Plugin Version
+$_PO_CONF['version']            = '1.1.0'; // Plugin Version
 
 // Poll Settings
 
@@ -43,6 +43,13 @@
 // (also see $_CONF['loginrequired'] in Geeklog's config.php)
 $_PO_CONF['pollsloginrequired'] = 0;
 
+/**
+ * Set to 1 to hide the "Polls" entry from the top menu:
+ * 
+ * @global array $_PO_CONF['hidepollsmenu']                                     
+ */
+$_PO_CONF['hidepollsmenu']      = 0;
+
 $_PO_CONF['maxanswers']         = 10; // max. number of options in a poll
 
 // 'submitorder' is the order in which answers are saved in admin/poll.php
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/functions.inc 1.4.1.src/cpanel-glprivate/plugins/polls/functions.inc
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/functions.inc	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/functions.inc	2006-12-02 10:56:10.000000000 -0600
@@ -2,7 +2,7 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Polls Plugin 1.0                                                          |
+// | Polls Plugin 1.1                                                          |
 // +---------------------------------------------------------------------------+
 // | functions.inc                                                             |
 // |                                                                           |
@@ -10,7 +10,7 @@
 // | API method and 2) implements all the common code needed by the Polls      |
 // | plugin' PHP files.                                                        |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs       - tony AT tonybibbs DOT com                     |
 // |          Tom Willett      - twillett AT users DOT sourceforge DOT net     |
@@ -34,7 +34,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: functions.inc,v 1.37.2.1 2006/06/30 12:20:49 dhaun Exp $
+// $Id: functions.inc,v 1.57 2006/12/02 16:32:16 dhaun Exp $
 
 if (strpos ($_SERVER['PHP_SELF'], 'functions.inc') !== false) {
     die ('This file can not be used on its own.');
@@ -65,16 +65,16 @@
 */
 function plugin_getmenuitems_polls ()
 {
-    global $_CONF, $_PO_CONF, $LANG_POLLS;
+    global $_CONF, $_USER, $_PO_CONF, $LANG_POLLS;
 
     $anon = (empty ($_USER['uid']) || ($_USER['uid'] <= 1)) ? true : false;
-    if($anon && ($_CONF['loginrequired'] || $_PO_CONF['pollsloginrequired'])) {
+    if (($_PO_CONF['hidepollsmenu'] == 1) || ($anon &&
+                ($_CONF['loginrequired'] || $_PO_CONF['pollsloginrequired']))) {
         return false;
-    } else {
-        $menuitems[$LANG_POLLS['polls']] = $_CONF['site_url']
-                                         . '/polls/index.php';
     }
 
+    $menuitems[$LANG_POLLS['polls']] = $_CONF['site_url'] . '/polls/index.php';
+
     return $menuitems;
 }
 
@@ -118,10 +118,10 @@
 
     $ret = CMT_saveComment ($title, $comment, $id, $pid, 'polls', $postmode);
     if ($ret > 0) { // failure //FIXME: some failures should not return to comment form
-        $retval .= COM_siteHeader()
-            . CMT_commentForm ($_USER['uid'], $title, $comment, $id, $pid,
-                    'polls', $LANG03[14], $postmode)
-            . COM_siteFooter();
+        $retval .= COM_siteHeader('menu', $LANG03[1])
+                . CMT_commentForm ($title, $comment, $id, $pid, 'polls',
+                                   $LANG03[14], $postmode)
+                . COM_siteFooter();
     } else { // success
         $retval = COM_refresh ($_CONF['site_url']
                                 . "/polls/index.php?qid=$id&aid=-1");
@@ -209,35 +209,44 @@
 function plugin_showstats_polls ($showsitestats)
 {
     global $_CONF, $_TABLES, $LANG_POLLS;
-    require_once( $_CONF['path_system'] . 'lib-admin.php' );
+
+    require_once ($_CONF['path_system'] . 'lib-admin.php');
+
     $retval = '';
-    $result = DB_query("SELECT qid,question,voters from {$_TABLES['pollquestions']} WHERE (voters > 0)" . COM_getPermSQL ('AND') . " ORDER BY voters DESC LIMIT 10");
+
+    $result = DB_query ("SELECT qid,question,voters from {$_TABLES['pollquestions']} WHERE (voters > 0)" . COM_getPermSQL ('AND') . " ORDER BY voters DESC LIMIT 10");
     $nrows  = DB_numRows ($result);
 
     if ($nrows > 0) {
-        require_once( $_CONF['path_system'] . 'lib-admin.php' );
         $header_arr = array(
-            array('text' => $LANG_POLLS['stats_questions'], 'field' => 'qid'),
-            array('text' => $LANG_POLLS['stats_votes'], 'field' => 'voters'),
+            array('text'         => $LANG_POLLS['stats_questions'],
+                  'field'        => 'qid',
+                  'header_class' => 'stats-header-title'
+            ),
+            array('text'         => $LANG_POLLS['stats_votes'],
+                  'field'        => 'voters',
+                  'header_class' => 'stats-header-count',
+                  'field_class'  => 'stats-list-count'
+            ),
         );
         $data_arr = array();
-        $text_arr = array('has_menu'     => false,
-                          'title'        => $LANG_POLLS['stats_top10'],
+        $text_arr = array('has_menu' => false,
+                          'title'    => $LANG_POLLS['stats_top10'],
         );
         for ($i = 0; $i < $nrows; $i++) {
             $A = DB_fetchArray ($result);
-            $A['qid'] = "<a href=\"" . COM_buildUrl ($_CONF['site_url']
-                      . "/polls/index.php?qid={$A['qid']}&amp;aid=-1"). "\">{$A['question']}</a>";
-            $A['voters'] = COM_NumberFormat ($A['voters']);
-            $data_arr[$i] = $A;
+            $url = $_CONF['site_url'] . '/polls/index.php?qid=' . $A['qid']
+                 . '&amp;aid=-1';
+            $qid = '<a href="' . $url . '">' . $A['question'] . '</a>';
+            $voters = COM_NumberFormat ($A['voters']);
+            $data_arr[] = array ('qid' => $qid, 'voters' => $voters);
         }
-        $retval .= ADMIN_simpleList("", $header_arr, $text_arr, $data_arr);
+        $retval .= ADMIN_simpleList ('', $header_arr, $text_arr, $data_arr);
     } else {
         $retval .= COM_startBlock ($LANG_POLLS['stats_top10']);
         $retval .= $LANG_POLLS['stats_none'];
         $retval .= COM_endBlock ();
     }
-    
 
     return $retval;
 }
@@ -311,7 +320,7 @@
 {
     global $_TABLES, $_PO_CONF;
 
-    if (DB_count ($_TABLES['pollquestions'], "owner_id = $uid") == 0) {
+    if (DB_count ($_TABLES['pollquestions'], 'owner_id', $uid) == 0) {
         // there are no polls owned by this user
         return;
     }
@@ -349,6 +358,22 @@
     return $_PO_CONF['version'];
 }
 
+/**
+* Geeklog informs us that we're about to be enabled or disabled
+*
+* @param    boolean     $enable     true = we're being enabled, false = disabled
+* @return   void
+*
+*/
+function plugin_enablestatechange_polls ($enable)
+{
+    global $_TABLES;
+
+    $is_enabled = $enable ? 1 : 0;
+
+    // toggle Poll block
+    DB_query ("UPDATE {$_TABLES['blocks']} SET is_enabled = $is_enabled WHERE (type = 'phpblock') AND (phpblockfn = 'phpblock_polls')");
+}
 
 /**
 * Removes the datastructures for this plugin from the Geeklog database
@@ -378,6 +403,10 @@
         COM_errorLog('...success',1);
     }
 
+    // Remove polls block
+    DB_delete ($_TABLES['blocks'], array ('type',     'phpblockfn'),
+                                   array ('phpblock', 'phpblock_polls'));
+
     // Remove security for this plugin
 
     // Remove the polls admin group
@@ -472,21 +501,17 @@
 
     $retval = '';
 
-    $question = DB_query( "SELECT question,voters,commentcode,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon FROM {$_TABLES['pollquestions']} WHERE qid='$qid'" );
-    $Q = DB_fetchArray( $question );
+    $question = DB_query( "SELECT question,voters,commentcode FROM {$_TABLES['pollquestions']} WHERE qid='$qid'" . COM_getPermSql( 'AND' ));
+    $nquestion = DB_numRows( $question );
 
-    if( SEC_hasAccess( $Q['owner_id'], $Q['group_id'], $Q['perm_owner'], $Q['perm_group'], $Q['perm_members'], $Q['perm_anon'] ) == 0 )
+    if( $nquestion == 0 )
     {
         return $retval;
     }
 
-    $nquestion = DB_numRows( $question );
-    $fields = array( 'ipaddress', 'qid' );
-    $values = array( $_SERVER['REMOTE_ADDR'], $qid );
-    $id = DB_count( $_TABLES['pollvoters'], $fields, $values );
-
-    if( empty( $_COOKIE[$qid] ) && $id == 0 )
+    if( !isset( $_COOKIE[$qid] ) && !POLLS_ipAlreadyVoted( $qid ))
     {
+        $Q = DB_fetchArray( $question );
         if( $nquestion == 1 )
         {
             $answers = DB_query( "SELECT answer,aid FROM {$_TABLES['pollanswers']} WHERE qid='$qid' ORDER BY aid" );
@@ -523,9 +548,10 @@
 
                 if( $Q['commentcode'] >= 0 )
                 {
+                    $num_comments = DB_count( $_TABLES['comments'],
+                            array( 'sid', 'type' ), array( $qid, 'polls' ));
                     $poll->set_var( 'num_comments',
-                            COM_numberFormat( DB_count( $_TABLES['comments'],
-                                                        'sid', $qid )));
+                            COM_numberFormat( $num_comments ));
                     $poll->set_var( 'lang_comments', $LANG01[3] );
                     $poll->set_var( 'poll_comments_url', $_CONF['site_url'] .
                         '/polls/index.php?qid=' . $qid . '&amp;aid=-1#comments');
@@ -573,10 +599,7 @@
 
     if( !empty( $qid ))
     {
-        $pcount = DB_count( $_TABLES['pollvoters'], array( 'ipaddress', 'qid' ),
-                            array( $_SERVER['REMOTE_ADDR'], $qid ));
-
-        if( empty( $_COOKIE[$qid]) && $pcount == 0 )
+        if( !isset( $_COOKIE[$qid] ) && !POLLS_ipAlreadyVoted( $qid ))
         {
             $retval .= POLLS_pollVote( $qid );
         }
@@ -598,26 +621,21 @@
             {
                 $Q = DB_fetchArray( $result );
                 $qid = $Q['qid'];
-                $id = array( 'ipaddress', 'qid' );
-                $value = array( $_SERVER['REMOTE_ADDR'], $qid );
-                $pcount = DB_count( $_TABLES['pollvoters'], $id, $value );
 
                 if( $size < 120 ) // assume we're in the poll block
                 {
-                    if ( $i > 1 )
+                    if( $i > 1 )
                     {
                         $retval .= COM_startBlock( $title, '',
                              COM_getBlockTemplate( 'poll_block', 'header' ));
                     }
-
-                             # $_CONF['path'] . 'plugins/polls/templates/
                 }
                 else // assume we're in polls/index.php
                 {
                     $retval .= COM_startBlock( $title );
                 }
 
-                if( !isset( $_COOKIE[$qid]) && $pcount == 0)
+                if( !isset( $_COOKIE[$qid] ) && !POLLS_ipAlreadyVoted( $qid ))
                 {
                     $retval .= POLLS_pollVote( $qid );
                 }
@@ -679,13 +697,15 @@
     {
         if( $_PO_CONF['answerorder'] == 'voteorder' )
         {
-            $answers = DB_query( "SELECT votes,answer FROM {$_TABLES['pollanswers']} WHERE qid='$qid' ORDER BY votes DESC" );
+            $order = "votes DESC";
         }
         else
         {
-            $answers = DB_query( "SELECT votes,answer FROM {$_TABLES['pollanswers']} WHERE qid='$qid' ORDER BY aid" );
+            $order = "aid";
         }
 
+        $answers = DB_query( "SELECT votes,answer,remark FROM {$_TABLES['pollanswers']} WHERE qid='$qid' ORDER BY $order" );
+
         $nanswers = DB_numRows( $answers );
 
         if( $_COM_VERBOSE )
@@ -722,8 +742,10 @@
                 {
                     $percent = $A['votes'] / $Q['voters'];
                 }
-
+                $poll->set_var( 'cssida', 1);
+                $poll->set_var( 'cssidb', 2);
                 $poll->set_var( 'answer_text', $A['answer'] );
+                $poll->set_var( 'remark_text', $A['remark'] );
                 $poll->set_var( 'answer_counter', $i );
                 $poll->set_var( 'answer_odd', (( $i - 1 ) % 2 ));
                 $poll->set_var( 'answer_num', COM_numberFormat( $A['votes'] ));
@@ -743,9 +765,10 @@
 
             if( $Q['commentcode'] >= 0 )
             {
+                $num_comments = DB_count( $_TABLES['comments'],
+                        array( 'sid', 'type' ), array( $qid, 'polls' ));
                 $poll->set_var( 'num_comments',
-                        COM_numberFormat( DB_count( $_TABLES['comments'],
-                                                    'sid', $qid )));
+                        COM_numberFormat( $num_comments ));
                 $poll->set_var( 'lang_comments', $LANG01[3] );
                 $poll->set_var( 'poll_comments_url', $_CONF['site_url'] .
                         '/polls/index.php?qid=' . $qid . '&amp;aid=-1#comments');
@@ -777,6 +800,33 @@
     return $retval;
 }
 
+/**
+* Check if we already have a vote from this IP address
+*
+* @param    string  $qid    Poll ID
+* @param    string  $ip     (optional) IP address
+* @return   boolean         true: IP already voted; false: didn't
+*
+*/
+function POLLS_ipAlreadyVoted( $qid, $ip = '' )
+{
+    global $_TABLES;
+
+    $retval = false;
+
+    if( empty( $ip ))
+    {
+        $ip = $_SERVER['REMOTE_ADDR'];
+    }
+
+    if( DB_count( $_TABLES['pollvoters'], array( 'ipaddress', 'qid' ),
+                                          array( $ip,         $qid )) > 0 )
+    {
+        $retval = true;
+    }
+
+    return $retval;
+}
 
 function phpblock_polls()
 {
@@ -843,6 +893,8 @@
 {
     global $_CONF, $LANG25, $LANG_ACCESS;
 
+    $retval = '';
+
     $access = SEC_hasAccess ($A['owner_id'], $A['group_id'],
                              $A['perm_owner'], $A['perm_group'],
                              $A['perm_members'], $A['perm_anon']);
@@ -857,7 +909,7 @@
                 $retval = strftime ($_CONF['daytime'], $A['unixdate']);
                 break;
             case 'question':
-                $retval = "<a href=\"{$_CONF['site_url']}/polls/index.php?qid={$A['qid']}&aid=-1\">$fieldvalue</a>";
+                $retval = "<a href=\"{$_CONF['site_url']}/polls/index.php?qid={$A['qid']}&amp;aid=-1\">$fieldvalue</a>";
                 break;
             case 'access':
                 if ($access == 3) {
@@ -888,5 +940,54 @@
     return $retval;
 }
 
+/**
+* Set template variables
+*
+* @param    string  $templatename   name of template, e.g. 'header'
+* @param    ref     $template       reference of actual template
+* @return   void
+*
+* Note: A plugin should use its name as a prefix for the names of its
+* template variables, e.g. 'polls_xxx' and 'lang_polls_xxx'.
+* 'button_polls' is an exception, as such a variable existed for header.thtml
+* in Geeklog 1.3.11 and earlier, where the Polls were an integral part
+* of Geeklog. It is added here for backward-compatibility.
+*
+*/
+function plugin_templatesetvars_polls ($templatename, &$template)
+{
+    global $LANG_POLLS;
+
+    if ($templatename == 'header') {
+        $template->set_var ('button_polls', $LANG_POLLS['polls']);
+    }
+}
+
+/**
+* Update the Polls plugin
+*
+* @return   int     Number of message to display (true = generic success msg)
+*
+*/
+function plugin_upgrade_polls () 
+{
+    global $_TABLES, $_PO_CONF;
+
+    // the plugin needs this function so complain when it doesn't exist
+    if (!function_exists ('SEC_getGroupDropdown')) {
+        return 3002;
+    }
+
+    $current_version = DB_getItem ($_TABLES['plugins'], 'pi_version',
+                                   "pi_name = 'polls'");
+    if ($current_version == '1.0') {
+        $sql = "ALTER TABLE {$_TABLES['pollanswers']} ADD remark VARCHAR(255) NULL AFTER votes;";  
+        $result = DB_query ($sql);
+    }
+
+    DB_query ("UPDATE {$_TABLES['plugins']} SET pi_version = '{$_PO_CONF['version']}', pi_gl_version = '" . VERSION . "' WHERE pi_name = 'polls'");
+
+    return true;
+}
 
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/chinese_simplified_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/polls/language/chinese_simplified_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/chinese_simplified_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/language/chinese_simplified_utf-8.php	2006-08-05 10:07:43.000000000 -0500
@@ -90,5 +90,9 @@
 );
 
 $PLG_polls_MESSAGE19 = '你的民意调查已顺利的存续了.';
+$PLG_polls_MESSAGE20 = 'Your poll has been successfully deleted.';
 
-?>
\ No newline at end of file
+// Messages for the plugin upgrade
+$PLG_polls_MESSAGE3002 = $LANG32[9];
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/chinese_traditional_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/polls/language/chinese_traditional_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/chinese_traditional_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/language/chinese_traditional_utf-8.php	2006-08-05 10:07:43.000000000 -0500
@@ -90,5 +90,9 @@
 );
 
 $PLG_polls_MESSAGE19 = '你的民意調查已順利的存續了.';
+$PLG_polls_MESSAGE20 = 'Your poll has been successfully deleted.';
 
-?>
\ No newline at end of file
+// Messages for the plugin upgrade
+$PLG_polls_MESSAGE3002 = $LANG32[9];
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/dutch.php 1.4.1.src/cpanel-glprivate/plugins/polls/language/dutch.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/dutch.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/language/dutch.php	2006-08-05 10:07:43.000000000 -0500
@@ -1,7 +1,7 @@
 <?php
 
 ###############################################################################
-# ducth.php
+# dutch.php
 # This is the Dutch language file for the Geeklog Polls plugin
 #
 # Copyright (C) 2001 Tony Bibbs
@@ -89,5 +89,9 @@
 );
 
 $PLG_polls_MESSAGE19 = 'Your poll has been successfully saved.';
+$PLG_polls_MESSAGE20 = 'Your poll has been successfully deleted.';
+
+// Messages for the plugin upgrade
+$PLG_polls_MESSAGE3002 = $LANG32[9];
 
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/english.php 1.4.1.src/cpanel-glprivate/plugins/polls/language/english.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/english.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/language/english.php	2006-08-05 10:07:43.000000000 -0500
@@ -65,7 +65,7 @@
     7 => '(do not use spaces)',
     8 => 'Appears on Homepage',
     9 => 'Question',
-    10 => 'Answers / Votes',
+    10 => 'Answers / Votes / Remark',
     11 => "There was an error getting poll answer data about the poll %s",
     12 => "There was an error getting poll question data about the poll %s",
     13 => 'Create Poll',
@@ -89,5 +89,9 @@
 );
 
 $PLG_polls_MESSAGE19 = 'Your poll has been successfully saved.';
+$PLG_polls_MESSAGE20 = 'Your poll has been successfully deleted.';
+
+// Messages for the plugin upgrade
+$PLG_polls_MESSAGE3002 = $LANG32[9];
 
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/english_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/polls/language/english_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/english_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/language/english_utf-8.php	2006-08-05 10:07:43.000000000 -0500
@@ -65,7 +65,7 @@
     7 => '(do not use spaces)',
     8 => 'Appears on Homepage',
     9 => 'Question',
-    10 => 'Answers / Votes',
+    10 => 'Answers / Votes / Remark',
     11 => "There was an error getting poll answer data about the poll %s",
     12 => "There was an error getting poll question data about the poll %s",
     13 => 'Create Poll',
@@ -89,5 +89,9 @@
 );
 
 $PLG_polls_MESSAGE19 = 'Your poll has been successfully saved.';
+$PLG_polls_MESSAGE20 = 'Your poll has been successfully deleted.';
+
+// Messages for the plugin upgrade
+$PLG_polls_MESSAGE3002 = $LANG32[9];
 
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/estonian.php 1.4.1.src/cpanel-glprivate/plugins/polls/language/estonian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/estonian.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/language/estonian.php	2006-10-15 02:54:35.000000000 -0500
@@ -0,0 +1,100 @@
+<?php
+
+###############################################################################
+# estonian.php
+# This is the estonian language page for the Geeklog Polls Plug-in
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony@tonybibbs.com
+# Copyright (C) 2005 Trinity Bays
+# trinity93@gmail.com
+#
+# Estonian translation by Artur Rpp <rtr AT planet DOT ee>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+
+$LANG_POLLS = array(
+    'polls'             => 'Ksitlused',
+    'results'           => 'Tulemused',
+    'pollresults'       => 'Hletuste tulemused',
+    'votes'             => 'Hletust',
+    'vote'              => 'Hleta',
+    'pastpolls'         => 'Viimased ksitlused',
+    'savedvotetitle'    => 'Hl salvestatud',
+    'savedvotemsg'      => 'Sinu hl on salvestatud. Hletasid ksitluses:',
+    'pollstitle'        => 'Olemas olevad ksitlused',
+    'pollquestions'     => 'Vaata teisi ksitlusi',
+    'stats_top10'       => 'Top 10 ksitlust',
+    'stats_questions'   => 'Ksitluse ksimus',
+    'stats_votes'       => 'hli',
+    'stats_none'        => 'Nib et sellel lehel pole htegi ksitlust vi mitte keegi ei ole veel hletanud.',
+    'stats_summary'     => 'Ksitlusi (vastuseid)',
+    'open_poll'         => 'Avatud hletamiseks'
+);
+
+###############################################################################
+# admin/plugins/polls/index.php
+
+$LANG25 = array(
+    1 => 'Laad',
+    2 => 'Palun sisesta ksimus ja vhemalt ks vastus.',
+    3 => 'Ksitlus on loodud',
+    4 => "Ksitlus %s on salvestatud",
+    5 => 'Toimeta ksitlust',
+    6 => 'Ksitluse ID',
+    7 => '(ra kasuta thikuid)',
+    8 => 'Nhtav avalehel',
+    9 => 'Ksimus',
+    10 => 'vastused/hletused',
+    11 => "Tekkis viga ksitluse %s vastusteandmete laadimisel",
+    12 => "Tekkis viga ksitluse %s ksimuste laadimisel",
+    13 => 'Loo ksitlus',
+    14 => 'salvesta',
+    15 => 'thista',
+    16 => 'kustuta',
+    17 => 'Sisesta ksitluse ID',
+    18 => 'Ksitluste nimekiri',
+    19 => 'Ksitluse toimetamiseks vi kustutamiseks klpsa ksitluse toimetamisikoonil. Uue ksitluse loomiseks klpsa "Tee uus" lal.',
+    20 => 'Hletajad',
+    21 => 'Ligips tkestatud',
+    22 => "Sa proovisid ligi pseda ksitlusele, milleks polnud sul igust. See katse on logitud. 
+Palun <a href=\"{$_CONF['site_admin_url']}/poll.php\"> mine tagasi ksitluste administreerimislehele.</a>",
+    23 => 'Uus ksitlus',
+    24 => 'Admin avaleht',
+    25 => 'Ja',
+    26 => 'Ei',
+    27 => 'Toimeta',
+    28 => 'Sisesta',
+    29 => 'Otsi',
+    30 => 'Piira tulemused',
+);
+
+ $PLG_polls_MESSAGE19 = 'Sinu ksitlus on edukalt salvestatud.';
+$PLG_polls_MESSAGE20 = 'Sinu ksitlus on edukalt kustutatud.';
+
+// Messages for the plugin upgrade
+$PLG_polls_MESSAGE3002 = $LANG32[9];
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/estonian_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/polls/language/estonian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/estonian_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/language/estonian_utf-8.php	2006-10-15 02:54:35.000000000 -0500
@@ -0,0 +1,100 @@
+<?php
+
+###############################################################################
+# estonian_utf-8.php
+# This is the estonian language page for the Geeklog Polls Plug-in
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony@tonybibbs.com
+# Copyright (C) 2005 Trinity Bays
+# trinity93@gmail.com
+#
+# Estonian translation by Artur Räpp <rtr AT planet DOT ee>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+
+$LANG_POLLS = array(
+    'polls'             => 'Küsitlused',
+    'results'           => 'Tulemused',
+    'pollresults'       => 'Hääletuste tulemused',
+    'votes'             => 'Hääletust',
+    'vote'              => 'Hääleta',
+    'pastpolls'         => 'Viimased küsitlused',
+    'savedvotetitle'    => 'Hääl salvestatud',
+    'savedvotemsg'      => 'Sinu hääl on salvestatud. Hääletasid küsitluses:',
+    'pollstitle'        => 'Olemas olevad küsitlused',
+    'pollquestions'     => 'Vaata teisi küsitlusi',
+    'stats_top10'       => 'Top 10 küsitlust',
+    'stats_questions'   => 'Küsitluse küsimus',
+    'stats_votes'       => 'hääli',
+    'stats_none'        => 'Näib et sellel lehel pole ühtegi küsitlust või mitte keegi ei ole veel hääletanud.',
+    'stats_summary'     => 'Küsitlusi (vastuseid)',
+    'open_poll'         => 'Avatud hääletamiseks'
+);
+
+###############################################################################
+# admin/plugins/polls/index.php
+
+$LANG25 = array(
+    1 => 'Laad',
+    2 => 'Palun sisesta küsimus ja vähemalt üks vastus.',
+    3 => 'Küsitlus on loodud',
+    4 => "Küsitlus %s on salvestatud",
+    5 => 'Toimeta küsitlust',
+    6 => 'Küsitluse ID',
+    7 => '(ära kasuta tühikuid)',
+    8 => 'Nähtav avalehel',
+    9 => 'Küsimus',
+    10 => 'vastused/hääletused',
+    11 => "Tekkis viga küsitluse %s vastusteandmete laadimisel",
+    12 => "Tekkis viga küsitluse %s küsimuste laadimisel",
+    13 => 'Loo küsitlus',
+    14 => 'salvesta',
+    15 => 'tühista',
+    16 => 'kustuta',
+    17 => 'Sisesta küsitluse ID',
+    18 => 'Küsitluste nimekiri',
+    19 => 'Küsitluse toimetamiseks või kustutamiseks klõpsa küsitluse toimetamisikoonil. Uue küsitluse loomiseks klõpsa "Tee uus" ülal.',
+    20 => 'Hääletajad',
+    21 => 'Ligipääs tõkestatud',
+    22 => "Sa proovisid ligi pääseda küsitlusele, milleks polnud sul õigust. See katse on logitud. 
+Palun <a href=\"{$_CONF['site_admin_url']}/poll.php\"> mine tagasi küsitluste administreerimislehele.</a>",
+    23 => 'Uus küsitlus',
+    24 => 'Admin avaleht',
+    25 => 'Ja',
+    26 => 'Ei',
+    27 => 'Toimeta',
+    28 => 'Sisesta',
+    29 => 'Otsi',
+    30 => 'Piira tulemused',
+);
+
+ $PLG_polls_MESSAGE19 = 'Sinu küsitlus on edukalt salvestatud.';
+$PLG_polls_MESSAGE20 = 'Sinu küsitlus on edukalt kustutatud.';
+
+// Messages for the plugin upgrade
+$PLG_polls_MESSAGE3002 = $LANG32[9];
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/german_formal.php 1.4.1.src/cpanel-glprivate/plugins/polls/language/german_formal.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/german_formal.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/language/german_formal.php	2006-10-21 15:17:36.000000000 -0500
@@ -24,7 +24,7 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ###############################################################################
-# $Id: german_formal.php,v 1.1 2005/12/17 19:52:22 dhaun Exp $
+# $Id: german_formal.php,v 1.5 2006/10/21 20:17:36 dhaun Exp $
 
 ###############################################################################
 # Array Format: 
@@ -58,14 +58,14 @@
 $LANG25 = array(
     1 => 'Modus',
     2 => 'Bitte eine Frage und mindestens eine Antwort eingeben.',
-    3 => 'Umfrage gestartet',
+    3 => 'Gestartet',
     4 => 'Umfrage %s wurde gespeichert',
     5 => 'Umfrage editieren',
     6 => 'Umfrage-ID',
     7 => '(keine Leerzeichen!)',
-    8 => 'Erscheint auf der Startseite',
+    8 => 'Auf der Startseite',
     9 => 'Thema',
-    10 => 'Antworten / Stimmen',
+    10 => 'Antworten / Stimmen / Anmerkung',
     11 => 'Beim Abrufen der Stimmen von Umfrage %s trat ein Fehler auf.',
     12 => 'Beim Abrufen der Fragen von Umfrage %s trat ein Fehler auf.',
     13 => 'Umfrage anlegen',
@@ -89,5 +89,9 @@
 );
 
 $PLG_polls_MESSAGE19 = 'Ihre Umfrage wurde gespeichert.';
+$PLG_polls_MESSAGE20 = 'Ihre Umfrage wurde gelscht.';
+
+// Messages for the plugin upgrade
+$PLG_polls_MESSAGE3002 = $LANG32[9];
 
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/german_formal_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/polls/language/german_formal_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/german_formal_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/language/german_formal_utf-8.php	2006-10-21 15:17:36.000000000 -0500
@@ -24,7 +24,7 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ###############################################################################
-# $Id: german_formal_utf-8.php,v 1.1 2005/12/17 19:52:22 dhaun Exp $
+# $Id: german_formal_utf-8.php,v 1.5 2006/10/21 20:17:36 dhaun Exp $
 
 ###############################################################################
 # Array Format: 
@@ -58,14 +58,14 @@
 $LANG25 = array(
     1 => 'Modus',
     2 => 'Bitte eine Frage und mindestens eine Antwort eingeben.',
-    3 => 'Umfrage gestartet',
+    3 => 'Gestartet',
     4 => 'Umfrage %s wurde gespeichert',
     5 => 'Umfrage editieren',
     6 => 'Umfrage-ID',
     7 => '(keine Leerzeichen!)',
-    8 => 'Erscheint auf der Startseite',
+    8 => 'Auf der Startseite',
     9 => 'Thema',
-    10 => 'Antworten / Stimmen',
+    10 => 'Antworten / Stimmen / Anmerkung',
     11 => 'Beim Abrufen der Stimmen von Umfrage %s trat ein Fehler auf.',
     12 => 'Beim Abrufen der Fragen von Umfrage %s trat ein Fehler auf.',
     13 => 'Umfrage anlegen',
@@ -89,5 +89,9 @@
 );
 
 $PLG_polls_MESSAGE19 = 'Ihre Umfrage wurde gespeichert.';
+$PLG_polls_MESSAGE20 = 'Ihre Umfrage wurde gelöscht.';
+
+// Messages for the plugin upgrade
+$PLG_polls_MESSAGE3002 = $LANG32[9];
 
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/german.php 1.4.1.src/cpanel-glprivate/plugins/polls/language/german.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/german.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/language/german.php	2006-10-21 15:17:36.000000000 -0500
@@ -23,7 +23,7 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ###############################################################################
-# $Id: german.php,v 1.2 2005/12/17 19:52:22 dhaun Exp $
+# $Id: german.php,v 1.6 2006/10/21 20:17:36 dhaun Exp $
 
 ###############################################################################
 # Array Format: 
@@ -57,14 +57,14 @@
 $LANG25 = array(
     1 => 'Modus',
     2 => 'Bitte eine Frage und mindestens eine Antwort eingeben.',
-    3 => 'Umfrage gestartet',
+    3 => 'Gestartet',
     4 => 'Umfrage %s wurde gespeichert',
     5 => 'Umfrage editieren',
     6 => 'Umfrage-ID',
     7 => '(keine Leerzeichen!)',
-    8 => 'Erscheint auf der Startseite',
+    8 => 'Auf der Startseite',
     9 => 'Thema',
-    10 => 'Antworten / Stimmen',
+    10 => 'Antworten / Stimmen / Anmerkung',
     11 => 'Beim Abrufen der Stimmen von Umfrage %s trat ein Fehler auf.',
     12 => 'Beim Abrufen der Fragen von Umfrage %s trat ein Fehler auf.',
     13 => 'Umfrage anlegen',
@@ -88,5 +88,9 @@
 );
 
 $PLG_polls_MESSAGE19 = 'Deine Umfrage wurde gespeichert.';
+$PLG_polls_MESSAGE20 = 'Deine Umfrage wurde gelscht.';
+
+// Messages for the plugin upgrade
+$PLG_polls_MESSAGE3002 = $LANG32[9];
 
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/german_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/polls/language/german_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/german_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/language/german_utf-8.php	2006-10-21 15:17:36.000000000 -0500
@@ -23,7 +23,7 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ###############################################################################
-# $Id: german_utf-8.php,v 1.1 2005/12/17 19:52:22 dhaun Exp $
+# $Id: german_utf-8.php,v 1.5 2006/10/21 20:17:36 dhaun Exp $
 
 ###############################################################################
 # Array Format: 
@@ -57,14 +57,14 @@
 $LANG25 = array(
     1 => 'Modus',
     2 => 'Bitte eine Frage und mindestens eine Antwort eingeben.',
-    3 => 'Umfrage gestartet',
+    3 => 'Gestartet',
     4 => 'Umfrage %s wurde gespeichert',
     5 => 'Umfrage editieren',
     6 => 'Umfrage-ID',
     7 => '(keine Leerzeichen!)',
-    8 => 'Erscheint auf der Startseite',
+    8 => 'Auf der Startseite',
     9 => 'Thema',
-    10 => 'Antworten / Stimmen',
+    10 => 'Antworten / Stimmen / Anmerkung',
     11 => 'Beim Abrufen der Stimmen von Umfrage %s trat ein Fehler auf.',
     12 => 'Beim Abrufen der Fragen von Umfrage %s trat ein Fehler auf.',
     13 => 'Umfrage anlegen',
@@ -88,5 +88,9 @@
 );
 
 $PLG_polls_MESSAGE19 = 'Deine Umfrage wurde gespeichert.';
+$PLG_polls_MESSAGE20 = 'Deine Umfrage wurde gelöscht.';
+
+// Messages for the plugin upgrade
+$PLG_polls_MESSAGE3002 = $LANG32[9];
 
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/japanese.php 1.4.1.src/cpanel-glprivate/plugins/polls/language/japanese.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/japanese.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/language/japanese.php	2006-12-11 18:13:26.000000000 -0600
@@ -1,13 +1,14 @@
 <?php
 
 ###############################################################################
-# english.php
-# This is the english language page for the Geeklog Polls Plug-in!
+# japanese.php
+# This is the Japanese language page for the Geeklog Polls Plug-in!
 #
 # Copyright (C) 2001 Tony Bibbs
 # tony@tonybibbs.com
 # Copyright (C) 2005 Trinity Bays
 # trinity93@gmail.com
+# Tranlated by Geeklog Japanese group
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -24,6 +25,7 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ###############################################################################
+# Last Update 2006/12/12 by Ivy (Geeklog Japanese)
 
 ###############################################################################
 # Array Format: 
@@ -34,16 +36,16 @@
 
 
 $LANG_POLLS = array(
-    'polls'     => '󥱡',
-    'results'   => '',
-    'pollresults'   => 'ɼ',
-    'votes'     => 'ɼ',
-    'vote'      => 'ɼ',
-    'pastpolls' => '󥱡Ȥΰ',
-    'savedvotetitle'    => 'ɼϿޤ',
-    'savedvotemsg'  => 'ɼϿޤ',
-    'pollstitle'    => '罸Υ󥱡',
-    'pollquestions' => '¾Υ󥱡Ȥ򸫤'
+    'polls'          => '󥱡',
+    'results'        => '',
+    'pollresults'    => 'ɼ',
+    'votes'          => 'ɼ',
+    'vote'           => 'ɼ',
+    'pastpolls'      => '󥱡Ȥΰ',
+    'savedvotetitle' => 'ɼϿޤ',
+    'savedvotemsg'   => 'ɼϿޤ',
+    'pollstitle'     => '罸Υ󥱡',
+    'pollquestions'  => '¾Υ󥱡Ȥ򸫤'
 );
 
 ###############################################################################
@@ -51,7 +53,7 @@
 
 $LANG25 = array(
     1 => '⡼',
-    2 => 'ȺĤϤƤ',
+    2 => 'ȾʤȤĤϤƤ',
     3 => '',
     4 => "󥱡ȡ %s ˤ¸ޤ",
     5 => '󥱡ȤԽ',
@@ -60,15 +62,15 @@
     8 => 'ۡڡɽ',
     9 => '䤹뤳',
     10 => '  ɼ',
-    11 => "󥱡( %s )ˤ˥顼ޤ",
-    12 => "󥱡( %s )ˤܤ˥顼ޤ",
+    11 => "󥱡( %s )˥顼ޤ",
+    12 => "󥱡( %s )μܤ˥顼ޤ",
     13 => '󥱡Ȥκ',
     14 => '¸',
     15 => '',
     16 => '',
     17 => 'ɼIDϤƤ',
     18 => '󥱡Ȱ',
-    19 => '󥱡ȤԽ뤿ˤϡȥ뺸Υ򥯥åƤ˺ϡֿפ򥯥åƤȥ򥯥åȥ󥱡ȤǤޤ',
+    19 => '󥱡ȤκԽϥȥ뺸Υ򥯥å˺ϡֿפ򥯥åƤȥ򥯥åȥ󥱡ȤǤޤ',
     20 => 'ɼ',
     21 => 'ݤޤ',
     22 => "¤Τʤ󥱡ȤԽ褦Ȥޤι԰٤ϵϿޤ<a href=\"{$_CONF['site_admin_url']}/poll.php\">ɼδ</a>äƤ",
@@ -84,5 +86,9 @@
 );
 
 $PLG_polls_MESSAGE19 = '󥱡ȤϿޤ';
+$PLG_polls_MESSAGE20 = '󥱡ȤϺޤ';
 
-?>
+// Messages for the plugin upgrade
+$PLG_polls_MESSAGE3002 = $LANG32[9];
+
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/japanese_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/polls/language/japanese_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/japanese_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/language/japanese_utf-8.php	2006-12-11 18:13:28.000000000 -0600
@@ -1,13 +1,14 @@
 <?php
 
 ###############################################################################
-# english.php
-# This is the english language page for the Geeklog Polls Plug-in!
+# japanese_utf-8.php
+# This is the Japanese language page for the Geeklog Polls Plug-in!
 #
 # Copyright (C) 2001 Tony Bibbs
 # tony@tonybibbs.com
 # Copyright (C) 2005 Trinity Bays
 # trinity93@gmail.com
+# Tranlated by Geeklog Japanese group
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -24,6 +25,7 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ###############################################################################
+# Last Update 2006/12/12 by Ivy (Geeklog Japanese)
 
 ###############################################################################
 # Array Format: 
@@ -34,16 +36,16 @@
 
 
 $LANG_POLLS = array(
-    'polls'     => 'アンケート',
-    'results'   => '結果',
-    'pollresults'   => '投票結果',
-    'votes'     => '投票',
-    'vote'      => '投票する',
-    'pastpolls' => 'アンケートの一覧',
-    'savedvotetitle'    => '投票が登録されました',
-    'savedvotemsg'  => '今の投票が登録されました',
-    'pollstitle'    => '募集中のアンケート',
-    'pollquestions' => '他のアンケートを見る'
+    'polls'          => 'アンケート',
+    'results'        => '結果',
+    'pollresults'    => '投票結果',
+    'votes'          => '投票',
+    'vote'           => '投票する',
+    'pastpolls'      => 'アンケートの一覧',
+    'savedvotetitle' => '投票が登録されました',
+    'savedvotemsg'   => '今の投票が登録されました',
+    'pollstitle'     => '募集中のアンケート',
+    'pollquestions'  => '他のアンケートを見る'
 );
 
 ###############################################################################
@@ -51,7 +53,7 @@
 
 $LANG25 = array(
     1 => 'モード',
-    2 => '質問と最低一つの選択肢を入力してください',
+    2 => '質問と少なくとも一つの選択肢を入力してください',
     3 => '作成日時',
     4 => "アンケート（ %s ）が保存されました",
     5 => 'アンケートの編集',
@@ -60,15 +62,15 @@
     8 => 'ホームページに表示する',
     9 => '質問すること',
     10 => '回答 ／ 投票数',
-    11 => "アンケート( %s )における選択肢にエラーがありました",
-    12 => "アンケート( %s )における質問項目にエラーがありました",
+    11 => "アンケート( %s )の選択肢にエラーがありました",
+    12 => "アンケート( %s )の質問項目にエラーがありました",
     13 => 'アンケートの作成',
     14 => '保存',
     15 => '中止',
     16 => '削除',
     17 => '投票IDを入力してください',
     18 => 'アンケート一覧',
-    19 => 'アンケートを削除・編集するためには、タイトル左のアイコンをクリックしてください。新規に作成する場合は、「新規作成」をクリックしてください。タイトルをクリックするとアンケートを閲覧できます。',
+    19 => 'アンケートの削除・編集はタイトル左のアイコンをクリック、新規に作成する場合は「新規作成」をクリックしてください。タイトルをクリックするとアンケートを閲覧できます。',
     20 => '投票者',
     21 => 'アクセスが拒否されました',
     22 => "管理権限のないアンケートを編集しようとしました。この行為は記録されます。<a href=\"{$_CONF['site_admin_url']}/poll.php\">投票の管理画面</a>に戻ってください。",
@@ -84,5 +86,9 @@
 );
 
 $PLG_polls_MESSAGE19 = 'アンケートが登録されました。';
+$PLG_polls_MESSAGE20 = 'アンケートは削除されました。';
 
-?>
+// Messages for the plugin upgrade
+$PLG_polls_MESSAGE3002 = $LANG32[9];
+
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/russian.php 1.4.1.src/cpanel-glprivate/plugins/polls/language/russian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/russian.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/language/russian.php	2006-08-05 10:07:43.000000000 -0500
@@ -87,5 +87,9 @@
 );
 
 $PLG_polls_MESSAGE19 = '   .';
+$PLG_polls_MESSAGE20 = 'Your poll has been successfully deleted.';
+
+// Messages for the plugin upgrade
+$PLG_polls_MESSAGE3002 = $LANG32[9];
 
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/slovenian.php 1.4.1.src/cpanel-glprivate/plugins/polls/language/slovenian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/slovenian.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/language/slovenian.php	2006-10-15 02:48:24.000000000 -0500
@@ -0,0 +1,99 @@
+<?php
+
+###############################################################################
+# slovenian.php - version 1.4.1
+# This is the slovenian language page for the Geeklog Polls Plug-in!
+# language file for geeklog version 1.4.1 beta by mb
+# gape@gape.org ; za pripombe, predloge ipd ... pii na email
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony@tonybibbs.com
+# Copyright (C) 2005 Trinity Bays
+# trinity93@gmail.com
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+
+$LANG_POLLS = array(
+    'polls'             => 'Ankete',
+    'results'           => 'Rezultati',
+    'pollresults'       => 'Rezultati anket',
+    'votes'             => 'glasov',
+    'vote'              => 'Glasuj',
+    'pastpolls'         => 'Pretekle ankete',
+    'savedvotetitle'    => 'Glas shranjen',
+    'savedvotemsg'      => 'Tvoj glas je shranjen za anketo.',
+    'pollstitle'        => 'Ankete v sistemu',
+    'pollquestions'     => 'Poglej druga anketna vpraanja.',
+    'stats_top10'       => 'Najboljih 10 anket',
+    'stats_questions'   => 'Vpraanje ankete',
+    'stats_votes'       => 'Glasovi',
+    'stats_none'        => 'Izgleda, da na tem mestu ni anket ali pa e nikoli ni nihe glasoval.',
+    'stats_summary'     => 'Ankete (odgovori) v sistemu',
+    'open_poll'         => 'Odprto za glasovanje'
+);
+
+###############################################################################
+# admin/plugins/polls/index.php
+
+$LANG25 = array(
+    1 => 'Nain',
+    2 => 'Vpiite vpraanje in vsaj en odgovor.',
+    3 => 'Anketa ustvarjena',
+    4 => "Anketa %s shranjena",
+    5 => 'Uredi anketo',
+    6 => 'ID ankete',
+    7 => '(ne uporabljaj presledkov)',
+    8 => 'Pojavi se na domai strani',
+    9 => 'Vpraanje',
+    10 => 'Odgovori / Glasovi / Pripombe',
+    11 => "Med pridobivanjem podatkov o odgovoru pri anketi %s je prilo do napake",
+    12 => "Med pridobivanjem podatkov o vpraanju pri anketi %s je prilo do napake",
+    13 => 'Ustvari anketo',
+    14 => 'shrani',
+    15 => 'preklii',
+    16 => 'izbrii',
+    17 => 'Vnesi prosim ID ankete',
+    18 => 'Seznam anket',
+    19 => 'Za spreminjanje ali izbris ankete klikni na njeno ikono za urejanje. Za ustvarjenje nove ankete klikni na "Ustvari novo" zgoraj.',
+    20 => 'Glasovalci',
+    21 => 'Dostop zavrnjen',
+    22 => "Poskua dostopiti do ankete, za katero nima pravic. Ta poskus je bil zabeleen. Prosim <a href=\"{$_CONF['site_admin_url']}/poll.php\">pojdi nazaj na zaslon za upravljanje anket</a>.",
+    23 => 'Nova anketa',
+    24 => 'Upravnikova stran',
+    25 => 'Da',
+    26 => 'Ne',
+    27 => 'Uredi',
+    28 => 'Oddaj',
+    29 => 'Ii',
+    30 => 'Omeji rezultate',
+);
+
+$PLG_polls_MESSAGE19 = 'Tvoja anketa je uspeno shranjena.';
+$PLG_polls_MESSAGE20 = 'Tvoja anketa je uspeno izbrisana.';
+
+// Messages for the plugin upgrade
+$PLG_polls_MESSAGE3002 = $LANG32[9];
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/slovenian_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/polls/language/slovenian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/slovenian_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/language/slovenian_utf-8.php	2006-10-15 02:48:24.000000000 -0500
@@ -0,0 +1,99 @@
+<?php
+
+###############################################################################
+# slovenian.php - version 1.4.1
+# This is the slovenian language page for the Geeklog Polls Plug-in!
+# language file for geeklog version 1.4.1 beta by mb
+# gape@gape.org ; za pripombe, predloge ipd ... piši na email
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony@tonybibbs.com
+# Copyright (C) 2005 Trinity Bays
+# trinity93@gmail.com
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+
+$LANG_POLLS = array(
+    'polls'             => 'Ankete',
+    'results'           => 'Rezultati',
+    'pollresults'       => 'Rezultati anket',
+    'votes'             => 'glasov',
+    'vote'              => 'Glasuj',
+    'pastpolls'         => 'Pretekle ankete',
+    'savedvotetitle'    => 'Glas shranjen',
+    'savedvotemsg'      => 'Tvoj glas je shranjen za anketo.',
+    'pollstitle'        => 'Ankete v sistemu',
+    'pollquestions'     => 'Poglej druga anketna vprašanja.',
+    'stats_top10'       => 'Najboljših 10 anket',
+    'stats_questions'   => 'Vprašanje ankete',
+    'stats_votes'       => 'Glasovi',
+    'stats_none'        => 'Izgleda, da na tem mestu ni anket ali pa še nikoli ni nihče glasoval.',
+    'stats_summary'     => 'Ankete (odgovori) v sistemu',
+    'open_poll'         => 'Odprto za glasovanje'
+);
+
+###############################################################################
+# admin/plugins/polls/index.php
+
+$LANG25 = array(
+    1 => 'Način',
+    2 => 'Vpišite vprašanje in vsaj en odgovor.',
+    3 => 'Anketa ustvarjena',
+    4 => "Anketa %s shranjena",
+    5 => 'Uredi anketo',
+    6 => 'ID ankete',
+    7 => '(ne uporabljaj presledkov)',
+    8 => 'Pojavi se na domači strani',
+    9 => 'Vprašanje',
+    10 => 'Odgovori / Glasovi / Pripombe',
+    11 => "Med pridobivanjem podatkov o odgovoru pri anketi %s je prišlo do napake",
+    12 => "Med pridobivanjem podatkov o vprašanju pri anketi %s je prišlo do napake",
+    13 => 'Ustvari anketo',
+    14 => 'shrani',
+    15 => 'prekliči',
+    16 => 'izbriši',
+    17 => 'Vnesi prosim ID ankete',
+    18 => 'Seznam anket',
+    19 => 'Za spreminjanje ali izbris ankete klikni na njeno ikono za urejanje. Za ustvarjenje nove ankete klikni na "Ustvari novo" zgoraj.',
+    20 => 'Glasovalci',
+    21 => 'Dostop zavrnjen',
+    22 => "Poskušaš dostopiti do ankete, za katero nimaš pravic. Ta poskus je bil zabeležen. Prosim <a href=\"{$_CONF['site_admin_url']}/poll.php\">pojdi nazaj na zaslon za upravljanje anket</a>.",
+    23 => 'Nova anketa',
+    24 => 'Upravnikova stran',
+    25 => 'Da',
+    26 => 'Ne',
+    27 => 'Uredi',
+    28 => 'Oddaj',
+    29 => 'Išči',
+    30 => 'Omeji rezultate',
+);
+
+$PLG_polls_MESSAGE19 = 'Tvoja anketa je uspešno shranjena.';
+$PLG_polls_MESSAGE20 = 'Tvoja anketa je uspešno izbrisana.';
+
+// Messages for the plugin upgrade
+$PLG_polls_MESSAGE3002 = $LANG32[9];
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/ukrainian_koi8-u.php 1.4.1.src/cpanel-glprivate/plugins/polls/language/ukrainian_koi8-u.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/ukrainian_koi8-u.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/language/ukrainian_koi8-u.php	2006-12-16 15:04:33.000000000 -0600
@@ -0,0 +1,95 @@
+<?php
+
+###############################################################################
+# ukrainian.php
+# This is the ukrainian language page for the Geeklog Polls Plug-in!
+#
+# Copyright (C) 2006 Vitaliy Biliyenko
+# v.lokki@gmail.com
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+
+$LANG_POLLS = array(
+    'polls'             => '',
+    'results'           => '',
+    'pollresults'       => ' ',
+    'votes'             => 'Ӧ',
+    'vote'              => '',
+    'pastpolls'         => '̦ ',
+    'savedvotetitle'    => ' ',
+    'savedvotemsg'      => '   Φ ',
+    'pollstitle'        => '  ͦ',
+    'pollquestions'     => ' ۦ ',
+    'stats_top10'       => '10 Φ ',
+    'stats_questions'   => ' ',
+    'stats_votes'       => 'Ӧ',
+    'stats_none'        => '  Ԧ  ,   Φ    .',
+    'stats_summary'     => ' (Ӧ)  ͦ',
+    'open_poll'         => '  '
+);
+
+###############################################################################
+# admin/plugins/polls/index.php
+
+$LANG25 = array(
+    1 => '',
+    2 => '-, Ħ      צצ.',
+    3 => ' ',
+    4 => " %s ",
+    5 => ' ',
+    6 => 'ID ',
+    7 => '(  ͦ)',
+    8 => '  Φ Ҧæ',
+    9 => '',
+    10 => 'צĦ / ',
+    11 => "     צצĦ  %s  ",
+    12 => "       %s  ",
+    13 => ' ',
+    14 => '',
+    15 => '',
+    16 => '',
+    17 => '-, Ħ ID ',
+    18 => ' ',
+    19 => ' ͦ   , Φ    .     , Ҧ " " Ҧ.',
+    20 => '',
+    21 => ' ',
+    22 => "     ,      .    . -, <a href=\"{$_CONF['site_admin_url']}/poll.php\">Φ  ͦΦ</a>.",
+    23 => ' ',
+    24 => 'ͦΦ',
+    25 => '',
+    26 => '',
+    27 => '',
+    28 => 'Ħ',
+    29 => '',
+    30 => ' ',
+);
+
+$PLG_polls_MESSAGE19 = '  Ц .';
+$PLG_polls_MESSAGE20 = '  Ц .';
+
+// Messages for the plugin upgrade
+$PLG_polls_MESSAGE3002 = $LANG32[9];
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/ukrainian.php 1.4.1.src/cpanel-glprivate/plugins/polls/language/ukrainian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/ukrainian.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/language/ukrainian.php	2006-12-16 15:04:25.000000000 -0600
@@ -4,7 +4,7 @@
 # ukrainian.php
 # This is the ukrainian language page for the Geeklog Polls Plug-in!
 #
-# Copyright (C) 2005 Vitaliy Biliyenko
+# Copyright (C) 2006 Vitaliy Biliyenko
 # v.lokki@gmail.com
 #
 # This program is free software; you can redistribute it and/or
@@ -87,5 +87,9 @@
 );
 
 $PLG_polls_MESSAGE19 = '   .';
+$PLG_polls_MESSAGE20 = '   .';
+
+// Messages for the plugin upgrade
+$PLG_polls_MESSAGE3002 = $LANG32[9];
 
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/ukrainian_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/polls/language/ukrainian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/language/ukrainian_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/language/ukrainian_utf-8.php	2006-12-16 15:04:44.000000000 -0600
@@ -0,0 +1,95 @@
+<?php
+
+###############################################################################
+# ukrainian.php
+# This is the ukrainian language page for the Geeklog Polls Plug-in!
+#
+# Copyright (C) 2006 Vitaliy Biliyenko
+# v.lokki@gmail.com
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+
+$LANG_POLLS = array(
+    'polls'             => 'Опитування',
+    'results'           => 'Результати',
+    'pollresults'       => 'Результати опитування',
+    'votes'             => 'голосів',
+    'vote'              => 'Голосувати',
+    'pastpolls'         => 'Минулі опитування',
+    'savedvotetitle'    => 'Голос збережено',
+    'savedvotemsg'      => 'Ваш голос у опитуванні враховано',
+    'pollstitle'        => 'Опитування в системі',
+    'pollquestions'     => 'Переглянути інші опитування',
+    'stats_top10'       => '10 найпопулярніших опитувань',
+    'stats_questions'   => 'Запитання опитування',
+    'stats_votes'       => 'Голосів',
+    'stats_none'        => 'На цьому сайті немає опитувань, або ще ніхто в них не голосував.',
+    'stats_summary'     => 'Опитувань (Голосів) у системі',
+    'open_poll'         => 'Відкритий для голосування'
+);
+
+###############################################################################
+# admin/plugins/polls/index.php
+
+$LANG25 = array(
+    1 => 'Режим',
+    2 => 'Будь-ласка, введіть запитання і хоча б одну відповідь.',
+    3 => 'Опитування створено',
+    4 => "Опитування %s збережено",
+    5 => 'Редагувати опитування',
+    6 => 'ID опитування',
+    7 => '(не використовувати проміжки)',
+    8 => 'Виводити на головній сторінці',
+    9 => 'Запитання',
+    10 => 'Відповіді / Голоси',
+    11 => "Під час видобування даних про відповіді опитування %s виникла помилка",
+    12 => "Під час видобування даних про запитання опитування %s виникла помилка",
+    13 => 'Створити опитування',
+    14 => 'зберегти',
+    15 => 'скасувати',
+    16 => 'вилучити',
+    17 => 'Будь-ласка, введіть ID опитування',
+    18 => 'Список опитувань',
+    19 => 'Щоб змінити чи вилучити опитування, натисніть його іконку редагування нижче.  Щоб створити нове опитування, оберіть "Створити нове" вгорі.',
+    20 => 'Проголосувало',
+    21 => 'Доступ заборонено',
+    22 => "Ви намагались отримати доступ до опитування, до якого у вас немає прав.  Цю спробу записано. Будь-ласка, <a href=\"{$_CONF['site_admin_url']}/poll.php\">поверніться до адміністрування</a>.",
+    23 => 'Нове опитування',
+    24 => 'Адміністрування',
+    25 => 'Так',
+    26 => 'Ні',
+    27 => 'Редагувати',
+    28 => 'Надіслати',
+    29 => 'Пошук',
+    30 => 'Обмежити результати',
+);
+
+$PLG_polls_MESSAGE19 = 'Ваше опитування успішно збережено.';
+$PLG_polls_MESSAGE20 = 'Ваше опитування успішно вилучено.';
+
+// Messages for the plugin upgrade
+$PLG_polls_MESSAGE3002 = $LANG32[9];
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/sql/install.php 1.4.1.src/cpanel-glprivate/plugins/polls/sql/install.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/sql/install.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/sql/install.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,90 +0,0 @@
-<?php
-
-/* Reminder: always indent with 4 spaces (no tabs). */
-// +---------------------------------------------------------------------------+
-// | Polls Plugin 1.0                                                          |
-// +---------------------------------------------------------------------------+
-// | Installation SQL                                                          |
-// +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
-// |                                                                           |
-// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
-// |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
-// |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
-// |          Dirk Haun         - dirk AT haun-online DOT de                   |
-// |          Trinity Bays      - trinity AT steubentech DOT com               |
-// +---------------------------------------------------------------------------+
-// |                                                                           |
-// | This program is licensed under the terms of the GNU General Public License|
-// | as published by the Free Software Foundation; either version 2            |
-// | of the License, or (at your option) any later version.                    |
-// |                                                                           |
-// | This program is distributed in the hope that it will be useful,           |
-// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
-// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                      |
-// | See the GNU General Public License for more details.                      |
-// |                                                                           |
-// | You should have received a copy of the GNU General Public License         |
-// | along with this program; if not, write to the Free Software Foundation,   |
-// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
-// |                                                                           |
-// +---------------------------------------------------------------------------+
-//
-// $Id: install.php,v 1.1 2005/11/13 13:46:06 dhaun Exp $
-
-$_SQL[] = "
-CREATE TABLE {$_TABLES['pollanswers']} (
-  qid varchar(20) NOT NULL default '',
-  aid tinyint(3) unsigned NOT NULL default '0',
-  answer varchar(255) default NULL,
-  votes mediumint(8) unsigned default NULL,
-  PRIMARY KEY  (qid,aid)
-) TYPE=MyISAM
-";
-
-$_SQL[] = "
-CREATE TABLE {$_TABLES['pollquestions']} (
-  qid varchar(20) NOT NULL default '',
-  question varchar(255) default NULL,
-  voters mediumint(8) unsigned default NULL,
-  date datetime default NULL,
-  display tinyint(4) NOT NULL default '0',
-  commentcode tinyint(4) NOT NULL default '0',
-  statuscode tinyint(4) NOT NULL default '0',
-  owner_id mediumint(8) unsigned NOT NULL default '1',
-  group_id mediumint(8) unsigned NOT NULL default '1',
-  perm_owner tinyint(1) unsigned NOT NULL default '3',
-  perm_group tinyint(1) unsigned NOT NULL default '2',
-  perm_members tinyint(1) unsigned NOT NULL default '2',
-  perm_anon tinyint(1) unsigned NOT NULL default '2',
-  INDEX pollquestions_qid(qid),
-  INDEX pollquestions_date(date),
-  INDEX pollquestions_display(display),
-  INDEX pollquestions_commentcode(commentcode),
-  INDEX pollquestions_statuscode(statuscode),
-  PRIMARY KEY  (qid)
-) TYPE=MyISAM
-";
-
-$_SQL[] = "
-CREATE TABLE {$_TABLES['pollvoters']} (
-  id int(10) unsigned NOT NULL auto_increment,
-  qid varchar(20) NOT NULL default '',
-  ipaddress varchar(15) NOT NULL default '',
-  date int(10) unsigned default NULL,
-  PRIMARY KEY  (id)
-) TYPE=MyISAM
-";
-
-$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',1,'Trackbacks',0) ";
-$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',2,'Links and Polls plugins',0) ";
-$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',3,'Revamped admin areas',0) ";
-$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',4,'FCKeditor included',0) ";
-$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',5,'Remote user authentication',0) ";
-$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',6,'Other',0) ";
-
-// Note: The 'pollquestion' entry for the above answers is in the install script
-
-$_SQL[] = "INSERT INTO {$_TABLES['blocks']} (is_enabled, name, type, title, tid, blockorder, content, onleft, phpblockfn, owner_id, group_id, perm_owner, perm_group) VALUES (1,'polls_block','phpblock','Poll','all',30,'',0,'phpblock_polls',{$_USER['uid']},1,3,3)";
-
-?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/sql/mssql_install.php 1.4.1.src/cpanel-glprivate/plugins/polls/sql/mssql_install.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/sql/mssql_install.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/sql/mssql_install.php	2006-09-06 00:31:00.000000000 -0500
@@ -0,0 +1,113 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Polls Plugin 1.0                                                          |
+// +---------------------------------------------------------------------------+
+// | Installation SQL                                                          |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2000-2006 by the following authors:                         |
+// |                                                                           |
+// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
+// |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
+// |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
+// |          Dirk Haun         - dirk AT haun-online DOT de                   |
+// |          Trinity Bays      - trinity AT steubentech DOT com               |
+// |          Randy Kolenko     - randy AT nextide DOT ca                      |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is licensed under the terms of the GNU General Public License|
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                      |
+// | See the GNU General Public License for more details.                      |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['pollanswers']}] (
+    [qid] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [aid] [tinyint] NOT NULL ,
+    [answer] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [votes] [numeric](8, 0) NULL ,
+    [remark] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['pollquestions']}] (
+    [qid] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [question] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [voters] [numeric](8, 0) NULL ,
+    [date] [datetime] NULL ,
+    [display] [smallint] NOT NULL ,
+    [commentcode] [smallint] NOT NULL ,
+    [statuscode] [smallint] NOT NULL ,
+    [owner_id] [numeric](8, 0) NOT NULL ,
+    [group_id] [numeric](8, 0) NOT NULL ,
+    [perm_owner] [tinyint] NOT NULL ,
+    [perm_group] [tinyint] NOT NULL ,
+    [perm_members] [tinyint]  NULL ,
+    [perm_anon] [tinyint]  NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['pollvoters']}] (
+    [id] [numeric](10, 0) IDENTITY (1, 1) NOT NULL ,
+    [qid] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [ipaddress] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [date] [numeric](10, 0) NULL
+) ON [PRIMARY]
+";
+
+
+
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['pollanswers']}] ADD
+    CONSTRAINT [PK_gl_pollanswers] PRIMARY KEY  CLUSTERED
+    (
+        [qid],
+        [aid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['pollquestions']}] ADD
+    CONSTRAINT [PK_gl_pollquestions] PRIMARY KEY  CLUSTERED
+    (
+        [qid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['pollvoters']}] ADD
+    CONSTRAINT [PK_gl_pollvoters] PRIMARY KEY  CLUSTERED
+    (
+        [id]
+    )  ON [PRIMARY]
+";
+
+
+
+
+$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',1,'Trackbacks',0)";
+$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',2,'Links and Polls plugins',0)";
+$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',3,'Revamped admin areas',0)";
+$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',4,'FCKeditor included',0)";
+$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',5,'Remote user authentication',0)";
+$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',6,'Other',0)";
+
+$_SQL[] = "INSERT INTO {$_TABLES['blocks']} (is_enabled, name, type, title, tid, blockorder, content, onleft, phpblockfn, owner_id, group_id, perm_owner, perm_group) VALUES (1,'polls_block','phpblock','Poll','all',30,'',0,'phpblock_polls',{$_USER['uid']},#group#,3,3)";
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/sql/mysql_install.php 1.4.1.src/cpanel-glprivate/plugins/polls/sql/mysql_install.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/sql/mysql_install.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/sql/mysql_install.php	2006-08-19 13:51:48.000000000 -0500
@@ -0,0 +1,91 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Polls Plugin 1.0                                                          |
+// +---------------------------------------------------------------------------+
+// | Installation SQL                                                          |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2000-2006 by the following authors:                         |
+// |                                                                           |
+// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
+// |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
+// |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
+// |          Dirk Haun         - dirk AT haun-online DOT de                   |
+// |          Trinity Bays      - trinity AT steubentech DOT com               |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is licensed under the terms of the GNU General Public License|
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                      |
+// | See the GNU General Public License for more details.                      |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+// $Id: mysql_install.php,v 1.1 2006/08/19 18:51:48 dhaun Exp $
+
+$_SQL[] = "
+CREATE TABLE {$_TABLES['pollanswers']} (
+  qid varchar(20) NOT NULL default '',
+  aid tinyint(3) unsigned NOT NULL default '0',
+  answer varchar(255) default NULL,
+  votes mediumint(8) unsigned default NULL,
+  remark varchar(255) NULL,
+  PRIMARY KEY  (qid,aid)
+) TYPE=MyISAM
+";
+
+$_SQL[] = "
+CREATE TABLE {$_TABLES['pollquestions']} (
+  qid varchar(20) NOT NULL default '',
+  question varchar(255) default NULL,
+  voters mediumint(8) unsigned default NULL,
+  date datetime default NULL,
+  display tinyint(4) NOT NULL default '0',
+  commentcode tinyint(4) NOT NULL default '0',
+  statuscode tinyint(4) NOT NULL default '0',
+  owner_id mediumint(8) unsigned NOT NULL default '1',
+  group_id mediumint(8) unsigned NOT NULL default '1',
+  perm_owner tinyint(1) unsigned NOT NULL default '3',
+  perm_group tinyint(1) unsigned NOT NULL default '2',
+  perm_members tinyint(1) unsigned NOT NULL default '2',
+  perm_anon tinyint(1) unsigned NOT NULL default '2',
+  INDEX pollquestions_qid(qid),
+  INDEX pollquestions_date(date),
+  INDEX pollquestions_display(display),
+  INDEX pollquestions_commentcode(commentcode),
+  INDEX pollquestions_statuscode(statuscode),
+  PRIMARY KEY  (qid)
+) TYPE=MyISAM
+";
+
+$_SQL[] = "
+CREATE TABLE {$_TABLES['pollvoters']} (
+  id int(10) unsigned NOT NULL auto_increment,
+  qid varchar(20) NOT NULL default '',
+  ipaddress varchar(15) NOT NULL default '',
+  date int(10) unsigned default NULL,
+  PRIMARY KEY  (id)
+) TYPE=MyISAM
+";
+
+$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',1,'Trackbacks',0) ";
+$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',2,'Links and Polls plugins',0) ";
+$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',3,'Revamped admin areas',0) ";
+$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',4,'FCKeditor included',0) ";
+$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',5,'Remote user authentication',0) ";
+$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',6,'Other',0) ";
+
+// Note: The 'pollquestion' entry for the above answers is in the install script
+
+$_SQL[] = "INSERT INTO {$_TABLES['blocks']} (is_enabled, name, type, title, tid, blockorder, content, onleft, phpblockfn, owner_id, group_id, perm_owner, perm_group) VALUES (1,'polls_block','phpblock','Poll','all',30,'',0,'phpblock_polls',{$_USER['uid']},#group#,3,3)";
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/templates/admin/pollansweroption.thtml 1.4.1.src/cpanel-glprivate/plugins/polls/templates/admin/pollansweroption.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/templates/admin/pollansweroption.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/templates/admin/pollansweroption.thtml	2006-05-20 09:59:22.000000000 -0500
@@ -1 +1 @@
-<input type="text" name="answer[]" value="{answer_text}" size="30" maxlength="255"> / <input type="text" name="votes[]" value="{answer_votes}" size="5"><BR>
+<input type="text" name="answer[]" value="{answer_text}" size="30" maxlength="255"> / <input type="text" name="votes[]" value="{answer_votes}" size="5"> / <input type="text" name="remark[]" value="{remark_text}" size="50" maxlength="255" style="margin-bottom:4px"><br>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/templates/admin/polleditor.thtml 1.4.1.src/cpanel-glprivate/plugins/polls/templates/admin/polleditor.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/templates/admin/polleditor.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/templates/admin/polleditor.thtml	2006-05-20 09:59:22.000000000 -0500
@@ -27,7 +27,7 @@
                                             <td align="right" valign="top">{lang_answersvotes}:</td>
                                             <td>
                                                 {answer_option}
-                                                <input type="text" name="answer[]" value="{answer_text}" size="30" maxlength="255"> / <input type="text" name="votes[]" value="{answer_votes}" size="5"><BR>
+                                                <input type="text" name="answer[]" value="{answer_text}" size="30" maxlength="255"> / <input type="text" name="votes[]" value="{answer_votes}" size="5"> / <input type="text" name="remark[]" value="{remark_text}" size="50" maxlength="255">
                                             </td>
                                         </tr>
                                         <tr>
@@ -38,7 +38,7 @@
                                         </tr>
                                         <tr>
                                             <td align="right">{lang_owner}:</td>
-                                            <td>{owner_username}<input type="hidden" name="owner_id" value="{owner_id}"></td>
+                                            <td>{owner_name}<input type="hidden" name="owner_id" value="{owner_id}"></td>
                                         </tr>
                                         <tr>
                                             <td align="right">{lang_group}:</td>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/templates/pollblock.thtml 1.4.1.src/cpanel-glprivate/plugins/polls/templates/pollblock.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/templates/pollblock.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/templates/pollblock.thtml	2006-10-14 11:59:53.000000000 -0500
@@ -5,4 +5,4 @@
   <input type="submit" value="{lang_vote}">
   <a href="{poll_results_url}">{lang_results}</a>
 </form>
-<span class="block-vote">{num_votes} {lang_votes}{poll_comments}</span><br>
+<span class="poll-vote">{num_votes} {lang_votes}{poll_comments}</span><br>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/templates/pollresult.thtml 1.4.1.src/cpanel-glprivate/plugins/polls/templates/pollresult.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/templates/pollresult.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/templates/pollresult.thtml	2006-10-14 11:59:53.000000000 -0500
@@ -2,5 +2,5 @@
 <table border="0" cellpadding="3" cellspacing="0" align="center">
 {poll_votes}
 </table>
-<div class="block-vote-results" align="left"><br><a href="{site_url}/polls/index.php">{lang_pollquestions}</a></div>
-<div class="block-vote-results" align="right">{num_votes} {lang_votes} {poll_comments}</div>
\ No newline at end of file
+<div class="poll-vote-results" align="left"><br><a href="{site_url}/polls/index.php">{lang_pollquestions}</a></div>
+<div class="poll-vote-results" align="right">{num_votes} {lang_votes} {poll_comments}</div>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/templates/pollvotes_bar.thtml 1.4.1.src/cpanel-glprivate/plugins/polls/templates/pollvotes_bar.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/polls/templates/pollvotes_bar.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/polls/templates/pollvotes_bar.thtml	2006-05-12 04:12:18.000000000 -0500
@@ -1,4 +1,7 @@
-<tr>
-  <td align="right"><b>{answer_text}</b></td>
+<tr class="pluginRow{cssidb}">
+  <td align="left"><b>{answer_text}</b></td>
   <td><img src="{layout_url}/images/bar.gif" width="{bar_width}" height="10" align="bottom" alt=""> {answer_num} ({answer_percent}%)</td>
 </tr>
+<tr class="pluginRow{cssida}">
+  <td align="left" colspan="2">&nbsp;&nbsp;{remark_text}</td>
+</tr>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/BlackList.Examine.class.php 1.4.1.src/cpanel-glprivate/plugins/spamx/BlackList.Examine.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/BlackList.Examine.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/BlackList.Examine.class.php	2006-12-10 03:56:39.000000000 -0600
@@ -2,14 +2,14 @@
 
 /**
  * File: BlackList.Examine.class.php
- * This is the Personal BlackList Examine class for the Geeklog Spam-X Plug-in!
+ * This is the Personal BlackList Examine class for the Geeklog Spam-X plugin
  * 
- * Copyright (C) 2004-2005 by the following authors:
- * Author		Tom Willett		tomw AT pigstye DOT net
+ * Copyright (C) 2004-2006 by the following authors:
+ * Author   Tom Willett     tomw AT pigstye DOT net
  * 
  * Licensed under GNU General Public License
  *
- * $Id: BlackList.Examine.class.php,v 1.10.2.1 2006/06/30 12:20:49 dhaun Exp $
+ * $Id: BlackList.Examine.class.php,v 1.12 2006/12/10 08:57:49 dhaun Exp $
  */
 
 if (strpos ($_SERVER['PHP_SELF'], 'BlackList.Examine.class.php') !== false) {
@@ -68,6 +68,7 @@
         $ans = 0;
         for ($i = 1; $i <= $nrows; $i++) {
             list ($val) = DB_fetchArray ($result);
+            $val = str_replace ('#', '\\#', $val);
             if (preg_match ("#$val#i", $comment)) {
                 $ans = 1; // quit on first positive match
                 SPAMX_log ($LANG_SX00['foundspam'] . $val .
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/config.php 1.4.1.src/cpanel-glprivate/plugins/spamx/config.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/config.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/config.php	2006-09-03 10:33:47.000000000 -0500
@@ -2,36 +2,20 @@
 
 /**
  * File: config.php
- * This is the config file for the Geeklog Spam-X Plug-in!
+ * This is the config file for the Geeklog Spam-X plugin
  * 
- * Copyright (C) 2004-2005 by the following authors:
+ * Copyright (C) 2004-2006 by the following authors:
  * Author		Tom Willett		tomw AT pigstye DOT net
  * 
  * Licensed under GNU General Public License
  *
- * $Id: config.php,v 1.13 2005/12/17 20:37:50 dhaun Exp $
+ * $Id: config.php,v 1.18 2006/09/03 15:33:47 dhaun Exp $
  */
 
-$_SPX_CONF['version'] = '1.0.3';
+$_SPX_CONF['version'] = '1.1.0';
 
 // Default Spam-X Action
-$_SPX_CONF['action'] = 128; // Default is ignore comment
-
-// NOTE: MT-Blacklist has been discontinued, i.e. the links to jayallen.org
-//       no longer work. For the time being, we provide a copy of the last
-//       version of MT-Blacklist on geeklog.net (see below) but there will be
-//       no more updates.
-//       Also see http://www.geeklog.net/article.php/mt-blacklist-discontinued
-
-// Entire MT-Blacklist (for inital import)
-$_SPX_CONF['mtblacklist_url'] = 'http://www.geeklog.net/backend/blacklist.txt';
-
-// URL blacklist changes RSS feed (no longer working - see above)
-$_SPX_CONF['rss_url'] = 'http://www.jayallen.org/comment_spam/feeds/blacklist-changes.rdf';
-
-// Spam-X URLs
-$_SPX_CONF['spamx_rss_url'] = 'http://www.pigstye.net/backend/spamx_users.rdf';
-$_SPX_CONF['spamx_submit_url'] = 'http://www.pigstye.net/gplugs/spamx/submit.php';
+$_SPX_CONF['action'] = 128; // Default is to ignore (delete) the post
 
 // address which mail admin module will use
 $_SPX_CONF['notification_email'] = $_CONF['site_mail'];
@@ -39,10 +23,18 @@
 // if set to = true, skip spam check for members of the "spamx Admin" group
 $_SPX_CONF['admin_override'] = false;
 
+// enable / disable logging to spamx.log
+$_SPX_CONF['logging'] = true;
+
+// timeout for contacting external services, e.g. SLV
+$_SPX_CONF['timeout'] = 5; // in seconds
+
+
+// DO NOT CHANGE THE STUFF BELOW UNLESS YOU KNOW WHAT YOU ARE DOING
+
 // This sets Spam-X Plugin Table Prefix the same as Geeklog
 $_SPX_table_prefix = $_DB_table_prefix;
 
-// DO NOT CHANGE THE STUFF BELOW UNLESS YOU KNOW WHAT YOU ARE DOING
 // Add Spam-X Plugin table to $_TABLES array
 $_TABLES['spamx'] = $_SPX_table_prefix . 'spamx';
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/DeleteComment.Action.class.php 1.4.1.src/cpanel-glprivate/plugins/spamx/DeleteComment.Action.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/DeleteComment.Action.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/DeleteComment.Action.class.php	2006-12-30 06:03:21.000000000 -0600
@@ -2,14 +2,14 @@
 
 /**
  * File: DeleteComment.Action.class.php
- * This is the Delete Comment Action  for the Geeklog Spam-X Plug-in!
+ * This is the Delete Comment Action  for the Geeklog Spam-X plugin
  * 
  * Copyright (C) 2004-2005 by the following authors:
- * Author		Tom Willett		tomw AT pigstye DOT net
+ * Author   Tom Willett     tomw AT pigstye DOT net
  * 
  * Licensed under GNU General Public License
  *
- * $Id: DeleteComment.Action.class.php,v 1.4.2.1 2006/06/30 12:20:49 dhaun Exp $
+ * $Id: DeleteComment.Action.class.php,v 1.6 2006/08/22 17:57:54 dhaun Exp $
  */
 
 if (strpos ($_SERVER['PHP_SELF'], 'DeleteComment.Action.class.php') !== false) {
@@ -44,11 +44,7 @@
         $result = 128;
 
         // update count of deleted spam posts
-        // Yes, there is the possibility of a race condition here. But it's
-        // only for statistical purposes anyway, nothing important ...
-        $counter = DB_getItem ($_TABLES['vars'], 'value', "name = 'spamx.counter'");
-        $counter++;
-        DB_query ("UPDATE {$_TABLES['vars']} SET value = $counter WHERE name = 'spamx.counter'");
+        DB_change ($_TABLES['vars'], 'value', 'value + 1', 'name', 'spamx.counter', '', true);
 
         SPAMX_log($LANG_SX00['spamdeleted']);
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/EditBlackList.Admin.class.php 1.4.1.src/cpanel-glprivate/plugins/spamx/EditBlackList.Admin.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/EditBlackList.Admin.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/EditBlackList.Admin.class.php	2006-09-02 09:23:33.000000000 -0500
@@ -2,14 +2,15 @@
 
 /**
  * File: EditBlackList.Admin.class.php
- * This is the Edit Personal Blacklist Module for the Geeklog Spam-X Plug-in!
- * 
- * Copyright (C) 2004-2005 by the following authors:
- * Author		Tom Willett		tomw AT pigstye DOT net
- * 
+ * This is the Edit Personal Blacklist Module for the Geeklog Spam-X plugin
+ *
+ * Copyright (C) 2004-2006 by the following authors:
+ * Author   Tom Willett     tomw AT pigstye DOT net
+ *          Dirk Haun       dirk AT haun-online DOT de
+ *
  * Licensed under GNU General Public License
  *
- * $Id: EditBlackList.Admin.class.php,v 1.4.2.1 2006/06/30 12:20:49 dhaun Exp $
+ * $Id: EditBlackList.Admin.class.php,v 1.7 2006/09/02 14:23:33 dhaun Exp $
  */
 
 if (strpos ($_SERVER['PHP_SELF'], 'EditBlackList.Admin.class.php') !== false) {
@@ -20,7 +21,7 @@
  * Personal Black List Editor
  */
 
-require_once($_CONF['path'] . 'plugins/spamx/BaseAdmin.class.php');
+require_once ($_CONF['path'] . 'plugins/spamx/BaseAdmin.class.php');
 
 class EditBlackList extends BaseAdmin {
     /**
@@ -28,57 +29,63 @@
      */
     function display()
     {
-        global $_CONF, $_GET, $_POST, $_TABLES, $LANG_SX00;
+        global $_CONF, $_TABLES, $LANG_SX00;
 
-        require_once $_CONF['path'] . 'plugins/spamx/rss.inc.php';
-
-        $action = COM_applyFilter($_GET['action']);
-        if (empty($action)) {
-            $action = COM_applyFilter($_POST['paction']);
+        $action = '';
+        if (isset ($_GET['action'])) {
+            $action = COM_applyFilter ($_GET['action']);
+        } else if (isset ($_POST['paction'])) {
+            $action = COM_applyFilter ($_POST['paction']);
         } 
 
-        $entry = COM_applyFilter($_GET['entry']);
-        if (empty($entry)) {
-            $entry = COM_applyFilter($_POST['pentry']);
-        } 
+        $entry = '';
+        if (isset ($_GET['entry'])) {
+            $entry = COM_stripslashes ($_GET['entry']);
+        } else if (isset ($_POST['pentry'])) {
+            $entry = COM_stripslashes ($_POST['pentry']);
+        }
 
         if ($action == 'delete') {
-            $result = DB_query('DELETE FROM ' . $_TABLES['spamx'] . ' where name="Personal" AND value="' . $entry . '"');
+            $entry = addslashes ($entry);
+            $result = DB_query ("DELETE FROM {$_TABLES['spamx']} WHERE name = 'Personal' AND value = '$entry'");
         } elseif ($action == $LANG_SX00['addentry']) {
-            if ($entry != "") {
-                $result = DB_query('INSERT INTO ' . $_TABLES['spamx'] . ' VALUES ("Personal","' . $entry . '")');
-            } 
+            if (!empty ($entry)) {
+                $entry = addslashes ($entry);
+                $result = DB_query ("INSERT INTO {$_TABLES['spamx']} VALUES ('Personal', '$entry')");
+            }
         } elseif ($action == $LANG_SX00['addcen']) {
-            foreach($_CONF['censorlist'] as $entry) {
-                $result = DB_query('INSERT INTO ' . $_TABLES['spamx'] . ' VALUES ("Personal","' . $entry . '")');
-            } 
-        } 
+            foreach ($_CONF['censorlist'] as $entry) {
+                $entry = addslashes ($entry);
+                $result = DB_query ("INSERT INTO {$_TABLES['spamx']} VALUES ('Personal', '$entry')");
+            }
+        }
 
-        $display = '<hr><p><b>';
+        $display = '<hr>' . LB . '<p><b>';
         $display .= $LANG_SX00['pblack'];
-        $display .= '</b></p><ul>';
-        $result = DB_query('SELECT * FROM ' . $_TABLES['spamx'] . ' WHERE name="Personal"');
-        $nrows = DB_numRows($result);
-        for($i = 1;$i <= $nrows;$i++) {
-            $A = DB_fetchArray($result);
+        $display .= '</b></p>' . LB . '<ul>' . LB;
+        $result = DB_query ("SELECT value FROM {$_TABLES['spamx']} WHERE name = 'Personal'");
+        $nrows = DB_numRows ($result);
+        for ($i = 0; $i < $nrows; $i++) {
+            $A = DB_fetchArray ($result);
             $e = $A['value'];
-            $display .= '<li><a href="' . $_CONF['site_admin_url'] . '/plugins/spamx/index.php?command=EditBlackList&action=delete&entry=' . urlencode($e) . '">' . $e . '</a></li>';
+            $display .= '<li><a href="' . $_CONF['site_admin_url'] . '/plugins/spamx/index.php?command=EditBlackList&amp;action=delete&amp;entry=' . urlencode ($e) . '">' . htmlspecialchars ($e) . '</a></li>' . LB;
         } 
-        $display .= '</ul><p>' . $LANG_SX00['e1'] . '</p>';
-        $display .= '<p>' . $LANG_SX00['e2'] . '</p>';
-        $display .= '<form method="post" action="' . $_CONF['site_admin_url'] . '/plugins/spamx/index.php?command=EditBlackList">';
-        $display .= '<input type="text" size ="30" name="pentry">&nbsp;&nbsp;&nbsp;';
-        $display .= '<input type="Submit" name="paction" value="' . $LANG_SX00['addentry'] . '">';
+        $display .= '</ul>' . LB . '<p>' . $LANG_SX00['e1'] . '</p>' . LB;
+        $display .= '<p>' . $LANG_SX00['e2'] . '</p>' . LB;
+        $display .= '<form method="POST" action="' . $_CONF['site_admin_url'] . '/plugins/spamx/index.php?command=EditBlackList">' . LB;
+        $display .= '<input type="text" size="30" name="pentry">&nbsp;&nbsp;&nbsp;';
+        $display .= '<input type="submit" name="paction" value="' . $LANG_SX00['addentry'] . '">' . LB;
         $display .= '<p>' . $LANG_SX00['e3'] . '&nbsp&nbsp&nbsp';
-        $display .= '<input type = "Submit" name="paction" value="' . $LANG_SX00['addcen'] . '">';
-        $display .= '</form>';
+        $display .= '<input type="submit" name="paction" value="' . $LANG_SX00['addcen'] . '">' . LB;
+        $display .= '</form>' . LB;
+
         return $display;
-    } 
+    }
 
     function link()
     {
-        return "Edit Personal Blacklist";
-    } 
-} 
+        return 'Edit Personal Blacklist';
+    }
+}
 
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/EditHeader.Admin.class.php 1.4.1.src/cpanel-glprivate/plugins/spamx/EditHeader.Admin.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/EditHeader.Admin.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/EditHeader.Admin.class.php	2006-08-20 11:42:32.000000000 -0500
@@ -2,16 +2,16 @@
 
 /**
 * File: EditHeader.Admin.class.php
-* This is the Edit HTTP Header Module for the Geeklog Spam-X Plug-in!
+* This is the Edit HTTP Header Module for the Geeklog Spam-X plugin
 *
-* Copyright (C) 2005 by the following authors:
+* Copyright (C) 2005-2006 by the following authors:
 * Author    Dirk Haun <dirk AT haun-online DOT de>
 *
 * based on the works of Tom Willett <tomw AT pigstye DOT net>
 *
 * Licensed under GNU General Public License
 *
-* $Id: EditHeader.Admin.class.php,v 1.3.2.1 2006/06/30 12:20:49 dhaun Exp $
+* $Id: EditHeader.Admin.class.php,v 1.5 2006/08/20 16:42:32 dhaun Exp $
 */
 
 if (strpos ($_SERVER['PHP_SELF'], 'EditHeader.Admin.class.php') !== false) {
@@ -30,12 +30,14 @@
      */
     function display()
     {
-        global $_CONF, $_GET, $_POST, $_TABLES, $LANG_SX00;
+        global $_CONF, $_TABLES, $LANG_SX00;
 
-        $action = COM_applyFilter ($_GET['action']);
-        if (empty ($action)) {
+        $action = '';
+        if (isset ($_GET['action'])) {
+            $action = COM_applyFilter ($_GET['action']);
+        } else if (isset ($_POST['paction'])) {
             $action = COM_applyFilter ($_POST['paction']);
-        }
+        } 
 
         if ($action == 'delete') {
             $entry = $_GET['entry'];
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/EditIP.Admin.class.php 1.4.1.src/cpanel-glprivate/plugins/spamx/EditIP.Admin.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/EditIP.Admin.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/EditIP.Admin.class.php	2006-09-02 09:22:26.000000000 -0500
@@ -2,14 +2,15 @@
 
 /**
 * File: EditIP.Admin.class.php
-* This is the Edit IPBlacklist Module for the Geeklog Spam-X Plug-in!
+* This is the Edit IPBlacklist Module for the Geeklog Spam-X plugin
 *
-* Copyright (C) 2004-2005 by the following authors:
-* Author        Tom Willett        tomw AT pigstye DOT net
+* Copyright (C) 2004-2006 by the following authors:
+* Author   Tom Willett     tomw AT pigstye DOT net
+*          Dirk Haun       dirk AT haun-online DOT de
 *
 * Licensed under GNU General Public License
 *
-* $Id: EditIP.Admin.class.php,v 1.2.4.1 2006/06/30 12:20:49 dhaun Exp $
+* $Id: EditIP.Admin.class.php,v 1.5 2006/09/02 14:22:26 dhaun Exp $
 */
 
 if (strpos ($_SERVER['PHP_SELF'], 'EditIP.Admin.class.php') !== false) {
@@ -17,10 +18,10 @@
 }
 
 /**
-* Personal Black List Editor
+* IP Black List Editor
 */
 
-require_once($_CONF['path'] . 'plugins/spamx/BaseAdmin.class.php');
+require_once ($_CONF['path'] . 'plugins/spamx/BaseAdmin.class.php');
 
 class EditIP extends BaseAdmin {
     /**
@@ -28,53 +29,54 @@
      */
     function display()
     {
-        global $_CONF, $_GET, $_POST, $_TABLES, $LANG_SX00;
+        global $_CONF, $_TABLES, $LANG_SX00;
 
-        require_once $_CONF['path'] . 'plugins/spamx/rss.inc.php';
-
-        $action = COM_applyFilter($_GET['action']);
-        if (empty($action)) {
-            $action = COM_applyFilter($_POST['paction']);
-        }
-
-        $entry = COM_applyFilter($_GET['entry']);
-        if (empty($entry)) {
-            $entry = COM_applyFilter($_POST['pentry']);
+        $action = '';
+        if (isset ($_GET['action'])) {
+            $action = COM_applyFilter ($_GET['action']);
+        } else if (isset ($_POST['paction'])) {
+            $action = COM_applyFilter ($_POST['paction']);
+        } 
+
+        $entry = '';
+        if (isset ($_GET['entry'])) {
+            $entry = COM_stripslashes ($_GET['entry']);
+        } else if (isset ($_POST['pentry'])) {
+            $entry = COM_stripslashes ($_POST['pentry']);
         }
 
         if ($action == 'delete') {
-            $result = DB_query('DELETE FROM ' . $_TABLES['spamx'] . ' where name="IP" AND value="' . $entry . '"');
+            $entry = addslashes ($entry);
+            $result = DB_query ("DELETE FROM {$_TABLES['spamx']} WHERE name = 'IP' AND value = '$entry'");
         } elseif ($action == $LANG_SX00['addentry']) {
-            if ($entry != "") {
-                $result = DB_query('INSERT INTO ' . $_TABLES['spamx'] . ' VALUES ("IP","' . $entry . '")');
-            }
-        } elseif ($action == $LANG_SX00['addcen']) {
-            foreach($_CONF['censorlist'] as $entry) {
-                $result = DB_query('INSERT INTO ' . $_TABLES['spamx'] . ' VALUES ("IP","' . $entry . '")');
+            if (!empty ($entry)) {
+                $entry = addslashes ($entry);
+                $result = DB_query ("INSERT INTO {$_TABLES['spamx']} VALUES ('IP', '$entry')");
             }
         }
 
-        $display = '<hr><p><b>';
+        $display = '<hr>' . LB . '<p><b>';
         $display .= $LANG_SX00['ipblack'];
-        $display .= '</b></p><ul>';
-        $result = DB_query ('SELECT value FROM ' . $_TABLES['spamx'] . ' WHERE name="IP"');
-        $nrows = DB_numRows($result);
+        $display .= '</b></p>' . LB . '<ul>' . LB;
+        $result = DB_query ("SELECT value FROM {$_TABLES['spamx']} WHERE name = 'IP'");
+        $nrows = DB_numRows ($result);
         for ($i = 0; $i < $nrows; $i++) {
             list($e) = DB_fetchArray ($result);
-            $display .= '<li><a href="' . $_CONF['site_admin_url'] . '/plugins/spamx/index.php?command=EditIP&action=delete&entry=' . urlencode($e) . '">' . $e . '</a></li>';
+            $display .= '<li><a href="' . $_CONF['site_admin_url'] . '/plugins/spamx/index.php?command=EditIP&amp;action=delete&amp;entry=' . urlencode ($e) . '">' . htmlspecialchars ($e) . '</a></li>' . LB;
         }
-        $display .= '</ul><p>' . $LANG_SX00['e1'] . '</p>';
-        $display .= '<p>' . $LANG_SX00['e2'] . '</p>';
-        $display .= '<form method="post" action="' . $_CONF['site_admin_url'] . '/plugins/spamx/index.php?command=EditIP">';
+        $display .= '</ul>' . LB . '<p>' . $LANG_SX00['e1'] . '</p>' . LB;
+        $display .= '<p>' . $LANG_SX00['e2'] . '</p>' . LB;
+        $display .= '<form method="POST" action="' . $_CONF['site_admin_url'] . '/plugins/spamx/index.php?command=EditIP">' . LB;
         $display .= '<input type="text" size ="30" name="pentry">&nbsp;&nbsp;&nbsp;';
-        $display .= '<input type="submit" name="paction" value="' . $LANG_SX00['addentry'] . '">';
-        $display .= '</form>';
+        $display .= '<input type="submit" name="paction" value="' . $LANG_SX00['addentry'] . '">' . LB;
+        $display .= '</form>' . LB;
+
         return $display;
     }
 
     function link()
     {
-        return "Edit IP Blacklist";
+        return 'Edit IP Blacklist';
     }
 }
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/EditIPofURL.Admin.class.php 1.4.1.src/cpanel-glprivate/plugins/spamx/EditIPofURL.Admin.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/EditIPofURL.Admin.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/EditIPofURL.Admin.class.php	2006-09-02 09:22:26.000000000 -0500
@@ -1,15 +1,16 @@
 <?php
 
 /**
-* File: EditIP.Admin.class.php
-* This is the Edit IPBlacklist Module for the Geeklog Spam-X Plug-in!
+* File: EditIPofURL.Admin.class.php
+* This is the Edit IPBlacklist Module for the Geeklog Spam-X plugin
 *
-* Copyright (C) 2004-2005 by the following authors:
-* Author        Tom Willett        tomw AT pigstye DOT net
+* Copyright (C) 2004-2006 by the following authors:
+* Author    Tom Willett     tomw AT pigstye DOT net
+*           Dirk Haun       dirk AT haun-online DOT de
 *
 * Licensed under GNU General Public License
 *
-* $Id: EditIPofURL.Admin.class.php,v 1.2.4.1 2006/06/30 12:20:49 dhaun Exp $
+* $Id: EditIPofURL.Admin.class.php,v 1.5 2006/09/02 14:22:26 dhaun Exp $
 */
 
 if (strpos ($_SERVER['PHP_SELF'], 'EditIPofURL.Admin.class.php') !== false) {
@@ -17,10 +18,10 @@
 }
 
 /**
-* Personal Black List Editor
+* IP of URL Black List Editor
 */
 
-require_once($_CONF['path'] . 'plugins/spamx/BaseAdmin.class.php');
+require_once ($_CONF['path'] . 'plugins/spamx/BaseAdmin.class.php');
 
 class EditIPofUrl extends BaseAdmin {
     /**
@@ -28,53 +29,54 @@
      */
     function display()
     {
-        global $_CONF, $_GET, $_POST, $_TABLES, $LANG_SX00;
+        global $_CONF, $_TABLES, $LANG_SX00;
 
-        require_once $_CONF['path'] . 'plugins/spamx/rss.inc.php';
-
-        $action = COM_applyFilter($_GET['action']);
-        if (empty($action)) {
-            $action = COM_applyFilter($_POST['paction']);
-        }
-
-        $entry = COM_applyFilter($_GET['entry']);
-        if (empty($entry)) {
-            $entry = COM_applyFilter($_POST['pentry']);
+        $action = '';
+        if (isset ($_GET['action'])) {
+            $action = COM_applyFilter ($_GET['action']);
+        } else if (isset ($_POST['paction'])) {
+            $action = COM_applyFilter ($_POST['paction']);
+        } 
+
+        $entry = '';
+        if (isset ($_GET['entry'])) {
+            $entry = COM_stripslashes ($_GET['entry']);
+        } else if (isset ($_POST['pentry'])) {
+            $entry = COM_stripslashes ($_POST['pentry']);
         }
 
         if ($action == 'delete') {
-            $result = DB_query('DELETE FROM ' . $_TABLES['spamx'] . ' where name="IPofUrl" AND value="' . $entry . '"');
+            $entry = addslashes ($entry);
+            $result = DB_query ("DELETE FROM {$_TABLES['spamx']} WHERE name = 'IPofUrl' AND value = '$entry'");
         } elseif ($action == $LANG_SX00['addentry']) {
-            if ($entry != "") {
-                $result = DB_query('INSERT INTO ' . $_TABLES['spamx'] . ' VALUES ("IPofUrl","' . $entry . '")');
-            }
-        } elseif ($action == $LANG_SX00['addcen']) {
-            foreach($_CONF['censorlist'] as $entry) {
-                $result = DB_query('INSERT INTO ' . $_TABLES['spamx'] . ' VALUES ("IPofUrl","' . $entry . '")');
+            if (!empty ($entry)) {
+                $entry = addslashes ($entry);
+                $result = DB_query ("INSERT INTO {$_TABLES['spamx']} VALUES ('IPofUrl', '$entry')");
             }
         }
 
-        $display = '<hr><p><b>';
+        $display = '<hr>' . LB . '<p><b>';
         $display .= $LANG_SX00['ipofurlblack'];
-        $display .= '</b></p><ul>';
-        $result = DB_query('SELECT value FROM ' . $_TABLES['spamx'] . ' WHERE name="IPofUrl"');
-        $nrows = DB_numRows($result);
+        $display .= '</b></p>' . LB . '<ul>' . LB;
+        $result = DB_query ("SELECT value FROM {$_TABLES['spamx']} WHERE name = 'IPofUrl'");
+        $nrows = DB_numRows ($result);
         for ($i = 0; $i < $nrows; $i++) {
             list($e) = DB_fetchArray ($result);
-            $display .= '<li><a href="' . $_CONF['site_admin_url'] . '/plugins/spamx/index.php?command=EditIPofUrl&action=delete&entry=' . urlencode($e) . '">' . $e . '</a></li>';
+            $display .= '<li><a href="' . $_CONF['site_admin_url'] . '/plugins/spamx/index.php?command=EditIPofUrl&amp;action=delete&amp;entry=' . urlencode ($e) . '">' . htmlspecialchars ($e) . '</a></li>' . LB;
         }
-        $display .= '</ul><p>' . $LANG_SX00['e1'] . '</p>';
-        $display .= '<p>' . $LANG_SX00['e2'] . '</p>';
-        $display .= '<form method="post" action="' . $_CONF['site_admin_url'] . '/plugins/spamx/index.php?command=EditIPofUrl">';
+        $display .= '</ul>' . LB . '<p>' . $LANG_SX00['e1'] . '</p>' . LB;
+        $display .= '<p>' . $LANG_SX00['e2'] . '</p>' . LB;
+        $display .= '<form method="POST" action="' . $_CONF['site_admin_url'] . '/plugins/spamx/index.php?command=EditIPofUrl">';
         $display .= '<input type="text" size ="30" name="pentry">&nbsp;&nbsp;&nbsp;';
-        $display .= '<input type="submit" name="paction" value="' . $LANG_SX00['addentry'] . '">';
-        $display .= '</form>';
+        $display .= '<input type="submit" name="paction" value="' . $LANG_SX00['addentry'] . '">' . LB;
+        $display .= '</form>' . LB;
+
         return $display;
     }
 
     function link()
     {
-        return "Edit IP of URL Blacklist";
+        return 'Edit IP of URL Blacklist';
     }
 }
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/functions.inc 1.4.1.src/cpanel-glprivate/plugins/spamx/functions.inc
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/functions.inc	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/functions.inc	2006-12-30 07:57:08.000000000 -0600
@@ -2,15 +2,15 @@
 
 /**
  * File: functions.inc
- * This is the functions.inc for the Geeklog Spam-X Plug-in!
+ * This is the functions.inc for the Geeklog Spam-X plugin
  * 
- * Copyright (C) 2004-2005 by the following authors:
+ * Copyright (C) 2004-2006 by the following authors:
  * Authors      Tom Willett     tomw AT pigstye DOT net
  *              Dirk Haun       dirk AT haun-online DOT de
  * 
  * Licensed under GNU General Public License
  *
- * $Id: functions.inc,v 1.19.2.1 2006/06/30 12:20:49 dhaun Exp $
+ * $Id: functions.inc,v 1.27 2006/12/30 13:57:08 dhaun Exp $
  */
 
 if (strpos ($_SERVER['PHP_SELF'], 'functions.inc') !== false) {
@@ -18,9 +18,10 @@
 }
 
 /**
- * Language file Include
+ * Language file include
  */
-$langfile = $_CONF['path'] . 'plugins/spamx/language/' . $_CONF['language'] . '.php';
+$langfile = $_CONF['path'] . 'plugins/spamx/language/'
+          . $_CONF['language'] . '.php';
 
 if (file_exists ($langfile)) {
     include_once ($langfile);
@@ -42,30 +43,27 @@
  * $showsitestats is 1 then we are to only print the overall stats in the 'site
  * statistics' box otherwise we show the detailed stats for the plugin
  * 
- * Universal Plugin:  Modify/uncomment use it
- * 
- * @param int $ showsitestate   Flag to let us know which stats to get
- * @return string returns formatted HTML to insert in stats page
+ * @param   int     $showsitestats  Flag to let us know which stats to get
+ * @return  string  returns formatted HTML to insert in stats page
  */
 function plugin_showstats_spamx($showsitestats)
 {
     global $_CONF, $_TABLES, $LANG_SX00;
+
     $retval = '';
 
     if (SEC_hasRights('spamx.admin')) {
         // detailed stats are only visible to Spam-X admins
         require_once( $_CONF['path_system'] . 'lib-admin.php' );
         $header_arr = array(
-            array('text' => $LANG_SX00['stats_page_title'], 'field' => 'label'),
-            array('text' => $LANG_SX00['stats_entries'], 'field' => 'stats'),
+            array('text' => $LANG_SX00['stats_page_title'], 'field' => 'label', 'header_class' => 'stats-header-title'),
+            array('text' => $LANG_SX00['stats_entries'], 'field' => 'stats', 'header_class' => 'stats-header-count', 'field_class' => 'stats-list-count'),
         );
         $data_arr = array();
         $text_arr = array('has_menu'     => false,
                           'title'        => $LANG_SX00['stats_headline'],
         );
         $data_arr = array(
-            array('label' => $LANG_SX00['stats_mtblacklist'],
-                'stats' => COM_numberFormat (DB_count ($_TABLES['spamx'], 'name', 'MTBlacklist'))),
             array('label' => $LANG_SX00['stats_pblacklist'],
                 'stats' => COM_numberFormat (DB_count ($_TABLES['spamx'], 'name', 'Personal'))),
             array('label' => $LANG_SX00['stats_ip'],
@@ -73,7 +71,9 @@
             array('label' => $LANG_SX00['stats_ipofurl'],
                 'stats' => COM_numberFormat (DB_count ($_TABLES['spamx'], 'name', 'IPofUrl'))),
             array('label' => $LANG_SX00['stats_header'],
-                'stats' => COM_numberFormat (DB_count ($_TABLES['spamx'], 'name', 'HTTPHeader')))
+                'stats' => COM_numberFormat (DB_count ($_TABLES['spamx'], 'name', 'HTTPHeader'))),
+            array('label' => $LANG_SX00['slvwhitelist'],
+                'stats' => COM_numberFormat (DB_count ($_TABLES['spamx'], 'name', 'SLVwhitelist')))
         );
         $retval .= ADMIN_simpleList("", $header_arr, $text_arr, $data_arr);
     }
@@ -122,8 +122,6 @@
  * 
  * Adds the plugin to the Admin menu
  * 
- * Universal Plugin:  Modify/Uncomment use it
- * 
  * @return array Array containing (plugin name, plugin admin url, # of items in plugin or '')
  */
 function plugin_getadminoption_spamx()
@@ -158,6 +156,10 @@
 {
     global $_TABLES, $_SPX_CONF;
 
+    if (!function_exists ('PLG_spamAction')) {
+        return 3002; // plugin not compatible with this Geeklog version
+    }
+
     $v = DB_getItem ($_TABLES['plugins'], 'pi_version', "pi_name = 'spamx'");
 
     if ($v != $_SPX_CONF['version']) {
@@ -168,8 +170,8 @@
                 break;
         }
 
-        // update version number
-        DB_query ("UPDATE {$_TABLES['plugins']} SET pi_version = '{$_SPX_CONF['version']}' WHERE pi_name = 'spamx'");
+        // update version numbers
+        DB_query ("UPDATE {$_TABLES['plugins']} SET pi_version = '{$_SPX_CONF['version']}', pi_gl_version = '1.4.1' WHERE pi_name = 'spamx'");
 
         // check if version number was updated successfully
         $v = DB_getItem ($_TABLES['plugins'], 'pi_version', "pi_name = 'spamx'");
@@ -187,14 +189,16 @@
  */
 
 /**
- * Called by the Plugin API PLG_checkforSpam
- * param string $comment  comment text
- * param int    $action   which action modules to call if spam found (sum of module numbers)
+ * Check a post for spam
+ *
+ * @param   string  $comment    comment text
+ * @param   int     $action     (former spam action - not used any more)
+ * @return  int                 > 0: spam detected, == 0: no spam
+ *
  */
-
-function plugin_checkforSpam_spamx($comment, $action)
+function plugin_checkforSpam_spamx ($comment, $action = -1)
 {
-    global $_CONF, $_TABLES, $_SPX_CONF; 
+    global $_CONF, $_SPX_CONF; 
 
     // skip spam check for members of the 'spamx Admin' group, if enabled
     if (isset ($_SPX_CONF['admin_override']) && $_SPX_CONF['admin_override']) {
@@ -203,51 +207,79 @@
         }
     }
 
-    // Set up Spamx_Action and Spamx_Examine arrays
-    $Spamx_Action = array();
-    $Spamx_Examine = array();
-    if ($dir = @opendir($_CONF['path'] . 'plugins/spamx/')) {
-        while (($file = readdir($dir)) !== false) {
-            if (is_file($_CONF['path'] . 'plugins/spamx/' . $file)) {
-                if (substr($file, -17) == '.Action.class.php') {
-                    $sfile = str_replace('.Action.class.php', '', $file);
-                    require_once ($_CONF['path'] . 'plugins/spamx/' . $file);
-                    $CM = new $sfile;
-                    $Spamx_Action[$CM->number()] = $sfile;
-                }
-                if (substr($file, -18) == '.Examine.class.php') {
-                    $sfile = str_replace('.Examine.class.php', '', $file);
+    $spamx_path = $_CONF['path'] . 'plugins/spamx/';
+
+    // Set up Spamx_Examine array
+    $Spamx_Examine = array ();
+    if ($dir = @opendir ($spamx_path)) {
+        while (($file = readdir ($dir)) !== false) {
+            if (is_file ($spamx_path . $file)) {
+                if (substr ($file, -18) == '.Examine.class.php') {
+                    $sfile = str_replace ('.Examine.class.php', '', $file);
                     $Spamx_Examine[] = $sfile;
                 }
             }
         }
-        closedir($dir);
+        closedir ($dir);
     }
+
     $res = 0;
     foreach ($Spamx_Examine as $Examine) {
         $filename = $Examine . '.Examine.class.php';
-        require_once $_CONF['path'] . 'plugins/spamx/' . $filename;
+        require_once ($spamx_path . $filename);
         $EX = new $Examine;
-        $res = $EX->execute($comment);
+        $res = $EX->execute ($comment);
         if ($res == 1) {
             break;
         }
     }
 
-    if ($res == 1) { // Examine Class found a match - spam detected
-        if ($action == -1 or $action == '') {
-            $action = $_SPX_CONF['action'];
-        }
-        foreach($Spamx_Action as $Num => $Act) {
-            if (($action & $Num) == $Num) {
-                $filename = $Act . '.Action.class.php';
-                require_once($_CONF['path'] . 'plugins/spamx/' . $filename);
-                $AC = new $Act;
-                $AC->execute($comment);
-            }
-        }
+    return $res;
+}
+
+/**
+ * Perform action after spam has been detected
+ *
+ * @param   string  $comment    comment text
+ * @param   int     $action     which action modules to call (sum of module numbers)
+ * @return  int                 number of message to display to the spammer
+ *
+ */
+function plugin_spamaction_spamx ($comment, $action)
+{
+    global $_CONF, $_SPX_CONF;
+
+    $res = 0;
+
+    $spamx_path = $_CONF['path'] . 'plugins/spamx/';
+
+    if (($action == -1) || ($action == '')) {
+        $action = $_SPX_CONF['action'];
+    }
 
-        return $AC->result();
+    // Set up Spamx_Action array
+    $Spamx_Action = array ();
+    if ($dir = @opendir ($spamx_path)) {
+        while (($file = readdir ($dir)) !== false) {
+            if (is_file ($spamx_path . $file)) {
+                if (substr ($file, -17) == '.Action.class.php') {
+                    $sfile = str_replace ('.Action.class.php', '', $file);
+                    require_once ($spamx_path . $file);
+                    $CM = new $sfile;
+                    $Spamx_Action[$sfile] = $CM->number ();
+                }   
+            }   
+        }   
+        closedir ($dir);
+    }
+
+    foreach ($Spamx_Action as $Act => $Num) {
+        if (($action & $Num) == $Num) {
+            $AC = new $Act;
+            $AC->execute ($comment);
+            
+            $res = max ($res, $AC->result ());
+        }
     }
 
     return $res;
@@ -258,24 +290,25 @@
  * 
  * This will print a message to the spamx log
  * 
- * @logentry string      $string         Message to write to log
+ * @param   string  $logentry   Message to write to log
  */
-
-$_SPAMX_log_flg = true; // Set to false to turn of logging
-
-function SPAMX_log($logentry)
+function SPAMX_log ($logentry)
 {
-    global $_CONF, $LANG01, $_SPAMX_log_flg;
+    global $_CONF, $LANG01, $_SPX_CONF;
 
-    if ($_SPAMX_log_flg) {
-        $timestamp = strftime("%c");
+    if ((!isset ($_SPX_CONF['logging']) || ($_SPX_CONF['logging'] === true)) &&
+            !empty ($logentry)) {
+        $logentry = str_replace( array( '<?', '?>' ), array( '(@', '@)' ),
+                                 $logentry );
+
+        $timestamp = strftime ('%c');
         $logfile = $_CONF['path_log'] . 'spamx.log';
 
-        if (!$file = fopen($logfile, "a")) {
-            COM_errorLog($LANG01[33] . $logfile . ' (' . $timestamp . ')', 1);
+        if (!$file = fopen ($logfile, 'a')) {
+            COM_errorLog ($LANG01[33] . $logfile . ' (' . $timestamp . ')', 1);
         } 
 
-        fputs($file, "$timestamp - $logentry \n");
+        fputs ($file, "$timestamp - $logentry \n");
     } 
 } 
 
@@ -298,11 +331,9 @@
  * The Plugin Installer will also call this routine upon and install error to remove anything it has created.
  * The Plugin installer will pass the optional parameter which will then double check that plugin has first been disabled. 
  * 
- * For this plugin, this routine will also remove the Block definition.
- * 
  * Returns True if all Plugin related data is removed without error
  * 
- * @param string $installCheck Defult is blank but if set, check if plugin is disabled first
+ * @param string $installCheck Default is blank but if set, check if plugin is disabled first
  * @return boolean True if successful false otherwise
  */
 function plugin_uninstall_spamx($installCheck = '')
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/Header.Examine.class.php 1.4.1.src/cpanel-glprivate/plugins/spamx/Header.Examine.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/Header.Examine.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/Header.Examine.class.php	2006-12-10 03:56:39.000000000 -0600
@@ -2,16 +2,16 @@
 
 /**
 * File: Header.Examine.class.php
-* This is the HTTP Header Examine class for the Geeklog Spam-X Plug-in!
+* This is the HTTP Header Examine class for the Geeklog Spam-X plugin
 *
-* Copyright (C) 2005 by the following authors:
+* Copyright (C) 2005-2006 by the following authors:
 * Author    Dirk Haun <dirk AT haun-online DOT de>
 *
 * based on the works of Tom Willett <tomw AT pigstye DOT net>
 *
 * Licensed under the GNU General Public License
 *
-* $Id: Header.Examine.class.php,v 1.3.4.1 2006/06/30 12:20:49 dhaun Exp $
+* $Id: Header.Examine.class.php,v 1.5 2006/12/10 08:57:49 dhaun Exp $
 */
 
 if (strpos ($_SERVER['PHP_SELF'], 'Header.Examine.class.php') !== false) {
@@ -71,6 +71,7 @@
             $v = explode (':', $entry);
             $name = trim ($v[0]);
             $value = trim ($v[1]);
+            $value = str_replace ('#', '\\#', $value);
 
             foreach ($headers as $key => $content) {
                 if (strcasecmp ($name, $key) == 0) {
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/Import.Admin.class.php 1.4.1.src/cpanel-glprivate/plugins/spamx/Import.Admin.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/Import.Admin.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/Import.Admin.class.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,227 +0,0 @@
-<?php
-
-/**
- * file:  Import.Admin.class.php
- * MTBlacklist refresh module
- * 
- * Updates Sites MT Blacklist via Master MT Blacklist rss feed
- * 
- * Copyright (C) 2004-2005 by the following authors:
- * Author      Tom Willett     tomw AT pigstye DOT net
- * Author      Dirk Haun       dirk AT haun-online DOT de
- * 
- * Licensed under GNU General Public License
- * 
- * Based on MT-Blacklist Updater by
- * Cheah Chu Yeow (http://blog.codefront.net/)
- *
- * $Id: Import.Admin.class.php,v 1.9.2.1 2006/06/30 12:20:49 dhaun Exp $
- */
-
-if (strpos ($_SERVER['PHP_SELF'], 'Import.Admin.class.php') !== false) {
-    die ('This file can not be used on its own!');
-}
-
-require_once ($_CONF['path'] . 'plugins/spamx/BaseAdmin.class.php');
-
-class Import extends BaseAdmin {
-    /**
-     * Constructor
-     */
-    function display ()
-    {
-        global $_TABLES;
-
-        if (DB_count ($_TABLES['spamx'], 'name', 'MTBlacklist') > 0) {
-            $display = $this->_update_blacklist ();
-        } else {
-            $display = $this->_initial_import ();
-        } 
-
-        return $display;
-    } 
-
-    function link ()
-    {
-        global $_TABLES, $LANG_SX00;
-
-        if (DB_count ($_TABLES['spamx'], 'name', 'MTBlacklist') > 0) {
-            $display = $LANG_SX00['uMTlist'];
-        } else {
-            $display = $LANG_SX00['initial_import'];
-        } 
-
-        return $display;
-    } 
-
-    /**
-     * Update MT Blacklist from RSS feed
-     */
-    function _update_blacklist ()
-    {
-        global $_CONF, $_TABLES, $LANG_SX00, $_SPX_CONF;
-
-        require_once($_CONF['path'] . 'plugins/spamx/magpierss/rss_fetch.inc');
-        require_once($_CONF['path'] . 'plugins/spamx/magpierss/rss_utils.inc');
-
-        $rss = fetch_rss($_SPX_CONF['rss_url']); 
-        if ($rss === false) {
-            if (strpos ($_SPX_CONF['rss_url'], 'jayallen.org') === false) {
-                return '<p>An error occured when updating MT Blacklist</p>';
-            } else {
-                return '<p>Please note that MT-Blacklist has been <a href="http://www.geeklog.net/article.php/mt-blacklist-discontinued">discontinued</a> and will not be updated any more.</p>';
-            }
-        }
-
-        // entries to add and delete, according to the blacklist changes feed
-        $to_add = array();
-        $to_delete = array();
-
-        foreach($rss->items as $item) {
-            // time this entry was published (currently unused)
-            // $published_time = parse_w3cdtf( $item['dc']['date'] );
-            $entry = substr($item['description'], 0, -3); // blacklist entry
-            $subject = $item['dc']['subject']; // indicates addition or deletion
-             
-            // is this an addition or a deletion?
-            if (strpos($subject, 'addition') !== false) {
-                // save it to database
-                $result = DB_query('SELECT * FROM ' . $_TABLES['spamx'] . ' WHERE name="MTBlacklist" AND value="' . $entry . '"');
-                $nrows = DB_numRows($result);
-                if ($nrows < 1) {
-                    $result = DB_query('INSERT INTO ' . $_TABLES['spamx'] . ' VALUES ("MTBlacklist","' . $entry . '")');
-                    $to_add[] = $entry;
-                } 
-            } else if (strpos($subject, 'deletion') !== false) {
-                // delete it from database
-                $result = DB_query('SELECT * FROM ' . $_TABLES['spamx'] . ' where name="MTBlacklist" AND value="' . $entry . '"');
-                $nrows = DB_numRows($result);
-                if ($nrows >= 1) {
-                    $result = DB_query('DELETE FROM ' . $_TABLES['spamx'] . ' where name="MTBlacklist" AND value="' . $entry . '"');
-                    $to_delete[] = $entry;
-                } 
-            } 
-        } 
-        $display = '<hr><p><b>' . $LANG_SX00['entriesadded'] . '</b></p><ul>';
-        foreach ($to_add as $e) {
-            $display .= "<li>$e</li>";
-        } 
-        $display .= '</ul><p><b>' . $LANG_SX00['entriesdeleted'] . '</b></p><ul>';
-        foreach ($to_delete as $e) {
-            $display .= "<li>$e</li>";
-        } 
-        $display .= '</ul>';
-        SPAMX_log($LANG_SX00['uMTlist'] . $LANG_SX00['uMTlist2'] . count($to_add) . $LANG_SX00['uMTlist3'] . count($to_delete) . $LANG_SX00['entries']);
-
-        return $display;
-    } 
-
-    /**
-     * Initial import of the MT Blacklist
-     */
-    function _initial_import ()
-    {
-        global $_CONF, $_TABLES, $LANG_SX00, $_SPX_CONF;
-
-        if (ini_get ('allow_url_fopen')) {
-            $blacklist = file ($_SPX_CONF['mtblacklist_url']);
-            $count = $this->_do_import ($blacklist);
-
-            if ($count > 0) {
-                $display = sprintf ($LANG_SX00['import_success'], $count);
-                SPAMX_log ($LANG_SX00['uMTlist'] . $LANG_SX00['uMTlist2']
-                     . $count . $LANG_SX00['uMTlist3'] . '0'
-                     . $LANG_SX00['entries']);
-            } else {
-                $display = $LANG_SX00['import_failure'];
-            } 
-        } else { // read blacklist from local file
-            $fromfile = $_CONF['path_data'] . 'blacklist.txt';
-
-            if (file_exists ($fromfile)) {
-                $blacklist = file ($fromfile);
-                $count = $this->_do_import ($blacklist);
-
-                if ($count > 0) {
-                    $display = sprintf ($LANG_SX00['import_success'], $count);
-                    SPAMX_log ($LANG_SX00['uMTlist'] . $LANG_SX00['uMTlist2']
-                         . $count . $LANG_SX00['uMTlist3'] . '0'
-                         . $LANG_SX00['entries']);
-                } else {
-                    $display = $LANG_SX00['import_failure'];
-                } 
-            } else {
-                $display = sprintf ($LANG_SX00['allow_url_fopen'],
-                    $_CONF['path_data']);
-                $display .= '<p><a href="' . $_SPX_CONF['mtblacklist_url']
-                 . '">' . $_SPX_CONF['mtblacklist_url'] . '</a>';
-            } 
-        } 
-        // Import Personal Blacklist for existing users.
-        $fromfile = $_CONF['path_html'] . 'spamx/blacklist.php';
-        if (file_exists ($fromfile)) {
-            require_once ($fromfile);
-            $count = $this->_do_importp ($SPAMX_BLACKLIST);
-            $display .= $LANG_SX00['initial_Pimport'];
-            if ($count > 0) {
-                $display .= sprintf ($LANG_SX00['import_success'], $count);
-                SPAMX_log ($LANG_SX00['uPlist'] . $LANG_SX00['uMTlist2']
-                     . $count . $LANG_SX00['uMTlist3'] . '0'
-                     . $LANG_SX00['entries']);
-            } else {
-                $display .= $LANG_SX00['import_failure'];
-            } 
-        } 
-
-        return $display;
-    } 
-
-    /**
-     * Import the blacklist
-     * 
-     * @param array $lines The blacklist
-     * @return int number of lines imported
-     */
-    function _do_import ($lines)
-    {
-        global $_TABLES;
-
-        $count = 0;
-        foreach ($lines as $line) {
-            $l = explode ('#', $line);
-            $entry = trim ($l[0]);
-            if (!empty ($entry)) {
-                DB_query ('INSERT INTO ' . $_TABLES['spamx']
-                     . ' VALUES ("MTBlacklist","' . addslashes ($entry)
-                     . '")');
-                $count++;
-            } 
-        } 
-
-        return $count;
-    } 
-
-    /**
-     * Import personal blacklist
-     * 
-     * @param array $lines The blacklist
-     * @return int number of lines imported
-     */
-    function _do_importp ($lines)
-    {
-        global $_TABLES;
-
-        $count = 0;
-        foreach ($lines as $entry) {
-            if (!empty ($entry)) {
-                DB_query ('INSERT INTO ' . $_TABLES['spamx']
-                     . ' VALUES ("Personal","' . $entry . '")');
-                $count++;
-            } 
-        } 
-
-        return $count;
-    } 
-} 
-
-?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/IP.Examine.class.php 1.4.1.src/cpanel-glprivate/plugins/spamx/IP.Examine.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/IP.Examine.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/IP.Examine.class.php	2006-09-06 00:31:00.000000000 -0500
@@ -1,15 +1,15 @@
 <?php
 
 /**
-* File: BlackList.Examine.class.php
-* This is the Personal BlackList Examine class for the Geeklog Spam-X Plug-in!
+* File: IP.Examine.class.php
+* This is the IP BlackList Examine class for the Geeklog Spam-X plugin
 *
-* Copyright (C) 2004-2005 by the following authors:
+* Copyright (C) 2004-2006 by the following authors:
 * Author        Tom Willett        tomw AT pigstye DOT net
 *
 * Licensed under GNU General Public License
 *
-* $Id: IP.Examine.class.php,v 1.6.2.1 2006/06/30 12:20:49 dhaun Exp $
+* $Id: IP.Examine.class.php,v 1.9 2006/09/06 05:31:00 ospiess Exp $
 */
 
 if (strpos ($_SERVER['PHP_SELF'], 'IP.Examine.class.php') !== false) {
@@ -31,12 +31,44 @@
     /**
      * No Constructor Use BaseCommand constructor
      */
+
     /**
-     * Here we do the work
+     * The execute method examines the IP address a comment is coming from,
+     * comparing it against a blacklist of banned IP addresses.
+     *
+     * @param $comment string                 Comment text to examine
      */
     function execute($comment)
     {
-        global $_CONF, $_TABLES, $_USER, $LANG_SX00, $result;
+        return $this->_process($_SERVER['REMOTE_ADDR']);
+    }
+
+    /**
+     * The re-execute method is used to massdelete spam, essentially
+     * it does the same as execute, but is called with recorded comments
+     * in order to match them against new rules that were not in effect
+     * at the time of posting. To do that, it uses the IP address logged
+     * when the comment was saved.
+     *
+     * @param $comment string            Comment text to examine
+     * @param $date       unixtimestamp  Date/time the comment was posted
+     * @param $ip         string         IPAddress comment posted from
+     * @param $type       string         Type of comment (article etc)
+     */
+    function reexecute($comment, $date, $ip, $type)
+    {
+            return $this->_process($ip);
+    }
+
+        /**
+         * Private internal method, this actually processes a given ip
+         * address against a blacklist of IP regular expressions.
+         *
+         * @param $ip    string    IP address of comment poster
+         */
+    function _process($ip)
+    {
+            global $_CONF, $_TABLES, $_USER, $LANG_SX00, $result;
 
         if (isset ($_USER['uid']) && ($_USER['uid'] > 1)) {
             $uid = $_USER['uid'];
@@ -53,11 +85,11 @@
         $ans = 0;
         for ($i = 1; $i <= $nrows; $i++) {
             list ($val) = DB_fetchArray ($result);
-            if ( preg_match ("#$val#i", $_SERVER['REMOTE_ADDR'])) {
+            if ( preg_match ("#$val#i", $ip)) {
                 $ans = 1; // quit on first positive match
                 SPAMX_log ($LANG_SX00['foundspam'] . $val .
                            $LANG_SX00['foundspam2'] . $uid .
-                           $LANG_SX00['foundspam3'] . $_SERVER['REMOTE_ADDR']);
+                           $LANG_SX00['foundspam3'] . $ip);
                 break;
             }
         }
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/IPofUrl.Examine.class.php 1.4.1.src/cpanel-glprivate/plugins/spamx/IPofUrl.Examine.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/IPofUrl.Examine.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/IPofUrl.Examine.class.php	2006-06-25 03:40:54.000000000 -0500
@@ -1,15 +1,15 @@
 <?php
 
 /**
-* File: BlackList.Examine.class.php
-* This is the Personal BlackList Examine class for the Geeklog Spam-X Plug-in!
+* File: IPofUrl.Examine.class.php
+* This is the Personal BlackList Examine class for the Geeklog Spam-X plugin
 *
-* Copyright (C) 2004-2005 by the following authors:
+* Copyright (C) 2004-2006 by the following authors:
 * Author        Tom Willett        tomw AT pigstye DOT net
 *
 * Licensed under GNU General Public License
 *
-* $Id: IPofUrl.Examine.class.php,v 1.4.4.1 2006/06/30 12:20:49 dhaun Exp $
+* $Id: IPofUrl.Examine.class.php,v 1.5 2006/06/25 08:40:54 dhaun Exp $
 */
 
 if (strpos ($_SERVER['PHP_SELF'], 'IPofUrl.Examine.class.php') !== false) {
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/english.php 1.4.1.src/cpanel-glprivate/plugins/spamx/language/english.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/english.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/language/english.php	2006-09-02 10:35:46.000000000 -0500
@@ -2,14 +2,14 @@
 
 /**
  * File: english.php
- * This is the English language page for the Geeklog Spam-X Plug-in!
+ * This is the English language file for the Geeklog Spam-X plugin
  * 
- * Copyright (C) 2004-2005 by the following authors:
+ * Copyright (C) 2004-2006 by the following authors:
  * Author        Tom Willett        tomw AT pigstye DOT net
  * 
  * Licensed under GNU General Public License
  *
- * $Id: english.php,v 1.13 2005/09/25 16:39:12 dhaun Exp $
+ * $Id: english.php,v 1.16 2006/09/02 15:35:46 dhaun Exp $
  */
 
 $LANG_SX00 = array (
@@ -54,7 +54,7 @@
     'actmod' => 'Active Modules',
     'avmod' => 'Available Modules',
     'coninst' => '<hr>Click on an Active module to remove it, click on an Available module to add it.<br>Modules are executed in order presented.',
-    'fsc' => 'Found Spam Comment matching ',
+    'fsc' => 'Found Spam Post matching ',
     'fsc1' => ' posted by user ',
     'fsc2' => ' from IP ',
     'uMTlist' => 'Update MT-Blacklist',
@@ -83,8 +83,8 @@
     'enabled' => 'Disable plugin before uninstalling.',
     'readme' => 'STOP! Before you press install please read the ',
     'installdoc' => 'Install Document.',
-    'spamdeleted' => 'Deleted Spam Comment',
-    'foundspam' => 'Found Spam Comment matching ',
+    'spamdeleted' => 'Deleted Spam Post',
+    'foundspam' => 'Found Spam Post matching ',
     'foundspam2' => ' posted by user ',
     'foundspam3' => ' from IP ',
 	'deletespam' => 'Delete Spam',
@@ -92,7 +92,7 @@
 	'note1'		=> '<p>Note: Mass Delete is intended to help you when you are hit by',
 	'note2'		=> ' comment spam and Spam-X does not catch it.  <ul><li>First find the link(s) or other ',
 	'note3'		=> 'identifiers of this spam comment and add it to your personal blacklist.</li><li>Then ',
-	'note4'		=> 'come back here and have Spam-X check the latest comments for spam.</li></ul>Comments ',
+	'note4'		=> 'come back here and have Spam-X check the latest comments for spam.</li></ul><p>Comments ',
 	'note5'		=> 'are checked from newest comment to oldest -- checking more comments ',
 	'note6'		=> 'requires more time for the check.</p>',
 	'masshead'	=> '<hr><h1 align="center">Mass Delete Spam Comments</h1>',
@@ -121,12 +121,13 @@
     'stats_header' => 'HTTP headers',
     'stats_deleted' => 'Posts deleted as spam',
 
-    'plugin_name' => 'Spam-X'
+    'plugin_name' => 'Spam-X',
+    'slvwhitelist' => 'SLV Whitelist'
 );
 
 
 /* Define Messages that are shown when Spam-X module action is taken */
-$PLG_spamx_MESSAGE128 = 'Spam detected and Comment or Message was deleted.';
+$PLG_spamx_MESSAGE128 = 'Spam detected. Post was deleted.';
 $PLG_spamx_MESSAGE8   = 'Spam detected. Email sent to admin.';
 
 // Messages for the plugin upgrade
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/english_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/spamx/language/english_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/english_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/language/english_utf-8.php	2006-09-02 10:35:46.000000000 -0500
@@ -2,14 +2,14 @@
 
 /**
  * File: english_utf-8.php
- * This is the English language page for the Geeklog Spam-X Plug-in!
+ * This is the English language file for the Geeklog Spam-X plugin
  * 
  * Copyright (C) 2004-2006 by the following authors:
  * Author        Tom Willett        tomw AT pigstye DOT net
  * 
  * Licensed under GNU General Public License
  *
- * $Id: english_utf-8.php,v 1.1 2006/02/11 12:43:22 dhaun Exp $
+ * $Id: english_utf-8.php,v 1.4 2006/09/02 15:35:46 dhaun Exp $
  */
 
 $LANG_SX00 = array (
@@ -54,7 +54,7 @@
     'actmod' => 'Active Modules',
     'avmod' => 'Available Modules',
     'coninst' => '<hr>Click on an Active module to remove it, click on an Available module to add it.<br>Modules are executed in order presented.',
-    'fsc' => 'Found Spam Comment matching ',
+    'fsc' => 'Found Spam Post matching ',
     'fsc1' => ' posted by user ',
     'fsc2' => ' from IP ',
     'uMTlist' => 'Update MT-Blacklist',
@@ -83,8 +83,8 @@
     'enabled' => 'Disable plugin before uninstalling.',
     'readme' => 'STOP! Before you press install please read the ',
     'installdoc' => 'Install Document.',
-    'spamdeleted' => 'Deleted Spam Comment',
-    'foundspam' => 'Found Spam Comment matching ',
+    'spamdeleted' => 'Deleted Spam Post',
+    'foundspam' => 'Found Spam Post matching ',
     'foundspam2' => ' posted by user ',
     'foundspam3' => ' from IP ',
 	'deletespam' => 'Delete Spam',
@@ -92,7 +92,7 @@
 	'note1'		=> '<p>Note: Mass Delete is intended to help you when you are hit by',
 	'note2'		=> ' comment spam and Spam-X does not catch it.  <ul><li>First find the link(s) or other ',
 	'note3'		=> 'identifiers of this spam comment and add it to your personal blacklist.</li><li>Then ',
-	'note4'		=> 'come back here and have Spam-X check the latest comments for spam.</li></ul>Comments ',
+	'note4'		=> 'come back here and have Spam-X check the latest comments for spam.</li></ul><p>Comments ',
 	'note5'		=> 'are checked from newest comment to oldest -- checking more comments ',
 	'note6'		=> 'requires more time for the check.</p>',
 	'masshead'	=> '<hr><h1 align="center">Mass Delete Spam Comments</h1>',
@@ -121,12 +121,13 @@
     'stats_header' => 'HTTP headers',
     'stats_deleted' => 'Posts deleted as spam',
 
-    'plugin_name' => 'Spam-X'
+    'plugin_name' => 'Spam-X',
+    'slvwhitelist' => 'SLV Whitelist'
 );
 
 
 /* Define Messages that are shown when Spam-X module action is taken */
-$PLG_spamx_MESSAGE128 = 'Spam detected and Comment or Message was deleted.';
+$PLG_spamx_MESSAGE128 = 'Spam detected. Post was deleted.';
 $PLG_spamx_MESSAGE8   = 'Spam detected. Email sent to admin.';
 
 // Messages for the plugin upgrade
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/farsi_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/spamx/language/farsi_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/farsi_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/language/farsi_utf-8.php	2006-09-02 10:35:46.000000000 -0500
@@ -11,7 +11,7 @@
  *
  * Licensed under GNU General Public License
  *
- * $Id: farsi_utf-8.php,v 1.2 2005/09/25 16:39:12 dhaun Exp $
+ * $Id: farsi_utf-8.php,v 1.4 2006/09/02 15:35:46 dhaun Exp $
  */
 
 $LANG_SX00 = array (
@@ -94,7 +94,7 @@
 	'note1'		=> '<p>Note: Mass Delete is intended to help you when you are hit by',
 	'note2'		=> ' comment spam and Spam-X does not catch it.  <ul><li>First find the link(s) or other ',
 	'note3'		=> 'identifiers of this spam comment and add it to your personal blacklist.</li><li>Then ',
-	'note4'		=> 'come back here and have Spam-X check the latest comments for spam.</li></ul>Comments ',
+	'note4'		=> 'come back here and have Spam-X check the latest comments for spam.</li></ul><p>Comments ',
 	'note5'		=> 'are checked from newest comment to oldest -- checking more comments ',
 	'note6'		=> 'requires more time for the check.</p>',
 	'masshead'	=> '<hr><h1 align="center">Mass Delete Spam Comments</h1>',
@@ -123,7 +123,8 @@
     'stats_header' => 'HTTP headers',
     'stats_deleted' => 'Posts deleted as spam',
 
-    'plugin_name' => 'شناسايي هرز نامه ها'
+    'plugin_name' => 'شناسايي هرز نامه ها',
+    'slvwhitelist' => 'SLV Whitelist'
 );
 
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/french_canada.php 1.4.1.src/cpanel-glprivate/plugins/spamx/language/french_canada.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/french_canada.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/language/french_canada.php	2006-09-02 10:35:46.000000000 -0500
@@ -11,7 +11,7 @@
  *
  * Licensed under GNU General Public License
  *
- * $Id: french_canada.php,v 1.6 2005/09/25 16:39:12 dhaun Exp $
+ * $Id: french_canada.php,v 1.8 2006/09/02 15:35:46 dhaun Exp $
  */
 
 $LANG_SX00 = array (
@@ -94,7 +94,7 @@
 	'note1'		=> '<p>Note: La suppression en lot a pour but de faciliter la tche lorsque vous tes victime d\'un',
 	'note2'		=> ' commentaire indsirable et que Spam-X ne le reconnat pas.  <ul><li>Trouvez d\'abord le(s) lien(s) ou autre ',
 	'note3'		=> 'identificateurs de ce commentaire indsirable et ajoutez-le  votre liste noire personnelle.</li><li>Ensuite ',
-	'note4'		=> 'revenez ici et excutez Spam-X pour vrifier les derniers commentaires.</li></ul>Les commentaires ',
+	'note4'		=> 'revenez ici et excutez Spam-X pour vrifier les derniers commentaires.</li></ul><p>Les commentaires ',
 	'note5'		=> 'sont vrifis  partir des plus rcents -- vrifier plus de commentaires ',
 	'note6'		=> 'ncessite plus de temps pour la vrification</p>',
 	'masshead'	=> '<hr><h1 align="center">Suppression de commentaires en lot</h1>',
@@ -123,7 +123,8 @@
     'stats_header' => 'HTTP headers',
     'stats_deleted' => 'Posts deleted as spam',
 
-    'plugin_name' => 'Spam-X'
+    'plugin_name' => 'Spam-X',
+    'slvwhitelist' => 'SLV Whitelist'
 );
 
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/french_france.php 1.4.1.src/cpanel-glprivate/plugins/spamx/language/french_france.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/french_france.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/language/french_france.php	2006-09-02 10:35:46.000000000 -0500
@@ -92,7 +92,7 @@
 	'note1'		=> '<p>Note: La suppression en lot a pour but de faciliter la tche lorsque vous tes victime d\'un',
 	'note2'		=> ' commentaire indsirable et que Spam-X ne le reconnat pas.  <ul><li>Trouvez d\'abord le(s) lien(s) ou autre ',
 	'note3'		=> 'identificateurs de ce commentaire indsirable et ajoutez-le  votre liste noire personnelle.</li><li>Ensuite ',
-	'note4'		=> 'revenez ici et excutez Spam-X pour vrifier les derniers commentaires.</li></ul>Les commentaires ',
+	'note4'		=> 'revenez ici et excutez Spam-X pour vrifier les derniers commentaires.</li></ul><p>Les commentaires ',
 	'note5'		=> 'sont vrifis  partir des plus rcents -- vrifier plus de commentaires ',
 	'note6'		=> 'ncessite plus de temps pour la vrification</p>',
 	'masshead'	=> '<hr><h1 align="center">Suppression de commentaires en lot</h1>',
@@ -121,7 +121,8 @@
     'stats_header' => 'HTTP headers',
     'stats_deleted' => 'Posts deleted as spam',
 
-    'plugin_name' => 'Spam-X'
+    'plugin_name' => 'Spam-X',
+    'slvwhitelist' => 'SLV Whitelist'
 );
 
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/italian.php 1.4.1.src/cpanel-glprivate/plugins/spamx/language/italian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/italian.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/language/italian.php	2006-09-02 10:35:46.000000000 -0500
@@ -11,7 +11,7 @@
  *
  * Licensed under GNU General Public License
  *
- * $Id: italian.php,v 1.5 2005/09/25 16:39:12 dhaun Exp $
+ * $Id: italian.php,v 1.7 2006/09/02 15:35:46 dhaun Exp $
  */
 
 $LANG_SX00 = array (
@@ -94,7 +94,7 @@
 	'note1'		=> '<p>Nota: L\'Eliminazione in Blocco serve ad aiutarti quando sei colpito da',
 	'note2'		=> ' commenti spam e Spam-X non riesce a bloccarli. <ul><li>Prima cerca il o i link o altri ',
 	'note3'		=> 'identificatori di questo commento Spam ed aggiungilo alla tua blacklist personale.</li><li>Poi ',
-	'note4'		=> 'torna qui a fai controllare a Spam-X se gli ultimi commenti sono spam.</li></ul>I commenti ',
+	'note4'		=> 'torna qui a fai controllare a Spam-X se gli ultimi commenti sono spam.</li></ul><p>I commenti ',
 	'note5'		=> 'vengono controllati dal pi&ugrave; recente al meno recente -- controllare pi&ugrave; commenti ',
 	'note6'		=> 'richiede pi&ugrave; tempo per il controllo</p>',
 	'masshead'	=> '<hr><h1 align="center">Eliminazione in Blocco Commenti Spam</h1>',
@@ -123,7 +123,8 @@
     'stats_header' => 'HTTP headers',
     'stats_deleted' => 'Posts deleted as spam',
 
-    'plugin_name' => 'Spam-X'
+    'plugin_name' => 'Spam-X',
+    'slvwhitelist' => 'SLV Whitelist'
 );
 
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/japanese.php 1.4.1.src/cpanel-glprivate/plugins/spamx/language/japanese.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/japanese.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/language/japanese.php	2006-12-11 10:58:02.000000000 -0600
@@ -0,0 +1,140 @@
+<?php
+
+/**
+ * File: japanese.php
+ * This is the English language file for the Geeklog Spam-X plugin
+ * 
+ * Copyright (C) 2004-2006 by the following authors:
+ * Author        Tom Willett        tomw AT pigstye DOT net
+ * Tranlated by Ivy (Geeklog Japanese)
+ * 
+ * Licensed under GNU General Public License
+ *
+ * $Id: japanese.php,v 1.2 2006/12/11 16:58:02 dhaun Exp $
+ */
+# Last Update 2006/12/12 by Ivy (Geeklog Japanese)
+
+
+$LANG_SX00 = array (
+    'inst1' => '<p>⤷򤪤ʤä¾ ',
+    'inst2' => 'ޤƤʤΥ֥åꥹȤ򥤥ݡȤƤ̤ȯޤ',
+    'inst3' => 'ǡ١ۤޤ</p><p>⤷֥ȤäƤꥹƥ󥰤ʤˤ',
+    'inst4' => ' <a href="mailto:spamx@pigstye.net">spamx@pigstye.net</a>ޤǥ᡼Ƥ',
+    'inst5' => 'ꥯȤºŤޤ',
+    'submit' => '¹',
+    'subthis' => 'Spam-Xϡǡ١Ǥ',
+    'secbut' => '2ܤΥܥϡRDFեɤޤ¾ȤƤ֤ȤǤޤ',
+    'sitename' => '̾: ',
+    'URL' => 'URL Spam-X ꥹ: ',
+    'RDF' => 'RDF url: ',
+    'impinst1a' => 'Spam-XȤˡ Spam֥åǽΥѡʥ֥åꥹȤƥݡȤޤ',
+    'impinst1b' => 'ȡĤΥܥ (ǸΥܥ򥯥å)',
+    'impinst2' => 'Gplugs/Spam-X κǽμ¹ԤϥޥꥹȤ˲äޤ ',
+    'impinst2a' => '֥åꥹȤȿǡ (: ʣȤΤʤ顢 ΤҤȤĤꤷ⤷ʤ',
+    'impinst2b' => 'ޥ̾ѹǤޤ ǤʤˤʤΥȤ򥢥åץǡȤñˡƤΥꥹȤ򾮤ޤޤˤǤޤ) ',
+    'impinst2c' => '¹ԥܥ򥯥å顢 []򥯥åƤΥڡäƤ',
+    'impinst3' => 'ʲƤǤ礦: (⤷餬ְäƤ顢Խ뤳ȤǤޤ).',
+    'availb' => '֥åꥹɽ',
+    'clickv' => 'åƥ֥åꥹȤɽ',
+    'clicki' => 'åƥ֥åꥹȤ򥤥ݡ',
+    'ok' => 'OK',
+    'rsscreated' => 'RSSեɤޤ',
+    'add1' => 'ɲäޤ ',
+    'add2' => ' ȥ꡼: ',
+    'add3' => "Υ֥åꥹ",
+    'adminc' => 'ԥޥ:',
+    'mblack' => 'ޥ֥åꥹ:',
+    'rlinks' => 'ط:',
+    'e3' => 'GeeklogΥ󥵡ꥹɲ:',
+    'addcen' => '󥵡ꥹɲ',
+    'addentry' => 'ȥɲ',
+    'e1' => 'åƥȥ',
+    'e2' => 'ȥɲä, ȥɲåܥ򥯥åƤȥ꡼ϴPerlɽѤ뤳ȤǤޤ ',
+    'pblack' => 'Spam-X ѡʥ֥åꥹ',
+    'conmod' => 'Spam-X⥸塼',
+    'acmod' => 'Spam-X ⥸塼',
+    'exmod' => 'Spam-X ߥ⥸塼',
+    'actmod' => 'ƥ֥⥸塼',
+    'avmod' => '٥֥⥸塼',
+    'coninst' => '<hr>åƥƥ֥⥸塼åƥ٥֥⥸塼ɲá<br>⥸塼ϡ줿Ǽ¹Ԥޤ ',
+    'fsc' => ' ѥݥȥޥå󥰤Ĥޤ',
+    'fsc1' => ' 桼ˤ',
+    'fsc2' => ' IP ',
+    'uMTlist' => 'Update MT-֥åꥹ',
+    'uMTlist2' => ': ɲ ',
+    'uMTlist3' => ' ƤȺ ',
+    'entries' => ' .',
+    'uPlist' => 'ѡʥ֥åꥹȥåץǡ',
+    'entriesadded' => 'ȥ꤬ɲäޤ',
+    'entriesdeleted' => 'ȥ꤬ޤ',
+    'viewlog' => 'Spam-X',
+    'clearlog' => 'ե',
+    'logcleared' => '- Spam-X ե뤬ޤ',
+    'plugin' => 'ץ饰',
+    'access_denied' => 'ݤޤ',
+    'access_denied_msg' => '롼ȥ桼Υڡ˥ǤޤʤΥ桼̾IPɥ쥹Ͽޤ',
+    'admin' => 'ץ饰',
+    'install_header' => '󥹥ȡ/󥤥󥹥ȡץ饰',
+    'installed' => 'ץ饰󤬥󥹥ȡ뤵ޤ',
+    'uninstalled' => 'ץ饰ϥ󥹥ȡ뤵ޤǤ',
+    'install_success' => '󥹥ȡ',
+    'install_failed' => '󥹥ȡ뼺 -- 顼򸫤Ƥ',
+    'uninstall_msg' => 'ץ饰ϥ󥤥󥹥ȡ뤵ޤ',
+    'install' => '󥹥ȡ',
+    'uninstall' => '󥤥󥹥ȡ',
+    'warning' => '! ץ饰󤬤ޤͭǤ',
+    'enabled' => '󥤥󥹥ȡޤԲġ',
+    'readme' => 'STOP! 󥹥ȡɤ ',
+    'installdoc' => '󥹥ȡɥȤ',
+    'spamdeleted' => 'ѥݥȺ',
+    'foundspam' => 'ѥݥȥޥå󥰤Ĥޤ ',
+    'foundspam2' => ' 桼ˤäƤޤ ',
+    'foundspam3' => ' IP ',
+	'deletespam' => 'ѥ',
+	'numtocheck' => 'ȿå',
+	'note1'		=> '<p>Note: ޥǥ꡼Ȥǹ⤫ޤ',
+	'note2'		=> ' ȥѥ Spam-X ϥåޤ <ul><li>ǽΥ󥯤Ȥ¾ ',
+	'note3'		=> 'ΥѥॳȤ򤢤ʤΥѡʥ֥åꥹȤɲ</li><li>',
+	'note4'		=> 'ꡢǶΥȤ Spam-X å</li></ul><p>',
+	'note5'		=> 'ǿȤǸΥȤɲåå -- ȥå ',
+	'note6'		=> 'å¿׵ᤷޤ</p>',
+	'masshead'	=> '<hr><h1 align="center">ޥǥ꡼ȡѥॳ</h1>',
+	'masstb' => '<hr><h1 align="center">ޥǥ꡼ȡȥåХåѥ</h1>',
+	'comdel'	=> 'Ȥޤ',
+    'initial_Pimport' => '<p>ѡʥ֥åꥹ ݡ"',
+    'initial_import' => ' MT-֥åꥹ ݡ',
+    'import_success' => '<p> %d ֥饯ꥹȥȥ꡼󥹥ȡǤޤ',
+    'import_failure' => '<p><strong>顼:</strong> ȥ꡼ߤĤޤ',
+    'allow_url_fopen' => '<p>ޤ󤬤ʤΥ֥ФΥե졼ϥ⡼ȥեɤ߹ߤĤƤޤ (<code>allow_url_fopen</code> ). URL֥åꥹȤɤGeeklog "ǡ" ǥ쥯ȥ˥åץɤƤ<tt>%s</tt>, Ƽ¹Ԥ:',
+    'documentation' => 'Spam-X ץ饰ɥ',
+    'emailmsg' => "ѥ \"%s\"\nUser UID: \"%s\"\n\nƥ:\"%s\"",
+    'emailsubject' => 'Spam ݥ %s',
+    'ipblack' => 'Spam-X IP ֥åꥹ',
+    'ipofurlblack' => 'Spam-X IP of URL ֥åꥹ',
+    'headerblack' => 'Spam-X HTTP Header ֥åꥹ',
+    'headers' => 'ꥯȥإå:',
+
+    'stats_headline' => 'Spam-X ơ',
+    'stats_page_title' => '֥åꥹ',
+    'stats_entries' => 'ȥ',
+    'stats_mtblacklist' => 'MT-֥åꥹ',
+    'stats_pblacklist' => 'ѡʥ֥åꥹ',
+    'stats_ip' => '֥åIP',
+    'stats_ipofurl' => 'URLIPˤäƥ֥åޤ',
+    'stats_header' => 'HTTP إå',
+    'stats_deleted' => 'ѥȤƺ',
+
+    'plugin_name' => 'Spam-X',
+    'slvwhitelist' => 'SLV ۥ磻ȥꥹ'
+);
+
+
+/* Define Messages that are shown when Spam-X module action is taken */
+$PLG_spamx_MESSAGE128 = 'Spam ƤϺޤ';
+$PLG_spamx_MESSAGE8   = 'Spam ᡼뤬Ԥޤ';
+
+// Messages for the plugin upgrade
+$PLG_spamx_MESSAGE3001 = 'Spam-X ץ饰󤬥åץ졼ɤޤ';
+$PLG_spamx_MESSAGE3002 = 'Spam-X ץ饰Υåץ졼ɤ˼Ԥޤ';
+
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/japanese_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/spamx/language/japanese_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/japanese_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/language/japanese_utf-8.php	2006-12-11 10:58:02.000000000 -0600
@@ -0,0 +1,139 @@
+<?php
+
+/**
+ * File: japanese_utf-8.php
+ * This is the English language file for the Geeklog Spam-X plugin
+ * 
+ * Copyright (C) 2004-2006 by the following authors:
+ * Author        Tom Willett        tomw AT pigstye DOT net
+ * Tranlated by Ivy (Geeklog Japanese)
+ * 
+ * Licensed under GNU General Public License
+ *
+ * $Id: japanese_utf-8.php,v 1.2 2006/12/11 16:58:02 dhaun Exp $
+ */
+# Last Update 2006/12/12 by Ivy (Geeklog Japanese)
+
+$LANG_SX00 = array (
+    'inst1' => '<p>もしこれをおこなったら他も ',
+    'inst2' => '見えます。そしてあなたのブラックリストをインポートしてより効果を発揮します。',
+    'inst3' => 'データベースが構築されました。</p><p>もし、ウェブサイトを作ってもリスティングされないためには',
+    'inst4' => ' <a href="mailto:spamx@pigstye.net">spamx@pigstye.net</a>までメールを送信してください。',
+    'inst5' => 'リクエストは尊重されます。',
+    'submit' => '実行',
+    'subthis' => 'このSpam-X情報は、中央データベースです。',
+    'secbut' => '2番目のボタンは、RDFフィードを作成します。他サイトから呼ぶことができます。',
+    'sitename' => 'サイト名: ',
+    'URL' => 'URL Spam-X リスト: ',
+    'RDF' => 'RDF url: ',
+    'impinst1a' => 'Spam-Xを使う前に、 Spamブロッカー機能のパーソナルブラックリストを閲覧してインポートします。',
+    'impinst1b' => 'サイト、つぎのボタンを。 (最後のボタンをクリック)',
+    'impinst2' => 'Gplugs/Spam-X の最初の実行はマスターリストに加えられます ',
+    'impinst2a' => 'ブラックリストが反映。 (註: 複数サイトあるのなら、 その中のひとつを指定したいかもしれない',
+    'impinst2b' => 'マスタだけが名前を変更できます。（ これであなたにあなたのサイトをアップデートを簡単に、そしてそのリストを小さいままにできます。) ',
+    'impinst2c' => '実行ボタンをクリックしたら、 [戻る]をクリックしてこのページに戻ってください。',
+    'impinst3' => '以下の内容が送られるでしょう。: (もしそれらが間違っていたら、編集することができます。).',
+    'availb' => 'ブラックリスト表示',
+    'clickv' => 'クリックしてブラックリストを表示',
+    'clicki' => 'クリックしてブラックリストをインポート',
+    'ok' => 'OK',
+    'rsscreated' => 'RSSフィードが作成されました',
+    'add1' => '追加されました ',
+    'add2' => ' エントリー: ',
+    'add3' => "のブラックリスト",
+    'adminc' => '管理者コマンド:',
+    'mblack' => 'マイブラックリスト:',
+    'rlinks' => '関係先リンク:',
+    'e3' => 'Geeklogのセンサーリスト追加:',
+    'addcen' => 'センサーリスト追加',
+    'addentry' => 'エントリ追加',
+    'e1' => 'クリックしてエントリを削除',
+    'e2' => 'エントリを追加して, エントリ追加ボタンをクリックしてください。エントリーは完全なPerl正規表現を使用することができます。 ',
+    'pblack' => 'Spam-X パーソナルブラックリスト',
+    'conmod' => 'Spam-Xモジュール設定',
+    'acmod' => 'Spam-X アクションモジュール',
+    'exmod' => 'Spam-X イグザミンモジュール',
+    'actmod' => 'アクティブモジュール',
+    'avmod' => 'アベイラブルモジュール',
+    'coninst' => '<hr>クリックしてアクティブモジュールを削除、クリックしてアベイラブルモジュールを追加。<br>モジュールは、示された順序で実行されます。 ',
+    'fsc' => ' スパムポストマッチングが見つかりました。',
+    'fsc1' => ' ユーザによる投稿',
+    'fsc2' => ' IP から',
+    'uMTlist' => 'Update MT-ブラックリスト',
+    'uMTlist2' => ': 追加 ',
+    'uMTlist3' => ' 投稿と削除 ',
+    'entries' => ' 投稿.',
+    'uPlist' => 'パーソナルブラックリストアップデート',
+    'entriesadded' => 'エントリが追加されました',
+    'entriesdeleted' => 'エントリが削除されました',
+    'viewlog' => 'Spam-Xログ閲覧',
+    'clearlog' => 'ログファイル削除',
+    'logcleared' => '- Spam-X ログファイルが削除されました',
+    'plugin' => 'プラグイン',
+    'access_denied' => 'アクセスが拒否されました',
+    'access_denied_msg' => 'ルートユーザだけがこのページにアクセスできます。あなたのユーザ名とIPアドレスを記録しました。',
+    'admin' => 'プラグイン管理',
+    'install_header' => 'インストール/アンインストールプラグイン',
+    'installed' => 'プラグインがインストールされました',
+    'uninstalled' => 'プラグインはインストールされませんでした',
+    'install_success' => 'インストール成功',
+    'install_failed' => 'インストール失敗 -- エラーログを見てください。',
+    'uninstall_msg' => 'プラグインはアンインストールされました',
+    'install' => 'インストール',
+    'uninstall' => 'アンインストール',
+    'warning' => '注意! プラグインがまだ有効です',
+    'enabled' => 'アンインストールの前まで利用不可。',
+    'readme' => 'STOP! インストールの前に読んで ',
+    'installdoc' => 'インストールドキュメントを。',
+    'spamdeleted' => 'スパムポスト削除',
+    'foundspam' => 'スパムポストマッチングが見つかりました ',
+    'foundspam2' => ' ユーザによって投稿されました ',
+    'foundspam3' => ' IPから ',
+	'deletespam' => 'スパム削除',
+	'numtocheck' => 'コメント数チェック',
+	'note1'		=> '<p>Note: マスデリートで攻撃から守ります。',
+	'note2'		=> ' コメントスパムと Spam-X はキャッチしません。 <ul><li>最初のリンクとその他 ',
+	'note3'		=> 'このスパムコメントをあなたのパーソナルブラックリストへ追加</li><li>',
+	'note4'		=> 'ここに戻り、最近のコメントを Spam-X チェック</li></ul><p>',
+	'note5'		=> '最新コメントを最後のコメントに追加チェック -- コメントチェック ',
+	'note6'		=> 'チェックをより多く要求します。</p>',
+	'masshead'	=> '<hr><h1 align="center">マスデリート～スパムコメント</h1>',
+	'masstb' => '<hr><h1 align="center">マスデリート～トラックバックスパム</h1>',
+	'comdel'	=> 'コメントが削除されました。',
+    'initial_Pimport' => '<p>パーソナルブラックリスト インポート"',
+    'initial_import' => '初期 MT-ブラックリスト インポート',
+    'import_success' => '<p> %d ブラクリストエントリーがインストールできました。',
+    'import_failure' => '<p><strong>エラー:</strong> エントリーがみつかりません。',
+    'allow_url_fopen' => '<p>申し訳ありませんがあなたのウェブサーバのコンフィギュレーションはリモートファイルの読み込みを許可していません。 (<code>allow_url_fopen</code> がオフ). 次のURLからブラックリストをダウンロードしてGeeklogの "データ" ディレクトリにアップロードしてください。<tt>%s</tt>, 再実行の前に:',
+    'documentation' => 'Spam-X プラグインドキュメント',
+    'emailmsg' => "新しいスパム投稿 \"%s\"\nUser UID: \"%s\"\n\nコンテンツ:\"%s\"",
+    'emailsubject' => 'Spam ポスト %s',
+    'ipblack' => 'Spam-X IP ブラックリスト',
+    'ipofurlblack' => 'Spam-X IP of URL ブラックリスト',
+    'headerblack' => 'Spam-X HTTP Header ブラックリスト',
+    'headers' => 'リクエストヘッダ:',
+
+    'stats_headline' => 'Spam-X ステータス',
+    'stats_page_title' => 'ブラックリスト',
+    'stats_entries' => 'エントリ',
+    'stats_mtblacklist' => 'MT-ブラックリスト',
+    'stats_pblacklist' => 'パーソナルブラックリスト',
+    'stats_ip' => 'ブロックIP',
+    'stats_ipofurl' => 'URLのIPによってブロックされました',
+    'stats_header' => 'HTTP ヘッダ',
+    'stats_deleted' => 'スパムとして投稿削除',
+
+    'plugin_name' => 'Spam-X',
+    'slvwhitelist' => 'SLV ホワイトリスト'
+);
+
+
+/* Define Messages that are shown when Spam-X module action is taken */
+$PLG_spamx_MESSAGE128 = 'Spam 削除。投稿は削除されました。';
+$PLG_spamx_MESSAGE8   = 'Spam 削除。メールが管理者に送られました。';
+
+// Messages for the plugin upgrade
+$PLG_spamx_MESSAGE3001 = 'Spam-X プラグインがアップグレードしました。';
+$PLG_spamx_MESSAGE3002 = 'Spam-X プラグインのアップグレードに失敗しました。';
+
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/russian.php 1.4.1.src/cpanel-glprivate/plugins/spamx/language/russian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/russian.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/language/russian.php	2006-11-01 14:38:55.000000000 -0600
@@ -0,0 +1,137 @@
+<?php
+
+/**
+ * File: russian.php
+ * This is the Russian-1251 language page for the Geeklog Spam-X Plug-in!
+ * 
+ * Copyright (C) 2006 by the following authors:
+ * Author        Pavel Kovalenko        rumata AT dragons DOT ru
+ * 
+ * Licensed under GNU General Public License
+ *
+ * $Id: russian.php,v 1.1 2006/11/01 20:38:55 dhaun Exp $
+ */
+
+$LANG_SX00 = array (
+    'inst1' => '<p>   ,  ',
+    'inst2' => '      ,       .',
+    'inst3' => '</p><p>          , ',
+    'inst4' => '    <a href="mailto:spamx@pigstye.net">spamx@pigstye.net</a>. ',
+    'inst5' => '    .',
+    'submit' => '',
+    'subthis' => '     Spam-X',
+    'secbut' => '   rdf feed,     .',
+    'sitename' => ' : ',
+    'URL' => 'URL   Spam-X: ',
+    'RDF' => 'RDF url: ',
+    'impinst1a' => '  Spam-X               .',
+    'impinst1b' => '     . (  .)',
+    'impinst2' => '       Gplugs/Spam-X,         ',
+    'impinst2a' => ',    . (:     ,        ',
+    'impinst2b' => '     .         .) ',
+    'impinst2c' => '   \'\',  []   ,   .',
+    'impinst3' => '   : ( ,   ).',
+    'availb' => '  ',
+    'clickv' => '    ',
+    'clicki' => '    ',
+    'ok' => 'OK',
+    'rsscreated' => ' RSS Feed',
+    'add1' => ' ',
+    'add2' => '   ',
+    'add3' => "  .",
+    'adminc' => ':',
+    'mblack' => '  :',
+    'rlinks' => ' :',
+    'e3' => '    Geeklogs CensorList  :',
+    'addcen' => '   ',
+    'addentry' => ' ',
+    'e1' => '     .',
+    'e2' => '        .       .',
+    'pblack' => '  Spam-X',
+    'conmod' => '  Spam-X',
+    'acmod' => '  Spam-X',
+    'exmod' => '  Spam-X',
+    'actmod' => ' ',
+    'avmod' => ' ',
+    'coninst' => '<hr>      ,      .<br>     .',
+    'fsc' => '   ',
+    'fsc1' => '  ',
+    'fsc2' => '  IP ',
+    'uMTlist' => ' MT-Blacklist',
+    'uMTlist2' => ':  ',
+    'uMTlist3' => '    ',
+    'entries' => ' .',
+    'uPlist' => '   ',
+    'entriesadded' => ' ',
+    'entriesdeleted' => ' ',
+    'viewlog' => '  Spam-X',
+    'clearlog' => '  ',
+    'logcleared' => '-  Spam-X ',
+    'plugin' => '',
+    'access_denied' => ' ',
+    'access_denied_msg' => '      .     IP   .',
+    'admin' => ' ',
+    'install_header' => '/ ',
+    'installed' => ' ',
+    'uninstalled' => ' ',
+    'install_success' => '  ',
+    'install_failed' => '  --   ,   .',
+    'uninstall_msg' => '  ',
+    'install' => '',
+    'uninstall' => '',
+    'warning' => '!  - ',
+    'enabled' => '   .',
+    'readme' => '!    ',
+    'installdoc' => '  .',
+    'spamdeleted' => '  ',
+    'foundspam' => '   ',
+    'foundspam2' => '  ',
+    'foundspam3' => '  IP ',
+	'deletespam' => ' ',
+	'numtocheck' => '   ',
+	'note1'		=> '<p>:     ',
+	'note2'		=> '       Spam-X  .  <ul><li>        ',
+	'note3'		=> '     .</li><li> ',
+	'note4'		=> '    Spam-X   .</li></ul> ',
+	'note5'		=> '       --   ',
+	'note6'		=> '  .</p>',
+	'masshead'	=> '<hr><h1 align="center">   </h1>',
+	'masstb' => '<hr><h1 align="center">   Trackback</h1>',
+	'comdel'	=> '  .',
+    'initial_Pimport' => '<p>  "',
+    'initial_import' => '  MT-Blacklist',
+    'import_success' => '<p>  %d   .',
+    'import_failure' => '<p><strong>:</strong>   .',
+    'allow_url_fopen' => '<p>,        ,  (<code>allow_url_fopen</code> ).     URL      , <tt>%s</tt>,     :',
+    'documentation' => '  Spam-X',
+    'emailmsg' => "     \"%s\"\nUID : \"%s\"\n\n:\"%s\"",
+    'emailsubject' => '  %s',
+    'ipblack' => ' Spam-X IP',
+    'ipofurlblack' => ' Spam-X IP  URL',
+    'headerblack' => ' Spam-X  HTTP',
+    'headers' => ' :',
+
+    'stats_headline' => ' Spam-X',
+    'stats_page_title' => ' ',
+    'stats_entries' => '',
+    'stats_mtblacklist' => 'MT-Blacklist',
+    'stats_pblacklist' => '  ',
+    'stats_ip' => ' IP',
+    'stats_ipofurl' => ' IP  URL',
+    'stats_header' => ' HTTP',
+    'stats_deleted' => '   ',
+
+    'plugin_name' => 'Spam-X',
+    'slvwhitelist' => 'SLV Whitelist'
+);
+
+
+/* Define Messages that are shown when Spam-X module action is taken */
+$PLG_spamx_MESSAGE128 = '      .';
+$PLG_spamx_MESSAGE8   = ' .   .';
+
+//   
+$PLG_spamx_MESSAGE3001 = ' Spam-X  .';
+$PLG_spamx_MESSAGE3002 = '    Spam-X.';
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/russian_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/spamx/language/russian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/russian_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/language/russian_utf-8.php	2006-11-01 14:38:55.000000000 -0600
@@ -0,0 +1,137 @@
+<?php
+
+/**
+ * File: russian.php
+ * This is the Russian UTF-8 language page for the Geeklog Spam-X Plug-in!
+ * 
+ * Copyright (C) 2006 by the following authors:
+ * Author        Pavel Kovalenko        rumata AT dragons DOT ru
+ * 
+ * Licensed under GNU General Public License
+ *
+ * $Id: russian_utf-8.php,v 1.1 2006/11/01 20:38:55 dhaun Exp $
+ */
+
+$LANG_SX00 = array (
+    'inst1' => '<p>Если Вы это сделаете, другие ',
+    'inst2' => 'смогут просматривать и импортировать Ваш черный список, что позволит создать более эффективную базу данных.',
+    'inst3' => '</p><p>Если Ваш сайт был подписан и Вы хотите выйти из списка, ',
+    'inst4' => 'отправьте уведомление на адрес <a href="mailto:spamx@pigstye.net">spamx@pigstye.net</a>. ',
+    'inst5' => 'Все запросы принимаются с благодарностью.',
+    'submit' => 'Подписать',
+    'subthis' => 'отправку информации в центральную базу Spam-X',
+    'secbut' => 'Вторая кнопка создает rdf feed, предоставляя возможность импортировать Ваш список.',
+    'sitename' => 'Имя сайта: ',
+    'URL' => 'URL для списка Spam-X: ',
+    'RDF' => 'RDF url: ',
+    'impinst1a' => 'Перед использованием Spam-X отправьте комментарий в отдел блокировки спама для просмотра и импорта других черных списков частных сайтов.',
+    'impinst1b' => ' Просьба нажать следующие две кнопки. (Вы нажали последнюю.)',
+    'impinst2' => 'Первая выполняет подписку Вашего сайта на сайте Gplugs/Spam-X, после чего его можно добавить в главный список ',
+    'impinst2a' => 'сайтов, предоставляющих свои черные списки. (Примечание: если у Вас несколько сайтов, то возможно Вы хотите обозначить один как ',
+    'impinst2b' => 'главный и вписать только его название. Это упростит обновление Ваших сайтов и список будет меньше.) ',
+    'impinst2c' => 'После нажатаия кнопки \'Подписать\', кликните [назад] в Вашем броузере, чтобы вернуться сюда.',
+    'impinst3' => 'Следующие данные будут отправлены: (поправьте их, если они неправильные).',
+    'availb' => 'Доступные черные списки',
+    'clickv' => 'Нажмите для просмотра черных списков',
+    'clicki' => 'Нажмите для импорта черных списков',
+    'ok' => 'OK',
+    'rsscreated' => 'Созданные RSS Feed',
+    'add1' => 'Добавленные ',
+    'add2' => ' записи от ',
+    'add3' => " черные списки.",
+    'adminc' => 'Команды:',
+    'mblack' => 'Мой черный список:',
+    'rlinks' => 'Похожие ссылки:',
+    'e3' => 'Для добавления слов из Geeklogs CensorList нажмите кнопку:',
+    'addcen' => 'Добавить список запрещенных слов',
+    'addentry' => 'Добавить запись',
+    'e1' => 'Для удаления записи нажмите на нее.',
+    'e2' => 'Для добавления записи щелкните по ней и нажмите Добавить. Записи могут использовать полноценные регулярные выражения перл.',
+    'pblack' => 'Частный список Spam-X',
+    'conmod' => 'Конфигурация использования Spam-X',
+    'acmod' => 'Модули действий Spam-X',
+    'exmod' => 'Модули проверки Spam-X',
+    'actmod' => 'Действующие модули',
+    'avmod' => 'Доступные модули',
+    'coninst' => '<hr>Для удаления действующего модуля нажмите на него, для добавления нажмите на доступный модуль.<br>Модули выполняются по порядку в списке.',
+    'fsc' => 'Найден спам комментарий ',
+    'fsc1' => ' опубликовано ',
+    'fsc2' => ' с IP ',
+    'uMTlist' => 'Обновить MT-Blacklist',
+    'uMTlist2' => ': добавлено ',
+    'uMTlist3' => ' записей и удалено ',
+    'entries' => ' записей.',
+    'uPlist' => 'Обновить частный черный список',
+    'entriesadded' => 'Добавлено записей',
+    'entriesdeleted' => 'Удалено записей',
+    'viewlog' => 'Просмотр лога Spam-X',
+    'clearlog' => 'Очистить файл лога',
+    'logcleared' => '- лог Spam-X очищен',
+    'plugin' => 'Модуль',
+    'access_denied' => 'Доступ запрещен',
+    'access_denied_msg' => 'Только администраторы имеют доступ к данной странице.  Ваш логин и IP адрес были зафиксированы.',
+    'admin' => 'Управление модулями',
+    'install_header' => 'Установить/Отменить модуль',
+    'installed' => 'Модуль установлен',
+    'uninstalled' => 'Модуль отменен',
+    'install_success' => 'Установка прошла успешно',
+    'install_failed' => 'Установка провалилась -- смотрите лог ошибок, чтобы выяснить причину.',
+    'uninstall_msg' => 'Модуль успешно демонтирован',
+    'install' => 'Установить',
+    'uninstall' => 'Демонтировать',
+    'warning' => 'Внимание! Модуль по-прежнему включен',
+    'enabled' => 'Выключить модуль перед демонтажом.',
+    'readme' => 'Стоп! Перед установкой внимательно прочтите',
+    'installdoc' => ' описание установки.',
+    'spamdeleted' => 'Удалить спам комментарий',
+    'foundspam' => 'Найден спам комментарий ',
+    'foundspam2' => ' опубликовано ',
+    'foundspam3' => ' с IP ',
+	'deletespam' => 'Удалить спам',
+	'numtocheck' => 'Количество комментариев для проверки',
+	'note1'		=> '<p>Примечание: массовое удаление применяется в случае',
+	'note2'		=> ' если во время атаки спам комментариев Spam-X не сработал.  <ul><li>Сначала поищите ссылки на аналогичные идентификации этого спама ',
+	'note3'		=> 'и добавьте в свой черный список.</li><li>Далее ',
+	'note4'		=> 'вернитесь и с помощью Spam-X проверьте последние комментарии.</li></ul>Комментарии ',
+	'note5'		=> 'проверены от самых новых до самых старых -- дальнейшая проверка ',
+	'note6'		=> 'требует большего времени.</p>',
+	'masshead'	=> '<hr><h1 align="center">Массовое удаление спам комментариев</h1>',
+	'masstb' => '<hr><h1 align="center">массовое удаление спама Trackback</h1>',
+	'comdel'	=> ' комментариев удалено.',
+    'initial_Pimport' => '<p>импорт черного списка"',
+    'initial_import' => 'Начальный импорт MT-Blacklist',
+    'import_success' => '<p>Успешно импортировано %d записей черного списка.',
+    'import_failure' => '<p><strong>Ошибка:</strong> Записей не найдено.',
+    'allow_url_fopen' => '<p>Извините, конфигурация Вашего вебсервера не допускает чтения удаленных файлов, опция (<code>allow_url_fopen</code> выключена). Загрузите список со следующего URL и выгрузите его в каталог данных, <tt>%s</tt>, прежде чем попробовать повторить попытку:',
+    'documentation' => 'Документация модуля Spam-X',
+    'emailmsg' => "Новый спам был записан в \"%s\"\nUID пользователя: \"%s\"\n\nСодержание:\"%s\"",
+    'emailsubject' => 'Спам в %s',
+    'ipblack' => 'Список Spam-X IP',
+    'ipofurlblack' => 'Список Spam-X IP или URL',
+    'headerblack' => 'Список Spam-X заголовков HTTP',
+    'headers' => 'Запрашиваемые заголовки:',
+
+    'stats_headline' => 'Статистика Spam-X',
+    'stats_page_title' => 'Черный список',
+    'stats_entries' => 'Записи',
+    'stats_mtblacklist' => 'MT-Blacklist',
+    'stats_pblacklist' => 'Персональный черный список',
+    'stats_ip' => 'Заблокированные IP',
+    'stats_ipofurl' => 'Блокировка IP или URL',
+    'stats_header' => 'Заголовки HTTP',
+    'stats_deleted' => 'Сообщения удалены как спам',
+
+    'plugin_name' => 'Spam-X',
+    'slvwhitelist' => 'SLV Whitelist'
+);
+
+
+/* Define Messages that are shown when Spam-X module action is taken */
+$PLG_spamx_MESSAGE128 = 'Обнаружен спам и сообщение или комментарий удалены.';
+$PLG_spamx_MESSAGE8   = 'Обнаружен спам. Администратору отправлено уведомление.';
+
+// Сообщения обновления модуля
+$PLG_spamx_MESSAGE3001 = 'Модуль Spam-X успешно обновлен.';
+$PLG_spamx_MESSAGE3002 = 'Не удалось обновить модуль Spam-X.';
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/slovenian.php 1.4.1.src/cpanel-glprivate/plugins/spamx/language/slovenian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/slovenian.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/language/slovenian.php	2006-10-15 02:48:24.000000000 -0500
@@ -0,0 +1,140 @@
+<?php
+
+/**
+ * File: # slovenian.php - version 1.4.1
+ * This is the slovenian language file for the Geeklog Spam-X plugin
+ * language file for geeklog version 1.4.1 beta by mb
+ * gape@gape.org ; za pripombe, predloge ipd ... pii na email
+
+ * 
+ * Copyright (C) 2004-2006 by the following authors:
+ * Author        Tom Willett        tomw AT pigstye DOT net
+ * 
+ * Licensed under GNU General Public License
+ *
+ * $Id: slovenian.php,v 1.1 2006/10/15 07:48:24 dhaun Exp $
+ */
+
+$LANG_SX00 = array (
+    'inst1' => '<p>e stori to, potem si bodo drugi ',
+    'inst2' => ' lahko ogledali in uvozili tvojo rno listo, in lahko bomo ustvarili bolj uinkovito ',
+    'inst3' => 'razvreno podatkovno bazo.</p><p>e si oddal/a svojo spletno stran in se odloil/a, da ne eli, da tvoja spletna stran ostane na listi ',
+    'inst4' => 'to sporoi prek e-pote na naslov <a href="mailto:spamx@pigstye.net">spamx@pigstye.net</a>. ',
+    'inst5' => 'Vse zahteve bodo spotovane.',
+    'submit' => 'Oddaj',
+    'subthis' => 'this info to Spam-X Central Database',
+    'secbut' => 'Ta drugi gumb ustvari zdrueno vsebino v zapisu rdf, da lahko drugi uvozijo tvojo listo.',
+    'sitename' => 'Ime strani: ',
+    'URL' => 'URL v seznam Spam-X : ',
+    'RDF' => 'RDF url: ',
+    'impinst1a' => 'Before you use the Spam-X comment Spam blocker facility to view and import personal Blacklists from other',
+    'impinst1b' => ' sites, I ask that you press the following two buttons. (You have to press the last one.)',
+    'impinst2' => 'This first submits your website to the Gplugs/Spam-X site so that it can be added to the master list of ',
+    'impinst2a' => 'sites sharing their blacklists. (Note: if you have multiple sites you might want to designate one as the ',
+    'impinst2b' => 'master and only submit its name. This will allow you to update your sites easily and keep the list smaller.) ',
+    'impinst2c' => 'After you press the Submit button, press [back] on your browser to return here.',
+    'impinst3' => 'The Following values will be sent: (you can edit them if they are wrong).',
+    'availb' => 'Razpololjive rne liste',
+    'clickv' => 'Klikni za ogled rne liste',
+    'clicki' => 'Klikni za uvoz rne liste',
+    'ok' => 'V redu',
+    'rsscreated' => 'Ustvarjena zdruena vsebina RSS',
+    'add1' => 'Dodani ',
+    'add2' => ' vpisi s rne liste uporabnika ',
+    'add3' => ".",
+    'adminc' => 'Upravniki ukazi:',
+    'mblack' => 'Moja rna lista:',
+    'rlinks' => 'Sorodne povezave:',
+    'e3' => ' Za dodajanje besed iz Geeklogovega cenzurnega seznama pritisni gumb:',
+    'addcen' => 'Dodaj cenzurni seznam',
+    'addentry' => 'Dodaj vpis',
+    'e1' => 'Da izbrie vpis, ga klikni.',
+    'e2' => 'Da doda vpis, ga vnesi v okence in klikni Dodaj. Vnosi lahko uporabljajo  full Perl Regular Expressions.',
+    'pblack' => 'Osebna rna lista Spam-X',
+    'conmod' => 'Konfiguriraj Spam-X Module Usage',
+    'acmod' => 'Akcijski moduli Spam-X ',
+    'exmod' => 'Preiskovalni moduli Spam-X ',
+    'actmod' => 'Aktivni moduli',
+    'avmod' => 'Razpololjivi moduli',
+    'coninst' => '<hr>Klikni na aktivni modul, da ga odstrani, klikni na Razpololjivi modul, da ga doda.<br>Moduli are executed in order presented.',
+    'fsc' => 'Found Spam Post matching ',
+    'fsc1' => ' objavil uporabnik ',
+    'fsc2' => ' z IP-ja ',
+    'uMTlist' => 'Posodobi rno listo MT',
+    'uMTlist2' => ': Dodani ',
+    'uMTlist3' => ' vpisi in izbrisani ',
+    'entries' => ' vpisi.',
+    'uPlist' => 'Posodobi osebno rno listo',
+    'entriesadded' => 'Vpisi dodani',
+    'entriesdeleted' => 'Vpisi izbrisani',
+    'viewlog' => 'Oglej si Spam-X Log',
+    'clearlog' => 'Poisti datoteko Log',
+    'logcleared' => '- Datoteka Spam-X Log poiena',
+    'plugin' => 'Vtinik',
+    'access_denied' => 'Dostop zavrnjen',
+    'access_denied_msg' => 'Dostop do te strani imajo samo korenski uporabniki.  Tvoje uporabniko ime in IP sta zapisana.',
+    'admin' => 'Upravljanje vtinikov',
+    'install_header' => 'Namesti/deinstaliraj vtinik',
+    'installed' => 'Vtinik je nameen',
+    'uninstalled' => 'Vtinik ni nameen',
+    'install_success' => 'Namestitev uspena',
+    'install_failed' => 'Namestitev ni uspela -- See your error log to find out why.',
+    'uninstall_msg' => 'Plugin Successfully Uninstalled',
+    'install' => 'Install',
+    'uninstall' => 'UnInstall',
+    'warning' => 'Warning! Plugin is still Enabled',
+    'enabled' => 'Disable plugin before uninstalling.',
+    'readme' => 'STOP! Before you press install please read the ',
+    'installdoc' => 'Install Document.',
+    'spamdeleted' => 'Deleted Spam Post',
+    'foundspam' => 'Found Spam Post matching ',
+    'foundspam2' => ' posted by user ',
+    'foundspam3' => ' from IP ',
+	'deletespam' => 'Delete Spam',
+	'numtocheck' => 'Number of Comments to check',
+	'note1'		=> '<p>Note: Mass Delete is intended to help you when you are hit by',
+	'note2'		=> ' comment spam and Spam-X does not catch it.  <ul><li>First find the link(s) or other ',
+	'note3'		=> 'identifiers of this spam comment and add it to your personal blacklist.</li><li>Then ',
+	'note4'		=> 'come back here and have Spam-X check the latest comments for spam.</li></ul><p>Comments ',
+	'note5'		=> 'are checked from newest comment to oldest -- checking more comments ',
+	'note6'		=> 'requires more time for the check.</p>',
+	'masshead'	=> '<hr><h1 align="center">Mass Delete Spam Comments</h1>',
+	'masstb' => '<hr><h1 align="center">Mass Delete Trackback Spam</h1>',
+	'comdel'	=> ' comments deleted.',
+    'initial_Pimport' => '<p>Personal Blacklist Import"',
+    'initial_import' => 'Initial MT-Blacklist Import',
+    'import_success' => '<p>Successfully imported %d blacklist entries.',
+    'import_failure' => '<p><strong>Error:</strong> No entries found.',
+    'allow_url_fopen' => '<p>Sorry, your webserver configuration does not allow reading of remote files (<code>allow_url_fopen</code> is off). Please download the blacklist from the following URL and upload it into Geeklog\'s "data" directory, <tt>%s</tt>, before trying again:',
+    'documentation' => 'Spam-X Plugin Documentation',
+    'emailmsg' => "A new spam post has been submitted at \"%s\"\nUser UID: \"%s\"\n\nContent:\"%s\"",
+    'emailsubject' => 'Spam post at %s',
+    'ipblack' => 'Spam-X IP Blacklist',
+    'ipofurlblack' => 'Spam-X IP of URL Blacklist',
+    'headerblack' => 'Spam-X HTTP Header Blacklist',
+    'headers' => 'Request headers:',
+
+    'stats_headline' => 'Spam-X Statistics',
+    'stats_page_title' => 'Blacklist',
+    'stats_entries' => 'Entries',
+    'stats_mtblacklist' => 'MT-Blacklist',
+    'stats_pblacklist' => 'Personal Blacklist',
+    'stats_ip' => 'Blocked IPs',
+    'stats_ipofurl' => 'Blocked by IP of URL',
+    'stats_header' => 'HTTP headers',
+    'stats_deleted' => 'Posts deleted as spam',
+
+    'plugin_name' => 'Spam-X',
+    'slvwhitelist' => 'SLV Whitelist'
+);
+
+
+/* Define Messages that are shown when Spam-X module action is taken */
+$PLG_spamx_MESSAGE128 = 'Spam detected. Post was deleted.';
+$PLG_spamx_MESSAGE8   = 'Spam detected. Email sent to admin.';
+
+// Messages for the plugin upgrade
+$PLG_spamx_MESSAGE3001 = 'Spam-X plugin upgraded successfully.';
+$PLG_spamx_MESSAGE3002 = 'Failed to upgrade the Spam-X plugin.';
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/slovenian_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/spamx/language/slovenian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/slovenian_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/language/slovenian_utf-8.php	2006-10-15 02:48:24.000000000 -0500
@@ -0,0 +1,140 @@
+<?php
+
+/**
+ * File: # slovenian.php - version 1.4.1
+ * This is the slovenian language file for the Geeklog Spam-X plugin
+ * language file for geeklog version 1.4.1 beta by mb
+ * gape@gape.org ; za pripombe, predloge ipd ... piši na email
+
+ * 
+ * Copyright (C) 2004-2006 by the following authors:
+ * Author        Tom Willett        tomw AT pigstye DOT net
+ * 
+ * Licensed under GNU General Public License
+ *
+ * $Id: slovenian_utf-8.php,v 1.1 2006/10/15 07:48:24 dhaun Exp $
+ */
+
+$LANG_SX00 = array (
+    'inst1' => '<p>Če storiš to, potem si bodo drugi ',
+    'inst2' => ' lahko ogledali in uvozili tvojo črno listo, in lahko bomo ustvarili bolj učinkovito ',
+    'inst3' => 'razvrščeno podatkovno bazo.</p><p>Če si oddal/a svojo spletno stran in se odločil/a, da ne želiš, da tvoja spletna stran ostane na listi ',
+    'inst4' => 'to sporoči prek e-pošte na naslov <a href="mailto:spamx@pigstye.net">spamx@pigstye.net</a>. ',
+    'inst5' => 'Vse zahteve bodo spoštovane.',
+    'submit' => 'Oddaj',
+    'subthis' => 'this info to Spam-X Central Database',
+    'secbut' => 'Ta drugi gumb ustvari združeno vsebino v zapisu rdf, da lahko drugi uvozijo tvojo listo.',
+    'sitename' => 'Ime strani: ',
+    'URL' => 'URL v seznam Spam-X : ',
+    'RDF' => 'RDF url: ',
+    'impinst1a' => 'Before you use the Spam-X comment Spam blocker facility to view and import personal Blacklists from other',
+    'impinst1b' => ' sites, I ask that you press the following two buttons. (You have to press the last one.)',
+    'impinst2' => 'This first submits your website to the Gplugs/Spam-X site so that it can be added to the master list of ',
+    'impinst2a' => 'sites sharing their blacklists. (Note: if you have multiple sites you might want to designate one as the ',
+    'impinst2b' => 'master and only submit its name. This will allow you to update your sites easily and keep the list smaller.) ',
+    'impinst2c' => 'After you press the Submit button, press [back] on your browser to return here.',
+    'impinst3' => 'The Following values will be sent: (you can edit them if they are wrong).',
+    'availb' => 'Razpoložljive črne liste',
+    'clickv' => 'Klikni za ogled črne liste',
+    'clicki' => 'Klikni za uvoz črne liste',
+    'ok' => 'V redu',
+    'rsscreated' => 'Ustvarjena združena vsebina RSS',
+    'add1' => 'Dodani ',
+    'add2' => ' vpisi s črne liste uporabnika ',
+    'add3' => ".",
+    'adminc' => 'Upravniški ukazi:',
+    'mblack' => 'Moja črna lista:',
+    'rlinks' => 'Sorodne povezave:',
+    'e3' => ' Za dodajanje besed iz Geeklogovega cenzurnega seznama pritisni gumb:',
+    'addcen' => 'Dodaj cenzurni seznam',
+    'addentry' => 'Dodaj vpis',
+    'e1' => 'Da izbrišeš vpis, ga klikni.',
+    'e2' => 'Da dodaš vpis, ga vnesi v okence in klikni Dodaj. Vnosi lahko uporabljajo  full Perl Regular Expressions.',
+    'pblack' => 'Osebna črna lista Spam-X',
+    'conmod' => 'Konfiguriraj Spam-X Module Usage',
+    'acmod' => 'Akcijski moduli Spam-X ',
+    'exmod' => 'Preiskovalni moduli Spam-X ',
+    'actmod' => 'Aktivni moduli',
+    'avmod' => 'Razpoložljivi moduli',
+    'coninst' => '<hr>Klikni na aktivni modul, da ga odstraniš, klikni na Razpoložljivi modul, da ga dodaš.<br>Moduli are executed in order presented.',
+    'fsc' => 'Found Spam Post matching ',
+    'fsc1' => ' objavil uporabnik ',
+    'fsc2' => ' z IP-ja ',
+    'uMTlist' => 'Posodobi črno listo MT',
+    'uMTlist2' => ': Dodani ',
+    'uMTlist3' => ' vpisi in izbrisani ',
+    'entries' => ' vpisi.',
+    'uPlist' => 'Posodobi osebno črno listo',
+    'entriesadded' => 'Vpisi dodani',
+    'entriesdeleted' => 'Vpisi izbrisani',
+    'viewlog' => 'Oglej si Spam-X Log',
+    'clearlog' => 'Počisti datoteko Log',
+    'logcleared' => '- Datoteka Spam-X Log počiščena',
+    'plugin' => 'Vtičnik',
+    'access_denied' => 'Dostop zavrnjen',
+    'access_denied_msg' => 'Dostop do te strani imajo samo korenski uporabniki.  Tvoje uporabniško ime in IP sta zapisana.',
+    'admin' => 'Upravljanje vtičnikov',
+    'install_header' => 'Namesti/deinstaliraj vtičnik',
+    'installed' => 'Vtičnik je nameščen',
+    'uninstalled' => 'Vtičnik ni nameščen',
+    'install_success' => 'Namestitev uspešna',
+    'install_failed' => 'Namestitev ni uspela -- See your error log to find out why.',
+    'uninstall_msg' => 'Plugin Successfully Uninstalled',
+    'install' => 'Install',
+    'uninstall' => 'UnInstall',
+    'warning' => 'Warning! Plugin is still Enabled',
+    'enabled' => 'Disable plugin before uninstalling.',
+    'readme' => 'STOP! Before you press install please read the ',
+    'installdoc' => 'Install Document.',
+    'spamdeleted' => 'Deleted Spam Post',
+    'foundspam' => 'Found Spam Post matching ',
+    'foundspam2' => ' posted by user ',
+    'foundspam3' => ' from IP ',
+	'deletespam' => 'Delete Spam',
+	'numtocheck' => 'Number of Comments to check',
+	'note1'		=> '<p>Note: Mass Delete is intended to help you when you are hit by',
+	'note2'		=> ' comment spam and Spam-X does not catch it.  <ul><li>First find the link(s) or other ',
+	'note3'		=> 'identifiers of this spam comment and add it to your personal blacklist.</li><li>Then ',
+	'note4'		=> 'come back here and have Spam-X check the latest comments for spam.</li></ul><p>Comments ',
+	'note5'		=> 'are checked from newest comment to oldest -- checking more comments ',
+	'note6'		=> 'requires more time for the check.</p>',
+	'masshead'	=> '<hr><h1 align="center">Mass Delete Spam Comments</h1>',
+	'masstb' => '<hr><h1 align="center">Mass Delete Trackback Spam</h1>',
+	'comdel'	=> ' comments deleted.',
+    'initial_Pimport' => '<p>Personal Blacklist Import"',
+    'initial_import' => 'Initial MT-Blacklist Import',
+    'import_success' => '<p>Successfully imported %d blacklist entries.',
+    'import_failure' => '<p><strong>Error:</strong> No entries found.',
+    'allow_url_fopen' => '<p>Sorry, your webserver configuration does not allow reading of remote files (<code>allow_url_fopen</code> is off). Please download the blacklist from the following URL and upload it into Geeklog\'s "data" directory, <tt>%s</tt>, before trying again:',
+    'documentation' => 'Spam-X Plugin Documentation',
+    'emailmsg' => "A new spam post has been submitted at \"%s\"\nUser UID: \"%s\"\n\nContent:\"%s\"",
+    'emailsubject' => 'Spam post at %s',
+    'ipblack' => 'Spam-X IP Blacklist',
+    'ipofurlblack' => 'Spam-X IP of URL Blacklist',
+    'headerblack' => 'Spam-X HTTP Header Blacklist',
+    'headers' => 'Request headers:',
+
+    'stats_headline' => 'Spam-X Statistics',
+    'stats_page_title' => 'Blacklist',
+    'stats_entries' => 'Entries',
+    'stats_mtblacklist' => 'MT-Blacklist',
+    'stats_pblacklist' => 'Personal Blacklist',
+    'stats_ip' => 'Blocked IPs',
+    'stats_ipofurl' => 'Blocked by IP of URL',
+    'stats_header' => 'HTTP headers',
+    'stats_deleted' => 'Posts deleted as spam',
+
+    'plugin_name' => 'Spam-X',
+    'slvwhitelist' => 'SLV Whitelist'
+);
+
+
+/* Define Messages that are shown when Spam-X module action is taken */
+$PLG_spamx_MESSAGE128 = 'Spam detected. Post was deleted.';
+$PLG_spamx_MESSAGE8   = 'Spam detected. Email sent to admin.';
+
+// Messages for the plugin upgrade
+$PLG_spamx_MESSAGE3001 = 'Spam-X plugin upgraded successfully.';
+$PLG_spamx_MESSAGE3002 = 'Failed to upgrade the Spam-X plugin.';
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/spanish.php 1.4.1.src/cpanel-glprivate/plugins/spamx/language/spanish.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/spanish.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/language/spanish.php	2006-09-02 10:35:46.000000000 -0500
@@ -9,7 +9,7 @@
  * 
  * Licensed under GNU General Public License
  *
- * $Id: spanish.php,v 1.4 2005/09/25 16:39:12 dhaun Exp $
+ * $Id: spanish.php,v 1.6 2006/09/02 15:35:46 dhaun Exp $
  */
 
 // +---------------------------------------------------------------------------+
@@ -99,7 +99,7 @@
 	'note1'		=> '<p>Nota: Borrado masivo est para ayudarte cuando te avasalla ',
 	'note2'		=> ' comentarios de spam y Spam-X no lo pilla.  <ul><li>Primero, encuentra el/los enlace/s u otros ',
 	'note3'		=> 'identificadores de este comentario de Spam y lo aades a tu lista negra personal.</li><li>Despus ',
-	'note4'		=> 'vuelve aqu y haz que Spam-X compruebe los ltimos comentarios de spam.</li></ul>Los comentarios ',
+	'note4'		=> 'vuelve aqu y haz que Spam-X compruebe los ltimos comentarios de spam.</li></ul><p>Los comentarios ',
 	'note5'		=> 'se comprueban desde los ms nuevos hasta los ms antiguos -- La comprobacin de ms comentarios ',
 	'note6'		=> 'requiere ms tiempo para llevarse a cabo</p>',
 	'masshead'	=> '<hr><center><h1>Borrado Masivo de Comentarios Spam</h1></center>',
@@ -128,7 +128,8 @@
     'stats_header' => 'HTTP headers',
     'stats_deleted' => 'Posts deleted as spam',
 
-    'plugin_name' => 'Spam-X'
+    'plugin_name' => 'Spam-X',
+    'slvwhitelist' => 'SLV Whitelist'
 );
 
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/ukrainian_koi8-u.php 1.4.1.src/cpanel-glprivate/plugins/spamx/language/ukrainian_koi8-u.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/ukrainian_koi8-u.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/language/ukrainian_koi8-u.php	2006-12-16 15:11:15.000000000 -0600
@@ -4,132 +4,134 @@
  * File: ukrainian.php
  * This is the Ukrainian language page for the Geeklog Spam-X Plug-in!
  * 
- * Copyright (C) 2004 by the following authors:
- * Author        Tom Willett        tomw@pigstye.net
- * Copyright (C) 2005 by the following authors:
- * Author        Yaroslav Fedevych  jaroslaw@nospam.kiev.ua
+ * Copyright (C) 2006 by Vitaliy Biliyenko
+ * v.lokki@gmail.com
  * 
  * Licensed under GNU General Public License
+ *
+ * $Id: ukrainian_koi8-u.php,v 1.5 2006/12/16 21:11:15 dhaun Exp $
  */
 
 $LANG_SX00 = array (
-    'inst1' => '<p>   , ۦ ',
-    'inst2' => '       ,      Φ ',
-    'inst3' => 'Ħ  .</p><p>   Φ  צ ,   Ҧ,   ,  צ    , ',
-    'inst4' => '   <a href="mailto:spamx@pigstye.net">spamx@pigstye.net</a>. ',
-    'inst5' => 'Ӧ   Φ.',
+    'inst1' => '<p>   , Ħ ۦ ',
+    'inst2' => '           ¦  ',
+    'inst3' => 'Ħ  .</p><p>   צ ,  ¦  ,  צ   , ',
+    'inst4' => 'Ħ̦   <a href="mailto:spamx@pigstye.net">spamx@pigstye.net</a>  צ Φ. ',
+    'inst5' => 'Ӧ   .',
     'submit' => 'Ħ',
     'subthis' => ' æ  ϧ   Spam-X',
-    'secbut' => '   æ rdf,   ۦ    .',
+    'secbut' => '    Ҧ RDF,  ۦ    .',
     'sitename' => ' : ',
-    'URL' => 'URL   Spam-X: ',
-    'RDF' => 'URL  RDF: ',
-    'impinst1a' => '       Spam-X       ˦ צ ',
-    'impinst1b' => ' Ԧ,    Φ צ . ( Φ  .)',
-    'impinst2' => '   צ Φ      Gplugs/Spam-X,         ',
-    'impinst2a' => 'Ԧ,  ͦ  . (:    ˦ Ԧ,         ',
-    'impinst2b' => '    .      ϧ      ͦ.) ',
-    'impinst2c' => '   &laquo;Ħ&raquo;, Φ []   ަ,   .',
-    'impinst3' => ' ĦΦ Φ : (   ,   Φ).',
-    'availb' => 'Φ Φ ',
-    'clickv' => 'Φ,    ',
-    'clicki' => 'Φ,    ',
-    'ok' => '',
-    'rsscreated' => 'æ RSS ',
+    'URL' => 'URL  Spam-X: ',
+    'RDF' => 'RDF url: ',
+    'impinst1a' => ' Φ  Ӧ Spam-X comment Spam blocker     Φ Φ   ',
+    'impinst1b' => ' Ԧ,     Φ צ . (   Φ .)',
+    'impinst2' => '      Gplugs/Spam-X   - ',
+    'impinst2a' => 'Ԧ,  Ħ ϧ Φ . (:     ˦ Ԧ,      ',
+    'impinst2b' => '    .      ϧ    ͦ .) ',
+    'impinst2c' => ' ,     Ħ, Φ []   Ҧ,   .',
+    'impinst3' => 'Φ Φ  : ( ,   ).',
+    'availb' => 'Φ Φ ',
+    'clickv' => 'Φ    ',
+    'clicki' => 'Φ    ',
+    'ok' => 'OK',
+    'rsscreated' => 'Ҧ RSS ',
     'add1' => ' ',
-    'add2' => ' Ӧ    ',
-    'add3' => ".",
+    'add2' => ' Ӧ  ',
+    'add3' => "  .",
     'adminc' => ' ͦΦ:',
     'mblack' => '  :',
     'rlinks' => 'ҦΦ :',
-    'e3' => '      Geeklog, Φ :',
-    'addcen' => '  ',
+    'e3' => '      Geeklog, Φ :',
+    'addcen' => '  ',
     'addentry' => ' ',
-    'e1' => '  , Φ .',
-    'e2' => '  , Ħ     Φ &laquo;&raquo;.       ŭ ڦ Perl.',
-    'pblack' => '   Spam-X',
+    'e1' => '  , Φ .',
+    'e2' => '  , Ħ   ̦  Φ .     Ӧ Φ  Perl (Perl Regular Expressions).',
+    'pblack' => '   Spam-X',
     'conmod' => '   Spam-X',
-    'acmod' => '̦ Ħ Spam-X',
-    'exmod' => '̦ צ Spam-X',
+    'acmod' => '̦ Ħ Spam-X',
+    'exmod' => '̦ ̦ Spam-X',
     'actmod' => 'Φ ̦',
-    'avmod' => 'Φ ̦',
-    'coninst' => '<hr>Φ     ;     .<br>̦   ,    .',
-    'fsc' => '  ,  Ц  ',
-    'fsc1' => ', Ħ  ',
-    'fsc2' => '  IP ',
-    'uMTlist' => '  MT-',
+    'avmod' => 'Φ ̦',
+    'coninst' => '<hr>Φ  ,   , Φ  ,   .<br>̦     .',
+    'fsc' => ' ¦ Spam- ',
+    'fsc1' => '   ',
+    'fsc2' => '  IP- ',
+    'uMTlist' => ' MT-Blacklist',
     'uMTlist2' => ':  ',
-    'uMTlist3' => ' Ӧ,  ',
+    'uMTlist3' => ' Ӧ   ',
     'entries' => ' Ӧ.',
-    'uPlist' => '   ',
-    'entriesadded' => ' Ӧ',
-    'entriesdeleted' => ' Ӧ',
-    'viewlog' => '  Spam-X',
-    'clearlog' => '  ',
-    'logcleared' => '-   Spam-X ',
-    'plugin' => '',
-    'access_denied' => ' Ц צ',
-    'access_denied_msg' => ' ަ  Root    æ Ҧ.  \'   IP Φ.',
-    'admin' => 'ͦΦ ',
-    'install_header' => '/ ',
-    'installed' => ' ',
-    'uninstalled' => '  ',
-    'install_success' => ' Ц',
-    'install_failed' => '   -- צ  ,  Ħ .',
-    'uninstall_msg' => ' Ц ',
+    'uPlist' => '   ',
+    'entriesadded' => ' ',
+    'entriesdeleted' => ' ',
+    'viewlog' => '  Spam-X',
+    'clearlog' => ' ',
+    'logcleared' => '- - Spam-X ',
+    'plugin' => '',
+    'access_denied' => ' ',
+    'access_denied_msg' => ' צ ަ    æ Ҧ.   Ǧ  IP- .',
+    'admin' => 'ͦΦ ̦',
+    'install_header' => '/ ',
+    'installed' => ' ',
+    'uninstalled' => '  ',
+    'install_success' => 'æ Ц',
+    'install_failed' => 'æ  --  error.log  .',
+    'uninstall_msg' => ' Ц ',
     'install' => '',
     'uninstall' => '',
-    'warning' => '!    צ',
-    'enabled' => 'Φ    .',
-    'readme' => '!  ,    &laquo;&raquo;,  ,  ',
-    'installdoc' => '  .',
-    'spamdeleted' => '  ',
-    'foundspam' => '  ,  Ц  ',
-    'foundspam2' => ', Ħ  ',
-    'foundspam3' => '  IP ',
-	'deletespam' => ' ',
-	'numtocheck' => '˦ Ҧ  צ',
-	'note1'		=> '<p>:     ,    צ ',
-	'note2'		=> '   ,  Spam-X   . <ul><li> Ħ   ۦ ',
-	'note3'		=> 'Ʀ           .</li><li>Ħ ',
-	'note4'		=> 'Φ    æ Spam-X צ Φۦ Ҧ   .</li></ul>Ҧ ',
-	'note5'		=> 'צ צ צ  Ҧ --   ¦,  ',
-	'note6'		=> '¦     צ.</p>',
-	'masshead'	=> '<hr><center><h1>   Ҧ</h1></center>',
+    'warning' => '!    צ',
+    'enabled' => 'Φ   .',
+    'readme' => '!  Φ  æ  ',
+    'installdoc' => '  Install.',
+    'spamdeleted' => ' Spam-',
+    'foundspam' => ' ¦ Spam- ',
+    'foundspam2' => '   ',
+    'foundspam3' => '  IP- ',
+	'deletespam' => ' Spam',
+	'numtocheck' => '˦ Ҧ  צ',
+	'note1'		=> '<p>: Ӧ     ,    ',
+	'note2'		=> '  Ҧ  Spam-X   .  <ul><li> Ħ   ۦ ',
+	'note3'		=> '  -       .</li><li>̦ ',
+	'note4'		=> 'Φ    Spam-X צ Φ Ҧ  .</li></ul><p>Ҧ ',
+	'note5'		=> 'צ צ צ  Ҧ -- צ ¦ϧ ˦Ԧ Ҧ ',
+	'note6'		=> ' ¦ .</p>',
+	'masshead'	=> '<hr><h1 align="center">  Spam-Ҧ</h1>',
+	'masstb' => '<hr><h1 align="center">  -</h1>',
 	'comdel'	=> ' Ҧ .',
-    'initial_Pimport' => '<p>   "',
-    'initial_import' => '   MT-',
+    'initial_Pimport' => '<p>  "',
+    'initial_import' => '  MT-Blacklist',
     'import_success' => '<p>Ц  %d Ӧ  .',
-    'import_failure' => '<p><strong>:</strong>   Ӧ.',
-    'allow_url_fopen' => '<p>,      Ѥ  צΦ  (<code>allow_url_fopen</code> Ҧ off).  ,      URL      "data" Geeklog, <tt>%s</tt>   :', 
-    'documentation' => 'æ   Spam-X',
-    'emailmsg' => "Ħ     \"%s\"\nƦ :\"%s\"\n\nͦ:\"%s\"",
-    'emailsubject' => 'Spam post at %s',
-    'ipblack' => 'Spam-X IP Blacklist',
-    'ipofurlblack' => 'Spam-X IP of URL Blacklist',
-    'headerblack' => 'Spam-X HTTP Header Blacklist',
-    'headers' => 'Request headers:',
-
-    'stats_headline' => 'Spam-X Statistics',
-    'stats_page_title' => 'Blacklist',
-    'stats_entries' => 'Entries',
+    'import_failure' => '<p><strong>:</strong>   Ӧ.',
+    'allow_url_fopen' => '<p>, Ʀæ    Ѥ  צΦ  (<code>allow_url_fopen</code>   off). -,      URL  ͦԦ    "data"  Geeklog, <tt>%s</tt>,  Φ  :',
+    'documentation' => 'æ  Spam-X',
+    'emailmsg' => " -  Ħ  \"%s\"\nUID : \"%s\"\n\nͦ:\"%s\"",
+    'emailsubject' => '-  %s',
+    'ipblack' => '  IP Spam-X',
+    'ipofurlblack' => '  IP  URL Spam-X',
+    'headerblack' => '  HTTP-˦ Spam-X',
+    'headers' => ' :',
+
+    'stats_headline' => ' Spam-X',
+    'stats_page_title' => ' ',
+    'stats_entries' => '',
     'stats_mtblacklist' => 'MT-Blacklist',
-    'stats_pblacklist' => 'Personal Blacklist',
-    'stats_ip' => 'Blocked IPs',
-    'stats_ipofurl' => 'Blocked by IP of URL',
-    'stats_header' => 'HTTP headers',
-    'stats_deleted' => 'Posts deleted as spam',
+    'stats_pblacklist' => '  ',
+    'stats_ip' => 'Φ IP-',
+    'stats_ipofurl' => '  IP  URL',
+    'stats_header' => 'HTTP-',
+    'stats_deleted' => ', Φ  ',
 
-    'plugin_name' => 'Spam-X'
+    'plugin_name' => 'Spam-X',
+    'slvwhitelist' => '  SLV'
 );
 
 
 /* Define Messages that are shown when Spam-X module action is taken */
-$PLG_spamx_MESSAGE128 = ' .   צ .';
-$PLG_spamx_MESSAGE8   = ' . Ħ  ͦΦצ.';
+$PLG_spamx_MESSAGE128 = ' ,   צ .';
+$PLG_spamx_MESSAGE8   = ' . ͦΦ Ħ  .';
 
 // Messages for the plugin upgrade
-$PLG_spamx_MESSAGE3001 = 'Spam-X plugin upgraded successfully.';
-$PLG_spamx_MESSAGE3002 = 'Failed to upgrade the Spam-X plugin.';
+$PLG_spamx_MESSAGE3001 = ' Spam-X Ц .';
+$PLG_spamx_MESSAGE3002 = '    Spam-X.';
 
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/ukrainian.php 1.4.1.src/cpanel-glprivate/plugins/spamx/language/ukrainian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/ukrainian.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/language/ukrainian.php	2006-12-16 15:11:15.000000000 -0600
@@ -4,12 +4,12 @@
  * File: ukrainian.php
  * This is the Ukrainian language page for the Geeklog Spam-X Plug-in!
  * 
- * Copyright (C) 2005 by Vitaliy Biliyenko
+ * Copyright (C) 2006 by Vitaliy Biliyenko
  * v.lokki@gmail.com
  * 
  * Licensed under GNU General Public License
  *
- * $Id: ukrainian.php,v 1.1 2005/12/22 11:56:38 dhaun Exp $
+ * $Id: ukrainian.php,v 1.4 2006/12/16 21:11:15 dhaun Exp $
  */
 
 $LANG_SX00 = array (
@@ -45,7 +45,7 @@
     'e3' => '      Geeklog,  :',
     'addcen' => '  ',
     'addentry' => ' ',
-    'e1' => '  ,  .',
+    'e1' => '  ,  .',
     'e2' => '  ,       .        Perl (Perl Regular Expressions).',
     'pblack' => '   Spam-X',
     'conmod' => '   Spam-X',
@@ -87,17 +87,17 @@
     'foundspam' => '  Spam- ',
     'foundspam2' => '   ',
     'foundspam3' => '  IP- ',
-	'deletespam' => ' Spam',
+	'deletespam' => ' Spam',
 	'numtocheck' => 'ʳ   ',
-	'note1'		=> '<p>:      ,    ',
+	'note1'		=> '<p>:      ,    ',
 	'note2'		=> '    Spam-X   .  <ul><li>     ',
 	'note3'		=> '  -       .</li><li> ',
-	'note4'		=> '    Spam-X     .</li></ul> ',
+	'note4'		=> '    Spam-X     .</li></ul><p> ',
 	'note5'		=> '     --     ',
 	'note6'		=> '  .</p>',
-	'masshead'	=> '<hr><h1 align="center">  Spam-</h1>',
-	'masstb' => '<hr><h1 align="center">  -</h1>',
-	'comdel'	=> '  .',
+	'masshead'	=> '<hr><h1 align="center">  Spam-</h1>',
+	'masstb' => '<hr><h1 align="center">  -</h1>',
+	'comdel'	=> '  .',
     'initial_Pimport' => '<p>  "',
     'initial_import' => '  MT-Blacklist',
     'import_success' => '<p>  %d   .',
@@ -119,14 +119,15 @@
     'stats_ip' => ' IP-',
     'stats_ipofurl' => '  IP  URL',
     'stats_header' => 'HTTP-',
-    'stats_deleted' => '   ',
+    'stats_deleted' => ',   ',
 
-    'plugin_name' => 'Spam-X'
+    'plugin_name' => 'Spam-X',
+    'slvwhitelist' => '  SLV'
 );
 
 
 /* Define Messages that are shown when Spam-X module action is taken */
-$PLG_spamx_MESSAGE128 = ' ,    .';
+$PLG_spamx_MESSAGE128 = ' ,    .';
 $PLG_spamx_MESSAGE8   = ' .    .';
 
 // Messages for the plugin upgrade
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/ukrainian_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/spamx/language/ukrainian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/language/ukrainian_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/language/ukrainian_utf-8.php	2006-12-16 15:11:15.000000000 -0600
@@ -4,132 +4,134 @@
  * File: ukrainian.php
  * This is the Ukrainian language page for the Geeklog Spam-X Plug-in!
  * 
- * Copyright (C) 2004 by the following authors:
- * Author        Tom Willett        tomw@pigstye.net
- * Copyright (C) 2005 by the following authors:
- * Author        Yaroslav Fedevych  jaroslaw@nospam.kiev.ua
+ * Copyright (C) 2006 by Vitaliy Biliyenko
+ * v.lokki@gmail.com
  * 
  * Licensed under GNU General Public License
+ *
+ * $Id: ukrainian_utf-8.php,v 1.5 2006/12/16 21:11:15 dhaun Exp $
  */
 
 $LANG_SX00 = array (
-    'inst1' => '<p>Якщо ви це зробите, інші ',
-    'inst2' => 'зможуть переглядати й імпортувати ваш особистий чорний список, і ми так зможемо створити ефективнішу ',
-    'inst3' => 'розподілену базу даних.</p><p>Якщо ви надсилали дані про свій сайт, а тепер вирішили, що не хочете, аби він залишався в нашому списку, ',
-    'inst4' => 'листуйте за адресою <a href="mailto:spamx@pigstye.net">spamx@pigstye.net</a>. ',
-    'inst5' => 'Всі запити будуть задоволені.',
+    'inst1' => '<p>Якщо ви зробите це, тоді інші ',
+    'inst2' => 'зможуть переглядати та імпортувати ваш чорний список і ми зможемо створити біль ефективну ',
+    'inst3' => 'розподілену базу даних.</p><p>Якщо ви додали свій вебсайт, але більше не хочете, щоб він залишався у списку, ',
+    'inst4' => 'надішліть електронного листа <a href="mailto:spamx@pigstye.net">spamx@pigstye.net</a> щоб розповісти мені. ',
+    'inst5' => 'Всі запити буде враховано.',
     'submit' => 'Надіслати',
     'subthis' => 'цю інформацію до центральної бази даних Spam-X',
-    'secbut' => 'Друга кнопка створює трансляцію rdf, так що інші зможуть імпортувати ваш список.',
+    'secbut' => 'Ця друга кнопка створює стрічку RDF, щоб інші могли імпортувати ваш список.',
     'sitename' => 'Назва сайту: ',
-    'URL' => 'URL до списку Spam-X: ',
-    'RDF' => 'URL до RDF: ',
-    'impinst1a' => 'Перед використанням засобу блокування спаму в коментарях Spam-X для перегляду й імпорту особистих чорних списків від інших',
-    'impinst1b' => ' сайтів, попрошу вас натиснути наступні дві кнопки. (Ви повинні натиснути останню.)',
-    'impinst2' => 'Перша з них відсилає дані про ваш сайт на сайт Gplugs/Spam-X, щоб його можна було додати до головного списку ',
-    'impinst2a' => 'сайтів, що обмінюються чорними списками. (Увага: якщо у вас декілька сайтів, ви можете визначити один із них як головний ',
-    'impinst2b' => 'і подати лише його назву. Це дозволить вам легко поновлювати свої сайти та мати список меншого розміру.) ',
-    'impinst2c' => 'Після натискання кнопки &laquo;Надіслати&raquo;, натисніть [назад] у вашому оглядачі, щоб повернутись сюди.',
-    'impinst3' => 'Будуть надіслані наступні значення: (ви можете їх виправити, якщо вони неправильні).',
-    'availb' => 'Наявні чорні списки',
-    'clickv' => 'Клацніть, щоб переглянути чорний список',
-    'clicki' => 'Клацніть, щоб імпортувати чорний список',
-    'ok' => 'Гаразд',
-    'rsscreated' => 'Трансляцію RSS створено',
+    'URL' => 'URL списку Spam-X: ',
+    'RDF' => 'RDF url: ',
+    'impinst1a' => 'Перш ніж використовувати засіб Spam-X comment Spam blocker щоб переглядати та імпортувати персональні чорні списки з інших',
+    'impinst1b' => ' сайтів, я прошу вас натиснути наступні дві кнопки. (На останню ви повинні натиснути.)',
+    'impinst2' => 'Перша додасть ваш сайт до сайту Gplugs/Spam-X для ведення мастер-списку ',
+    'impinst2a' => 'сайтів, що поділяють свої чорні списки. (Увага: якщо у вас є кілька сайтів, ви можете обрати один як ',
+    'impinst2b' => 'головний і надати лише його. Це дозволить вам легко оновлювати свої сайти і зменшити розмір списку.) ',
+    'impinst2c' => 'Після того, як ви натиснете кнопку Надіслати, натисніть [назад] на вашому браузері, щоб повернутись сюди.',
+    'impinst3' => 'Наступні дані буде передано: (виправте їх, якщо є помилки).',
+    'availb' => 'Доступні чорні списки',
+    'clickv' => 'Натисніть щоб переглянути чорний список',
+    'clicki' => 'натисніть щоб імпортувати чорний список',
+    'ok' => 'OK',
+    'rsscreated' => 'Стрічку RSS створено',
     'add1' => 'Додано ',
-    'add2' => ' записів з чорного списку ',
-    'add3' => ".",
+    'add2' => ' записів з ',
+    'add3' => " чорного списку.",
     'adminc' => 'Команди адміністрування:',
     'mblack' => 'Мій чорний список:',
     'rlinks' => 'Споріднені посилання:',
-    'e3' => 'Щоб додати слова з цензурного списку Geeklog, натисніть кнопку:',
-    'addcen' => 'Додати цензурний список',
+    'e3' => 'Щоб додати слова з цензорного списку Geeklog, натисніть кнопку:',
+    'addcen' => 'Додати цензорний список',
     'addentry' => 'Додати запис',
-    'e1' => 'Щоб вилучити запис, клацніть його.',
-    'e2' => 'Щоб додати запис, введіть його в поле й натисніть &laquo;Додати&raquo;. В записах можна використати всю множину реґулярних виразів Perl.',
-    'pblack' => 'Особистий чорний список Spam-X',
+    'e1' => 'Щоб вилучити запис, натисніть його.',
+    'e2' => 'Щоб додати запис, введіть його у полі і натисніть Додати.  Записи можуть використовувати всі регулярні вирази Perl (Perl Regular Expressions).',
+    'pblack' => 'Персональний чорний список Spam-X',
     'conmod' => 'Налаштувати використання модуля Spam-X',
-    'acmod' => 'Модулі дій Spam-X',
-    'exmod' => 'Модулі перевірки Spam-X',
+    'acmod' => 'Модулі дії Spam-X',
+    'exmod' => 'Модулі аналізу Spam-X',
     'actmod' => 'Активні модулі',
-    'avmod' => 'Наявні модулі',
-    'coninst' => '<hr>Клацніть активний модуль для його усунення; клацання наявного модуля додасть його.<br>Модулі виконуються в порядку, в котрому їх подано.',
-    'fsc' => 'Знайдено спамовий коментар, що співпадає з ',
-    'fsc1' => ', надісланий користувачем ',
-    'fsc2' => ' з IP ',
-    'uMTlist' => 'Поновити чорний MT-список',
+    'avmod' => 'Доступні модулі',
+    'coninst' => '<hr>Натисніть активний модуль, щоб прибрати його, натисніть доступний модуль, щоб додати його.<br>Модулі виконуються саме в такому порядку.',
+    'fsc' => 'Знайдено збіг Spam-коментар ',
+    'fsc1' => ' написаний користувачем ',
+    'fsc2' => ' з IP-адреси ',
+    'uMTlist' => 'Оновити MT-Blacklist',
     'uMTlist2' => ': Додано ',
-    'uMTlist3' => ' записів, вилучено ',
+    'uMTlist3' => ' записів і вилучено ',
     'entries' => ' записів.',
-    'uPlist' => 'Поновити особистий чорний список',
-    'entriesadded' => 'Додано записів',
-    'entriesdeleted' => 'Вилучено записів',
-    'viewlog' => 'Перегляд журналу Spam-X',
-    'clearlog' => 'Очистити файл журналу',
-    'logcleared' => '- файл журналу Spam-X очищено',
-    'plugin' => 'Втулка',
-    'access_denied' => 'В доступі відмовлено',
-    'access_denied_msg' => 'Лише користувачі групи Root мають доступ до цієї сторінки. Ваше ім\'я користувача та IP записані.',
-    'admin' => 'Адміністрування втулки',
-    'install_header' => 'Встановити/вилучити втулку',
-    'installed' => 'Втулку встановлено',
-    'uninstalled' => 'Втулку не встановлено',
-    'install_success' => 'Встановлення успішне',
-    'install_failed' => 'Встановлення не вдалось -- дивіться протокол помилок, щоб дізнатись причину.',
-    'uninstall_msg' => 'Втулку успішно вилучено',
+    'uPlist' => 'Оновити персональний чорний список',
+    'entriesadded' => 'Записи додано',
+    'entriesdeleted' => 'Записи вилучено',
+    'viewlog' => 'Переглянути лог Spam-X',
+    'clearlog' => 'Очистити лог',
+    'logcleared' => '- лог-файл Spam-X очищено',
+    'plugin' => 'Модуль',
+    'access_denied' => 'Доступ заборонено',
+    'access_denied_msg' => 'Лише Кореневі користувачі мають доступ до цієї сторінки.  Ваш логін та IP-адресу записано.',
+    'admin' => 'Адміністрування модулів',
+    'install_header' => 'Встановити/Вилучити модуль',
+    'installed' => 'Модуль встановлено',
+    'uninstalled' => 'Модуль не встановлено',
+    'install_success' => 'Інсталяція успішна',
+    'install_failed' => 'Інсталяція невдала -- перегляньте error.log щодо деталей.',
+    'uninstall_msg' => 'Модуль успішно вилучено',
     'install' => 'Встановити',
     'uninstall' => 'Вилучити',
-    'warning' => 'Увага! Втулка все ще ввімкнена',
-    'enabled' => 'Вимкніть втулку перед її вилученням.',
-    'readme' => 'УВАГА! Перед тим, як натискати кнопку &laquo;Встановити&raquo;, будь ласка, прочитайте ',
-    'installdoc' => 'Документ із встановлення.',
-    'spamdeleted' => 'Вилучено спамовий коментар',
-    'foundspam' => 'Знайдено спамовий коментар, котрий співпадає з ',
-    'foundspam2' => ', надісланий користувачем ',
-    'foundspam3' => ' з IP ',
-	'deletespam' => 'Вилучити спам',
-	'numtocheck' => 'Кількість кометарів для перевірки',
-	'note1'		=> '<p>Увага: масове вилучення задумано як допомогу, коли у вас відбувається атака',
-	'note2'		=> ' спамом у коментарях, а Spam-X його не ловить. <ul><li>Спершу знайдіть посилання чи інші ',
-	'note3'		=> 'ідентифікатори цього спамового коментаря й додайте його до вашого особистого чорного списку.</li><li>Тоді ',
-	'note4'		=> 'поверніться сюди й дайте втулці Spam-X перевірити найостанніші коментарі на предмет спаму.</li></ul>Коментарі ',
-	'note5'		=> 'перевіряються від новіших до старіших -- чим їх більше, тим ',
-	'note6'		=> 'більше часу знадобиться на їх перевірку.</p>',
-	'masshead'	=> '<hr><center><h1>Масове вилучення спамових коментарів</h1></center>',
+    'warning' => 'Увага! Модуль все ще увімкнено',
+    'enabled' => 'Вимкніть модуль перед вилученням.',
+    'readme' => 'СТОП! Перш ніж почати інсталяцію прочитайте ',
+    'installdoc' => ' документ Install.',
+    'spamdeleted' => 'Вилучено Spam-коментар',
+    'foundspam' => 'Знайдено збіг Spam-коментар ',
+    'foundspam2' => ' написаний користувачем ',
+    'foundspam3' => ' з IP-адреси ',
+	'deletespam' => 'Вилучити Spam',
+	'numtocheck' => 'Кількість коментарів для перевірки',
+	'note1'		=> '<p>Увага: Засіб Масове Вилучення може допомогти вам, якщо ви стали жертвою',
+	'note2'		=> ' спаму коментарів і Spam-X не перехоплює його.  <ul><li>Спочатку знайдіть посилання чи інші ',
+	'note3'		=> 'показники цього спам-коментаря і додайте їх до вашого чорного списку.</li><li>Далі ',
+	'note4'		=> 'поверніться сюди і дайте Spam-X перевірити останні коментарі на спам.</li></ul><p>Коментарі ',
+	'note5'		=> 'перевіряються від новіших до старіших -- перевірка більшої кількості коментарів ',
+	'note6'		=> 'вимагає більше часу.</p>',
+	'masshead'	=> '<hr><h1 align="center">Масове Вилучення Spam-коментарів</h1>',
+	'masstb' => '<hr><h1 align="center">Масове Вилучення трекбек-спаму</h1>',
 	'comdel'	=> ' коментарів вилучено.',
-    'initial_Pimport' => '<p>Імпорт особистого чорного списку"',
-    'initial_import' => 'Імпорт початкового чорного MT-списку',
+    'initial_Pimport' => '<p>Імпорт чорного списку"',
+    'initial_import' => 'Початковий імпорт MT-Blacklist',
     'import_success' => '<p>Успішно імпортовано %d записів чорного списку.',
-    'import_failure' => '<p><strong>Помилка:</strong> не знайдено записів.',
-    'allow_url_fopen' => '<p>Пробачте, налаштування вашого сервера Тенет не дозволяє прочитувати віддалені файли (<code>allow_url_fopen</code> дорівнює off). Будь ласка, звантажте чорний список з наступного URL і завантажте його в каталог "data" Geeklog, <tt>%s</tt> перед наступною спробою:', 
-    'documentation' => 'Документація щодо втулки Spam-X',
-    'emailmsg' => "Надіслано новий спамовий коментар на \"%s\"\nІдентифікатор користувача:\"%s\"\n\nВміст:\"%s\"",
-    'emailsubject' => 'Spam post at %s',
-    'ipblack' => 'Spam-X IP Blacklist',
-    'ipofurlblack' => 'Spam-X IP of URL Blacklist',
-    'headerblack' => 'Spam-X HTTP Header Blacklist',
-    'headers' => 'Request headers:',
-
-    'stats_headline' => 'Spam-X Statistics',
-    'stats_page_title' => 'Blacklist',
-    'stats_entries' => 'Entries',
+    'import_failure' => '<p><strong>Помилка:</strong> Не знайдено записів.',
+    'allow_url_fopen' => '<p>Вибачте, конфігурація вашого вебсервера не дозволяє читати віддалені файли (<code>allow_url_fopen</code> має значення off). Будь-ласка, завантажте чорний список з наступного URL і помістіть його в каталог "data" вашого Geeklog, <tt>%s</tt>, перш ніж пробувати знову:',
+    'documentation' => 'Документація модуля Spam-X',
+    'emailmsg' => "Новий спам-пост було надіслано на \"%s\"\nUID користувача: \"%s\"\n\nЗміст:\"%s\"",
+    'emailsubject' => 'Спам-пост на %s',
+    'ipblack' => 'Чорний список IP Spam-X',
+    'ipofurlblack' => 'Чорний список IP з URL Spam-X',
+    'headerblack' => 'Чорний список HTTP-заголовків Spam-X',
+    'headers' => 'Заголовки запиту:',
+
+    'stats_headline' => 'Статистика Spam-X',
+    'stats_page_title' => 'Чорний список',
+    'stats_entries' => 'Записи',
     'stats_mtblacklist' => 'MT-Blacklist',
-    'stats_pblacklist' => 'Personal Blacklist',
-    'stats_ip' => 'Blocked IPs',
-    'stats_ipofurl' => 'Blocked by IP of URL',
-    'stats_header' => 'HTTP headers',
-    'stats_deleted' => 'Posts deleted as spam',
+    'stats_pblacklist' => 'Персональний чорний список',
+    'stats_ip' => 'Заблоковані IP-адреси',
+    'stats_ipofurl' => 'Заблоковано за IP з URL',
+    'stats_header' => 'HTTP-заголовки',
+    'stats_deleted' => 'Пости, вилучені як спам',
 
-    'plugin_name' => 'Spam-X'
+    'plugin_name' => 'Spam-X',
+    'slvwhitelist' => 'Білий список SLV'
 );
 
 
 /* Define Messages that are shown when Spam-X module action is taken */
-$PLG_spamx_MESSAGE128 = 'Виявлено спам. Коментар чи повідомлення вилучено.';
-$PLG_spamx_MESSAGE8   = 'Виявлено спам. Надіслано листа адміністраторові.';
+$PLG_spamx_MESSAGE128 = 'Знайдено спам, коментар чи повідомлення вилучено.';
+$PLG_spamx_MESSAGE8   = 'Знайдено спам. Адміністратору надіслано електронного листа.';
 
 // Messages for the plugin upgrade
-$PLG_spamx_MESSAGE3001 = 'Spam-X plugin upgraded successfully.';
-$PLG_spamx_MESSAGE3002 = 'Failed to upgrade the Spam-X plugin.';
+$PLG_spamx_MESSAGE3001 = 'Модуль Spam-X успішно оновлено.';
+$PLG_spamx_MESSAGE3002 = 'Не вдалося оновити модуль Spam-X.';
 
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/LogView.Admin.class.php 1.4.1.src/cpanel-glprivate/plugins/spamx/LogView.Admin.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/LogView.Admin.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/LogView.Admin.class.php	2006-08-20 11:42:32.000000000 -0500
@@ -2,14 +2,14 @@
 
 /**
  * File: Logview.Admin.class.php
- * This is the LogViewer for the Geeklog Spam-X Plug-in!
+ * This is the LogViewer for the Geeklog Spam-X plugin
  * 
- * Copyright (C) 2004-2005 by the following authors:
+ * Copyright (C) 2004-2006 by the following authors:
  * Author       Tom Willett     tomw AT pigstye DOT net
  * 
  * Licensed under GNU General Public License
  *
- * $Id: LogView.Admin.class.php,v 1.5.2.1 2006/06/30 12:20:49 dhaun Exp $
+ * $Id: LogView.Admin.class.php,v 1.7 2006/08/20 16:42:32 dhaun Exp $
  */
 
 if (strpos ($_SERVER['PHP_SELF'], 'LogView.Admin.class.php') !== false) {
@@ -24,11 +24,17 @@
      */
     function display()
     {
-        global $_CONF, $_POST, $LANG_SX00;
+        global $_CONF, $LANG_SX00;
+
+        $display = '';
 
         $max_Log_Size = 100000; 
-        $action = COM_applyFilter($_POST['action']);
-        $path = $_CONF['site_admin_url'] . '/plugins/spamx/index.php?command=LogView';
+        $action = '';
+        if (isset ($_POST['action'])) {
+            $action = COM_applyFilter ($_POST['action']);
+        }
+        $path = $_CONF['site_admin_url']
+              . '/plugins/spamx/index.php?command=LogView';
         $log = 'spamx.log';
         $display .= "<form method=\"post\" action=\"{$path}\">";
         $display .= "<input type=\"submit\" name=\"action\" value=\"{$LANG_SX00['clearlog']}\">";
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/magpierss/extlib/Snoopy.class.inc 1.4.1.src/cpanel-glprivate/plugins/spamx/magpierss/extlib/Snoopy.class.inc
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/magpierss/extlib/Snoopy.class.inc	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/magpierss/extlib/Snoopy.class.inc	1969-12-31 18:00:00.000000000 -0600
@@ -1,900 +0,0 @@
-<?php
-
-/*************************************************
-
-Snoopy - the PHP net client
-Author: Monte Ohrt <monte@ispi.net>
-Copyright (c): 1999-2000 ispi, all rights reserved
-Version: 1.0
-
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-You may contact the author of Snoopy by e-mail at:
-monte@ispi.net
-
-Or, write to:
-Monte Ohrt
-CTO, ispi
-237 S. 70th suite 220
-Lincoln, NE 68510
-
-The latest version of Snoopy can be obtained from:
-http://snoopy.sourceforge.com
-
-*************************************************/
-
-class Snoopy
-{
-	/**** Public variables ****/
-	
-	/* user definable vars */
-
-	var $host			=	"www.php.net";		// host name we are connecting to
-	var $port			=	80;					// port we are connecting to
-	var $proxy_host		=	"";					// proxy host to use
-	var $proxy_port		=	"";					// proxy port to use
-	var $agent			=	"Snoopy v1.0";		// agent we masquerade as
-	var	$referer		=	"";					// referer info to pass
-	var $cookies		=	array();			// array of cookies to pass
-												// $cookies["username"]="joe";
-	var	$rawheaders		=	array();			// array of raw headers to send
-												// $rawheaders["Content-type"]="text/html";
-
-	var $maxredirs		=	5;					// http redirection depth maximum. 0 = disallow
-	var $lastredirectaddr	=	"";				// contains address of last redirected address
-	var	$offsiteok		=	true;				// allows redirection off-site
-	var $maxframes		=	0;					// frame content depth maximum. 0 = disallow
-	var $expandlinks	=	true;				// expand links to fully qualified URLs.
-												// this only applies to fetchlinks()
-												// or submitlinks()
-	var $passcookies	=	true;				// pass set cookies back through redirects
-												// NOTE: this currently does not respect
-												// dates, domains or paths.
-	
-	var	$user			=	"";					// user for http authentication
-	var	$pass			=	"";					// password for http authentication
-	
-	// http accept types
-	var $accept			=	"image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*";
-	
-	var $results		=	"";					// where the content is put
-		
-	var $error			=	"";					// error messages sent here
-	var	$response_code	=	"";					// response code returned from server
-	var	$headers		=	array();			// headers returned from server sent here
-	var	$maxlength		=	500000;				// max return data length (body)
-	var $read_timeout	=	0;					// timeout on read operations, in seconds
-												// supported only since PHP 4 Beta 4
-												// set to 0 to disallow timeouts
-	var $timed_out		=	false;				// if a read operation timed out
-	var	$status			=	0;					// http request status
-	
-	var	$curl_path		=	"/usr/bin/curl";
-												// Snoopy will use cURL for fetching
-												// SSL content if a full system path to
-												// the cURL binary is supplied here.
-												// set to false if you do not have
-												// cURL installed. See http://curl.haxx.se
-												// for details on installing cURL.
-												// Snoopy does *not* use the cURL
-												// library functions built into php,
-												// as these functions are not stable
-												// as of this Snoopy release.
-	
-	// send Accept-encoding: gzip?
-	var $use_gzip		= true;	
-	
-	/**** Private variables ****/	
-	
-	var	$_maxlinelen	=	4096;				// max line length (headers)
-	
-	var $_httpmethod	=	"GET";				// default http request method
-	var $_httpversion	=	"HTTP/1.0";			// default http request version
-	var $_submit_method	=	"POST";				// default submit method
-	var $_submit_type	=	"application/x-www-form-urlencoded";	// default submit type
-	var $_mime_boundary	=   "";					// MIME boundary for multipart/form-data submit type
-	var $_redirectaddr	=	false;				// will be set if page fetched is a redirect
-	var $_redirectdepth	=	0;					// increments on an http redirect
-	var $_frameurls		= 	array();			// frame src urls
-	var $_framedepth	=	0;					// increments on frame depth
-	
-	var $_isproxy		=	false;				// set if using a proxy server
-	var $_fp_timeout	=	30;					// timeout for socket connection
-
-/*======================================================================*\
-	Function:	fetch
-	Purpose:	fetch the contents of a web page
-				(and possibly other protocols in the
-				future like ftp, nntp, gopher, etc.)
-	Input:		$URI	the location of the page to fetch
-	Output:		$this->results	the output text from the fetch
-\*======================================================================*/
-
-	function fetch($URI)
-	{
-	
-		//preg_match("|^([^:]+)://([^:/]+)(:[\d]+)*(.*)|",$URI,$URI_PARTS);
-		$URI_PARTS = parse_url($URI);
-		if (!empty($URI_PARTS["user"]))
-			$this->user = $URI_PARTS["user"];
-		if (!empty($URI_PARTS["pass"]))
-			$this->pass = $URI_PARTS["pass"];
-				
-		switch($URI_PARTS["scheme"])
-		{
-			case "http":
-				$this->host = $URI_PARTS["host"];
-				if(!empty($URI_PARTS["port"]))
-					$this->port = $URI_PARTS["port"];
-				if($this->_connect($fp))
-				{
-					if($this->_isproxy)
-					{
-						// using proxy, send entire URI
-						$this->_httprequest($URI,$fp,$URI,$this->_httpmethod);
-					}
-					else
-					{
-						$path = $URI_PARTS["path"].(isset($URI_PARTS["query"]) ? "?".$URI_PARTS["query"] : "");
-						// no proxy, send only the path
-						$this->_httprequest($path, $fp, $URI, $this->_httpmethod);
-					}
-					
-					$this->_disconnect($fp);
-
-					if($this->_redirectaddr)
-					{
-						/* url was redirected, check if we've hit the max depth */
-						if($this->maxredirs > $this->_redirectdepth)
-						{
-							// only follow redirect if it's on this site, or offsiteok is true
-							if(preg_match("|^http://".preg_quote($this->host)."|i",$this->_redirectaddr) || $this->offsiteok)
-							{
-								/* follow the redirect */
-								$this->_redirectdepth++;
-								$this->lastredirectaddr=$this->_redirectaddr;
-								$this->fetch($this->_redirectaddr);
-							}
-						}
-					}
-
-					if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
-					{
-						$frameurls = $this->_frameurls;
-						$this->_frameurls = array();
-						
-						while(list(,$frameurl) = each($frameurls))
-						{
-							if($this->_framedepth < $this->maxframes)
-							{
-								$this->fetch($frameurl);
-								$this->_framedepth++;
-							}
-							else
-								break;
-						}
-					}					
-				}
-				else
-				{
-					return false;
-				}
-				return true;					
-				break;
-			case "https":
-				if(!$this->curl_path || (!is_executable($this->curl_path))) {
-					$this->error = "Bad curl ($this->curl_path), can't fetch HTTPS \n";
-					return false;
-				}
-				$this->host = $URI_PARTS["host"];
-				if(!empty($URI_PARTS["port"]))
-					$this->port = $URI_PARTS["port"];
-				if($this->_isproxy)
-				{
-					// using proxy, send entire URI
-					$this->_httpsrequest($URI,$URI,$this->_httpmethod);
-				}
-				else
-				{
-					$path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
-					// no proxy, send only the path
-					$this->_httpsrequest($path, $URI, $this->_httpmethod);
-				}
-
-				if($this->_redirectaddr)
-				{
-					/* url was redirected, check if we've hit the max depth */
-					if($this->maxredirs > $this->_redirectdepth)
-					{
-						// only follow redirect if it's on this site, or offsiteok is true
-						if(preg_match("|^http://".preg_quote($this->host)."|i",$this->_redirectaddr) || $this->offsiteok)
-						{
-							/* follow the redirect */
-							$this->_redirectdepth++;
-							$this->lastredirectaddr=$this->_redirectaddr;
-							$this->fetch($this->_redirectaddr);
-						}
-					}
-				}
-
-				if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
-				{
-					$frameurls = $this->_frameurls;
-					$this->_frameurls = array();
-
-					while(list(,$frameurl) = each($frameurls))
-					{
-						if($this->_framedepth < $this->maxframes)
-						{
-							$this->fetch($frameurl);
-							$this->_framedepth++;
-						}
-						else
-							break;
-					}
-				}					
-				return true;					
-				break;
-			default:
-				// not a valid protocol
-				$this->error	=	'Invalid protocol "'.$URI_PARTS["scheme"].'"\n';
-				return false;
-				break;
-		}		
-		return true;
-	}
-
-
-
-/*======================================================================*\
-	Private functions
-\*======================================================================*/
-	
-	
-/*======================================================================*\
-	Function:	_striplinks
-	Purpose:	strip the hyperlinks from an html document
-	Input:		$document	document to strip.
-	Output:		$match		an array of the links
-\*======================================================================*/
-
-	function _striplinks($document)
-	{	
-		preg_match_all("'<\s*a\s+.*href\s*=\s*			# find <a href=
-						([\"\'])?					# find single or double quote
-						(?(1) (.*?)\\1 | ([^\s\>]+))		# if quote found, match up to next matching
-													# quote, otherwise match up to next space
-						'isx",$document,$links);
-						
-
-		// catenate the non-empty matches from the conditional subpattern
-
-		while(list($key,$val) = each($links[2]))
-		{
-			if(!empty($val))
-				$match[] = $val;
-		}				
-		
-		while(list($key,$val) = each($links[3]))
-		{
-			if(!empty($val))
-				$match[] = $val;
-		}		
-		
-		// return the links
-		return $match;
-	}
-
-/*======================================================================*\
-	Function:	_stripform
-	Purpose:	strip the form elements from an html document
-	Input:		$document	document to strip.
-	Output:		$match		an array of the links
-\*======================================================================*/
-
-	function _stripform($document)
-	{	
-		preg_match_all("'<\/?(FORM|INPUT|SELECT|TEXTAREA|(OPTION))[^<>]*>(?(2)(.*(?=<\/?(option|select)[^<>]*>[\r\n]*)|(?=[\r\n]*))|(?=[\r\n]*))'Usi",$document,$elements);
-		
-		// catenate the matches
-		$match = implode("\r\n",$elements[0]);
-				
-		// return the links
-		return $match;
-	}
-
-	
-	
-/*======================================================================*\
-	Function:	_striptext
-	Purpose:	strip the text from an html document
-	Input:		$document	document to strip.
-	Output:		$text		the resulting text
-\*======================================================================*/
-
-	function _striptext($document)
-	{
-		
-		// I didn't use preg eval (//e) since that is only available in PHP 4.0.
-		// so, list your entities one by one here. I included some of the
-		// more common ones.
-								
-		$search = array("'<script[^>]*?>.*?</script>'si",	// strip out javascript
-						"'<[\/\!]*?[^<>]*?>'si",			// strip out html tags
-						"'([\r\n])[\s]+'",					// strip out white space
-						"'&(quote|#34);'i",					// replace html entities
-						"'&(amp|#38);'i",
-						"'&(lt|#60);'i",
-						"'&(gt|#62);'i",
-						"'&(nbsp|#160);'i",
-						"'&(iexcl|#161);'i",
-						"'&(cent|#162);'i",
-						"'&(pound|#163);'i",
-						"'&(copy|#169);'i"
-						);				
-		$replace = array(	"",
-							"",
-							"\\1",
-							"\"",
-							"&",
-							"<",
-							">",
-							" ",
-							chr(161),
-							chr(162),
-							chr(163),
-							chr(169));
-					
-		$text = preg_replace($search,$replace,$document);
-								
-		return $text;
-	}
-
-/*======================================================================*\
-	Function:	_expandlinks
-	Purpose:	expand each link into a fully qualified URL
-	Input:		$links			the links to qualify
-				$URI			the full URI to get the base from
-	Output:		$expandedLinks	the expanded links
-\*======================================================================*/
-
-	function _expandlinks($links,$URI)
-	{
-		
-		preg_match("/^[^\?]+/",$URI,$match);
-
-		$match = preg_replace("|/[^\/\.]+\.[^\/\.]+$|","",$match[0]);
-				
-		$search = array( 	"|^http://".preg_quote($this->host)."|i",
-							"|^(?!http://)(\/)?(?!mailto:)|i",
-							"|/\./|",
-							"|/[^\/]+/\.\./|"
-						);
-						
-		$replace = array(	"",
-							$match."/",
-							"/",
-							"/"
-						);			
-				
-		$expandedLinks = preg_replace($search,$replace,$links);
-
-		return $expandedLinks;
-	}
-
-/*======================================================================*\
-	Function:	_httprequest
-	Purpose:	go get the http data from the server
-	Input:		$url		the url to fetch
-				$fp			the current open file pointer
-				$URI		the full URI
-				$body		body contents to send if any (POST)
-	Output:		
-\*======================================================================*/
-	
-	function _httprequest($url,$fp,$URI,$http_method,$content_type="",$body="")
-	{
-		if($this->passcookies && $this->_redirectaddr)
-			$this->setcookies();
-			
-		$URI_PARTS = parse_url($URI);
-		if(empty($url))
-			$url = "/";
-		$headers = $http_method." ".$url." ".$this->_httpversion."\r\n";		
-		if(!empty($this->agent))
-			$headers .= "User-Agent: ".$this->agent."\r\n";
-		if(!empty($this->host) && !isset($this->rawheaders['Host']))
-			$headers .= "Host: ".$this->host."\r\n";
-		if(!empty($this->accept))
-			$headers .= "Accept: ".$this->accept."\r\n";
-		
-		if($this->use_gzip) {
-			// make sure PHP was built with --with-zlib
-			// and we can handle gzipp'ed data
-			if ( function_exists(gzinflate) ) {
-			   $headers .= "Accept-encoding: gzip\r\n";
-			}
-			else {
-			   trigger_error(
-			   	"use_gzip is on, but PHP was built without zlib support.".
-				"  Requesting file(s) without gzip encoding.", 
-				E_USER_NOTICE);
-			}
-		}
-		
-		if(!empty($this->referer))
-			$headers .= "Referer: ".$this->referer."\r\n";
-		if(!empty($this->cookies))
-		{			
-			if(!is_array($this->cookies))
-				$this->cookies = (array)$this->cookies;
-	
-			reset($this->cookies);
-			if ( count($this->cookies) > 0 ) {
-				$cookie_headers .= 'Cookie: ';
-				foreach ( $this->cookies as $cookieKey => $cookieVal ) {
-				$cookie_headers .= $cookieKey."=".urlencode($cookieVal)."; ";
-				}
-				$headers .= substr($cookie_headers,0,-2) . "\r\n";
-			} 
-		}
-		if(!empty($this->rawheaders))
-		{
-			if(!is_array($this->rawheaders))
-				$this->rawheaders = (array)$this->rawheaders;
-			while(list($headerKey,$headerVal) = each($this->rawheaders))
-				$headers .= $headerKey.": ".$headerVal."\r\n";
-		}
-		if(!empty($content_type)) {
-			$headers .= "Content-type: $content_type";
-			if ($content_type == "multipart/form-data")
-				$headers .= "; boundary=".$this->_mime_boundary;
-			$headers .= "\r\n";
-		}
-		if(!empty($body))	
-			$headers .= "Content-length: ".strlen($body)."\r\n";
-		if(!empty($this->user) || !empty($this->pass))	
-			$headers .= "Authorization: BASIC ".base64_encode($this->user.":".$this->pass)."\r\n";
-
-		$headers .= "\r\n";
-		
-		// set the read timeout if needed
-		if ($this->read_timeout > 0)
-			socket_set_timeout($fp, $this->read_timeout);
-		$this->timed_out = false;
-		
-		fwrite($fp,$headers.$body,strlen($headers.$body));
-		
-		$this->_redirectaddr = false;
-		unset($this->headers);
-		
-		// content was returned gzip encoded?
-		$is_gzipped = false;
-						
-		while($currentHeader = fgets($fp,$this->_maxlinelen))
-		{
-			if ($this->read_timeout > 0 && $this->_check_timeout($fp))
-			{
-				$this->status=-100;
-				return false;
-			}
-				
-		//	if($currentHeader == "\r\n")
-			if(preg_match("/^\r?\n$/", $currentHeader) )
-			      break;
-						
-			// if a header begins with Location: or URI:, set the redirect
-			if(preg_match("/^(Location:|URI:)/i",$currentHeader))
-			{
-				// get URL portion of the redirect
-				preg_match("/^(Location:|URI:)\s+(.*)/",chop($currentHeader),$matches);
-				// look for :// in the Location header to see if hostname is included
-				if(!preg_match("|\:\/\/|",$matches[2]))
-				{
-					// no host in the path, so prepend
-					$this->_redirectaddr = $URI_PARTS["scheme"]."://".$this->host.":".$this->port;
-					// eliminate double slash
-					if(!preg_match("|^/|",$matches[2]))
-							$this->_redirectaddr .= "/".$matches[2];
-					else
-							$this->_redirectaddr .= $matches[2];
-				}
-				else
-					$this->_redirectaddr = $matches[2];
-			}
-		
-			if(preg_match("|^HTTP/|",$currentHeader))
-			{
-                if(preg_match("|^HTTP/[^\s]*\s(.*?)\s|",$currentHeader, $status))
-				{
-					$this->status= $status[1];
-                }				
-				$this->response_code = $currentHeader;
-			}
-			
-			if (preg_match("/Content-Encoding: gzip/", $currentHeader) ) {
-				$is_gzipped = true;
-			}
-			
-			$this->headers[] = $currentHeader;
-		}
-
-		# $results = fread($fp, $this->maxlength);
-		$results = "";
-		while ( $data = fread($fp, $this->maxlength) ) {
-		    $results .= $data;
-		    if (
-		        strlen($results) > $this->maxlength ) {
-		        break;
-		    }
-		}
-		
-		// gunzip
-		if ( $is_gzipped ) {
-			// per http://www.php.net/manual/en/function.gzencode.php
-			$results = substr($results, 10);
-			$results = gzinflate($results);
-		}
-		
-		if ($this->read_timeout > 0 && $this->_check_timeout($fp))
-		{
-			$this->status=-100;
-			return false;
-		}
-		
-		// check if there is a a redirect meta tag
-		
-		if(preg_match("'<meta[\s]*http-equiv[^>]*?content[\s]*=[\s]*[\"\']?\d+;[\s]+URL[\s]*=[\s]*([^\"\']*?)[\"\']?>'i",$results,$match))
-		{
-			$this->_redirectaddr = $this->_expandlinks($match[1],$URI);	
-		}
-
-		// have we hit our frame depth and is there frame src to fetch?
-		if(($this->_framedepth < $this->maxframes) && preg_match_all("'<frame\s+.*src[\s]*=[\'\"]?([^\'\"\>]+)'i",$results,$match))
-		{
-			$this->results[] = $results;
-			for($x=0; $x<count($match[1]); $x++)
-				$this->_frameurls[] = $this->_expandlinks($match[1][$x],$URI_PARTS["scheme"]."://".$this->host);
-		}
-		// have we already fetched framed content?
-		elseif(is_array($this->results))
-			$this->results[] = $results;
-		// no framed content
-		else
-			$this->results = $results;
-		
-		return true;
-	}
-
-/*======================================================================*\
-	Function:	_httpsrequest
-	Purpose:	go get the https data from the server using curl
-	Input:		$url		the url to fetch
-				$URI		the full URI
-				$body		body contents to send if any (POST)
-	Output:		
-\*======================================================================*/
-	
-	function _httpsrequest($url,$URI,$http_method,$content_type="",$body="")
-	{
-		if($this->passcookies && $this->_redirectaddr)
-			$this->setcookies();
-
-		$headers = array();		
-					
-		$URI_PARTS = parse_url($URI);
-		if(empty($url))
-			$url = "/";
-		// GET ... header not needed for curl
-		//$headers[] = $http_method." ".$url." ".$this->_httpversion;		
-		if(!empty($this->agent))
-			$headers[] = "User-Agent: ".$this->agent;
-		if(!empty($this->host))
-			$headers[] = "Host: ".$this->host;
-		if(!empty($this->accept))
-			$headers[] = "Accept: ".$this->accept;
-		if(!empty($this->referer))
-			$headers[] = "Referer: ".$this->referer;
-		if(!empty($this->cookies))
-		{			
-			if(!is_array($this->cookies))
-				$this->cookies = (array)$this->cookies;
-	
-			reset($this->cookies);
-			if ( count($this->cookies) > 0 ) {
-				$cookie_str = 'Cookie: ';
-				foreach ( $this->cookies as $cookieKey => $cookieVal ) {
-				$cookie_str .= $cookieKey."=".urlencode($cookieVal)."; ";
-				}
-				$headers[] = substr($cookie_str,0,-2);
-			}
-		}
-		if(!empty($this->rawheaders))
-		{
-			if(!is_array($this->rawheaders))
-				$this->rawheaders = (array)$this->rawheaders;
-			while(list($headerKey,$headerVal) = each($this->rawheaders))
-				$headers[] = $headerKey.": ".$headerVal;
-		}
-		if(!empty($content_type)) {
-			if ($content_type == "multipart/form-data")
-				$headers[] = "Content-type: $content_type; boundary=".$this->_mime_boundary;
-			else
-				$headers[] = "Content-type: $content_type";
-		}
-		if(!empty($body))	
-			$headers[] = "Content-length: ".strlen($body);
-		if(!empty($this->user) || !empty($this->pass))	
-			$headers[] = "Authorization: BASIC ".base64_encode($this->user.":".$this->pass);
-			
-		for($curr_header = 0; $curr_header < count($headers); $curr_header++) {
-			$cmdline_params .= " -H \"".$headers[$curr_header]."\"";
-		}
-			  	                         
-		if(!empty($body))
-			$cmdline_params .= " -d \"$body\"";
-		
-		if($this->read_timeout > 0)
-			$cmdline_params .= " -m ".$this->read_timeout;
-		
-		$headerfile = uniqid(time());
-		
-		# accept self-signed certs
-		$cmdline_params .= " -k"; 
-		exec($this->curl_path." -D \"/tmp/$headerfile\"".escapeshellcmd($cmdline_params)." ".escapeshellcmd($URI),$results,$return);
-		
-		if($return)
-		{
-			$this->error = "Error: cURL could not retrieve the document, error $return.";
-			return false;
-		}
-			
-			
-		$results = implode("\r\n",$results);
-		
-		$result_headers = file("/tmp/$headerfile");
-						
-		$this->_redirectaddr = false;
-		unset($this->headers);
-						
-		for($currentHeader = 0; $currentHeader < count($result_headers); $currentHeader++)
-		{
-			
-			// if a header begins with Location: or URI:, set the redirect
-			if(preg_match("/^(Location: |URI: )/i",$result_headers[$currentHeader]))
-			{
-				// get URL portion of the redirect
-				preg_match("/^(Location: |URI:)(.*)/",chop($result_headers[$currentHeader]),$matches);
-				// look for :// in the Location header to see if hostname is included
-				if(!preg_match("|\:\/\/|",$matches[2]))
-				{
-					// no host in the path, so prepend
-					$this->_redirectaddr = $URI_PARTS["scheme"]."://".$this->host.":".$this->port;
-					// eliminate double slash
-					if(!preg_match("|^/|",$matches[2]))
-							$this->_redirectaddr .= "/".$matches[2];
-					else
-							$this->_redirectaddr .= $matches[2];
-				}
-				else
-					$this->_redirectaddr = $matches[2];
-			}
-		
-			if(preg_match("|^HTTP/|",$result_headers[$currentHeader]))
-			{
-			    $this->response_code = $result_headers[$currentHeader];
-			    if(preg_match("|^HTTP/[^\s]*\s(.*?)\s|",$this->response_code, $match))
-			    {
-				$this->status= $match[1];
-                	    }
-			}
-			$this->headers[] = $result_headers[$currentHeader];
-		}
-
-		// check if there is a a redirect meta tag
-		
-		if(preg_match("'<meta[\s]*http-equiv[^>]*?content[\s]*=[\s]*[\"\']?\d+;[\s]+URL[\s]*=[\s]*([^\"\']*?)[\"\']?>'i",$results,$match))
-		{
-			$this->_redirectaddr = $this->_expandlinks($match[1],$URI);	
-		}
-
-		// have we hit our frame depth and is there frame src to fetch?
-		if(($this->_framedepth < $this->maxframes) && preg_match_all("'<frame\s+.*src[\s]*=[\'\"]?([^\'\"\>]+)'i",$results,$match))
-		{
-			$this->results[] = $results;
-			for($x=0; $x<count($match[1]); $x++)
-				$this->_frameurls[] = $this->_expandlinks($match[1][$x],$URI_PARTS["scheme"]."://".$this->host);
-		}
-		// have we already fetched framed content?
-		elseif(is_array($this->results))
-			$this->results[] = $results;
-		// no framed content
-		else
-			$this->results = $results;
-
-		unlink("/tmp/$headerfile");
-		
-		return true;
-	}
-
-/*======================================================================*\
-	Function:	setcookies()
-	Purpose:	set cookies for a redirection
-\*======================================================================*/
-	
-	function setcookies()
-	{
-		for($x=0; $x<count($this->headers); $x++)
-		{
-		if(preg_match("/^set-cookie:[\s]+([^=]+)=([^;]+)/i", $this->headers[$x],$match))
-			$this->cookies[$match[1]] = $match[2];
-		}
-	}
-
-	
-/*======================================================================*\
-	Function:	_check_timeout
-	Purpose:	checks whether timeout has occurred
-	Input:		$fp	file pointer
-\*======================================================================*/
-
-	function _check_timeout($fp)
-	{
-		if ($this->read_timeout > 0) {
-			$fp_status = socket_get_status($fp);
-			if ($fp_status["timed_out"]) {
-				$this->timed_out = true;
-				return true;
-			}
-		}
-		return false;
-	}
-
-/*======================================================================*\
-	Function:	_connect
-	Purpose:	make a socket connection
-	Input:		$fp	file pointer
-\*======================================================================*/
-	
-	function _connect(&$fp)
-	{
-		if(!empty($this->proxy_host) && !empty($this->proxy_port))
-			{
-				$this->_isproxy = true;
-				$host = $this->proxy_host;
-				$port = $this->proxy_port;
-			}
-		else
-		{
-			$host = $this->host;
-			$port = $this->port;
-		}
-	
-		$this->status = 0;
-		
-		if($fp = fsockopen(
-					$host,
-					$port,
-					$errno,
-					$errstr,
-					$this->_fp_timeout
-					))
-		{
-			// socket connection succeeded
-
-			return true;
-		}
-		else
-		{
-			// socket connection failed
-			$this->status = $errno;
-			switch($errno)
-			{
-				case -3:
-					$this->error="socket creation failed (-3)";
-				case -4:
-					$this->error="dns lookup failure (-4)";
-				case -5:
-					$this->error="connection refused or timed out (-5)";
-				default:
-					$this->error="connection failed (".$errno.")";
-			}
-			return false;
-		}
-	}
-/*======================================================================*\
-	Function:	_disconnect
-	Purpose:	disconnect a socket connection
-	Input:		$fp	file pointer
-\*======================================================================*/
-	
-	function _disconnect($fp)
-	{
-		return(fclose($fp));
-	}
-
-	
-/*======================================================================*\
-	Function:	_prepare_post_body
-	Purpose:	Prepare post body according to encoding type
-	Input:		$formvars  - form variables
-				$formfiles - form upload files
-	Output:		post body
-\*======================================================================*/
-	
-	function _prepare_post_body($formvars, $formfiles)
-	{
-		settype($formvars, "array");
-		settype($formfiles, "array");
-
-		if (count($formvars) == 0 && count($formfiles) == 0)
-			return;
-		
-		switch ($this->_submit_type) {
-			case "application/x-www-form-urlencoded":
-				reset($formvars);
-				while(list($key,$val) = each($formvars)) {
-					if (is_array($val) || is_object($val)) {
-						while (list($cur_key, $cur_val) = each($val)) {
-							$postdata .= urlencode($key)."[]=".urlencode($cur_val)."&";
-						}
-					} else
-						$postdata .= urlencode($key)."=".urlencode($val)."&";
-				}
-				break;
-
-			case "multipart/form-data":
-				$this->_mime_boundary = "Snoopy".md5(uniqid(microtime()));
-				
-				reset($formvars);
-				while(list($key,$val) = each($formvars)) {
-					if (is_array($val) || is_object($val)) {
-						while (list($cur_key, $cur_val) = each($val)) {
-							$postdata .= "--".$this->_mime_boundary."\r\n";
-							$postdata .= "Content-Disposition: form-data; name=\"$key\[\]\"\r\n\r\n";
-							$postdata .= "$cur_val\r\n";
-						}
-					} else {
-						$postdata .= "--".$this->_mime_boundary."\r\n";
-						$postdata .= "Content-Disposition: form-data; name=\"$key\"\r\n\r\n";
-						$postdata .= "$val\r\n";
-					}
-				}
-				
-				reset($formfiles);
-				while (list($field_name, $file_names) = each($formfiles)) {
-					settype($file_names, "array");
-					while (list(, $file_name) = each($file_names)) {
-						if (!is_readable($file_name)) continue;
-
-						$fp = fopen($file_name, "r");
-						$file_content = fread($fp, filesize($file_name));
-						fclose($fp);
-						$base_name = basename($file_name);
-
-						$postdata .= "--".$this->_mime_boundary."\r\n";
-						$postdata .= "Content-Disposition: form-data; name=\"$field_name\"; filename=\"$base_name\"\r\n\r\n";
-						$postdata .= "$file_content\r\n";
-					}
-				}
-				$postdata .= "--".$this->_mime_boundary."--\r\n";
-				break;
-		}
-
-		return $postdata;
-	}
-}
-
-?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/magpierss/rss_cache.inc 1.4.1.src/cpanel-glprivate/plugins/spamx/magpierss/rss_cache.inc
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/magpierss/rss_cache.inc	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/magpierss/rss_cache.inc	1969-12-31 18:00:00.000000000 -0600
@@ -1,200 +0,0 @@
-<?php
-/*
- * Project:     MagpieRSS: a simple RSS integration tool
- * File:        rss_cache.inc, a simple, rolling(no GC), cache 
- *              for RSS objects, keyed on URL.
- * Author:      Kellan Elliott-McCrea <kellan@protest.net>
- * Version:     0.51
- * License:     GPL
- *
- * The lastest version of MagpieRSS can be obtained from:
- * http://magpierss.sourceforge.net
- *
- * For questions, help, comments, discussion, etc., please join the
- * Magpie mailing list:
- * http://lists.sourceforge.net/lists/listinfo/magpierss-general
- *
- */
-
-class RSSCache {
-    var $BASE_CACHE = './cache';    // where the cache files are stored
-    var $MAX_AGE    = 3600;         // when are files stale, default one hour
-    var $ERROR      = "";           // accumulate error messages
-    
-    function RSSCache ($base='', $age='') {
-        if ( $base ) {
-            $this->BASE_CACHE = $base;
-        }
-        if ( $age ) {
-            $this->MAX_AGE = $age;
-        }
-        
-        // attempt to make the cache directory
-        if ( ! file_exists( $this->BASE_CACHE ) ) {
-            $status = @mkdir( $this->BASE_CACHE, 0755 );
-            
-            // if make failed 
-            if ( ! $status ) {
-                $this->error(
-                    "Cache couldn't make dir '" . $this->BASE_CACHE . "'."
-                );
-            }
-        }
-    }
-    
-/*=======================================================================*\
-    Function:   set
-    Purpose:    add an item to the cache, keyed on url
-    Input:      url from wich the rss file was fetched
-    Output:     true on sucess  
-\*=======================================================================*/
-    function set ($url, $rss) {
-        $this->ERROR = "";
-        $cache_file = $this->file_name( $url );
-        $fp = @fopen( $cache_file, 'w' );
-        
-        if ( ! $fp ) {
-            $this->error(
-                "Cache unable to open file for writing: $cache_file"
-            );
-            return 0;
-        }
-        
-        
-        $data = $this->serialize( $rss );
-        fwrite( $fp, $data );
-        fclose( $fp );
-        
-        return $cache_file;
-    }
-    
-/*=======================================================================*\
-    Function:   get
-    Purpose:    fetch an item from the cache
-    Input:      url from wich the rss file was fetched
-    Output:     cached object on HIT, false on MISS 
-\*=======================================================================*/ 
-    function get ($url) {
-        $this->ERROR = "";
-        $cache_file = $this->file_name( $url );
-        
-        if ( ! file_exists( $cache_file ) ) {
-            $this->debug( 
-                "Cache doesn't contain: $url (cache file: $cache_file)"
-            );
-            return 0;
-        }
-        
-        $fp = @fopen($cache_file, 'r');
-        if ( ! $fp ) {
-            $this->error(
-                "Failed to open cache file for reading: $cache_file"
-            );
-            return 0;
-        }
-        
-        if ($filesize = filesize($cache_file) ) {
-        	$data = fread( $fp, filesize($cache_file) );
-        	$rss = $this->unserialize( $data );
-        
-        	return $rss;
-    	}
-    	
-    	return 0;
-    }
-
-/*=======================================================================*\
-    Function:   check_cache
-    Purpose:    check a url for membership in the cache
-                and whether the object is older then MAX_AGE (ie. STALE)
-    Input:      url from wich the rss file was fetched
-    Output:     cached object on HIT, false on MISS 
-\*=======================================================================*/     
-    function check_cache ( $url ) {
-        $this->ERROR = "";
-        $filename = $this->file_name( $url );
-        
-        if ( file_exists( $filename ) ) {
-            // find how long ago the file was added to the cache
-            // and whether that is longer then MAX_AGE
-            $mtime = filemtime( $filename );
-            $age = time() - $mtime;
-            if ( $this->MAX_AGE > $age ) {
-                // object exists and is current
-                return 'HIT';
-            }
-            else {
-                // object exists but is old
-                return 'STALE';
-            }
-        }
-        else {
-            // object does not exist
-            return 'MISS';
-        }
-    }
-
-	function cache_age( $cache_key ) {
-		$filename = $this->file_name( $url );
-		if ( file_exists( $filename ) ) {
-			$mtime = filemtime( $filename );
-            $age = time() - $mtime;
-			return $age;
-		}
-		else {
-			return -1;	
-		}
-	}
-	
-/*=======================================================================*\
-    Function:   serialize
-\*=======================================================================*/     
-    function serialize ( $rss ) {
-        return serialize( $rss );
-    }
-
-/*=======================================================================*\
-    Function:   unserialize
-\*=======================================================================*/     
-    function unserialize ( $data ) {
-        return unserialize( $data );
-    }
-    
-/*=======================================================================*\
-    Function:   file_name
-    Purpose:    map url to location in cache
-    Input:      url from wich the rss file was fetched
-    Output:     a file name
-\*=======================================================================*/     
-    function file_name ($url) {
-        $filename = md5( $url );
-        return join( DIRECTORY_SEPARATOR, array( $this->BASE_CACHE, $filename ) );
-    }
-
-/*=======================================================================*\
-    Function:   error
-    Purpose:    register error
-\*=======================================================================*/         
-    function error ($errormsg, $lvl=E_USER_WARNING) {
-        // append PHP's error message if track_errors enabled
-        if ( isset($php_errormsg) ) { 
-            $errormsg .= " ($php_errormsg)";
-        }
-        $this->ERROR = $errormsg;
-        if ( MAGPIE_DEBUG ) {
-            trigger_error( $errormsg, $lvl);
-        }
-        else {
-            error_log( $errormsg, 0);
-        }
-    }
-    
-    function debug ($debugmsg, $lvl=E_USER_NOTICE) {
-        if ( MAGPIE_DEBUG ) {
-            $this->error("MagpieRSS [debug] $debugmsg", $lvl);
-        }
-    }
-
-}
-
-?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/magpierss/rss_fetch.inc 1.4.1.src/cpanel-glprivate/plugins/spamx/magpierss/rss_fetch.inc
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/magpierss/rss_fetch.inc	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/magpierss/rss_fetch.inc	1969-12-31 18:00:00.000000000 -0600
@@ -1,458 +0,0 @@
-<?php
-/*
- * Project:     MagpieRSS: a simple RSS integration tool
- * File:        rss_fetch.inc, a simple functional interface
-                to fetching and parsing RSS files, via the
-                function fetch_rss()
- * Author:      Kellan Elliott-McCrea <kellan@protest.net>
- * License:     GPL
- *
- * The lastest version of MagpieRSS can be obtained from:
- * http://magpierss.sourceforge.net
- *
- * For questions, help, comments, discussion, etc., please join the
- * Magpie mailing list:
- * magpierss-general@lists.sourceforge.net
- *
- */
- 
-// Setup MAGPIE_DIR for use on hosts that don't include
-// the current path in include_path.
-// with thanks to rajiv and smarty
-if (!defined('DIR_SEP')) {
-    define('DIR_SEP', DIRECTORY_SEPARATOR);
-}
-
-if (!defined('MAGPIE_DIR')) {
-    define('MAGPIE_DIR', dirname(__FILE__) . DIR_SEP);
-}
-
-require_once( MAGPIE_DIR . 'rss_parse.inc' );
-require_once( MAGPIE_DIR . 'rss_cache.inc' );
-
-// for including 3rd party libraries
-define('MAGPIE_EXTLIB', MAGPIE_DIR . 'extlib' . DIR_SEP);
-require_once( MAGPIE_EXTLIB . 'Snoopy.class.inc');
-
-
-/* 
- * CONSTANTS - redefine these in your script to change the
- * behaviour of fetch_rss() currently, most options effect the cache
- *
- * MAGPIE_CACHE_ON - Should Magpie cache parsed RSS objects? 
- * For me a built in cache was essential to creating a "PHP-like" 
- * feel to Magpie, see rss_cache.inc for rationale
- *
- *
- * MAGPIE_CACHE_DIR - Where should Magpie cache parsed RSS objects?
- * This should be a location that the webserver can write to.   If this 
- * directory does not already exist Mapie will try to be smart and create 
- * it.  This will often fail for permissions reasons.
- *
- *
- * MAGPIE_CACHE_AGE - How long to store cached RSS objects? In seconds.
- *
- *
- * MAGPIE_CACHE_FRESH_ONLY - If remote fetch fails, throw error
- * instead of returning stale object?
- *
- * MAGPIE_DEBUG - Display debugging notices?
- *
-*/
-
-
-/*=======================================================================*\
-    Function: fetch_rss: 
-    Purpose:  return RSS object for the give url
-              maintain the cache
-    Input:    url of RSS file
-    Output:   parsed RSS object (see rss_parse.inc)
-
-    NOTES ON CACHEING:  
-    If caching is on (MAGPIE_CACHE_ON) fetch_rss will first check the cache.
-    
-    NOTES ON RETRIEVING REMOTE FILES:
-    If conditional gets are on (MAGPIE_CONDITIONAL_GET_ON) fetch_rss will
-    return a cached object, and touch the cache object upon recieving a
-    304.
-    
-    NOTES ON FAILED REQUESTS:
-    If there is an HTTP error while fetching an RSS object, the cached
-    version will be return, if it exists (and if MAGPIE_CACHE_FRESH_ONLY is off)
-\*=======================================================================*/
-
-define('MAGPIE_VERSION', '0.72');
-
-$MAGPIE_ERROR = "";
-
-function fetch_rss ($url) {
-    // initialize constants
-    init();
-    
-    if ( !isset($url) ) {
-        error("fetch_rss called without a url");
-        return false;
-    }
-    
-    // if cache is disabled
-    if ( !MAGPIE_CACHE_ON ) {
-        // fetch file, and parse it
-        $resp = _fetch_remote_file( $url );
-        if ( is_success( $resp->status ) ) {
-            return _response_to_rss( $resp );
-        }
-        else {
-            error("Failed to fetch $url and cache is off");
-            return false;
-        }
-    } 
-    // else cache is ON
-    else {
-        // Flow
-        // 1. check cache
-        // 2. if there is a hit, make sure its fresh
-        // 3. if cached obj fails freshness check, fetch remote
-        // 4. if remote fails, return stale object, or error
-        
-        $cache = new RSSCache( MAGPIE_CACHE_DIR, MAGPIE_CACHE_AGE );
-        
-        if (MAGPIE_DEBUG and $cache->ERROR) {
-            debug($cache->ERROR, E_USER_WARNING);
-        }
-        
-        
-        $cache_status    = 0;       // response of check_cache
-        $request_headers = array(); // HTTP headers to send with fetch
-        $rss             = 0;       // parsed RSS object
-        $errormsg        = 0;       // errors, if any
-        
-        // store parsed XML by desired output encoding
-        // as character munging happens at parse time
-        $cache_key       = $url . MAGPIE_OUTPUT_ENCODING;
-        
-        if (!$cache->ERROR) {
-            // return cache HIT, MISS, or STALE
-            $cache_status = $cache->check_cache( $cache_key);
-        }
-                
-        // if object cached, and cache is fresh, return cached obj
-        if ( $cache_status == 'HIT' ) {
-            $rss = $cache->get( $cache_key );
-            if ( isset($rss) and $rss ) {
-                // should be cache age
-                $rss->from_cache = 1;
-                if ( MAGPIE_DEBUG > 1) {
-                    debug("MagpieRSS: Cache HIT", E_USER_NOTICE);
-                }
-                return $rss;
-            }
-        }
-        
-        // else attempt a conditional get
-        
-        // setup headers
-        if ( $cache_status == 'STALE' ) {
-            $rss = $cache->get( $cache_key );
-            if ( $rss and $rss->etag and $rss->last_modified ) {
-                $request_headers['If-None-Match'] = $rss->etag;
-                $request_headers['If-Last-Modified'] = $rss->last_modified;
-            }
-        }
-        
-        $resp = _fetch_remote_file( $url, $request_headers );
-        
-        if (isset($resp) and $resp) {
-          if ($resp->status == '304' ) {
-                // we have the most current copy
-                if ( MAGPIE_DEBUG > 1) {
-                    debug("Got 304 for $url");
-                }
-                // reset cache on 304 (at minutillo insistent prodding)
-                $cache->set($cache_key, $rss);
-                return $rss;
-            }
-            elseif ( is_success( $resp->status ) ) {
-                $rss = _response_to_rss( $resp );
-                if ( $rss ) {
-                    if (MAGPIE_DEBUG > 1) {
-                        debug("Fetch successful");
-                    }
-                    // add object to cache
-                    $cache->set( $cache_key, $rss );
-                    return $rss;
-                }
-            }
-            else {
-                $errormsg = "Failed to fetch $url ";
-                if ( $resp->status == '-100' ) {
-                    $errormsg .= "(Request timed out after " . MAGPIE_FETCH_TIME_OUT . " seconds)";
-                }
-                elseif ( $resp->error ) {
-                    # compensate for Snoopy's annoying habbit to tacking
-                    # on '\n'
-                    $http_error = substr($resp->error, 0, -2); 
-                    $errormsg .= "(HTTP Error: $http_error)";
-                }
-                else {
-                    $errormsg .=  "(HTTP Response: " . $resp->response_code .')';
-                }
-            }
-        }
-        else {
-            $errormsg = "Unable to retrieve RSS file for unknown reasons.";
-        }
-        
-        // else fetch failed
-        
-        // attempt to return cached object
-        if ($rss) {
-            if ( MAGPIE_DEBUG ) {
-                debug("Returning STALE object for $url");
-            }
-            return $rss;
-        }
-        
-        // else we totally failed
-        error( $errormsg ); 
-        
-        return false;
-        
-    } // end if ( !MAGPIE_CACHE_ON ) {
-} // end fetch_rss()
-
-/*=======================================================================*\
-    Function:   error
-    Purpose:    set MAGPIE_ERROR, and trigger error
-\*=======================================================================*/
-
-function error ($errormsg, $lvl=E_USER_WARNING) {
-        global $MAGPIE_ERROR;
-        
-        // append PHP's error message if track_errors enabled
-        if ( isset($php_errormsg) ) { 
-            $errormsg .= " ($php_errormsg)";
-        }
-        if ( $errormsg ) {
-            $errormsg = "MagpieRSS: $errormsg";
-            $MAGPIE_ERROR = $errormsg;
-            trigger_error( $errormsg, $lvl);                
-        }
-}
-
-function debug ($debugmsg, $lvl=E_USER_NOTICE) {
-    trigger_error("MagpieRSS [debug] $debugmsg", $lvl);
-}
-            
-/*=======================================================================*\
-    Function:   magpie_error
-    Purpose:    accessor for the magpie error variable
-\*=======================================================================*/
-function magpie_error ($errormsg="") {
-    global $MAGPIE_ERROR;
-    
-    if ( isset($errormsg) and $errormsg ) { 
-        $MAGPIE_ERROR = $errormsg;
-    }
-    
-    return $MAGPIE_ERROR;   
-}
-
-/*=======================================================================*\
-    Function:   _fetch_remote_file
-    Purpose:    retrieve an arbitrary remote file
-    Input:      url of the remote file
-                headers to send along with the request (optional)
-    Output:     an HTTP response object (see Snoopy.class.inc)  
-\*=======================================================================*/
-function _fetch_remote_file ($url, $headers = "" ) {
-    // Snoopy is an HTTP client in PHP
-    $client = new Snoopy();
-    $client->agent = MAGPIE_USER_AGENT;
-    $client->read_timeout = MAGPIE_FETCH_TIME_OUT;
-    $client->use_gzip = MAGPIE_USE_GZIP;
-    if (is_array($headers) ) {
-        $client->rawheaders = $headers;
-    }
-    
-    @$client->fetch($url);
-    return $client;
-
-}
-
-/*=======================================================================*\
-    Function:   _response_to_rss
-    Purpose:    parse an HTTP response object into an RSS object
-    Input:      an HTTP response object (see Snoopy)
-    Output:     parsed RSS object (see rss_parse)
-\*=======================================================================*/
-function _response_to_rss ($resp) {
-    $rss = new MagpieRSS( $resp->results, MAGPIE_OUTPUT_ENCODING, MAGPIE_INPUT_ENCODING, MAGPIE_DETECT_ENCODING );
-    
-    // if RSS parsed successfully       
-    if ( $rss and !$rss->ERROR) {
-        
-        // find Etag, and Last-Modified
-        foreach($resp->headers as $h) {
-            // 2003-03-02 - Nicola Asuni (www.tecnick.com) - fixed bug "Undefined offset: 1"
-            if (strpos($h, ": ")) {
-                list($field, $val) = explode(": ", $h, 2);
-            }
-            else {
-                $field = $h;
-                $val = "";
-            }
-            
-            if ( $field == 'ETag' ) {
-                $rss->etag = $val;
-            }
-            
-            if ( $field == 'Last-Modified' ) {
-                $rss->last_modified = $val;
-            }
-        }
-        
-        return $rss;    
-    } // else construct error message
-    else {
-        $errormsg = "Failed to parse RSS file.";
-        
-        if ($rss) {
-            $errormsg .= " (" . $rss->ERROR . ")";
-        }
-        error($errormsg);
-        
-        return false;
-    } // end if ($rss and !$rss->error)
-}
-
-/*=======================================================================*\
-    Function:   init
-    Purpose:    setup constants with default values
-                check for user overrides
-\*=======================================================================*/
-function init () {
-    if ( defined('MAGPIE_INITALIZED') ) {
-        return;
-    }
-    else {
-        define('MAGPIE_INITALIZED', true);
-    }
-    
-    if ( !defined('MAGPIE_CACHE_ON') ) {
-        define('MAGPIE_CACHE_ON', true);
-    }
-
-    if ( !defined('MAGPIE_CACHE_DIR') ) {
-        define('MAGPIE_CACHE_DIR', './cache');
-    }
-
-    if ( !defined('MAGPIE_CACHE_AGE') ) {
-        define('MAGPIE_CACHE_AGE', 60*60); // one hour
-    }
-
-    if ( !defined('MAGPIE_CACHE_FRESH_ONLY') ) {
-        define('MAGPIE_CACHE_FRESH_ONLY', false);
-    }
-
-    if ( !defined('MAGPIE_OUTPUT_ENCODING') ) {
-        define('MAGPIE_OUTPUT_ENCODING', 'ISO-8859-1');
-    }
-    
-    if ( !defined('MAGPIE_INPUT_ENCODING') ) {
-        define('MAGPIE_INPUT_ENCODING', null);
-    }
-    
-    if ( !defined('MAGPIE_DETECT_ENCODING') ) {
-        define('MAGPIE_DETECT_ENCODING', true);
-    }
-    
-    if ( !defined('MAGPIE_DEBUG') ) {
-        define('MAGPIE_DEBUG', 0);
-    }
-    
-    if ( !defined('MAGPIE_USER_AGENT') ) {
-        $ua = 'MagpieRSS/'. MAGPIE_VERSION . ' (+http://magpierss.sf.net';
-        
-        if ( MAGPIE_CACHE_ON ) {
-            $ua = $ua . ')';
-        }
-        else {
-            $ua = $ua . '; No cache)';
-        }
-        
-        define('MAGPIE_USER_AGENT', $ua);
-    }
-    
-    if ( !defined('MAGPIE_FETCH_TIME_OUT') ) {
-        define('MAGPIE_FETCH_TIME_OUT', 5); // 5 second timeout
-    }
-    
-    // use gzip encoding to fetch rss files if supported?
-    if ( !defined('MAGPIE_USE_GZIP') ) {
-        define('MAGPIE_USE_GZIP', true);    
-    }
-}
-
-// NOTE: the following code should really be in Snoopy, or at least
-// somewhere other then rss_fetch!
-
-/*=======================================================================*\
-    HTTP STATUS CODE PREDICATES
-    These functions attempt to classify an HTTP status code
-    based on RFC 2616 and RFC 2518.
-    
-    All of them take an HTTP status code as input, and return true or false
-
-    All this code is adapted from LWP's HTTP::Status.
-\*=======================================================================*/
-
-
-/*=======================================================================*\
-    Function:   is_info
-    Purpose:    return true if Informational status code
-\*=======================================================================*/
-function is_info ($sc) { 
-    return $sc >= 100 && $sc < 200; 
-}
-
-/*=======================================================================*\
-    Function:   is_success
-    Purpose:    return true if Successful status code
-\*=======================================================================*/
-function is_success ($sc) { 
-    return $sc >= 200 && $sc < 300; 
-}
-
-/*=======================================================================*\
-    Function:   is_redirect
-    Purpose:    return true if Redirection status code
-\*=======================================================================*/
-function is_redirect ($sc) { 
-    return $sc >= 300 && $sc < 400; 
-}
-
-/*=======================================================================*\
-    Function:   is_error
-    Purpose:    return true if Error status code
-\*=======================================================================*/
-function is_error ($sc) { 
-    return $sc >= 400 && $sc < 600; 
-}
-
-/*=======================================================================*\
-    Function:   is_client_error
-    Purpose:    return true if Error status code, and its a client error
-\*=======================================================================*/
-function is_client_error ($sc) { 
-    return $sc >= 400 && $sc < 500; 
-}
-
-/*=======================================================================*\
-    Function:   is_client_error
-    Purpose:    return true if Error status code, and its a server error
-\*=======================================================================*/
-function is_server_error ($sc) { 
-    return $sc >= 500 && $sc < 600; 
-}
-
-?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/magpierss/rss_parse.inc 1.4.1.src/cpanel-glprivate/plugins/spamx/magpierss/rss_parse.inc
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/magpierss/rss_parse.inc	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/magpierss/rss_parse.inc	1969-12-31 18:00:00.000000000 -0600
@@ -1,605 +0,0 @@
-<?php
-
-/**
-* Project:     MagpieRSS: a simple RSS integration tool
-* File:        rss_parse.inc  - parse an RSS or Atom feed
-*               return as a simple object.
-*
-* Handles RSS 0.9x, RSS 2.0, RSS 1.0, and Atom 0.3
-*
-* The lastest version of MagpieRSS can be obtained from:
-* http://magpierss.sourceforge.net
-*
-* For questions, help, comments, discussion, etc., please join the
-* Magpie mailing list:
-* magpierss-general@lists.sourceforge.net
-*
-* @author           Kellan Elliott-McCrea <kellan@protest.net>
-* @version          0.7a
-* @license          GPL
-*
-*/
-
-define('RSS', 'RSS');
-define('ATOM', 'Atom');
-
-require_once (MAGPIE_DIR . 'rss_utils.inc');
-
-/**
-* Hybrid parser, and object, takes RSS as a string and returns a simple object.
-*
-* see: rss_fetch.inc for a simpler interface with integrated caching support
-*
-*/
-class MagpieRSS {
-    var $parser;
-    
-    var $current_item   = array();  // item currently being parsed
-    var $items          = array();  // collection of parsed items
-    var $channel        = array();  // hash of channel fields
-    var $textinput      = array();
-    var $image          = array();
-    var $feed_type;
-    var $feed_version;
-    var $encoding       = '';       // output encoding of parsed rss
-    
-    var $_source_encoding = '';     // only set if we have to parse xml prolog
-    
-    var $ERROR = "";
-    var $WARNING = "";
-    
-    // define some constants
-    
-    var $_CONTENT_CONSTRUCTS = array('content', 'summary', 'info', 'title', 'tagline', 'copyright');
-    var $_KNOWN_ENCODINGS    = array('UTF-8', 'US-ASCII', 'ISO-8859-1');
-
-    // parser variables, useless if you're not a parser, treat as private
-    var $stack              = array(); // parser stack
-    var $inchannel          = false;
-    var $initem             = false;
-    var $incontent          = false; // if in Atom <content mode="xml"> field 
-    var $intextinput        = false;
-    var $inimage            = false;
-    var $current_namespace  = false;
-    
-
-    /**
-     *  Set up XML parser, parse source, and return populated RSS object..
-     *   
-     *  @param string $source           string containing the RSS to be parsed
-     *
-     *  NOTE:  Probably a good idea to leave the encoding options alone unless
-     *         you know what you're doing as PHP's character set support is
-     *         a little weird.
-     *
-     *  NOTE:  A lot of this is unnecessary but harmless with PHP5 
-     *
-     *
-     *  @param string $output_encoding  output the parsed RSS in this character 
-     *                                  set defaults to ISO-8859-1 as this is PHP's
-     *                                  default.
-     *
-     *                                  NOTE: might be changed to UTF-8 in future
-     *                                  versions.
-     *                               
-     *  @param string $input_encoding   the character set of the incoming RSS source. 
-     *                                  Leave blank and Magpie will try to figure it
-     *                                  out.
-     *                                  
-     *                                   
-     *  @param bool   $detect_encoding  if false Magpie won't attempt to detect
-     *                                  source encoding. (caveat emptor)
-     *
-     */
-    function MagpieRSS ($source, $output_encoding='ISO-8859-1', 
-                        $input_encoding=null, $detect_encoding=true) 
-    {   
-        # if PHP xml isn't compiled in, die
-        #
-        if (!function_exists('xml_parser_create')) {
-            $this->error( "Failed to load PHP's XML Extension. " . 
-                          "http://www.php.net/manual/en/ref.xml.php",
-                           E_USER_ERROR );
-        }
-        
-        list($parser, $source) = $this->create_parser($source, 
-                $output_encoding, $input_encoding, $detect_encoding);
-        
-        
-        if (!is_resource($parser)) {
-            $this->error( "Failed to create an instance of PHP's XML parser. " .
-                          "http://www.php.net/manual/en/ref.xml.php",
-                          E_USER_ERROR );
-        }
-
-        
-        $this->parser = $parser;
-        
-        # pass in parser, and a reference to this object
-        # setup handlers
-        #
-        xml_set_object( $this->parser, $this );
-        xml_set_element_handler($this->parser, 
-                'feed_start_element', 'feed_end_element' );
-                        
-        xml_set_character_data_handler( $this->parser, 'feed_cdata' ); 
-    
-        $status = xml_parse( $this->parser, $source );
-        
-        if (! $status ) {
-            $errorcode = xml_get_error_code( $this->parser );
-            if ( $errorcode != XML_ERROR_NONE ) {
-                $xml_error = xml_error_string( $errorcode );
-                $error_line = xml_get_current_line_number($this->parser);
-                $error_col = xml_get_current_column_number($this->parser);
-                $errormsg = "$xml_error at line $error_line, column $error_col";
-
-                $this->error( $errormsg );
-            }
-        }
-        
-        xml_parser_free( $this->parser );
-
-        $this->normalize();
-    }
-    
-    function feed_start_element($p, $element, &$attrs) {
-        $el = $element = strtolower($element);
-        $attrs = array_change_key_case($attrs, CASE_LOWER);
-        
-        // check for a namespace, and split if found
-        $ns = false;
-        if ( strpos( $element, ':' ) ) {
-            list($ns, $el) = split( ':', $element, 2); 
-        }
-        if ( $ns and $ns != 'rdf' ) {
-            $this->current_namespace = $ns;
-        }
-            
-        # if feed type isn't set, then this is first element of feed
-        # identify feed from root element
-        #
-        if (!isset($this->feed_type) ) {
-            if ( $el == 'rdf' ) {
-                $this->feed_type = RSS;
-                $this->feed_version = '1.0';
-            }
-            elseif ( $el == 'rss' ) {
-                $this->feed_type = RSS;
-                $this->feed_version = $attrs['version'];
-            }
-            elseif ( $el == 'feed' ) {
-                $this->feed_type = ATOM;
-                $this->feed_version = $attrs['version'];
-                $this->inchannel = true;
-            }
-            return;
-        }
-    
-        if ( $el == 'channel' ) 
-        {
-            $this->inchannel = true;
-        }
-        elseif ($el == 'item' or $el == 'entry' ) 
-        {
-            $this->initem = true;
-            if ( isset($attrs['rdf:about']) ) {
-                $this->current_item['about'] = $attrs['rdf:about']; 
-            }
-        }
-        
-        // if we're in the default namespace of an RSS feed,
-        //  record textinput or image fields
-        elseif ( 
-            $this->feed_type == RSS and 
-            $this->current_namespace == '' and 
-            $el == 'textinput' ) 
-        {
-            $this->intextinput = true;
-        }
-        
-        elseif (
-            $this->feed_type == RSS and 
-            $this->current_namespace == '' and 
-            $el == 'image' ) 
-        {
-            $this->inimage = true;
-        }
-        
-        # handle atom content constructs
-        elseif ( $this->feed_type == ATOM and in_array($el, $this->_CONTENT_CONSTRUCTS) )
-        {
-            // avoid clashing w/ RSS mod_content
-            if ($el == 'content' ) {
-                $el = 'atom_content';
-            }
-            
-            $this->incontent = $el;
-            
-            
-        }
-        
-        // if inside an Atom content construct (e.g. content or summary) field treat tags as text
-        elseif ($this->feed_type == ATOM and $this->incontent ) 
-        {
-            // if tags are inlined, then flatten
-            $attrs_str = join(' ', 
-                    array_map('map_attrs', 
-                    array_keys($attrs), 
-                    array_values($attrs) ) );
-            
-            $this->append_content( "<$element $attrs_str>"  );
-                    
-            array_unshift( $this->stack, $el );
-        }
-        
-        // Atom support many links per containging element.
-        // Magpie treats link elements of type rel='alternate'
-        // as being equivalent to RSS's simple link element.
-        //
-        elseif ($this->feed_type == ATOM and $el == 'link' ) 
-        {
-            if ( isset($attrs['rel']) and $attrs['rel'] == 'alternate' ) 
-            {
-                $link_el = 'link';
-            }
-            else {
-                $link_el = 'link_' . $attrs['rel'];
-            }
-            
-            $this->append($link_el, $attrs['href']);
-        }
-        // set stack[0] to current element
-        else {
-            array_unshift($this->stack, $el);
-        }
-    }
-    
-
-    
-    function feed_cdata ($p, $text) {
-        if ($this->feed_type == ATOM and $this->incontent) 
-        {
-            $this->append_content( $text );
-        }
-        else {
-            $current_el = join('_', array_reverse($this->stack));
-            $this->append($current_el, $text);
-        }
-    }
-    
-    function feed_end_element ($p, $el) {
-        $el = strtolower($el);
-        
-        if ( $el == 'item' or $el == 'entry' ) 
-        {
-            $this->items[] = $this->current_item;
-            $this->current_item = array();
-            $this->initem = false;
-        }
-        elseif ($this->feed_type == RSS and $this->current_namespace == '' and $el == 'textinput' ) 
-        {
-            $this->intextinput = false;
-        }
-        elseif ($this->feed_type == RSS and $this->current_namespace == '' and $el == 'image' ) 
-        {
-            $this->inimage = false;
-        }
-        elseif ($this->feed_type == ATOM and in_array($el, $this->_CONTENT_CONSTRUCTS) )
-        {   
-            $this->incontent = false;
-        }
-        elseif ($el == 'channel' or $el == 'feed' ) 
-        {
-            $this->inchannel = false;
-        }
-        elseif ($this->feed_type == ATOM and $this->incontent  ) {
-            // balance tags properly
-            // note:  i don't think this is actually neccessary
-            if ( $this->stack[0] == $el ) 
-            {
-                $this->append_content("</$el>");
-            }
-            else {
-                $this->append_content("<$el />");
-            }
-
-            array_shift( $this->stack );
-        }
-        else {
-            array_shift( $this->stack );
-        }
-        
-        $this->current_namespace = false;
-    }
-    
-    function concat (&$str1, $str2="") {
-        if (!isset($str1) ) {
-            $str1="";
-        }
-        $str1 .= $str2;
-    }
-    
-    
-    
-    function append_content($text) {
-        if ( $this->initem ) {
-            $this->concat( $this->current_item[ $this->incontent ], $text );
-        }
-        elseif ( $this->inchannel ) {
-            $this->concat( $this->channel[ $this->incontent ], $text );
-        }
-    }
-    
-    // smart append - field and namespace aware
-    function append($el, $text) {
-        if (!$el) {
-            return;
-        }
-        if ( $this->current_namespace ) 
-        {
-            if ( $this->initem ) {
-                $this->concat(
-                    $this->current_item[ $this->current_namespace ][ $el ], $text);
-            }
-            elseif ($this->inchannel) {
-                $this->concat(
-                    $this->channel[ $this->current_namespace][ $el ], $text );
-            }
-            elseif ($this->intextinput) {
-                $this->concat(
-                    $this->textinput[ $this->current_namespace][ $el ], $text );
-            }
-            elseif ($this->inimage) {
-                $this->concat(
-                    $this->image[ $this->current_namespace ][ $el ], $text );
-            }
-        }
-        else {
-            if ( $this->initem ) {
-                $this->concat(
-                    $this->current_item[ $el ], $text);
-            }
-            elseif ($this->intextinput) {
-                $this->concat(
-                    $this->textinput[ $el ], $text );
-            }
-            elseif ($this->inimage) {
-                $this->concat(
-                    $this->image[ $el ], $text );
-            }
-            elseif ($this->inchannel) {
-                $this->concat(
-                    $this->channel[ $el ], $text );
-            }
-            
-        }
-    }
-    
-    function normalize () {
-        // if atom populate rss fields
-        if ( $this->is_atom() ) {
-            $this->channel['description'] = $this->channel['tagline'];
-            for ( $i = 0; $i < count($this->items); $i++) {
-                $item = $this->items[$i];
-                if ( isset($item['summary']) )
-                    $item['description'] = $item['summary'];
-                if ( isset($item['atom_content']))
-                    $item['content']['encoded'] = $item['atom_content'];
-                
-                $atom_date = (isset($item['issued']) ) ? $item['issued'] : $item['modified'];
-                if ( $atom_date ) {
-                    $epoch = @parse_w3cdtf($atom_date);
-                    if ($epoch and $epoch > 0) {
-                        $item['date_timestamp'] = $epoch;
-                    }
-                }
-                
-                $this->items[$i] = $item;
-            }       
-        }
-        elseif ( $this->is_rss() ) {
-            $this->channel['tagline'] = $this->channel['description'];
-            for ( $i = 0; $i < count($this->items); $i++) {
-                $item = $this->items[$i];
-                if ( isset($item['description']))
-                    $item['summary'] = $item['description'];
-                if ( isset($item['content']['encoded'] ) )
-                    $item['atom_content'] = $item['content']['encoded'];
-                
-                if ( $this->is_rss() == '1.0' and isset($item['dc']['date']) ) {
-                    $epoch = @parse_w3cdtf($item['dc']['date']);
-                    if ($epoch and $epoch > 0) {
-                        $item['date_timestamp'] = $epoch;
-                    }
-                }
-                elseif ( isset($item['pubdate']) ) {
-                    $epoch = @strtotime($item['pubdate']);
-                    if ($epoch > 0) {
-                        $item['date_timestamp'] = $epoch;
-                    }
-                }
-                
-                $this->items[$i] = $item;
-            }
-        }
-    }
-    
-    
-    function is_rss () {
-        if ( $this->feed_type == RSS ) {
-            return $this->feed_version; 
-        }
-        else {
-            return false;
-        }
-    }
-    
-    function is_atom() {
-        if ( $this->feed_type == ATOM ) {
-            return $this->feed_version;
-        }
-        else {
-            return false;
-        }
-    }
-
-    /**
-    * return XML parser, and possibly re-encoded source
-    *
-    */
-    function create_parser($source, $out_enc, $in_enc, $detect) {
-        if ( substr(phpversion(),0,1) == 5) {
-            $parser = $this->php5_create_parser($in_enc, $detect);
-        }
-        else {
-            list($parser, $source) = $this->php4_create_parser($source, $in_enc, $detect);
-        }
-        if ($out_enc) {
-            $this->encoding = $out_enc;
-            xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $out_enc);
-        }
-        
-        return array($parser, $source);
-    }
-    
-    /**
-    * Instantiate an XML parser under PHP5
-    *
-    * PHP5 will do a fine job of detecting input encoding
-    * if passed an empty string as the encoding. 
-    *
-    * All hail libxml2!
-    *
-    */
-    function php5_create_parser($in_enc, $detect) {
-        // by default php5 does a fine job of detecting input encodings
-        if(!$detect && $in_enc) {
-            return xml_parser_create($in_enc);
-        }
-        else {
-            return xml_parser_create('');
-        }
-    }
-    
-    /**
-    * Instaniate an XML parser under PHP4
-    *
-    * Unfortunately PHP4's support for character encodings
-    * and especially XML and character encodings sucks.  As
-    * long as the documents you parse only contain characters
-    * from the ISO-8859-1 character set (a superset of ASCII,
-    * and a subset of UTF-8) you're fine.  However once you
-    * step out of that comfy little world things get mad, bad,
-    * and dangerous to know.
-    *
-    * The following code is based on SJM's work with FoF
-    * @see http://minutillo.com/steve/weblog/2004/6/17/php-xml-and-character-encodings-a-tale-of-sadness-rage-and-data-loss
-    *
-    */
-    function php4_create_parser($source, $in_enc, $detect) {
-        if ( !$detect ) {
-            return array(xml_parser_create($in_enc), $source);
-        }
-        
-        if (!$in_enc) {
-            if (preg_match('/<?xml.*encoding=[\'"](.*?)[\'"].*?>/m', $source, $m)) {
-                $in_enc = strtoupper($m[1]);
-                $this->source_encoding = $in_enc;
-            }
-            else {
-                $in_enc = 'UTF-8';
-            }
-        }
-        
-        if ($this->known_encoding($in_enc)) {
-            return array(xml_parser_create($in_enc), $source);
-        }
-        
-        // the dectected encoding is not one of the simple encodings PHP knows
-        
-        // attempt to use the iconv extension to
-        // cast the XML to a known encoding
-        // @see http://php.net/iconv
-       
-        if (function_exists('iconv'))  {
-            $encoded_source = iconv($in_enc,'UTF-8', $source);
-            if ($encoded_source) {
-                return array(xml_parser_create('UTF-8'), $encoded_source);
-            }
-        }
-        
-        // iconv didn't work, try mb_convert_encoding
-        // @see http://php.net/mbstring
-        if(function_exists('mb_convert_encoding')) {
-            $encoded_source = mb_convert_encoding($source, 'UTF-8', $in_enc );
-            if ($encoded_source) {
-                return array(xml_parser_create('UTF-8'), $encoded_source);
-            }
-        }
-        
-        // else 
-        $this->error("Feed is in an unsupported character encoding. ($in_enc) " .
-                     "You may see strange artifacts, and mangled characters.",
-                     E_USER_NOTICE);
-            
-        return array(xml_parser_create(), $source);
-    }
-    
-    function known_encoding($enc) {
-        $enc = strtoupper($enc);
-        if ( in_array($enc, $this->_KNOWN_ENCODINGS) ) {
-            return $enc;
-        }
-        else {
-            return false;
-        }
-    }
-
-    function error ($errormsg, $lvl=E_USER_WARNING) {
-        // append PHP's error message if track_errors enabled
-        if ( isset($php_errormsg) ) { 
-            $errormsg .= " ($php_errormsg)";
-        }
-        if ( MAGPIE_DEBUG ) {
-            trigger_error( $errormsg, $lvl);        
-        }
-        else {
-            error_log( $errormsg, 0);
-        }
-        
-        $notices = E_USER_NOTICE|E_NOTICE;
-        if ( $lvl&$notices ) {
-            $this->WARNING = $errormsg;
-        } else {
-            $this->ERROR = $errormsg;
-        }
-    }
-    
-    
-} // end class RSS
-
-function map_attrs($k, $v) {
-    return "$k=\"$v\"";
-}
-
-// patch to support medieval versions of PHP4.1.x, 
-// courtesy, Ryan Currie, ryan@digibliss.com
-
-if (!function_exists('array_change_key_case')) {
-	define("CASE_UPPER",1);
-	define("CASE_LOWER",0);
-
-
-	function array_change_key_case($array,$case=CASE_LOWER) {
-       if ($case=CASE_LOWER) $cmd=strtolower;
-       elseif ($case=CASE_UPPER) $cmd=strtoupper;
-       foreach($array as $key=>$value) {
-               $output[$cmd($key)]=$value;
-       }
-       return $output;
-	}
-
-}
-
-?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/magpierss/rss_utils.inc 1.4.1.src/cpanel-glprivate/plugins/spamx/magpierss/rss_utils.inc
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/magpierss/rss_utils.inc	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/magpierss/rss_utils.inc	1969-12-31 18:00:00.000000000 -0600
@@ -1,67 +0,0 @@
-<?php
-/*
- * Project:     MagpieRSS: a simple RSS integration tool
- * File:        rss_utils.inc, utility methods for working with RSS
- * Author:      Kellan Elliott-McCrea <kellan@protest.net>
- * Version:     0.51
- * License:     GPL
- *
- * The lastest version of MagpieRSS can be obtained from:
- * http://magpierss.sourceforge.net
- *
- * For questions, help, comments, discussion, etc., please join the
- * Magpie mailing list:
- * magpierss-general@lists.sourceforge.net
- */
-
-
-/*======================================================================*\
-    Function: parse_w3cdtf
-    Purpose:  parse a W3CDTF date into unix epoch
-
-    NOTE: http://www.w3.org/TR/NOTE-datetime
-\*======================================================================*/
-
-function parse_w3cdtf ( $date_str ) {
-    
-    # regex to match wc3dtf
-    $pat = "/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(:(\d{2}))?(?:([-+])(\d{2}):?(\d{2})|(Z))?/";
-    
-    if ( preg_match( $pat, $date_str, $match ) ) {
-        list( $year, $month, $day, $hours, $minutes, $seconds) = 
-            array( $match[1], $match[2], $match[3], $match[4], $match[5], $match[6]);
-        
-        # calc epoch for current date assuming GMT
-        $epoch = gmmktime( $hours, $minutes, $seconds, $month, $day, $year);
-        
-        $offset = 0;
-        if ( $match[10] == 'Z' ) {
-            # zulu time, aka GMT
-        }
-        else {
-            list( $tz_mod, $tz_hour, $tz_min ) =
-                array( $match[8], $match[9], $match[10]);
-            
-            # zero out the variables
-            if ( ! $tz_hour ) { $tz_hour = 0; }
-            if ( ! $tz_min ) { $tz_min = 0; }
-        
-            $offset_secs = (($tz_hour*60)+$tz_min)*60;
-            
-            # is timezone ahead of GMT?  then subtract offset
-            #
-            if ( $tz_mod == '+' ) {
-                $offset_secs = $offset_secs * -1;
-            }
-            
-            $offset = $offset_secs; 
-        }
-        $epoch = $epoch + $offset;
-        return $epoch;
-    }
-    else {
-        return -1;
-    }
-}
-
-?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/MailAdmin.Action.class.php 1.4.1.src/cpanel-glprivate/plugins/spamx/MailAdmin.Action.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/MailAdmin.Action.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/MailAdmin.Action.class.php	2006-08-12 09:22:48.000000000 -0500
@@ -2,14 +2,14 @@
 
 /**
  * File: MailAdmin.Action.class.php
- * This is the Mail Admin Action for the Geeklog Spam-X Plug-in!
+ * This is the Mail Admin Action for the Geeklog Spam-X plugin
  * 
- * Copyright (C) 2004-2005 by the following authors:
- * Author		Tom Willett		tomw AT pigstye DOT net
+ * Copyright (C) 2004-2006 by the following authors:
+ * Author   Tom Willett     tomw AT pigstye DOT net
  * 
  * Licensed under GNU General Public License
  *
- * $Id: MailAdmin.Action.class.php,v 1.10.2.1 2006/06/30 12:20:49 dhaun Exp $
+ * $Id: MailAdmin.Action.class.php,v 1.13 2006/08/12 14:22:48 dhaun Exp $
  */
 
 if (strpos ($_SERVER['PHP_SELF'], 'MailAdmin.Action.class.php') !== false) {
@@ -22,7 +22,7 @@
 require_once($_CONF['path'] . 'plugins/spamx/' . 'BaseCommand.class.php');
 
 /**
- * Action Class which just discards comment
+ * Action Class which emails the spam post to the site admin
  * 
  * @author Tom Willett  tomw@pigstye.net 
  */
@@ -57,12 +57,16 @@
         if (function_exists ('getallheaders')) {
             $headers = getallheaders ();
             foreach ($headers as $key => $content) {
-                $msg .= $key . ': ' . $content . "\n";
+                if (strcasecmp ($key, 'Cookie') != 0) {
+                    $msg .= $key . ': ' . $content . "\n";
+                }
             }
         } else {
             foreach ($_SERVER as $key => $content) {
                 if (substr ($key, 0, 4) == 'HTTP') {
-                    $msg .= $key . ': ' . $content . "\n";
+                    if ($key != 'HTTP_COOKIE') {
+                        $msg .= $key . ': ' . $content . "\n";
+                    }
                 }
             }
         }
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/MassDelete.Admin.class.php 1.4.1.src/cpanel-glprivate/plugins/spamx/MassDelete.Admin.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/MassDelete.Admin.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/MassDelete.Admin.class.php	2006-12-02 10:56:10.000000000 -0600
@@ -10,7 +10,7 @@
 *
 * Licensed under GNU General Public License
 *
-* $Id: MassDelete.Admin.class.php,v 1.10.2.1 2006/06/30 12:20:49 dhaun Exp $
+* $Id: MassDelete.Admin.class.php,v 1.17 2006/12/02 16:35:23 dhaun Exp $
 */
 
 if (strpos ($_SERVER['PHP_SELF'], 'MassDelete.Admin.class.php') !== false) {
@@ -32,8 +32,14 @@
 
         $display = $LANG_SX00['masshead'];
 
-        $act = $_POST['action'];
-        $lmt = $_POST['limit'];
+        $act = '';
+        if (isset ($_POST['action'])) {
+            $act = COM_applyFilter ($_POST['action']);
+        }
+        $lmt = 0;
+        if (isset ($_POST['limit'])) {
+            $lmt = COM_applyFilter ($_POST['limit'], true);
+        }
 
         if (($act == $LANG_SX00['deletespam']) && ($lmt>0)) {
             $numc = 0;
@@ -53,13 +59,18 @@
                 closedir($dir);
             }
 
-            $result = DB_query("SELECT comment,cid,sid,type FROM {$_TABLES['comments']} ORDER BY date DESC LIMIT $lmt");
+            $result = DB_query("SELECT comment,cid,sid,type,UNIX_TIMESTAMP(date) as date,ipaddress FROM {$_TABLES['comments']} ORDER BY date DESC LIMIT $lmt");
             $nrows = DB_numRows($result);
             for ($i = 0; $i < $nrows; $i++) {
                 $A = DB_fetchArray($result);
                 foreach($Spamx_Examine as $Examine) {
                     $EX = new $Examine;
-                    $res = $EX->execute($A['comment']);
+                    if(method_exists($EX, 'reexecute'))
+                    {
+                    	$res = $EX->reexecute($A['comment'], $A['date'], $A['ipaddress'], $A['type']);
+                    } else {
+                    	$res = $EX->execute ($A['comment']);
+                    }
                     if ($res == 1) {
                         break;
                     }
@@ -108,7 +119,7 @@
     */
     function delcomment ($cid, $sid, $type)
     {
-        global $_CONF, $_TABLES;
+        global $_CONF, $_TABLES, $LANG_SX00;
 
         $type = COM_applyFilter ($type);
         $sid = COM_applyFilter ($sid);
@@ -122,7 +133,8 @@
                         $A['group_id'], $A['perm_owner'], $A['perm_group'],
                         $A['perm_members'], $A['perm_anon']) == 3) {
                     CMT_deleteComment(COM_applyFilter($cid, true), $sid, 'article');
-                    $comments = DB_count ($_TABLES['comments'], 'sid', $sid);
+                    $comments = DB_count ($_TABLES['comments'],
+                            array ('sid', 'type'), array ($sid, 'article'));
                     DB_change ($_TABLES['stories'], 'comments', $comments,
                                'sid', $sid);
                 } else {
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/MassDelTrackback.Admin.class.php 1.4.1.src/cpanel-glprivate/plugins/spamx/MassDelTrackback.Admin.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/MassDelTrackback.Admin.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/MassDelTrackback.Admin.class.php	2006-08-20 11:42:32.000000000 -0500
@@ -12,7 +12,7 @@
 *
 * Licensed under GNU General Public License
 *
-* $Id: MassDelTrackback.Admin.class.php,v 1.3.2.1 2006/06/30 12:20:49 dhaun Exp $
+* $Id: MassDelTrackback.Admin.class.php,v 1.6 2006/08/20 16:42:32 dhaun Exp $
 */
 
 if (strpos ($_SERVER['PHP_SELF'], 'MassDelTrackback.Admin.class.php') !== false) {
@@ -30,8 +30,14 @@
 
         $display = $LANG_SX00['masstb'];
 
-        $act = $_POST['action'];
-        $lmt = COM_applyFilter ($_POST['limit'], true);
+        $act = '';
+        if (isset ($_POST['action'])) {
+            $act = COM_applyFilter ($_POST['action']);
+        }
+        $lmt = 0;
+        if (isset ($_POST['limit'])) {
+            $lmt = COM_applyFilter ($_POST['limit'], true);
+        }
 
         if (($act == $LANG_SX00['deletespam']) && ($lmt > 0)) {
             $numc = 0;
@@ -53,7 +59,7 @@
 
             require_once ($_CONF['path_system'] . 'lib-trackback.php');
 
-            $result = DB_query ("SELECT cid,sid,type,url,title,blog,excerpt FROM {$_TABLES['trackback']} ORDER BY date DESC LIMIT $lmt");
+            $result = DB_query ("SELECT cid,sid,type,url,title,blog,excerpt,ipaddress,UNIX_TIMESTAMP(date) as date FROM {$_TABLES['trackback']} ORDER BY date DESC LIMIT $lmt");
             $nrows = DB_numRows ($result);
             for ($i = 0; $i < $nrows; $i++) {
                 $A = DB_fetchArray ($result);
@@ -62,7 +68,12 @@
 
                 foreach ($Spamx_Examine as $Examine) {
                     $EX = new $Examine;
-                    $res = $EX->execute ($comment);
+                    if(method_exists($EX, 'reexecute'))
+                    {
+                    	$res = $EX->reexecute($comment, $A['date'], $A['ipaddress'], $A['type']);
+                    } else {
+                    	$res = $EX->execute ($comment);
+                    }
                     if ($res == 1) {
                         break;
                     }
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/MTBlackList.Examine.class.php 1.4.1.src/cpanel-glprivate/plugins/spamx/MTBlackList.Examine.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/MTBlackList.Examine.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/MTBlackList.Examine.class.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,86 +0,0 @@
-<?php
-
-/**
- * File: MTBlackList.Examine.class.php
- * This module examines comments for entries on the MT-Blacklist
- * for the Geeklog Spam-X Plug-in!
- * 
- * Copyright (C) 2004-2005 by the following authors:
- * Author		Tom Willett		tomw AT pigstye DOT net
- * 
- * Licensed under GNU General Public License
- * 
- * The MT-Blacklist is maintained by Jay Allen
- * http://www.jayallen.org/comment_spam/
- *
- * $Id: MTBlackList.Examine.class.php,v 1.10.2.1 2006/06/30 12:20:49 dhaun Exp $
- */
-
-if (strpos ($_SERVER['PHP_SELF'], 'MTBlackList.Examine.class.php') !== false) {
-    die ('This file can not be used on its own!');
-}
-
-/**
- * Include Abstract Examine Class
- */
-require_once($_CONF['path'] . 'plugins/spamx/' . 'BaseCommand.class.php');
-
-/**
-* html_entity_decode is only available as of PHP 4.3.0
-*/
-if (!function_exists ('html_entity_decode')) {
-    require_once ('PHP/Compat.php');
-
-    PHP_Compat::loadFunction ('html_entity_decode');
-}
-
-/**
- * Examines Comment according to MT-BLacklist
- * 
- * @author Tom Willett tomw AT pigstye DOT net 
- */
-
-class MTBlackList extends BaseCommand {
-    /**
-     * No Constructor Use BaseCommand constructor
-     */
-    /**
-     * Here we do the work
-     */
-    function execute ($comment)
-    {
-        global $_CONF, $_USER, $_TABLES, $LANG_SX00;
-
-        if (isset ($_USER['uid']) && ($_USER['uid'] > 1)) {
-            $uid = $_USER['uid'];
-        } else {
-            $uid = 1;
-        }
-
-        /**
-         * Include Blacklist Data
-         */
-        $result = DB_Query ("SELECT value FROM {$_TABLES['spamx']} WHERE name = 'MTBlacklist'", 1);
-        $nrows = DB_numRows ($result);
-
-        // named entities
-        $comment = html_entity_decode ($comment);
-        // decimal notation
-        $comment = preg_replace ('/&#(\d+);/me', "chr(\\1)", $comment);
-        // hex notation
-        $comment = preg_replace ('/&#x([a-f0-9]+);/mei', "chr(0x\\1)", $comment);
-        $ans = 0; // Found Flag
-        for ($i = 1; $i <= $nrows; $i++) {
-            list ($val) = DB_fetchArray ($result);
-            if (@preg_match ("#$val#i", $comment)) {
-                $ans = 1; // quit on first positive match
-                SPAMX_log ($LANG_SX00['fsc'] . $val . $LANG_SX00['fsc1'] .
-                           $uid . $LANG_SX00['fsc2'] . $_SERVER['REMOTE_ADDR']);
-                break;
-            } 
-        } 
-        return $ans;
-    } 
-} 
-
-?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/SLVbase.class.php 1.4.1.src/cpanel-glprivate/plugins/spamx/SLVbase.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/SLVbase.class.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/SLVbase.class.php	2006-12-10 03:56:39.000000000 -0600
@@ -0,0 +1,214 @@
+<?php
+
+/**
+* File: SLVbase.class.php
+* Spam Link Verification (SLV) Base Class
+*
+* Copyright (C) 2006 by the following authors:
+* Author        Dirk Haun       dirk AT haun-online DOT de
+*
+* Licensed under the GNU General Public License
+*
+* $Id: SLVbase.class.php,v 1.5 2006/12/10 08:57:49 dhaun Exp $
+*/
+
+if (strpos ($_SERVER['PHP_SELF'], 'SLVbase.class.php') !== false) {
+    die ('This file can not be used on its own!');
+}
+
+/**
+* Sends posts to SLV (linksleeve.org) for examination
+*
+* @author Dirk Haun     dirk AT haun-online DOT de
+*
+* based on the works of Tom Willet (Spam-X) and Russ Jones (SLV)
+*/
+
+class SLVbase {
+
+    var $_debug = false;
+
+    var $_verbose = false;
+
+    /**
+    * Constructor
+    */
+    function SLVbase()
+    {
+        $this->_debug = false;
+        $this->_verbose = false;
+    }
+
+    /**
+    * Check for spam links
+    *
+    * @param    string  $post   post to check for spam
+    * @return   boolean         true = spam found, false = no spam
+    *
+    * Note: Also returns 'false' in case of problems communicating with SLV.
+    *       Error messages are logged in Geeklog's error.log
+    *
+    */
+    function CheckForSpam ($post)
+    {
+        global $_SPX_CONF;
+
+        require_once ('XML/RPC.php');
+
+        $retval = false;
+
+        if (empty ($post)) {
+            return $retval;
+        }
+
+        $links = $this->prepareLinks ($post);
+        if (empty ($links)) {
+            return $retval;
+        }
+
+        if (!isset ($_SPX_CONF['timeout'])) {
+            $_SPX_CONF['timeout'] = 5; // seconds
+        }
+
+        if ($this->_verbose) {
+            SPAMX_log ("Sending to SLV: $links");
+        }
+
+        $params = array (new XML_RPC_Value ($links, 'string'));
+        $msg = new XML_RPC_Message ('slv', $params);
+        $cli = new XML_RPC_Client ('/slv.php', 'http://www.linksleeve.org');
+
+        if ($this->_debug) {
+            $client->setDebug (1);
+        }
+
+        $resp = $cli->send ($msg, $_SPX_CONF['timeout']);
+        if (!$resp) {
+            COM_errorLog ('Error communicating with SLV: ' . $cli->errstr
+                          . '; Message was ' . $msg->serialize());
+        } else if ($resp->faultCode ()) {
+            COM_errorLog ('Error communicating with SLV. Fault code: '
+                          . $resp->faultCode() . ', Fault reason: '
+                          . $resp->faultString() . '; Message was '
+                          . $msg->serialize());
+        } else {
+            $val = $resp->value();
+            // note that SLV returns '1' for acceptable posts and '0' for spam
+            if ($val->scalarval() != '1') {
+                $retval = true;
+                SPAMX_log ("SLV: spam detected");
+            } else if ($this->_verbose) {
+                SPAMX_log ("SLV: no spam detected");
+            }
+        }
+
+        return $retval;
+    }
+
+    /**
+    * Check whitelist
+    *
+    * Check against our whitelist of sites not to report to SLV. Note that
+    * URLs starting with $_CONF['site_url'] have already been removed earlier.
+    *
+    * @param    array   &$links     array of URLs from a post
+    * @return   void ($links is passed by reference and modified in place)
+    *
+    */
+    function checkWhitelist (&$links)
+    {
+        global $_TABLES;
+
+        $result = DB_query ("SELECT value FROM {$_TABLES['spamx']} WHERE name='SLVwhitelist'", 1);
+        $nrows = DB_numRows ($result);
+
+        for ($i = 0; $i < $nrows; $i++) {
+            $A = DB_fetchArray ($result);
+            $val = $A['value'];
+            $val = str_replace ('#', '\\#', $val);
+
+            foreach ($links as $key => $link) {
+                if (!empty ($link)) {
+                    if (preg_match ("#$val#i", $link)) {
+                        $links[$key] = '';
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+    * Extract links
+    *
+    * Extracts all the links from a post; expects HTML links, i.e. <a> tags
+    *
+    * @param    string  $comment    The post to check
+    * @return   array               All the URLs in the post
+    *
+    */
+    function getLinks ($comment)
+    {
+        global $_CONF;
+
+        $links = array();
+
+        preg_match_all( "/<a[^>]*href=[\"']([^\"']*)[\"'][^>]*>(.*?)<\/a>/i",
+                        $comment, $matches );
+        for ($i = 0; $i < count ($matches[0]); $i++) {
+            $url = $matches[1][$i];
+            if (strpos ($url, $_CONF['site_url']) === 0) {
+                // skip links to our own site
+                continue;
+            } else {
+                $links[] = $url;
+            }
+        }
+
+        return $links;
+    }
+
+    /**
+    * Extract only the links from the post
+    *
+    * SLV has a problem with non-ASCII character sets, so we feed it the URLs
+    * only. We also remove all URLs containing our site's URL.
+    *
+    * Since we don't know if the post is in HTML or plain ASCII, we run it
+    * through getLinks() twice.
+    *
+    * @param    string  $comment    The post to check
+    * @return   string              All the URLs in the post, sep. by linefeeds
+    *
+    */
+    function prepareLinks ($comment)
+    {
+        $links = array();
+        $linklist = '';
+
+        // some spam posts have extra backslashes
+        $comment = stripslashes ($comment);
+
+        // some spammers have yet to realize that we're not supporting BBcode
+        // but since we want the URLs, convert it here ...
+        $comment = preg_replace ('/\[url=([^\]]*)\]/i', '<a href="\1">',
+                                 $comment);
+        $comment = str_replace (array ('[/url]', '[/URL]'),
+                                array ('</a>',   '</a>'  ), $comment);
+
+        // get all links from <a href="..."> tags
+        $links = $this->getLinks ($comment);
+
+        // strip all HTML, then get all the plain text links
+        $comment = COM_makeClickableLinks (strip_tags ($comment));
+        $links += $this->getLinks ($comment);
+
+        if (count ($links) > 0) {
+            $this->checkWhitelist ($links);
+            $linklist = implode ("\n", $links);
+        }
+
+        return trim ($linklist);
+    }
+}
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/SLV.Examine.class.php 1.4.1.src/cpanel-glprivate/plugins/spamx/SLV.Examine.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/SLV.Examine.class.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/SLV.Examine.class.php	2006-08-27 04:30:19.000000000 -0500
@@ -0,0 +1,68 @@
+<?php
+
+/**
+* File: SLV.Examine.class.php
+* This is the Spam Link Verification Examine class for the Geeklog Spam-X plugin
+*
+* Copyright (C) 2006 by the following authors:
+* Author        Dirk Haun       dirk AT haun-online DOT de
+*
+* Licensed under the GNU General Public License
+*
+* $Id: SLV.Examine.class.php,v 1.1 2006/08/27 09:30:19 dhaun Exp $
+*/
+
+if (strpos ($_SERVER['PHP_SELF'], 'SLV.Examine.class.php') !== false) {
+    die ('This file can not be used on its own!');
+}
+
+/**
+* Include Base Classes
+*/
+require_once ($_CONF['path'] . 'plugins/spamx/' . 'BaseCommand.class.php');
+require_once ($_CONF['path'] . 'plugins/spamx/' . 'SLVbase.class.php');
+
+/**
+* Sends posts to SLV (linksleeve.org) for examination
+*
+* @author Dirk Haun     dirk AT haun-online DOT de
+*
+* based on the works of Tom Willet (Spam-X) and Russ Jones (SLV)
+*/
+
+class SLV extends BaseCommand {
+    /**
+     * No Constructor Use BaseCommand constructor
+     */
+
+    /**
+     * Here we do the work
+     */
+    function execute ($comment)
+    {
+        global $_USER, $LANG_SX00;
+
+        $ans = 0;
+
+        if (isset ($_USER['uid']) && ($_USER['uid'] > 1)) {
+            $uid = $_USER['uid'];
+        } else {
+            $uid = 1;
+        }
+
+        $slv = new SLVbase();
+        if ($slv->CheckForSpam ($comment)) {
+            $ans = 1;
+            SPAMX_log ($LANG_SX00['foundspam'] . 'Spam Link Verification (SLV)'.
+                       $LANG_SX00['foundspam2'] . $uid .
+                       $LANG_SX00['foundspam3'] . $_SERVER['REMOTE_ADDR']);
+        }
+
+        // tell the Action module that we've already been triggered
+        $GLOBALS['slv_triggered'] = true;
+
+        return $ans;
+    }
+}
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/SLVreport.Action.class.php 1.4.1.src/cpanel-glprivate/plugins/spamx/SLVreport.Action.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/SLVreport.Action.class.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/SLVreport.Action.class.php	2006-08-27 04:30:19.000000000 -0500
@@ -0,0 +1,72 @@
+<?php
+
+/**
+* File: SLV.Action.class.php
+* This is the Spam Link Verification Action class for the Geeklog Spam-X plugin
+*
+* Copyright (C) 2006 by the following authors:
+* Author        Dirk Haun       dirk AT haun-online DOT de
+*
+* Licensed under the GNU General Public License
+*
+* $Id: SLVreport.Action.class.php,v 1.1 2006/08/27 09:30:19 dhaun Exp $
+*/
+
+if (strpos ($_SERVER['PHP_SELF'], 'SLVreport.Action.class.php') !== false) {
+    die ('This file can not be used on its own!');
+}
+
+/**
+* Include Base Classes
+*/
+require_once ($_CONF['path'] . 'plugins/spamx/' . 'BaseCommand.class.php');
+require_once ($_CONF['path'] . 'plugins/spamx/' . 'SLVbase.class.php');
+
+/**
+* Sends posts to SLV (linksleeve.org)
+*
+* Due to the way Spam-X works, the SLV Examine class may not have been
+* triggered when some other module detected the spam first. SLV needs to
+* see all links used in spam posts, though, to accurately detect spam. So
+* this class ensures that SLV sees spam detected by other Spam-X modules, too.
+*
+* @author Dirk Haun     dirk AT haun-online DOT de
+*
+* based on the works of Tom Willet (Spam-X) and Russ Jones (SLV)
+*/
+class SLVreport extends BaseCommand {
+    /**
+     * Constructor
+     * Numbers are always binary digits and added together to make call
+     */
+    function SLVreport()
+    {
+        global $num;
+
+        // Actually, this is the code used by the DeleteComment class.
+        // We're piggybacking on the delete operation here.
+        $num = 128;
+    }
+
+    /**
+     * Here we do the work
+     */
+    function execute ($comment)
+    {
+        global $result;
+
+        $result = 128;
+
+        if (isset ($GLOBALS['slv_triggered']) && $GLOBALS['slv_triggered']) {
+            // the Examine class already reported these to SLV
+            return 1;
+        }
+
+        $slv = new SLVbase();
+        $slv->CheckForSpam ($comment);
+
+        return 1;
+    }
+}
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/SLVwhitelist.Admin.class.php 1.4.1.src/cpanel-glprivate/plugins/spamx/SLVwhitelist.Admin.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/SLVwhitelist.Admin.class.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/SLVwhitelist.Admin.class.php	2006-09-02 10:35:46.000000000 -0500
@@ -0,0 +1,84 @@
+<?php
+
+/**
+* File: SLVwhitelist.Admin.class.php
+* This is the SLV Whitelist Module for the Geeklog Spam-X plugin
+*
+* Copyright (C) 2004-2006 by the following authors:
+* Author   Tom Willett     tomw AT pigstye DOT net
+*          Dirk Haun       dirk AT haun-online DOT de
+*
+* Licensed under GNU General Public License
+*
+* $Id: SLVwhitelist.Admin.class.php,v 1.1 2006/09/02 15:35:46 dhaun Exp $
+*/
+
+if (strpos ($_SERVER['PHP_SELF'], 'SLVwhitelist.Admin.class.php') !== false) {
+    die ('This file can not be used on its own!');
+}
+
+/**
+* SLV Whitelist Editor
+*/
+
+require_once ($_CONF['path'] . 'plugins/spamx/BaseAdmin.class.php');
+
+class SLVwhitelist extends BaseAdmin {
+    /**
+     * Constructor
+     */
+    function display()
+    {
+        global $_CONF, $_TABLES, $LANG_SX00;
+
+        $action = '';
+        if (isset ($_GET['action'])) {
+            $action = COM_applyFilter ($_GET['action']);
+        } else if (isset ($_POST['paction'])) {
+            $action = COM_applyFilter ($_POST['paction']);
+        } 
+
+        $entry = '';
+        if (isset ($_GET['entry'])) {
+            $entry = COM_stripslashes ($_GET['entry']);
+        } else if (isset ($_POST['pentry'])) {
+            $entry = COM_stripslashes ($_POST['pentry']);
+        }
+
+        if ($action == 'delete') {
+            $entry = addslashes ($entry);
+            $result = DB_query ("DELETE FROM {$_TABLES['spamx']} WHERE name = 'SLVwhitelist' AND value = '$entry'");
+        } elseif ($action == $LANG_SX00['addentry']) {
+            if (!empty ($entry)) {
+                $entry = addslashes ($entry);
+                $result = DB_query ("INSERT INTO {$_TABLES['spamx']} VALUES ('SLVwhitelist', '$entry')");
+            }
+        }
+
+        $display = '<hr>' . LB . '<p><b>';
+        $display .= $LANG_SX00['slvwhitelist'];
+        $display .= '</b></p>' . LB . '<ul>' . LB;
+        $result = DB_query ("SELECT value FROM {$_TABLES['spamx']} WHERE name = 'SLVwhitelist'");
+        $nrows = DB_numRows ($result);
+        for ($i = 0; $i < $nrows; $i++) {
+            $A = DB_fetchArray ($result);
+            $e = $A['value'];
+            $display .= '<li><a href="' . $_CONF['site_admin_url'] . '/plugins/spamx/index.php?command=SLVwhitelist&amp;action=delete&amp;entry=' . urlencode ($e) . '">' . htmlspecialchars ($e) . '</a></li>' . LB;
+        }
+        $display .= '</ul>' . LB . '<p>' . $LANG_SX00['e1'] . '</p>' . LB;
+        $display .= '<p>' . $LANG_SX00['e2'] . '</p>' . LB;
+        $display .= '<form method="POST" action="' . $_CONF['site_admin_url'] . '/plugins/spamx/index.php?command=SLVwhitelist">' . LB;
+        $display .= '<input type="text" size ="30" name="pentry">&nbsp;&nbsp;&nbsp;';
+        $display .= '<input type="submit" name="paction" value="' . $LANG_SX00['addentry'] . '">' . LB;
+        $display .= '</form>' . LB;
+
+        return $display;
+    }
+
+    function link()
+    {
+        return 'Edit SLV Whitelist';
+    }
+}
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/sql/mssql_install.php 1.4.1.src/cpanel-glprivate/plugins/spamx/sql/mssql_install.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/sql/mssql_install.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/sql/mssql_install.php	2006-08-28 13:42:25.000000000 -0500
@@ -0,0 +1,39 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Spam-X Plugin 1.1                                                         |
+// +---------------------------------------------------------------------------+
+// | Installation SQL                                                          |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2004-2006 by the following authors:                         |
+// |                                                                           |
+// | Authors: Tom Willett       - tomw AT pigstye DOT net                      |
+// |          Randy Kolenko     - randy AT nextide DOT ca                      |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is licensed under the terms of the GNU General Public License|
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                      |
+// | See the GNU General Public License for more details.                      |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+// $Id: mssql_install.php,v 1.1 2006/08/28 18:42:25 dhaun Exp $
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['spamx']}] (
+    [name] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [value] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL 
+) ON [PRIMARY]
+";
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/sql/mysql_install.php 1.4.1.src/cpanel-glprivate/plugins/spamx/sql/mysql_install.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/sql/mysql_install.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/sql/mysql_install.php	2006-08-20 11:27:52.000000000 -0500
@@ -0,0 +1,39 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Spam-X Plugin 1.1                                                         |
+// +---------------------------------------------------------------------------+
+// | Installation SQL                                                          |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2004-2006 by the following authors:                         |
+// |                                                                           |
+// | Authors: Tom Willett       - tomw AT pigstye DOT net                      |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is licensed under the terms of the GNU General Public License|
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                      |
+// | See the GNU General Public License for more details.                      |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+// $Id: mysql_install.php,v 1.1 2006/08/20 16:27:52 dhaun Exp $
+
+$_SQL[] = "
+CREATE TABLE {$_TABLES['spamx']} (
+  name varchar(20) NOT NULL default '',
+  value varchar(255) NOT NULL default '', 
+  INDEX spamx_name(name)
+) TYPE=MyISAM
+";
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/templates/admin.thtml 1.4.1.src/cpanel-glprivate/plugins/spamx/templates/admin.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/spamx/templates/admin.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/spamx/templates/admin.thtml	2006-06-11 11:31:16.000000000 -0500
@@ -1,2 +1,10 @@
-<a href="{site_admin_url}/plugins/{plugin}/index.php"><img src="{site_admin_url}/plugins/{plugin}/images/{plugin}.png" border="0" alt="[{plugin_name}]"></a>
-&nbsp;&nbsp; <b><font size="4"> {header} </font></b>
+<table border="0" cellspacing="0" cellpadding="2" style="margin-top:5px;">
+    <tr>
+        <td>
+            <a href="{site_admin_url}/plugins/{plugin}/index.php"><img src="{site_admin_url}/plugins/{plugin}/images/{plugin}.png" border="0" alt="[{plugin_name}]"></a>
+        </td>
+        <td>
+            <h1>{header}</h1>
+        </td>
+    </tr>
+</table>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/config.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/config.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/config.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/config.php	2006-08-21 09:27:54.000000000 -0500
@@ -1,6 +1,6 @@
 <?php
 
-$_SP_CONF['version'] = '1.4.2';
+$_SP_CONF['version'] = '1.4.3';
 
 // If you don't plan on using PHP code in static pages, you should set this
 // to 0, thus disabling the execution of PHP.
@@ -30,6 +30,13 @@
 // the default for that option (1 = wrap in a block, 0 = don't).
 $_SP_CONF['in_block'] = 1;
 
+// Do you want to show the hits on static pages?
+// the default for that option (1 = show hits, 0 = don't).
+$_SP_CONF['show_hits'] = 1;
+
+// Do you want to show the last update date/time on static pages?
+// the default for that option (1 = show date, 0 = don't).
+$_SP_CONF['show_date'] = 1;
 
 // If you experience timeout issues, you may need to set both of the
 // following values to 0 as they are intensive
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/functions.inc 1.4.1.src/cpanel-glprivate/plugins/staticpages/functions.inc
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/functions.inc	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/functions.inc	2006-11-04 11:54:44.000000000 -0600
@@ -2,7 +2,7 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Static Pages Plugin 1.4.2                                                 |
+// | Static Pages Plugin 1.4.3                                                 |
 // +---------------------------------------------------------------------------+
 // | functions.inc                                                             |
 // |                                                                           |
@@ -34,7 +34,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: functions.inc,v 1.63.2.1 2006/06/30 12:20:49 dhaun Exp $
+// $Id: functions.inc,v 1.79 2006/11/04 17:54:44 dhaun Exp $
 
 if (strpos ($_SERVER['PHP_SELF'], 'functions.inc') !== false) {
     die ('This file can not be used on its own.');
@@ -80,14 +80,12 @@
         }
     }
 
-    $result = DB_query ('SELECT sp_id, sp_label, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon FROM ' . $_TABLES['staticpage'] . ' WHERE sp_onmenu = 1' . $order);
+    $result = DB_query ('SELECT sp_id, sp_label FROM ' . $_TABLES['staticpage'] . ' WHERE sp_onmenu = 1' . COM_getPermSql ('AND') . $order);
     $nrows = DB_numRows ($result);
     $menuitems = array ();
     for ($i = 0; $i < $nrows; $i++) {
         $A = DB_fetchArray ($result);
-        if (SEC_hasAccess ($A['owner_id'], $A['group_id'], $A['perm_owner'], $A['perm_group'], $A['perm_members'], $A['perm_anon'])) {
-            $menuitems[$A['sp_label']] = COM_buildURL ($_CONF['site_url'] . '/staticpages/index.php?page=' . $A['sp_id']);
-    	}
+        $menuitems[$A['sp_label']] = COM_buildURL ($_CONF['site_url'] . '/staticpages/index.php?page=' . $A['sp_id']);
     }
 
     return $menuitems;
@@ -149,8 +147,8 @@
     if ($nrows > 0) {
         require_once( $_CONF['path_system'] . 'lib-admin.php' );
         $header_arr = array(
-            array('text' => $LANG_STATIC['stats_page_title'], 'field' => 'sid'),
-            array('text' => $LANG_STATIC['stats_hits'], 'field' => 'sp_hits'),
+            array('text' => $LANG_STATIC['stats_page_title'], 'field' => 'sid', 'header_class' => 'stats-header-title'),
+            array('text' => $LANG_STATIC['stats_hits'], 'field' => 'sp_hits', 'header_class' => 'stats-header-count', 'field_class' => 'stats-list-count'),
         );
         $data_arr = array();
         $text_arr = array('has_menu'     => false,
@@ -239,7 +237,7 @@
 
     // Build search SQL - exclude static PHP pages from search.
     $select = "SELECT u.username,u.fullname,sp.sp_id,sp.sp_title,sp.sp_hits,sp.sp_uid,UNIX_TIMESTAMP(sp.sp_date) AS day";
-    $sql = " FROM {$_TABLES['staticpage']} AS sp,{$_TABLES['users']} AS u WHERE (sp.sp_uid = u.uid) AND (sp_php != 1)" . COM_getPermSQL ('AND');
+    $sql = " FROM {$_TABLES['staticpage']} AS sp,{$_TABLES['users']} AS u WHERE (sp.sp_uid = u.uid) AND (sp_php <> 1)" . COM_getPermSQL ('AND') . COM_getLangSql ('sp_id', 'AND', 'sp');
 
     if (!empty ($query)) {
         if ($keyType == 'phrase') {
@@ -293,7 +291,7 @@
     if (!empty ($author)) {
         $sql .= "AND (sp_uid = '$author')";
     }
-    $sql    .= " ORDER BY sp_date DESC ";
+    $sql    .= " GROUP BY sp_date, u.username, u.fullname, sp.sp_id, sp.sp_title, sp.sp_hits, sp.sp_uid ORDER BY sp_date DESC ";
     $l = ($perpage * $page) - $perpage;
     $sql .= 'LIMIT ' . $l . ',' . $perpage;
 
@@ -369,10 +367,10 @@
 */
 function plugin_getadminoption_staticpages()
 {
-    global $_CONF, $LANG_STATIC, $_TABLES;
+    global $_CONF, $_TABLES, $LANG_STATIC;
 
     if (SEC_hasRights ('staticpages.edit,staticpages.delete', 'OR')) {
-        $result = DB_query ("SELECT count(*) AS cnt FROM {$_TABLES['staticpage']}" . COM_getPermSQL ());
+        $result = DB_query ("SELECT count(*) AS cnt FROM {$_TABLES['staticpage']}" . COM_getPermSQL ('WHERE', 0, 3));
         $A = DB_fetchArray ($result);
         $total_pages = $A['cnt'];
         return array ($LANG_STATIC['staticpages'], $_CONF['site_admin_url'] . '/plugins/staticpages/index.php', $total_pages);
@@ -487,7 +485,7 @@
     if (!empty ($perms)) {
         $perms = ' AND ' . $perms;
     }
-    $spsql = "SELECT sp_id,sp_content,sp_title,sp_format,sp_php,sp_inblock FROM {$_TABLES['staticpage']} WHERE (sp_centerblock = 1) AND " . $moresql . $perms . " ORDER BY " . $sort;
+    $spsql = "SELECT sp_id,sp_title,sp_content,sp_format,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon,sp_php,sp_inblock,sp_help FROM {$_TABLES['staticpage']} WHERE (sp_centerblock = 1)" . COM_getLangSql ('sp_id', 'AND') . ' AND ' . $moresql . $perms . " ORDER BY " . $sort;
     $result = DB_query ($spsql);
 
     $pages = DB_numRows ($result);
@@ -510,29 +508,19 @@
 
             if (($spresult['sp_inblock'] == 1) && !empty ($spresult['sp_title'])
                 && (($where != 0) || ($spresult['sp_format'] != 'blankpage'))) {
-                $retval .= COM_startBlock ($spresult['sp_title'], '',
+                $retval .= COM_startBlock ($spresult['sp_title'], $spresult['sp_help'],
                     COM_getBlockTemplate ('_staticpages_centerblock', 'header'));
             }
 
-            if ($_SP_CONF['allow_php'] == 1) {
-                // Check for type (ie html or php)
-                if ($spresult['sp_php'] == 1) {
-                    $retval .= eval (stripslashes ($spresult['sp_content']));
-                } else if ($spresult['sp_php'] == 2) {
-                    ob_start ();
-                    eval (stripslashes ($spresult['sp_content']));
-                    $retval .= ob_get_contents ();
-                    ob_end_clean ();
-                } else {
-                    $retval .= PLG_replacetags (stripslashes ($spresult['sp_content']));
-                }
-            } else {
-                if ($spresult['sp_php'] != 0) {
-                    COM_errorLog ("PHP in static pages is disabled. Can not display page '$sp_id'.", 1);
-                    $retval .= $LANG_STATIC['deny_msg'];
-                } else {
-                    $retval .= stripslashes ($spresult['sp_content']);
-                }
+            $retval .= SP_render_content (stripslashes ($spresult['sp_content']), $spresult['sp_php']);
+
+            if ((SEC_hasAccess ($spresult['owner_id'], $spresult['group_id'], $spresult['perm_owner'],
+                $spresult['perm_group'], $spresult['perm_members'], $spresult['perm_anon']) == 3) &&
+                SEC_hasRights ('staticpages.edit')) {
+                $retval .= '<p align="center"><a href="' . $_CONF['site_admin_url']
+                        . '/plugins/staticpages/index.php?mode=edit&amp;sp_id='
+                        . $spresult['sp_id'] . '">';
+                $retval .= $LANG_STATIC['edit'] . '</a></p>';
             }
 
             if (($spresult['sp_inblock'] == 1) && !empty ($spresult['sp_title'])
@@ -567,8 +555,8 @@
 {
     global $_TABLES, $_SP_CONF;
 
-    if (DB_count ($_TABLES['staticpage'],
-            "(sp_uid = $uid) OR (owner_id = $uid)") == 0) {
+    if (DB_count ($_TABLES['staticpage'], 'sp_uid', $uid) +
+            DB_count ($_TABLES['staticpage'], 'owner_id', $uid) == 0) {
         return;
     }
 
@@ -641,7 +629,28 @@
 }
 
 /**
-* Removes the datastructures for this plugin from the Geeklog database
+* Update the Static Pages plugin
+*
+* @return   int     Number of message to display (true = generic success msg)
+*
+*/
+function plugin_upgrade_staticpages ()
+{
+    global $_TABLES, $_SP_CONF;
+
+    // the plugin needs this function so complain when it doesn't exist
+    if (!function_exists ('SEC_getGroupDropdown')) {
+        return 3002;
+    }
+
+    // no db changes - just update the version number
+    DB_query ("UPDATE {$_TABLES['plugins']} SET pi_version = '{$_SP_CONF['version']}' WHERE pi_name = 'staticpages'");
+
+    return true;
+}
+
+/**
+* Removes the data structures for this plugin from the Geeklog database
 *
 * This may get called by the install routine to undo anything done to this
 * point.  To do that, $steps will have a list of steps to undo
@@ -748,9 +757,9 @@
     global $_CONF;
 
     if (empty ($path)) {
-        $layout_path = $_CONF['path_layout'] . staticpages;
+        $layout_path = $_CONF['path_layout'] . 'staticpages';
     } else {
-        $layout_path = $_CONF['path_layout'] . staticpages . '/' . $path;
+        $layout_path = $_CONF['path_layout'] . 'staticpages/' . $path;
     }
 
     if (is_dir ($layout_path)) {
@@ -765,7 +774,8 @@
     return $retval;
 }
 
-function plugin_getListField_staticpages($fieldname, $fieldvalue, $A, $icon_arr) {
+function plugin_getListField_staticpages($fieldname, $fieldvalue, $A, $icon_arr)
+{
     global $_CONF, $LANG_ADMIN, $LANG_STATIC, $_TABLES;
 
     switch($fieldname) {
@@ -783,9 +793,7 @@
                     . $LANG_STATIC['title_display'] . '">' . $sp_title . '</a>';
             break;
         case "sp_uid":
-            $nresult = DB_query ("SELECT username,fullname FROM {$_TABLES['users']} WHERE uid = {$A['sp_uid']}");
-            $N = DB_fetchArray ($nresult);
-            $retval = $N['username'];
+            $retval = COM_getDisplayName ($A['sp_uid']);
             break;
         case "sp_centerblock":
             if ($A['sp_centerblock']) {
@@ -810,4 +818,42 @@
     return $retval;
 }
 
+/**
+* Render the actual content of a static page (without any surrounding blocks)
+*
+* @param    string  $sp_content the content (HTML or PHP source)
+* @param    int     $sp_php     flag: 1 = content is PHP source, 0 = is HTML
+* @return   string              rendered content (HTML)
+*
+*/
+function SP_render_content ($sp_content, $sp_php)
+{
+    global $_SP_CONF, $LANG_STATIC;
+
+    $retval = '';
+
+    if ($_SP_CONF['allow_php'] == 1) {
+        // Check for type (ie html or php)
+        if ($sp_php == 1) {
+            $retval .= eval ($sp_content);
+        } else if ($sp_php == 2) {
+            ob_start ();
+            eval ($sp_content);
+            $retval .= ob_get_contents ();
+            ob_end_clean ();
+        } else {
+            $retval .= PLG_replacetags ($sp_content);
+        }
+    } else {
+        if ($sp_php != 0) {
+            COM_errorLog ("PHP in static pages is disabled. Can not display page '$page'.", 1);
+            $retval .= $LANG_STATIC['deny_msg'];
+        } else {
+            $retval .= PLG_replacetags ($sp_content);
+        }
+    }
+
+    return $retval;
+}
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/chinese_simplified_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/chinese_simplified_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/chinese_simplified_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/chinese_simplified_utf-8.php	2006-08-05 10:07:44.000000000 -0500
@@ -66,7 +66,6 @@
     'results' => '静态页结果',
     'author' => '作者',
     'no_title_or_content' => '你最少要填入<b>标题</b> 和 <b>内容</b>.',
-    'no_such_page_logged_in' => '对不起 '.$_USER['username'].'..',
     'no_such_page_anon' => '请登入..',
     'no_page_access_msg' => "这也许是你未登入, 或不是此站的用户. 请 <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> 申请成为用户 </a> 来得到登入权",
     'php_msg' => 'PHP: ',
@@ -114,4 +113,7 @@
     'submit' => '提交'
 );
 
-?>
\ No newline at end of file
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/chinese_traditional_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/chinese_traditional_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/chinese_traditional_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/chinese_traditional_utf-8.php	2006-08-05 10:07:44.000000000 -0500
@@ -66,7 +66,6 @@
     'results' => '靜態頁結果',
     'author' => '作者',
     'no_title_or_content' => '你最少要填入<b>標題</b> 和 <b>內容</b>.',
-    'no_such_page_logged_in' => '對不起 '.$_USER['username'].'..',
     'no_such_page_anon' => '請登入..',
     'no_page_access_msg' => "這也許是你未登入, 或不是此站的用戶. 請 <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> 申請成為用戶 </a> 來得到登入權",
     'php_msg' => 'PHP: ',
@@ -114,4 +113,7 @@
     'submit' => '提交'
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/czech.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/czech.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/czech.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/czech.php	2006-08-05 10:07:44.000000000 -0500
@@ -65,7 +65,6 @@
     results => 'Statick strnky - ',
     author => 'Autor',
     no_title_or_content => 'Muste vyplnit alespo pole <b>Titulek</b> a <b>Obsah</b>.',
-    no_such_page_logged_in => 'Sorry '.$_USER['username'].'..',
     no_such_page_anon => 'Please log in..',
     no_page_access_msg => "This could be because you're not logged in, or not a member of {$_CONF["site_name"]}. Please <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> become a member</a> of {$_CONF["site_name"]} to receive full membership access",
     php_msg => 'PHP: ',
@@ -108,4 +107,7 @@
     'printable_format' => 'Printable Format'
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/danish.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/danish.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/danish.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/danish.php	2006-08-05 10:07:44.000000000 -0500
@@ -64,7 +64,6 @@
     results => 'Fast Side Resultat',
     author => 'Forfatter',
     no_title_or_content => 'You must at least fill in the <b>Title</b> and <b>Content</b> fields.',
-    no_such_page_logged_in => 'Desvrre '.$_USER['username'].'..',
     no_such_page_anon => 'Log venligst ind..',
     no_page_access_msg => "Dette kan skyldes at du ikke er logget ind, eller ikke er oprettet som bruger af {$_CONF["site_name"]}. Bliv venligst <a href=\"{$_CONF['site_url']}/users.php?mode=new\">oprettet som bruger</a> af {$_CONF["site_name"]} for at f fuld brugeradgang",
     php_msg => 'PHP: ',
@@ -107,4 +106,7 @@
     'printable_format' => 'Printable Format'
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/dutch.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/dutch.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/dutch.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/dutch.php	2006-08-05 10:07:44.000000000 -0500
@@ -65,7 +65,6 @@
     'results' => 'Static Pages Resultaten',
     'author' => 'Auteur',
     'no_title_or_content' => 'Gelieve de <b>Titel</b> en <b>Content</b> op te geven.',
-    'no_such_page_logged_in' => 'Helaas. '.$_USER['username'].'..',
     'no_such_page_anon' => 'Gelieve eerst in te loggen...',
     'no_page_access_msg' => "Dit kan optreden omdat u niet ingelogd bent, of geen lid bent van {$_CONF["site_name"]}. <a href=\"{$_CONF['site_url']}/users.php?mode=new\">Meldt u aann</a> op {$_CONF["site_name"]} om alle faciliteiten te verkrijgen",
     'php_msg' => 'PHP: ',
@@ -108,4 +107,7 @@
     'printable_format' => 'Printbare versie'
 );
 
-?>
\ No newline at end of file
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/english.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/english.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/english.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/english.php	2006-08-05 10:07:44.000000000 -0500
@@ -63,7 +63,6 @@
     'results' => 'Static Pages Results',
     'author' => 'Author',
     'no_title_or_content' => 'You must at least fill in the <b>Title</b> and <b>Content</b> fields.',
-    'no_such_page_logged_in' => 'Sorry '.$_USER['username'].'..',
     'no_such_page_anon' => 'Please log in..',
     'no_page_access_msg' => "This could be because you're not logged in, or not a member of {$_CONF['site_name']}. Please <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> become a member</a> of {$_CONF['site_name']} to receive full membership access",
     'php_msg' => 'PHP: ',
@@ -111,4 +110,7 @@
     'submit' => 'Submit'
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/english_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/english_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/english_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/english_utf-8.php	2006-08-24 02:36:50.000000000 -0500
@@ -24,7 +24,7 @@
 ###############################################################################
 
 ###############################################################################
-# Array Format: 
+# Array Format:
 # $LANGXX[YY]:	$LANG - variable name
 #		  	XX - file id number
 #			YY - phrase id number
@@ -63,7 +63,6 @@
     'results' => 'Static Pages Results',
     'author' => 'Author',
     'no_title_or_content' => 'You must at least fill in the <b>Title</b> and <b>Content</b> fields.',
-    'no_such_page_logged_in' => 'Sorry '.$_USER['username'].'..',
     'no_such_page_anon' => 'Please log in..',
     'no_page_access_msg' => "This could be because you're not logged in, or not a member of {$_CONF['site_name']}. Please <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> become a member</a> of {$_CONF['site_name']} to receive full membership access",
     'php_msg' => 'PHP: ',
@@ -111,4 +110,7 @@
     'submit' => 'Submit'
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/estonian.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/estonian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/estonian.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/estonian.php	2006-10-15 02:54:35.000000000 -0500
@@ -0,0 +1,115 @@
+<?php
+
+###############################################################################
+# estonian.php
+# This is the estonian language page for the Geeklog Static Page Plug-in
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony@tonybibbs.com
+#
+# Estonian translation by Artur Rpp <rtr AT planet DOT ee>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+
+$LANG_STATIC= array(
+    'newpage' => 'Uus leht',
+    'adminhome' => 'Admin avaleht',
+    'staticpages' => 'Staatilised lehed',
+    'staticpageeditor' => 'Staatiliste lehtede toimetaja',
+    'writtenby' => 'Kirjutas',
+    'date' => 'Uuendatud',
+    'title' => 'Tiitel',
+    'content' => 'Sisu',
+    'hits' => 'Klikke',
+    'staticpagelist' => 'Staatiliste lehtede nimekiri',
+    'url' => 'URL',
+    'edit' => 'Toimeta',
+    'lastupdated' => 'Uuendatud',
+    'pageformat' => 'Lehe kujundus',
+    'leftrightblocks' => 'vasak- ja paremblokid',
+    'blankpage' => 'thi leht',
+    'noblocks' => 'blokkideta',
+    'leftblocks' => 'Vasakblokid',
+    'addtomenu' => 'Lisa mensse',
+    'label' => 'Silt',
+    'nopages' => 'Ssteemis pole veel staatilisi lehti',
+    'save' => 'salvesta',
+    'preview' => 'eelvaade',
+    'delete' => 'kustuta',
+    'cancel' => 'thista',
+    'access_denied' => 'Ligips tkestatud',
+    'access_denied_msg' => 'Sa proovisid ilma vastavate igusteta ligi pseda hele staatiliste lehtede administreerimislehtedest. Pane thele, et kik sellised katsed logitakse.',
+    'all_html_allowed' => 'Kogu HTML on lubatud',
+    'results' => 'Staatiliste lehtede tulemus',
+    'author' => 'Autor',
+    'no_title_or_content' => 'Sa pead titma vhemalt <b>tiitli</b> ja <b>sisu</b> vljad.',
+    'no_such_page_anon' => 'Palun logi sisse...',
+    'no_page_access_msg' => "Phjuseks vib olla, et sa pole veel sisse loginud vi pole veel {$_CONF['site_name']} lehe registreerunud kasutaja. Palun <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> registreeru {$_CONF['site_name']} lehe kasutajaks.</a> Registreerumine annab sulle kik lehe liikme ligipsuigused.",
+    'php_msg' => 'PHP: ',
+    'php_warn' => 'Hoiatus! Selle valiku sissellitamisel kivitatakse lehel olevad PHP ksud. Kasuta ettevaatusega!',
+    'exit_msg' => 'Tagastuse tp',
+    'exit_info' => 'Kasuta logimismrkuste jaoks. Tavalise lehe kasutus- ja turvateadete jaoks jta mrge tegemata.',
+    'deny_msg' => 'Ligips sellele lehele on tkestatud. Vimalik, et  see leht on kas kustutatud vi mbernimetatud vi pole sul piisavalt igusi seda lehte nha.',
+    'stats_headline' => 'Staatiliste lehtede top 10',
+    'stats_page_title' => 'Lehe tiitel',
+    'stats_hits' => 'Klikke',
+    'stats_no_hits' => 'Nib, et saidil pole htegi staatilist lehte vi mitte keegi pole neid vaadanud.',
+    'id' => 'ID',
+    'duplicate_id' => 'Sisestatud staatilise lehe ID on juba kasutuses. Vali teine ID.',
+    'instructions' => 'Staatilise lehe toimetamiseks vi kustutamiseks klpsa allpool staatilise lehe juures olevat toimetamisikooni. Staatilise lehe vaatamiseks klpsa selle tiitlil. Uue loomiseks klpsa "Tee uus" lal. Olemasolevast staatilisest lehest koopia tegemiseks klpsa kopeerimisikooni.',
+    'centerblock' => 'Keskblokk: ',
+    'centerblock_msg' => 'Kui mrgitud, nidatakse seda staatilist lehte indeks lehel keskblokina.',
+    'topic' => 'Rubriik: ',
+    'position' => 'Asukoht: ',
+    'all_topics' => 'Kik',
+    'no_topic' => 'Ainult avaleht',
+    'position_top' => 'Lehe laservas',
+    'position_feat' => 'Peale pealugu',
+    'position_bottom' => 'Lehe allservas',
+    'position_entire' => 'Kogu leht',
+    'head_centerblock' => 'Keskblokk',
+    'centerblock_no' => 'Ei',
+    'centerblock_top' => 'lal',
+    'centerblock_feat' => 'Pealugu',
+    'centerblock_bottom' => 'All',
+    'centerblock_entire' => 'Kogu',
+    'inblock_msg' => 'Blokina:',
+    'inblock_info' => 'Paiguta staatiline leht blokki.',
+    'title_edit' => 'Toimeta lehte',
+    'title_copy' => 'Tee lehest koopia',
+    'title_display' => 'Nita leht',
+    'select_php_none' => 'ra kivita PHP',
+    'select_php_return' => 'kivita PHP (return)',
+    'select_php_free' => 'kivita PHP',
+    'php_not_activated' => 'Staatilistel lehtedel pole PHP kasutamine sisse llitatud. Tpsemat infot palun vaata <a href="' . $_CONF['site_url'] . '/docs/staticpages.html#php">dokumentatsioonist.</a>',
+    'printable_format' => 'Prinditaval kujul',
+    'edit' => 'Toimeta',
+    'copy' => 'Koopia',
+    'limit_results' => 'Piira tulemused',
+    'search' => 'Otsi',
+    'submit' => 'Sisesta'
+);
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/estonian_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/estonian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/estonian_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/estonian_utf-8.php	2006-10-15 02:54:35.000000000 -0500
@@ -0,0 +1,115 @@
+<?php
+
+###############################################################################
+# estonian_utf-8.php
+# This is the estonian language page for the Geeklog Static Page Plug-in
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony@tonybibbs.com
+#
+# Estonian translation by Artur Räpp <rtr AT planet DOT ee>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+
+$LANG_STATIC= array(
+    'newpage' => 'Uus leht',
+    'adminhome' => 'Admin avaleht',
+    'staticpages' => 'Staatilised lehed',
+    'staticpageeditor' => 'Staatiliste lehtede toimetaja',
+    'writtenby' => 'Kirjutas',
+    'date' => 'Uuendatud',
+    'title' => 'Tiitel',
+    'content' => 'Sisu',
+    'hits' => 'Klikke',
+    'staticpagelist' => 'Staatiliste lehtede nimekiri',
+    'url' => 'URL',
+    'edit' => 'Toimeta',
+    'lastupdated' => 'Uuendatud',
+    'pageformat' => 'Lehe kujundus',
+    'leftrightblocks' => 'vasak- ja paremblokid',
+    'blankpage' => 'tühi leht',
+    'noblocks' => 'blokkideta',
+    'leftblocks' => 'Vasakblokid',
+    'addtomenu' => 'Lisa menüüsse',
+    'label' => 'Silt',
+    'nopages' => 'Süsteemis pole veel staatilisi lehti',
+    'save' => 'salvesta',
+    'preview' => 'eelvaade',
+    'delete' => 'kustuta',
+    'cancel' => 'tühista',
+    'access_denied' => 'Ligipääs tõkestatud',
+    'access_denied_msg' => 'Sa proovisid ilma vastavate õigusteta ligi pääseda ühele staatiliste lehtede administreerimislehtedest. Pane tähele, et kõik sellised katsed logitakse.',
+    'all_html_allowed' => 'Kogu HTML on lubatud',
+    'results' => 'Staatiliste lehtede tulemus',
+    'author' => 'Autor',
+    'no_title_or_content' => 'Sa pead täitma vähemalt <b>tiitli</b> ja <b>sisu</b> väljad.',
+    'no_such_page_anon' => 'Palun logi sisse...',
+    'no_page_access_msg' => "Põhjuseks võib olla, et sa pole veel sisse loginud või pole veel {$_CONF['site_name']} lehe registreerunud kasutaja. Palun <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> registreeru {$_CONF['site_name']} lehe kasutajaks.</a> Registreerumine annab sulle kõik lehe liikme ligipääsuõigused.",
+    'php_msg' => 'PHP: ',
+    'php_warn' => 'Hoiatus! Selle valiku sisselülitamisel käivitatakse lehel olevad PHP käsud. Kasuta ettevaatusega!',
+    'exit_msg' => 'Tagastuse tüüp',
+    'exit_info' => 'Kasuta logimismärkuste jaoks. Tavalise lehe kasutus- ja turvateadete jaoks jäta märge tegemata.',
+    'deny_msg' => 'Ligipääs sellele lehele on tõkestatud. Võimalik, et  see leht on kas kustutatud või ümbernimetatud või pole sul piisavalt õigusi seda lehte näha.',
+    'stats_headline' => 'Staatiliste lehtede top 10',
+    'stats_page_title' => 'Lehe tiitel',
+    'stats_hits' => 'Klikke',
+    'stats_no_hits' => 'Näib, et saidil pole ühtegi staatilist lehte või mitte keegi pole neid vaadanud.',
+    'id' => 'ID',
+    'duplicate_id' => 'Sisestatud staatilise lehe ID on juba kasutuses. Vali teine ID.',
+    'instructions' => 'Staatilise lehe toimetamiseks või kustutamiseks klõpsa allpool staatilise lehe juures olevat toimetamisikooni. Staatilise lehe vaatamiseks klõpsa selle tiitlil. Uue loomiseks klõpsa "Tee uus" ülal. Olemasolevast staatilisest lehest koopia tegemiseks klõpsa kopeerimisikooni.',
+    'centerblock' => 'Keskblokk: ',
+    'centerblock_msg' => 'Kui märgitud, näidatakse seda staatilist lehte indeks lehel keskblokina.',
+    'topic' => 'Rubriik: ',
+    'position' => 'Asukoht: ',
+    'all_topics' => 'Kõik',
+    'no_topic' => 'Ainult avaleht',
+    'position_top' => 'Lehe ülaservas',
+    'position_feat' => 'Peale pealugu',
+    'position_bottom' => 'Lehe allservas',
+    'position_entire' => 'Kogu leht',
+    'head_centerblock' => 'Keskblokk',
+    'centerblock_no' => 'Ei',
+    'centerblock_top' => 'Ülal',
+    'centerblock_feat' => 'Pealugu',
+    'centerblock_bottom' => 'All',
+    'centerblock_entire' => 'Kogu',
+    'inblock_msg' => 'Blokina:',
+    'inblock_info' => 'Paiguta staatiline leht blokki.',
+    'title_edit' => 'Toimeta lehte',
+    'title_copy' => 'Tee lehest koopia',
+    'title_display' => 'Näita leht',
+    'select_php_none' => 'ära käivita PHP',
+    'select_php_return' => 'käivita PHP (return)',
+    'select_php_free' => 'käivita PHP',
+    'php_not_activated' => 'Staatilistel lehtedel pole PHP kasutamine sisse lülitatud. Täpsemat infot palun vaata <a href="' . $_CONF['site_url'] . '/docs/staticpages.html#php">dokumentatsioonist.</a>',
+    'printable_format' => 'Prinditaval kujul',
+    'edit' => 'Toimeta',
+    'copy' => 'Koopia',
+    'limit_results' => 'Piira tulemused',
+    'search' => 'Otsi',
+    'submit' => 'Sisesta'
+);
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/farsi_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/farsi_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/farsi_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/farsi_utf-8.php	2006-08-05 10:07:44.000000000 -0500
@@ -63,7 +63,6 @@
     'results' => 'نتيجه آمار صفحات',
     'author' => 'نويسنده',
     'no_title_or_content' => 'شما بايد حداقل فيلد<b>عنوان</b>و<b>محتوي</b> پر نماييد',
-    'no_such_page_logged_in' => 'متاسفم '.$_USER['username'].'..',
     'no_such_page_anon' => 'لطفا وارد شويد',
     'no_page_access_msg' => "اين صفحه قابل دسترسي است يا شما وارد نشده ايد يا عضو سايت {$_CONF['site_name']} نيستيد.لطفا <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> عضو ما شويد</a> of {$_CONF['site_name']} براي دسترسي كامل و استفاده از سايت مانند اعضاي ما",
     'php_msg' => 'PHP: ',
@@ -105,6 +104,10 @@
     'php_not_activated' => 'استفاده از |PhP| در آمار صفحات فعال نيست . لطفا به مستندات يك نگاه بياندازيد !!',
     'printable_format' => 'فرمت قابل پرينت'
 );
+
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 #YA hagh
 #Doostan  Agar  Moshkeli  BOOd  BA  MAN  TAmas  BEgirid------By:Hesam.H
 #e-mail: info1@4shir.com OR ir.security@gmail.com
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/french_canada.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/french_canada.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/french_canada.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/french_canada.php	2006-08-05 10:07:44.000000000 -0500
@@ -65,7 +65,6 @@
     results => 'Rsultats des pages statiques',
     author => 'Auteur',
     no_title_or_content => 'Vous devez au minimum inscrire quelque chose dans les champs <b>titre</b> et <b>contenu</b>.',
-    no_such_page_logged_in => 'Dsol '.$_USER['username'].'..',
     no_such_page_anon => 'Prire de vous enregistrer',
     no_page_access_msg => "Ce pourrait tre parce que vous ne vous tes pas enregistr, ou inscrit comme membre de {$_CONF["site_name"]}. Veuillez <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> vous inscrire comme membre</a> de {$_CONF["site_name"]} pour recevoir toutes les permissions ncessaires",
     php_msg => 'PHP: ',
@@ -108,4 +107,7 @@
     'printable_format' => 'Printable Format'
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/german_formal.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/german_formal.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/german_formal.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/german_formal.php	2006-11-04 06:04:22.000000000 -0600
@@ -66,7 +66,6 @@
     'results' => 'Gefundene Statische Seiten',
     'author' => 'Autor',
     'no_title_or_content' => 'Bitte fllen Sie mindestens die Felder <b>Titel</b> und <b>Inhalt</b> aus.',
-    'no_such_page_logged_in' => 'Sorry, ' . $_USER['username'] . ' ...',
     'no_such_page_anon' => 'Bitte einloggen.',
     'no_page_access_msg' => "This could be because you're not logged in, or not a member of {$_CONF["site_name"]}. Please <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> become a member</a> of {$_CONF["site_name"]} to receive full membership access.",
     'php_msg' => 'PHP: ',
@@ -98,7 +97,7 @@
     'centerblock_bottom' => 'unten',
     'centerblock_entire' => 'Ganze Seite',
     'inblock_msg' => 'Im Block: ',
-    'inblock_info' => 'Seite in einen Block packen.',
+    'inblock_info' => 'Block-Templates fr diese Seite verwenden.',
     'title_edit' => 'Seite ndern',
     'title_copy' => 'Seite kopieren',
     'title_display' => 'Seite anzeigen',
@@ -109,4 +108,7 @@
     'printable_format' => 'Druckfhige Version'
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/german_formal_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/german_formal_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/german_formal_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/german_formal_utf-8.php	2006-11-04 06:04:22.000000000 -0600
@@ -66,7 +66,6 @@
     'results' => 'Gefundene Statische Seiten',
     'author' => 'Autor',
     'no_title_or_content' => 'Bitte füllen Sie mindestens die Felder <b>Titel</b> und <b>Inhalt</b> aus.',
-    'no_such_page_logged_in' => 'Sorry, ' . $_USER['username'] . ' ...',
     'no_such_page_anon' => 'Bitte einloggen.',
     'no_page_access_msg' => "This could be because you're not logged in, or not a member of {$_CONF["site_name"]}. Please <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> become a member</a> of {$_CONF["site_name"]} to receive full membership access.",
     'php_msg' => 'PHP: ',
@@ -98,7 +97,7 @@
     'centerblock_bottom' => 'unten',
     'centerblock_entire' => 'Ganze Seite',
     'inblock_msg' => 'Im Block: ',
-    'inblock_info' => 'Seite in einen Block packen.',
+    'inblock_info' => 'Block-Templates für diese Seite verwenden.',
     'title_edit' => 'Seite ändern',
     'title_copy' => 'Seite kopieren',
     'title_display' => 'Seite anzeigen',
@@ -109,4 +108,7 @@
     'printable_format' => 'Druckfähige Version'
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/german.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/german.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/german.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/german.php	2006-11-04 06:04:22.000000000 -0600
@@ -34,7 +34,7 @@
 ###############################################################################
 
 
-$LANG_STATIC= array(
+$LANG_STATIC = array(
     'newpage' => 'Neue Seite',
     'adminhome' => 'Admin Home',
     'staticpages' => 'Statische Seiten',
@@ -66,7 +66,6 @@
     'results' => 'Gefundene Statische Seiten',
     'author' => 'Autor',
     'no_title_or_content' => 'Bitte mindestens die Felder <b>Titel</b> und <b>Inhalt</b> ausfllen.',
-    'no_such_page_logged_in' => 'Sorry, ' . $_USER['username'] . ' ...',
     'no_such_page_anon' => 'Bitte einloggen.',
     'no_page_access_msg' => "This could be because you're not logged in, or not a member of {$_CONF["site_name"]}. Please <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> become a member</a> of {$_CONF["site_name"]} to receive full membership access.",
     'php_msg' => 'PHP: ',
@@ -98,7 +97,7 @@
     'centerblock_bottom' => 'unten',
     'centerblock_entire' => 'Ganze Seite',
     'inblock_msg' => 'Im Block: ',
-    'inblock_info' => 'Seite in einen Block packen.',
+    'inblock_info' => 'Block-Templates fr diese Seite verwenden.',
     'title_edit' => 'Seite ndern',
     'title_copy' => 'Seite kopieren',
     'title_display' => 'Seite anzeigen',
@@ -109,4 +108,7 @@
     'printable_format' => 'Druckfhige Version'
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/german_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/german_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/german_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/german_utf-8.php	2006-11-04 06:04:22.000000000 -0600
@@ -66,7 +66,6 @@
     'results' => 'Gefundene Statische Seiten',
     'author' => 'Autor',
     'no_title_or_content' => 'Bitte mindestens die Felder <b>Titel</b> und <b>Inhalt</b> ausfüllen.',
-    'no_such_page_logged_in' => 'Sorry, ' . $_USER['username'] . ' ...',
     'no_such_page_anon' => 'Bitte einloggen.',
     'no_page_access_msg' => "This could be because you're not logged in, or not a member of {$_CONF["site_name"]}. Please <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> become a member</a> of {$_CONF["site_name"]} to receive full membership access.",
     'php_msg' => 'PHP: ',
@@ -98,7 +97,7 @@
     'centerblock_bottom' => 'unten',
     'centerblock_entire' => 'Ganze Seite',
     'inblock_msg' => 'Im Block: ',
-    'inblock_info' => 'Seite in einen Block packen.',
+    'inblock_info' => 'Block-Templates für diese Seite verwenden.',
     'title_edit' => 'Seite ändern',
     'title_copy' => 'Seite kopieren',
     'title_display' => 'Seite anzeigen',
@@ -109,4 +108,7 @@
     'printable_format' => 'Druckfähige Version'
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/italian.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/italian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/italian.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/italian.php	2006-08-05 10:07:44.000000000 -0500
@@ -64,7 +64,6 @@
     'results' => 'Risultati Pagine Statiche',
     'author' => 'Autore',
     'no_title_or_content' => 'Devi almeno compilare i campi <b>Titolo</b> e <b>Contenuto</b>.',
-    'no_such_page_logged_in' => 'Spiacenti '.$_USER['username'].'..',
     'no_such_page_anon' => 'Prego entra nel sito..',
     'no_page_access_msg' => "Questo potrebbe indicare che tu non sei entrato nel sito, o non sei un membro di {$_CONF["site_name"]}. Prego <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> diventa un membro</a> di {$_CONF["site_name"]} per ricevere pieno accesso al sito",
     'php_msg' => 'PHP: ',
@@ -107,4 +106,7 @@
     'printable_format' => 'Formato Stampabile'
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/japanese.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/japanese.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/japanese.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/japanese.php	2006-12-11 18:13:58.000000000 -0600
@@ -6,7 +6,7 @@
 #
 # Copyright (C) 2001 Tony Bibbs
 # tony@tonybibbs.com
-# Tranlated by SaY
+# Tranlated by SaY and Geeklog Japanese group
 # sakata@ecofirm.com
 #
 # This program is free software; you can redistribute it and/or
@@ -24,6 +24,7 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ###############################################################################
+# Last Update 2006/12/12 by Ivy (Geeklog Japanese)
 
 ###############################################################################
 # Array Format: 
@@ -38,7 +39,7 @@
     'adminhome' => '',
     'staticpages' => 'Ūڡ',
     'staticpageeditor' => 'ŪڡԽ',
-    'writtenby' => '',
+    'writtenby' => 'ͭ',
     'date' => 'ǽ',
     'title' => 'ȥ',
     'content' => '',
@@ -48,40 +49,39 @@
     'edit' => 'Խ',
     'lastupdated' => 'ǽ',
     'pageformat' => 'ڡ쥤',
-    'leftrightblocks' => 'Υ֥åդ',
-    'blankpage' => 'ʤ',
-    'noblocks' => '֥åʤ',
-    'leftblocks' => '¦֥åΤ',
-    'addtomenu' => '˥塼ɲ',
-    'label' => '٥',
-    'nopages' => 'Ūڡƥˤޤ',
+    'leftrightblocks' => 'إåեå֥å',
+    'blankpage' => 'ɽʥإåեå֥åʤ',
+    'noblocks' => 'إåեåʥ֥åʤ',
+    'leftblocks' => 'إåեå¦֥åʱ¦֥åʤ',
+    'addtomenu' => 'إå˥塼ɲ',
+    'label' => '˥塼̾',
+    'nopages' => 'Ūڡޤ',
     'save' => '¸',
     'preview' => 'ץӥ塼',
     'delete' => '',
     'cancel' => '󥻥',
-    'access_denied' => 'ݤޤ',
-    'access_denied_msg' => 'Ūڡδڡ˸¤ʤǥ褦Ȥޤ¤ΤʤϤ٤ƵϿޤΤǤդ',
+    'access_denied' => 'ޤ˥󤷤Ƥ',
+    'access_denied_msg' => 'åȥ¤ʤ˲̤ưŪܤƥ̤ɽޤå򤷤ʤˤϡָ¤ʤפȤåɽޤ',
     'all_html_allowed' => '٤ƤHTMLѤǤޤ',
-    'results' => 'Static Pages Results',
-    'author' => '',
-    'no_title_or_content' => 'ʤȤ⡢<b>ȥ</b><b></b>ϵƤ',
-    'no_such_page_logged_in' => $_USER['username'].'󡢤ʤ',
-    'no_such_page_anon' => 'ޤ󤷤Ƥ',
+    'results' => 'Ūڡ',
+    'author' => 'ͭ',
+    'no_title_or_content' => '<b>ȥ</b><b></b>Ƥ',
+    'no_such_page_anon' => '󤷤Ƥ',
     'no_page_access_msg' => "ϡޤ󤷤Ƥʤ⤽⤳Υȡ{$_CONF["site_name"]}ˤΥСǤϤʤȹͤޤ{$_CONF["site_name"]}<a href=\"{$_CONF['site_url']}/users.php?mode=new\"> СϿ</a>뤫ŬڤʥԤƤ",
     'php_msg' => 'PHP: ',
-    'php_warn' => 'աΥץͭˤȡʤΥڡ˴ޤޤPHPɤ¹ԤޤѤˤϺٿդʧäƤ',
-    'exit_msg' => '¤ʤΥ: ',
-    'exit_info' => 'åȥ̤ɽޤå򤷤ʤˤϡָ¤ʤפȤåɽޤ',
+    'php_warn' => '<br>աΥץͭˤȡʤΥڡ˴ޤޤPHPɤ¹ԤޤѤˤϺٿդʧäƤŪڡPHPѤˤϡ餫̡֥롼:Static Page Adminפǡ¡staticpages.PHPפ˥åƤPHPȤ硢̾(return)ʤΡPHP¹Ԥץ⡼ɤѤƤ',
+    'exit_msg' => '¤ʤ: ',
+    'exit_info' => 'åȡ¤ʤ˥׵̤ɽޤ<br>å򤷤ʤˤϡָ¤ʤפȤåɽޤ',
     'deny_msg' => 'ڡؤΥϵݤޤڡưޤϺ줿¤ʤΤ줫Ǥ',
-    'stats_headline' => 'Ūڡʾ̣',
+    'stats_headline' => 'Ūڡʾ10',
     'stats_page_title' => 'ȥ',
     'stats_hits' => '',
     'stats_no_hits' => 'ŪڡʤԤʤΤɤ餫Ǥ',
     'id' => 'IDʥڡ̾',
     'duplicate_id' => 'ꤷIDϤǤ˻ȤƤޤ̤ID򤴻Ѥ',
     'instructions' => 'ڡԽ뤿ˤϡʲΥڡֹ򥯥åƤڡϡȥ򥯥åƤڡˤϡֿץܥ򲡤Ƥ[C]򲡤ȡ¸ΥڡΥԡǤޤ',
-    'centerblock' => '󥿡֥å: ',
-    'centerblock_msg' => 'åȡȥåץڡ濴ʬɽޤ',
+    'centerblock' => '󥿡֥åɽ: ',
+    'centerblock_msg' => 'åȡȥåץڡޤΥȥåץڡΥ󥿡֥åɽޤɽIDǥȤޤ',
     'topic' => ': ',
     'position' => 'ɽ: ',
     'all_topics' => '٤',
@@ -91,26 +91,26 @@
     'position_feat' => 'ܵβ',
     'position_bottom' => 'ڡβ',
     'position_entire' => 'ڡ',
-    'position_menutab' => 'إå',
-    'position_footer' => 'եå',
-    'head_centerblock' => '󥿡֥å',
+    'position_menutab' => 'إå',
+    'position_footer' => 'եå',
+    'head_centerblock' => 'ȥåץڡɽ',
     'centerblock_no' => '',
     'centerblock_top' => '',
     'centerblock_second' => 'ξ',
     'centerblock_feat' => 'ܵ',
     'centerblock_bottom' => '',
-    'centerblock_menutab' => 'إå',
-    'centerblock_footer' => 'եå',
+    'centerblock_menutab' => 'إå',
+    'centerblock_footer' => 'եå',
     'centerblock_entire' => 'ڡ',
-    'inblock_msg' => '֥å: ',
-    'inblock_info' => 'ڡ֥åǰϤ',
+    'inblock_msg' => 'ȥɽ: ',
+    'inblock_info' => 'åȡȥ뤬ɽޤåϤȡȥɽޤ',
     'title_edit' => 'Խ',
     'title_copy' => 'ԡ',
     'title_display' => 'ڡɽ',
     'select_php_none' => 'PHP¹Ԥʤ',
     'select_php_return' => 'PHP¹Ԥ (return)',
     'select_php_free' => 'PHP¹Ԥ',
-    'php_not_activated' => 'ŪڡPHPϻѤʤˤʤäƤޤܺ٤ˤĤƤ <a href="' . $_CONF['site_url'] . '/docs/staticpages.html#php">Ϣʸ</a> ',
+    'php_not_activated' => 'ŪڡPHPϻѤʤˤʤäƤޤܺ٤ˤĤƤ <a href="' . $_CONF['site_url'] . '/docs/staticpages.html#php">Ϣɥ</a> ',
     'printable_format' => 'ѥեޥå',
     'edit' => 'Խ',
     'copy' => 'ԡ',
@@ -120,4 +120,7 @@
 
 );
 
-?>
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/japanese_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/japanese_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/japanese_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/japanese_utf-8.php	2006-12-11 18:14:02.000000000 -0600
@@ -1,12 +1,12 @@
 <?php
 
 ###############################################################################
-# japanese.php
+# japanese_utf-8.php
 # This is the english language page for the Geeklog Static Page Plug-in!
 #
 # Copyright (C) 2001 Tony Bibbs
 # tony@tonybibbs.com
-# Tranlated by SaY
+# Tranlated by SaY and Geeklog Japanese group
 # sakata@ecofirm.com
 #
 # This program is free software; you can redistribute it and/or
@@ -24,6 +24,7 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 ###############################################################################
+# Last Update 2006/12/12 by Ivy (Geeklog Japanese)
 
 ###############################################################################
 # Array Format: 
@@ -38,7 +39,7 @@
     'adminhome' => '管理画面',
     'staticpages' => '静的ページ',
     'staticpageeditor' => '静的ページの編集',
-    'writtenby' => '著者',
+    'writtenby' => '所有者',
     'date' => '最終更新日',
     'title' => 'タイトル',
     'content' => '内容',
@@ -48,40 +49,39 @@
     'edit' => '編集',
     'lastupdated' => '最終更新日：',
     'pageformat' => 'ページレイアウト',
-    'leftrightblocks' => '左右のブロック付き',
-    'blankpage' => '何もなし',
-    'noblocks' => 'ブロックなし',
-    'leftblocks' => '左側ブロックのみ',
-    'addtomenu' => 'メニューに追加',
-    'label' => 'ラベル',
-    'nopages' => '静的ページがシステムにありません',
+    'leftrightblocks' => 'ヘッダ・フッタ・左右ブロックあり',
+    'blankpage' => '全画面表示（ヘッダ・フッタ・ブロックなし）',
+    'noblocks' => 'ヘッダ・フッタあり（ブロックなし）',
+    'leftblocks' => 'ヘッダ・フッタ・左側ブロックあり（右側ブロックなし）',
+    'addtomenu' => 'ヘッダメニューに追加',
+    'label' => 'メニュー名',
+    'nopages' => '静的ページがありません',
     'save' => '保存',
     'preview' => 'プレビュー',
     'delete' => '削除',
     'cancel' => 'キャンセル',
-    'access_denied' => 'アクセスが拒否されました',
-    'access_denied_msg' => '静的ページの管理ページに権限なしでアクセスしようとしました。権限のないアクセスはすべて記録されますのでご注意ください。',
+    'access_denied' => '申し訳ありません。先にログインしてください。',
+    'access_denied_msg' => 'チェックするとアクセス権限がない場合に画面が自動的に遷移してログイン画面が表示されます。チェックをしない場合には「権限がない」というメッセージが表示されます。',
     'all_html_allowed' => 'すべてのHTMLが利用できます。',
-    'results' => 'Static Pages Results',
-    'author' => '著者',
-    'no_title_or_content' => '少なくとも、<b>タイトル</b>と<b>内容</b>は記入してください。',
-    'no_such_page_logged_in' => $_USER['username'].'さん、ごめんなさい',
-    'no_such_page_anon' => 'まずログインしてください。',
+    'results' => '静的ページ検索結果',
+    'author' => '所有者',
+    'no_title_or_content' => '<b>タイトル</b>と<b>内容</b>を記入してください。',
+    'no_such_page_anon' => 'ログインしてください。',
     'no_page_access_msg' => "この問題は、まだログインしていないか、そもそもこのサイト（{$_CONF["site_name"]}）のメンバーではないためだと考えられます。{$_CONF["site_name"]}に<a href=\"{$_CONF['site_url']}/users.php?mode=new\"> メンバー登録</a>するか、適切なアクセス権を管理者から取得してください。",
     'php_msg' => 'PHP: ',
-    'php_warn' => '注意：このオプションを有効にすると、あなたのページに含まれるPHPコードが実行されます。利用には細心の注意を払ってください。',
-    'exit_msg' => '権限なしのアクセス: ',
-    'exit_info' => 'チェックするとログイン画面が表示されます。チェックをしない場合には「権限がない」というメッセージが表示されます。',
+    'php_warn' => '<br>注意：このオプションを有効にすると、あなたのページに含まれるPHPコードが実行されます。利用には細心の注意を払ってください。静的ページPHPを利用する場合には、あらかじめ管理画面「グループ:Static Page Admin」で、権限「staticpages.PHP」にチェックしてください。PHPを使う場合、通常(return)なしの「PHPを実行する」モードで利用してください。',
+    'exit_msg' => '閲覧権限がない場合: ',
+    'exit_info' => 'チェックすると、閲覧権限がない場合にログイン要求画面が表示されます。<br>　　　チェックをしない場合には「権限がない」というメッセージが表示されます。',
     'deny_msg' => 'ページへのアクセスは拒否されました。ページが移動または削除されたか、権限がないかのいずれかです。',
-    'stats_headline' => '静的ページ（上位１０）',
+    'stats_headline' => '静的ページ（上位10件）',
     'stats_page_title' => 'タイトル',
     'stats_hits' => '閲覧数',
     'stats_no_hits' => '静的ページがないか、閲覧者がいないかのどちらかです。',
     'id' => 'ID（ページ名）',
     'duplicate_id' => '指定したIDはすでに使われています。別のIDをご使用ください。',
     'instructions' => 'ページを編集・削除するためには、以下のページ番号をクリックしてください。ページを閲覧する場合は、タイトルをクリックしてください。新しいページを作成する場合には、「新規」ボタンを押してください。[C]を押すと、既存のページのコピーを作成できます。',
-    'centerblock' => 'センターブロック: ',
-    'centerblock_msg' => 'チェックすると、トップページの中心部分に表示されます。',
+    'centerblock' => 'センターブロック表示: ',
+    'centerblock_msg' => 'チェックすると、トップページまたは話題のトップページのセンターブロックに表示されます。表示はIDでソートされます。',
     'topic' => '話題: ',
     'position' => '表示場所: ',
     'all_topics' => 'すべて',
@@ -91,26 +91,26 @@
     'position_feat' => '注目記事の下',
     'position_bottom' => 'ページの下',
     'position_entire' => 'ページ全体',
-    'position_menutab' => 'ヘッダー',
-    'position_footer' => 'フッター',
-    'head_centerblock' => 'センターブロック',
+    'position_menutab' => 'ヘッダ',
+    'position_footer' => 'フッタ',
+    'head_centerblock' => 'トップページ表示',
     'centerblock_no' => 'いいえ',
     'centerblock_top' => '上部',
     'centerblock_second' => '記事の上',
     'centerblock_feat' => '注目記事',
     'centerblock_bottom' => '下部',
-    'centerblock_menutab' => 'ヘッダー',
-    'centerblock_footer' => 'フッター',
+    'centerblock_menutab' => 'ヘッダ',
+    'centerblock_footer' => 'フッタ',
     'centerblock_entire' => 'ページ全体',
-    'inblock_msg' => 'ブロックの中: ',
-    'inblock_info' => 'ページをブロックで囲む',
+    'inblock_msg' => 'タイトル表示: ',
+    'inblock_info' => 'チェックすると、タイトルが表示されます。チェックをはずすと、タイトルは表示されません。',
     'title_edit' => '編集',
     'title_copy' => 'コピーを作成',
     'title_display' => 'ページを表示する',
     'select_php_none' => 'PHPを実行しない',
     'select_php_return' => 'PHPを実行する (return)',
     'select_php_free' => 'PHPを実行する',
-    'php_not_activated' => '静的ページでPHPは使用しない設定になっています。詳細については <a href="' . $_CONF['site_url'] . '/docs/staticpages.html#php">関連文書</a> をご覧下さい。',
+    'php_not_activated' => '静的ページでPHPは使用しない設定になっています。詳細については <a href="' . $_CONF['site_url'] . '/docs/staticpages.html#php">関連ドキュメント</a> をご覧下さい。',
     'printable_format' => '印刷用フォーマット',
     'edit' => '編集',
     'copy' => 'コピー',
@@ -120,4 +120,7 @@
 
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/polish.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/polish.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/polish.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/polish.php	2006-08-05 10:07:44.000000000 -0500
@@ -63,7 +63,6 @@
     results => 'Wyniki Dla Stron Statycznych',
     author => 'Autor',
     no_title_or_content => 'Musisz wypeni co najmniej pola <b>Tytu</b> i <b>Zawarto</b>.',
-    no_such_page_logged_in => 'Sorry '.$_USER['username'].'..',
     no_such_page_anon => 'Prosze si zalogowa..',
     no_page_access_msg => "Moe to by spowodowane tym, e nie jeste zalogowana/-y lub zarejestrowanan/-y w Serwisie {$_CONF["site_name"]}. Prosz <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> zarejestrowa si</a> of {$_CONF["site_name"]} aby otrzyma przywileje uytkownikw zarejestrowanych",
     php_msg => 'PHP: ',
@@ -106,4 +105,7 @@
     'printable_format' => 'Printable Format'
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/portuguese_brazil.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/portuguese_brazil.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/portuguese_brazil.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/portuguese_brazil.php	2006-08-05 10:07:44.000000000 -0500
@@ -66,7 +66,6 @@
     'results' => 'Resultado da Pgina Esttica',
     'author' => 'Autor',
     'no_title_or_content' => 'Voc deve ao menos preencher os campos de <b>Ttulo</b> e <b>Contedo</b>.',
-    'no_such_page_logged_in' => 'Desculpe '.$_USER['username'].'..',
     'no_such_page_anon' => 'Por favor faa o LOGIN...',
     'no_page_access_msg' => "Isto pode ter acontecido porque voc no efetuou o LOGIN, ou ainda porque no  membro do {$_CONF['site_name']}. Por favor <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> torne-se um membro usurio do site</a> {$_CONF['site_name']} para ter acesso a todos recursos disponveis",
     'php_msg' => 'PHP: ',
@@ -109,4 +108,7 @@
     'printable_format' => 'Printable Format'
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/slovenian.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/slovenian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/slovenian.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/slovenian.php	2006-10-15 02:48:24.000000000 -0500
@@ -0,0 +1,118 @@
+<?php
+
+###############################################################################
+# slovenian.php-saved as for version 1.4.1
+# This is the english language page for the Geeklog Static Page Plug-in!
+# language file for geeklog version 1.4.1 beta by mb
+# gape@gape.org ; za pripombe, predloge ipd ... pii na email
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony@tonybibbs.com
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+
+$LANG_STATIC= array(
+    'newpage' => 'Nova stran',
+    'adminhome' => 'Upravnikova stran',
+    'staticpages' => 'Statine strani',
+    'staticpageeditor' => 'Urejevalnik statinih strani',
+    'writtenby' => 'Napisal:',
+    'date' => 'Nazadnje posodobljeno',
+    'title' => 'Naslov',
+    'content' => 'Vsebina',
+    'hits' => 'Zadetkov',
+    'staticpagelist' => 'Seznam statinih strani',
+    'url' => 'URL',
+    'edit' => 'Uredi',
+    'lastupdated' => 'Nazadnje posodobljeno',
+    'pageformat' => 'Oblika strani',
+    'leftrightblocks' => 'Levi & desni bloki',
+    'blankpage' => 'Prazna stran',
+    'noblocks' => 'Ni blokov',
+    'leftblocks' => 'Levi blok',
+    'addtomenu' => 'Dodaj v meni',
+    'label' => 'Nalepka',
+    'nopages' => 'V sistemu e ni statinih strani',
+    'save' => 'shrani',
+    'preview' => 'predogled',
+    'delete' => 'izbrii',
+    'cancel' => 'preklii',
+    'access_denied' => 'Dostop zavrnjen',
+    'access_denied_msg' => 'Nedovoljeno poskua dostopiti do ene od upravnikih statinih strani.  Vsi poskusi nedovoljenega dostopa na to stran se beleijo.',
+    'all_html_allowed' => 'Dovoljen je ves HTML',
+    'results' => 'Rezultati statinih strani',
+    'author' => 'Avtor',
+    'no_title_or_content' => 'Izpolniti mora vsaj polji <b>Naslov</b> in <b>Vsebina</b>.',
+    'no_such_page_anon' => 'Prosim, prijavi se.',
+    'no_page_access_msg' => "To je morda zato, ker nisi prijavljen/a ali pa nisi lan spletne strani {$_CONF['site_name']}. Za popoln lanski dostop <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> postani lan</a> spletne strani {$_CONF['site_name']} .",
+    'php_msg' => 'PHP: ',
+    'php_warn' => 'Opozorilo: Koda PHP na tvoji strani bo procesirana, e omogoi to monost. Uporabljaj previdno!',
+    'exit_msg' => 'Vrsta izhoda: ',
+    'exit_info' => 'Omogoi za Zahtevano prijavno sporoilo. Za  navadno varnostno preverjanje pusti okence prazno.',
+    'deny_msg' => 'Dostop do te strani je zavrnjen. Morda je bila stran premaknjena/odstranjena ali pa nima zadostnih dovoljenj.',
+    'stats_headline' => 'Najboljih 10 statinih strani',
+    'stats_page_title' => 'Naslov strani',
+    'stats_hits' => 'Zadetki',
+    'stats_no_hits' => 'Izgleda, da na tem mestu ni statinih strani ali pa e nikoli ni nihe nobene pogledal.',
+    'id' => 'ID',
+    'duplicate_id' => 'Za to statino stran izbrani ID je e v rabi. Izberi prosim drug ID.',
+    'instructions' => 'Za spreminjanje ali izbris statine strani klikni na njeno ikono za urejanje spodaj. Za ogled statine strani klikni na naslov tiste, ki jo hoe pogledati. Za ustvarjenje nove statine strani klikni na "Ustvari novo" zgoraj. Za ustvarjenje kopije e obstojee statine strani klikni na ikono za kopiranje.',
+    'centerblock' => 'Osrednji blok: ',
+    'centerblock_msg' => 'e potrdi, bo ta statina stran prikazana kot osrednji blok na glavni strani.',
+    'topic' => 'Rubrika: ',
+    'position' => 'Poloaj: ',
+    'all_topics' => 'Vse',
+    'no_topic' => 'Samo domaa stran',
+    'position_top' => 'Vrh strani',
+    'position_feat' => 'Za udarnim lankom',
+    'position_bottom' => 'Dno strani',
+    'position_entire' => 'Cela stran',
+    'head_centerblock' => 'Osrednji blok',
+    'centerblock_no' => 'Ne',
+    'centerblock_top' => 'Zgoraj',
+    'centerblock_feat' => 'Udarni lanek',
+    'centerblock_bottom' => 'Spodaj',
+    'centerblock_entire' => 'Celotna stran',
+    'inblock_msg' => 'V bloku: ',
+    'inblock_info' => 'e potrdi, bo ta statina stran prikazana v okvirju (bloku).',
+    'title_edit' => 'Uredi stran',
+    'title_copy' => 'Naredi kopijo te strani',
+    'title_display' => 'Prikai stran',
+    'select_php_none' => 'ne izvedi PHP',
+    'select_php_return' => 'izvedi PHP (return)',
+    'select_php_free' => 'izvedi PHP',
+    'php_not_activated' => 'Uporaba PHP-ja na statinih straneh ni vkljuena. Za podrobnosti glej <a href="' . $_CONF['site_url'] . '/docs/staticpages.html#php">dokumentacijo</a>.',
+    'printable_format' => 'Oblika za natis',
+    'edit' => 'Uredi',
+    'copy' => 'Kopiraj',
+    'limit_results' => 'Omeji rezultate',
+    'search' => 'Ii',
+    'submit' => 'Oddaj'
+);
+
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/slovenian_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/slovenian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/slovenian_utf-8.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/slovenian_utf-8.php	2006-10-15 02:48:24.000000000 -0500
@@ -0,0 +1,118 @@
+<?php
+
+###############################################################################
+# slovenian.php-saved as for version 1.4.1
+# This is the english language page for the Geeklog Static Page Plug-in!
+# language file for geeklog version 1.4.1 beta by mb
+# gape@gape.org ; za pripombe, predloge ipd ... piši na email
+#
+# Copyright (C) 2001 Tony Bibbs
+# tony@tonybibbs.com
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+###############################################################################
+
+###############################################################################
+# Array Format: 
+# $LANGXX[YY]:	$LANG - variable name
+#		  	XX - file id number
+#			YY - phrase id number
+###############################################################################
+
+
+$LANG_STATIC= array(
+    'newpage' => 'Nova stran',
+    'adminhome' => 'Upravnikova stran',
+    'staticpages' => 'Statične strani',
+    'staticpageeditor' => 'Urejevalnik statičnih strani',
+    'writtenby' => 'Napisal:',
+    'date' => 'Nazadnje posodobljeno',
+    'title' => 'Naslov',
+    'content' => 'Vsebina',
+    'hits' => 'Zadetkov',
+    'staticpagelist' => 'Seznam statičnih strani',
+    'url' => 'URL',
+    'edit' => 'Uredi',
+    'lastupdated' => 'Nazadnje posodobljeno',
+    'pageformat' => 'Oblika strani',
+    'leftrightblocks' => 'Levi & desni bloki',
+    'blankpage' => 'Prazna stran',
+    'noblocks' => 'Ni blokov',
+    'leftblocks' => 'Levi blok',
+    'addtomenu' => 'Dodaj v meni',
+    'label' => 'Nalepka',
+    'nopages' => 'V sistemu še ni statičnih strani',
+    'save' => 'shrani',
+    'preview' => 'predogled',
+    'delete' => 'izbriši',
+    'cancel' => 'prekliči',
+    'access_denied' => 'Dostop zavrnjen',
+    'access_denied_msg' => 'Nedovoljeno poskušaš dostopiti do ene od upravniških statičnih strani.  Vsi poskusi nedovoljenega dostopa na to stran se beležijo.',
+    'all_html_allowed' => 'Dovoljen je ves HTML',
+    'results' => 'Rezultati statičnih strani',
+    'author' => 'Avtor',
+    'no_title_or_content' => 'Izpolniti moraš vsaj polji <b>Naslov</b> in <b>Vsebina</b>.',
+    'no_such_page_anon' => 'Prosim, prijavi se.',
+    'no_page_access_msg' => "To je morda zato, ker nisi prijavljen/a ali pa nisi član spletne strani {$_CONF['site_name']}. Za popoln članski dostop <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> postani član</a> spletne strani {$_CONF['site_name']} .",
+    'php_msg' => 'PHP: ',
+    'php_warn' => 'Opozorilo: Koda PHP na tvoji strani bo procesirana, če omogočiš to možnost. Uporabljaj previdno!',
+    'exit_msg' => 'Vrsta izhoda: ',
+    'exit_info' => 'Omogoči za Zahtevano prijavno sporočilo. Za  navadno varnostno preverjanje pusti okence prazno.',
+    'deny_msg' => 'Dostop do te strani je zavrnjen. Morda je bila stran premaknjena/odstranjena ali pa nimaš zadostnih dovoljenj.',
+    'stats_headline' => 'Najboljših 10 statičnih strani',
+    'stats_page_title' => 'Naslov strani',
+    'stats_hits' => 'Zadetki',
+    'stats_no_hits' => 'Izgleda, da na tem mestu ni statičnih strani ali pa še nikoli ni nihče nobene pogledal.',
+    'id' => 'ID',
+    'duplicate_id' => 'Za to statično stran izbrani ID je že v rabi. Izberi prosim drug ID.',
+    'instructions' => 'Za spreminjanje ali izbris statične strani klikni na njeno ikono za urejanje spodaj. Za ogled statične strani klikni na naslov tiste, ki jo hočeš pogledati. Za ustvarjenje nove statične strani klikni na "Ustvari novo" zgoraj. Za ustvarjenje kopije že obstoječe statične strani klikni na ikono za kopiranje.',
+    'centerblock' => 'Osrednji blok: ',
+    'centerblock_msg' => 'Če potrdiš, bo ta statična stran prikazana kot osrednji blok na glavni strani.',
+    'topic' => 'Rubrika: ',
+    'position' => 'Položaj: ',
+    'all_topics' => 'Vse',
+    'no_topic' => 'Samo domača stran',
+    'position_top' => 'Vrh strani',
+    'position_feat' => 'Za udarnim člankom',
+    'position_bottom' => 'Dno strani',
+    'position_entire' => 'Cela stran',
+    'head_centerblock' => 'Osrednji blok',
+    'centerblock_no' => 'Ne',
+    'centerblock_top' => 'Zgoraj',
+    'centerblock_feat' => 'Udarni članek',
+    'centerblock_bottom' => 'Spodaj',
+    'centerblock_entire' => 'Celotna stran',
+    'inblock_msg' => 'V bloku: ',
+    'inblock_info' => 'Če potrdiš, bo ta statična stran prikazana v okvirju (bloku).',
+    'title_edit' => 'Uredi stran',
+    'title_copy' => 'Naredi kopijo te strani',
+    'title_display' => 'Prikaži stran',
+    'select_php_none' => 'ne izvedi PHP',
+    'select_php_return' => 'izvedi PHP (return)',
+    'select_php_free' => 'izvedi PHP',
+    'php_not_activated' => 'Uporaba PHP-ja na statičnih straneh ni vključena. Za podrobnosti glej <a href="' . $_CONF['site_url'] . '/docs/staticpages.html#php">dokumentacijo</a>.',
+    'printable_format' => 'Oblika za natis',
+    'edit' => 'Uredi',
+    'copy' => 'Kopiraj',
+    'limit_results' => 'Omeji rezultate',
+    'search' => 'Išči',
+    'submit' => 'Oddaj'
+);
+
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/spanish.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/spanish.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/spanish.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/spanish.php	2006-08-05 10:07:44.000000000 -0500
@@ -63,7 +63,6 @@
     results => 'Resultado de Pginas Estticas',
     author => 'Autor',
     no_title_or_content => 'You must at least fill in the <b>Title</b> and <b>Content</b> fields.',
-    no_such_page_logged_in => 'Sorry '.$_USER['username'].'..',
     no_such_page_anon => 'Please log in..',
     no_page_access_msg => "This could be because you're not logged in, or not a member of {$_CONF["site_name"]}. Please <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> become a member</a> of {$_CONF["site_name"]} to receive full membership access",
     php_msg => 'PHP: ',
@@ -101,4 +100,7 @@
     'printable_format' => 'Printable Format'
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/swedish.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/swedish.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/swedish.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/swedish.php	2006-08-05 10:07:44.000000000 -0500
@@ -65,7 +65,6 @@
     results => 'Statiska sidor resultat',
     author => 'Frfattare',
     no_title_or_content => 'Du mste tminstone fylla i <b>titel-</b> och <b>innehlls</b>flten.',
-    no_such_page_logged_in => 'Sorry '.$_USER['username'].'..',
     no_such_page_anon => 'Du mste logga in..',
     no_page_access_msg => "Detta kan bero p att du inte r inloggad, eller att du inte rmedlem i {$_CONF["site_name"]}.  <a href=\"{$_CONF['site_url']}/users.php?mode=new\">Bli medlem</a> i {$_CONF["site_name"]} fr att f tkomst till medlemssidorna",
     php_msg => 'PHP: ',
@@ -108,4 +107,7 @@
     'printable_format' => 'Printable Format'
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/turkish.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/turkish.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/turkish.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/turkish.php	2006-08-05 10:07:44.000000000 -0500
@@ -64,7 +64,6 @@
     results => 'Statik Sayfalar Sonular',
     author => 'Yazar',
     no_title_or_content => 'En azndan <b>Balk</b> ve <b>erik</b> blmlerini doldurmalsnz.',
-    no_such_page_logged_in => 'zgnz '.$_USER['username'].'..',
     no_such_page_anon => 'Ltfen giri yapn..',
     no_page_access_msg => "Bu olabilir nk giri yapmadnz yada {$_CONF["site_name"]} nin kaytl bir yesi deilsiniz. {$_CONF["site_name"]} nin tm yelik girilerini elde etmek iin ltfen <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> yeni bir ye olun</a>",
     php_msg => 'PHP: ',
@@ -107,4 +106,7 @@
     'printable_format' => 'Printable Format'
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/ukrainian_koi8-u.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/ukrainian_koi8-u.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/ukrainian_koi8-u.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/ukrainian_koi8-u.php	2006-12-16 15:07:10.000000000 -0600
@@ -4,8 +4,8 @@
 # ukrainian.php
 # This is the ukrainian language page for the Geeklog Static Page Plug-in!
 #
-# Copyright (C) 2005 Yaroslav Fedevych
-# jaroslaw@nospam.kiev.ua
+# Copyright (C) 2006 Vitaliy Biliyenko
+# v.lokki@gmail.com
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -33,82 +33,84 @@
 
 $LANG_STATIC= array(
     'newpage' => ' Ҧ',
-    'adminhome' => 'ͦ ͦΦ',
+    'adminhome' => 'ͦΦ',
     'staticpages' => 'Φ Ҧ',
     'staticpageeditor' => '  Ҧ',
-    'writtenby' => '(-)',
-    'date' => 'Τ ',
-    'title' => '',
-    'content' => 'ͦ',
-    'hits' => '',
-    'staticpagelist' => '̦  Ҧ',
+    'writtenby' => '',
+    'date' => 'Τ ',
+    'title' => '',
+    'content' => 'ͦ',
+    'hits' => '',
+    'staticpagelist' => '  Ҧ',
     'url' => 'URL',
     'edit' => '',
-    'lastupdated' => 'Τ ',
+    'lastupdated' => 'Τ ',
     'pageformat' => ' Ҧ',
     'leftrightblocks' => '   ',
-    'blankpage' => ' Ҧ',
+    'blankpage' => ' Ҧ',
     'noblocks' => ' ˦',
-    'leftblocks' => ' ̦',
+    'leftblocks' => 'צ ',
     'addtomenu' => '  ',
     'label' => '',
     'nopages' => ' ͦ    Ҧ',
     'save' => '',
-    'preview' => 'Φ ',
-    'delete' => '',
-    'cancel' => '',
-    'access_denied' => ' Ц צ',
-    'access_denied_msg' => '      Ҧ ͦΦ  Ҧ.  , ,  Ӧ ˦  ',
-    'all_html_allowed' => '  HTML',
-    'results' => '   Ҧ',
+    'preview' => '',
+    'delete' => '',
+    'cancel' => 'צͦ',
+    'access_denied' => ' ',
+    'access_denied_msg' => '        Ħ̦ ͦΦ  Ҧ.   , ,  Ӧ     æ Ҧ   ',
+    'all_html_allowed' => ' HTML ',
+    'results' => '   Ҧ',
     'author' => '',
-    'no_title_or_content' => ' Φ    <b></b>  <b>ͦ</b>.',
-    'no_such_page_logged_in' => ', '.$_USER['username'].'..',
-    'no_such_page_anon' => ' , Ħ Ťæ..',
-    'no_page_access_msg' => "    ,    Ť  ͦ,     {$_CONF['site_name']}.  , <a href=\"{$_CONF['site_url']}/users.php?mode=new\">ۦ  </a> {$_CONF['site_name']}     ",
+    'no_title_or_content' => ' Ȧ Φ   <b></b>  <b>ͦ</b>.',
+    'no_such_page_anon' => ' , צĦ ..',
+    'no_page_access_msg' => ",   ,    צ,     {$_CONF['site_name']}.  , <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> Ť </a> {$_CONF['site_name']}    ",
     'php_msg' => 'PHP: ',
-    'php_warn' => ':  PHP  ۦ Ҧæ ,   צ  æ.   Φ !!',
+    'php_warn' => ': PHP  ϧ Ҧ     դ  æ.  Φ!!',
     'exit_msg' => ' : ',
-    'exit_info' => 'צΦ  צ  ȦΦ Ťæ. ۦ צͦ  ϧ צ   צ.',
-    'deny_msg' => ' Ц  æ Ҧ צ.  Ҧ ͦ/,        ̦.',
-    'stats_headline' => ' Φ  Ҧ',
-    'stats_page_title' => ' Ҧ',
-    'stats_hits' => '',
-    'stats_no_hits' => ',  Ҧ   Ԧ ,   Φ   .',
-    'id' => 'Ʀ',
-    'duplicate_id' => '   æ ϧ Ҧ Ʀ,   դ.  , Ҧ  .',
-    'instructions' => '    ϧ Ҧ Φ    Ҧ.   ϧ Ҧ Φ   צ.   Ҧ Φ &laquo; Ҧ&raquo; . Φ [C]   Ц  ϧ Ҧ.',
+    'exit_info' => ' צ  .   צͦ      צ.',
+    'deny_msg' => '  æ Ҧ . Ҧ   ͦ/,     צצ .',
+    'stats_headline' => '10 Φ  Ҧ',
+    'stats_page_title' => ' Ҧ',
+    'stats_hits' => '',
+    'stats_no_hits' => '  Ԧ   Ҧ  Φ   צצ.',
+    'id' => 'ID',
+    'duplicate_id' => '  ID  æ Ҧ  դ.  , Ҧ  ID.',
+    'instructions' => ' ͦ    Ҧ, Φ     .   Ҧ, Φ   .     Ҧ, Ҧ   Ҧ. Φ  Ц,  Ц  Ҧ.',
     'centerblock' => ' : ',
-    'centerblock_msg' => ' צͦ,   Ҧ      Φ Ҧæ.',
+    'centerblock_msg' => '  צͦ,   Ҧ       Φ Ҧæ.',
     'topic' => ': ',
-    'position' => ': ',
+    'position' => 'ͦ: ',
     'all_topics' => 'Ӧ',
-    'no_topic' => ' ͦ',
-    'position_top' => 'Ȧ Ҧ',
-    'position_feat' => ' ϧ Ԧ',
-    'position_bottom' => ' Ҧ',
-    'position_entire' => ' Ҧ',
+    'no_topic' => '  Ҧ',
+    'position_top' => 'Ҧ Ҧ',
+    'position_feat' => ' ϧ Ԧ',
+    'position_bottom' => ' Ҧ',
+    'position_entire' => '  Ҧ',
     'head_centerblock' => ' ',
-    'centerblock_no' => '',
-    'centerblock_top' => 'Ȧ',
-    'centerblock_feat' => ' ',
+    'centerblock_no' => '',
+    'centerblock_top' => '',
+    'centerblock_feat' => '. ',
     'centerblock_bottom' => '',
-    'centerblock_entire' => ' Ҧ',
-    'inblock_msg' => ' æ: ',
-    'inblock_info' => '  Ҧ  .',
-    'title_edit' => ' Ҧ',
-    'title_copy' => ' Ц æ Ҧ',
-    'title_display' => ' Ҧ',
+    'centerblock_entire' => ' Ҧ',
+    'inblock_msg' => ' æ: ',
+    'inblock_info' => 'ͦ  Ҧ  .',
+    'title_edit' => ' Ҧ',
+    'title_copy' => 'Ц Ҧ',
+    'title_display' => ' Ҧ',
     'select_php_none' => '  PHP',
-    'select_php_return' => ' PHP ( )',
-    'select_php_free' => ' PHP',
-    'php_not_activated' => ' PHP   Ҧ  .   צ,  , <a href="' . $_CONF['site_url'] . '/docs/staticpages.html#php">æ</a>.',
+    'select_php_return' => ' PHP (return)',
+    'select_php_free' => ' PHP',
+    'php_not_activated' => ' PHP   Ҧ  .  , צ  <a href="' . $_CONF['site_url'] . '/docs/staticpages.html#php">æ</a>  .',
     'printable_format' => '  ',
-    'edit' => 'Edit',
-    'copy' => 'Copy',
-    'limit_results' => 'Limit Results',
-    'search' => 'Search',
-    'submit' => 'Submit'
+	'edit' => '',
+    'copy' => 'Ц',
+    'limit_results' => ' ',
+    'search' => '',
+    'submit' => 'Ħ'
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/ukrainian.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/ukrainian.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/ukrainian.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/ukrainian.php	2006-12-16 15:07:01.000000000 -0600
@@ -4,7 +4,7 @@
 # ukrainian.php
 # This is the ukrainian language page for the Geeklog Static Page Plug-in!
 #
-# Copyright (C) 2005 Vitaliy Biliyenko
+# Copyright (C) 2006 Vitaliy Biliyenko
 # v.lokki@gmail.com
 #
 # This program is free software; you can redistribute it and/or
@@ -63,7 +63,6 @@
     'results' => '   ',
     'author' => '',
     'no_title_or_content' => '     <b></b>  <b></b>.',
-    'no_such_page_logged_in' => ' '.$_USER['username'].'..',
     'no_such_page_anon' => ' ,  ..',
     'no_page_access_msg' => ",   ,    ,     {$_CONF['site_name']}.  , <a href=\"{$_CONF['site_url']}/users.php?mode=new\">  </a> {$_CONF['site_name']}    ",
     'php_msg' => 'PHP: ',
@@ -111,4 +110,7 @@
     'submit' => '³'
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/ukrainian_utf-8.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/ukrainian_utf-8.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/language/ukrainian_utf-8.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/language/ukrainian_utf-8.php	2006-12-16 15:07:20.000000000 -0600
@@ -4,8 +4,8 @@
 # ukrainian.php
 # This is the ukrainian language page for the Geeklog Static Page Plug-in!
 #
-# Copyright (C) 2005 Yaroslav Fedevych
-# jaroslaw@nospam.kiev.ua
+# Copyright (C) 2006 Vitaliy Biliyenko
+# v.lokki@gmail.com
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -33,82 +33,84 @@
 
 $LANG_STATIC= array(
     'newpage' => 'Нова сторінка',
-    'adminhome' => 'Домівка адміністратора',
+    'adminhome' => 'Адміністрування',
     'staticpages' => 'Статичні сторінки',
     'staticpageeditor' => 'Редактор статичних сторінок',
-    'writtenby' => 'Написав(-ла)',
-    'date' => 'Востаннє поновлено',
-    'title' => 'Назва',
-    'content' => 'Вміст',
-    'hits' => 'Звертань',
-    'staticpagelist' => 'Перелік статичних сторінок',
+    'writtenby' => 'Автор',
+    'date' => 'Востаннє оновлено',
+    'title' => 'Заголовок',
+    'content' => 'Зміст',
+    'hits' => 'Хіти',
+    'staticpagelist' => 'Список статичних сторінок',
     'url' => 'URL',
     'edit' => 'Редагувати',
-    'lastupdated' => 'Востаннє поновлено',
+    'lastupdated' => 'Востаннє оновлено',
     'pageformat' => 'Формат сторінки',
     'leftrightblocks' => 'Лівий та правий блоки',
-    'blankpage' => 'Чиста сторінка',
+    'blankpage' => 'Порожня сторінка',
     'noblocks' => 'Без блоків',
-    'leftblocks' => 'Блоки ліворуч',
+    'leftblocks' => 'Ліві блоки',
     'addtomenu' => 'Додати до меню',
     'label' => 'Мітка',
     'nopages' => 'В системі ще немає статичних сторінок',
     'save' => 'зберегти',
-    'preview' => 'попередній перегляд',
-    'delete' => 'вилучити',
-    'cancel' => 'скасувати',
-    'access_denied' => 'В доступі відмовлено',
-    'access_denied_msg' => 'Ви намагаєтесь незаконно отримати доступ до сторінок адміністрування статичних сторінок. Будь ласка, зауважте, що всі такі спроби протоколюються',
-    'all_html_allowed' => 'Дозволено весь HTML',
-    'results' => 'Результати для статичних сторінок',
+    'preview' => 'перегляд',
+    'delete' => 'видалити',
+    'cancel' => 'відмінити',
+    'access_denied' => 'Доступ заборонено',
+    'access_denied_msg' => 'Ви намагаєтесь нелегально отримати доступ до одного з розділів адміністрування статичних сторінок.  Будь ласка, зважте, що всі спроби нелегального доступу до цієї сторінки вносять до протоколу',
+    'all_html_allowed' => 'Весь HTML дозволено',
+    'results' => 'Результати серед статичних сторінок',
     'author' => 'Автор',
-    'no_title_or_content' => 'Ви повинні заповнити щонайменше поля <b>Назва</b> та <b>Вміст</b>.',
-    'no_such_page_logged_in' => 'Пробачте, '.$_USER['username'].'..',
-    'no_such_page_anon' => 'Будь ласка, пройдіть реєстрацію..',
-    'no_page_access_msg' => "Це могло бути через те, що ви не зареєструвались у системі, або не є учасником {$_CONF['site_name']}. Будь ласка, <a href=\"{$_CONF['site_url']}/users.php?mode=new\">запишіться як учасник</a> {$_CONF['site_name']} для отримання повного членського доступу",
+    'no_title_or_content' => 'Вам необхідно принаймні заповнити поля <b>Заголовок</b> та <b>Зміст</b>.',
+    'no_such_page_anon' => 'Будь ласка, увійдіть ..',
+    'no_page_access_msg' => "Можливо, це трапилось тому, що ви не увійшли, або не є членом {$_CONF['site_name']}. Будь ласка, <a href=\"{$_CONF['site_url']}/users.php?mode=new\"> зареєструйтесь </a>на {$_CONF['site_name']} для отримання повного доступу",
     'php_msg' => 'PHP: ',
-    'php_warn' => 'Увага: код PHP у вашій сторінці обчислюватиметься, якщо ви ввімкнете цю опцію. Використовуйте з обережністю !!',
+    'php_warn' => 'Попередження: PHP код вашої сторінки буде виконано якщо ви активуєте цю опцію. Будьте обережні!!',
     'exit_msg' => 'Тип виходу: ',
-    'exit_info' => 'Увімкніть для повідомлення про необхідність реєстрації. Залишіть невідміченим для звичайної перевірки безпеки й повідомлення.',
-    'deny_msg' => 'В доступі до цієї сторінки відмовлено. Або сторінку перемістили/вилучили, або ж у вас недостатньо для цього дозволів.',
-    'stats_headline' => 'Десятка найпопулярніших статичних сторінок',
-    'stats_page_title' => 'Назва сторінки',
-    'stats_hits' => 'Звернень',
-    'stats_no_hits' => 'Схоже, статичних сторінок на цьому сайті немає, або ж ніхто їх не переглядав.',
-    'id' => 'Ідентифікатор',
-    'duplicate_id' => 'Ви обрали для цієї статичної сторінки ідентифікатор, що вже використовується. Будь ласка, виберіть якийсь інакший.',
-    'instructions' => 'Для виправлення чи вилучення статичної сторінки клацніть нижче на її номері. Для перегляду статичної сторінки клацніть на її назві. Для створення сторінки клацніть &laquo;Нова сторінка&raquo; вище. Клацніть [C] для створення копії вже наявної сторінки.',
+    'exit_info' => 'Скористайтесь повідомленням для входу.  Залиште невідміченим для звичайного контролю безпеки та повідомлень.',
+    'deny_msg' => 'Доступ до цієї сторінки заборонено. Сторінка або була переміщена/видалена, або у вас немає відповідного доступу.',
+    'stats_headline' => '10 найпопулярніших статичних сторінок',
+    'stats_page_title' => 'Заголовок сторінки',
+    'stats_hits' => 'Хіти',
+    'stats_no_hits' => 'На цьому сайті немає статичних сторінок або ніхто їх не відвідував.',
+    'id' => 'ID',
+    'duplicate_id' => 'Обраний вами ID для цієї сторінки вже використовується. Будь ласка, виберіть інший ID.',
+    'instructions' => 'Щоб змінити чи видалити статичну сторінку, натисніть на її іконку редагування нижче. Щоб переглянути сторінку, натисніть на її заголовку. Щоб створити нову статичну сторінку, оберіть Створити нове вгорі. Натисніть іконку копії, щоб скопіювати існуючу сторінку.',
     'centerblock' => 'Центральний блок: ',
-    'centerblock_msg' => 'Якщо відмітити, ця статична сторінка показуватиметься як центральний блок на головній сторінці.',
+    'centerblock_msg' => 'Якщо ви відмітите, ця статична сторінка буде виводитись як центральний блок на головній сторінці.',
     'topic' => 'Тема: ',
-    'position' => 'Розташування: ',
+    'position' => 'Розміщення: ',
     'all_topics' => 'Всі',
-    'no_topic' => 'Лише домівка',
-    'position_top' => 'Верхівка сторінки',
-    'position_feat' => 'Після вираної статті',
-    'position_bottom' => 'Низ сторінки',
-    'position_entire' => 'Вся сторінка',
+    'no_topic' => 'Лише домашня сторінка',
+    'position_top' => 'Вгорі сторінки',
+    'position_feat' => 'Після Особливої статті',
+    'position_bottom' => 'Внизу сторінки',
+    'position_entire' => 'На всю сторінку',
     'head_centerblock' => 'Центральний блок',
-    'centerblock_no' => 'Немає',
-    'centerblock_top' => 'Верхівка',
-    'centerblock_feat' => 'Вибрана стаття',
+    'centerblock_no' => 'Ні',
+    'centerblock_top' => 'Верх',
+    'centerblock_feat' => 'Особ. стаття',
     'centerblock_bottom' => 'Низ',
-    'centerblock_entire' => 'Ціла сторінка',
-    'inblock_msg' => 'В блоці: ',
-    'inblock_info' => 'Загорнути статичну сторінку в блок.',
-    'title_edit' => 'Виправити сторінку',
-    'title_copy' => 'Зробити копію цієї сторінки',
-    'title_display' => 'Показувати сторінку',
+    'centerblock_entire' => 'Вся сторінка',
+    'inblock_msg' => 'У блоці: ',
+    'inblock_info' => 'Помістити статичну сторінку в блок.',
+    'title_edit' => 'Редагувати сторінку',
+    'title_copy' => 'Копіювати сторінку',
+    'title_display' => 'Переглянути сторінку',
     'select_php_none' => 'не виконувати PHP',
-    'select_php_return' => 'виконати PHP (з поверненням)',
-    'select_php_free' => 'виконати PHP',
-    'php_not_activated' => 'Використання PHP на статичних сторінках не активовано. За подробицями дивіться, будь ласка, <a href="' . $_CONF['site_url'] . '/docs/staticpages.html#php">документацію</a>.',
+    'select_php_return' => 'виконувати PHP (return)',
+    'select_php_free' => 'виконувати PHP',
+    'php_not_activated' => 'Використання PHP у статичних сторінках не активоване. Будь ласка, подивіться в <a href="' . $_CONF['site_url'] . '/docs/staticpages.html#php">документацію</a> щодо деталей.',
     'printable_format' => 'Формат для друку',
-    'edit' => 'Edit',
-    'copy' => 'Copy',
-    'limit_results' => 'Limit Results',
-    'search' => 'Search',
-    'submit' => 'Submit'
+	'edit' => 'Редагувати',
+    'copy' => 'Копіювати',
+    'limit_results' => 'Обмежити результати',
+    'search' => 'Пошук',
+    'submit' => 'Відіслати'
 );
 
+// Messages for the plugin upgrade
+$PLG_staticpages_MESSAGE3002 = $LANG32[9];
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/sql/install.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/sql/install.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/sql/install.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/sql/install.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,67 +0,0 @@
-<?php
-
-/* Reminder: always indent with 4 spaces (no tabs). */
-// +---------------------------------------------------------------------------+
-// | Static Pages Plugin 1.4.2                                                 |
-// +---------------------------------------------------------------------------+
-// | Installation SQL                                                          |
-// +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
-// |                                                                           |
-// | Authors: Tony Bibbs       - tony AT tonybibbs DOT com                     |
-// |          Tom Willett      - twillett AT users DOT sourceforge DOT net     |
-// |          Blaine Lang      - langmail AT sympatico DOT ca                  |
-// |          Dirk Haun        - dirk AT haun-online DOT de                    |
-// +---------------------------------------------------------------------------+
-// |                                                                           |
-// | This program is licensed under the terms of the GNU General Public License|
-// | as published by the Free Software Foundation; either version 2            |
-// | of the License, or (at your option) any later version.                    |
-// |                                                                           |
-// | This program is distributed in the hope that it will be useful,           |
-// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
-// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                      |
-// | See the GNU General Public License for more details.                      |
-// |                                                                           |
-// | You should have received a copy of the GNU General Public License         |
-// | along with this program; if not, write to the Free Software Foundation,   |
-// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
-// |                                                                           |
-// +---------------------------------------------------------------------------+
-//
-// $Id: install.php,v 1.1 2005/11/13 13:46:06 dhaun Exp $
-
-$_SQL[] = "
-CREATE TABLE {$_TABLES['staticpage']} (
-  sp_id varchar(40) NOT NULL default '',
-  sp_uid mediumint(8) NOT NULL default '1',
-  sp_title varchar(128) NOT NULL default '',
-  sp_content text NOT NULL, 
-  sp_hits mediumint(8) unsigned NOT NULL default '0',
-  sp_date datetime NOT NULL default '0000-00-00 00:00:00',
-  sp_format varchar(20) NOT NULL default '',
-  sp_onmenu tinyint(1) unsigned NOT NULL default '0',
-  sp_label varchar(64) default NULL,
-  owner_id mediumint(8) unsigned NOT NULL default '1',
-  group_id mediumint(8) unsigned NOT NULL default '1',
-  perm_owner tinyint(1) unsigned NOT NULL default '3',
-  perm_group tinyint(1) unsigned NOT NULL default '2',
-  perm_members tinyint(1) unsigned NOT NULL default '2',
-  perm_anon tinyint(1) unsigned NOT NULL default '2',
-  sp_centerblock tinyint(1) unsigned NOT NULL default '0',
-  sp_tid varchar(20) NOT NULL default 'none',
-  sp_where tinyint(1) unsigned NOT NULL default '1',
-  sp_php tinyint(1) unsigned NOT NULL default '0',
-  sp_nf tinyint(1) unsigned default '0',
-  sp_inblock tinyint(1) unsigned default '1',
-  PRIMARY KEY  (sp_id),
-  KEY staticpage_sp_uid (sp_uid),
-  KEY staticpage_sp_date (sp_date),
-  KEY staticpage_sp_onmenu (sp_onmenu),
-  KEY staticpage_sp_centerblock (sp_centerblock),
-  KEY staticpage_sp_tid (sp_tid),
-  KEY staticpage_sp_where (sp_where)
-) TYPE=MyISAM
-";
-
-?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/sql/mssql_install.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/sql/mssql_install.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/sql/mssql_install.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/sql/mssql_install.php	2006-10-10 20:36:11.000000000 -0500
@@ -0,0 +1,73 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Static Pages Plugin 1.4.2                                                 |
+// +---------------------------------------------------------------------------+
+// | Installation SQL                                                          |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2000-2006 by the following authors:                         |
+// |                                                                           |
+// | Authors: Tony Bibbs       - tony AT tonybibbs DOT com                     |
+// |          Tom Willett      - twillett AT users DOT sourceforge DOT net     |
+// |          Blaine Lang      - langmail AT sympatico DOT ca                  |
+// |          Dirk Haun        - dirk AT haun-online DOT de                    |
+// |          Randy Kolenko     - randy AT nextide DOT ca                      |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is licensed under the terms of the GNU General Public License|
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                      |
+// | See the GNU General Public License for more details.                      |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+// $Id: mssql_install.php,v 1.3 2006/10/11 01:36:11 blaine Exp $
+
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['staticpage']}] (
+    [sp_id] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [sp_uid] [int] NOT NULL ,
+    [sp_title] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [sp_content] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [sp_hits] [numeric](8, 0) NOT NULL ,
+    [sp_date] [datetime] NOT NULL ,
+    [sp_format] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [sp_onmenu] [tinyint] NOT NULL ,
+    [sp_label] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [owner_id] [numeric](8, 0) NOT NULL ,
+    [group_id] [numeric](8, 0) NOT NULL ,
+    [perm_owner] [tinyint] NOT NULL ,
+    [perm_group] [tinyint] NOT NULL ,
+    [perm_members] [tinyint] NOT NULL ,
+    [perm_anon] [tinyint] NOT NULL ,
+    [sp_centerblock] [tinyint] NOT NULL ,
+    [sp_help] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [sp_tid] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [sp_where] [tinyint] NOT NULL ,
+    [sp_php] [tinyint] NOT NULL ,
+    [sp_nf] [tinyint] NULL ,
+    [sp_inblock] [tinyint] NULL  ,
+    [postmode] [varchar] (16) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+) ON [PRIMARY] 
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['staticpage']}] ADD
+    CONSTRAINT [DF_gl_staticpage] DEFAULT ('html') FOR [postmode],
+	CONSTRAINT [PK_gl_staticpage] PRIMARY KEY  CLUSTERED
+	(
+		[sp_id]
+	)  ON [PRIMARY]
+";
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/sql/mysql_install.php 1.4.1.src/cpanel-glprivate/plugins/staticpages/sql/mysql_install.php
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/sql/mysql_install.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/sql/mysql_install.php	2006-08-24 02:31:49.000000000 -0500
@@ -0,0 +1,69 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Static Pages Plugin 1.4.2                                                 |
+// +---------------------------------------------------------------------------+
+// | Installation SQL                                                          |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2000-2006 by the following authors:                         |
+// |                                                                           |
+// | Authors: Tony Bibbs       - tony AT tonybibbs DOT com                     |
+// |          Tom Willett      - twillett AT users DOT sourceforge DOT net     |
+// |          Blaine Lang      - langmail AT sympatico DOT ca                  |
+// |          Dirk Haun        - dirk AT haun-online DOT de                    |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is licensed under the terms of the GNU General Public License|
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                      |
+// | See the GNU General Public License for more details.                      |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+// $Id: mysql_install.php,v 1.2 2006/08/24 07:31:49 ospiess Exp $
+
+$_SQL[] = "
+CREATE TABLE {$_TABLES['staticpage']} (
+  sp_id varchar(40) NOT NULL default '',
+  sp_uid mediumint(8) NOT NULL default '1',
+  sp_title varchar(128) NOT NULL default '',
+  sp_content text NOT NULL,
+  sp_hits mediumint(8) unsigned NOT NULL default '0',
+  sp_date datetime NOT NULL default '0000-00-00 00:00:00',
+  sp_format varchar(20) NOT NULL default '',
+  sp_onmenu tinyint(1) unsigned NOT NULL default '0',
+  sp_label varchar(64) default NULL,
+  owner_id mediumint(8) unsigned NOT NULL default '1',
+  group_id mediumint(8) unsigned NOT NULL default '1',
+  perm_owner tinyint(1) unsigned NOT NULL default '3',
+  perm_group tinyint(1) unsigned NOT NULL default '2',
+  perm_members tinyint(1) unsigned NOT NULL default '2',
+  perm_anon tinyint(1) unsigned NOT NULL default '2',
+  sp_centerblock tinyint(1) unsigned NOT NULL default '0',
+  sp_help varchar(255) default '',
+  sp_tid varchar(20) NOT NULL default 'none',
+  sp_where tinyint(1) unsigned NOT NULL default '1',
+  sp_php tinyint(1) unsigned NOT NULL default '0',
+  sp_nf tinyint(1) unsigned default '0',
+  sp_inblock tinyint(1) unsigned default '1',
+  postmode varchar(16) NOT NULL default 'html',
+  PRIMARY KEY  (sp_id),
+  KEY staticpage_sp_uid (sp_uid),
+  KEY staticpage_sp_date (sp_date),
+  KEY staticpage_sp_onmenu (sp_onmenu),
+  KEY staticpage_sp_centerblock (sp_centerblock),
+  KEY staticpage_sp_tid (sp_tid),
+  KEY staticpage_sp_where (sp_where)
+) TYPE=MyISAM
+";
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/templates/admin/editor_advanced.thtml 1.4.1.src/cpanel-glprivate/plugins/staticpages/templates/admin/editor_advanced.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/templates/admin/editor_advanced.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/templates/admin/editor_advanced.thtml	2006-09-09 13:27:06.000000000 -0500
@@ -1,3 +1,7 @@
+<!-- Hide the Advanced Editor as Javascript is required. If JS is not enabled then the message below in the <nonscript> tags will be displayed -->
+<noscript>
+    <div class="pluginAlert" style="border:1px dashed #ccc;text-align:center;margin-top:10px;padding:15px;">{lang_nojavascript} </div>
+</noscript>
 <script type="text/javascript">
     // Setup editor path for FCKeditor JS Functions
     geeklogEditorBasePath = "{site_url}/fckeditor/" ;
@@ -5,7 +9,7 @@
 <script type="text/JavaScript" src="{site_url}/javascript/staticpages_fckeditor.js"></script>
 
   {start_block_editor}
-  <form action="{site_admin_url}/plugins/staticpages/index.php" method="post">
+  <form action="{site_admin_url}/plugins/staticpages/index.php" method="post" onSubmit='set_postcontent();'>
       <table border="0" cellspacing="0" cellpadding="3" width="100%">
           <tr>
               <td align="right">{lang_title}:</td>
@@ -29,6 +33,10 @@
                   </select>
               </td>
           </tr>
+         <tr>
+            <td align="right">{lang_postmode}:</td>
+            <td><select id="sel_editmode" name="postmode" {change_editormode}>{post_options}</select></td>
+        </tr>
           <tr>
             <td align="right">{lang_id}:</td>
             <td><input type="text" name="sp_id" size="40" maxlength="40" value="{sp_id}"></td>
@@ -38,36 +46,36 @@
             <td style="padding-bottom:15px;">{example_url}</td>
           </tr>
            <tr>
-                  <td style="text-align:right;vertical-align:top;padding-top:10px;border-top:1px solid #CCC;">{lang_content}</td>
-               <td style="padding-top:10px;border-top:1px solid #CCC;">
-               <div style="padding-left:10px;">
-                    <img src="{layout_url}/images/expand.gif" border="0" TITLE="{lang_expandhelp}" onclick="changeHTMLAreaSize('larger');">
-                    <span style="padding-left:15px;"><img src="{layout_url}/images/collapse.gif" border="0" TITLE="{lang_reducehelp}" onclick="changeHTMLAreaSize('smaller');"></span>
-                     <!-- BL: Not supported yet. Works in Firefox but not in IE
-                    <span style="padding-left:15px;">{lang_toolbar}:&nbsp;
+               <td colspan="2" style="vertical-align:top;padding-top:10px;">
+                    <span id="sel_toolbar" style="padding-left:15px;display:{show_adveditor};">{lang_toolbar}:&nbsp;
                       <select id="fckeditor_toolbar_selector" name="fckeditor_toolbar_selector" onchange="changeToolbar(this.value);">
                            <option value="editor-toolbar1">{toolbar1}</option>
-                           <option value="editor-toolbar2">{toolbar2}</option>
+                           <option value="editor-toolbar2" selected="selected">{toolbar2}</option>
                            <option value="editor-toolbar3">{toolbar3}</option>
-                           <option value="editor-toolbar4">{toolbar4}</option>
                            <option value="Default">{toolbar5}</option>
                       </select>
                     </span>
-                    -->
-                  <div style="margin-top:10px;border:1px solid #CCC;">
-                      <textarea id="sp_content" name="sp_content" cols="75" rows="24" wrap="virtual">{sp_content}</textarea>
-                  </div>
-                  <br><span class="warningsmall">{lang_allowedhtml}</span><br><br>
-               </div>
-              </td>
-           </tr>
+                 </td>
+             </tr>
+             <tr id="advanced_editarea" style="display:{show_adveditor};">
+                <td colspan="2" style="margin-top:10px;border:1px solid #CCC;">
+                  <textarea id="adv_content" name="sp_content">{sp_content}</textarea>
+                  <div class="warningsmall" style="padding:10px;">{lang_allowedhtml}</div>
+                </td>
+             </tr>
+             <tr id="html_editarea" style="display:{show_htmleditor};">
+                <td colspan="2" style="margin-top:10px;border:1px solid #CCC;">
+                  <textarea id="html_content" name="sp_content" rows="24" style="width:100%" wrap="virtual">{sp_content}</textarea>
+                  <div class="warningsmall" style="padding:10px;">{lang_allowedhtml}</div>
+                </td>
+             </tr>
           <tr>
               <td align="right">{lang_writtenby}:</td>
-              <td>{username}<input type="hidden" name="sp_uid" value="{sp_uid}"></td>
+              <td>{name}<input type="hidden" name="sp_uid" value="{sp_uid}"></td>
           </tr>
           <tr>
               <td align="right">{lang_lastupdated}:</td>
-              <td>{sp_formateddate}<input type="hidden" name="unixdate" value="{sp_date}"></td>
+              <td>{sp_formateddate}</td>
           </tr>
           <tr>
               <td colspan="2"><hr></td>
@@ -88,6 +96,11 @@
               <td valign="top"><input type="checkbox" name="sp_inblock" {inblock_checked}>&nbsp;&nbsp;{inblock_info}</td>
           </tr>
           <tr>
+              <td align="right" valign="top">{lang_centerblock_help}</td>
+              <td valign="top"><input type="text" name="sp_help" value="{centerblock_help}" size="50">&nbsp;{lang_centerblock_include}<br>
+              {lang_centerblock_desc}</td>
+          </tr>
+          <tr>
               <td align="right" valign="top">{php_msg}</td>
               <td valign="top">{php_selector}&nbsp;&nbsp;{php_warn}</td>
           </tr>
@@ -103,7 +116,7 @@
           </tr>
           <tr>
               <td align="right">{lang_owner}:</td>
-              <td>{owner_username}<input type="hidden" name="owner_id" value="{owner_id}"></td>
+              <td>{owner_name}<input type="hidden" name="owner_id" value="{owner_id}"></td>
           </tr>
           <tr>
               <td align="right">{lang_group}:</td>
@@ -138,8 +151,8 @@
           <tr><td>&nbsp;</td></tr>
           <tr>
               <td colspan="2">
-                  <input type="submit" value="{lang_save}" name="mode"> 
-                  <input type="submit" value="{lang_cancel}" name="mode"> 
+                  <input type="submit" value="{lang_save}" name="mode">
+                  <input type="submit" value="{lang_cancel}" name="mode">
                   {delete_option}
                   <input type="hidden" name="sp_old_id" value="{sp_old_id}">
               </td>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/templates/admin/editor.thtml 1.4.1.src/cpanel-glprivate/plugins/staticpages/templates/admin/editor.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/plugins/staticpages/templates/admin/editor.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/plugins/staticpages/templates/admin/editor.thtml	2006-08-24 02:31:49.000000000 -0500
@@ -34,17 +34,17 @@
           <tr>
               <td valign="top" align="right">{lang_content}:</td>
               <td>
-                  <textarea name="sp_content" cols="75" rows="24" wrap="virtual">{sp_content}</textarea>
+                  <textarea name="sp_content" style="width:100%" rows="24">{sp_content}</textarea>
                   <br><span class="warningsmall">{lang_allowedhtml}</span><br><br>
               </td>
           </tr>
           <tr>
               <td align="right">{lang_writtenby}:</td>
-              <td>{username}<input type="hidden" name="sp_uid" value="{sp_uid}"></td>
+              <td>{name}<input type="hidden" name="sp_uid" value="{sp_uid}"></td>
           </tr>
           <tr>
               <td align="right">{lang_lastupdated}:</td>
-              <td>{sp_formateddate}<input type="hidden" name="unixdate" value="{sp_date}"></td>
+              <td>{sp_formateddate}</td>
           </tr>
           <tr>
               <td colspan="2"><hr></td>
@@ -65,6 +65,11 @@
               <td valign="top"><input type="checkbox" name="sp_inblock" {inblock_checked}>&nbsp;&nbsp;{inblock_info}</td>
           </tr>
           <tr>
+              <td align="right" valign="top">{lang_centerblock_help}</td>
+              <td valign="top"><input type="text" name="sp_help" value="{centerblock_help}" size="50">&nbsp;{lang_centerblock_include}<br>
+              {lang_centerblock_desc}</td>
+          </tr>
+          <tr>
               <td align="right" valign="top">{php_msg}</td>
               <td valign="top">{php_selector}&nbsp;&nbsp;{php_warn}</td>
           </tr>
@@ -76,11 +81,11 @@
               <td colspan="2"><hr></td>
           </tr>
           <tr>
-              <td colspan="2"><b>{lang_accessrights}<b></td>
+              <td colspan="2"><b>{lang_accessrights}</b></td>
           </tr>
           <tr>
               <td align="right">{lang_owner}:</td>
-              <td>{owner_username}<input type="hidden" name="owner_id" value="{owner_id}"></td>
+              <td>{owner_name}<input type="hidden" name="owner_id" value="{owner_id}"></td>
           </tr>
           <tr>
               <td align="right">{lang_group}:</td>
@@ -115,8 +120,8 @@
           <tr><td>&nbsp;</td></tr>
           <tr>
               <td colspan="2">
-                  <input type="submit" value="{lang_save}" name="mode"> 
-                  <input type="submit" value="{lang_cancel}" name="mode"> 
+                  <input type="submit" value="{lang_save}" name="mode">
+                  <input type="submit" value="{lang_cancel}" name="mode">
                   {delete_option}
                   <input type="hidden" name="sp_old_id" value="{sp_old_id}">
               </td>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/sql/mssql_tableanddata.php 1.4.1.src/cpanel-glprivate/sql/mssql_tableanddata.php
--- 1.4.0sr5-1.src/cpanel-glprivate/sql/mssql_tableanddata.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/sql/mssql_tableanddata.php	2006-12-30 15:29:51.000000000 -0600
@@ -0,0 +1,1814 @@
+<?php
+$_SQL = array();
+
+
+
+$_SQL[] = "begin tran";
+
+$_SQL[] = "
+CREATE TABLE [dbo].[dateCommandCrossReference] (
+    [id] [int] IDENTITY (1, 1) NOT NULL ,
+    [mysqlCommand] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [sqlServerCommand] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [isDateName] [bit] NOT NULL ,
+    [isDatePart] [bit] NOT NULL
+) ON [PRIMARY]
+";
+
+
+
+$_SQL[] = "ALTER TABLE [dbo].[dateCommandCrossReference] ADD
+    CONSTRAINT [DF_commandCrossReference_isDateName] DEFAULT (0) FOR [isDateName],
+    CONSTRAINT [DF_commandCrossReference_isDatePart] DEFAULT (1) FOR [isDatePart],
+    CONSTRAINT [PK_commandCrossReference] PRIMARY KEY  CLUSTERED
+    (
+        [id]
+    )  ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['access']}] (
+    [acc_ft_id] [int] NOT NULL ,
+    [acc_grp_id] [int] NOT NULL
+) ON [PRIMARY]
+";
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['article_images']}] (
+    [ai_sid] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [ai_img_num] [tinyint] NOT NULL ,
+    [ai_filename] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
+) ON [PRIMARY]
+";
+
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['blocks']}] (
+    [bid] [numeric](5, 0) IDENTITY (1, 1) NOT NULL ,
+    [is_enabled] [tinyint] NOT NULL ,
+    [name] [varchar] (48) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [type] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [title] [varchar] (48) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [tid] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [blockorder] [numeric](5, 0) NOT NULL ,
+    [content] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [rdfurl] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [rdfupdated] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [rdflimit] [numeric](5, 0) NULL ,
+    [onleft] [tinyint] NULL ,
+    [phpblockfn] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [help] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [owner_id] [numeric](8, 0) NOT NULL ,
+    [group_id] [numeric](8, 0) NOT NULL ,
+    [perm_owner] [tinyint] NOT NULL ,
+    [perm_group] [tinyint] NOT NULL ,
+    [perm_members] [tinyint] NOT NULL ,
+    [perm_anon] [tinyint] NOT NULL ,
+    [allow_autotags] [tinyint] NOT NULL ,
+) ON [PRIMARY] 
+";
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['commentcodes']}] (
+    [code] [smallint] NOT NULL ,
+    [name] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+) ON [PRIMARY]
+";
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['commentmodes']}] (
+    [mode] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [name] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['comments']}] (
+    [cid] [numeric](10, 0) IDENTITY (1, 1) NOT NULL ,
+    [type] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [sid] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [date] [datetime] NULL ,
+    [title] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [comment] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [score] [smallint] NULL ,
+    [reason] [smallint] NULL ,
+    [pid] [numeric](10, 0) NULL ,
+    [lft] [numeric](10, 0) NULL ,
+    [rht] [numeric](10, 0) NULL ,
+    [indent] [numeric](10, 0) NULL ,
+    [uid] [int] NULL ,
+    [ipaddress] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+) ON [PRIMARY] 
+";
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['cookiecodes']}] (
+    [cc_value] [numeric](8, 0) NOT NULL ,
+    [cc_descr] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
+) ON [PRIMARY]
+";
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['dateformats']}] (
+    [dfid] [smallint] NOT NULL ,
+    [format] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [description] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+) ON [PRIMARY]
+";
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['events']}] (
+    [eid] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [title] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [description] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [postmode] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [datestart] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [dateend] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [url] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [hits] [numeric](8, 0) NULL ,
+    [owner_id] [numeric](8, 0) NULL ,
+    [group_id] [numeric](8, 0) NULL ,
+    [perm_owner] [tinyint] NULL ,
+    [perm_group] [tinyint] NULL ,
+    [perm_members] [tinyint] NULL ,
+    [perm_anon] [tinyint] NULL ,
+    [address1] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [address2] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [city] [varchar] (60) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [state] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [zipcode] [varchar] (5) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [allday] [smallint] NULL ,
+    [event_type] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [location] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [timestart] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [timeend] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+) ON [PRIMARY] 
+";
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['eventsubmission']}] (
+    [eid] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [title] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [description] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [location] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [datestart] [smalldatetime] NULL ,
+    [dateend] [smalldatetime] NULL ,
+    [url] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [allday] [smallint] NOT NULL ,
+    [zipcode] [varchar] (5) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [state] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [city] [varchar] (60) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [address2] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [address1] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [event_type] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [timestart] [smalldatetime] NULL ,
+    [timeend] [smalldatetime] NULL
+) ON [PRIMARY] 
+";
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['featurecodes']}] (
+    [code] [smallint] NOT NULL ,
+    [name] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+) ON [PRIMARY]
+";
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['features']}] (
+    [ft_id] [int] IDENTITY (1, 1) NOT NULL ,
+    [ft_name] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [ft_descr] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [ft_gl_core] [smallint] NOT NULL
+) ON [PRIMARY]
+";
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['frontpagecodes']}] (
+    [code] [smallint] NOT NULL ,
+    [name] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['group_assignments']}] (
+    [ug_main_grp_id] [int] NOT NULL ,
+    [ug_uid] [numeric](8, 0) NULL ,
+    [ug_grp_id] [numeric](8, 0) NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['groups']}] (
+    [grp_id] [int] IDENTITY (1, 1) NOT NULL ,
+    [grp_name] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [grp_descr] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [grp_gl_core] [tinyint] NOT NULL
+) ON [PRIMARY]
+";
+
+
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['links']}] (
+    [lid] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [category] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [url] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [description] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [title] [varchar] (96) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [hits] [int] NOT NULL ,
+    [date] [datetime] NULL ,
+    [owner_id] [numeric](8, 0) NOT NULL ,
+    [group_id] [numeric](8, 0) NOT NULL ,
+    [perm_owner] [tinyint] NOT NULL ,
+    [perm_group] [tinyint] NOT NULL ,
+    [perm_members] [tinyint] NOT NULL ,
+    [perm_anon] [tinyint] NOT NULL
+) ON [PRIMARY] 
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['linksubmission']}] (
+    [lid] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [category] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [url] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [description] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [title] [varchar] (96) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [hits] [int] NULL ,
+    [date] [datetime] NULL
+) ON [PRIMARY] 
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['maillist']}] (
+    [code] [int] NOT NULL ,
+    [name] [char] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['personal_events']}] (
+    [eid] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [title] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [event_type] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [datestart] [smalldatetime] NULL ,
+    [dateend] [smalldatetime] NULL ,
+    [address1] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [address2] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [city] [varchar] (60) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [state] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [zipcode] [varchar] (5) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [allday] [smallint] NOT NULL ,
+    [url] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [description] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [postmode] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [owner_id] [numeric](8, 0) NOT NULL ,
+    [group_id] [numeric](8, 0) NOT NULL ,
+    [perm_owner] [tinyint] NOT NULL ,
+    [perm_group] [tinyint] NOT NULL ,
+    [perm_members] [tinyint] NOT NULL ,
+    [perm_anon] [tinyint] NOT NULL ,
+    [uid] [int] NOT NULL ,
+    [location] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [timestart] [smalldatetime] NULL ,
+    [timeend] [smalldatetime] NULL
+) ON [PRIMARY] 
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['pingservice']}] (
+    [pid] [numeric](5, 0) IDENTITY (1, 1) NOT NULL ,
+    [name] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [ping_url] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [site_url] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [method] [varchar] (80) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [is_enabled] [tinyint] NOT NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['plugins']}] (
+    [pi_name] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [pi_version] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [pi_gl_version] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [pi_enabled] [tinyint] NOT NULL ,
+    [pi_homepage] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['pollanswers']}] (
+    [qid] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [aid] [tinyint] NOT NULL ,
+    [answer] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [votes] [numeric](8, 0) NULL ,
+    [remark] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['pollquestions']}] (
+    [qid] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [question] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [voters] [numeric](8, 0) NULL ,
+    [date] [datetime] NULL ,
+    [display] [smallint] NOT NULL ,
+    [commentcode] [smallint] NOT NULL ,
+    [statuscode] [smallint] NOT NULL ,
+    [owner_id] [numeric](8, 0) NOT NULL ,
+    [group_id] [numeric](8, 0) NOT NULL ,
+    [perm_owner] [tinyint] NOT NULL ,
+    [perm_group] [tinyint] NOT NULL ,
+    [perm_members] [tinyint]  NULL ,
+    [perm_anon] [tinyint]  NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['pollvoters']}] (
+    [id] [numeric](10, 0) IDENTITY (1, 1) NOT NULL ,
+    [qid] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [ipaddress] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [date] [numeric](10, 0) NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['postmodes']}] (
+    [code] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [name] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['sessions']}] (
+    [sess_id] [numeric](10, 0) NOT NULL ,
+    [start_time] [numeric](10, 0) NOT NULL ,
+    [remote_ip] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [uid] [int] NOT NULL ,
+    [md5_sess_id] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['sortcodes']}] (
+    [code] [char] (4) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [name] [char] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['spamx']}] (
+    [name] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [value] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['speedlimit']}] (
+    [id] [numeric](10, 0) IDENTITY (1, 1) NOT NULL ,
+    [ipaddress] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [date] [numeric](10, 0) NULL ,
+    [type] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['staticpage']}] (
+    [sp_id] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [sp_uid] [int] NOT NULL ,
+    [sp_title] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [sp_content] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [sp_hits] [numeric](8, 0) NOT NULL ,
+    [sp_date] [datetime] NOT NULL ,
+    [sp_format] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [sp_onmenu] [tinyint] NOT NULL ,
+    [sp_label] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [owner_id] [numeric](8, 0) NOT NULL ,
+    [group_id] [numeric](8, 0) NOT NULL ,
+    [perm_owner] [tinyint] NOT NULL ,
+    [perm_group] [tinyint] NOT NULL ,
+    [perm_members] [tinyint] NOT NULL ,
+    [perm_anon] [tinyint] NOT NULL ,
+    [sp_centerblock] [tinyint] NOT NULL ,
+    [sp_help] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [sp_tid] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [sp_where] [tinyint] NOT NULL ,
+    [sp_php] [tinyint] NOT NULL ,
+    [sp_nf] [tinyint] NULL ,
+    [sp_inblock] [tinyint] NULL  ,
+    [postmode] [varchar] (16) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+) ON [PRIMARY] 
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['statuscodes']}] (
+    [code] [int] NOT NULL ,
+    [name] [char] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['stories']}] (
+    [sid] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [uid] [int] NOT NULL ,
+    [draft_flag] [tinyint] NULL ,
+    [tid] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [date] [datetime] NULL ,
+    [title] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [introtext] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [bodytext] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [hits] [numeric](8, 0) NOT NULL ,
+    [numemails] [numeric](8, 0) NOT NULL ,
+    [comments] [numeric](8, 0) NOT NULL ,
+    [trackbacks] [numeric](8, 0) NOT NULL ,
+    [related] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [featured] [tinyint] NOT NULL ,
+    [show_topic_icon] [tinyint] NOT NULL ,
+    [commentcode] [smallint] NOT NULL ,
+    [trackbackcode] [smallint] NOT NULL ,
+    [statuscode] [smallint] NOT NULL ,
+    [expire] [datetime] NULL ,
+    [postmode] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [frontpage] [tinyint] NULL ,
+    [in_transit] [tinyint] NULL ,
+    [owner_id] [int] NOT NULL ,
+    [group_id] [int] NOT NULL ,
+    [perm_owner] [tinyint] NOT NULL ,
+    [perm_group] [tinyint] NOT NULL ,
+    [perm_members] [tinyint] NOT NULL ,
+    [perm_anon] [tinyint] NOT NULL ,
+    [advanced_editor_mode] [tinyint] NOT NULL ,
+) ON [PRIMARY] 
+";
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['storysubmission']}] (
+    [sid] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [uid] [int] NOT NULL ,
+    [tid] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [title] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [introtext] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [date] [datetime] NULL ,
+    [postmode] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
+) ON [PRIMARY] 
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['syndication']}] (
+    [fid] [numeric](10, 0) IDENTITY (1, 1) NOT NULL ,
+    [type] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [topic] [varchar] (48) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [header_tid] [varchar] (48) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [format] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [limits] [varchar] (5) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [content_length] [numeric](5, 0) NOT NULL ,
+    [title] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [description] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [feedlogo] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [filename] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [charset] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [language] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [is_enabled] [tinyint] NOT NULL ,
+    [updated] [datetime] NULL ,
+    [update_info] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+) ON [PRIMARY] 
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['topics']}] (
+    [tid] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [topic] [varchar] (48) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [imageurl] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [sortnum] [smallint] NULL ,
+    [limitnews] [smallint] NULL ,
+    [is_default] [tinyint] NOT NULL ,
+    [archive_flag] [tinyint]  NULL ,
+    [owner_id] [numeric](8, 0) NOT NULL ,
+    [group_id] [numeric](8, 0) NOT NULL ,
+    [perm_owner] [tinyint] NOT NULL ,
+    [perm_group] [tinyint] NOT NULL ,
+    [perm_members] [tinyint] NOT NULL ,
+    [perm_anon] [tinyint] NOT NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['trackback']}] (
+    [cid] [numeric](10, 0) IDENTITY (1, 1) NOT NULL ,
+    [sid] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [url] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [title] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [blog] [varchar] (80) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [excerpt] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [date] [datetime] NULL ,
+    [type] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [ipaddress] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
+) ON [PRIMARY] 
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['trackbackcodes']}] (
+    [code] [smallint] NOT NULL ,
+    [name] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['tzcodes']}] (
+    [tz] [char] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [offset] [int] NULL ,
+    [description] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['usercomment']}] (
+    [uid] [int] NOT NULL ,
+    [commentmode] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [commentorder] [varchar] (4) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [commentlimit] [numeric](8, 0) NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['userindex']}] (
+    [uid] [int] NOT NULL ,
+    [tids] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [etids] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [aids] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [boxes] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [noboxes] [smallint] NOT NULL ,
+    [maxstories] [smallint] NULL
+) ON [PRIMARY] 
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['userinfo']}] (
+    [uid] [int] NOT NULL ,
+    [about] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [location] [varchar] (96) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [pgpkey] [varchar] (5000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [userspace] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [tokens] [tinyint] NULL ,
+    [totalcomments] [int] NULL ,
+    [lastgranted] [numeric](10, 0) NULL ,
+    [lastlogin] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+) ON [PRIMARY] 
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['userprefs']}] (
+    [uid] [int] NOT NULL ,
+    [noicons] [tinyint] NULL ,
+    [willing] [tinyint] NULL ,
+    [dfid] [tinyint] NULL ,
+    [tzid] [char] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [emailstories] [smallint] NULL ,
+    [emailfromadmin] [smallint] NULL ,
+    [emailfromuser] [smallint] NULL ,
+    [showonline] [smallint] NULL
+) ON [PRIMARY]
+";
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['users']}] (
+    [uid] [int] IDENTITY (1, 1) NOT NULL ,
+    [username] [varchar] (16) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [remoteusername] [varchar] (60) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [remoteservice] [varchar] (60) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [fullname] [varchar] (80) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [passwd] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [email] [varchar] (96) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [homepage] [varchar] (96) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [sig] [varchar] (160) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [regdate] [datetime] NULL ,
+    [photo] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [cookietimeout] [numeric](8, 0) NULL ,
+    [theme] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [language] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [pwrequestid] [varchar] (16) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
+    [status] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+) ON [PRIMARY]
+";
+
+
+
+$_SQL[] = "
+CREATE TABLE [dbo].[{$_TABLES['vars']}] (
+    [name] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
+    [value] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+) ON [PRIMARY]
+";
+
+
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['access']}] ADD
+    CONSTRAINT [PK_gl_access] PRIMARY KEY  CLUSTERED
+    (
+        [acc_ft_id],
+        [acc_grp_id]
+    )  ON [PRIMARY]
+";
+
+
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['article_images']}] ADD
+    CONSTRAINT [PK_gl_article_images] PRIMARY KEY  CLUSTERED
+    (
+        [ai_sid],
+        [ai_img_num]
+    )  ON [PRIMARY]
+";
+
+
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['blocks']}] ADD
+    CONSTRAINT [DF_gl_blocks_type] DEFAULT ('normal') FOR [type],
+    CONSTRAINT [DF_gl_blocks_tid] DEFAULT ('All') FOR [tid],
+    CONSTRAINT [DF_gl_blocks_blockorder] DEFAULT (1) FOR [blockorder],
+    CONSTRAINT [DF_gl_blocks_content] DEFAULT (null) FOR [content],
+    CONSTRAINT [DF_gl_blocks_rdfupdated] DEFAULT (getdate()) FOR [rdfupdated],
+    CONSTRAINT [DF_gl_blocks_rdflimit] DEFAULT (0) FOR [rdflimit],
+    CONSTRAINT [DF_gl_blocks_onleft] DEFAULT (1) FOR [onleft],
+    CONSTRAINT [DF_gl_blocks_owner_id] DEFAULT (1) FOR [owner_id],
+    CONSTRAINT [DF_gl_blocks_group_id] DEFAULT (1) FOR [group_id],
+    CONSTRAINT [DF_gl_blocks_perm_owner] DEFAULT (3) FOR [perm_owner],
+    CONSTRAINT [DF_gl_blocks_perm_group] DEFAULT (3) FOR [perm_group],
+    CONSTRAINT [DF_gl_blocks_perm_members] DEFAULT (2) FOR [perm_members],
+    CONSTRAINT [DF_gl_blocks_perm_anon] DEFAULT (2) FOR [perm_anon],
+    CONSTRAINT [DF_gl_blocks_allow_autotags] DEFAULT (0) FOR [allow_autotags],
+    CONSTRAINT [PK_gl_blocks] PRIMARY KEY  CLUSTERED
+    (
+        [bid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['commentcodes']}] ADD
+    CONSTRAINT [PK_gl_commentcodes] PRIMARY KEY  CLUSTERED
+    (
+        [code]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['commentmodes']}] ADD
+    CONSTRAINT [PK_gl_commentmodes] PRIMARY KEY  CLUSTERED
+    (
+        [mode]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['comments']}] ADD
+    CONSTRAINT [PK_gl_comments] PRIMARY KEY  CLUSTERED
+    (
+        [cid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['cookiecodes']}] ADD
+    CONSTRAINT [PK_gl_cookiecodes] PRIMARY KEY  CLUSTERED
+    (
+        [cc_value]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['dateformats']}] ADD
+    CONSTRAINT [PK_gl_dateformats] PRIMARY KEY  CLUSTERED
+    (
+        [dfid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['events']}] ADD
+    CONSTRAINT [PK_gl_events] PRIMARY KEY  CLUSTERED
+    (
+        [eid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['eventsubmission']}] ADD
+    CONSTRAINT [PK_gl_eventsubmission] PRIMARY KEY  CLUSTERED
+    (
+        [eid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['featurecodes']}] ADD
+    CONSTRAINT [PK_gl_featurecodes] PRIMARY KEY  CLUSTERED
+    (
+        [code]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['features']}] ADD
+    CONSTRAINT [DF_gl_features_ft_gl_core] DEFAULT (0) FOR [ft_gl_core],
+    CONSTRAINT [PK_gl_features] PRIMARY KEY  CLUSTERED
+    (
+        [ft_id]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['frontpagecodes']}] ADD
+    CONSTRAINT [PK_gl_frontpagecodes] PRIMARY KEY  CLUSTERED
+    (
+        [code]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['groups']}] ADD
+    CONSTRAINT [DF_gl_groups_grp_gl_core] DEFAULT (0) FOR [grp_gl_core],
+    CONSTRAINT [PK_gl_groups] PRIMARY KEY  CLUSTERED
+    (
+        [grp_id]
+    )  ON [PRIMARY]
+";
+
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['links']}] ADD
+    CONSTRAINT [DF_gl_links_perm_group] DEFAULT (3) FOR [perm_group],
+    CONSTRAINT [DF_gl_links_perm_anon] DEFAULT (2) FOR [perm_anon],
+    CONSTRAINT [DF_gl_links_perm_members] DEFAULT (2) FOR [perm_members],
+    CONSTRAINT [DF_gl_links_perm_owner] DEFAULT (3) FOR [perm_owner],
+    CONSTRAINT [DF_gl_links_hits] DEFAULT (0) FOR [hits],
+    CONSTRAINT [PK_gl_links] PRIMARY KEY  CLUSTERED
+    (
+        [lid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['linksubmission']}] ADD
+    CONSTRAINT [PK_gl_linksubmission] PRIMARY KEY  CLUSTERED
+    (
+        [lid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['maillist']}] ADD
+    CONSTRAINT [PK_gl_maillist] PRIMARY KEY  CLUSTERED
+    (
+        [code]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['personal_events']}] ADD
+    CONSTRAINT [PK_gl_personal_events] PRIMARY KEY  CLUSTERED
+    (
+        [eid],
+        [uid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['pingservice']}] ADD
+    CONSTRAINT [PK_gl_pingservice] PRIMARY KEY  CLUSTERED
+    (
+        [pid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['plugins']}] ADD
+    CONSTRAINT [PK_gl_plugins] PRIMARY KEY  CLUSTERED
+    (
+        [pi_name]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['pollanswers']}] ADD
+    CONSTRAINT [PK_gl_pollanswers] PRIMARY KEY  CLUSTERED
+    (
+        [qid],
+        [aid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['pollquestions']}] ADD
+    CONSTRAINT [PK_gl_pollquestions] PRIMARY KEY  CLUSTERED
+    (
+        [qid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['pollvoters']}] ADD
+    CONSTRAINT [PK_gl_pollvoters] PRIMARY KEY  CLUSTERED
+    (
+        [id]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['postmodes']}] ADD
+    CONSTRAINT [PK_gl_postmodes] PRIMARY KEY  CLUSTERED
+    (
+        [code]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['sessions']}] ADD
+    CONSTRAINT [PK_gl_sessions] PRIMARY KEY  CLUSTERED
+    (
+        [sess_id]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['speedlimit']}] ADD
+    CONSTRAINT [PK_gl_speedlimit] PRIMARY KEY  CLUSTERED
+    (
+        [id]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['staticpage']}] ADD
+    CONSTRAINT [DF_gl_staticpage] DEFAULT ('html') FOR [postmode],
+    CONSTRAINT [PK_gl_staticpage] PRIMARY KEY  CLUSTERED
+    (
+        [sp_id]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['statuscodes']}] ADD
+    CONSTRAINT [PK_gl_statuscodes] PRIMARY KEY  CLUSTERED
+    (
+        [code]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['stories']}] ADD
+    CONSTRAINT [DF_gl_stories_uid] DEFAULT (1) FOR [uid],
+    CONSTRAINT [DF_gl_stories_draft_flag] DEFAULT (0) FOR [draft_flag],
+    CONSTRAINT [DF_gl_stories_tid] DEFAULT ('General') FOR [tid],
+    CONSTRAINT [DF_gl_stories_hits] DEFAULT (0) FOR [hits],
+    CONSTRAINT [DF_gl_stories_comments] DEFAULT (0) FOR [comments],
+    CONSTRAINT [DF_gl_stories_trackbacks] DEFAULT (0) FOR [trackbacks],
+    CONSTRAINT [DF_gl_stories_featured] DEFAULT (0) FOR [featured],
+    CONSTRAINT [DF_gl_stories_show_topic_icon] DEFAULT (1) FOR [show_topic_icon],
+    CONSTRAINT [DF_gl_stories_commentcode] DEFAULT (0) FOR [commentcode],
+    CONSTRAINT [DF_gl_stories_trackbackcode] DEFAULT (0) FOR [trackbackcode],
+    CONSTRAINT [DF_gl_stories_statuscode] DEFAULT (0) FOR [statuscode],
+    CONSTRAINT [DF_gl_stories_expire] DEFAULT (getdate()) FOR [expire],
+    CONSTRAINT [DF_gl_stories_postmode] DEFAULT ('html') FOR [postmode],
+    CONSTRAINT [DF_gl_stories_owner_id] DEFAULT (1) FOR [owner_id],
+    CONSTRAINT [DF_gl_stories_group_id] DEFAULT (2) FOR [group_id],
+    CONSTRAINT [DF_gl_stories_perm_owner] DEFAULT (3) FOR [perm_owner],
+    CONSTRAINT [DF_gl_stories_perm_group] DEFAULT (3) FOR [perm_group],
+    CONSTRAINT [DF_gl_stories_perm_members] DEFAULT (2) FOR [perm_members],
+    CONSTRAINT [DF_gl_stories_perm_anon] DEFAULT (2) FOR [perm_anon],
+    CONSTRAINT [DF_gl_stories_advanced_editor_mode] DEFAULT (0) FOR [advanced_editor_mode],
+    CONSTRAINT [PK_gl_stories] PRIMARY KEY  CLUSTERED
+    (
+        [sid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['storysubmission']}] ADD
+    CONSTRAINT [PK_gl_storysubmission] PRIMARY KEY  CLUSTERED
+    (
+        [sid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['syndication']}] ADD
+    CONSTRAINT [PK_gl_syndication] PRIMARY KEY  CLUSTERED
+    (
+        [fid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['topics']}] ADD
+    CONSTRAINT [DF_gl_topics_is_default] DEFAULT (0) FOR [is_default],
+    CONSTRAINT [PK_gl_topics] PRIMARY KEY  CLUSTERED
+    (
+        [tid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['trackback']}] ADD
+    CONSTRAINT [PK_gl_trackback] PRIMARY KEY  CLUSTERED
+    (
+        [cid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['trackbackcodes']}] ADD
+    CONSTRAINT [PK_gl_trackbackcodes] PRIMARY KEY  CLUSTERED
+    (
+        [code]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['tzcodes']}] ADD
+    CONSTRAINT [PK_gl_tzcodes] PRIMARY KEY  CLUSTERED
+    (
+        [tz]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['usercomment']}] ADD
+    CONSTRAINT [PK_gl_usercomment] PRIMARY KEY  CLUSTERED
+    (
+        [uid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['userindex']}] ADD
+    CONSTRAINT [DF_gl_userindex_boxes] DEFAULT (0) FOR [boxes],
+    CONSTRAINT [DF_gl_userindex_noboxes] DEFAULT (0) FOR [noboxes],
+    CONSTRAINT [DF_gl_userindex_tids] DEFAULT ('0') FOR [tids],
+    CONSTRAINT [DF_gl_userindex_etids] DEFAULT ('0') FOR [etids],
+    CONSTRAINT [DF_gl_userindex_aids] DEFAULT ('0') FOR [aids],
+    CONSTRAINT [PK_gl_userindex] PRIMARY KEY  CLUSTERED
+    (
+        [uid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['userinfo']}] ADD
+    CONSTRAINT [PK_gl_userinfo] PRIMARY KEY  CLUSTERED
+    (
+        [uid]
+    )  ON [PRIMARY]
+";
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['userprefs']}] ADD
+    CONSTRAINT [DF_gl_userprefs_noicons] DEFAULT (0) FOR [noicons],
+    CONSTRAINT [DF_gl_userprefs_willing] DEFAULT (0) FOR [willing],
+    CONSTRAINT [DF_gl_userprefs_dfid] DEFAULT (0) FOR [dfid],
+    CONSTRAINT [DF_gl_userprefs_emailstories] DEFAULT (0) FOR [emailstories],
+    CONSTRAINT [DF_gl_userprefs_emailfromadmin] DEFAULT (0) FOR [emailfromadmin],
+    CONSTRAINT [DF_gl_userprefs_emailfromuser] DEFAULT (0) FOR [emailfromuser],
+    CONSTRAINT [DF_gl_userprefs_showonline] DEFAULT (0) FOR [showonline],
+    CONSTRAINT [PK_gl_userprefs] PRIMARY KEY  CLUSTERED
+    (
+        [uid]
+    )  ON [PRIMARY]
+";
+
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['users']}] ADD
+    CONSTRAINT [DF_gl_users_status] DEFAULT ('1') FOR [status],
+    CONSTRAINT [PK_gl_users] PRIMARY KEY  CLUSTERED
+    (
+        [username]
+    )  ON [PRIMARY]
+";
+
+
+$_SQL[] = "ALTER TABLE [dbo].[{$_TABLES['vars']}] ADD
+    CONSTRAINT [PK_gl_vars] PRIMARY KEY  CLUSTERED
+    (
+        [name]
+    )  ON [PRIMARY]
+";
+
+
+
+
+
+
+
+
+
+$_SQL[] = "CREATE VIEW dbo.getPrimaryKey
+AS
+
+SELECT  SC.name as colName,  SO.name as tableName,
+    case when sc.status=128 then '1' else '0' end as isIdentity
+FROM    sysobjects SO,
+        sysobjects SPK,
+        sysindexes SI,
+        sysindexkeys SIK,
+        syscolumns SC
+WHERE
+
+SO.xtype = 'U'
+AND     SO.id = SPK.parent_obj
+AND     SPK.xtype = 'PK'
+AND     SO.id = SI.id
+AND     SPK.name = SI.name
+AND     SO.id = SIK.id
+AND     SI.indid = SIK.indid
+AND     SO.id = SC.id
+AND     SIK.colid = SC.colid
+
+
+
+
+
+";
+
+
+$_SQL[] = "CREATE VIEW dbo.getdateView
+AS
+SELECT     GETUTCDATE() AS getdate
+
+";
+
+
+
+
+
+
+
+
+
+
+$_SQL[] = "CREATE function DATE_FORMAT(@d as varchar(100)='', @f as varchar(100))
+returns varchar(1000)
+
+BEGIN
+declare
+@tempVar as         varchar(100),
+@workingString as   varchar(100),
+@mysqlCommand       varchar(10),
+@sqlCommand     varchar(10),
+@isDateName     bit,
+@isDatePart     bit,
+@retval         varchar(100),
+@sql            varchar(1000),
+@currentChar        char(1),
+@nextChar       char(1),
+@procOutput     varchar(100),
+@counter        int,
+@mode           int,
+@count          int
+
+
+if @d='' or @d is null      --date is null/empty.. fill it in for this poor person..
+    begin
+        select @d=getdate from getDateView
+    end
+
+set @workingString=@f
+
+--workingString now holds the desired date format
+--we have to loop thru that string, detecting % followed by a command
+--anything that is not a % sign or %% will be represented as a literal and
+--returned to the output string
+
+--if it is a command, due to limitations in UDFs we're going to pass the sql command
+--to a stored proc for conversion..
+
+
+-------------------------------------------------------------------------------------
+set @retval = ''
+set @mode=0
+set @counter=1
+while @counter<=len(@workingString)
+begin
+    select @currentChar=substring(@workingString,@counter,1)
+
+    if @currentChar='%'--we may have a command here
+     begin
+        select @nextChar=substring(@workingString,@counter+1,1)
+        set @mysqlCommand=@currentChar + @nextChar
+        select @count=count(*) from dateCommandCrossReference where mysqlCommand=@mysqlCommand  COLLATE Latin1_General_CS_AS
+
+        if @count>0  -- there most certainly is a command here.. do the conversion now...
+         begin
+
+            select @retval = @retval + (case @mysqlCommand COLLATE Latin1_General_CS_AS
+                when '%a' then  datename(weekday,@d)
+                when '%b' then  datename(month,@d)
+                when '%c' then  cast(datepart(mm,@d) as varchar(25))
+                when '%D' then  cast(datepart(d,@d) as varchar(25))
+                when '%d' then  cast(datepart(d,@d) as varchar(25))
+                when '%e' then  cast(datepart(d,@d) as varchar(25))
+                when '%f' then  cast(datepart(ms,@d) as varchar(25))
+                when '%H' then  cast(datepart(hh,@d) as varchar(25))
+                when '%h' then  cast(datepart(hh,@d) as varchar(25))
+                when '%I' then  cast(datepart(mi,@d) as varchar(25))
+                when '%i' then  cast(datepart(mi,@d) as varchar(25))
+                when '%j' then  cast(datename(dayofyear,@d) as varchar(25))
+                when '%k' then  cast(datepart(hh,@d) as varchar(25))
+                when '%l' then  cast(datepart(hh,@d) as varchar(25))
+                when '%M' then  cast(datename(month,@d) as varchar(25))
+                when '%m' then  cast(datepart(mm,@d) as varchar(25))
+                when '%p' then  ''
+                when '%r' then  ''
+                when '%S' then  cast(datepart(s,@d) as varchar(25))
+                when '%s' then  cast(datepart(s,@d) as varchar(25))
+                when '%T' then  ''
+                when '%U' then  cast(datepart(week,@d) as varchar(25))
+                when '%u' then  cast(datepart(week,@d) as varchar(25))
+                when '%V' then  cast(datepart(week,@d) as varchar(25))
+                when '%v' then  cast(datepart(week,@d) as varchar(25))
+                when '%W' then  cast(datename(dw,@d) as varchar(25))
+                when '%w' then  cast(datepart(dw,@d) as varchar(25))
+                when '%X' then  cast(datepart(year,@d) as varchar(25))
+                when '%x' then  cast(datepart(year,@d) as varchar(25))
+                when '%Y' then  cast(datepart(year,@d) as varchar(25))
+                when '%y' then  cast(datepart(year,@d) as varchar(25))
+
+                when '%%' then  '%'
+
+
+            end)
+            set @counter=@counter+1
+         end
+        else
+         begin
+
+            select @retval = @retval + @currentChar
+         end
+
+
+
+     end
+    else --no command here..
+     begin
+
+        select @retval=@retval + @currentChar
+     end
+    set @counter=@counter+1
+end
+
+
+
+
+
+return @retval
+END
+
+
+";
+
+
+
+
+
+$_SQL[] = "CREATE function DESCRIBE(@d as varchar(100)='')
+RETURNS table AS
+
+RETURN
+(select top 1000 a.name as Field, c.name +'(' + cast(a.prec as varchar) + ')' as Type,
+case when a.status=(0x08) then 'NULL' else '' end as [Null],
+' ' as [Key],
+' ' as [Default],
+' ' as [Extra]
+from syscolumns a
+join sysobjects b on a.id=b.id
+join systypes c on a.xtype=c.xtype
+where b.name = @d
+order by colorder asc)
+
+
+
+
+
+
+
+";
+
+
+
+
+$_SQL[] = "CREATE function FROM_UNIXTIME(@d as varchar(100)='')
+RETURNS varchar(100) AS
+BEGIN
+declare
+@retval varchar(100),
+@testDate   varchar(100)
+
+
+
+if @d is Null or @d=''
+    begin
+        SELECT @retval=''
+
+    end
+else
+    begin
+
+
+        SELECT @retval=cast(year(dateadd(SECOND, cast( @d as bigint) ,'19700101') ) as varchar(10)) + '-'
+
+
+
+    select @testDate=cast( month(dateadd(SECOND, cast( @d as bigint) ,'19700101') ) as varchar(10))
+    if len(@testDate)<2
+        begin
+        select @testDate='0' + @testDate
+        end
+    select @retval = @retval + @testDate + '-'
+
+    select @testDate=cast( day(dateadd(SECOND, cast( @d as bigint) ,'19700101') ) as varchar(10))
+    if len(@testDate)<2
+        begin
+        select @testDate='0' + @testDate
+        end
+    select @retval = @retval + @testDate + ' '
+
+
+
+    select @testDate=cast( DATEPART(hour, dateadd(SECOND, cast( @d as bigint) ,'19700101'))   as varchar(10))
+    if len(@testDate)<2
+        begin
+        select @testDate='0' + @testDate
+        end
+    select @retval = @retval + @testDate + ':'
+
+
+    select @testDate=cast( DATEPART(mi, dateadd(SECOND, cast( @d as bigint) ,'19700101'))   as varchar(10))
+    if len(@testDate)<2
+        begin
+        select @testDate='0' + @testDate
+        end
+    select @retval = @retval + @testDate + ':'
+
+
+    select @testDate=cast( DATEPART(s, dateadd(SECOND, cast( @d as bigint) ,'19700101'))   as varchar(10))
+    if len(@testDate)<2
+        begin
+        select @testDate='0' + @testDate
+        end
+    select @retval = @retval + @testDate
+
+    end
+
+
+return @retval
+END
+
+
+";
+
+
+
+$_SQL[] = "CREATE function TO_DAYS(@d as varchar(100)='')
+RETURNS int AS
+BEGIN
+declare
+@retval varchar(100),
+@testDate   varchar(100)
+
+
+if @d is Null or @d=''
+    begin
+        SELECT @retval=NULL
+
+    end
+else
+    begin
+        SELECT @retval=DATEDIFF(day, '19700101', @d)
+    end
+
+
+return cast(@retval as integer)
+END
+
+";
+
+
+$_SQL[] = "CREATE function UNIX_TIMESTAMP(@d as varchar(100)='')
+RETURNS varchar(100) AS
+BEGIN
+declare
+@retval varchar(100),
+@testDate   dateTime
+
+
+if @d is Null or @d=''
+    begin
+        select @testDate=[getdate] from getdateView
+        SELECT @retval=DATEDIFF(s, '1970-01-01 00:00:00.000', @testDate)
+
+    end
+else
+    begin
+        SELECT @retval=DATEDIFF(SECOND, '1970-01-01 00:00:00.000', @d)
+    end
+
+
+return @retval
+END
+
+";
+
+
+
+
+
+$_SQL[] = "CREATE    PROCEDURE dbo.doIndexInsert
+
+@table      varchar(256),
+@cols       varchar(5000),
+@vals       varchar(8000)
+
+AS
+begin
+
+declare
+@isIdentity     int,
+@sql            varchar(8000),
+@isIdentityListed   int,
+@tempCols       varchar(8000)
+
+select @tempCols=replace(@cols,',', ''',''')
+set @sql='select colName from getPrimaryKey where tableName=''' + @table + ''' and colname in (''' + @tempCols + ''')'
+exec (@sql)
+set  @isIdentityListed=@@ROWCOUNT
+
+
+
+select @isIdentity=isIdentity
+from getPrimaryKey
+where tableName=@table
+select @vals=replace(@vals,'\\\"', '''''')
+select @vals=replace(@vals,'\"', '''')
+
+if @isIdentity=1
+    begin
+        --this is an identity insert
+        if @isIdentityListed>0
+            begin
+                set @sql='set IDENTITY_INSERT ' + @table + ' ON; INSERT INTO ' + @table + ' (' + @cols + ') values (' + @vals + ')'
+            end
+        else
+            begin
+                set @sql='INSERT INTO ' + @table + ' (' + @cols + ') values (' + @vals + ')'
+            end
+
+    end
+else
+    begin
+        set @sql='INSERT INTO ' + @table + ' (' + @cols + ') values (' + @vals + ')'
+    end
+
+print @sql
+
+exec (@sql)
+
+
+end
+
+
+
+
+
+
+";
+
+
+$_SQL[] = "CREATE TRIGGER FixBoxes ON [dbo].[{$_TABLES['userindex']}]
+FOR INSERT, UPDATE
+AS
+update gl_userindex
+set boxes='0' where boxes=''
+
+
+update gl_userindex
+set noboxes='0' where noboxes=''
+
+update gl_userindex
+set aids='0' where aids=''
+
+update gl_userindex
+set tids='0' where tids=''
+
+";
+
+
+
+$_SQL[] = "CREATE TRIGGER fixContext ON [dbo].[{$_TABLES['blocks']}]
+FOR INSERT, UPDATE
+AS
+
+update {$_TABLES['blocks']}
+set content=NULL
+where content like''
+";
+
+
+
+$_SQL[] = "CREATE TRIGGER fixPhoto ON dbo.gl_users
+FOR INSERT, UPDATE
+AS
+
+update gl_users
+set photo=null
+where photo=''
+
+";
+
+
+
+
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (1,3)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (2,3)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (3,5)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (4,5)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (5,9)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (5,11)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (6,9)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (6,11)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES(7,12)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (8,7)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (9,7)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (10,4)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (11,6)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (12,8)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (13,10)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (14,11)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (15,11)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (16,4)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (17,14)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (18,14)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (23,15)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (24,3)";
+$_SQL[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (25,17)";
+
+$_SQL[] = "
+set identity_insert {$_TABLES['blocks']} on
+
+
+INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (1,1,'user_block','gldefault','User Functions','all',2,'','',getdate(),1,'',4,2,3,3,2,2)
+INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (2,1,'admin_block','gldefault','Admins Only','all',1,'','',getdate(),1,'',4,2,3,3,2,2)
+INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (3,1,'section_block','gldefault','Topics','all',0,'','',getdate(),1,'',4,2,3,3,2,2)
+INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (4,1,'polls_block','phpblock','Poll','all',2,'','',getdate(),0,'phpblock_polls',4,2,3,3,2,2)
+INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (5,1,'events_block','phpblock','Events','all',4,'','',getdate(),1,'phpblock_calendar',1,2,3,3,2,2)
+INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (6,1,'whats_new_block','gldefault','What''s New','all',3,'','',getdate(),0,'',4,2,3,3,2,2)
+INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (7,1,'first_block','normal','About Geeklog','homeonly',1,'<p><b>Welcome to Geeklog!</b><p>If you''re already familiar with Geeklog - and especially if you''re not: There have been many improvements to Geeklog since earlier versions that you might want to read up on. Please read the <a href=\"docs/changes.html\">release notes</a>. If you need help, please see the <a href=\"docs/support.html\">support options</a>.','',getdate(),0,'',4,2,3,3,2,2)
+INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (8,1,'whosonline_block','phpblock','Who''s Online','all',0,'','',getdate(),0,'phpblock_whosonline',4,2,3,3,2,2)
+INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (9,1,'older_stories','gldefault','Older Stories','all',5,'','',getdate(),1,'',4,2,3,3,2,2)
+
+
+set identity_insert {$_TABLES['blocks']} off
+";
+
+
+$_SQL[] = "INSERT INTO {$_TABLES['commentcodes']} (code, name) VALUES (0,'Comments Enabled')";
+$_SQL[] = "INSERT INTO {$_TABLES['commentcodes']} (code, name) VALUES (-1,'Comments Disabled')";
+
+$_SQL[] = "INSERT INTO {$_TABLES['commentmodes']} (mode, name) VALUES ('flat','Flat')";
+$_SQL[] = "INSERT INTO {$_TABLES['commentmodes']} (mode, name) VALUES ('nested','Nested')";
+$_SQL[] = "INSERT INTO {$_TABLES['commentmodes']} (mode, name) VALUES ('threaded','Threaded')";
+$_SQL[] = "INSERT INTO {$_TABLES['commentmodes']} (mode, name) VALUES ('nocomment','No Comments')";
+
+$_SQL[] = "INSERT INTO {$_TABLES['cookiecodes']} (cc_value, cc_descr) VALUES (0,'(don''t)')";
+$_SQL[] = "INSERT INTO {$_TABLES['cookiecodes']} (cc_value, cc_descr) VALUES (3600,'1 Hour')";
+$_SQL[] = "INSERT INTO {$_TABLES['cookiecodes']} (cc_value, cc_descr) VALUES (7200,'2 Hours')";
+$_SQL[] = "INSERT INTO {$_TABLES['cookiecodes']} (cc_value, cc_descr) VALUES (10800,'3 Hours')";
+$_SQL[] = "INSERT INTO {$_TABLES['cookiecodes']} (cc_value, cc_descr) VALUES (28800,'8 Hours')";
+$_SQL[] = "INSERT INTO {$_TABLES['cookiecodes']} (cc_value, cc_descr) VALUES (86400,'1 Day')";
+$_SQL[] = "INSERT INTO {$_TABLES['cookiecodes']} (cc_value, cc_descr) VALUES (604800,'1 Week')";
+$_SQL[] = "INSERT INTO {$_TABLES['cookiecodes']} (cc_value, cc_descr) VALUES (2678400,'1 Month')";
+
+$_SQL[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (0,'','System Default')";
+$_SQL[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (1,'%A %B %d, %Y @%I:%M%p','Sunday March 21, 1999 @10:00PM')";
+$_SQL[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (2,'%A %b %d, %Y @%H:%M','Sunday March 21, 1999 @22:00')";
+$_SQL[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (4,'%A %b %d @%H:%M','Sunday March 21 @22:00')";
+$_SQL[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (5,'%H:%M %d %B %Y','22:00 21 March 1999')";
+$_SQL[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (6,'%H:%M %A %d %B %Y','22:00 Sunday 21 March 1999')";
+$_SQL[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (7,'%I:%M%p - %A %B %d %Y','10:00PM -- Sunday March 21 1999')";
+$_SQL[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (8,'%a %B %d, %I:%M%p','Sun March 21, 10:00PM')";
+$_SQL[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (9,'%a %B %d, %H:%M','Sun March 21, 22:00')";
+$_SQL[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (10,'%m-%d-%y %H:%M','3-21-99 22:00')";
+$_SQL[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (11,'%d-%m-%y %H:%M','21-3-99 22:00')";
+$_SQL[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (12,'%m-%d-%y %I:%M%p','3-21-99 10:00PM')";
+$_SQL[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (13,'%I:%M%p  %B %D, %Y','10:00PM  March 21st, 1999')";
+$_SQL[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (14,'%a %b %d, ''%y %I:%M%p','Sun Mar 21, ''99 10:00PM')";
+$_SQL[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (15,'Day %j, %I ish','Day 80, 10 ish')";
+$_SQL[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (16,'%y-%m-%d %I:%M','99-03-21 10:00')";
+$_SQL[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (17,'%d/%m/%y %H:%M','21/03/99 22:00')";
+$_SQL[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (18,'%a %d %b %I:%M%p','Sun 21 Mar 10:00PM')";
+
+$_SQL[] = "INSERT INTO {$_TABLES['eventsubmission']} (eid, title, description, location, datestart, dateend, url, allday, zipcode, state, city, address2, address1, event_type, timestart, timeend) VALUES ('2005100114064662','Geeklog installed','Today, you successfully installed this Geeklog site.','Your webserver',getdate(),getdate(),'http://www.geeklog.net/',1,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL)";
+
+$_SQL[] = "INSERT INTO {$_TABLES['featurecodes']} (code, name) VALUES (0,'Not Featured')";
+$_SQL[] = "INSERT INTO {$_TABLES['featurecodes']} (code, name) VALUES (1,'Featured')";
+
+
+
+
+$_SQL[] = "
+set identity_insert {$_TABLES['features']} on
+
+
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (1,'story.edit','Access to story editor',1)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (2,'story.moderate','Ability to moderate pending stories',1)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (5,'user.edit','Access to user editor',1)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (6,'user.delete','Ability to delete a user',1)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (7,'user.mail','Ability to send email to members',1)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (8,'calendar.moderate','Ability to moderate pending events',1)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (9,'calendar.edit','Access to event editor',1)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (10,'block.edit','Access to block editor',1)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (11,'topic.edit','Access to topic editor',1)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (13,'plugin.edit','Access to plugin editor',1)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (14,'group.edit','Ability to edit groups',1)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (15,'group.delete','Ability to delete groups',1)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (16,'block.delete','Ability to delete a block',1)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (17,'staticpages.edit','Ability to edit a static page',0)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (18,'staticpages.delete','Ability to delete static pages',0)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (19,'story.submit','May skip the story submission queue',1)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (21,'calendar.submit','May skip the event submission queue',1)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (22,'staticpages.PHP','Ability use PHP in static pages',0)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (23,'spamx.admin', 'Full access to Spam-X plugin', 0)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (24,'story.ping', 'Ability to send pings, pingbacks, or trackbacks for stories', 1)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (3,'links.moderate','Ability to moderate pending links',0)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (4,'links.edit','Access to links editor',0)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (20,'links.submit','May skip the links submission queue',0)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (12,'polls.edit','Access to polls editor',0)
+INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (25,'syndication.edit', 'Access to Content Syndication', 1)
+
+set identity_insert {$_TABLES['features']} off
+";
+
+
+
+$_SQL[] = "INSERT INTO {$_TABLES['frontpagecodes']} (code, name) VALUES (0,'Show Only in Topic')";
+$_SQL[] = "INSERT INTO {$_TABLES['frontpagecodes']} (code, name) VALUES (1,'Show on Front Page')";
+
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (2,1,NULL)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (2,NULL,1)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (3,NULL,1)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (4,NULL,1)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (5,NULL,1)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (6,NULL,1)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (7,NULL,1)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (8,NULL,1)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (9,NULL,1)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (10,NULL,1)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (11,NULL,1)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (13,2,NULL)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (12,2,NULL)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (11,2,NULL)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (2,NULL,12)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (2,NULL,10)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (2,NULL,9)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (2,NULL,8)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (2,NULL,7)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (2,NULL,6)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (2,NULL,5)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (2,NULL,4)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (2,NULL,3)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (12,NULL,1)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (9,NULL,11)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (2,NULL,11)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (10,2,NULL)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (9,2,NULL)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (8,2,NULL)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (7,2,NULL)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (6,2,NULL)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (5,2,NULL)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (4,2,NULL)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (3,2,NULL)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (2,2,NULL)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (1,2,NULL)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (14,NULL,1)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (15,NULL,1)";
+$_SQL[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (17,NULL,1)";
+
+
+$_SQL[] = "
+set identity_insert {$_TABLES['groups']} on
+
+INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (1,'Root','Has full access to the site',1)
+INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (2,'All Users','Group that a typical user is added to',1)
+INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (3,'Story Admin','Has full access to story features',1)
+INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (4,'Block Admin','Has full access to block features',1)
+INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (5,'Links Admin','Has full access to links features',0)
+INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (6,'Topic Admin','Has full access to topic features',1)
+INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (7,'Calendar Admin','Has full access to calendar features',1)
+INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (8,'Polls Admin','Has full access to polls features',0)
+INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (9,'User Admin','Has full access to user features',1)
+INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (10,'Plugin Admin','Has full access to plugin features',1)
+INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (11,'Group Admin','Is a User Admin with access to groups, too',1)
+INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (12,'Mail Admin','Can use Mail Utility',1)
+INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (13,'Logged-in Users','All registered members',1)
+INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (14,'Static Page Admin','Can administer static pages',0)
+INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (15,'spamx Admin', 'Users in this group can administer the Spam-X plugin',0)
+INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (16,'Remote Users', 'Users in this group can have authenticated against a remote server.',1)
+INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (17,'Syndication Admin', 'Can create and modify web feeds for the site',1)
+
+set identity_insert {$_TABLES['groups']} off
+";
+
+
+$_SQL[] = "INSERT INTO {$_TABLES['links']} (lid, category, url, description, title, date, owner_id, group_id) VALUES ('geeklog.net','Geeklog Sites','http://www.geeklog.net/','Visit the Geeklog homepage for support, FAQs, updates, add-ons, and a great community.','Geeklog Project Homepage',getdate(),1,5)";
+
+$_SQL[] = "INSERT INTO {$_TABLES['maillist']} (code, name) VALUES (0,'Don''t Email')";
+$_SQL[] = "INSERT INTO {$_TABLES['maillist']} (code, name) VALUES (1,'Email Headlines Each Night')";
+
+
+$_SQL[] = "
+set identity_insert {$_TABLES['pingservice']} on
+
+INSERT INTO {$_TABLES['pingservice']} (pid, name, site_url, ping_url, method, is_enabled) VALUES (1, 'Ping-O-Matic', 'http://pingomatic.com/', 'http://rpc.pingomatic.com/', 'weblogUpdates.ping', 1)
+
+set identity_insert {$_TABLES['pingservice']} off
+";
+
+
+
+$_SQL[] = "INSERT INTO {$_TABLES['plugins']} (pi_name, pi_version, pi_gl_version, pi_enabled, pi_homepage) VALUES ('staticpages', '1.4.3','1.4.1',1,'http://www.geeklog.net/')";
+$_SQL[] = "INSERT INTO {$_TABLES['plugins']} (pi_name, pi_version, pi_gl_version, pi_enabled, pi_homepage) VALUES ('spamx', '1.1.0','1.4.1',1,'http://www.pigstye.net/gplugs/staticpages/index.php/spamx')";
+$_SQL[] = "INSERT INTO {$_TABLES['plugins']} (pi_name, pi_version, pi_gl_version, pi_enabled, pi_homepage) VALUES ('links', '1.0.1', '1.4.1', 1, 'http://www.geeklog.net/')";
+$_SQL[] = "INSERT INTO {$_TABLES['plugins']} (pi_name, pi_version, pi_gl_version, pi_enabled, pi_homepage) VALUES ('polls', '1.1.0', '1.4.1', '1', 'http://www.geeklog.net/')";
+$_SQL[] = "INSERT INTO {$_TABLES['plugins']} (pi_name, pi_version, pi_gl_version, pi_enabled, pi_homepage) VALUES ('calendar', '1.0.0', '1.4.1', '1', 'http://www.geeklog.net/')";
+
+$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',1,'MS SQL support',0)";
+$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',2,'Multi-language support',0)";
+$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',3,'Calendar as a plugin',0)";
+$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',4,'SLV spam protection',0)";
+$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',5,'Mass-delete users',0)";
+$_SQL[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',6,'Other',0)";
+
+$_SQL[] = "INSERT INTO {$_TABLES['pollquestions']} (qid, question, voters, date, display, commentcode, statuscode, owner_id, group_id, perm_owner, perm_group) VALUES ('geeklogfeaturepoll','What is the best new feature of Geeklog?',0,getdate(),1,0,0,2,8,3,3)";
+
+$_SQL[] = "INSERT INTO {$_TABLES['postmodes']} (code, name) VALUES ('plaintext','Plain Old Text')";
+$_SQL[] = "INSERT INTO {$_TABLES['postmodes']} (code, name) VALUES ('html','HTML Formatted')";
+
+$_SQL[] = "INSERT INTO {$_TABLES['sortcodes']} (code, name) VALUES ('ASC','Oldest First')";
+$_SQL[] = "INSERT INTO {$_TABLES['sortcodes']} (code, name) VALUES ('DESC','Newest First')";
+
+$_SQL[] = "INSERT INTO {$_TABLES['statuscodes']} (code, name) VALUES (1,'Refreshing')";
+$_SQL[] = "INSERT INTO {$_TABLES['statuscodes']} (code, name) VALUES (0,'Normal')";
+$_SQL[] = "INSERT INTO {$_TABLES['statuscodes']} (code, name) VALUES (10,'Archive')";
+
+$_SQL[] = "INSERT INTO {$_TABLES['stories']} (sid, uid, draft_flag, tid, date, title, introtext, bodytext, hits, numemails, comments, related, featured, commentcode, statuscode, postmode, frontpage, owner_id, group_id, perm_owner, perm_group, perm_members, perm_anon) VALUES ('welcome',2,0,'Geeklog',getdate(),'Welcome to Geeklog!','<p>Welcome and let me be the first to congratulate you on installing Geeklog. Please take the time to read everything in the <a href=\"docs/index.html\">docs directory</a>. Geeklog now has enhanced, user-based security.  You should thoroughly understand how these work before you run a production Geeklog Site.\r\r<p>To log into your new Geeklog site, please use this account:\r<p>Username: <b>Admin</b><br>\rPassword: <b>password</b>','<p><b>And don''t forget to change your password after logging in!</b>',100,1,0,'',1,0,0,'html',1,2,3,3,2,2,2)";
+
+$_SQL[] = "INSERT INTO {$_TABLES['storysubmission']} (sid, uid, tid, title, introtext, date, postmode) VALUES ('security-reminder',2,'Geeklog','Are you secure?','<p>This is a reminder to secure your site once you have Geeklog up and running. What you should do:</p>\r\r<ol>\r<li>Change the default password for the Admin account.</li>\r<li>Remove the install directory (you won''t need it any more).</li>\r</ol>',getdate(),'html')";
+
+$_SQL[] = "INSERT INTO {$_TABLES['syndication']} (type, topic, header_tid, format, limits, content_length, title, description, filename, charset, language, is_enabled, updated, update_info) VALUES ('geeklog', '::all', 'all', 'RSS-2.0', 10, 1, 'Geeklog Site', 'Another Nifty Geeklog Site', 'geeklog.rss', 'iso-8859-1', 'en-gb', 1, getdate(), NULL)";
+
+$_SQL[] = "INSERT INTO {$_TABLES['topics']} (tid, topic, imageurl, sortnum, limitnews, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES ('General','General News','/images/topics/topic_news.gif',1,10,6,2,3,2,2,2)";
+$_SQL[] = "INSERT INTO {$_TABLES['topics']} (tid, topic, imageurl, sortnum, limitnews, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES ('Geeklog','Geeklog','/images/topics/topic_gl.gif',2,10,6,2,3,2,2,2)";
+
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('ndt',-9000,'Newfoundland Daylight')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('adt',-10800,'Atlantic Daylight')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('edt',-14400,'Eastern Daylight')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('cdt',-18000,'Central Daylight')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('mdt',-21600,'Mountain Daylight')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('pdt',-25200,'Pacific Daylight')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('ydt',-28800,'Yukon Daylight')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('hdt',-32400,'Hawaii Daylight')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('bst',3600,'British Summer')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('mes',7200,'Middle European Summer')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('sst',7200,'Swedish Summer')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('fst',7200,'French Summer')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('wad',28800,'West Australian Daylight')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('cad',37800,'Central Australian Daylight')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('ead',39600,'Eastern Australian Daylight')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('nzd',46800,'New Zealand Daylight')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('gmt',0,'Greenwich Mean')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('utc',0,'Universal (Coordinated)')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('wet',0,'Western European')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('wat',-3600,'West Africa')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('at',-7200,'Azores')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('gst',-10800,'Greenland Standard')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('nft',-12600,'Newfoundland')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('nst',-12600,'Newfoundland Standard')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('ast',-14400,'Atlantic Standard')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('est',-18000,'Eastern Standard')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('cst',-21600,'Central Standard')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('mst',-25200,'Mountain Standard')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('pst',-28800,'Pacific Standard')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('yst',-32400,'Yukon Standard')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('hst',-36000,'Hawaii Standard')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('cat',-36000,'Central Alaska')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('ahs',-36000,'Alaska-Hawaii Standard')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('nt',-39600,'Nome')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('idl',-43200,'International Date Line West')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('cet',3600,'Central European')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('met',3600,'Middle European')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('mew',3600,'Middle European Winter')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('swt',3600,'Swedish Winter')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('fwt',3600,'French Winter')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('eet',7200,'Eastern Europe, USSR Zone 1')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('bt',10800,'Baghdad, USSR Zone 2')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('it',12600,'Iran')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('zp4',14400,'USSR Zone 3')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('zp5',18000,'USSR Zone 4')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('ist',19800,'Indian Standard')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('zp6',21600,'USSR Zone 5')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('was',25200,'West Australian Standard')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('jt',27000,'Java (3pm in Cronusland!)')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('cct',28800,'China Coast, USSR Zone 7')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('jst',32400,'Japan Standard, USSR Zone 8')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('cas',34200,'Central Australian Standard')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('eas',36000,'Eastern Australian Standard')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('nzt',43200,'New Zealand')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('nzs',43200,'New Zealand Standard')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('id2',43200,'International Date Line East')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('idt',10800,'Israel Daylight')";
+$_SQL[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('iss',7200,'Israel Standard')";
+
+$_SQL[] = "INSERT INTO {$_TABLES['usercomment']} (uid, commentmode, commentorder, commentlimit) VALUES (1,'nested','ASC',100)";
+$_SQL[] = "INSERT INTO {$_TABLES['usercomment']} (uid, commentmode, commentorder, commentlimit) VALUES (2,'threaded','ASC',100)";
+
+$_SQL[] = "INSERT INTO {$_TABLES['userindex']} (uid, tids, etids, aids, boxes, noboxes, maxstories) VALUES (1,'','-','','',0,NULL)";
+$_SQL[] = "INSERT INTO {$_TABLES['userindex']} (uid, tids, etids, aids, boxes, noboxes, maxstories) VALUES (2,'','','','',0,NULL)";
+
+$_SQL[] = "INSERT INTO {$_TABLES['userinfo']} (uid, about, pgpkey, userspace, tokens, totalcomments, lastgranted) VALUES (1,NULL,NULL,'',0,0,0)";
+$_SQL[] = "INSERT INTO {$_TABLES['userinfo']} (uid, about, pgpkey, userspace, tokens, totalcomments, lastgranted) VALUES (2,NULL,NULL,'',0,0,0)";
+
+$_SQL[] = "INSERT INTO {$_TABLES['userprefs']} (uid, noicons, willing, dfid, tzid, emailstories) VALUES (1,0,0,0,'',0)";
+$_SQL[] = "INSERT INTO {$_TABLES['userprefs']} (uid, noicons, willing, dfid, tzid, emailstories) VALUES (2,0,1,0,'edt',1)";
+
+$_SQL[] = "
+set identity_insert {$_TABLES['users']} on
+
+INSERT INTO {$_TABLES['users']} (uid, username, fullname, passwd, email, homepage, sig, regdate, cookietimeout, theme, status) VALUES (1,'Anonymous','Anonymous','',NULL,NULL,'',getdate(),0,NULL,3)
+INSERT INTO {$_TABLES['users']} (uid, username, fullname, passwd, email, homepage, sig, regdate, cookietimeout, theme, status) VALUES (2,'Admin','Geeklog SuperUser','5f4dcc3b5aa765d61d8327deb882cf99','root@localhost','http://www.geeklog.net/','',getdate(),28800,NULL,3)
+
+set identity_insert {$_TABLES['users']} off
+";
+
+
+$_SQL[] = "INSERT INTO {$_TABLES['vars']} (name, value) VALUES ('totalhits','0')";
+$_SQL[] = "INSERT INTO {$_TABLES['vars']} (name, value) VALUES ('lastemailedstories','')";
+$_SQL[] = "INSERT INTO {$_TABLES['vars']} (name, value) VALUES ('last_scheduled_run','')";
+$_SQL[] = "INSERT INTO {$_TABLES['vars']} (name, value) VALUES ('spamx.counter','0')";
+
+$_SQL[] = "INSERT INTO {$_TABLES['trackbackcodes']} (code, name) VALUES (0,'Trackback Enabled')";
+$_SQL[] = "INSERT INTO {$_TABLES['trackbackcodes']} (code, name) VALUES (-1,'Trackback Disabled')";
+
+
+
+
+
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%a','weekday','1','0')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%b','month','1','0')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%c','mm','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%D','d','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%d','d','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%e','d','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%f','ms','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%H','hh','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%h','hh','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%I','mi','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%i','mi','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%j','dayofyear','1','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%k','hh','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%l','hh','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%M','month','1','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%m','mm','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%p','','0','0')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%r','','0','0')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%S','seconds','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%s','seconds','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%T','','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%U','week','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%u','week','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%V','week','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%v','week','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%W','dw','1','0')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%w','dw','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%X','year','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%x','year','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%Y','year','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%y','year','0','1')";
+$_SQL[] = "INSERT INTO dateCommandCrossReference (mysqlCommand, sqlServerCommand,isDateName,isDatePart) values ('%%','','0','1')";
+
+
+
+
+
+
+$_SQL[] = "
+if @@error=0
+begin
+    commit tran
+end
+
+else
+begin
+    rollback tran
+end
+
+";
+
+
+
+$_DATA = array();
+
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/sql/mysql_tableanddata.php 1.4.1.src/cpanel-glprivate/sql/mysql_tableanddata.php
--- 1.4.0sr5-1.src/cpanel-glprivate/sql/mysql_tableanddata.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/sql/mysql_tableanddata.php	2006-12-30 15:29:34.000000000 -0600
@@ -18,12 +18,13 @@
   tid varchar(20) NOT NULL default 'All',
   blockorder smallint(5) unsigned NOT NULL default '1',
   content text,
+  allow_autotags tinyint(1) unsigned NOT NULL DEFAULT '0',
   rdfurl varchar(255) default NULL,
   rdfupdated datetime NOT NULL default '0000-00-00 00:00:00',
   rdflimit smallint(5) unsigned NOT NULL default '0',
   onleft tinyint(3) unsigned NOT NULL default '1',
   phpblockfn varchar(64) default '',
-  help varchar(128) default '',
+  help varchar(255) default '',
   owner_id mediumint(8) unsigned NOT NULL default '1',
   group_id mediumint(8) unsigned NOT NULL default '1',
   perm_owner tinyint(1) unsigned NOT NULL default '3',
@@ -294,6 +295,7 @@
   aid tinyint(3) unsigned NOT NULL default '0',
   answer varchar(255) default NULL,
   votes mediumint(8) unsigned default NULL,
+  remark varchar( 255 ) NULL,
   PRIMARY KEY  (qid,aid)
 ) TYPE=MyISAM
 ";
@@ -404,6 +406,7 @@
   statuscode tinyint(4) NOT NULL default '0',
   expire DATETIME NOT NULL default '0000-00-00 00:00:00',
   postmode varchar(10) NOT NULL default 'html',
+  advanced_editor_mode tinyint(1) unsigned default '0',
   frontpage tinyint(3) unsigned default '1',
   in_transit tinyint(1) unsigned default '0',
   owner_id mediumint(8) NOT NULL default '1',
@@ -644,11 +647,13 @@
   perm_members tinyint(1) unsigned NOT NULL default '2',
   perm_anon tinyint(1) unsigned NOT NULL default '2',
   sp_centerblock tinyint(1) unsigned NOT NULL default '0',
+  sp_help varchar(255) default '',
   sp_tid varchar(20) NOT NULL default 'none',
   sp_where tinyint(1) unsigned NOT NULL default '1',
   sp_php tinyint(1) unsigned NOT NULL default '0',
   sp_nf tinyint(1) unsigned default '0',
   sp_inblock tinyint(1) unsigned default '1',
+  postmode varchar(16) NOT NULL default 'html',
   PRIMARY KEY  (sp_id),
   KEY staticpage_sp_uid (sp_uid),
   KEY staticpage_sp_date (sp_date),
@@ -697,17 +702,17 @@
 $_DATA[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (18,14) ";
 $_DATA[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (23,15) ";
 $_DATA[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (24,3) ";
+$_DATA[] = "INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES (25,17) ";
 
-$_DATA[] = "INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (1,1,'user_block','gldefault','User Functions','all',2,'','','0000-00-00 00:00:00',1,'',1,2,3,3,2,2) ";
-$_DATA[] = "INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (2,1,'admin_block','gldefault','Admins Only','all',1,'','','0000-00-00 00:00:00',1,'',1,2,3,3,2,2) ";
-$_DATA[] = "INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (3,1,'section_block','gldefault','Topics','all',0,'','','0000-00-00 00:00:00',1,'',1,2,3,3,2,2) ";
-$_DATA[] = "INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (4,1,'polls_block','phpblock','Poll','all',2,'','','0000-00-00 00:00:00',0,'phpblock_polls',1,2,3,3,2,2) ";
-$_DATA[] = "INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (5,1,'events_block','gldefault','Events','all',4,'','','0000-00-00 00:00:00',1,'',1,2,3,3,2,2) ";
-$_DATA[] = "INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (6,1,'whats_new_block','gldefault','What\'s New','all',3,'','','0000-00-00 00:00:00',0,'',1,2,3,3,2,2) ";
-$_DATA[] = "INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (7,1,'first_block','normal','About GeekLog','homeonly',1,'<p><b>Welcome to GeekLog!</b><p>If you\'re already familiar with GeekLog - and especially if you\'re not: There have been many improvements to GeekLog since earlier versions that you might want to read up on. Please read the <a href=\"docs/changes.html\">release notes</a>. If you need help, please see the <a href=\"docs/support.html\">support options</a>.','','0000-00-00 00:00:00',0,'',4,2,3,3,2,2) ";
+$_DATA[] = "INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (1,1,'user_block','gldefault','User Functions','all',2,'','','0000-00-00 00:00:00',1,'',4,2,3,3,2,2) ";
+$_DATA[] = "INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (2,1,'admin_block','gldefault','Admins Only','all',1,'','','0000-00-00 00:00:00',1,'',4,2,3,3,2,2) ";
+$_DATA[] = "INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (3,1,'section_block','gldefault','Topics','all',0,'','','0000-00-00 00:00:00',1,'',4,2,3,3,2,2) ";
+$_DATA[] = "INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (4,1,'polls_block','phpblock','Poll','all',2,'','','0000-00-00 00:00:00',0,'phpblock_polls',4,2,3,3,2,2) ";
+$_DATA[] = "INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (5,1,'events_block','phpblock','Events','all',4,'','','0000-00-00 00:00:00',1,'phpblock_calendar',4,2,3,3,2,2) ";
+$_DATA[] = "INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (6,1,'whats_new_block','gldefault','What\'s New','all',3,'','','0000-00-00 00:00:00',0,'',4,2,3,3,2,2) ";
+$_DATA[] = "INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (7,1,'first_block','normal','About Geeklog','homeonly',1,'<p><b>Welcome to Geeklog!</b><p>If you\'re already familiar with Geeklog - and especially if you\'re not: There have been many improvements to Geeklog since earlier versions that you might want to read up on. Please read the <a href=\"docs/changes.html\">release notes</a>. If you need help, please see the <a href=\"docs/support.html\">support options</a>.','','0000-00-00 00:00:00',0,'',4,2,3,3,2,2) ";
 $_DATA[] = "INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (8,1,'whosonline_block','phpblock','Who\'s Online','all',0,'','','0000-00-00 00:00:00',0,'phpblock_whosonline',4,2,3,3,2,2) ";
-$_DATA[] = "INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (9,1,'older_stories','gldefault','Older Stories','all',5,'','','0000-00-00 00:00:00',1,'',1,2,3,3,2,2) ";
-$_DATA[] = "INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (10,1,'security_check','phpblock','Are you secure?','homeonly',3,'','','0000-00-00 00:00:00',1,'phpblock_getBent',1,2,3,3,0,0) ";
+$_DATA[] = "INSERT INTO {$_TABLES['blocks']} (bid, is_enabled, name, type, title, tid, blockorder, content, rdfurl, rdfupdated, onleft, phpblockfn, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES (9,1,'older_stories','gldefault','Older Stories','all',5,'','','0000-00-00 00:00:00',1,'',4,2,3,3,2,2) ";
 
 $_DATA[] = "INSERT INTO {$_TABLES['commentcodes']} (code, name) VALUES (0,'Comments Enabled') ";
 $_DATA[] = "INSERT INTO {$_TABLES['commentcodes']} (code, name) VALUES (-1,'Comments Disabled') ";
@@ -745,20 +750,23 @@
 $_DATA[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (17,'%d/%m/%y %H:%M','21/03/99 22:00') ";
 $_DATA[] = "INSERT INTO {$_TABLES['dateformats']} (dfid, format, description) VALUES (18,'%a %d %b %I:%M%p','Sun 21 Mar 10:00PM') ";
 
-$_DATA[] = "INSERT INTO {$_TABLES['eventsubmission']} (eid, title, description, location, datestart, dateend, url, allday, zipcode, state, city, address2, address1, event_type, timestart, timeend) VALUES ('2005100114064662','Geeklog installed','Today, you successfully installed this Geeklog site.','Your webserver',CURDATE(),CURDATE(),'http://www.geeklog.net/',1,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL) ";
+$_DATA[] = "INSERT INTO {$_TABLES['eventsubmission']} (eid, title, description, location, datestart, dateend, url, allday, zipcode, state, city, address2, address1, event_type, timestart, timeend) VALUES ('2006051410130162','Geeklog installed','Today, you successfully installed this Geeklog site.','Your webserver',CURDATE(),CURDATE(),'http://www.geeklog.net/',1,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL) ";
 
 $_DATA[] = "INSERT INTO {$_TABLES['featurecodes']} (code, name) VALUES (0,'Not Featured') ";
 $_DATA[] = "INSERT INTO {$_TABLES['featurecodes']} (code, name) VALUES (1,'Featured') ";
 
 $_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (1,'story.edit','Access to story editor',1) ";
 $_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (2,'story.moderate','Ability to moderate pending stories',1) ";
+$_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (3,'links.moderate','Ability to moderate pending links',0) ";
+$_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (4,'links.edit','Access to links editor',0) ";
 $_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (5,'user.edit','Access to user editor',1) ";
 $_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (6,'user.delete','Ability to delete a user',1) ";
 $_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (7,'user.mail','Ability to send email to members',1) ";
-$_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (8,'event.moderate','Ability to moderate pending events',1) ";
-$_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (9,'event.edit','Access to event editor',1) ";
+$_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (8,'calendar.moderate','Ability to moderate pending events',1) ";
+$_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (9,'calendar.edit','Access to event editor',1) ";
 $_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (10,'block.edit','Access to block editor',1) ";
 $_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (11,'topic.edit','Access to topic editor',1) ";
+$_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (12,'polls.edit','Access to polls editor',0) ";
 $_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (13,'plugin.edit','Access to plugin editor',1) ";
 $_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (14,'group.edit','Ability to edit groups',1) ";
 $_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (15,'group.delete','Ability to delete groups',1) ";
@@ -766,14 +774,12 @@
 $_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (17,'staticpages.edit','Ability to edit a static page',0) ";
 $_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (18,'staticpages.delete','Ability to delete static pages',0) ";
 $_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (19,'story.submit','May skip the story submission queue',1) ";
-$_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (21,'event.submit','May skip the event submission queue',1) ";
+$_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (20,'links.submit','May skip the links submission queue',0) ";
+$_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (21,'calendar.submit','May skip the event submission queue',1) ";
 $_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (22,'staticpages.PHP','Ability use PHP in static pages',0) ";
 $_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (23,'spamx.admin', 'Full access to Spam-X plugin', 0) ";
 $_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (24,'story.ping', 'Ability to send pings, pingbacks, or trackbacks for stories', 1) ";
-$_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (3,'links.moderate','Ability to moderate pending links',0) ";
-$_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (4,'links.edit','Access to links editor',0) ";
-$_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (20,'links.submit','May skip the links submission queue',0) ";
-$_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (12,'polls.edit','Access to polls editor',0) ";
+$_DATA[] = "INSERT INTO {$_TABLES['features']} (ft_id, ft_name, ft_descr, ft_gl_core) VALUES (25,'syndication.edit', 'Access to Content Syndication', 1) ";
 
 $_DATA[] = "INSERT INTO {$_TABLES['frontpagecodes']} (code, name) VALUES (0,'Show Only in Topic') ";
 $_DATA[] = "INSERT INTO {$_TABLES['frontpagecodes']} (code, name) VALUES (1,'Show on Front Page') ";
@@ -816,6 +822,7 @@
 $_DATA[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (1,2,NULL) ";
 $_DATA[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (14,NULL,1) ";
 $_DATA[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (15,NULL,1) ";
+$_DATA[] = "INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES (17,NULL,1) ";
 
 $_DATA[] = "INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (1,'Root','Has full access to the site',1) ";
 $_DATA[] = "INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (2,'All Users','Group that a typical user is added to',1) ";
@@ -823,7 +830,7 @@
 $_DATA[] = "INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (4,'Block Admin','Has full access to block features',1) ";
 $_DATA[] = "INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (5,'Links Admin','Has full access to links features',0) ";
 $_DATA[] = "INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (6,'Topic Admin','Has full access to topic features',1) ";
-$_DATA[] = "INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (7,'Event Admin','Has full access to event features',1) ";
+$_DATA[] = "INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (7,'Calendar Admin','Has full access to calendar features',0) ";
 $_DATA[] = "INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (8,'Polls Admin','Has full access to polls features',0) ";
 $_DATA[] = "INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (9,'User Admin','Has full access to user features',1) ";
 $_DATA[] = "INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (10,'Plugin Admin','Has full access to plugin features',1) ";
@@ -833,25 +840,26 @@
 $_DATA[] = "INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (14,'Static Page Admin','Can administer static pages',0) ";
 $_DATA[] = "INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (15,'spamx Admin', 'Users in this group can administer the Spam-X plugin',0) ";
 $_DATA[] = "INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (16,'Remote Users', 'Users in this group can have authenticated against a remote server.',1) ";
+$_DATA[] = "INSERT INTO {$_TABLES['groups']} (grp_id, grp_name, grp_descr, grp_gl_core) VALUES (17,'Syndication Admin', 'Can create and modify web feeds for the site',1) ";
 
 $_DATA[] = "INSERT INTO {$_TABLES['links']} (lid, category, url, description, title, date, owner_id, group_id) VALUES ('geeklog.net','Geeklog Sites','http://www.geeklog.net/','Visit the Geeklog homepage for support, FAQs, updates, add-ons, and a great community.','Geeklog Project Homepage',NOW(),1,5)";
-$_DATA[] = "INSERT INTO {$_TABLES['linksubmission']} (lid, category, url, description, title, date) VALUES ('geeklog-announce','Geeklog Sites','http://lists.geeklog.net/mailman/listinfo/geeklog-announce','Subscribe to the Geeklog Announcements mailing list to stay up to date on new Geeklog releases.','Geeklog Announcements Mailing List',NOW())";
 
 $_DATA[] = "INSERT INTO {$_TABLES['maillist']} (code, name) VALUES (0,'Don\'t Email') ";
 $_DATA[] = "INSERT INTO {$_TABLES['maillist']} (code, name) VALUES (1,'Email Headlines Each Night') ";
 
 $_DATA[] = "INSERT INTO {$_TABLES['pingservice']} (pid, name, site_url, ping_url, method, is_enabled) VALUES (1, 'Ping-O-Matic', 'http://pingomatic.com/', 'http://rpc.pingomatic.com/', 'weblogUpdates.ping', 1)";
 
-$_DATA[] = "INSERT INTO {$_TABLES['plugins']} (pi_name, pi_version, pi_gl_version, pi_enabled, pi_homepage) VALUES ('staticpages', '1.4.2','1.4.0',1,'http://www.geeklog.net/') ";
-$_DATA[] = "INSERT INTO {$_TABLES['plugins']} (pi_name, pi_version, pi_gl_version, pi_enabled, pi_homepage) VALUES ('spamx', '1.0.3','1.4.0',1,'http://www.pigstye.net/gplugs/staticpages/index.php/spamx') ";
-$_DATA[] = "INSERT INTO {$_TABLES['plugins']} (pi_name, pi_version, pi_gl_version, pi_enabled, pi_homepage) VALUES ('links', '1.0', '1.4.0', 1, 'http://www.geeklog.net/')";
-$_DATA[] = "INSERT INTO {$_TABLES['plugins']} (pi_name, pi_version, pi_gl_version, pi_enabled, pi_homepage) VALUES ('polls', '1.0', '1.4.0', '1', 'http://www.geeklog.net/')";
-
-$_DATA[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',1,'Trackbacks',0)";
-$_DATA[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',2,'Links and Polls plugins',0)";
-$_DATA[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',3,'Revamped admin areas',0)";
-$_DATA[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',4,'FCKeditor included',0)";
-$_DATA[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',5,'Remote user authentication',0)";
+$_DATA[] = "INSERT INTO {$_TABLES['plugins']} (pi_name, pi_version, pi_gl_version, pi_enabled, pi_homepage) VALUES ('staticpages', '1.4.3','1.4.1',1,'http://www.geeklog.net/') ";
+$_DATA[] = "INSERT INTO {$_TABLES['plugins']} (pi_name, pi_version, pi_gl_version, pi_enabled, pi_homepage) VALUES ('spamx', '1.1.0','1.4.1',1,'http://www.pigstye.net/gplugs/staticpages/index.php/spamx') ";
+$_DATA[] = "INSERT INTO {$_TABLES['plugins']} (pi_name, pi_version, pi_gl_version, pi_enabled, pi_homepage) VALUES ('links', '1.0.1', '1.4.1', 1, 'http://www.geeklog.net/')";
+$_DATA[] = "INSERT INTO {$_TABLES['plugins']} (pi_name, pi_version, pi_gl_version, pi_enabled, pi_homepage) VALUES ('polls', '1.1.0', '1.4.1', '1', 'http://www.geeklog.net/')";
+$_DATA[] = "INSERT INTO {$_TABLES['plugins']} (pi_name, pi_version, pi_gl_version, pi_enabled, pi_homepage) VALUES ('calendar', '1.0.0', '1.4.1', '1', 'http://www.geeklog.net/')";
+
+$_DATA[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',1,'MS SQL support',0)";
+$_DATA[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',2,'Multi-language support',0)";
+$_DATA[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',3,'Calendar as a plugin',0)";
+$_DATA[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',4,'SLV spam protection',0)";
+$_DATA[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',5,'Mass-delete users',0)";
 $_DATA[] = "INSERT INTO {$_TABLES['pollanswers']} (qid, aid, answer, votes) VALUES ('geeklogfeaturepoll',6,'Other',0)";
 
 $_DATA[] = "INSERT INTO {$_TABLES['pollquestions']} (qid, question, voters, date, display, commentcode, statuscode, owner_id, group_id, perm_owner, perm_group) VALUES ('geeklogfeaturepoll','What is the best new feature of Geeklog?',0,NOW(),1,0,0,2,8,3,3) ";
@@ -866,14 +874,14 @@
 $_DATA[] = "INSERT INTO {$_TABLES['statuscodes']} (code, name) VALUES (0,'Normal') ";
 $_DATA[] = "INSERT INTO {$_TABLES['statuscodes']} (code, name) VALUES (10,'Archive') ";
 
-$_DATA[] = "INSERT INTO {$_TABLES['stories']} (sid, uid, draft_flag, tid, date, title, introtext, bodytext, hits, numemails, comments, related, featured, commentcode, statuscode, postmode, frontpage, owner_id, group_id, perm_owner, perm_group, perm_members, perm_anon) VALUES ('welcome',2,0,'GeekLog',NOW(),'Welcome to Geeklog!','<p>Welcome and let me be the first to congratulate you on installing GeekLog. Please take the time to read everything in the <a href=\"docs/index.html\">docs directory</a>. Geeklog now has enhanced, user-based security.  You should thoroughly understand how these work before you run a production Geeklog Site.\r\r<p>To log into your new GeekLog site, please use this account:\r<p>Username: <b>Admin</b><br>\rPassword: <b>password</b>','<p><b>And don\'t forget to change your password after logging in!</b>',100,1,0,'',1,0,0,'html',1,2,3,3,2,2,2) ";
+$_DATA[] = "INSERT INTO {$_TABLES['stories']} (sid, uid, draft_flag, tid, date, title, introtext, bodytext, hits, numemails, comments, related, featured, commentcode, statuscode, postmode, frontpage, owner_id, group_id, perm_owner, perm_group, perm_members, perm_anon) VALUES ('welcome',2,0,'Geeklog',NOW(),'Welcome to Geeklog!','<p>Welcome and let me be the first to congratulate you on installing Geeklog. Please take the time to read everything in the <a href=\"docs/index.html\">docs directory</a>. Geeklog now has enhanced, user-based security.  You should thoroughly understand how these work before you run a production Geeklog Site.\r\r<p>To log into your new Geeklog site, please use this account:\r<p>Username: <b>Admin</b><br>\rPassword: <b>password</b>','<p><b>And don\'t forget to change your password after logging in!</b>',100,1,0,'',1,0,0,'html',1,2,3,3,2,2,2) ";
 
-$_DATA[] = "INSERT INTO {$_TABLES['storysubmission']} (sid, uid, tid, title, introtext, date, postmode) VALUES ('security-reminder',2,'GeekLog','Are you secure?','<p>This is a reminder to secure your site once you have Geeklog up and running. What you should do:</p>\r\r<ol>\r<li>Change the default password for the Admin account.</li>\r<li>Remove the install directory (you won\'t need it any more).</li>\r</ol>',NOW(),'html') ";
+$_DATA[] = "INSERT INTO {$_TABLES['storysubmission']} (sid, uid, tid, title, introtext, date, postmode) VALUES ('security-reminder',2,'Geeklog','Are you secure?','<p>This is a reminder to secure your site once you have Geeklog up and running. What you should do:</p>\r\r<ol>\r<li>Change the default password for the Admin account.</li>\r<li>Remove the install directory (you won\'t need it any more).</li>\r</ol>',NOW(),'html') ";
 
-$_DATA[] = "INSERT INTO {$_TABLES['syndication']} (type, topic, header_tid, format, limits, content_length, title, description, filename, charset, language, is_enabled, updated, update_info) VALUES ('geeklog', '::all', 'all', 'RSS-2.0', 10, 1, 'Geeklog Site', 'Another Nifty Geeklog Site', 'geeklog.rss', 'UTF-8', 'en-gb', 1, '0000-00-00 00:00:00', NULL)";
+$_DATA[] = "INSERT INTO {$_TABLES['syndication']} (type, topic, header_tid, format, limits, content_length, title, description, filename, charset, language, is_enabled, updated, update_info) VALUES ('geeklog', '::all', 'all', 'RSS-2.0', 10, 1, 'Geeklog Site', 'Another Nifty Geeklog Site', 'geeklog.rss', 'iso-8859-1', 'en-gb', 1, '0000-00-00 00:00:00', NULL)";
 
 $_DATA[] = "INSERT INTO {$_TABLES['topics']} (tid, topic, imageurl, sortnum, limitnews, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES ('General','General News','/images/topics/topic_news.gif',1,10,6,2,3,2,2,2)";
-$_DATA[] = "INSERT INTO {$_TABLES['topics']} (tid, topic, imageurl, sortnum, limitnews, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES ('GeekLog','GeekLog','/images/topics/topic_gl.gif',2,10,6,2,3,2,2,2)";
+$_DATA[] = "INSERT INTO {$_TABLES['topics']} (tid, topic, imageurl, sortnum, limitnews, group_id, owner_id, perm_owner, perm_group, perm_members, perm_anon) VALUES ('Geeklog','Geeklog','/images/topics/topic_gl.gif',2,10,6,2,3,2,2,2)";
 
 $_DATA[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('ndt',-9000,'Newfoundland Daylight') ";
 $_DATA[] = "INSERT INTO {$_TABLES['tzcodes']} (tz, offset, description) VALUES ('adt',-10800,'Atlantic Daylight') ";
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/sql/updates/mysql_1.3.9_to_1.3.10.php 1.4.1.src/cpanel-glprivate/sql/updates/mysql_1.3.9_to_1.3.10.php
--- 1.4.0sr5-1.src/cpanel-glprivate/sql/updates/mysql_1.3.9_to_1.3.10.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/sql/updates/mysql_1.3.9_to_1.3.10.php	2006-09-06 00:31:01.000000000 -0500
@@ -6,25 +6,25 @@
 
     // start with the right terminal value = left terminal value + 1
     $right = $left + 1;
-    
+
     //foreach child (if any) run the recursive function
     if ( isset( $tP['children'] ))
     {
-	    while( list( $k, $A ) = each( $tP['children'] ) )
-    	{
-        	//DEBUG: print("calling recurisive($k, $right)\n");
-        	$right = commentsToPreorderTreeHelper($A, $right, $indent + 1);
-        	$right++;   
-    	}
+        while( list( $k, $A ) = each( $tP['children'] ) )
+        {
+            //DEBUG: print("calling recurisive($k, $right)\n");
+            $right = commentsToPreorderTreeHelper($A, $right, $indent + 1);
+            $right++;
+        }
     }
-    
+
     //Update the comment, set lft = $left and rht = return value + 1
     $q = "UPDATE {$_TABLES['comments']} SET lft = $left, rht = $right, "
        . "indent = $indent WHERE cid = " . $tP['cid'];
     DB_query($q);
-    
+
     //DEBUG: print $q."<br>";
-    
+
     //return right
     return $right;
 }
@@ -32,7 +32,7 @@
 function commentsToPreorderTree()
 {
     global $_TABLES;
-    
+
     // Get all the unique sid's from the database
     $q = "SELECT sid FROM {$_TABLES['comments']} group by sid";
     $result = DB_query($q);
@@ -42,45 +42,45 @@
     while ( $A = DB_fetchArray($result) )
     {
         // build a tree
-    	$aP = array();
-    	$tP = array();
-    	
+        $aP = array();
+        $tP = array();
+
         // grab comments associated with the current 'sid'
         $qC = "SELECT cid,pid FROM {$_TABLES['comments']} "
-           	. "WHERE sid = '{$A['sid']}' ORDER BY cid ASC";
-        $rC = DB_query( $qC ); 
-        
+            . "WHERE sid = '{$A['sid']}' ORDER BY cid ASC";
+        $rC = DB_query( $qC );
+
         // put the comments in a usefull array
         while ( $dC = DB_fetchArray( $rC ) )
         {
-        	if ( $dC['pid'] == 0 )
-        	{
-        		// Root comment
-        		$tP[$dC['cid']] = $dC;
-        		$aP[$dC['cid']] =& $tP[$dC['cid']];
-        	}
-        	else
-        	{
-        		// Child comment
-        		$aP[$dC['pid']]['children'][$dC['cid']] = $dC;
-       			$aP[$dC['cid']] =& $aP[$dC['pid']]['children'][$dC['cid']];	
-       		}
+            if ( $dC['pid'] == 0 )
+            {
+                // Root comment
+                $tP[$dC['cid']] = $dC;
+                $aP[$dC['cid']] =& $tP[$dC['cid']];
+            }
+            else
+            {
+                // Child comment
+                $aP[$dC['pid']]['children'][$dC['cid']] = $dC;
+                $aP[$dC['cid']] =& $aP[$dC['pid']]['children'][$dC['cid']];
+            }
         }
-        
+
         unset ($aP);
-        
+
         // initialize left terminal value, this starts with 1 for every
         //   set of comments associated with a 'sid'
         $left = 1;
-        
+
         // Foreach toplevel comment run the recursive funtion
         while( list( $k, $B ) = each( $tP ) )
         {
-        	//DEBUG: print("calling recurisive({$B['cid']}, $left)\n");
+            //DEBUG: print("calling recurisive({$B['cid']}, $left)\n");
             $left = commentsToPreorderTreeHelper($B, $left);
-            $left++;   
+            $left++;
         }
-        
+
         /* Print results to error log for DEBUGing
          * $left = ($left-1)/2;
          * COM_errorLog("$left comments in story {$A['sid']} converted");
@@ -139,7 +139,7 @@
 // make sure old links have a proper owner (user "anonymous")
 $_SQL[] = "UPDATE {$_TABLES['links']} SET owner_id = 1 WHERE owner_id = 0";
 
-// Add new fields for Story Archive feature 
+// Add new fields for Story Archive feature
 $_SQL[] = "ALTER TABLE {$_TABLES['stories']} ADD expire DATETIME NOT NULL AFTER statuscode";
 $_SQL[] = "ALTER TABLE {$_TABLES['topics']} ADD archive_flag tinyint(1) unsigned NOT NULL DEFAULT '0' AFTER is_default";
 
@@ -163,7 +163,7 @@
 $_SQL[] = "ALTER TABLE {$_TABLES['stories']} CHANGE sid sid varchar(40) NOT NULL";
 $_SQL[] = "ALTER TABLE {$_TABLES['article_images']} CHANGE ai_sid ai_sid varchar(40) NOT NULL";
 
-// Add new location fields to the userinfo table 
+// Add new location fields to the userinfo table
 $_SQL[] = "ALTER TABLE {$_TABLES['userinfo']} ADD location VARCHAR(96) NOT NULL AFTER about";
 
 /**
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/sql/updates/mysql_1.4.0_to_1.4.1.php 1.4.1.src/cpanel-glprivate/sql/updates/mysql_1.4.0_to_1.4.1.php
--- 1.4.0sr5-1.src/cpanel-glprivate/sql/updates/mysql_1.4.0_to_1.4.1.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/sql/updates/mysql_1.4.0_to_1.4.1.php	2006-12-21 09:38:53.000000000 -0600
@@ -0,0 +1,100 @@
+<?php
+
+// new 'syndication.edit' feature
+$_SQL[] = "INSERT INTO {$_TABLES['features']} (ft_name, ft_descr, ft_gl_core) VALUES ('syndication.edit', 'Access to Content Syndication', 1)";
+
+// add the 'Syndication Admin' group
+$_SQL[] = "INSERT INTO {$_TABLES['groups']} (grp_name, grp_descr, grp_gl_core) VALUES ('Syndication Admin', 'Can create and modify web feeds for the site',1) ";
+
+// update plugin version numbers
+$_SQL[] = "UPDATE {$_TABLES['plugins']} SET pi_version = '1.0.1', pi_gl_version = '1.4.1' WHERE pi_name = 'links'";
+$_SQL[] = "UPDATE {$_TABLES['plugins']} SET pi_version = '1.1.0', pi_gl_version = '1.4.1' WHERE pi_name = 'polls'";
+$_SQL[] = "UPDATE {$_TABLES['plugins']} SET pi_version = '1.1.0', pi_gl_version = '1.4.1' WHERE pi_name = 'spamx'";
+$_SQL[] = "UPDATE {$_TABLES['plugins']} SET pi_version = '1.4.3', pi_gl_version = '1.4.1' WHERE pi_name = 'staticpages'";
+
+// Calendar plugin
+$_SQL[] = "INSERT INTO {$_TABLES['plugins']} (pi_name, pi_version, pi_gl_version, pi_enabled, pi_homepage) VALUES ('calendar', '1.0.0', '1.4.1', 1, 'http://www.geeklog.net/')";
+$_SQL[] = "UPDATE {$_TABLES['features']} SET ft_name = 'calendar.edit', ft_gl_core = '0' WHERE ft_name = 'event.edit'";
+$_SQL[] = "UPDATE {$_TABLES['features']} SET ft_name = 'calendar.moderate', ft_gl_core = '0' WHERE ft_name = 'event.moderate'";
+$_SQL[] = "UPDATE {$_TABLES['features']} SET ft_name = 'calendar.submit', ft_gl_core = '0' WHERE ft_name = 'event.submit'";
+$_SQL[] = "UPDATE {$_TABLES['groups']} SET grp_name = 'Calendar Admin', grp_gl_core = '0' WHERE grp_name = 'Event Admin'";
+$_SQL[] = "UPDATE {$_TABLES['blocks']} SET type = 'phpblock', phpblockfn ='phpblock_calendar' WHERE name = 'events_block'";
+
+// add new field to the stories table to indicate story was created or last updated using the advanced editor
+$_SQL[] = "ALTER TABLE {$_TABLES['stories']} ADD advanced_editor_mode tinyint(1) unsigned default '0' AFTER postmode";
+
+// add new field to enable/disable use of autotags in "normal" blocks
+$_SQL[] = "ALTER TABLE {$_TABLES['blocks']} ADD allow_autotags tinyint(1) unsigned NOT NULL DEFAULT '0' AFTER content";
+
+// allow up to 255 characters for the help URL
+$_SQL[] = "ALTER TABLE {$_TABLES['blocks']} CHANGE help help varchar(255) default ''";
+
+// set regdate to a valid date for users in a really old (pre-1.3) database
+$_SQL[] = "UPDATE {$_TABLES['users']} SET regdate = '2001-12-17 00:00:00' WHERE regdate = '0000-00-00 00:00:00'";
+
+// add the new 'syndication.edit' feature and the 'Syndication Admin' group
+function upgrade_addSyndicationFeature ()
+{
+    global $_TABLES;
+
+    $ft_id = DB_getItem ($_TABLES['features'], 'ft_id',
+                         "ft_name = 'syndication.edit'");
+    $grp_id = DB_getItem ($_TABLES['groups'], 'grp_id',
+                          "grp_name = 'Syndication Admin'");
+    $rootgrp = DB_getItem ($_TABLES['groups'], 'grp_id',
+                           "grp_name = 'Root'");
+
+    if(($grp_id > 0) && ($ft_id > 0)) {
+        // add 'syndication.edit' feature to 'Syndication Admin' group
+        DB_query ("INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES ($ft_id, $grp_id)");
+
+        // make 'Root' members a member of 'Syndication Admin'
+        if($rootgrp > 0) {
+            DB_query ("INSERT INTO {$_TABLES['group_assignments']} (ug_main_grp_id, ug_uid, ug_grp_id) VALUES ($grp_id, NULL, $rootgrp)");
+        }
+    }
+}
+
+// The 'last_scheduled_run' entry was introduced in Geeklog 1.4.0 but was
+// missing from the upgrade, i.e. it exists only on fresh 1.4.0 installs.
+function upgrade_ensureLastScheduledRunFlag ()
+{
+    global $_TABLES;
+
+    $val = DB_getItem ($_TABLES['vars'], 'value',
+                       "name = 'last_scheduled_run'");
+    if (empty ($val)) {
+        DB_save ($_TABLES['vars'], 'name,value', "'last_scheduled_run',''");
+    }
+}
+
+// update plugins if they're installed (disabled or not)
+function upgrade_plugins_141 ()
+{
+    global $_TABLES;
+
+    // add remarks-field to polls
+    if (DB_count ($_TABLES['plugins'], 'pi_name', 'polls') == 1) {
+        DB_query ("ALTER TABLE {$_TABLES['pollanswers']} ADD remark varchar(255) NULL AFTER votes");
+    }
+
+    if (DB_count ($_TABLES['plugins'], 'pi_name', 'spamx') == 1) {
+        // delete MT-Blacklist entries from Spam-X plugin
+        DB_query ("DELETE FROM {$_TABLES['spamx']} WHERE name = 'MTBlacklist'");
+
+        // the count of deleted spams was introduced in 1.4.0 but not added
+        // when upgrading from an older database, so add it now if it's missing
+        $val = DB_getItem ($_TABLES['vars'], 'value', "name = 'spamx.counter'");
+        if (empty ($val)) {
+            DB_save ($_TABLES['vars'], 'name,value', "'spamx.counter','0'");
+        }
+    }
+
+    // add field to support advanced editor and a help link in staticpages
+    if (DB_count ($_TABLES['plugins'], 'pi_name', 'staticpages') == 1) {
+        DB_query ("ALTER TABLE {$_TABLES['staticpage']} ADD postmode varchar(16) DEFAULT 'html' NOT NULL AFTER sp_inblock");
+        DB_query ("ALTER TABLE {$_TABLES['staticpage']} ADD sp_help varchar(255) default '' AFTER sp_centerblock");
+    }
+}
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/classes/authentication/Blogger.auth.class.php 1.4.1.src/cpanel-glprivate/system/classes/authentication/Blogger.auth.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/classes/authentication/Blogger.auth.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/classes/authentication/Blogger.auth.class.php	2006-09-06 00:31:01.000000000 -0500
@@ -29,7 +29,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: Blogger.auth.class.php,v 1.4 2005/10/02 17:44:44 mjervis Exp $
+// $Id: Blogger.auth.class.php,v 1.5 2006/09/06 05:31:01 ospiess Exp $
 
 // PEAR class to handle XML-RPC
 require_once ('XML/RPC.php');
@@ -42,12 +42,12 @@
     {
         $email = '';
         $message = new XML_RPC_Message('blogger.getUserInfo',
-								array(
-    								new XML_RPC_Value('XXXXXXXXXXXX', 'string'),
-									new XML_RPC_Value($username, 'string'),
-									new XML_RPC_Value($password, 'string')
-								)
-												);
+                                array(
+                                    new XML_RPC_Value('XXXXXXXXXXXX', 'string'),
+                                    new XML_RPC_Value($username, 'string'),
+                                    new XML_RPC_Value($password, 'string')
+                                )
+                                                );
         $client = new XML_RPC_Client('/api/', 'www.blogger.com', 80);
         $result = $client->send($message, 5, 'http');
         if ($result && ($result->faultString() == '')) {
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/classes/calendar.class.php 1.4.1.src/cpanel-glprivate/system/classes/calendar.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/classes/calendar.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/classes/calendar.class.php	2006-05-14 12:58:52.000000000 -0500
@@ -32,14 +32,14 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: calendar.class.php,v 1.6 2005/11/14 09:22:04 dhaun Exp $
+// $Id: calendar.class.php,v 1.8 2006/05/14 17:58:52 ospiess Exp $
 
 /**
 * This file contains the two classes used to help support the calendar pages.
 * Please note that our calendar code is in shambles and is hard to understand.
-* Not so much this file as calendar.php and calendar_event.php.  Those files
-* along with this class need to be reworked to be easier to maintain and
-* support rich calendaring features
+* Not so much this file as /calendar/index.php and calendar/event.php.  
+* Those files along with this class need to be reworked to be easier 
+* to maintain and support rich calendaring features
 *
 * @author   Tony Bibbs  <tony@tonybibbs.com>
 */
@@ -160,7 +160,7 @@
     * Initializes calendar object
     *
     */
-    function Calender()
+    function Calendar()
     {
         $this->setRollingMode(false);
         $dateArray = getdate(time());
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/classes/conversion.class.php 1.4.1.src/cpanel-glprivate/system/classes/conversion.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/classes/conversion.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/classes/conversion.class.php	2006-09-06 00:31:01.000000000 -0500
@@ -30,15 +30,15 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: conversion.class.php,v 1.1 2004/06/04 21:46:12 tony Exp $
+// $Id: conversion.class.php,v 1.2 2006/09/06 05:31:01 ospiess Exp $
 
 class conversion
 {
 
-	/**
-	* @var string
-	*/
-	var $html = null;
+    /**
+    * @var string
+    */
+    var $html = null;
 
     /**
     *
@@ -48,10 +48,10 @@
     * @return null
     *
     */
-	function addHtml($content)
-	{
-		$this->html = $this->html . $content;
-	}
+    function addHtml($content)
+    {
+        $this->html = $this->html . $content;
+    }
 
     /**
     *
@@ -64,86 +64,86 @@
     function convert($opt,$opt2=''){
         global $formloader, $_CONF;
 
-		// Need to use global HTML element
+        // Need to use global HTML element
         $file = $this->html;
-		if (is_array($file)) {
-			$file = implode('',$file);
-		}
+        if (is_array($file)) {
+            $file = implode('',$file);
+        }
 
         preg_match_all("|<\?=(.*?)\?>|U",$file,$out);
-		for($i=0; $i < count($out[0]); $i++) {
-			eval('$temp=' . $out[1][$i] . ';');
-			$file = str_replace($out[0][$i], stripslashes($temp), $file);
-		}
+        for($i=0; $i < count($out[0]); $i++) {
+            eval('$temp=' . $out[1][$i] . ';');
+            $file = str_replace($out[0][$i], stripslashes($temp), $file);
+        }
 
         if ($opt == 1) {
 
-			$file=str_replace("=\"","1!ZYOUNK!1",$file);
-	
-			$formvert['IEhackedhtml'][1]='/\=(.*?)\>/i';
-			$formvert['IEhackedhtml'][2]='="\\1">';
-			$file = preg_replace($formvert['IEhackedhtml'][1],$formvert['IEhackedhtml'][2],$file);
-	
-			$file=str_replace("=\"","1!ZYOUNK!1",$file);
-	
-			$formvert['IEhackedhtml'][1]='/\=(.*?) /i';
-			$formvert['IEhackedhtml'][2]='="\\1" ';
-			$file = preg_replace($formvert['IEhackedhtml'][1],$formvert['IEhackedhtml'][2],$file);
-			
-			$file=str_replace("1!ZYOUNK!1","=\"",$file);
-	
-			$formvert['optsel'][1]='/<input(.*)type=\"radio\"(.*)value=\"(.*)\"(.*)(SELECTED|CHECKED)(.*)>(.*)<\/input>/i';
-			$formvert['optsel'][2]='<input\\1 type="hidden"\\2 value="\\3"><img src="'.$_CONF['host'].$_CONF['urlpath'].'../images/rchecked.gif"><B>\\7</B>';
-			$file = preg_replace($formvert['optsel'][1],$formvert['optsel'][2],$file);
-	
-			$formvert['optsel'][1]='/<input(.*)type=\"checkbox\"(.*)value=\"(.*)\"(.*)(SELECTED|CHECKED)(.*)>(.*)<\/input>/i';
-			$formvert['optsel'][2]='<input\\1 type="hidden"\\2 value="\\3"><img src="'.$_CONF['host'].$_CONF['urlpath'].'../images/checked.gif"><B>\\7</B>';
-			$file = preg_replace($formvert['optsel'][1],$formvert['optsel'][2],$file);
-	
-			$formvert['optnonsel'][1]='/<input(.*)type="radio"(.*)value="(.*)"(.*)>(.*)<\/input>/i';
-			$formvert['optnonsel'][2]='<img src="'.$_CONF['host'].$_CONF['urlpath'].'../images/runchecked.gif">\\5';
-			$file = preg_replace($formvert['optnonsel'][1],$formvert['optnonsel'][2],$file);
-	
-			$formvert['optnonsel'][1]='/<input(.*)type="checkbox"(.*)value="(.*)"(.*)>(.*)<\/input>/i';
-			$formvert['optnonsel'][2]='<img src="'.$_CONF['host'].$_CONF['urlpath'].'../images/unchecked.gif">\\5';
-			$file = preg_replace($formvert['optnonsel'][1],$formvert['optnonsel'][2],$file);
-	
-			$formvert['textarea'][1]='/<textarea(.*?)name="(.*?)"(.*?)>(.*?)<\/textarea>/is';
-			$formvert['textarea'][2]='<input type="hidden" name="\\2" value="\\4"><table border=1 class="borderon" cellpadding="1"\\3><tr><td idx>\\4</td></tr></table>';
-			$file = preg_replace($formvert['textarea'][1],$formvert['textarea'][2],$file);
-	
-			$formvert['textarea'][1]='/<select(.*?)name="(.*?)"(.*?)>(.*?)<option value="(.*?)"\ (CHECKED|SELECTED)>(.*?)<\/option>(.*?)<\/select>/is';
-			$formvert['textarea'][2]='<input type="hidden" name="\\2" value="\\5">';
-			$formvert['textarea'][2].='<table bgcolor="#eeeeee" cellpadding="-1" border="1"><tr><td>';
-			$formvert['textarea'][2].='&nbsp;&nbsp;\\7&nbsp;</td><td><img src="'.$_CONF['host'].$_CONF['urlpath'].'../images/selectbox.gif">';
-			$formvert['textarea'][2].='</td></tr></table>';
-			$file = preg_replace($formvert['textarea'][1],$formvert['textarea'][2],$file);
-	
-	
-			$formvert['textarea2'][1]='/<select(.*?)>(.*?)<\/select>/is';
-			$formvert['textarea2'][2]='<table bgcolor="#eeeeee" cellpadding="-1" border="1"><tr><td>';
-			$formvert['textarea2'][2].='&nbsp;&nbsp;None&nbsp;</td><td><img src="'.$_CONF['host'].$_CONF['urlpath'].'../images/selectbox.gif">';
-			$formvert['textarea2'][2].='</td></tr></table>';
-			$file = preg_replace($formvert['textarea2'][1],$formvert['textarea2'][2],$file);
-
-			preg_match_all('/<td\ idx>(.*?)<\/td>/is',$file,$matches);
-			for($l=0;$l<count($matches[1]);$l++){
-				$file=str_replace($matches[1][$l],nl2br($matches[1][$l]),$file);
-			}
+            $file=str_replace("=\"","1!ZYOUNK!1",$file);
+
+            $formvert['IEhackedhtml'][1]='/\=(.*?)\>/i';
+            $formvert['IEhackedhtml'][2]='="\\1">';
+            $file = preg_replace($formvert['IEhackedhtml'][1],$formvert['IEhackedhtml'][2],$file);
+
+            $file=str_replace("=\"","1!ZYOUNK!1",$file);
+
+            $formvert['IEhackedhtml'][1]='/\=(.*?) /i';
+            $formvert['IEhackedhtml'][2]='="\\1" ';
+            $file = preg_replace($formvert['IEhackedhtml'][1],$formvert['IEhackedhtml'][2],$file);
+
+            $file=str_replace("1!ZYOUNK!1","=\"",$file);
+
+            $formvert['optsel'][1]='/<input(.*)type=\"radio\"(.*)value=\"(.*)\"(.*)(SELECTED|CHECKED)(.*)>(.*)<\/input>/i';
+            $formvert['optsel'][2]='<input\\1 type="hidden"\\2 value="\\3"><img src="'.$_CONF['host'].$_CONF['urlpath'].'../images/rchecked.gif"><B>\\7</B>';
+            $file = preg_replace($formvert['optsel'][1],$formvert['optsel'][2],$file);
+
+            $formvert['optsel'][1]='/<input(.*)type=\"checkbox\"(.*)value=\"(.*)\"(.*)(SELECTED|CHECKED)(.*)>(.*)<\/input>/i';
+            $formvert['optsel'][2]='<input\\1 type="hidden"\\2 value="\\3"><img src="'.$_CONF['host'].$_CONF['urlpath'].'../images/checked.gif"><B>\\7</B>';
+            $file = preg_replace($formvert['optsel'][1],$formvert['optsel'][2],$file);
+
+            $formvert['optnonsel'][1]='/<input(.*)type="radio"(.*)value="(.*)"(.*)>(.*)<\/input>/i';
+            $formvert['optnonsel'][2]='<img src="'.$_CONF['host'].$_CONF['urlpath'].'../images/runchecked.gif">\\5';
+            $file = preg_replace($formvert['optnonsel'][1],$formvert['optnonsel'][2],$file);
+
+            $formvert['optnonsel'][1]='/<input(.*)type="checkbox"(.*)value="(.*)"(.*)>(.*)<\/input>/i';
+            $formvert['optnonsel'][2]='<img src="'.$_CONF['host'].$_CONF['urlpath'].'../images/unchecked.gif">\\5';
+            $file = preg_replace($formvert['optnonsel'][1],$formvert['optnonsel'][2],$file);
+
+            $formvert['textarea'][1]='/<textarea(.*?)name="(.*?)"(.*?)>(.*?)<\/textarea>/is';
+            $formvert['textarea'][2]='<input type="hidden" name="\\2" value="\\4"><table border=1 class="borderon" cellpadding="1"\\3><tr><td idx>\\4</td></tr></table>';
+            $file = preg_replace($formvert['textarea'][1],$formvert['textarea'][2],$file);
+
+            $formvert['textarea'][1]='/<select(.*?)name="(.*?)"(.*?)>(.*?)<option value="(.*?)"\ (CHECKED|SELECTED)>(.*?)<\/option>(.*?)<\/select>/is';
+            $formvert['textarea'][2]='<input type="hidden" name="\\2" value="\\5">';
+            $formvert['textarea'][2].='<table bgcolor="#eeeeee" cellpadding="-1" border="1"><tr><td>';
+            $formvert['textarea'][2].='&nbsp;&nbsp;\\7&nbsp;</td><td><img src="'.$_CONF['host'].$_CONF['urlpath'].'../images/selectbox.gif">';
+            $formvert['textarea'][2].='</td></tr></table>';
+            $file = preg_replace($formvert['textarea'][1],$formvert['textarea'][2],$file);
+
+
+            $formvert['textarea2'][1]='/<select(.*?)>(.*?)<\/select>/is';
+            $formvert['textarea2'][2]='<table bgcolor="#eeeeee" cellpadding="-1" border="1"><tr><td>';
+            $formvert['textarea2'][2].='&nbsp;&nbsp;None&nbsp;</td><td><img src="'.$_CONF['host'].$_CONF['urlpath'].'../images/selectbox.gif">';
+            $formvert['textarea2'][2].='</td></tr></table>';
+            $file = preg_replace($formvert['textarea2'][1],$formvert['textarea2'][2],$file);
+
+            preg_match_all('/<td\ idx>(.*?)<\/td>/is',$file,$matches);
+            for($l=0;$l<count($matches[1]);$l++){
+                $file=str_replace($matches[1][$l],nl2br($matches[1][$l]),$file);
+            }
         }
 
-		$file=str_replace("/>", ">", $file);
-		$file=str_replace("/ >", ">", $file);
+        $file=str_replace("/>", ">", $file);
+        $file=str_replace("/ >", ">", $file);
 
         if ($opt2 == '1'){
-			$file=preg_replace('/<input(.*?)type="submit"(.*?)>/i','',$file);
+            $file=preg_replace('/<input(.*?)type="submit"(.*?)>/i','',$file);
         } else {
-			$formvert['textbox'][1]='/<input(.*?)type="submit"(.*?)value="(.*?)"(.*?)>/i';
-			$formvert['textbox'][2]='<table bgcolor="#555555" border=1 class="borderon" cellpadding="1"\\4><tr><td>';
-			$formvert['textbox'][2].='<table bgcolor="#eeeeee" border=0 class="borderon" cellpadding="0"\\4><tr><td>\\3</td></tr></table>';
-			$formvert['textbox'][2].='</td></tr></table>'; 
-			$file = preg_replace($formvert['textbox'][1],$formvert['textbox'][2],$file);
-		}
+            $formvert['textbox'][1]='/<input(.*?)type="submit"(.*?)value="(.*?)"(.*?)>/i';
+            $formvert['textbox'][2]='<table bgcolor="#555555" border=1 class="borderon" cellpadding="1"\\4><tr><td>';
+            $formvert['textbox'][2].='<table bgcolor="#eeeeee" border=0 class="borderon" cellpadding="0"\\4><tr><td>\\3</td></tr></table>';
+            $formvert['textbox'][2].='</td></tr></table>';
+            $file = preg_replace($formvert['textbox'][1],$formvert['textbox'][2],$file);
+        }
         return $file;
     }
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/classes/kses.class.php 1.4.1.src/cpanel-glprivate/system/classes/kses.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/classes/kses.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/classes/kses.class.php	2006-05-15 00:49:44.000000000 -0500
@@ -1,1162 +1,1160 @@
-<?php
-	/*
-	 * ==========================================================================================
-	 *
-	 * This program is free software and open source software; you can redistribute
-	 * it and/or modify it under the terms of the GNU General Public License as
-	 * published by the Free Software Foundation; either version 2 of the License,
-	 * or (at your option) any later version.
-	 *
-	 * This program is distributed in the hope that it will be useful, but WITHOUT
-	 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-	 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-	 * more details.
-	 *
-	 * You should have received a copy of the GNU General Public License along
-	 * with this program; if not, write to the Free Software Foundation, Inc.,
-	 * 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  or visit
-	 * http://www.gnu.org/licenses/gpl.html
-	 *
-	 * ==========================================================================================
-	 */
-
-	/**
-	*	Class file for PHP4 OOP version of kses
-	*
-	*	This is an updated version of kses to work with PHP4 that works under E_STRICT.
-	*
-	*	This upgrade provides the following:
-	*	+ Version number synced to procedural version number
-	*	+ PHPdoc style documentation has been added to the class.  See http://www.phpdoc.org/ for more info.
-	*	+ Some methods are now deprecated due to nomenclature style change.  See method documentation for specifics.
-	*	+ Kses4 now works in E_STRICT
-	*	+ Addition of methods AddProtocols(), filterKsestextHook(), RemoveProtocol() and RemoveProtocols()
-	*	+ Deprecated _hook(), Protocols()
-	*	+ Integrated code from kses 0.2.2 into class.
-	*	+ Added methods DumpProtocols(), DumpMethods()
-	*
-	*	@package    kses
-	*	@subpackage kses4
-	*/
-
-	if(substr(phpversion(), 0, 1) < 4)
-	{
-		die("Class kses requires PHP 4 or higher.");
-	}
-
-	/**
-	*	Only install KSES4 once
-	*/
-	if(!defined('KSES_CLASS_PHP4'))
-	{
-		define('KSES_CLASS_PHP4', true);
-
-	/**
-	*	Kses strips evil scripts!
-	*
-	*	This class provides the capability for removing unwanted HTML/XHTML, attributes from
-	*	tags, and protocols contained in links.  The net result is a much more powerful tool
-	*	than the PHP internal strip_tags()
-	*
-	*	This is a fork of a slick piece of procedural code called 'kses' written by Ulf Harnhammar
-	*	The entire set of functions was wrapped in a PHP object with some internal modifications
-	*	by Richard Vasquez (http://www.chaos.org/) 7/25/2003
-	*
-	*	This upgrade provides the following:
-	*	+ Version number synced to procedural version number
-	*	+ PHPdoc style documentation has been added to the class.  See http://www.phpdoc.org/ for more info.
-	*	+ Some methods are now deprecated due to nomenclature style change.  See method documentation for specifics.
-	*	+ Kses4 now works in E_STRICT
-	*	+ Addition of methods AddProtocols(), filterKsestextHook(), RemoveProtocol(), RemoveProtocols() and SetProtocols()
-	*	+ Deprecated _hook(), Protocols()
-	*	+ Integrated code from kses 0.2.2 into class.
-	*
-	*	@author     Richard R. Vsquez, Jr. (Original procedural code by Ulf Hrnhammar)
-	*	@link       http://sourceforge.net/projects/kses/ Home Page for Kses
-	*	@link       http://chaos.org/contact/ Contact page with current email address for Richard Vasquez
-	*	@copyright  Richard R. Vsquez, Jr. 2003-2005
-	*	@version    PHP4 OOP 0.2.2
-	*	@license    http://www.gnu.org/licenses/gpl.html GNU Public License
-	*	@package    kses
-	*/
-		class kses4
-		{
-			/**#@+
-			 *	@access private
-			 *	@var array
-			 */
-			var $allowed_protocols = array();
-			var $allowed_html      = array();
-			/**#@-*/
-
-			/**
-			 *	Constructor for kses.
-			 *
-			 *	This sets a default collection of protocols allowed in links, and creates an
-			 *	empty set of allowed HTML tags.
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function kses4()
-			{
-				/**
-				 *	You could add protocols such as ftp, new, gopher, mailto, irc, etc.
-				 *
-				 *	The base values the original kses provided were:
-				 *		'http', 'https', 'ftp', 'news', 'nntp', 'telnet', 'gopher', 'mailto'
-				 */
-				$this->allowed_protocols = array('http', 'ftp', 'mailto');
-				$this->allowed_html      = array();
-			}
-
-			/**
-			 *	Basic task of kses - parses $string and strips it as required.
-			 *
-			 *	This method strips all the disallowed (X)HTML tags, attributes
-			 *	and protocols from the input $string.
-			 *
-			 *	@access public
-			 *	@param string $string String to be stripped of 'evil scripts'
-			 *	@return string The stripped string
-			 *	@since PHP4 OOP 0.2.1
-			 */
-			function Parse($string = "")
-			{
-				if (get_magic_quotes_gpc())
-				{
-					$string = stripslashes($string);
-				}
-				$string = $this->_no_null($string);
-				$string = $this->_js_entities($string);
-				$string = $this->_normalize_entities($string);
-				$string = $this->filterKsesTextHook($string);
-				return    $this->_split($string);
-			}
-
-			/**
-			 *	Allows for single/batch addition of protocols
-			 *
-			 *	This method accepts one argument that can be either a string
-			 *	or an array of strings.  Invalid data will be ignored.
-			 *
-			 *	The argument will be processed, and each string will be added
-			 *	via AddProtocol().
-			 *
-			 *	@access public
-			 *	@param mixed , A string or array of protocols that will be added to the internal list of allowed protocols.
-			 *	@return bool Status of adding valid protocols.
-			 *	@see AddProtocol()
-			 *	@since PHP4 OOP 0.2.1
-			 */
-			function AddProtocols()
-			{
-				$c_args = func_num_args();
-				if($c_args != 1)
-				{
-					trigger_error("kses4::AddProtocols() did not receive an argument.", E_USER_WARNING);
-					return false;
-				}
-
-				$protocol_data = func_get_arg(0);
-
-				if(is_array($protocol_data) && count($protocol_data) > 0)
-				{
-					foreach($protocol_data as $protocol)
-					{
-						$this->AddProtocol($protocol);
-					}
-					return true;
-				}
-				elseif(is_string($protocol_data))
-				{
-					$this->AddProtocol($protocol_data);
-					return true;
-				}
-				else
-				{
-					trigger_error("kses4::AddProtocols() did not receive a string or an array.", E_USER_WARNING);
-					return false;
-				}
-			}
-
-			/**
-			 *	Allows for single/batch addition of protocols
-			 *
-			 *	@deprecated Use AddProtocols()
-			 *	@see AddProtocols()
-			 *	@return bool
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function Protocols()
-			{
-				$c_args = func_num_args();
-				if($c_args != 1)
-				{
-					trigger_error("kses4::Protocols() did not receive an argument.", E_USER_WARNING);
-					return false;
-				}
-
-				return $this->AddProtocols(func_get_arg(0));
-			}
-
-			/**
-			 *	Adds a single protocol to $this->allowed_protocols.
-			 *
-			 *	This method accepts a string argument and adds it to
-			 *	the list of allowed protocols to keep when performing
-			 *	Parse().
-			 *
-			 *	@access public
-			 *	@param string $protocol The name of the protocol to be added.
-			 *	@return bool Status of adding valid protocol.
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function AddProtocol($protocol = "")
-			{
-				if(!is_string($protocol))
-				{
-					trigger_error("kses4::AddProtocol() requires a string.", E_USER_WARNING);
-					return false;
-				}
-
-				$protocol = strtolower(trim($protocol));
-				if($protocol == "")
-				{
-					trigger_error("kses4::AddProtocol() tried to add an empty/NULL protocol.", E_USER_WARNING);
-					return false;
-				}
-
-				// Remove any inadvertent ':' at the end of the protocol.
-				if(substr($protocol, strlen($protocol) - 1, 1) == ":")
-				{
-					$protocol = substr($protocol, 0, strlen($protocol) - 1);
-				}
-
-				if(!in_array($protocol, $this->allowed_protocols))
-				{
-					array_push($this->allowed_protocols, $protocol);
-					sort($this->allowed_protocols);
-				}
-				return true;
-			}
-
-			/**
-			 *	Allows for single/batch replacement of protocols
-			 *
-			 *	This method accepts one argument that can be either a string
-			 *	or an array of strings.  Invalid data will be ignored.
-			 *
-			 *	Existing protocols will be removed, then the argument will be
-			 *	processed, and each string will be added via AddProtocol().
-			 *
-			 *	@access public
-			 *	@param mixed , A string or array of protocols that will be the new internal list of allowed protocols.
-			 *	@return bool Status of replacing valid protocols.
-			 *	@since PHP4 OOP 0.2.2
-			 *	@see AddProtocol()
-			 */
-			function SetProtocols()
-			{
-				$c_args = func_num_args();
-				if($c_args != 1)
-				{
-					trigger_error("kses4::SetProtocols() did not receive an argument.", E_USER_WARNING);
-					return false;
-				}
-
-				$protocol_data = func_get_arg(0);
-
-				if(is_array($protocol_data) && count($protocol_data) > 0)
-				{
-					$this->allowed_protocols = array();
-					foreach($protocol_data as $protocol)
-					{
-						$this->AddProtocol($protocol);
-					}
-					return true;
-				}
-				elseif(is_string($protocol_data))
-				{
-					$this->allowed_protocols = array();
-					$this->AddProtocol($protocol_data);
-					return true;
-				}
-				else
-				{
-					trigger_error("kses4::SetProtocols() did not receive a string or an array.", E_USER_WARNING);
-					return false;
-				}
-			}
-
-			/**
-			 *	Raw dump of allowed protocols
-			 *
-			 *	This returns an indexed array of allowed protocols for a particular KSES
-			 *	instantiation.
-			 *
-			 *	@access public
-			 *	@return array The list of allowed protocols.
-			 *	@since PHP4 OOP 0.2.2
-			 */
-			function DumpProtocols()
-			{
-				return $this->allowed_protocols;
-			}
-
-			/**
-			 *	Raw dump of allowed (X)HTML elements
-			 *
-			 *	This returns an indexed array of allowed (X)HTML elements and attributes
-			 *	for a particular KSES instantiation.
-			 *
-			 *	@access public
-			 *	@return array The list of allowed elements.
-			 *	@since PHP4 OOP 0.2.2
-			 */
-			function DumpElements()
-			{
-				return $this->allowed_html;
-			}
-
-			/**
-			 *	Adds valid (X)HTML with corresponding attributes that will be kept when stripping 'evil scripts'.
-			 *
-			 *	This method accepts one argument that can be either a string
-			 *	or an array of strings.  Invalid data will be ignored.
-			 *
-			 *	@access public
-			 *	@param string $tag (X)HTML tag that will be allowed after stripping text.
-			 *	@param array $attribs Associative array of allowed attributes - key => attribute name - value => attribute parameter
-			 *	@return bool Status of Adding (X)HTML and attributes.
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function AddHTML($tag = "", $attribs = array())
-			{
-				if(!is_string($tag))
-				{
-					trigger_error("kses4::AddHTML() requires the tag to be a string", E_USER_WARNING);
-					return false;
-				}
-
-				$tag = strtolower(trim($tag));
-				if($tag == "")
-				{
-					trigger_error("kses4::AddHTML() tried to add an empty/NULL tag", E_USER_WARNING);
-					return false;
-				}
-
-				if(!is_array($attribs))
-				{
-					trigger_error("kses4::AddHTML() requires an array (even an empty one) of attributes for '$tag'", E_USER_WARNING);
-					return false;
-				}
-
-				$new_attribs = array();
-				if(is_array($attribs) && count($attribs) > 0)
-				{
-					foreach($attribs as $idx1 => $val1)
-					{
-						$new_idx1 = strtolower($idx1);
-						$new_val1 = $attribs[$idx1];
-
-						if(is_array($new_val1) && count($new_val1) > 0)
-						{
-							$tmp_val = array();
-							foreach($new_val1 as $idx2 => $val2)
-							{
-								$new_idx2 = strtolower($idx2);
-								$tmp_val[$new_idx2] = $val2;
-							}
-							$new_val1 = $tmp_val;
-						}
-
-						$new_attribs[$new_idx1] = $new_val1;
-					}
-				}
-
-				$this->allowed_html[$tag] = $new_attribs;
-				return true;
-			}
-
-			/**
-			 *	Removes a single protocol from $this->allowed_protocols.
-			 *
-			 *	This method accepts a string argument and removes it from
-			 *	the list of allowed protocols to keep when performing
-			 *	Parse().
-			 *
-			 *	@access public
-			 *	@param string $protocol The name of the protocol to be removed.
-			 *	@return bool Status of removing valid protocol.
-			 *	@since PHP4 OOP 0.2.1
-			 */
-			function RemoveProtocol($protocol = "")
-			{
-				if(!is_string($protocol))
-				{
-					trigger_error("kses4::RemoveProtocol() requires a string.", E_USER_WARNING);
-					return false;
-				}
-
-				// Remove any inadvertent ':' at the end of the protocol.
-				if(substr($protocol, strlen($protocol) - 1, 1) == ":")
-				{
-					$protocol = substr($protocol, 0, strlen($protocol) - 1);
-				}
-
-				$protocol = strtolower(trim($protocol));
-				if($protocol == "")
-				{
-					trigger_error("kses4::RemoveProtocol() tried to remove an empty/NULL protocol.", E_USER_WARNING);
-					return false;
-				}
-
-				//	Ensures that the protocol exists before removing it.
-				if(in_array($protocol, $this->allowed_protocols))
-				{
-					$this->allowed_protocols = array_diff($this->allowed_protocols, array($protocol));
-					sort($this->allowed_protocols);
-				}
-
-				return true;
-			}
-
-			/**
-			 *	Allows for single/batch removal of protocols
-			 *
-			 *	This method accepts one argument that can be either a string
-			 *	or an array of strings.  Invalid data will be ignored.
-			 *
-			 *	The argument will be processed, and each string will be removed
-			 *	via RemoveProtocol().
-			 *
-			 *	@access public
-			 *	@param mixed , A string or array of protocols that will be removed from the internal list of allowed protocols.
-			 *	@return bool Status of removing valid protocols.
-			 *	@see RemoveProtocol()
-			 *	@since PHP5 OOP 0.2.1
-			 */
-			function RemoveProtocols()
-			{
-				$c_args = func_num_args();
-				if($c_args != 1)
-				{
-					return false;
-				}
-
-				$protocol_data = func_get_arg(0);
-
-				if(is_array($protocol_data) && count($protocol_data) > 0)
-				{
-					foreach($protocol_data as $protocol)
-					{
-						$this->RemoveProtocol($protocol);
-					}
-				}
-				elseif(is_string($protocol_data))
-				{
-					$this->RemoveProtocol($protocol_data);
-					return true;
-				}
-				else
-				{
-					trigger_error("kses4::RemoveProtocols() did not receive a string or an array.", E_USER_WARNING);
-					return false;
-				}
-			}
-
-			/**
-			 *	This method removes any NULL or characters in $string.
-			 *
-			 *	@access private
-			 *	@param string $string
-			 *	@return string String without any NULL/chr(173)
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function _no_null($string)
-			{
-				$string = preg_replace('/\0+/', '', $string);
-				$string = preg_replace('/(\\\\0)+/', '', $string);
-				return $string;
-			}
-
-			/**
-			 *	This function removes the HTML JavaScript entities found in early versions of
-			 *	Netscape 4.
-			 *
-			 *	@access private
-			 *	@param string $string
-			 *	@return string String without any NULL/chr(173)
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function _js_entities($string)
-			{
-			  return preg_replace('%&\s*\{[^}]*(\}\s*;?|$)%', '', $string);
-			}
-
-			/**
-			 *	Normalizes HTML entities
-			 *
-			 *	This function normalizes HTML entities. It will convert "AT&T" to the correct
-			 *	"AT&amp;T", "&#00058;" to "&#58;", "&#XYZZY;" to "&amp;#XYZZY;" and so on.
-			 *
-			 *	@access private
-			 *	@param string $string
-			 *	@return string String with normalized entities
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function _normalize_entities($string)
-			{
-				# Disarm all entities by converting & to &amp;
-			  $string = str_replace('&', '&amp;', $string);
-
-				# Change back the allowed entities in our entity white list
-
-			  $string = preg_replace('/&amp;([A-Za-z][A-Za-z0-9]{0,19});/', '&\\1;', $string);
-			  $string = preg_replace('/&amp;#0*([0-9]{1,5});/e', '\$this->_normalize_entities2("\\1")', $string);
-			  $string = preg_replace('/&amp;#([Xx])0*(([0-9A-Fa-f]{2}){1,2});/', '&#\\1\\2;', $string);
-
-			  return $string;
-			}
-
-			/**
-			 *	Helper method used by normalizeEntites()
-			 *
-			 *	This method helps normalizeEntities() to only accept 16 bit values
-			 *	and nothing more for &#number; entities.
-			 *
-			 *	This method helps normalize_entities() during a preg_replace()
-			 *	where a &#(0)*XXXXX; occurs.  The '(0)*XXXXXX' value is converted to
-			 *	a number and the result is returned as a numeric entity if the number
-			 *	is less than 65536.  Otherwise, the value is returned 'as is'.
-			 *
-			 *	@access private
-			 *	@param string $i
-			 *	@return string Normalized numeric entity
-			 *	@see _normalize_entities()
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function _normalize_entities2($i)
-			{
-			  return (($i > 65535) ? "&amp;#$i;" : "&#$i;");
-			}
-
-			/**
-			 *	Allows for additional user defined modifications to text.
-			 *
-			 *	@deprecated use filterKsesTextHook()
-			 *	@param string $string
-			 *	@see filterKsesTextHook()
-			 *	@return string
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function _hook($string)
-			{
-			  return $this->filterKsesTextHook($string);
-			}
-
-			/**
-			 *	Allows for additional user defined modifications to text.
-			 *
-			 *	This method allows for additional modifications to be performed on
-			 *	a string that's being run through Parse().  Currently, it returns the
-			 *	input string 'as is'.
-			 *
-			 *	This method is provided for users to extend the kses class for their own
-			 *	requirements.
-			 *
-			 *	@access public
-			 *	@param string $string String to perfrom additional modifications on.
-			 *	@return string User modified string.
-			 *	@see Parse()
-			 *	@since PHP5 OOP 1.0.0
-			 */
-			function filterKsesTextHook($string)
-			{
-			  return $string;
-			}
-
-			/**
-			 *	This method goes through an array, and changes the keys to all lower case.
-			 *
-			 *	@access private
-			 *	@param array $in_array Associative array
-			 *	@return array Modified array
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function _array_lc($inarray)
-			{
-			  $outarray = array();
-
-				if(is_array($inarray) && count($inarray) > 0)
-				{
-					foreach ($inarray as $inkey => $inval)
-					{
-						$outkey = strtolower($inkey);
-						$outarray[$outkey] = array();
-
-						if(is_array($inval) && count($inval) > 0)
-						{
-							foreach ($inval as $inkey2 => $inval2)
-							{
-								$outkey2 = strtolower($inkey2);
-								$outarray[$outkey][$outkey2] = $inval2;
-							}
-						}
-					}
-				}
-
-			  return $outarray;
-			}
-
-			/**
-			 *	This method searched for HTML tags, no matter how malformed.  It also
-			 *	matches stray ">" characters.
-			 *
-			 *	@access private
-			 *	@param string $string
-			 *	@return string HTML tags
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function _split($string)
-			{
-				return preg_replace(
-					'%(<'.   # EITHER: <
-					'[^>]*'. # things that aren't >
-					'(>|$)'. # > or end of string
-					'|>)%e', # OR: just a >
-					"\$this->_split2('\\1')",
-					$string);
-			}
-
-			/**
-			 *	This method strips out disallowed and/or mangled (X)HTML tags along with assigned attributes.
-			 *
-			 *	This method does a lot of work. It rejects some very malformed things
-			 *	like <:::>. It returns an empty string if the element isn't allowed (look
-			 *	ma, no strip_tags()!). Otherwise it splits the tag into an element and an
-			 *	allowed attribute list.
-			 *
-			 *	@access private
-			 *	@param string $string
-			 *	@return string Modified string minus disallowed/mangled (X)HTML and attributes
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function _split2($string)
-			{
-				$string = $this->_stripslashes($string);
-
-				if (substr($string, 0, 1) != '<')
-				{
-					# It matched a ">" character
-					return '&gt;';
-				}
-
-				if (!preg_match('%^<\s*(/\s*)?([a-zA-Z0-9]+)([^>]*)>?$%', $string, $matches))
-				{
-					# It's seriously malformed
-					return '';
-				}
-
-				$slash    = trim($matches[1]);
-				$elem     = $matches[2];
-				$attrlist = $matches[3];
-
-				if (
-					!isset($this->allowed_html[strtolower($elem)]) ||
-					!is_array($this->allowed_html[strtolower($elem)])
-				)
-				{
-					# They are using a not allowed HTML element
-					return '';
-				}
-
-				if ($slash != '')
-				{
-					return "<$slash$elem>";
-				}
-				# No attributes are allowed for closing elements
-
-				return $this->_attr("$slash$elem", $attrlist);
-			}
-
-			/**
-			 *	This method strips out disallowed attributes for (X)HTML tags.
-			 *
-			 *	This method removes all attributes if none are allowed for this element.
-			 *	If some are allowed it calls $this->_hair() to split them further, and then it
-			 *	builds up new HTML code from the data that $this->_hair() returns. It also
-			 *	removes "<" and ">" characters, if there are any left. One more thing it
-			 *	does is to check if the tag has a closing XHTML slash, and if it does,
-			 *	it puts one in the returned code as well.
-			 *
-			 *	@access private
-			 *	@param string $element (X)HTML tag to check
-			 *	@param string $attr Text containing attributes to check for validity.
-			 *	@return string Resulting valid (X)HTML or ''
-			 *	@see _hair()
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function _attr($element, $attr)
-			{
-				# Is there a closing XHTML slash at the end of the attributes?
-				$xhtml_slash = '';
-				if (preg_match('%\s/\s*$%', $attr))
-				{
-					$xhtml_slash = ' /';
-				}
-
-				# Are any attributes allowed at all for this element?
-				if (
-					!isset($this->allowed_html[strtolower($element)]) ||
-					count($this->allowed_html[strtolower($element)]) == 0
-				)
-				{
-					return "<$element$xhtml_slash>";
-				}
-
-				# Split it
-				$attrarr = $this->_hair($attr);
-
-				# Go through $attrarr, and save the allowed attributes for this element
-				# in $attr2
-				$attr2 = '';
-				if(is_array($attrarr) && count($attrarr) > 0)
-				{
-					foreach ($attrarr as $arreach)
-					{
-						if(!isset($this->allowed_html[strtolower($element)][strtolower($arreach['name'])]))
-						{
-							continue;
-						}
-
-						$current = $this->allowed_html[strtolower($element)][strtolower($arreach['name'])];
-						if ($current == '')
-						{
-							# the attribute is not allowed
-							continue;
-						}
-
-						if (!is_array($current))
-						{
-							# there are no checks
-							$attr2 .= ' '.$arreach['whole'];
-						}
-						else
-						{
-							# there are some checks
-							$ok = true;
-							if(is_array($current) && count($current) > 0)
-							{
-								foreach ($current as $currkey => $currval)
-								{
-									if (!$this->_check_attr_val($arreach['value'], $arreach['vless'], $currkey, $currval))
-									{
-										$ok = false;
-										break;
-									}
-								}
-
-								if ($ok)
-								{
-									# it passed them
-									$attr2 .= ' '.$arreach['whole'];
-								}
-							}
-						}
-					}
-				}
-
-				# Remove any "<" or ">" characters
-				$attr2 = preg_replace('/[<>]/', '', $attr2);
-				return "<$element$attr2$xhtml_slash>";
-			}
-
-			/**
-			 *	This method combs through an attribute list string and returns an associative array of attributes and values.
-			 *
-			 *	This method does a lot of work. It parses an attribute list into an array
-			 *	with attribute data, and tries to do the right thing even if it gets weird
-			 *	input. It will add quotes around attribute values that don't have any quotes
-			 *	or apostrophes around them, to make it easier to produce HTML code that will
-			 *	conform to W3C's HTML specification. It will also remove bad URL protocols
-			 *	from attribute values.
-			 *
-			 *	@access private
-			 *	@param string $attr Text containing tag attributes for parsing
-			 *	@return array Associative array containing data on attribute and value
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function _hair($attr)
-			{
-				$attrarr  = array();
-				$mode     = 0;
-				$attrname = '';
-
-				# Loop through the whole attribute list
-
-				while (strlen($attr) != 0)
-				{
-					# Was the last operation successful?
-					$working = 0;
-
-					switch ($mode)
-					{
-						case 0:	# attribute name, href for instance
-							if (preg_match('/^([-a-zA-Z]+)/', $attr, $match))
-							{
-								$attrname = $match[1];
-								$working = $mode = 1;
-								$attr = preg_replace('/^[-a-zA-Z]+/', '', $attr);
-							}
-							break;
-						case 1:	# equals sign or valueless ("selected")
-							if (preg_match('/^\s*=\s*/', $attr)) # equals sign
-							{
-								$working = 1;
-								$mode    = 2;
-								$attr    = preg_replace('/^\s*=\s*/', '', $attr);
-								break;
-							}
-							if (preg_match('/^\s+/', $attr)) # valueless
-							{
-								$working   = 1;
-								$mode      = 0;
-								$attrarr[] = array(
-									'name'  => $attrname,
-									'value' => '',
-									'whole' => $attrname,
-									'vless' => 'y'
-								);
-								$attr      = preg_replace('/^\s+/', '', $attr);
-							}
-							break;
-						case 2: # attribute value, a URL after href= for instance
-							if (preg_match('/^"([^"]*)"(\s+|$)/', $attr, $match)) # "value"
-							{
-								$thisval   = $this->_bad_protocol($match[1]);
-								$attrarr[] = array(
-									'name'  => $attrname,
-									'value' => $thisval,
-									'whole' => "$attrname=\"$thisval\"",
-									'vless' => 'n'
-								);
-								$working   = 1;
-								$mode      = 0;
-								$attr      = preg_replace('/^"[^"]*"(\s+|$)/', '', $attr);
-								break;
-							}
-							if (preg_match("/^'([^']*)'(\s+|$)/", $attr, $match)) # 'value'
-							{
-								$thisval   = $this->_bad_protocol($match[1]);
-								$attrarr[] = array(
-									'name'  => $attrname,
-									'value' => $thisval,
-									'whole' => "$attrname='$thisval'",
-									'vless' => 'n'
-								);
-								$working   = 1;
-								$mode      = 0;
-								$attr      = preg_replace("/^'[^']*'(\s+|$)/", '', $attr);
-								break;
-							}
-							if (preg_match("%^([^\s\"']+)(\s+|$)%", $attr, $match)) # value
-							{
-								$thisval   = $this->_bad_protocol($match[1]);
-								$attrarr[] = array(
-									'name'  => $attrname,
-									'value' => $thisval,
-									'whole' => "$attrname=\"$thisval\"",
-									'vless' => 'n'
-								);
-								# We add quotes to conform to W3C's HTML spec.
-								$working   = 1;
-								$mode      = 0;
-								$attr      = preg_replace("%^[^\s\"']+(\s+|$)%", '', $attr);
-							}
-							break;
-					}
-
-					if ($working == 0) # not well formed, remove and try again
-					{
-						$attr = $this->_html_error($attr);
-						$mode = 0;
-					}
-				}
-
-				# special case, for when the attribute list ends with a valueless
-				# attribute like "selected"
-				if ($mode == 1)
-				{
-					$attrarr[] = array(
-						'name'  => $attrname,
-						'value' => '',
-						'whole' => $attrname,
-						'vless' => 'y'
-					);
-				}
-
-				return $attrarr;
-			}
-
-			/**
-			 *	This method removes disallowed protocols.
-			 *
-			 *	This method removes all non-allowed protocols from the beginning of
-			 *	$string. It ignores whitespace and the case of the letters, and it does
-			 *	understand HTML entities. It does its work in a while loop, so it won't be
-			 *	fooled by a string like "javascript:javascript:alert(57)".
-			 *
-			 *	@access private
-			 *	@param string $string String to check for protocols
-			 *	@return string String with removed protocols
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function _bad_protocol($string)
-			{
-				$string  = $this->_no_null($string);
-				$string = preg_replace('/\xad+/', '', $string); # deals with Opera "feature"
-				$string2 = $string.'a';
-
-				while ($string != $string2)
-				{
-					$string2 = $string;
-					$string  = $this->_bad_protocol_once($string);
-				} # while
-
-				return $string;
-			}
-
-			/**
-			 *	Helper method used by _bad_protocol()
-			 *
-			 *	This function searches for URL protocols at the beginning of $string, while
-			 *	handling whitespace and HTML entities.
-			 *
-			 *	@access private
-			 *	@param string $string String to check for protocols
-			 *	@return string String with removed protocols
-			 *	@see _bad_protocol()
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function _bad_protocol_once($string)
-			{
-				return preg_replace(
-					'/^((&[^;]*;|[\sA-Za-z0-9])*)'.
-					'(:|&#58;|&#[Xx]3[Aa];)\s*/e',
-					'\$this->_bad_protocol_once2("\\1")',
-					$string
-				);
-			}
-
-			/**
-			 *	Helper method used by _bad_protocol_once() regex
-			 *
-			 *	This function processes URL protocols, checks to see if they're in the white-
-			 *	list or not, and returns different data depending on the answer.
-			 *
-			 *	@access private
-			 *	@param string $string String to check for protocols
-			 *	@return string String with removed protocols
-			 *	@see _bad_protocol()
-			 *	@see _bad_protocol_once()
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function _bad_protocol_once2($string)
-			{
-				$string = $this->_decode_entities($string);
-				$string = preg_replace('/\s/', '', $string);
-				$string = $this->_no_null($string);
-				$string = preg_replace('/\xad+/', '', $string); # deals with Opera "feature"
-				$string = strtolower($string);
-
-				$allowed = false;
-				if(is_array($this->allowed_protocols) && count($this->allowed_protocols) > 0)
-				{
-					foreach ($this->allowed_protocols as $one_protocol)
-					{
-						if (strtolower($one_protocol) == $string)
-						{
-							$allowed = true;
-							break;
-						}
-					}
-				}
-
-				if ($allowed)
-				{
-					return "$string:";
-				}
-				else
-				{
-					return '';
-				}
-			}
-
-			/**
-			 *	This function performs different checks for attribute values.
-			 *
-			 *	The currently implemented checks are "maxlen", "minlen", "maxval",
-			 *	"minval" and "valueless" with even more checks to come soon.
-			 *
-			 *	@access private
-			 *	@param string $value The value of the attribute to be checked.
-			 *	@param string $vless Indicates whether the the value is supposed to be valueless
-			 *	@param string $checkname The check to be performed
-			 *	@param string $checkvalue The value that is to be checked against
-			 *	@return bool Indicates whether the check passed or not
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function _check_attr_val($value, $vless, $checkname, $checkvalue)
-			{
-				$ok = true;
-
-				switch (strtolower($checkname))
-				{
-					/**
-					*	The maxlen check makes sure that the attribute value has a length not
-					*	greater than the given value. This can be used to avoid Buffer Overflows
-					*	in WWW clients and various Internet servers.
-					*/
-					case 'maxlen':
-						if (strlen($value) > $checkvalue)
-						{
-							$ok = false;
-						}
-						break;
-
-					/**
-					*	The minlen check makes sure that the attribute value has a length not
-					*	smaller than the given value.
-					*/
-					case 'minlen':
-						if (strlen($value) < $checkvalue)
-						{
-							$ok = false;
-						}
-						break;
-
-					/**
-					*	The maxval check does two things: it checks that the attribute value is
-					*	an integer from 0 and up, without an excessive amount of zeroes or
-					*	whitespace (to avoid Buffer Overflows). It also checks that the attribute
-					*	value is not greater than the given value.
-					*	This check can be used to avoid Denial of Service attacks.
-					*/
-					case 'maxval':
-						if (!preg_match('/^\s{0,6}[0-9]{1,6}\s{0,6}$/', $value))
-						{
-							$ok = false;
-						}
-						if ($value > $checkvalue)
-						{
-							$ok = false;
-						}
-						break;
-
-					/**
-					*	The minval check checks that the attribute value is a positive integer,
-					*	and that it is not smaller than the given value.
-					*/
-					case 'minval':
-						if (!preg_match('/^\s{0,6}[0-9]{1,6}\s{0,6}$/', $value))
-						{
-							$ok = false;
-						}
-						if ($value < $checkvalue)
-						{
-							$ok = false;
-						}
-						break;
-
-					/**
-					*	The valueless check checks if the attribute has a value
-					*	(like <a href="blah">) or not (<option selected>). If the given value
-					*	is a "y" or a "Y", the attribute must not have a value.
-					*	If the given value is an "n" or an "N", the attribute must have one.
-					*/
-					case 'valueless':
-					if (strtolower($checkvalue) != $vless)
-					{
-						$ok = false;
-					}
-					break;
-
-				}
-
-				return $ok;
-			}
-
-			/**
-			 *	Changes \" to "
-			 *
-			 *	This function changes the character sequence  \"  to just  "
-			 *	It leaves all other slashes alone. It's really weird, but the quoting from
-			 *	preg_replace(//e) seems to require this.
-			 *
-			 *	@access private
-			 *	@param string $string The string to be stripped.
-			 *	@return string string stripped of \"
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function _stripslashes($string)
-			{
-				return preg_replace('%\\\\"%', '"', $string);
-			}
-
-			/**
-			 *	helper method for _hair()
-			 *
-			 *	This function deals with parsing errors in _hair(). The general plan is
-			 *	to remove everything to and including some whitespace, but it deals with
-			 *	quotes and apostrophes as well.
-			 *
-			 *	@access private
-			 *	@param string $string The string to be stripped.
-			 *	@return string string stripped of whitespace
-			 *	@see _hair()
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function _html_error($string)
-			{
-				return preg_replace('/^("[^"]*("|$)|\'[^\']*(\'|$)|\S)*\s*/', '', $string);
-			}
-
-			/**
-			 *	Decodes numeric HTML entities
-			 *
-			 *	This method decodes numeric HTML entities (&#65; and &#x41;). It doesn't
-			 *	do anything with other entities like &auml;, but we don't need them in the
-			 *	URL protocol white listing system anyway.
-			 *
-			 *	@access private
-			 *	@param string $value The entitiy to be decoded.
-			 *	@return string Decoded entity
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function _decode_entities($string)
-			{
-				$string = preg_replace('/&#([0-9]+);/e', 'chr("\\1")', $string);
-				$string = preg_replace('/&#[Xx]([0-9A-Fa-f]+);/e', 'chr(hexdec("\\1"))', $string);
-				return $string;
-			}
-
-			/**
-			 *	Returns PHP4 OOP version # of kses.
-			 *
-			 *	Since this class has been refactored and documented and proven to work,
-			 *	I'm syncing the version number to procedural kses.
-			 *
-			 *	@access public
-			 *	@return string Version number
-			 *	@since PHP4 OOP 0.0.1
-			 */
-			function _version()
-			{
-				return 'PHP4 0.2.2 (OOP fork of procedural kses 0.2.2)';
-			}
-		}
-
-
-
-	}
+<?php
+	/*
+	 * ==========================================================================================
+	 *
+	 * This program is free software and open source software; you can redistribute
+	 * it and/or modify it under the terms of the GNU General Public License as
+	 * published by the Free Software Foundation; either version 2 of the License,
+	 * or (at your option) any later version.
+	 *
+	 * This program is distributed in the hope that it will be useful, but WITHOUT
+	 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+	 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+	 * more details.
+	 *
+	 * You should have received a copy of the GNU General Public License along
+	 * with this program; if not, write to the Free Software Foundation, Inc.,
+	 * 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  or visit
+	 * http://www.gnu.org/licenses/gpl.html
+	 *
+	 * ==========================================================================================
+	 */
+
+	/**
+	*	Class file for PHP4 OOP version of kses
+	*
+	*	This is an updated version of kses to work with PHP4 that works under E_STRICT.
+	*
+	*	This upgrade provides the following:
+	*	+ Version number synced to procedural version number
+	*	+ PHPdoc style documentation has been added to the class.  See http://www.phpdoc.org/ for more info.
+	*	+ Some methods are now deprecated due to nomenclature style change.  See method documentation for specifics.
+	*	+ Kses4 now works in E_STRICT
+	*	+ Addition of methods AddProtocols(), filterKsestextHook(), RemoveProtocol() and RemoveProtocols()
+	*	+ Deprecated _hook(), Protocols()
+	*	+ Integrated code from kses 0.2.2 into class.
+	*	+ Added methods DumpProtocols(), DumpMethods()
+	*
+	*	@package    kses
+	*	@subpackage kses4
+	*/
+
+	if(substr(phpversion(), 0, 1) < 4)
+	{
+		die("Class kses requires PHP 4 or higher.");
+	}
+
+	/**
+	*	Only install KSES4 once
+	*/
+	if(!defined('KSES_CLASS_PHP4'))
+	{
+		define('KSES_CLASS_PHP4', true);
+
+	/**
+	*	Kses strips evil scripts!
+	*
+	*	This class provides the capability for removing unwanted HTML/XHTML, attributes from
+	*	tags, and protocols contained in links.  The net result is a much more powerful tool
+	*	than the PHP internal strip_tags()
+	*
+	*	This is a fork of a slick piece of procedural code called 'kses' written by Ulf Harnhammar
+	*	The entire set of functions was wrapped in a PHP object with some internal modifications
+	*	by Richard Vasquez (http://www.chaos.org/) 7/25/2003
+	*
+	*	This upgrade provides the following:
+	*	+ Version number synced to procedural version number
+	*	+ PHPdoc style documentation has been added to the class.  See http://www.phpdoc.org/ for more info.
+	*	+ Some methods are now deprecated due to nomenclature style change.  See method documentation for specifics.
+	*	+ Kses4 now works in E_STRICT
+	*	+ Addition of methods AddProtocols(), filterKsestextHook(), RemoveProtocol(), RemoveProtocols() and SetProtocols()
+	*	+ Deprecated _hook(), Protocols()
+	*	+ Integrated code from kses 0.2.2 into class.
+	*
+	*	@author     Richard R. Vsquez, Jr. (Original procedural code by Ulf Hrnhammar)
+	*	@link       http://sourceforge.net/projects/kses/ Home Page for Kses
+	*	@link       http://chaos.org/contact/ Contact page with current email address for Richard Vasquez
+	*	@copyright  Richard R. Vsquez, Jr. 2003-2005
+	*	@version    PHP4 OOP 0.2.2
+	*	@license    http://www.gnu.org/licenses/gpl.html GNU Public License
+	*	@package    kses
+	*/
+		class kses4
+		{
+			/**#@+
+			 *	@access private
+			 *	@var array
+			 */
+			var $allowed_protocols = array();
+			var $allowed_html      = array();
+			/**#@-*/
+
+			/**
+			 *	Constructor for kses.
+			 *
+			 *	This sets a default collection of protocols allowed in links, and creates an
+			 *	empty set of allowed HTML tags.
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function kses4()
+			{
+				/**
+				 *	You could add protocols such as ftp, new, gopher, mailto, irc, etc.
+				 *
+				 *	The base values the original kses provided were:
+				 *		'http', 'https', 'ftp', 'news', 'nntp', 'telnet', 'gopher', 'mailto'
+				 */
+				$this->allowed_protocols = array('http', 'ftp', 'mailto');
+				$this->allowed_html      = array();
+			}
+
+			/**
+			 *	Basic task of kses - parses $string and strips it as required.
+			 *
+			 *	This method strips all the disallowed (X)HTML tags, attributes
+			 *	and protocols from the input $string.
+			 *
+			 *	@access public
+			 *	@param string $string String to be stripped of 'evil scripts'
+			 *	@return string The stripped string
+			 *	@since PHP4 OOP 0.2.1
+			 */
+			function Parse($string = "")
+			{
+				if (get_magic_quotes_gpc())
+				{
+					$string = stripslashes($string);
+				}
+				$string = $this->_no_null($string);
+				$string = $this->_js_entities($string);
+				$string = $this->_normalize_entities($string);
+				$string = $this->filterKsesTextHook($string);
+				return    $this->_split($string);
+			}
+
+			/**
+			 *	Allows for single/batch addition of protocols
+			 *
+			 *	This method accepts one argument that can be either a string
+			 *	or an array of strings.  Invalid data will be ignored.
+			 *
+			 *	The argument will be processed, and each string will be added
+			 *	via AddProtocol().
+			 *
+			 *	@access public
+			 *	@param mixed , A string or array of protocols that will be added to the internal list of allowed protocols.
+			 *	@return bool Status of adding valid protocols.
+			 *	@see AddProtocol()
+			 *	@since PHP4 OOP 0.2.1
+			 */
+			function AddProtocols()
+			{
+				$c_args = func_num_args();
+				if($c_args != 1)
+				{
+					trigger_error("kses4::AddProtocols() did not receive an argument.", E_USER_WARNING);
+					return false;
+				}
+
+				$protocol_data = func_get_arg(0);
+
+				if(is_array($protocol_data) && count($protocol_data) > 0)
+				{
+					foreach($protocol_data as $protocol)
+					{
+						$this->AddProtocol($protocol);
+					}
+					return true;
+				}
+				elseif(is_string($protocol_data))
+				{
+					$this->AddProtocol($protocol_data);
+					return true;
+				}
+				else
+				{
+					trigger_error("kses4::AddProtocols() did not receive a string or an array.", E_USER_WARNING);
+					return false;
+				}
+			}
+
+			/**
+			 *	Allows for single/batch addition of protocols
+			 *
+			 *	@deprecated Use AddProtocols()
+			 *	@see AddProtocols()
+			 *	@return bool
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function Protocols()
+			{
+				$c_args = func_num_args();
+				if($c_args != 1)
+				{
+					trigger_error("kses4::Protocols() did not receive an argument.", E_USER_WARNING);
+					return false;
+				}
+
+				return $this->AddProtocols(func_get_arg(0));
+			}
+
+			/**
+			 *	Adds a single protocol to $this->allowed_protocols.
+			 *
+			 *	This method accepts a string argument and adds it to
+			 *	the list of allowed protocols to keep when performing
+			 *	Parse().
+			 *
+			 *	@access public
+			 *	@param string $protocol The name of the protocol to be added.
+			 *	@return bool Status of adding valid protocol.
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function AddProtocol($protocol = "")
+			{
+				if(!is_string($protocol))
+				{
+					trigger_error("kses4::AddProtocol() requires a string.", E_USER_WARNING);
+					return false;
+				}
+
+				$protocol = strtolower(trim($protocol));
+				if($protocol == "")
+				{
+					trigger_error("kses4::AddProtocol() tried to add an empty/NULL protocol.", E_USER_WARNING);
+					return false;
+				}
+
+				// Remove any inadvertent ':' at the end of the protocol.
+				if(substr($protocol, strlen($protocol) - 1, 1) == ":")
+				{
+					$protocol = substr($protocol, 0, strlen($protocol) - 1);
+				}
+
+				if(!in_array($protocol, $this->allowed_protocols))
+				{
+					array_push($this->allowed_protocols, $protocol);
+					sort($this->allowed_protocols);
+				}
+				return true;
+			}
+
+			/**
+			 *	Allows for single/batch replacement of protocols
+			 *
+			 *	This method accepts one argument that can be either a string
+			 *	or an array of strings.  Invalid data will be ignored.
+			 *
+			 *	Existing protocols will be removed, then the argument will be
+			 *	processed, and each string will be added via AddProtocol().
+			 *
+			 *	@access public
+			 *	@param mixed , A string or array of protocols that will be the new internal list of allowed protocols.
+			 *	@return bool Status of replacing valid protocols.
+			 *	@since PHP4 OOP 0.2.2
+			 *	@see AddProtocol()
+			 */
+			function SetProtocols()
+			{
+				$c_args = func_num_args();
+				if($c_args != 1)
+				{
+					trigger_error("kses4::SetProtocols() did not receive an argument.", E_USER_WARNING);
+					return false;
+				}
+
+				$protocol_data = func_get_arg(0);
+
+				if(is_array($protocol_data) && count($protocol_data) > 0)
+				{
+					$this->allowed_protocols = array();
+					foreach($protocol_data as $protocol)
+					{
+						$this->AddProtocol($protocol);
+					}
+					return true;
+				}
+				elseif(is_string($protocol_data))
+				{
+					$this->allowed_protocols = array();
+					$this->AddProtocol($protocol_data);
+					return true;
+				}
+				else
+				{
+					trigger_error("kses4::SetProtocols() did not receive a string or an array.", E_USER_WARNING);
+					return false;
+				}
+			}
+
+			/**
+			 *	Raw dump of allowed protocols
+			 *
+			 *	This returns an indexed array of allowed protocols for a particular KSES
+			 *	instantiation.
+			 *
+			 *	@access public
+			 *	@return array The list of allowed protocols.
+			 *	@since PHP4 OOP 0.2.2
+			 */
+			function DumpProtocols()
+			{
+				return $this->allowed_protocols;
+			}
+
+			/**
+			 *	Raw dump of allowed (X)HTML elements
+			 *
+			 *	This returns an indexed array of allowed (X)HTML elements and attributes
+			 *	for a particular KSES instantiation.
+			 *
+			 *	@access public
+			 *	@return array The list of allowed elements.
+			 *	@since PHP4 OOP 0.2.2
+			 */
+			function DumpElements()
+			{
+				return $this->allowed_html;
+			}
+
+			/**
+			 *	Adds valid (X)HTML with corresponding attributes that will be kept when stripping 'evil scripts'.
+			 *
+			 *	This method accepts one argument that can be either a string
+			 *	or an array of strings.  Invalid data will be ignored.
+			 *
+			 *	@access public
+    		 *	@param string $tag (X)HTML tag that will be allowed after stripping text.
+			 *	@param array $attribs Associative array of allowed attributes - key => attribute name - value => attribute parameter
+			 *	@return bool Status of Adding (X)HTML and attributes.
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function AddHTML($tag = "", $attribs = array())
+			{
+				if(!is_string($tag))
+				{
+					trigger_error("kses4::AddHTML() requires the tag to be a string", E_USER_WARNING);
+					return false;
+				}
+
+				$tag = strtolower(trim($tag));
+				if($tag == "")
+				{
+					trigger_error("kses4::AddHTML() tried to add an empty/NULL tag", E_USER_WARNING);
+					return false;
+				}
+
+				if(!is_array($attribs))
+				{
+					trigger_error("kses4::AddHTML() requires an array (even an empty one) of attributes for '$tag'", E_USER_WARNING);
+					return false;
+				}
+
+				$new_attribs = array();
+				if(is_array($attribs) && count($attribs) > 0)
+				{
+					foreach($attribs as $idx1 => $val1)
+					{
+						$new_idx1 = strtolower($idx1);
+						$new_val1 = $attribs[$idx1];
+
+						if(is_array($new_val1) && count($new_val1) > 0)
+						{
+							$tmp_val = array();
+							foreach($new_val1 as $idx2 => $val2)
+							{
+								$new_idx2 = strtolower($idx2);
+								$tmp_val[$new_idx2] = $val2;
+							}
+							$new_val1 = $tmp_val;
+						}
+
+						$new_attribs[$new_idx1] = $new_val1;
+					}
+				}
+
+				$this->allowed_html[$tag] = $new_attribs;
+				return true;
+			}
+
+			/**
+			 *	Removes a single protocol from $this->allowed_protocols.
+			 *
+			 *	This method accepts a string argument and removes it from
+			 *	the list of allowed protocols to keep when performing
+			 *	Parse().
+			 *
+			 *	@access public
+			 *	@param string $protocol The name of the protocol to be removed.
+			 *	@return bool Status of removing valid protocol.
+			 *	@since PHP4 OOP 0.2.1
+			 */
+			function RemoveProtocol($protocol = "")
+			{
+				if(!is_string($protocol))
+				{
+					trigger_error("kses4::RemoveProtocol() requires a string.", E_USER_WARNING);
+					return false;
+				}
+
+				// Remove any inadvertent ':' at the end of the protocol.
+				if(substr($protocol, strlen($protocol) - 1, 1) == ":")
+				{
+					$protocol = substr($protocol, 0, strlen($protocol) - 1);
+				}
+
+				$protocol = strtolower(trim($protocol));
+				if($protocol == "")
+				{
+					trigger_error("kses4::RemoveProtocol() tried to remove an empty/NULL protocol.", E_USER_WARNING);
+					return false;
+				}
+
+				//	Ensures that the protocol exists before removing it.
+				if(in_array($protocol, $this->allowed_protocols))
+				{
+					$this->allowed_protocols = array_diff($this->allowed_protocols, array($protocol));
+					sort($this->allowed_protocols);
+				}
+
+				return true;
+			}
+
+			/**
+			 *	Allows for single/batch removal of protocols
+			 *
+			 *	This method accepts one argument that can be either a string
+			 *	or an array of strings.  Invalid data will be ignored.
+			 *
+			 *	The argument will be processed, and each string will be removed
+			 *	via RemoveProtocol().
+			 *
+			 *	@access public
+			 *	@param mixed , A string or array of protocols that will be removed from the internal list of allowed protocols.
+			 *	@return bool Status of removing valid protocols.
+			 *	@see RemoveProtocol()
+			 *	@since PHP5 OOP 0.2.1
+			 */
+			function RemoveProtocols()
+			{
+				$c_args = func_num_args();
+				if($c_args != 1)
+				{
+					return false;
+				}
+
+				$protocol_data = func_get_arg(0);
+
+				if(is_array($protocol_data) && count($protocol_data) > 0)
+				{
+					foreach($protocol_data as $protocol)
+					{
+						$this->RemoveProtocol($protocol);
+					}
+				}
+				elseif(is_string($protocol_data))
+				{
+					$this->RemoveProtocol($protocol_data);
+					return true;
+				}
+				else
+				{
+					trigger_error("kses4::RemoveProtocols() did not receive a string or an array.", E_USER_WARNING);
+					return false;
+				}
+			}
+
+			/**
+			 *	This method removes any NULL or characters in $string.
+			 *
+			 *	@access private
+			 *	@param string $string
+			 *	@return string String without any NULL/chr(173)
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function _no_null($string)
+			{
+				$string = preg_replace('/\0+/', '', $string);
+				$string = preg_replace('/(\\\\0)+/', '', $string);
+				return $string;
+			}
+
+			/**
+			 *	This function removes the HTML JavaScript entities found in early versions of
+			 *	Netscape 4.
+			 *
+			 *	@access private
+			 *	@param string $string
+			 *	@return string String without any NULL/chr(173)
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function _js_entities($string)
+			{
+			  return preg_replace('%&\s*\{[^}]*(\}\s*;?|$)%', '', $string);
+			}
+
+			/**
+			 *	Normalizes HTML entities
+			 *
+			 *	This function normalizes HTML entities. It will convert "AT&T" to the correct
+			 *	"AT&amp;T", "&#00058;" to "&#58;", "&#XYZZY;" to "&amp;#XYZZY;" and so on.
+			 *
+			 *	@access private
+			 *	@param string $string
+			 *	@return string String with normalized entities
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function _normalize_entities($string)
+			{
+				# Disarm all entities by converting & to &amp;
+			  $string = str_replace('&', '&amp;', $string);
+
+				# Change back the allowed entities in our entity white list
+
+			  $string = preg_replace('/&amp;([A-Za-z][A-Za-z0-9]{0,19});/', '&\\1;', $string);
+			  $string = preg_replace('/&amp;#0*([0-9]{1,5});/e', '\$this->_normalize_entities2("\\1")', $string);
+			  $string = preg_replace('/&amp;#([Xx])0*(([0-9A-Fa-f]{2}){1,2});/', '&#\\1\\2;', $string);
+
+			  return $string;
+			}
+
+			/**
+			 *	Helper method used by normalizeEntites()
+			 *
+			 *	This method helps normalizeEntities() to only accept 16 bit values
+			 *	and nothing more for &#number; entities.
+			 *
+			 *	This method helps normalize_entities() during a preg_replace()
+			 *	where a &#(0)*XXXXX; occurs.  The '(0)*XXXXXX' value is converted to
+			 *	a number and the result is returned as a numeric entity if the number
+			 *	is less than 65536.  Otherwise, the value is returned 'as is'.
+			 *
+			 *	@access private
+			 *	@param string $i
+			 *	@return string Normalized numeric entity
+			 *	@see _normalize_entities()
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function _normalize_entities2($i)
+			{
+			  return (($i > 65535) ? "&amp;#$i;" : "&#$i;");
+			}
+
+			/**
+			 *	Allows for additional user defined modifications to text.
+			 *
+			 *	@deprecated use filterKsesTextHook()
+			 *	@param string $string
+			 *	@see filterKsesTextHook()
+			 *	@return string
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function _hook($string)
+			{
+			  return $this->filterKsesTextHook($string);
+			}
+
+			/**
+			 *	Allows for additional user defined modifications to text.
+			 *
+			 *	This method allows for additional modifications to be performed on
+			 *	a string that's being run through Parse().  Currently, it returns the
+			 *	input string 'as is'.
+			 *
+			 *	This method is provided for users to extend the kses class for their own
+			 *	requirements.
+			 *
+			 *	@access public
+			 *	@param string $string String to perfrom additional modifications on.
+			 *	@return string User modified string.
+			 *	@see Parse()
+			 *	@since PHP5 OOP 1.0.0
+			 */
+			function filterKsesTextHook($string)
+			{
+			  return $string;
+			}
+
+			/**
+			 *	This method goes through an array, and changes the keys to all lower case.
+			 *
+			 *	@access private
+			 *	@param array $in_array Associative array
+			 *	@return array Modified array
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function _array_lc($inarray)
+			{
+			  $outarray = array();
+
+				if(is_array($inarray) && count($inarray) > 0)
+				{
+					foreach ($inarray as $inkey => $inval)
+					{
+						$outkey = strtolower($inkey);
+						$outarray[$outkey] = array();
+
+						if(is_array($inval) && count($inval) > 0)
+						{
+							foreach ($inval as $inkey2 => $inval2)
+							{
+								$outkey2 = strtolower($inkey2);
+								$outarray[$outkey][$outkey2] = $inval2;
+							}
+						}
+					}
+				}
+
+			  return $outarray;
+			}
+
+			/**
+			 *	This method searched for HTML tags, no matter how malformed.  It also
+			 *	matches stray ">" characters.
+			 *
+			 *	@access private
+			 *	@param string $string
+			 *	@return string HTML tags
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function _split($string)
+			{
+				return preg_replace(
+					'%(<'.   # EITHER: <
+					'[^>]*'. # things that aren't >
+					'(>|$)'. # > or end of string
+					'|>)%e', # OR: just a >
+					"\$this->_split2('\\1')",
+					$string);
+			}
+
+			/**
+			 *	This method strips out disallowed and/or mangled (X)HTML tags along with assigned attributes.
+			 *
+			 *	This method does a lot of work. It rejects some very malformed things
+			 *	like <:::>. It returns an empty string if the element isn't allowed (look
+			 *	ma, no strip_tags()!). Otherwise it splits the tag into an element and an
+			 *	allowed attribute list.
+			 *
+			 *	@access private
+			 *	@param string $string
+			 *	@return string Modified string minus disallowed/mangled (X)HTML and attributes
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function _split2($string)
+			{
+				$string = $this->_stripslashes($string);
+
+				if (substr($string, 0, 1) != '<')
+				{
+					# It matched a ">" character
+					return '&gt;';
+				}
+
+				if (!preg_match('%^<\s*(/\s*)?([a-zA-Z0-9]+)([^>]*)>?$%', $string, $matches))
+				{
+					# It's seriously malformed
+					return '';
+				}
+
+				$slash    = trim($matches[1]);
+				$elem     = $matches[2];
+				$attrlist = $matches[3];
+
+    			if (
+					!isset($this->allowed_html[strtolower($elem)]) ||
+					!is_array($this->allowed_html[strtolower($elem)])
+				)
+				{
+					# They are using a not allowed HTML element
+					return '';
+				}
+
+				if ($slash != '')
+				{
+					return "<$slash$elem>";
+				}
+				# No attributes are allowed for closing elements
+
+				return $this->_attr("$slash$elem", $attrlist);
+			}
+
+			/**
+			 *	This method strips out disallowed attributes for (X)HTML tags.
+			 *
+			 *	This method removes all attributes if none are allowed for this element.
+			 *	If some are allowed it calls $this->_hair() to split them further, and then it
+			 *	builds up new HTML code from the data that $this->_hair() returns. It also
+			 *	removes "<" and ">" characters, if there are any left. One more thing it
+			 *	does is to check if the tag has a closing XHTML slash, and if it does,
+			 *	it puts one in the returned code as well.
+			 *
+			 *	@access private
+			 *	@param string $element (X)HTML tag to check
+			 *	@param string $attr Text containing attributes to check for validity.
+			 *	@return string Resulting valid (X)HTML or ''
+			 *	@see _hair()
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function _attr($element, $attr)
+			{
+				# Is there a closing XHTML slash at the end of the attributes?
+				$xhtml_slash = '';
+				if (preg_match('%\s/\s*$%', $attr))
+				{
+					$xhtml_slash = ' /';
+				}
+
+				# Are any attributes allowed at all for this element?
+				if (
+					!isset($this->allowed_html[strtolower($element)]) ||
+					count($this->allowed_html[strtolower($element)]) == 0
+				)
+				{
+					return "<$element$xhtml_slash>";
+				}
+
+				# Split it
+				$attrarr = $this->_hair($attr);
+
+				# Go through $attrarr, and save the allowed attributes for this element
+				# in $attr2
+				$attr2 = '';
+				if(is_array($attrarr) && count($attrarr) > 0)
+				{
+					foreach ($attrarr as $arreach)
+					{
+						if(!isset($this->allowed_html[strtolower($element)][strtolower($arreach['name'])]))
+						{
+							continue;
+						}
+
+						$current = $this->allowed_html[strtolower($element)][strtolower($arreach['name'])];
+						if ($current == '')
+						{
+							# the attribute is not allowed
+							continue;
+						}
+
+						if (!is_array($current))
+						{
+							# there are no checks
+							$attr2 .= ' '.$arreach['whole'];
+
+					}
+						else
+						{
+							# there are some checks
+							$ok = true;
+							if(is_array($current) && count($current) > 0)
+							{
+								foreach ($current as $currkey => $currval)
+								{
+									if (!$this->_check_attr_val($arreach['value'], $arreach['vless'], $currkey, $currval))
+									{
+										$ok = false;
+										break;
+									}
+								}
+
+								if ($ok)
+								{
+									# it passed them
+									$attr2 .= ' '.$arreach['whole'];
+								}
+							}
+						}
+					}
+				}
+
+				# Remove any "<" or ">" characters
+				$attr2 = preg_replace('/[<>]/', '', $attr2);
+				return "<$element$attr2$xhtml_slash>";
+			}
+
+			/**
+			 *	This method combs through an attribute list string and returns an associative array of attributes and values.
+			 *
+			 *	This method does a lot of work. It parses an attribute list into an array
+			 *	with attribute data, and tries to do the right thing even if it gets weird
+			 *	input. It will add quotes around attribute values that don't have any quotes
+			 *	or apostrophes around them, to make it easier to produce HTML code that will
+			 *	conform to W3C's HTML specification. It will also remove bad URL protocols
+			 *	from attribute values.
+			 *
+			 *	@access private
+			 *	@param string $attr Text containing tag attributes for parsing
+			 *	@return array Associative array containing data on attribute and value
+      		 *	@since PHP4 OOP 0.0.1
+			 */
+			function _hair($attr)
+			{
+				$attrarr  = array();
+				$mode     = 0;
+				$attrname = '';
+
+				# Loop through the whole attribute list
+
+				while (strlen($attr) != 0)
+				{
+					# Was the last operation successful?
+					$working = 0;
+
+					switch ($mode)
+					{
+						case 0:	# attribute name, href for instance
+							if (preg_match('/^([-a-zA-Z]+)/', $attr, $match))
+							{
+								$attrname = $match[1];
+								$working = $mode = 1;
+								$attr = preg_replace('/^[-a-zA-Z]+/', '', $attr);
+							}
+							break;
+						case 1:	# equals sign or valueless ("selected")
+							if (preg_match('/^\s*=\s*/', $attr)) # equals sign
+							{
+								$working = 1;
+								$mode    = 2;
+								$attr    = preg_replace('/^\s*=\s*/', '', $attr);
+								break;
+							}
+							if (preg_match('/^\s+/', $attr)) # valueless
+							{
+								$working   = 1;
+								$mode      = 0;
+								$attrarr[] = array(
+									'name'  => $attrname,
+									'value' => '',
+									'whole' => $attrname,
+									'vless' => 'y'
+								);
+								$attr      = preg_replace('/^\s+/', '', $attr);
+							}
+							break;
+						case 2: # attribute value, a URL after href= for instance
+							if (preg_match('/^"([^"]*)"(\s+|$)/', $attr, $match)) # "value"
+							{
+								$thisval   = $this->_bad_protocol($match[1]);
+								$attrarr[] = array(
+									'name'  => $attrname,
+									'value' => $thisval,
+									'whole' => "$attrname=\"$thisval\"",
+									'vless' => 'n'
+								);
+								$working   = 1;
+								$mode      = 0;
+								$attr      = preg_replace('/^"[^"]*"(\s+|$)/', '', $attr);
+								break;
+							}
+							if (preg_match("/^'([^']*)'(\s+|$)/", $attr, $match)) # 'value'
+							{
+								$thisval   = $this->_bad_protocol($match[1]);
+								$attrarr[] = array(
+									'name'  => $attrname,
+									'value' => $thisval,
+									'whole' => "$attrname='$thisval'",
+									'vless' => 'n'
+								);
+								$working   = 1;
+								$mode      = 0;
+								$attr      = preg_replace("/^'[^']*'(\s+|$)/", '', $attr);
+								break;
+							}
+							if (preg_match("%^([^\s\"']+)(\s+|$)%", $attr, $match)) # value
+							{
+								$thisval   = $this->_bad_protocol($match[1]);
+								$attrarr[] = array(
+									'name'  => $attrname,
+									'value' => $thisval,
+									'whole' => "$attrname=\"$thisval\"",
+									'vless' => 'n'
+								);
+								# We add quotes to conform to W3C's HTML spec.
+								$working   = 1;
+								$mode      = 0;
+								$attr      = preg_replace("%^[^\s\"']+(\s+|$)%", '', $attr);
+							}
+							break;
+					}
+
+					if ($working == 0) # not well formed, remove and try again
+					{
+						$attr = $this->_html_error($attr);
+						$mode = 0;
+					}
+				}
+
+				# special case, for when the attribute list ends with a valueless
+				# attribute like "selected"
+				if ($mode == 1)
+				{
+					$attrarr[] = array(
+						'name'  => $attrname,
+						'value' => '',
+						'whole' => $attrname,
+						'vless' => 'y'
+					);
+				}
+
+				return $attrarr;
+			}
+
+			/**
+			 *	This method removes disallowed protocols.
+			 *
+			 *	This method removes all non-allowed protocols from the beginning of
+			 *	$string. It ignores whitespace and the case of the letters, and it does
+			 *	understand HTML entities. It does its work in a while loop, so it won't be
+			 *	fooled by a string like "javascript:javascript:alert(57)".
+			 *
+			 *	@access private
+			 *	@param string $string String to check for protocols
+			 *	@return string String with removed protocols
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function _bad_protocol($string)
+			{
+				$string  = $this->_no_null($string);
+				$string = preg_replace('/\xad+/', '', $string); # deals with Opera "feature"
+				$string2 = $string.'a';
+
+				while ($string != $string2)
+				{
+					$string2 = $string;
+					$string  = $this->_bad_protocol_once($string);
+				} # while
+
+				return $string;
+			}
+
+			/**
+			 *	Helper method used by _bad_protocol()
+			 *
+			 *	This function searches for URL protocols at the beginning of $string, while
+			 *	handling whitespace and HTML entities.
+			 *
+			 *	@access private
+			 *	@param string $string String to check for protocols
+			 *	@return string String with removed protocols
+			 *	@see _bad_protocol()
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function _bad_protocol_once($string)
+			{
+				return preg_replace(
+					'/^((&[^;]*;|[\sA-Za-z0-9])*)'.
+					'(:|&#58;|&#[Xx]3[Aa];)\s*/e',
+					'\$this->_bad_protocol_once2("\\1")',
+					$string
+				);
+			}
+
+			/**
+			 *	Helper method used by _bad_protocol_once() regex
+			 *
+			 *	This function processes URL protocols, checks to see if they're in the white-
+			 *	list or not, and returns different data depending on the answer.
+			 *
+			 *	@access private
+			 *	@param string $string String to check for protocols
+			 *	@return string String with removed protocols
+			 *	@see _bad_protocol()
+			 *	@see _bad_protocol_once()
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function _bad_protocol_once2($string)
+			{
+				$string = $this->_decode_entities($string);
+				$string = preg_replace('/\s/', '', $string);
+				$string = $this->_no_null($string);
+				$string = preg_replace('/\xad+/', '', $string); # deals with Opera "feature"
+				$string = strtolower($string);
+
+				$allowed = false;
+				if(is_array($this->allowed_protocols) && count($this->allowed_protocols) > 0)
+				{
+					foreach ($this->allowed_protocols as $one_protocol)
+					{
+						if (strtolower($one_protocol) == $string)
+    					{
+							$allowed = true;
+							break;
+						}
+					}
+				}
+
+				if ($allowed)
+				{
+					return "$string:";
+				}
+				else
+				{
+					return '';
+				}
+			}
+
+			/**
+			 *	This function performs different checks for attribute values.
+			 *
+			 *	The currently implemented checks are "maxlen", "minlen", "maxval",
+			 *	"minval" and "valueless" with even more checks to come soon.
+			 *
+			 *	@access private
+			 *	@param string $value The value of the attribute to be checked.
+			 *	@param string $vless Indicates whether the the value is supposed to be valueless
+			 *	@param string $checkname The check to be performed
+			 *	@param string $checkvalue The value that is to be checked against
+			 *	@return bool Indicates whether the check passed or not
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function _check_attr_val($value, $vless, $checkname, $checkvalue)
+			{
+				$ok = true;
+
+				switch (strtolower($checkname))
+				{
+					/**
+					*	The maxlen check makes sure that the attribute value has a length not
+					*	greater than the given value. This can be used to avoid Buffer Overflows
+					*	in WWW clients and various Internet servers.
+					*/
+					case 'maxlen':
+						if (strlen($value) > $checkvalue)
+						{
+							$ok = false;
+						}
+						break;
+
+					/**
+					*	The minlen check makes sure that the attribute value has a length not
+					*	smaller than the given value.
+					*/
+					case 'minlen':
+						if (strlen($value) < $checkvalue)
+						{
+							$ok = false;
+						}
+						break;
+
+					/**
+					*	The maxval check does two things: it checks that the attribute value is
+					*	an integer from 0 and up, without an excessive amount of zeroes or
+					*	whitespace (to avoid Buffer Overflows). It also checks that the attribute
+					*	value is not greater than the given value.
+					*	This check can be used to avoid Denial of Service attacks.
+					*/
+					case 'maxval':
+						if (!preg_match('/^\s{0,6}[0-9]{1,6}\s{0,6}$/', $value))
+						{
+							$ok = false;
+						}
+						if ($value > $checkvalue)
+						{
+							$ok = false;
+						}
+						break;
+
+					/**
+					*	The minval check checks that the attribute value is a positive integer,
+					*	and that it is not smaller than the given value.
+					*/
+					case 'minval':
+						if (!preg_match('/^\s{0,6}[0-9]{1,6}\s{0,6}$/', $value))
+						{
+							$ok = false;
+						}
+						if ($value < $checkvalue)
+						{
+							$ok = false;
+						}
+						break;
+
+					/**
+					*	The valueless check checks if the attribute has a value
+					*	(like <a href="blah">) or not (<option selected>). If the given value
+					*	is a "y" or a "Y", the attribute must not have a value.
+					*	If the given value is an "n" or an "N", the attribute must have one.
+					*/
+					case 'valueless':
+					if (strtolower($checkvalue) != $vless)
+					{
+						$ok = false;
+					}
+					break;
+
+				}
+
+				return $ok;
+			}
+
+			/**
+			 *	Changes \" to "
+			 *
+			 *	This function changes the character sequence  \"  to just  "
+			 *	It leaves all other slashes alone. It's really weird, but the quoting from
+			 *	preg_replace(//e) seems to require this.
+			 *
+			 *	@access private
+			 *	@param string $string The string to be stripped.
+			 *	@return string string stripped of \"
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function _stripslashes($string)
+			{
+				return preg_replace('%\\\\"%', '"', $string);
+			}
+
+			/**
+			 *	helper method for _hair()
+			 *
+			 *	This function deals with parsing errors in _hair(). The general plan is
+			 *	to remove everything to and including some whitespace, but it deals with
+			 *	quotes and apostrophes as well.
+			 *
+			 *	@access private
+			 *	@param string $string The string to be stripped.
+			 *	@return string string stripped of whitespace
+			 *	@see _hair()
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function _html_error($string)
+			{
+				return preg_replace('/^("[^"]*("|$)|\'[^\']*(\'|$)|\S)*\s*/', '', $string);
+			}
+
+			/**
+			 *	Decodes numeric HTML entities
+			 *
+			 *	This method decodes numeric HTML entities (&#65; and &#x41;). It doesn't
+			 *	do anything with other entities like &auml;, but we don't need them in the
+			 *	URL protocol white listing system anyway.
+			 *
+			 *	@access private
+			 *	@param string $value The entitiy to be decoded.
+			 *	@return string Decoded entity
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function _decode_entities($string)
+			{
+				$string = preg_replace('/&#([0-9]+);/e', 'chr("\\1")', $string);
+				$string = preg_replace('/&#[Xx]([0-9A-Fa-f]+);/e', 'chr(hexdec("\\1"))', $string);
+				return $string;
+			}
+
+			/**
+			 *	Returns PHP4 OOP version # of kses.
+			 *
+			 *	Since this class has been refactored and documented and proven to work,
+			 *	I'm syncing the version number to procedural kses.
+			 *
+			 *	@access public
+			 *	@return string Version number
+			 *	@since PHP4 OOP 0.0.1
+			 */
+			function _version()
+			{
+				return 'PHP4 0.2.2 (OOP fork of procedural kses 0.2.2)';
+			}
+		}
+	}
 ?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/classes/navbar.class.php 1.4.1.src/cpanel-glprivate/system/classes/navbar.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/classes/navbar.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/classes/navbar.class.php	2006-09-09 09:41:53.000000000 -0500
@@ -31,8 +31,8 @@
 //
 
 /**
-* This class will allow you to setup and generate a CSS Tab Menu
-* Version 1.0 June 4, 2005
+* This class will allow you to setup and generate a CSS Tab Menu and breadcrumb link trail
+* Version 1.1 June 4, 2006
 *
 * @author       Blaine Lang <blaine@portalparts.com>
 *
@@ -55,7 +55,7 @@
         $navbar->add_menuitem('Admin Home',$_CONF['site_admin_url'] . '/moderation.php');
     }
 
-    // Add a Menuiem which activates a Javascript function when the onClick event is triggered
+    // Add a Menuitem which activates a Javascript function when the onClick event is triggered
     $navbar->add_menuitem('On click test','alert("This works");',true);
 
     // Add a new Menuitem which may or may not have a URL to redirect to but also triggers an onClick JS function
@@ -67,6 +67,16 @@
     $navbar->set_selected('My Calendar');
     echo $navbar->generate();
 
+    // Generate a breadcrumb trail
+    $navbar->openBreadcrumbs();
+    $navbar->add_breadcrumbs("{$_CONF['site_url']}/index.php",'home']);
+
+   // Adds just a label, not a link as the last breadcrumb
+    $navbar->add_lastBreadcrumb('myplugin');
+
+    // Close and generate the breakcrumb trail
+    echo $navbar->closeBreadcrumbs();
+
 */
 
 
@@ -89,7 +99,10 @@
     * @access private
     */
     var $_onclick;      // Array
-
+    
+    var $_bctemplate = NULL;     // Template to use for Breadcrumbs
+    
+    var $_numbreadcrumbs = 0;   // Number of Breadcrumb links added
 
     /**
     * Constructor
@@ -135,8 +148,7 @@
         $navtemplate = new Template($_CONF['path_layout'] . 'navbar');
         $navtemplate->set_file (array (
             'navbar'       => 'navbar.thtml',
-            'menuitem'     => 'menuitem.thtml',
-            ));
+            'menuitem'     => 'menuitem.thtml'));
 
         if ($this->_parms != '') {
             $navtemplate->set_var( 'parms',  $this->_parms);
@@ -168,6 +180,44 @@
         $retval = $navtemplate->finish($navtemplate->get_var('output'));
         return $retval;
     }
+    
+    function openBreadcrumbs() {
+        global $_CONF;
+        $this->_bctemplate = new Template($_CONF['path_layout'] . 'navbar');
+        $this->_bctemplate->set_file (array (
+            'breadcrumbs'   => 'breadcrumbs.thtml',
+            'link'          => 'breadcrumb_link.thtml'));
+    }
+    
+    function add_breadcrumbs($url,$label,$title='') {
+        if ($this->_numbreadcrumbs == '') {
+            $this->_numbreadcrumbs = 0;
+        }
+        $this->_bctemplate->set_var('link_url',$url);
+        $this->_bctemplate->set_var('link_label',$label);
+        $this->_bctemplate->set_var('link_title',$title);
+        if ($this->_numbreadcrumbs > 0) {
+            $this->_bctemplate->set_var('link_separator','/&nbsp;');
+     
+        }  else {
+            $this->_bctemplate->set_var('link_separator','');
+        }            
+        $this->_bctemplate->parse('breadcrumb_links','link',true);
+        $this->_numbreadcrumbs = $this->_numbreadcrumbs + 1;
+    }
+    
+    function add_lastBreadcrumb($label) {
+        if (trim($label) != '') {
+            $label = "/&nbsp;$label";
+            $this->_bctemplate->set_var('last_label',$label);
+        }           
+    }      
+
+    function closeBreadcrumbs() {
+        $this->_bctemplate->parse('output', 'breadcrumbs');
+        return $this->_bctemplate->finish ($this->_bctemplate->get_var('output'));         
+    }    
+    
 
 }
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/classes/plugin.class.php 1.4.1.src/cpanel-glprivate/system/classes/plugin.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/classes/plugin.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/classes/plugin.class.php	2006-07-09 08:45:54.000000000 -0500
@@ -2,15 +2,15 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Geeklog 1.3                                                               |
+// | Geeklog 1.4                                                               |
 // +---------------------------------------------------------------------------+
 // | plugin.class.php                                                          |
-// | Geeklog plugin class.                                                     |
 // |                                                                           |
+// | Geeklog plugin class.                                                     |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000,2001 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
-// | Authors: Tony Bibbs, tony@tonybibbs.com                                   |
+// | Authors: Tony Bibbs, tony AT tonybibbs DOT com                            |
 // +---------------------------------------------------------------------------+
 // |                                                                           |
 // | This program is free software; you can redistribute it and/or             |
@@ -29,13 +29,13 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: plugin.class.php,v 1.9 2003/05/02 04:04:18 tony Exp $
+// $Id: plugin.class.php,v 1.10 2006/07/09 13:45:54 dhaun Exp $
 
 /**
-* This is a poorly thought out class that is used pretty much as a structure when
-* we need to pass plugin data back and forth
+* This is a poorly thought out class that is used pretty much as a structure
+* when we need to pass plugin data back and forth
 *
-* @author   Tony Bibbs <tony@tonybibbs.com>
+* @author   Tony Bibbs <tony AT tonybibbs DOT com>
 *
 */
 class Plugin {
@@ -103,6 +103,7 @@
         $this->submissionhelpfile = '';
         $this->getsubmissionssql = '';
         $this->submissionheading = array();
+        $this->supports_paging = false;
     }
    
     /**
@@ -173,4 +174,4 @@
     }
 }
 
-?>
\ No newline at end of file
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/classes/sanitize.class.php 1.4.1.src/cpanel-glprivate/system/classes/sanitize.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/classes/sanitize.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/classes/sanitize.class.php	2006-09-09 07:52:06.000000000 -0500
@@ -2,17 +2,17 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Geeklog 1.3                                                               |
+// | Geeklog 1.4                                                               |
 // +---------------------------------------------------------------------------+
 // | sanitize.class.php                                                        |
 // |                                                                           |
 // | Geeklog data filtering or sanitizing class library.                       |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2002-2004 by the following authors:                         |
+// | Copyright (C) 2002-2006 by the following authors:                         |
 // |                                                                           |
-// | Authors: Tony Bibbs       - tony@tonybibbs.com                            |
-// |          Dirk Haun        - dirk@haun-online.de                           |
-// |          Blaine Lang      - blaine@portalparts.com                        |
+// | Authors: Tony Bibbs       - tony AT tonybibbs DOT com                     |
+// |          Dirk Haun        - dirk AT haun-online DOT de                    |
+// |          Blaine Lang      - blaine AT portalparts DOT com                 |
 // +---------------------------------------------------------------------------+
 // |                                                                           |
 // | This program is free software; you can redistribute it and/or             |
@@ -56,7 +56,6 @@
 
     /* Filter or sanitize single parm */
     function filterparm ($parm) {
-        global $_SERVER;
 
         $p = $this->Parse( $parm );
 
@@ -212,17 +211,17 @@
         // handle [code] ... [/code]
         do
         {
-            $start_pos = strpos( strtolower( $message ), '[code]' );
+            $start_pos = MBYTE_substr( MBYTE_strtolower( $message ), '[code]' );
             if( $start_pos !== false )
             {
-                $end_pos = strpos( strtolower( $message ), '[/code]' );
+                $end_pos = MBYTE_substr( MBYTE_strtolower( $message ), '[/code]' );
                 if( $end_pos !== false )
                 {
-                    $encoded = $this->_handleCode( substr( $message, $start_pos + 6,
+                    $encoded = $this->_handleCode( MBYTE_substr( $message, $start_pos + 6,
                             $end_pos - ( $start_pos + 6 )));
                     $encoded = '<pre><code>' . $encoded . '</code></pre>';
-                    $message = substr( $message, 0, $start_pos ) . $encoded
-                         . substr( $message, $end_pos + 7 );
+                    $message = MBYTE_substr( $message, 0, $start_pos ) . $encoded
+                         . MBYTE_substr( $message, $end_pos + 7 );
                 }
                 else // missing [/code]
                 {
@@ -230,9 +229,9 @@
                     // special characters). However, the calling entity should
                     // better be checking for missing [/code] before calling this
                     // function ...
-                    $encoded = $this->_handleCode( substr( $message, $start_pos + 6 ));
+                    $encoded = $this->_handleCode( MBYTE_substr( $message, $start_pos + 6 ));
                     $encoded = '<pre><code>' . $encoded . '</code></pre>';
-                    $message = substr( $message, 0, $start_pos ) . $encoded;
+                    $message = MBYTE_substr( $message, 0, $start_pos ) . $encoded;
                 }
             }
         }
@@ -303,7 +302,7 @@
 
                 for( $i = 0; $i < count( $_CONF['censorlist']); $i++ )
                 {
-                    $editedMessage = eregi_replace( $regExPrefix . $_CONF['censorlist'][$i] . $regExSuffix, "\\1$replacement\\2", $editedMessage );
+                    $editedMessage = MBYTE_eregi_replace( $regExPrefix . $_CONF['censorlist'][$i] . $regExSuffix, "\\1$replacement\\2", $editedMessage );
                 }
             }
         }
@@ -320,8 +319,6 @@
         $this->logging = $state;
     }
 
-
 }
 
-
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/classes/search.class.php 1.4.1.src/cpanel-glprivate/system/classes/search.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/classes/search.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/classes/search.class.php	2006-10-07 03:38:24.000000000 -0500
@@ -8,7 +8,7 @@
 // |                                                                           |
 // | Geeklog search class.                                                     |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs       - tony AT geeklog DOT net                       |
 // |          Dirk Haun        - dirk AT haun-online DOT de                    |
@@ -30,7 +30,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: search.class.php,v 1.49.2.1 2006/06/30 12:20:48 dhaun Exp $
+// $Id: search.class.php,v 1.57 2006/10/07 08:38:24 dhaun Exp $
 
 if (strpos ($_SERVER['PHP_SELF'], 'search.class.php') !== false) {
     die ('This file can not be used on its own.');
@@ -274,9 +274,9 @@
             if (!empty($this->_author) && ($this->_author > 0)) {
                 $sql .= "AND (s.uid = '$this->_author') ";
             }
-            $permsql = COM_getPermSQL ('AND') . COM_getTopicSQL ('AND');
-            $sql .= $permsql;
-            $sql .= ' ORDER BY date DESC ';
+            $sql .= COM_getPermSQL ('AND') . COM_getTopicSQL ('AND');
+            $sql .= COM_getLangSQL ('sid', 'AND');
+            $sql .= ' GROUP BY date, username, fullname, u.uid, s.uid, sid, title, hits , s.introtext, s.bodytext ORDER BY date DESC ';
             $l = ($this->_per_page * $this->_page) - $this->_per_page;
             $sql .= 'LIMIT ' . $l . ',' . $this->_per_page;
 
@@ -288,8 +288,12 @@
             $story_results->searchlabel = $LANG09[53];
             $story_results->addSearchHeading($LANG09[16]);
             $story_results->addSearchHeading($LANG09[17]);
-            $story_results->addSearchHeading($LANG09[18]);
-            $story_results->addSearchHeading($LANG09[23]);
+            if ($_CONF['contributedbyline'] == 1) {
+                $story_results->addSearchHeading($LANG09[18]);
+            }
+            if ($_CONF['hideviewscount'] == 0) {
+                $story_results->addSearchHeading($LANG09[23]);
+            }
             $story_results->num_searchresults = 0;
             $story_results->num_itemssearched = $B[0];
             $story_results->supports_paging = true;
@@ -317,15 +321,20 @@
                              . '">' . $author . '</a>';
                 }
                 $row = array ('<a href="' . $articleUrl . '">'
-                              . stripslashes ($A['title']) . '</a>',
-                              $thetime[0], $profile,
-                              COM_NumberFormat ($A['hits']));
+                                          . stripslashes ($A['title']) . '</a>',
+                              $thetime[0]);
+                if ($_CONF['contributedbyline'] == 1) {
+                    $row[] = $profile;
+                }
+                if ($_CONF['hideviewscount'] == 0) {
+                    $row[] = COM_NumberFormat ($A['hits']);
+                }
                 $story_results->addSearchResult ($row);
                 $story_results->num_searchresults++;
             }
         } else {
             $story_results = new Plugin();
-            $story_results->searchlabel = $LANG09[37];
+            $story_results->searchlabel = $LANG09[53];
             $story_results->num_itemssearched = 0;
         }
 
@@ -348,6 +357,7 @@
 
             $stsql = COM_getPermSQL ('AND', 0, 2, $_TABLES['stories']);
             $stsql .= COM_getTopicSQL ('AND');
+            $stsql .= COM_getLangSQL ('sid', 'AND', $_TABLES['stories']);
 
             $stwhere = '';
 
@@ -365,7 +375,7 @@
             $sql .= "LEFT JOIN {$_TABLES['stories']} ON (({$_TABLES['stories']}.sid = {$_TABLES['comments']}.sid)" . $stsql . ") ";
             $sql .= "WHERE ";
             $sql .= " {$_TABLES['users']}.uid = {$_TABLES['comments']}.uid AND ";
-            $sql .= "({$_TABLES['stories']}.draft_flag = 0) AND ({$_TABLES['stories']}.date <= NOW()) ";
+            $sql .= "({$_TABLES['stories']}.draft_flag = 0) AND ({$_TABLES['stories']}.commentcode = 0) AND ({$_TABLES['stories']}.date <= NOW()) ";
 
             if (!empty ($this->_query)) {
                 if($this->_keyType == 'phrase') {
@@ -420,7 +430,7 @@
                 $sql .= "AND ({$_TABLES['comments']}.uid = '$this->_author') ";
             }
             $sql .= 'AND (' .  $stwhere . ') ';
-            $sql .= "ORDER BY {$_TABLES['comments']}.date DESC ";
+            $sql .= " GROUP BY {$_TABLES['comments']}.date, {$_TABLES['comments']}.title, {$_TABLES['comments']}.comment, {$_TABLES['comments']}.pid, {$_TABLES['comments']}.cid, {$_TABLES['comments']}.uid, {$_TABLES['comments']}.sid, {$_TABLES['comments']}.type, {$_TABLES['stories']}.sid, {$_TABLES['users']}.fullname, {$_TABLES['users']}.username ORDER BY {$_TABLES['comments']}.date DESC ";
             $l = ($this->_per_page * $this->_page) - $this->_per_page;
             $sql .= 'LIMIT ' . $l . ',' . $this->_per_page;
 
@@ -478,129 +488,6 @@
         return $comment_results;
     }
 
-    /**
-    * Performs search on all events
-    *
-    * @author Tony Bibbs <tony AT geeklog DOT net>
-    * @access private
-    *
-    */
-    function _searchEvents()
-    {
-        global $_CONF, $_TABLES, $LANG09, $LANG12;
-
-        if (($this->_type == 'events') OR
-            (($this->_type == 'all') AND empty($this->_author))) {
-            $select = "SELECT eid,title,description,location,datestart,dateend,timestart,timeend,allday,UNIX_TIMESTAMP(datestart) AS day";
-            $sql = " FROM {$_TABLES['events']} WHERE ";
-
-            if($this->_keyType == 'phrase') {
-                // do an exact phrase search (default)
-                $mywords[] = $this->_query;
-                $mysearchterm = addslashes ($this->_query);
-                $sql .= "(location LIKE '%$mysearchterm%'  ";
-                $sql .= "OR description LIKE '%$mysearchterm%' ";
-                $sql .= "OR title LIKE '%$mysearchterm%') ";
-            }
-            elseif($this->_keyType == 'all') {
-                //must contain ALL of the keywords
-                $mywords = explode(' ', $this->_query);
-                $tmp = '';
-                foreach ($mywords AS $mysearchterm) {
-                    $mysearchterm = addslashes (trim ($mysearchterm));
-                    $tmp .= "(location LIKE '%$mysearchterm%' OR ";
-                    $tmp .= "description LIKE '%$mysearchterm%' OR ";
-                    $tmp .= "title LIKE '%$mysearchterm%') AND ";
-                }
-                $tmp = substr($tmp, 0, strlen($tmp) - 4);
-                $sql .= $tmp;
-            } elseif($this->_keyType == 'any') {
-                //must contain ANY of the keywords
-                $mywords = explode(' ', $this->_query);
-                $tmp = '';
-                foreach ($mywords AS $mysearchterm) {
-                    $mysearchterm = addslashes (trim ($mysearchterm));
-                    $tmp .= "(location LIKE '%$mysearchterm%' OR ";
-                    $tmp .= "description LIKE '%$mysearchterm%' OR ";
-                    $tmp .= "title LIKE '%$mysearchterm%') OR ";
-                }
-                $tmp = substr($tmp, 0, strlen($tmp) - 3);
-                $sql .= "($tmp)";
-            }
-            else
-            {
-                $mywords[] = $this->_query;
-                $mysearchterm = addslashes ($this->_query);
-                $sql .= "(location LIKE '%$mysearchterm%' ";
-                $sql .= "OR description LIKE '%$mysearchterm%' ";
-                $sql .= "OR title LIKE '%$mysearchterm%') ";
-            }
-
-            if (!empty($this->_dateStart) AND !empty($this->_dateEnd)) {
-                $delim = substr($this->_dateStart, 4, 1);
-                if (!empty($delim)) {
-                    $DS = explode($delim, $this->_dateStart);
-                    $DE = explode($delim, $this->_dateEnd);
-                    $startdate = mktime(0, 0, 0, $DS[1], $DS[2], $DS[0]);
-                    $enddate = mktime(23, 59, 59, $DE[1], $DE[2], $DE[0]);
-                    $sql .= "AND (UNIX_TIMESTAMP(datestart) BETWEEN '$startdate' AND '$enddate') ";
-                }
-            }
-            $sql .= COM_getPermSQL ('AND');
-            $sql .= ' ORDER BY datestart DESC ';
-            $l = ($this->_per_page * $this->_page) - $this->_per_page;
-            $sql .= 'LIMIT ' . $l . ',' . $this->_per_page;
-
-            $result_events = DB_query ($select . $sql);
-            $result_count = DB_query ('SELECT COUNT(*)' . $sql);
-            $B = DB_fetchArray ($result_count, true);
-
-            $event_results = new Plugin();
-            $event_results->searchresults = array();
-            $event_results->searchlabel = $LANG09[37];
-            $event_results->addSearchHeading($LANG09[16]);
-            $event_results->addSearchHeading($LANG09[49]);
-            $event_results->addSearchHeading($LANG09[34]);
-            $event_results->addSearchHeading($LANG12[15]);
-            $event_results->num_searchresults = 0;
-            $event_results->num_itemssearched = $B[0];
-            $event_results->supports_paging = true;
-
-            // NOTE if any of your data items need to be links then add them
-            // here! Make sure data elements are in an array and in the same
-            // order as your headings above!
-            while ($A = DB_fetchArray ($result_events)) {
-                if ($A['allday'] == 0) {
-                    $fulldate = $A['datestart'] . ' ' . $A['timestart'] . ' - '
-                              . $A['dateend'] . ' ' . $A['timeend'];
-                } else {
-                    if ($A['datestart'] <> $A['dateend']) {
-                        $fulldate = $A['datestart'] . ' - ' . $A['dateend']
-                                  . ' ' . $LANG09[35];
-                    } else {
-                        $fulldate = $A['datestart'] . ' ' . $LANG09[35];
-                    }
-                }
-                $thetime = COM_getUserDateTimeFormat ($A['day']);
-                $A['title'] = stripslashes ($A['title']);
-                $A['title'] = str_replace ('$', '&#36;', $A['title']);
-                $row = array ('<a href="' . $_CONF['site_url']
-                              . '/calendar_event.php?eid=' . $A['eid'] . '">'
-                              . $A['title'] . '</a>', $fulldate,
-                              stripslashes ($A['location']),
-                              stripslashes ($A['description']));
-                $event_results->addSearchResult($row);
-                $event_results->num_searchresults++;
-            }
-        } else {
-            $event_results = new Plugin();
-            $event_results->searchlabel = $LANG09[37];
-            $event_results->num_itemssearched = 0;
-        }
-
-        return $event_results;
-    }
-
     function _showPager($resultPage, $pages, $extra='')
     {
         global $_CONF, $LANG09;
@@ -818,9 +705,10 @@
             $next = $LANG09[58];
         }
         $searchUrl .= $queryUrl;
-        $searchmain->set_var ('search_pager',
-                COM_printPageNavigation ($searchUrl, $this->_page, $numpages,
-                                         'page=', false, '', $next));
+        $paging = COM_printPageNavigation ($searchUrl, $this->_page, $numpages,
+                                           'page=', false, '', $next);
+        $searchmain->set_var ('search_pager', $paging);
+        $searchmain->set_var ('google_paging', $paging);
         $tmpTxt = sprintf ($LANG09[24], $totalfound);
         $searchmain->set_var ('lang_found', $tmpTxt);
         if (($totalfound == 0) && ($this->_page == 1)) {
@@ -999,7 +887,6 @@
         $searchform->set_var('lang_stories', $LANG09[6]);
         $searchform->set_var('lang_comments', $LANG09[7]);
         $searchform->set_var('lang_links', $LANG09[39]);
-        $searchform->set_var('lang_events', $LANG09[40]);
         $searchform->set_var('lang_results', $LANG09[59]);
         $searchform->set_var('lang_per_page', $LANG09[60]);
 
@@ -1045,14 +932,11 @@
         $all_selected = '';
         $stories_selected = '';
         $comments_selected = '';
-        $events_selected = '';
         if (!$plugin_selected) {
             if ($this->_type == 'stories') {
                 $stories_selected = 'selected="selected"';
             } else if ($this->_type == 'comments') {
                 $comments_selected = 'selected="selected"';
-            } else if ($this->_type == 'events') {
-                $events_selected = 'selected="selected"';
             } else {
                 $all_selected = 'selected="selected"';
             }
@@ -1060,7 +944,6 @@
         $searchform->set_var ('type_all_selected', $all_selected);
         $searchform->set_var ('stories_selected', $stories_selected);
         $searchform->set_var ('comments_selected', $comments_selected);
-        $searchform->set_var ('events_selected', $events_selected);
 
         if ($_CONF['contributedbyline'] == 1) {
             $searchform->set_var('lang_authors', $LANG09[8]);
@@ -1140,7 +1023,6 @@
         // Do searches
         $this->story_results = $this->_searchStories();
         $this->comment_results = $this->_searchComments();
-        $this->event_results = $this->_searchEvents();
 
         // Have plugins do their searches
         list($nrows_plugins, $total_plugins, $result_plugins) = PLG_doSearch($this->_query, $this->_dateStart, $this->_dateEnd, $this->_topic, $this->_type, $this->_author, $this->_keyType, $this->_page, $this->_per_page);
@@ -1148,15 +1030,12 @@
         // Add the core GL object search results to plugin results
         $nrows_plugins += $this->story_results->num_searchresults;
         $nrows_plugins += $this->comment_results->num_searchresults;
-        $nrows_plugins += $this->event_results->num_searchresults;
-
         $total_plugins += $this->story_results->num_itemssearched;
         $total_plugins += $this->comment_results->num_itemssearched;
-        $total_plugins += $this->event_results->num_itemssearched;
 
         // Move GL core objects to front of array
         array_unshift ($result_plugins, $this->story_results,
-                       $this->comment_results, $this->event_results);
+                       $this->comment_results);
 
         // Searches are done, stop timer
         $searchtime = $searchtimer->stopTimer();
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/classes/syndication/atom.feed.class.php 1.4.1.src/cpanel-glprivate/system/classes/syndication/atom.feed.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/classes/syndication/atom.feed.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/classes/syndication/atom.feed.class.php	2006-05-18 15:27:31.000000000 -0500
@@ -26,7 +26,7 @@
   /*  3. This notice may not be removed or altered from any source            */
   /*     distribution.                                                        */
   /****************************************************************************/
-  // $Id: atom.feed.class.php,v 1.9 2005/12/03 11:57:40 mjervis Exp $
+  // $Id: atom.feed.class.php,v 1.11 2006/05/18 20:27:31 mjervis Exp $
 
   /**
     * Provides feed handlers for Atom 0.3 and Atom 1.0
@@ -98,7 +98,7 @@
       }
       if( array_key_exists( 'summary', $article ) )
       {
-        if( strlen( $article['summary'] ) > 0 )
+        if( !empty( $article['summary'] ) )
         {
           $xml .= '<content type="text/html" mode="escaped">'
                           . $this->_safeXML ($article['summary'])
@@ -289,7 +289,7 @@
       }
       if( array_key_exists( 'summary', $article ) )
       {
-        if( strlen( $article['summary'] ) > 0 )
+        if( !empty( $article['summary'] ) )
         {
           $xml .= '<content type="html">'
                           . $this->_safeXML ($article['summary'])
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/classes/syndication/parserfactory.class.php 1.4.1.src/cpanel-glprivate/system/classes/syndication/parserfactory.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/classes/syndication/parserfactory.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/classes/syndication/parserfactory.class.php	2006-08-03 15:35:53.000000000 -0500
@@ -47,6 +47,7 @@
     var $readerName;
     var $reader;
     var $userAgent;
+    var $errorStatus;
 
     /**
       * Constructor, loads feedparser classes into memory.
@@ -178,9 +179,11 @@
       {
         $req->addHeader('User-Agent', $this->userAgent);
       }
-      if (!PEAR::isError($req->sendRequest())) {
+      $response = $req->sendRequest();
+      if (!PEAR::isError($response)) {
         return $req->getResponseBody();
       } else {
+      	$this->errorStatus = array('HTTP Fetch Failed', $response->getCode(), $response->getMessage());
         return false;
       }
     }
@@ -204,6 +207,10 @@
 
       if( !xml_parse( $xml_parser, $data ) )
       {
+        $this->errorStatus = array( 'Unable to parse XML',
+                'Error Code: '.xml_get_error_code( $xml_parser  ),
+                'Error Message: '.xml_error_string( xml_get_error_code( $xml_parser  ) )
+        		    );
         xml_parser_free( $xml_parser );
         return false;
       }
@@ -213,6 +220,7 @@
       {
         return $this->reader;
       } else {
+      	$this->errorStatus = array( 'Unidentified feed type.', '', '' );
         return false;
       }
     }
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/classes/syndication/rss.feed.class.php 1.4.1.src/cpanel-glprivate/system/classes/syndication/rss.feed.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/classes/syndication/rss.feed.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/classes/syndication/rss.feed.class.php	2006-03-09 12:15:05.000000000 -0600
@@ -266,6 +266,31 @@
     }
 
     /**
+      * Generate an RFC-822 compliant date-time stamp.
+      *
+      * @param timestamp $timestamp Date time to format.
+      */
+    function _RFC822DateFormat($timestamp='')
+    {
+    	// Cache the current timezone:
+    	$cache_timezone = setlocale(LC_TIME,0);
+    	// Time locales that will give us the required output
+    	$timezones = array('en_GB','en_US');
+    	setlocale(LC_TIME,$timezones); // set to whichever the system supports.
+    	// format the date
+    	if(!empty($timestamp))
+    	{
+    		$time = strftime( '%a, %d %b %Y %H:%M:%S %z', $timestamp);
+    	} else {
+    		$time = strftime( '%a, %d %b %Y %H:%M:%S %z' );
+    	}
+    	// Set the timezone back
+    	setlocale(LC_TIME, $cache_timezone);
+    	// return the time
+    	return $time;
+    }
+
+    /**
       * Format an article into an RSS 2.0 <item> tag.
       *
       * Takes an associative article array and turns it into an XML definition
@@ -279,7 +304,7 @@
       $xml .= '<title>'.$this->_safeXML( $article['title'] )."</title>\n";
       $xml .= '<link>'.$this->_safeXML( $article['link'] )."</link>\n";
       $xml .= '<guid isPermaLink="true">'.$this->_safeXML( $article['link'] )."</guid>\n";
-      $xml .= '<pubDate>'.strftime( '%a, %d %b %Y %H:%M:%S %z', $article['date'] )."</pubDate>\n";
+      $xml .= '<pubDate>'.$this->_RFC822DateFormat( $article['date'] )."</pubDate>\n";
       if( array_key_exists( 'commenturl', $article ) )
       {
         $xml .= '<comments>'.$this->_safeXML( $article['commenturl'] )."</comments>\n";
@@ -355,7 +380,7 @@
       {
         $xml .= '<generator>'.$this->_safeXML( $this->system )."</generator>\n";
       }
-      $xml .= '<pubDate>'.strftime( '%a, %d %b %Y %H:%M:%S %z' )."</pubDate>\n";
+      $xml .= '<pubDate>'.$this->_RFC822DateFormat()."</pubDate>\n";
       $xml .= "<language>{$this->lang}</language>\n";
 
       if( strlen($this->feedlogo) > 0 )
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/classes/upload.class.php 1.4.1.src/cpanel-glprivate/system/classes/upload.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/classes/upload.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/classes/upload.class.php	2006-09-09 07:52:06.000000000 -0500
@@ -30,7 +30,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: upload.class.php,v 1.43 2006/01/15 20:59:11 dhaun Exp $
+// $Id: upload.class.php,v 1.47 2006/09/09 12:52:06 dhaun Exp $
 
 /**
 * This class will allow you to securely upload one or more files from a form
@@ -90,11 +90,11 @@
     * @access private
     */
     var $_maxFileSize = 1048576;          // Long, in bytes
-    /** 
+    /**
     * @access private
     */
     var $_pathToMogrify = '';             // String
-    /** 
+    /**
     * @access private
     */
     var $_pathToNetPBM= '';               // String
@@ -155,7 +155,7 @@
     */
     var $_imageIndex = 0;                 // Integer
 
-    /**    
+    /**
     * @access private
     */
     var $_wasResized = false;             // Boolean
@@ -180,31 +180,31 @@
     *
     */
     function _addWarning($warningText)
-	{
+    {
         $nwarnings = count($this->_warnings);
         $nwarnings = $nwarnings + 1;
         $this->_warnings[$nwarnings] = $warningText;
         if ($this->loggingEnabled()) {
             $this->_logItem('Warning',$warningText);
         }
-	}
+    }
 
-	/**
-	* Adds an error that was encountered
-	*
-	* @access   private
-	* @param    string      $errorText      Text of error
-	*
-	*/
-	function _addError($errorText)
-	{
+    /**
+    * Adds an error that was encountered
+    *
+    * @access   private
+    * @param    string      $errorText      Text of error
+    *
+    */
+    function _addError($errorText)
+    {
         $nerrors = count($this->_errors);
         $nerrors = $nerrors + 1;
         $this->_errors[$nerrors] = $errorText;
         if ($this->loggingEnabled()) {
             $this->_logItem('Error',$errorText);
         }
-	}
+    }
 
     /**
     * Adds a debug message
@@ -232,10 +232,10 @@
     * @return   boolean     Whether or not we successfully logged an item
     *
     */
-	function _logItem($logtype, $text)
-	{
+    function _logItem($logtype, $text)
+    {
         $timestamp = strftime("%c");
-        if (!$file = fopen($this->_logFile,a)) {
+        if (!$file = fopen($this->_logFile, 'a')) {
             // couldn't open log file for writing so let's disable logging and add an error
             $this->setLogging(false);
             $this->_addError('Error writing to log file: ' . $this->_logFile . '.  Logging has been disabled');
@@ -244,7 +244,7 @@
         fputs ($file, "$timestamp - $logtype: $text \n");
         fclose($file);
         return true;
-	}
+    }
 
     /**
     * Defines superset of available Mime types.
@@ -256,26 +256,26 @@
     function _setAvailableMimeTypes($mimeTypes = array())
     {
         if (sizeof($mimeTypes) == 0) {
-            $this->_availableMimeTypes = 
+            $this->_availableMimeTypes =
             array(
-                'application/x-gzip-compressed' 	=> '.tar.gz,.tgz',
-                'application/x-zip-compressed' 		=> '.zip',
-                'application/x-tar'					=> '.tar',
-                'text/plain'						=> '.phps,.txt,.inc',
-                'text/html'							=> '.html,.htm',
-                'image/bmp' 						=> '.bmp,.ico',
-                'image/gif' 						=> '.gif',
-                'image/pjpeg'						=> '.jpg,.jpeg',
-                'image/jpeg'						=> '.jpg,.jpeg',
-                'image/png'							=> '.png',
-                'image/x-png'						=> '.png',
-                'audio/mpeg'						=> '.mp3',
-                'audio/wav'							=> '.wav',
-                'application/pdf'					=> '.pdf',
-                'application/x-shockwave-flash' 	=> '.swf',
-                'application/msword'				=> '.doc',
-                'application/vnd.ms-excel'			=> '.xls',
-                'application/octet-stream'			=> '.fla,.psd'
+                'application/x-gzip-compressed'     => '.tar.gz,.tgz',
+                'application/x-zip-compressed'         => '.zip',
+                'application/x-tar'                    => '.tar',
+                'text/plain'                        => '.phps,.txt,.inc',
+                'text/html'                            => '.html,.htm',
+                'image/bmp'                         => '.bmp,.ico',
+                'image/gif'                         => '.gif',
+                'image/pjpeg'                        => '.jpg,.jpeg',
+                'image/jpeg'                        => '.jpg,.jpeg',
+                'image/png'                            => '.png',
+                'image/x-png'                        => '.png',
+                'audio/mpeg'                        => '.mp3',
+                'audio/wav'                            => '.wav',
+                'application/pdf'                    => '.pdf',
+                'application/x-shockwave-flash'     => '.swf',
+                'application/msword'                => '.doc',
+                'application/vnd.ms-excel'            => '.xls',
+                'application/octet-stream'            => '.fla,.psd'
             );
         } else {
             $this->_availableMimeTypes = $mimeTypes;
@@ -287,10 +287,10 @@
     *
     * @access private
     * @return boolean   returns true if file is an image, otherwise false
-    */    
+    */
     function _isImage()
     {
-        if (ereg("image",$this->_currentFile['type'])) {
+        if (strpos ($this->_currentFile['type'], 'image/') === 0) {
             $isImage = true;
         } else {
             $isImage = false;
@@ -320,7 +320,7 @@
         if ($this->_debug) {
             $this->_addDebugMsg('File size for ' . $this->_currentFile['name'] . ' is ' . $this->_currentFile['size'] . ' bytes');
         }
-        
+
         if ($this->_currentFile['size'] > $this->_maxFileSize) {
             return false;
         } else {
@@ -351,7 +351,7 @@
             $this->_addDebugMsg('Max allowed height = ' . $this->_maxImageHeight . ', Image height = ' . $imageInfo['height']);
         }
 
-        // If user set _autoResize then ignore these settings and try to resize on upload 
+        // If user set _autoResize then ignore these settings and try to resize on upload
         if (($doResizeCheck AND !($this->_autoResize)) OR (!($doResizeCheck))) {
             if ($imageInfo['width'] > $this->_maxImageWidth) {
                 $sizeOK = false;
@@ -376,20 +376,20 @@
         return $sizeOK;
     }
 
-	/**
-	* Gets the width and height of an image
-	*
-	* @access private
-	* @return array     Array with width and height of current image
-	*/
-	function _getImageDimensions()
-	{
-		$dimensions = GetImageSize($this->_currentFile['tmp_name']);
+    /**
+    * Gets the width and height of an image
+    *
+    * @access private
+    * @return array     Array with width and height of current image
+    */
+    function _getImageDimensions()
+    {
+        $dimensions = GetImageSize($this->_currentFile['tmp_name']);
         if ($this->_debug) {
             $this->_addDebugMsg('in _getImageDimensions I got a width of ' . $dimensions[0] . ', and a height of ' . $dimensions[1]);
         }
-		return array('width' => $dimensions[0], 'height' => $dimensions[1]);
-	}
+        return array('width' => $dimensions[0], 'height' => $dimensions[1]);
+    }
 
     /**
     * Calculate the factor to scale images with if they're not meeting
@@ -443,25 +443,25 @@
         return true;
     }
 
-	/**
-	* Gets destination file name for current file
-	*
-	* @access private
-	* @return string    returns destination file name
-	* 
-	*/
-	function _getDestinationName()
-	{
+    /**
+    * Gets destination file name for current file
+    *
+    * @access private
+    * @return string    returns destination file name
+    *
+    */
+    function _getDestinationName()
+    {
         if (is_array($this->_fileNames)) {
             $name = $this->_fileNames[$this->_imageIndex];
         }
-        
+
         if (empty($name)) {
             $name = $this->_currentFile['name'];
         }
-        
+
         return $name;
-	}
+    }
 
     /**
     * Gets permissions for a file.  This is used to do a chmod
@@ -470,8 +470,8 @@
     * @return   string  returns final permisisons for current file
     *
     */
-	function _getPermissions()
-	{
+    function _getPermissions()
+    {
         if (is_array($this->_permissions)) {
             if (count($this->_permissions) > 1) {
                 $perms = $this->_permissions[$this->_imageIndex];
@@ -479,23 +479,23 @@
                 $perms = $this->_permissions[0];
             }
         }
-        
+
         if (empty($perms)) {
             $perms = '';
         }
 
         return $perms;
-	}
+    }
 
-	/**
-	* This function actually completes the upload of a file
-	*
-	* @access   private
-	* @return   boolean     true if copy succeeds otherwise false
-	* 
-	*/
-	function _copyFile()
-	{
+    /**
+    * This function actually completes the upload of a file
+    *
+    * @access   private
+    * @return   boolean     true if copy succeeds otherwise false
+    *
+    */
+    function _copyFile()
+    {
         if (!is_writable($this->_fileUploadDirectory)) {
             // Developer didn't check return value of setPath() method which would
             // have told them the upload directory was not writable.  Error out now
@@ -503,7 +503,7 @@
             return false;
         }
         $sizeOK = true;
-        if (!($this->_imageSizeOK(false)) AND $this->_autoResize) { 
+        if (!($this->_imageSizeOK(false)) AND $this->_autoResize) {
             $imageInfo = $this->_getImageDimensions($this->_currentFile['tmp_name']);
             if ($imageInfo['width'] > $this->_maxImageWidth) {
                 $sizeOK = false;
@@ -540,7 +540,7 @@
 
                 $cmd = $this->_pathToNetPBM;
                 $filename = $this->_fileUploadDirectory . '/' . $this->_getDestinationName();
-                $cmd_end = " '" . $filename . "' | " . $this->_pathToNetPBM . 'pnmscale -xsize=' . $newwidth . ' -ysize=' . $newheight . ' | ' . $this->_pathToNetPBM; 
+                $cmd_end = " '" . $filename . "' | " . $this->_pathToNetPBM . 'pnmscale -xsize=' . $newwidth . ' -ysize=' . $newheight . ' | ' . $this->_pathToNetPBM;
                 // convert to pnm, resize, convert back
                 if (eregi ('\.png', $filename)) {
                     $tmpfile = $this->_fileUploadDirectory . '/tmp.png';
@@ -712,7 +712,7 @@
 
             return false;
         }
-	}
+    }
 
     /**
     * Sets the path to where the mogrify ImageMagic function is
@@ -755,11 +755,11 @@
     }
 
     /**
-    * Sets mode to automatically resize images that are either too wide or 
+    * Sets mode to automatically resize images that are either too wide or
     * too tall
     *
     * @param    boolean    $switch  True to turn on, false to turn off
-    * 
+    *
     */
     function setAutomaticResize($switch)
     {
@@ -771,7 +771,7 @@
     *
     * @param    int     $size_in_bytes      Max. size for uploaded files
     * @return   boolean true if we set it OK, otherwise false
-    * 
+    *
     */
     function setMaxFileSize($size_in_bytes)
     {
@@ -813,7 +813,7 @@
     {
         $this->_maxFileUploadsPerForm = $maxfiles;
         return true;
-    }    
+    }
 
     /**
     * Allows you to keep the original (unscaled) image.
@@ -872,7 +872,7 @@
     *
     * @param    string  $fileName   fully qualified path to log files
     * @return   boolean returns true if we set the log file, otherwise false
-    * 
+    *
     */
     function setLogFile($logFile = '')
     {
@@ -908,7 +908,7 @@
     * Returns whether or not logging is enabled
     *
     * @return   boolean returns true if logging is enabled otherwise false
-    * 
+    *
     */
     function loggingEnabled()
     {
@@ -1012,20 +1012,20 @@
     *
     */
     function setAllowedMimeTypes($mimeTypes = array())
-	{
-		$this->_allowedMimeTypes = $mimeTypes;
-	}
-
-	/**
-	* Gets allowed mime types for this instance
-	*
-	* @return   array   Returns array of allowed mime types
-	*
-	*/
-	function getAllowedMimeTypes()
-	{
-		return $this->_allowedMimeTypes;
-	}
+    {
+        $this->_allowedMimeTypes = $mimeTypes;
+    }
+
+    /**
+    * Gets allowed mime types for this instance
+    *
+    * @return   array   Returns array of allowed mime types
+    *
+    */
+    function getAllowedMimeTypes()
+    {
+        return $this->_allowedMimeTypes;
+    }
 
     /**
     * Checks to see that mime type for current file is allowed for upload
@@ -1065,7 +1065,7 @@
     *
     */
     function setPath($uploadDir)
-	{
+    {
         if (!is_dir($uploadDir)) {
             $this->_addError('Specified upload directory, ' . $uploadDir . ' is not a valid directory');
             return false;
@@ -1079,18 +1079,18 @@
         $this->_fileUploadDirectory = $uploadDir;
 
         return true;
-	}
+    }
 
-	/**
-	* Returns directory to upload to
-	*
-	* @return   string  returns path to file upload directory
-	*
-	*/
-	function getPath()
-	{
+    /**
+    * Returns directory to upload to
+    *
+    * @return   string  returns path to file upload directory
+    *
+    */
+    function getPath()
+    {
         return $this->_fileUploadDirectory;
-	}
+    }
 
     /**
     * Sets file name(s) for files
@@ -1103,14 +1103,14 @@
     *
     */
     function setFileNames($fileNames = 'geeklog_uploadedfile')
-	{
+    {
         if (isset($fileNames) AND is_array($fileNames)) {
             // this is an array of file names, set them
             $this->_fileNames = $fileNames;
         } else {
             $this->_fileNames = array($fileNames);
         }
-	}
+    }
 
     /**
     * Changes permissions for uploaded files.  If only one set of perms is
@@ -1140,8 +1140,8 @@
     * @return   int returns number of files were sent to be uploaded
     *
     */
-	function numFiles()
-	{
+    function numFiles()
+    {
         if (empty($this->_filesToUpload)) {
             $this->_filesToUpload = $_FILES;
         }
@@ -1150,7 +1150,7 @@
 
         for ($i = 1; $i <= count($_FILES); $i++) {
             $curFile = current($this->_filesToUpload);
-        
+
             // Make sure file field on HTML form wasn't empty
             if (!empty($curFile['name'])) {
                 $fcount++;
@@ -1160,17 +1160,15 @@
         reset($_FILES);
 
         return $fcount;
-	}
-
-	/**
-	* Uploads any posted files.
-	*
-	* @return   boolean returns true if no errors were encountered otherwise false
-	*/
-	function uploadFiles()
-	{
-        global $_SERVER;
+    }
 
+    /**
+    * Uploads any posted files.
+    *
+    * @return   boolean returns true if no errors were encountered otherwise false
+    */
+    function uploadFiles()
+    {
         // Before we do anything, let's see if we are limiting file uploads by
         // IP address and, if so, verify the poster is originating from one of
         // those places
@@ -1182,8 +1180,8 @@
             }
         }
 
-		$this->_filesToUpload = $_FILES;
-		$numFiles = count($this->_filesToUpload);
+        $this->_filesToUpload = $_FILES;
+        $numFiles = count($this->_filesToUpload);
 
         // For security sake, check to make sure a DOS isn't happening by making
         // sure there is a limit of the number of files being uploaded
@@ -1235,13 +1233,13 @@
             next($_FILES);
         }
 
-		// This function returns false if any errors were encountered
+        // This function returns false if any errors were encountered
         if ($this->areErrors()) {
             return false;
-    	} else {
+        } else {
             return true;
-    	}
-	}
+        }
+    }
 }
 
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/classes/url.class.php 1.4.1.src/cpanel-glprivate/system/classes/url.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/classes/url.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/classes/url.class.php	2006-09-09 07:52:06.000000000 -0500
@@ -2,7 +2,7 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Geeklog 1.3                                                               |
+// | Geeklog 1.4                                                               |
 // +---------------------------------------------------------------------------+
 // | url.class.php                                                             |
 // |                                                                           |
@@ -30,7 +30,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: url.class.php,v 1.9 2005/06/26 08:38:32 mjervis Exp $
+// $Id: url.class.php,v 1.11 2006/09/09 12:52:06 dhaun Exp $
 
 /**
 * This class will allow you to use friendlier URL's, like:
@@ -76,11 +76,21 @@
     */
     function _getArguments()
     {
-        global $_SERVER;
-
         if (isset ($_SERVER['PATH_INFO'])) {
-            $this->_arguments = explode ('/', $_SERVER['PATH_INFO']);
+            if ($_SERVER['PATH_INFO'] == '')
+            {
+                if (isset ($_ENV['ORIG_PATH_INFO']))
+                {
+                    $this->_arguments = explode('/', $_ENV['ORIG_PATH_INFO']);
+                } else {
+                    $this->_arguments = array();
+                }
+            } else {
+                $this->_arguments = explode ('/', $_SERVER['PATH_INFO']);
+            }
             array_shift ($this->_arguments);
+        } else if (isset ($_ENV['ORIG_PATH_INFO'])) {
+            $this->_arguments = explode('/', substr($_ENV['ORIG_PATH_INFO'],1));
         } else {
             $this->_arguments = array ();
         }
@@ -162,8 +172,6 @@
     */
     function getArgument($name)
     {
-        global $_GET;
-        
         // if in GET VARS array return it 
         if (!empty($_GET[$name])) {
             return $_GET[$name];
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/databases/mssql.class.php 1.4.1.src/cpanel-glprivate/system/databases/mssql.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/databases/mssql.class.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/system/databases/mssql.class.php	2006-11-25 07:58:37.000000000 -0600
@@ -0,0 +1,1217 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Geeklog 1.4                                                               |
+// +---------------------------------------------------------------------------+
+// | mssql.class.php                                                           |
+// |                                                                           |
+// | mysql database class                                                      |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2000-2006 by the following authors:                         |
+// |                                                                           |
+// | Authors: Tony Bibbs, tony AT tonybibbs DOT com                            |
+// |          Randy Kolenko, Randy AT nextide DOT ca                           |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is free software; you can redistribute it and/or             |
+// | modify it under the terms of the GNU General Public License               |
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
+// | GNU General Public License for more details.                              |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+// $Id: mssql.class.php,v 1.5 2006/11/25 13:58:37 dhaun Exp $
+
+/**
+* This file is the mssql implementation of the Geeklog abstraction layer.
+* Unfortunately the Geeklog abstraction layer isn't 100% abstract because a few
+* key functions use MySQL's REPLACE INTO syntax which is not a SQL standard.
+* This issue will need to be resolved some time ...
+*
+*/
+class database {
+
+    // PRIVATE PROPERTIES
+    
+    /**
+    * @access private
+    */
+    var $_host = '';
+    /**
+    * @access private
+    */
+    var $_name = '';
+    /**
+    * @access private
+    */
+    var $_user = '';
+    /**
+    * @access private
+    */
+    var $_pass = '';
+    /**
+    * @access private
+    */
+    var $_db = '';
+    /**
+    * @access private
+    */
+    var $_verbose = false;
+    /**
+    * @access private
+    */
+    var $_display_error = false;
+    /**
+    * @access private
+    */
+    var $_errorlog_fn = '';
+
+    /**
+    * @access private
+    */
+    var $_limitRows = array();
+    var $_numberOfRowsAskedFor = array();
+    var $_lastInsertID=array();
+    var $_fastForwardRows=array();
+    var $_NoArraylastInsertID='';
+    
+    
+    
+    // PRIVATE METHODS
+
+    /**
+    * Logs messages
+    *
+    * Logs messages by calling the function held in $_errorlog_fn
+    *
+    * @param    string      $msg        Message to log
+    * @access   private
+    */
+    function _errorlog($msg)
+    {
+        $function = $this->_errorlog_fn;
+        if (function_exists($function)) {
+            $function($msg);
+        }
+    }
+
+    /**
+    * Connects to the Microsoft database server
+    *
+    * This function connects to the mssql server and returns the connection object
+    *
+    * @return   object      Returns connection object
+    * @access   private
+    *
+    */
+    function _connect()
+    {
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** Inside database->_connect ***<br>");
+        }
+
+        // Connect to mssql server
+        $this->_db = mssql_connect($this->_host,$this->_user,$this->_pass) or die('Cannnot connect to DB server');
+
+        // Set the database
+        @mssql_select_db($this->_name) or die ('Cannot Connect to the database provided.  Please check the config.php settings.');
+
+        if (!($this->_db)) {
+            if ($this->isVerbose()) {
+                $this->_errorlog("\n*** Error in database->_connect ***");
+            }
+
+            // damn, got an error.
+            $this->dbError();
+        }
+
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n***leaving database->_connect***<br>");
+        }
+    }
+
+    // PUBLIC METHODS
+
+    /**
+    * constructor for database
+    *
+    * This initializes an instance of the database object
+    *
+    * @param        string      $dbhost     Database host
+    * @param        string      $dbname     Name of database
+    * @param        sring       $dbuser     User to make connection as
+    * @param        string      $pass       Password for dbuser
+    * @param        string      $errorlogfn Name of the errorlog function
+    * @param        string      $charset    character set to use
+    *
+    */
+    function database($dbhost,$dbname,$dbuser,$dbpass,$errorlogfn='',$charset='')
+    {
+        $this->_host = $dbhost;
+        $this->_name = $dbname;
+        $this->_user = $dbuser;
+        $this->_pass = $dbpass;
+        $this->_verbose = false;
+        $this->_errorlog_fn = $errorlogfn;
+
+        $this->_connect();
+    }
+
+    /**
+    * Turns debug mode on
+    *
+    * Set this to true to see debug messages
+    *
+    * @param    boolean     $flag   true or false
+    *
+    */
+    function setVerbose($flag)
+    {
+        $this->_verbose = $flag;
+    }
+
+    /**
+    * Turns detailed error reporting on
+    *
+    * If set to true, this will display detailed error messages on the site.
+    * Otherwise, it will only that state an error occurred without going into
+    * details. The complete error message (including the offending SQL request)
+    * is always available from error.log.
+    *
+    * @param    boolean     $flag   true or false
+    *
+    */
+    function setDisplayError($flag)
+    {
+        $this->_display_error = $flag;
+    }
+
+    /**
+    * Checks to see if debug mode is on
+    *
+    * Returns value of $_verbose
+    *
+    * @return   boolean     true if in verbose mode otherwise false
+    *
+    */
+    function isVerbose()
+    {
+        if ($this->_verbose && (empty($this->_errorlog_fn) || !function_exists($this->_errorlog_fn))) {
+            print "\n<BR><B>Can't run mssql.class.php verbosely because the errorlog "
+                . "function wasn't set or doesn't exist<BR>\n";
+            return false;
+        }
+
+        return $this->_verbose;
+    }
+
+    /**
+    * Sets the function this class should call to log debug messages
+    *
+    * @param        string      $functionname   Function name
+    *
+    */
+    function setErrorFunction($functionname)
+    {
+        $this->_errorlog_fn = $functionname;
+    }
+
+    
+    
+    function cleanseSQL($originalsql,$skipQuoteReplacement=0){
+        $sql=$originalsql;
+        
+        if(!$skipQuoteReplacement){
+            $tempsql=str_replace('\"',"''",$sql);
+            $sql=$tempsql;
+            }
+            
+       if(!$skipQuoteReplacement){
+            $tempsql=str_replace("\'","''",$sql);
+            $sql=$tempsql;
+            }
+        
+        $sql=$this->changeDESCRIBE($sql);
+        
+        $sql=$sql . " ";
+        
+        $tempsql=str_replace("`","",$sql);
+        $sql=$tempsql;
+        
+        $tempsql=str_replace("unix_timestamp","UNIX_TIMESTAMP",$sql);
+        $sql=$tempsql;
+        
+        $tempsql=str_replace("UNIX_TIMESTAMP","dbo.UNIX_TIMESTAMP",$sql);
+        $sql=$tempsql;
+        
+        $tempsql=str_replace("date_format","DATE_FORMAT",$sql);
+        $sql=$tempsql;
+        
+        $tempsql=str_replace("DATE_FORMAT","dbo.DATE_FORMAT",$sql);
+        $sql=$tempsql;
+
+        $tempsql=str_replace("from_unixtime","FROM_UNIXTIME",$sql);
+        $sql=$tempsql;
+        
+        $tempsql=str_replace("FROM_UNIXTIME","dbo.FROM_UNIXTIME",$sql);
+        $sql=$tempsql;
+        
+        $tempsql=str_replace("dbo.UNIX_TIMESTAMP()","dbo.UNIX_TIMESTAMP('')",$sql);
+        $sql=$tempsql;
+        
+        $tempsql=str_replace("dbo.FROM_UNIXTIME()","dbo.FROM_UNIXTIME('')",$sql);
+        $sql=$tempsql;
+        
+        //$tempsql=str_replace("dbo.FROM_UNIXTIME(')","dbo.FROM_UNIXTIME('')",$sql);
+        //$sql=$tempsql;
+        
+        $tempsql=$this->cleanse_date_sub($sql);
+        $sql=$tempsql;
+        
+        $tempsql=str_replace("NOW()","getUTCDate()",$sql);
+        $sql=$tempsql;
+        
+        $tempsql=str_replace("now()","getUTCDate()",$sql);
+        $sql=$tempsql;
+        
+        $tempsql=str_replace("STRAIGHT_JOIN","",$sql);
+        $sql=$tempsql;
+        
+        $tempsql=str_replace("straight_join","",$sql);
+        $sql=$tempsql;
+        
+        $tempsql=str_replace("WHERE 1 ","WHERE 1=1 ",$sql);
+        $sql=$tempsql;
+        
+        $tempsql=str_replace("where 1 ","where 1=1 ",$sql);
+        $sql=$tempsql;
+        
+        $tempsql=str_replace("to_days","TO_DAYS",$sql);
+        $sql=$tempsql;
+        
+        $tempsql=str_replace("TO_DAYS","dbo.TO_DAYS",$sql);
+        $sql=$tempsql;
+        
+        $tempsql=str_replace("CURDATE()","getDate()",$sql);
+        $sql=$tempsql;
+        
+        $tempsql=str_replace("'0000-00-00 00:00:00'","NULL",$sql);
+        $sql=$tempsql;
+        
+        $tempsql=str_replace("'null'","null",$sql);
+        $sql=$tempsql;
+        
+        $tempsql=str_replace("dbo.dbo.","dbo.",$sql);
+        $sql=$tempsql;
+        
+        return $sql;
+        }
+    
+    
+    //swaps out the propriatary DESC function in mysql and replaces it with our UDF version
+    function changeDESCRIBE($sql){
+        $sql=trim($sql);
+        $testSQL=strtolower($sql);
+        $testSQL=" " . $sql;
+       
+        $isIn=strpos($testSQL,'describe ');
+        if($isIn>0){
+            if($sql[strlen($sql)-1]==';'){
+                //if the last char is a semi colon, get rid of it
+                $sql=str_replace(";","",$sql);
+                }
+            $testSQL=strtolower($sql);
+            $remainder=str_replace("describe ","",$testSQL);
+            $remainder=trim($remainder);
+            $remainder="select * from dbo.DESCRIBE('" . $remainder . "')";
+            return $remainder;
+            }
+        else{
+            return $sql;
+            }
+        }
+    
+        
+    
+    
+    /**
+    * Executes a query on the server
+    *
+    * This executes the passed SQL and returns the recordset or errors out
+    *
+    * @param    string      $sql            SQL to be executed
+    * @param    boolean     $ignore_error   If 1 this function supresses any error messages
+    * @return   object      Returns results of query
+    *
+    */
+    function dbQuery($sql,$ignore_errors=0,$skipQuoteReplacement=0)
+    {
+     
+        $sql=$this->cleanseSQL($sql,$skipQuoteReplacement);
+        //limit detection
+        $testSQL=strtolower($sql);
+        $mode=0;
+        $isIn=strpos($testSQL,' limit ');
+            if($isIn>0){
+                //there is a LIMIT clause in there
+                //lets get its offset as a string to the end of the sql call
+                 
+                $limitclause=strstr($testSQL,' limit ');
+                $testSQL=substr($sql,0,$isIn);
+                
+                $limitclause=trim($limitclause);
+                eregi("limit ([^,]+),(.*)", $limitclause,$arrayStr); 
+                
+                $left=trim($arrayStr[1]);
+                $rightStr=trim($arrayStr[2]);
+                
+                
+                if($rigthStr=='' and $left==''){
+                    //this is the case where we have a single limit value
+                    //this is IDENTICAL to the usage of the TOP clause
+                    $left=strstr($limitclause, ' ');
+                    $left=trim($left);
+                    $mode=1;
+                    
+                    
+                    }//end if $rightstr...
+                else{
+                    //left and right have something useful
+                    //this means we'll have to do some kind of temp table manipulation.... 
+                    $rightStr=str_replace(";","",$rightStr);
+                    $mode=2;
+                    }//end else
+                $sql=$testSQL;
+                }
+                
+        //end limit detection
+        
+
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n***inside database->dbQuery***<br>");
+            $this->_errorlog("\n*** sql to execute is $sql ***<br>");
+        }
+
+        if($mode==0){
+           
+            }
+        elseif($mode==1){//this is a simple limit clause
+            $testSQL=strtolower($sql);
+            $isIn=strpos($testSQL,' distinct ');
+            if($isIn>0){
+                $sql=str_replace(" distinct ", " distinct top " . $left . " ", $sql);
+                $sql=str_replace(" DISTINCT ", " DISTINCT TOP " . $left . " ", $sql);
+                //echo $sql;
+                }
+            else{
+                $sql=str_replace("select ", "select top " . $left . " ", $sql);
+                $sql=str_replace("SELECT ", "SELECT TOP " . $left . " ", $sql);
+                //echo $sql;
+                }
+            }
+        else{//this is a tough limit clause
+            
+            }
+            
+        //check for insert... handle this differently    
+        $testSQL=strtolower($sql);
+        $testSQL = ' ' . $testSQL;
+        $isIn=strpos($testSQL,'insert ');
+        $isInsert=0; 
+        if($isIn>0){
+            //next we have to check if it already ends in a semi colon
+            $testSQL=trim($sql);
+            $testSQL=$testSQL[strlen($testSQL)-1];
+            if($testSQL!=';'){
+                $sql .="; select SCOPE_IDENTITY()";
+                }
+            else{
+                $sql .=" select SCOPE_IDENTITY()";
+                }
+            
+            $isInsert=1;
+            }
+        
+        //echo "<xmp>" . $sql . "</xmp>";
+    
+        // Run query
+        if ($ignore_errors == 1) {
+            $result = @mssql_query($sql,$this->_db);
+            
+        } else {
+           
+            $result = @mssql_query($sql,$this->_db) or die($this->dbError($sql) . ' - ' . $sql);
+            if($result==FALSE){
+                echo "Query Failed: ";
+                echo "<xmp>".$this->dbError($sql) . "</xmp><HR>";
+                }
+            }
+        $this->_totalRowCount=$this->dbNumRows($result);
+        if($result!=FALSE && $isInsert==1){
+            $insert=$this->dbFetchArray($result);
+            $this->array_push_associative($this->_lastInsertID, array("{$result}"=>"{$insert[0]}")) ;
+            $this->_NoArraylastInsertID=$insert[0];
+            //$this->_lastInsertID=$insert[0];
+            }
+
+       $this->_fastForwardRows=0;
+        if($result!=FALSE){     
+            if($mode==2){
+                //got the result set
+                //fast forward thru the set
+                
+                @mssql_data_seek($result,$left-1);
+                
+                
+                
+                if(!is_array($this->_limitRows)){
+                    $this->_limitRows=array();
+                    }
+                if (array_key_exists("{$result}",$this->_limitRows)){
+                    $this->_limitRows["{$result}"]=$rightStr;
+                    }
+                else{
+                    $this->array_push_associative($this->_limitRows, array("{$result}"=>"{$rightStr}")) ;
+                    }
+                
+                if(!is_array($this->_numberOfRowsAskedFor)){
+                    $this->_numberOfRowsAskedFor=array();
+                    }
+                if (array_key_exists("{$result}",$this->_numberOfRowsAskedFor)){
+                    $this->_numberOfRowsAskedFor["{$result}"]="0";
+                    }
+                else{
+                    $this->array_push_associative($this->_numberOfRowsAskedFor, array("{$result}"=>"0")) ;
+                    }
+                
+                if(!is_array($this->_fastForwardRows)){
+                    $this->_fastForwardRows=array();
+                    }
+                if (array_key_exists("{$result}",$this->_fastForwardRows)){
+                    $this->_fastForwardRows["{$result}"]=$left;
+                    }
+                else{
+                    $this->array_push_associative($this->_fastForwardRows, array("{$result}"=>"{$left}")) ;
+                    }
+    
+                //$this->array_push_associative($this->_numberOfRowsAskedFor, array("{$result}"=>"0")) ;
+                //$this->array_push_associative($this->_fastForwardRows, array("{$result}"=>"{$left}")) ;
+
+                //$this->_numberOfRowsAskedFor = 0;
+                //$this->_fastForwardRows=$left;
+                }
+            return $result;
+            }
+        else{
+            return false;    
+            }
+               
+        
+        
+        
+        }
+
+    /**
+    * Saves information to the database
+    *
+    * This mimicks the Replace Into mysql call to save a record into the
+    * database
+    *
+    * @param    string      $table      The table to save to
+    * @param    string      $fields     string  Comma demlimited list of fields to save
+    * @param    string      $values     Values to save to the database table
+    *
+    */
+    function dbSave($table,$fields,$values)
+    {
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** Inside database->dbSave ***<BR>");
+        }
+        $tempFields=$fields;
+        $tempFields=str_replace(",","','",$tempFields);
+        //this query will return a row or rows of primary keys for this table for which we can determine
+        //if the current query requires a delete before its insertion
+        $sql="select colName from getPrimaryKey where tableName='{$table}' and colname in ('{$tempFields}')";
+        $result=$this->dbQuery($sql);
+        $numRows=$this->dbNumRows($result);
+
+        if($numRows>0){ //this is the instance that there is a primary key we know about.. thus, find out the value of the 
+                        //primary key in the $values field and see what it equals..  do a delete first using this primary key's value
+                        //and THEN do an insert.  otherwise, just do the insert.
+                $valsArray=$this->parse_csv_sql_string($values);
+                $fieldsArray=$this->parse_csv_sql_string($fields);
+                $arrResults=$this->dbFetchArray($result);
+                $primaryKeyField=strtolower($arrResults[0]);
+               
+                while ($colname = current($fieldsArray)) {
+                    if ( strtolower($colname) == $primaryKeyField) { //we have a match
+                    
+                       $sql="delete from {$table} where ". current($fieldsArray) . "='". current($valsArray)  . "'";
+                       $this->dbQuery($sql);
+                       break;
+                        }//end if
+                    next($fieldsArray);
+                    next($valsArray);
+                    }//end while
+            }
+        //now to just save/insert the new row.
+        $values=$this->cleanseSQL($values);
+        $values=str_replace("'",'"',$values);
+        $sql="EXEC doIndexInsert '{$table}', '{$fields}', '{$values}'";
+        //$sql=$this->cleanseSQL($sql);
+//        echo "<XMP>" . $sql . "</XMP><HR>";
+//        exit(0);
+        $result=$this->dbQuery($sql,1);
+        mssql_free_result($result);
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** Leaving database->dbSave ***<BR>");
+        }
+    }
+
+    
+    
+    
+    
+    /**
+    * Deletes data from the database
+    *
+    * This will delete some data from the given table where id = value.  If
+    * id and value are arrays then it will traverse the arrays setting
+    * $id[curval] = $value[curval].
+    *
+    * @param    string          $table      Table to delete data from
+    * @param    array|string    $id         field name(s) to include in where clause
+    * @param    array|string    $value      field value(s) corresponding to field names
+    * @return   boolean     Returns true on success otherwise false
+    *
+    */
+    function dbDelete($table,$id,$value)
+    {
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** inside database->dbDelete ***<BR>");
+        }
+
+        $sql = "DELETE FROM $table";
+
+        if (is_array($id) || is_array($value)) {
+            if (is_array($id) && is_array($value) && count($id) == count($value)) {
+                // they are arrays, traverse them and build sql
+                $sql .= ' WHERE ';
+                for ($i = 1; $i <= count($id); $i++) {
+                    if ($i == count($id)) {
+                        $sql .= current($id) . " = '" . current($value) . "'";
+                    } else {
+                        $sql .= current($id) . " = '" . current($value) . "' AND ";
+                    }
+                    next($id);
+                    next($value);
+                }
+            } else {
+                // error, they both have to be arrays and of the
+                // same size
+                return false;
+            }
+        } else {
+            // just regular string values, build sql
+            if (!empty($id) && ( isset($value) || $value != "")) { 
+                $sql .= " WHERE $id = '$value'";
+            }
+        }
+
+        $this->dbQuery($sql);
+
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** inside database->dbDelete ***<BR>");
+        }
+
+        return true;
+    }
+
+    /**
+    * Changes records in a table
+    *
+    * This will change the data in the given table that meet the given criteria and will
+    * redirect user to another page if told to do so
+    *
+    * @param    string          $table          Table to perform change on
+    * @param    string          $item_to_set    field name of unique ID field for table
+    * @param    string          $value_to_set   Value for id
+    * @param    array|string    $id             additional field name used in where clause
+    * @param    array|string    $value          additional values used in where clause
+    * @param    boolean         $supress_quotes if false it will not use '<value>' in where clause
+    * @return   boolean     Returns true on success otherwise false
+    *
+    */
+    function dbChange($table,$item_to_set,$value_to_set,$id,$value, $supress_quotes=false)
+    {
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** Inside dbChange ***");
+        }
+
+        if ($supress_quotes) {
+            $sql = "UPDATE $table SET $item_to_set = $value_to_set";
+        } else {
+            $sql = "UPDATE $table SET $item_to_set = '$value_to_set'";
+        } 
+
+        if (is_array($id) || is_array($value)) {
+            if (is_array($id) && is_array($value) && count($id) == count($value)) {
+                // they are arrays, traverse them and build sql
+                $sql .= ' WHERE ';
+                for ($i = 1; $i <= count($id); $i++) {
+                    if ($i == count($id)) {
+                        $sql .= current($id) . " = '" . current($value) . "'";
+                    } else {
+                        $sql .= current($id) . " = '" . current($value) . "' AND ";
+                    }
+                    next($id);
+                    next($value);
+                }
+            } else {
+                // error, they both have to be arrays and of the
+                // same size
+                return false;
+            }
+        } else {
+            // These are regular strings, build sql
+            if (!empty($id) && ( isset($value) || $value != "")) { 
+                $sql .= " WHERE $id = '$value'";
+            }
+        }
+
+        if ($this->isVerbose()) {
+            $this->_errorlog("dbChange sql = $sql<BR>");
+        }
+
+        $this->dbQuery($sql);
+
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** Leaving database->dbChange ***");
+        }
+
+    }
+
+    /**
+    * Returns the number of records for a query that meets the given criteria
+    *
+    * This will build a SELECT count(*) statement with the given criteria and
+    * return the result
+    *
+    * @param    string          $table  Table to perform count on
+    * @param    array|string    $id     field name(s) of fields to use in where clause
+    * @param    array|string    $value  Value(s) to use in where clause
+    * @return   boolean     returns count on success otherwise false
+    *
+    */
+    function dbCount($table,$id='',$value='')
+    {
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** Inside database->dbCount ***<br>");
+        }
+
+        $sql = "SELECT COUNT(*) FROM $table";
+
+        if (is_array($id) || is_array($value)) {
+            if (is_array($id) && is_array($value) && count($id) == count($value)) {
+                // they are arrays, traverse them and build sql
+                $sql .= ' WHERE ';
+                for ($i = 1; $i <= count($id); $i++) {
+                    if ($i == count($id)) {
+                        $sql .= current($id) . " = '" . current($value) . "'";
+                    } else {
+                        $sql .= current($id) . " = '" . current($value) . "' AND ";
+                    }
+                    next($id);
+                    next($value);
+                }
+            } else {
+                // error, they both have to be arrays and of the
+                // same size
+                return false;
+            }
+        } else {
+            if (!empty($id) && ( isset($value) || $value != "")) { 
+                $sql .= " WHERE $id = '$value'";
+            }
+        }
+
+        
+        
+        
+        if ($this->isVerbose()) {
+            print "\n*** sql = $sql ***<br>";
+        }
+
+        $result = $this->dbQuery($sql);
+
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** Leaving database->dbCount ***<BR>");
+        }
+
+        return ($this->dbResult($result,0));
+
+    }
+
+
+    /* Copies a record from one table to another (can be the same table)
+    *
+    * This will use a INSERT INTO...SELECT FROM to copy a record from one table
+    * to another table.  They can be the same table.
+    *
+    * @param    string          $table      Table to insert record into
+    * @param    string          $fields     Comma delmited list of fields to copy over
+    * @param    string          $values     Values to store in database fields
+    * @param    string          $tablefrom  Table to get record from
+    * @param    array|string    $id         field name(s) to use in where clause
+    * @param    array|string    $value      Value(s) to use in where clause
+    * @return   boolean     Returns true on success otherwise false
+    *
+    */
+    function dbCopy($table,$fields,$values,$tablefrom,$id,$value)
+    {
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** Inside database->dbCopy ***<BR>");
+        }
+
+        $sql = "INSERT INTO $table ($fields) SELECT $values FROM $tablefrom";
+
+        if (is_array($id) || is_array($value)) {
+            if (is_array($id) && is_array($value) && count($id) == count($value)) {
+                // they are arrays, traverse them and build sql
+                $sql .= ' WHERE ';
+                for ($i = 1; $i <= count($id); $i++) {
+                    if ($i == count($id)) {
+                        $sql .= current($id) . " = '" . current($value) . "'";
+                    } else {
+                        $sql .= current($id) . " = '" . current($value) . "' AND ";
+                    }
+                    next($id);
+                    next($value);
+                }
+            } else {
+                // error, they both have to be arrays and of the
+                // same size
+                return false;
+            }
+        } else {
+            if (!empty($id) && ( isset($value) || $value != "")) { 
+                $sql .= " WHERE $id = '$value'";
+            }
+        }
+
+        $this->dbQuery($sql);
+        $this->dbDelete($tablefrom,$id,$value);
+
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** Leaving database->dbCopy ***<BR>");
+        }
+
+    }
+
+    /**
+    * Retrieves the number of rows in a recordset
+    *
+    * This returns the number of rows in a recordset
+    *
+    * @param    object      $recordset      The recordset to operate one
+    * @return   int         Returns number of rows otherwise false (0)
+    *
+    */
+    function dbNumRows($recordset)
+    {
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** Inside database->dbNumRows ***<BR>");
+        }
+
+        // return only if recordset exists, otherwise 0
+        if ($recordset) {
+            if ($this->isVerbose()) {
+                $this->_errorlog('got ' . @mssql_num_rows($recordset) . ' rows');
+                $this->_errorlog("\n*** Inside database->dbNumRows ***<BR>");
+            }
+            if( (($this->_fastForwardRows["{$recordset}"]+$this->_limitRows["{$recordset}"])> @mssql_num_rows($recordset)) && $this->_fastForwardRows["{$recordset}"]!=0 ){
+                //only return num rows - fast forwarded rows
+                
+                return @mssql_num_rows($recordset)-$this->_fastForwardRows["{$recordset}"]+1;
+                }
+            elseif($this->_limitRows["{$recordset}"]>@mssql_num_rows($recordset) || $this->_limitRows["{$recordset}"]==''){
+                return @mssql_num_rows($recordset);
+                }
+            else{
+                return $this->_limitRows["{$recordset}"];
+                }
+            
+            
+        } else {
+            if ($this->isVerbose()) {
+                $this->_errorlog("got no rows<BR>");
+                $this->_errorlog("\n*** Inside database->dbNumRows ***<BR>");
+            }
+            return 0;
+        }
+    }
+
+    /**
+    * Returns the contents of one cell from a mssql result set
+    *
+    * @param    object      $recordset      The recordset to operate on
+    * @param    int         $row            row to get data from
+    * @param    string      $field          field to return
+    * @return   (depends on field content)
+    *
+    */
+    function dbResult($recordset,$row,$field=0)
+    {
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** Inside database->dbResult ***<BR>");
+            if (empty($recordset)) {
+                $this->_errorlog("\n*** Passed recordset isn't valid ***<br>");
+            } else {
+                $this->_errorlog("\n*** Everything looks good ***<br>");
+            }
+            $this->_errorlog("\n*** Leaving database->dbResult ***<br>");
+        }
+        return @mssql_result($recordset,$row,$field);
+    }
+
+    /**
+    * Retrieves the number of fields in a recordset
+    *
+    * This returns the number of fields in a recordset
+    *
+    * @param    object      $recordset      The recordset to operate on
+    * @return   int     Returns number of rows from query
+    *
+    */
+    function dbNumFields($recordset)
+    {
+        return @mssql_num_fields($recordset);
+    }
+
+    /**
+    * Retrieves returns the field name for a field
+    *
+    * Returns the field name for a given field number
+    *
+    * @param    object      $recordset      The recordset to operate on
+    * @param    int         $fnumber        field number to return the name of
+    * @return   string      Returns name of specified field
+    *
+    */
+    function dbFieldName($recordset,$fnumber)
+    {
+        return @mssql_field_name($recordset,$fnumber);
+    }
+
+    /**
+    * Retrieves returns the number of effected rows for last query
+    *
+    * Retrieves returns the number of effected rows for last query
+    *
+    * @param    object      $recordset      The recordset to operate on
+    * @return   int     Number of rows affected by last query
+    *
+    */
+    function dbAffectedRows($recordset)
+    {
+        return @mssql_rows_affected();
+    }
+
+    /**
+    * Retrieves record from a recordset
+    *
+    * Gets the next record in a recordset and returns in array
+    *
+    * @param    object      $recordset  The recordset to operate on
+    * @param    boolean     $both       get both assoc and numeric indices
+    * @return   array       Returns data array of current row from recordset
+    *
+    */
+    //here!
+    function dbFetchArray($recordset, $both = false)
+    {
+      $this->_numberOfRowsAskedFor["{$recordset}"] = $this->_numberOfRowsAskedFor["{$recordset}"] +1;
+      if( ($this->_limitRows["{$recordset}"]) !=($this->_numberOfRowsAskedFor["{$recordset}"]-1)  || $this->_limitRows["{$recordset}"]=='' || $this->_limitRows["{$recordset}"]==0){
+          //echo $this->dbNumRows($recordset) ."-{$this->_numberOfRowsAskedFor["{$recordset}"]}-{$this->_limitRows["{$recordset}"]}<HR>";
+        return @mssql_fetch_array($recordset);//, $result_type);  
+        }
+      else{
+        return FALSE;  
+        }
+    
+    
+    
+        
+    }
+
+    /**
+    * Returns the last ID inserted
+    * 
+    * Returns the last auto_increment ID generated
+    *
+    * @param    resource    $link_identifier    identifier for opened link
+    * @return   int                             Returns last auto-generated ID
+    *
+    * please note that this is a dangerous function to use without providing the proper resource identifier
+    * your code should ALWAYS call this function with its resource identifier otherwise you'll just pull off the 
+    * last insertted ID which MAY or MAY NOT be the one from YOUR specific insert.  You've been warned!
+    */
+    function dbInsertId($link_identifier ='')
+    {
+     
+       if ($link_identifier ==''){  //wow is this dangerous...  
+                                    //this is the LAST insertted ID no matter what.. thus, this may not be your resource's insertted id.. 
+                                    //you should, and I'm only telling you this once, ALWAYS USE YOUR RESOURCE IDENTIFIER when calling this function
+           return $this->_NoArraylastInsertID;
+        }
+        else{
+            return $this->_lastInsertID["{$link_identifier}"];
+        }
+    }
+
+    /**
+    * this does not have any use in mssql. but kept here for reference
+    * returns a database error string
+    *
+    * Returns an database error message
+    *
+    * @param    string      $sql    SQL that may have caused the error
+    * @return   string      Text for error message
+    *
+    */
+    function dbError($sql='')
+    {
+        if (trim(mssql_get_last_message())!='') {
+            $this->_errorlog(@mssql_get_last_message() . ': ' . @mssql_get_last_message() . ". SQL in question: $sql");        
+            if ($this->_display_error) {
+                return  @mssql_get_last_message() . ': ' . @mssql_get_last_message();
+            } else {
+                return 'An SQL error has occurred. Please see error.log for details.';
+            }
+        }
+
+        return;
+    }
+    
+    
+    
+    /**
+    * returns a sql string that has the pesky date_sub removed from it
+    *
+    *
+    * @param    string      $sql    SQL that needs conversion
+    * @return   string      return sql string
+    *
+    */
+    function cleanse_date_sub($sql){      
+        $string=$sql;
+        $testString=strtolower($string);
+        $isIn=strpos($testString,'date_sub');
+        
+        while($isIn>0){
+            $testString=strtolower($string);
+            $isIn=strpos($testString,'date_sub');
+            if($isIn>0){
+                
+                $startLoc=strpos($testString,'date_sub');
+                $rightStr=ltrim(substr($string,$startLoc+8,strlen($string)));
+
+                //eregi("\((.*),([^\)]+\))", $rightStr,$left); 
+                 eregi("\(([^,]+),([^\)]+\))", $rightStr,$left); 
+                
+              
+                 
+                $firstParm=$left[1];
+                $secondParm=trim($left[2]);
+
+                $secondParm=str_replace("interval","",$secondParm);
+                $secondParm=str_replace(")","",$secondParm);
+                $left[2]=str_replace(")","",$left[2]);
+
+                $testMode=strpos($string,'date_sub');
+                if($testMode>0){
+                    $mode=0;
+                    }
+                else{
+                    $mode=1;
+                    }
+                
+                if($mode==0){
+                    $replaceString='date_sub(' . $firstParm . ',' . $left[2] . ')';
+                    }
+                else{
+                    $replaceString='DATE_SUB(' . $firstParm . ',' . $left[2] . ')';
+                    }
+ 
+                $secondParmArray=split(" ",$secondParm);
+                $intervalTime=$secondParmArray[1];
+                $typeForInterval=$secondParmArray[2];
+                if($intervalTime>0){
+                      $intervalTime = '-' . $intervalTime;
+                    }
+                $replaceWITHString= "dateadd({$typeForInterval},{$intervalTime},{$firstParm})";
+ 
+                $string=str_replace($replaceString,$replaceWITHString,$string);
+                
+                //$replaceString='DATE_SUB(' . $firstParm . ',' . $left[2] . ')';
+                //$string=str_replace($replaceString,$replaceWITHString,$string);
+                
+                $tempsql=str_replace("now()","getDate()",$string);
+                $string=$tempsql;
+            }
+    
+        }
+       return $string;
+       
+    }
+  
+    
+    
+    
+    
+    
+    //since nothing can do this properly, i had to write it myself.
+    //trick is that a string csv may have a comma within a delimited csv field which explode
+    //cant handle
+    function parse_csv_sql_string($csv){
+        $len=strlen($csv);
+        $mode=0;        //mode=0 for non string, mode=1 for string
+        $retArray=array();
+        $thisValue='';
+        for($x=0;$x<$len;$x++){
+            //loop thru the string
+            if($csv[$x]=="'"){
+                if($x!=0){
+                    if($csv[$x-1]!="\\"){
+                        //this means that the preceeding char is not escape.. thus this is either the end of a mode 1 or the beginning of a mode 1
+                        if($mode==1){
+                            $mode=0;
+                            //this means that we are done this string value
+                            //dont add this character to the string
+                            }
+                        else{
+                            $mode=1;
+                            //dont add this character to the string....
+                            }
+                        }
+                    else{//this is a character to add.....
+                        $thisValue=$thisValue . $csv[$x];
+                        }
+                    }
+                else{//x==0
+                    $mode=1;
+                    }
+            }//end if csv
+            elseif($csv[$x]==","){
+                if($mode==1){
+                    //this means that the comma falls INSIDE of a string. its a keeper
+                    $thisValue=$thisValue . $csv[$x];
+                    }
+                else{//this is the dilineation between fields.. pop this value
+                    array_push($retArray, $thisValue);
+                    $thisValue='';
+                    $mode=0;
+                    }
+                }//end elseif
+                
+            else{
+                //just add it!
+                $thisValue=$thisValue . $csv[$x];
+                }//end else
+        }//end for
+        array_push($retArray, $thisValue);
+        return $retArray;
+    }//end function  
+    
+    
+    
+    //thanks to php.net for this
+function array_push_associative(&$arr) {
+  $args = func_get_args();
+  foreach ($args as $arg) {
+      if (is_array($arg)) {
+          foreach ($arg as $key => $value) {
+              @$arr[$key] = $value;
+              $ret++;
+          }
+      }else{
+          @$arr[$arg] = "";
+      }
+  }
+  return $ret;
+} 
+ 
+
+
+
+
+
+
+
+
+
+    /**
+    * Lock a table
+    *
+    * Locks a table for write operations
+    *
+    * @param    string      $table      Table to lock
+    * @return   void
+    * @see dbUnlockTable
+    *
+    */
+    function dbLockTable($table)
+    {
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** Inside database->dbLockTable ***");
+        }
+
+        
+        $sql = "BEGIN TRAN";
+
+        $this->dbQuery($sql);
+
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** Leaving database->dbLockTable ***");
+        }
+    }
+
+    /**
+    * Unlock a table
+    *
+    * Unlocks a table after a dbLockTable (actually, unlocks all tables)
+    *
+    * @param    string      $table      Table to unlock (ignored)
+    * @return   void
+    * @see dbLockTable
+    *
+    */
+    function dbUnlockTable($table)
+    {
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** Inside database->dbUnlockTable ***");
+        }
+
+        $sql = 'COMMIT TRAN';
+
+        $this->dbQuery($sql);
+
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** Leaving database->dbUnlockTable ***");
+        }
+    }
+
+    
+}//end class
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/databases/mysql.class.php 1.4.1.src/cpanel-glprivate/system/databases/mysql.class.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/databases/mysql.class.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/databases/mysql.class.php	2006-10-03 14:44:40.000000000 -0500
@@ -2,13 +2,13 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Geeklog 1.3                                                               |
+// | Geeklog 1.4                                                               |
 // +---------------------------------------------------------------------------+
 // | mysql.class.php                                                           |
 // |                                                                           |
 // | mysql database class                                                      |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs, tony AT tonybibbs DOT com                            |
 // +---------------------------------------------------------------------------+
@@ -29,7 +29,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: mysql.class.php,v 1.20 2005/05/09 19:01:15 dhaun Exp $
+// $Id: mysql.class.php,v 1.26 2006/10/03 19:44:40 dhaun Exp $
 
 /**
 * This file is the mysql implementation of the Geeklog abstraction layer.
@@ -74,6 +74,14 @@
     * @access private
     */
     var $_errorlog_fn = '';
+    /**
+    * @access private
+    */
+    var $_charset = '';
+    /**
+    * @access private
+    */
+    var $_mysql_version = 0;
 
     // PRIVATE METHODS
 
@@ -105,11 +113,19 @@
     function _connect()
     {
         if ($this->isVerbose()) {
-            $this->_errorlog("\n*** Inside database->_connect ***<br>");
+            $this->_errorlog("\n*** Inside database->_connect ***");
         }
 
         // Connect to MySQL server
-        $this->_db = mysql_connect($this->_host,$this->_user,$this->_pass) or die('Cannnot connect to DB server');
+        $this->_db = mysql_connect($this->_host,$this->_user,$this->_pass) or die('Cannot connect to DB server');
+
+        if ($this->_mysql_version == 0) {
+            $v = mysql_get_server_info ();
+            preg_match ('/^([0-9]+).([0-9]+).([0-9]+)/', $v, $match);
+            $v = (intval ($match[1]) * 10000) + (intval ($match[2]) * 100)
+               + intval ($match[3]);
+            $this->_mysql_version = $v;
+        }
 
         // Set the database
         @mysql_select_db($this->_name) or die('error selecting database');
@@ -123,8 +139,14 @@
             $this->dbError();
         }
 
+        if ($this->_mysql_version >= 40100) {
+            if ($this->_charset == 'utf-8') {
+                @mysql_query ("SET NAMES 'utf8'", $this->_db);
+            }
+        }
+
         if ($this->isVerbose()) {
-            $this->_errorlog("\n***leaving database->_connect***<br>");
+            $this->_errorlog("\n***leaving database->_connect***");
         }
     }
 
@@ -140,9 +162,10 @@
     * @param        sring       $dbuser     User to make connection as
     * @param        string      $pass       Password for dbuser
     * @param        string      $errorlogfn Name of the errorlog function
+    * @param        string      $charset    character set to use
     *
     */
-    function database($dbhost,$dbname,$dbuser,$dbpass,$errorlogfn='')
+    function database($dbhost,$dbname,$dbuser,$dbpass,$errorlogfn='',$charset='')
     {
         $this->_host = $dbhost;
         $this->_name = $dbname;
@@ -150,6 +173,8 @@
         $this->_pass = $dbpass;
         $this->_verbose = false;
         $this->_errorlog_fn = $errorlogfn;
+        $this->_charset = $charset;
+        $this->_mysql_version = 0;
 
         $this->_connect();
     }
@@ -194,8 +219,8 @@
     function isVerbose()
     {
         if ($this->_verbose && (empty($this->_errorlog_fn) || !function_exists($this->_errorlog_fn))) {
-            print "\n<BR><B>Can't run mysql.class.php verbosely because the errorlog "
-                . "function wasn't set or doesn't exist<BR>\n";
+            print "\n<br><b>Can't run mysql.class.php verbosely because the errorlog "
+                . "function wasn't set or doesn't exist</b><br>\n";
             return false;
         }
 
@@ -226,8 +251,8 @@
     function dbQuery($sql,$ignore_errors=0)
     {
         if ($this->isVerbose()) {
-            $this->_errorlog("\n***inside database->dbQuery***<br>");
-            $this->_errorlog("\n*** sql to execute is $sql ***<br>");
+            $this->_errorlog("\n***inside database->dbQuery***");
+            $this->_errorlog("\n*** sql to execute is $sql ***");
         }
 
         // Run query
@@ -240,8 +265,8 @@
         // If OK, return otherwise echo error
         if (mysql_errno() == 0 && !empty($result)) {
             if ($this->isVerbose()) {
-                $this->_errorlog("\n***sql ran just fine***<BR>");
-                $this->_errorlog("\n*** Leaving database->dbQuery ***<BR>");
+                $this->_errorlog("\n***sql ran just fine***");
+                $this->_errorlog("\n*** Leaving database->dbQuery ***");
             }
             return $result;
 
@@ -250,8 +275,8 @@
             if ($ignore_errors == 1) return false;
 
             if ($this->isVerbose()) {
-                $this->_errorlog("\n***sql caused an error***<br>");
-                $this->_errorlog("\n*** Leaving database->dbQuery ***<BR>");
+                $this->_errorlog("\n***sql caused an error***");
+                $this->_errorlog("\n*** Leaving database->dbQuery ***");
             }
         }
     }
@@ -270,7 +295,7 @@
     function dbSave($table,$fields,$values)
     {
         if ($this->isVerbose()) {
-            $this->_errorlog("\n*** Inside database->dbSave ***<BR>");
+            $this->_errorlog("\n*** Inside database->dbSave ***");
         }
 
         $sql = "REPLACE INTO $table ($fields) VALUES ($values)";
@@ -278,7 +303,7 @@
         $this->dbQuery($sql);
 
         if ($this->isVerbose()) {
-            $this->_errorlog("\n*** Leaving database->dbSave ***<BR>");
+            $this->_errorlog("\n*** Leaving database->dbSave ***");
         }
     }
 
@@ -298,7 +323,7 @@
     function dbDelete($table,$id,$value)
     {
         if ($this->isVerbose()) {
-            $this->_errorlog("\n*** inside database->dbDelete ***<BR>");
+            $this->_errorlog("\n*** inside database->dbDelete ***");
         }
 
         $sql = "DELETE FROM $table";
@@ -331,7 +356,7 @@
         $this->dbQuery($sql);
 
         if ($this->isVerbose()) {
-            $this->_errorlog("\n*** inside database->dbDelete ***<BR>");
+            $this->_errorlog("\n*** inside database->dbDelete ***");
         }
 
         return true;
@@ -390,7 +415,7 @@
         }
 
         if ($this->isVerbose()) {
-            $this->_errorlog("dbChange sql = $sql<BR>");
+            $this->_errorlog("dbChange sql = $sql");
         }
 
         $this->dbQuery($sql);
@@ -416,7 +441,7 @@
     function dbCount($table,$id='',$value='')
     {
         if ($this->isVerbose()) {
-            $this->_errorlog("\n*** Inside database->dbCount ***<br>");
+            $this->_errorlog("\n*** Inside database->dbCount ***");
         }
 
         $sql = "SELECT COUNT(*) FROM $table";
@@ -446,13 +471,13 @@
         }
 
         if ($this->isVerbose()) {
-            print "\n*** sql = $sql ***<br>";
+            $this->_errorlog("\n*** sql = $sql ***");
         }
 
         $result = $this->dbQuery($sql);
 
         if ($this->isVerbose()) {
-            $this->_errorlog("\n*** Leaving database->dbCount ***<BR>");
+            $this->_errorlog("\n*** Leaving database->dbCount ***");
         }
 
         return ($this->dbResult($result,0));
@@ -477,7 +502,7 @@
     function dbCopy($table,$fields,$values,$tablefrom,$id,$value)
     {
         if ($this->isVerbose()) {
-            $this->_errorlog("\n*** Inside database->dbCopy ***<BR>");
+            $this->_errorlog("\n*** Inside database->dbCopy ***");
         }
 
         $sql = "REPLACE INTO $table ($fields) SELECT $values FROM $tablefrom";
@@ -510,7 +535,7 @@
         $this->dbDelete($tablefrom,$id,$value);
 
         if ($this->isVerbose()) {
-            $this->_errorlog("\n*** Leaving database->dbCopy ***<BR>");
+            $this->_errorlog("\n*** Leaving database->dbCopy ***");
         }
 
     }
@@ -527,20 +552,20 @@
     function dbNumRows($recordset)
     {
         if ($this->isVerbose()) {
-            $this->_errorlog("\n*** Inside database->dbNumRows ***<BR>");
+            $this->_errorlog("\n*** Inside database->dbNumRows ***");
         }
 
         // return only if recordset exists, otherwise 0
         if ($recordset) {
             if ($this->isVerbose()) {
                 $this->_errorlog('got ' . @mysql_numrows($recordset) . ' rows');
-                $this->_errorlog("\n*** Inside database->dbNumRows ***<BR>");
+                $this->_errorlog("\n*** Inside database->dbNumRows ***");
             }
             return @mysql_numrows($recordset);
         } else {
             if ($this->isVerbose()) {
-                $this->_errorlog("got no rows<BR>");
-                $this->_errorlog("\n*** Inside database->dbNumRows ***<BR>");
+                $this->_errorlog("got no rows");
+                $this->_errorlog("\n*** Inside database->dbNumRows ***");
             }
             return 0;
         }
@@ -558,13 +583,13 @@
     function dbResult($recordset,$row,$field=0)
     {
         if ($this->isVerbose()) {
-            $this->_errorlog("\n*** Inside database->dbResult ***<BR>");
+            $this->_errorlog("\n*** Inside database->dbResult ***");
             if (empty($recordset)) {
-                $this->_errorlog("\n*** Passed recordset isn't valid ***<br>");
+                $this->_errorlog("\n*** Passed recordset isn't valid ***");
             } else {
-                $this->_errorlog("\n*** Everything looks good ***<br>");
+                $this->_errorlog("\n*** Everything looks good ***");
             }
-            $this->_errorlog("\n*** Leaving database->dbResult ***<br>");
+            $this->_errorlog("\n*** Leaving database->dbResult ***");
         }
         return @mysql_result($recordset,$row,$field);
     }
@@ -672,6 +697,56 @@
 
         return;
     }
+
+    /**
+    * Lock a table
+    *
+    * Locks a table for write operations
+    *
+    * @param    string      $table      Table to lock
+    * @return   void
+    * @see dbUnlockTable
+    *
+    */
+    function dbLockTable($table)
+    {
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** Inside database->dbLockTable ***");
+        }
+
+        $sql = "LOCK TABLES $table WRITE";
+
+        $this->dbQuery($sql);
+
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** Leaving database->dbLockTable ***");
+        }
+    }
+
+    /**
+    * Unlock a table
+    *
+    * Unlocks a table after a dbLockTable (actually, unlocks all tables)
+    *
+    * @param    string      $table      Table to unlock (ignored)
+    * @return   void
+    * @see dbLockTable
+    *
+    */
+    function dbUnlockTable($table)
+    {
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** Inside database->dbUnlockTable ***");
+        }
+
+        $sql = 'UNLOCK TABLES';
+
+        $this->dbQuery($sql);
+
+        if ($this->isVerbose()) {
+            $this->_errorlog("\n*** Leaving database->dbUnlockTable ***");
+        }
+    }
 }
 
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/install_templates/databasesettings.tpl 1.4.1.src/cpanel-glprivate/system/install_templates/databasesettings.tpl
--- 1.4.0sr5-1.src/cpanel-glprivate/system/install_templates/databasesettings.tpl	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/install_templates/databasesettings.tpl	2006-08-19 12:28:40.000000000 -0500
@@ -11,7 +11,8 @@
     </table>
     <input type="hidden" name="page" value="2">
     <input type="hidden" name="geeklog_path" value="{geeklog_path}">
-    <p align="center"><input type="submit" name="action" value="&lt;&lt; Previous">&nbsp;{NEXT_BUTTON}</p>
+    <input type="hidden" name="install_type" value="{install_type}">
+    <p align="center"><input type="submit" name="action" value="&lt;&lt; Back">&nbsp;{NEXT_BUTTON}</p>
     </form>
 </body>
 </html>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/lib-admin.php 1.4.1.src/cpanel-glprivate/system/lib-admin.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/lib-admin.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/lib-admin.php	2006-11-26 06:03:56.000000000 -0600
@@ -8,7 +8,7 @@
 // |                                                                           |
 // | Admin-related functions needed in more than one place.                    |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs         - tony AT tonybibbs DOT com                   |
 // |          Mark Limburg       - mlimburg AT users DOT sourceforge DOT net   |
@@ -33,16 +33,28 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: lib-admin.php,v 1.45.2.1 2006/06/30 12:20:48 dhaun Exp $
+// $Id: lib-admin.php,v 1.95 2006/11/26 12:03:56 dhaun Exp $
 
 if (strpos ($_SERVER['PHP_SELF'], 'lib-admin.php') !== false) {
     die ('This file can not be used on its own!');
 }
 
+/**
+* Common function used in Admin scripts to display a list of items
+*
+* @param    string  $fieldfunction  Name of a function used to display the list item row details
+* @param    array   $header_arr     array of header fields with sortables and table fields
+* @param    array   $text_arr       array with different text strings
+* @param    array   $data_arr       array with sql query data - array of list records
+* @param    array   $menu_arr       menu-entries
+* @param    array   $options        array of options - intially just used for the Check-All feature
+* @return   string                  HTML output of function
+*
+*/
 function ADMIN_simpleList($fieldfunction, $header_arr, $text_arr,
-                           $data_arr, $menu_arr = '')
+                           $data_arr, $menu_arr = '', $options = '')
 {
-    global $_CONF, $_TABLES, $LANG_ADMIN, $LANG_ACCESS, $_IMAGE_TYPE, $MESSAGE;
+    global $_CONF, $_TABLES, $LANG01, $LANG_ADMIN, $LANG_ACCESS, $_IMAGE_TYPE, $MESSAGE;
 
     $retval = '';
 
@@ -50,12 +62,12 @@
     if (!empty($text_arr['help_url'])) {
         $help_url = $text_arr['help_url'];
     }
-    
+
     $title = "";
     if (!empty($text_arr['title'])) {
         $title = $text_arr['title'];
     }
-    
+
     $form_url = '';
     if (!empty($text_arr['form_url'])) {
         $form_url = $text_arr['form_url'];
@@ -74,10 +86,15 @@
                                        'menufields' => 'menufields.thtml'
                                       ));
     $admin_templates->set_var('site_url', $_CONF['site_url']);
+    $admin_templates->set_var('layout_url', $_CONF['layout_url']);
     $admin_templates->set_var('form_url', $form_url);
-    $admin_templates->set_var('icon', $icon);
+    if (isset ($text_arr['icon']) && ($text_arr['icon'] !== false)) {
+        $admin_templates->set_var('icon', "<img src=\"{$text_arr['icon']}\" alt=\"\">");
+    }
 
     $admin_templates->set_var('lang_edit', $LANG_ADMIN['edit']);
+    $admin_templates->set_var('lang_deleteall', $LANG01[124]);
+    $admin_templates->set_var('lang_delconfirm', $LANG01[125]);
 
     if ($text_arr['has_menu']) {
         for ($i = 0; $i < count($menu_arr); $i++) {
@@ -108,23 +125,44 @@
     $retval .= COM_startBlock ($title, $help_url,
                                COM_getBlockTemplate ('_admin_block', 'header'));
 
+    // Check if the delete checkbox and support for the delete all feature should be displayed
+    if (count($data_arr) > 1 AND is_array($options) AND $options['chkdelete']) {
+        $admin_templates->set_var('header_text', '<input type="checkbox" name="chk_selectall" title="'.$LANG01[126].'" onclick="caItems(this.form);">');
+        $admin_templates->set_var('class', "admin-list-headerfield");
+        $admin_templates->set_var('show_deleteimage', '');
+        $admin_templates->parse('header_row', 'header', true);
+        $admin_templates->clear_var('on_click');
+    } else {
+        $admin_templates->set_var('show_deleteimage','display:none;');
+    }
+
     # HEADER FIELDS array(text, field, sort)
     for ($i=0; $i < count( $header_arr ); $i++) {
         $admin_templates->set_var('header_text', $header_arr[$i]['text']);
+        if (!empty($header_arr[$i]['header_class'])) {
+            $admin_templates->set_var('class', $header_arr[$i]['header_class']);
+        } else {
+            $admin_templates->set_var('class', "admin-list-headerfield");
+        }
         $admin_templates->parse('header_row', 'header', true);
     }
 
-    if (count($data_arr)==0) {
+    if (count($data_arr) == 0) {
         if (isset($text_arr['no_data'])) {
             $message = $text_arr['no_data'];
         } else {
             $message = $LANG_ADMIN['no_results'];
         }
         $admin_templates->set_var('message', $message);
-    } else if ($data_arr == false) {
+    } else if ($data_arr === false) {
         $admin_templates->set_var('message', $LANG_ADMIN['data_error']);
     } else {
+        $admin_templates->set_var('show_message', 'display:none;');
         for ($i = 0; $i < count($data_arr); $i++) {
+            if (count($data_arr) > 1 AND is_array($options) AND $options['chkdelete']) {
+                $admin_templates->set_var('itemtext', '<input type="checkbox" name="delitem[]" value="' . $data_arr[$i][$options['chkfield']].'">');
+                $admin_templates->parse('item_field', 'field', true);
+            }
             for ($j = 0; $j < count($header_arr); $j++) {
                 $fieldname = $header_arr[$j]['field'];
                 $fieldvalue = '';
@@ -136,6 +174,11 @@
                 } else {
                     $fieldvalue = $fieldvalue;
                 }
+                if (!empty($header_arr[$j]['field_class'])) {
+                    $admin_templates->set_var('class', $header_arr[$j]['field_class']);
+                } else {
+                      $admin_templates->set_var('class', "admin-list-field");
+                }
                 if ($fieldvalue !== false) {
                     $admin_templates->set_var('itemtext', $fieldvalue);
                     $admin_templates->parse('item_field', 'field', true);
@@ -153,6 +196,7 @@
     return $retval;
 
 }
+
 /**
 * Creates a list of data with a menu, search, filter, clickable headers etc.
 *
@@ -169,79 +213,99 @@
 *
 */
 function ADMIN_list($component, $fieldfunction, $header_arr, $text_arr,
-            $query_arr, $menu_arr, $defsort_arr, $filter = '', $extra = '')
+            $query_arr, $menu_arr, $defsort_arr, $filter = '', $extra = '', $options = '')
 {
-    global $_CONF, $_TABLES, $LANG_ADMIN, $LANG_ACCESS, $_IMAGE_TYPE, $MESSAGE;
+    global $_CONF, $_TABLES, $LANG_ADMIN, $LANG_ACCESS, $LANG01, $_IMAGE_TYPE, $MESSAGE;
 
+    // set all variables to avoid warnings
     $retval = '';
-
     $filter_str = '';
     $order_sql = '';
     $limit = '';
-    $prevorder = "";
-    if (isset($_GET['prevorder'])) { # what was the last sorting?
+    $prevorder = '';
+    if (isset ($_GET['prevorder'])) { # what was the last sorting?
         $prevorder = COM_applyFilter ($_GET['prevorder']);
     }
 
-    $query = "";
-    if (isset($_REQUEST['q'])) { # get query (text-search)
+    $query = '';
+    if (isset ($_REQUEST['q'])) { # get query (text-search)
         $query = $_REQUEST['q'];
     }
 
     $query_limit = "";
     if (isset($_REQUEST['query_limit'])) { # get query-limit (list-length)
         $query_limit = COM_applyFilter ($_REQUEST['query_limit'], true);
+        if($query_limit == 0) {
+            $query_limit = 50;
+        }
     }
 
-    $offset = 0;
-    if (isset ($_REQUEST['offset'])) { # get offset (where does next page start?)
-        $offset = COM_applyFilter ($_REQUEST['offset'], true);
-    }
+    // we assume that the current page is 1 to set it.
     $curpage = 1;
-    $page = "";
+    $page = '';
+    // get the current page from the interface. The variable is linked to the
+    // component, i.e. the plugin/function calling this here to avoid overlap
     if (isset ($_REQUEST[$component . 'listpage'])) {
-        $page = COM_applyFilter ($_GET[$component . 'listpage'], true);
+        $page = COM_applyFilter ($_REQUEST[$component . 'listpage'], true);
         $curpage = $page;
     }
     if ($curpage <= 0) {
         $curpage = 1; #current page has to be larger 0
     }
-    
+
     #$unfiltered='';
     #if (!empty($query_arr['unfiltered'])) {
     #    $unfiltered = $query_arr['unfiltered'];
     #}
 
-    $help_url = ""; # do we have a help url for the block-header?
-    if (!empty($text_arr['help_url'])) {
+    $help_url = ''; # do we have a help url for the block-header?
+    if (!empty ($text_arr['help_url'])) {
         $help_url = $text_arr['help_url'];
     }
-    
-    $form_url = ""; # what is the form-url for the search button?
-    if (!empty($text_arr['form_url'])) {
+
+    $form_url = ''; # what is the form-url for the search button and list sorters?
+    if (!empty ($text_arr['form_url'])) {
         $form_url = $text_arr['form_url'];
     }
 
-    $title = ""; # what is the title of the page?
-    if (!empty($text_arr['title'])) {
+    $title = ''; # what is the title of the page?
+    if (!empty ($text_arr['title'])) {
         $title = $text_arr['title'];
     }
 
     # get all template fields. Maybe menufields can be only loaded if used?
     $admin_templates = new Template($_CONF['path_layout'] . 'admin/lists');
-    $admin_templates->set_file (array ('topmenu' => 'topmenu.thtml',
-                                       'list' => 'list.thtml',
-                                       'header' => 'header.thtml',
-                                       'row' => 'listitem.thtml',
-                                       'field' => 'field.thtml',
-                                       'menufields' => 'menufields.thtml'
-                                      ));
-    # inserty some values into the template
+    $admin_templates->set_file (array (
+        'topmenu' => 'topmenu.thtml',
+        'list' => 'list.thtml',
+        'header' => 'header.thtml',
+        'row' => 'listitem.thtml',
+        'field' => 'field.thtml',
+        'menufields' => 'menufields.thtml'
+    ));
+
+    # insert std. values into the template
     $admin_templates->set_var('site_url', $_CONF['site_url']);
+    $admin_templates->set_var('layout_url', $_CONF['layout_url']);
     $admin_templates->set_var('form_url', $form_url);
-    $admin_templates->set_var('icon', $text_arr['icon']);
+    if ($text_arr['icon'] !== false or $text_arr['icon']='') {
+        $admin_templates->set_var('icon', "<img src=\"{$text_arr['icon']}\" alt=\"\">");
+    }
     $admin_templates->set_var('lang_edit', $LANG_ADMIN['edit']);
-    
+    $admin_templates->set_var('lang_deleteall', $LANG01[124]);
+    $admin_templates->set_var('lang_delconfirm', $LANG01[125]);
+
+    // Check if the delete checkbox and support for the delete all feature should be displayed
+    if (is_array($options) AND $options['chkdelete']) {
+        $admin_templates->set_var('header_text', '<input type="checkbox" name="chk_selectall" title="'.$LANG01[126].'" onclick="caItems(this.form);">');
+        $admin_templates->set_var('class', "admin-list-headerfield");
+        $admin_templates->set_var('show_deleteimage', '');
+        $admin_templates->parse('header_row', 'header', true);
+        $admin_templates->clear_var('on_click');
+    } else {
+        $admin_templates->set_var('show_deleteimage','display:none;');
+    }
+
     # define icon paths. Those will be transmitted to $fieldfunction.
     $icon_arr = array(
         'edit' => '<img src="' . $_CONF['layout_url'] . '/images/edit.'
@@ -254,7 +318,7 @@
             . $_IMAGE_TYPE . '" border="0" alt="' . $LANG_ACCESS['listthem']
             . '" title="' . $LANG_ACCESS['listthem'] . '">'
     );
-    # the user can disable the menu. if used, create it.
+    // the user can disable the menu. if used, create it.
     if ($text_arr['has_menu']) {
         for ($i = 0; $i < count($menu_arr); $i++) { # iterate through menu
             $admin_templates->set_var('menu_url', $menu_arr[$i]['url'] );
@@ -266,43 +330,55 @@
             $admin_templates->clear_var('line'); # clear separator after use
         }
         # add text strings to template
+        $admin_templates->set_var('lang_instructions', $text_arr['instructions']);
         $admin_templates->set_var('lang_search', $LANG_ADMIN['search']);
         $admin_templates->set_var('lang_submit', $LANG_ADMIN['submit']);
         $admin_templates->set_var('lang_limit_results', $LANG_ADMIN['limit_results']);
-        $admin_templates->set_var('lang_instructions', $text_arr['instructions']);
-        $admin_templates->set_var('last_query', $query);
+        $admin_templates->set_var('last_query', COM_applyFilter($query));
         $admin_templates->set_var('filter', $filter);
         $admin_templates->parse('top_menu', 'topmenu', true);
     }
-    
-    # since people search with ...* replace with ....% for SQL
-    $query = str_replace ('*', '%', $query);
+
     $sql_query = addslashes ($query); # replace quotes etc for security
     $sql = $query_arr['sql']; # get sql from array that builds data
 
-    $order_var = ""; # number that is displayed in URL
-    $order = "";     # field that is used in SQL
-    if (!isset($_GET['order'])) {
-        $order = $defsort_arr['field'];
+    $order_var = ''; # number that is displayed in URL
+    $order = '';     # field that is used in SQL
+    $order_var_link = ''; # Variable for google paging.
+
+    // is the order set in the link (when sorting the list)
+    if (!isset ($_GET['order'])) {
+        $order = $defsort_arr['field']; // no, get the default
     } else {
         $order_var = COM_applyFilter ($_GET['order'], true);
         $order_var_link = "&amp;order=$order_var"; # keep the variable for the google paging
         $order = $header_arr[$order_var]['field'];  # current order field name
     }
+    $order_for_query = $order;
+    // this code sorts only by the field if its in table.field style.
+    // removing this however makes match for arrow-display impossible, so removed it.
+    // maybe now for more fields the table has to be added to the sortfield?
+    //$order = explode ('.', $order);
+    //if (count ($order) > 1) {
+    //    $order = $order[1];
+    //} else {
+    //    $order = $order[0];
+    //}
 
-    $direction = "";
-    if (!isset($_GET['direction'])) { # get direction to sort after
+    $direction = '';
+    if (!isset ($_GET['direction'])) { # get direction to sort after
         $direction = $defsort_arr['direction'];
     } else {
-        $direction = $_GET['direction'];
+        $direction = COM_applyFilter ($_GET['direction']);
     }
+    $direction = strtoupper ($direction);
     if ($order == $prevorder) { #reverse direction if prev. order was the same
-        $direction = ($direction == 'desc') ? 'asc' : 'desc';
+        $direction = ($direction == 'DESC') ? 'ASC' : 'DESC';
     } else {
-        $direction = ($direction == 'desc') ? 'desc' : 'asc';
+        $direction = ($direction == 'DESC') ? 'DESC' : 'ASC';
     }
 
-    if ($direction == 'asc') { # assign proper arrow img name dep. on sort order
+    if ($direction == 'ASC') { # assign proper arrow img name dep. on sort order
         $arrow = 'bararrowdown';
     } else {
         $arrow = 'bararrowup';
@@ -310,32 +386,54 @@
     # make actual order arrow image
     $img_arrow = '&nbsp;<img src="' . $_CONF['layout_url'] . '/images/' . $arrow
             . '.' . $_IMAGE_TYPE . '" border="0" alt="">';
-    
-    if (!empty($order)) { # concat order string
-        $order_sql = "ORDER BY $order $direction";
+
+    if (!empty ($order_for_query)) { # concat order string
+        $order_sql = "ORDER BY $order_for_query $direction";
     }
+    $th_subtags = ''; // other tags in the th, such as onlick and mouseover
+    $header_text = ''; // title as displayed to the user
+    // HEADER FIELDS array(text, field, sort, class)
+    // this part defines the contents & format of the header fields
 
-    # HEADER FIELDS array(text, field, sort)
     for ($i=0; $i < count( $header_arr ); $i++) { #iterate through all headers
-        $admin_templates->set_var('header_text', $header_arr[$i]['text']); # title
+        $header_text = $header_arr[$i]['text'];
         if ($header_arr[$i]['sort'] != false) { # is this sortable?
             if ($order==$header_arr[$i]['field']) { # is this currently sorted?
-                $admin_templates->set_var('img_arrow', $img_arrow);
+                $header_text .= $img_arrow;
             }
             # make the mouseover effect is sortable
-            $admin_templates->set_var('mouse_over', "OnMouseOver=\"this.style.cursor='pointer';\"");
+            $th_subtags = " OnMouseOver=\"this.style.cursor='pointer';\"";
             $order_var = $i; # assign number to field so we know what to sort
-            $onclick="onclick=\"window.location.href='$form_url?" #onclick action
-                    ."order=$order_var&amp;prevorder=$order&amp;direction=$direction"
-                    ."&amp;" . $component . "listpage=$page"
-                    ."&amp;q=$query&amp;query_limit=$query_limit$extra';\"";
-            $admin_templates->set_var('on_click', $onclick);
+            if (strpos ($form_url, '?') > 0) {
+                $separator = '&amp;';
+            } else {
+                $separator = '?';
+            }
+            $th_subtags .= " onclick=\"window.location.href='$form_url$separator" #onclick action
+                    ."order=$order_var&amp;prevorder=$order&amp;direction=$direction";
+            if (!empty ($page)) {
+                $th_subtags .= '&amp;' . $component . 'listpage=' . $page;
+            }
+            if (!empty ($query)) {
+                $th_subtags .= '&amp;q=' . $query;
+            }
+            if (!empty ($query_limit)) {
+                $th_subtags .= '&amp;query_limit=' . $query_limit;
+            }
+            $th_subtags .= "';\"";
+        }
+
+        if (!empty($header_arr[$i]['header_class'])) {
+            $admin_templates->set_var('class', $header_arr[$i]['header_class']);
+        } else {
+            $admin_templates->set_var('class', "admin-list-headerfield");
         }
+        $admin_templates->set_var('header_text', $header_text);
+        $admin_templates->set_var('th_subtags', $th_subtags);
         $admin_templates->parse('header_row', 'header', true);
-        $admin_templates->clear_var('img_arrow'); # clear all for next header
-        $admin_templates->clear_var('mouse_over');
-        $admin_templates->clear_var('on_click');
-        $admin_templates->clear_var('arrow');
+        $admin_templates->clear_var('th_subtags'); // clear all for next header
+        $admin_templates->clear_var('class');
+        $admin_templates->clear_var('header_text');
     }
 
     $has_extras = '';
@@ -363,45 +461,66 @@
         if (!empty ($query)) { # add query fields with search term
             $filter_str .= " AND (";
             for ($f = 0; $f < count($query_arr['query_fields']); $f++) {
-                $filter_str .= $query_arr['query_fields'][$f] . " LIKE '$sql_query'";
+                $filter_str .= $query_arr['query_fields'][$f]
+                            . " LIKE '%$sql_query%'";
                 if ($f < (count($query_arr['query_fields']) - 1)) {
                     $filter_str .= " OR ";
                 }
             }
             $filter_str .= ")";
         }
-        $num_pages = ceil (DB_getItem ($_TABLES[$query_arr['table']], 'count(*)',
-                            "1 " . $filter_str) / $limit);
+        $num_pages_sql = $sql . $filter_str;
+        // COM_errorLog($num_pages_sql);
+        $num_pages_result = DB_query($num_pages_sql);
+        $num_rows = DB_numRows($num_pages_result);
+        $num_pages = ceil ($num_rows / $limit);
         if ($num_pages < $curpage) { # make sure we dont go beyond possible results
                $curpage = 1;
         }
         $offset = (($curpage - 1) * $limit);
         $limit = "LIMIT $offset,$limit"; # get only current page data
+        $admin_templates->set_var ('lang_records_found',
+                                   $LANG_ADMIN['records_found']);
+        $admin_templates->set_var ('records_found',
+                                   COM_numberFormat ($num_rows));
     }
 
     # SQL
     $sql .= "$filter_str $order_sql $limit;";
+    // echo $sql;
     $result = DB_query($sql);
     $nrows = DB_numRows($result);
     $r = 1; # r is the counter for the actual displayed rows for correct coloring
     for ($i = 0; $i < $nrows; $i++) { # now go through actual data
         $A = DB_fetchArray($result);
         $this_row = false; # as long as no fields are returned, dont print row
+        if (is_array($options) AND $options['chkdelete']) {
+            $admin_templates->set_var('class', "admin-list-field");
+            $admin_templates->set_var('itemtext', '<input type="checkbox" name="delitem[]" value="' . $A[$options['chkfield']].'">');
+            $admin_templates->parse('item_field', 'field', true);
+        }
         for ($j = 0; $j < count($header_arr); $j++) {
             $fieldname = $header_arr[$j]['field']; # get field name from headers
             $fieldvalue = '';
             if (!empty($A[$fieldname])) { # is there a field in data like that?
                 $fieldvalue = $A[$fieldname]; # yes, get its data
             }
-            if (!empty($fieldfunction)) { # do we have a fieldfunction?
-                $fieldvalue = $fieldfunction($fieldname, $fieldvalue, $A, $icon_arr);
+            if (!empty ($fieldfunction) && !empty ($extra)) {
+                $fieldvalue = $fieldfunction ($fieldname, $fieldvalue, $A, $icon_arr, $extra);
+            } else if (!empty ($fieldfunction)) { # do we have a fieldfunction?
+                $fieldvalue = $fieldfunction ($fieldname, $fieldvalue, $A, $icon_arr);
             } else { # if not just take the value
                 $fieldvalue = $fieldvalue;
             }
             if ($fieldvalue !== false) { # return was there, so write line
                 $this_row = true;
             } else {
-                $fieldvalue = ''; # set field = ''
+                $fieldvalue = ''; // dont give emtpy fields
+            }
+            if (!empty($header_arr[$j]['field_class'])) {
+                $admin_templates->set_var('class', $header_arr[$j]['field_class']);
+            } else {
+                $admin_templates->set_var('class', "admin-list-field");
             }
             $admin_templates->set_var('itemtext', $fieldvalue); # write field
             $admin_templates->parse('item_field', 'field', true);
@@ -424,10 +543,16 @@
     }
 
     if ($has_extras) { # now make google-paging
+        $hasargs = strstr( $form_url, '?' );
+        if( $hasargs ) {
+            $sep = '&amp;';
+        } else {
+            $sep = '?';
+        }
         if (!empty($query)) { # port query to next page
-            $base_url = $form_url . '?q=' . urlencode($query) . "&amp;query_limit=$query_limit$order_var_link&amp;direction=$direction";
+            $base_url = $form_url . $sep . 'q=' . urlencode($query) . "&amp;query_limit=$query_limit$order_var_link&amp;direction=$direction";
         } else {
-            $base_url = $form_url . "?query_limit=$query_limit$order_var_link&amp;direction=$direction";
+            $base_url = $form_url . $sep ."query_limit=$query_limit$order_var_link&amp;direction=$direction";
         }
 
         if ($num_pages > 1) { # print actual google-paging
@@ -438,11 +563,14 @@
     }
 
     $admin_templates->parse('output', 'list');
-    
+
     # Do the actual output
     $retval .= COM_startBlock ($title, $help_url,
-                               COM_getBlockTemplate ('_admin_block', 'header'))
-             . $admin_templates->finish($admin_templates->get_var('output'))
+                               COM_getBlockTemplate ('_admin_block', 'header'));
+    if (!$has_extras) {
+        $retval .= $text_arr['instructions'];
+    }
+    $retval .= $admin_templates->finish($admin_templates->get_var('output'))
              . COM_endBlock (COM_getBlockTemplate ('_admin_block', 'footer'));
 
     return $retval;
@@ -450,7 +578,8 @@
 
 
 
-function ADMIN_getListField_blocks($fieldname, $fieldvalue, $A, $icon_arr) {
+function ADMIN_getListField_blocks($fieldname, $fieldvalue, $A, $icon_arr)
+{
     global $_CONF, $LANG_ADMIN, $LANG21, $_IMAGE_TYPE;
     $retval = false;
 
@@ -512,55 +641,37 @@
     return $retval;
 }
 
-function ADMIN_getListField_events($fieldname, $fieldvalue, $A, $icon_arr) {
-    global $_CONF, $LANG_ACCESS, $LANG_ADMIN;
-    $retval = '';
-
-    $access = SEC_hasAccess($A['owner_id'],$A['group_id'],$A['perm_owner'],$A['perm_group'],$A['perm_members'],$A['perm_anon']);
+function ADMIN_getListField_groups($fieldname, $fieldvalue, $A, $icon_arr)
+{
+    global $_CONF, $LANG_ACCESS, $LANG_ADMIN, $thisUsersGroups;
 
-    switch($fieldname) {
-        case "edit":
-            if ($access == 3) {
-                $retval = "<a href=\"{$_CONF['site_admin_url']}/event.php?mode=edit&amp;eid={$A['eid']}\">{$icon_arr['edit']}</a>";
-            }
-            break;
-        case "copy":
-            if ($access == 3) {
-                $retval = "<a href=\"{$_CONF['site_admin_url']}/event.php?mode=clone&amp;eid={$A['eid']}\">{$icon_arr['copy']}</a>";
-            }
-            break;
-        case 'access':
-            if ($access == 3) {
-                $retval = $LANG_ACCESS['edit'];
-            } else {
-                $retval = $LANG_ACCESS['readonly'];
-            }
-            break;
-        case 'title':
-            $retval = stripslashes ($A['title']);
-            $retval = "<a href=\"{$_CONF['site_url']}/calendar_event.php?eid="
-                    . "{$A['eid']}\">$retval</a>";
-            break;
-        default:
-            $retval = $fieldvalue;
-            break;
-    }
-    return $retval;
-}
+    $retval = false;
 
-function ADMIN_getListField_groups($fieldname, $fieldvalue, $A, $icon_arr) {
-    global $_CONF, $LANG_ACCESS, $LANG_ADMIN, $thisUsersGroups;
-    $retval = '';
-    
     if( !is_array($thisUsersGroups) )
     {
         $thisUsersGroups = SEC_getUserGroups();
     }
+
+    // Extra test required to handle that different ways this option is passed and need to be able to
+    // over-ride the option using the posted form when the URL contains the variable as well
+    $show_all_groups = false;
+    if (isset($_POST['q'])) {   // Form has been posted - test actual option in this form
+        if ($_POST['chk_showall'] == 1) {
+            $show_all_groups = true;
+        }
+    } else if (isset ($_GET['showall']) && ($_GET['showall'] == 1)) {
+        $show_all_groups = true;
+    }
+
     if (in_array ($A['grp_id'], $thisUsersGroups ) ||
         SEC_groupIsRemoteUserAndHaveAccess( $A['grp_id'], $thisUsersGroups )) {
         switch($fieldname) {
-            case "edit":
-                $retval = "<a href=\"{$_CONF['site_admin_url']}/group.php?mode=edit&amp;grp_id={$A['grp_id']}\">{$icon_arr['edit']}</a>";
+            case 'edit':
+                if ($show_all_groups) {
+                    $retval = "<a href=\"{$_CONF['site_admin_url']}/group.php?mode=edit&amp;grp_id={$A['grp_id']}&amp;chk_showall=1\">{$icon_arr['edit']}</a>";
+                } else {
+                    $retval = "<a href=\"{$_CONF['site_admin_url']}/group.php?mode=edit&amp;grp_id={$A['grp_id']}\">{$icon_arr['edit']}</a>";
+                }
                 break;
             case 'grp_gl_core':
                 if ($A['grp_gl_core'] == 1) {
@@ -570,52 +681,102 @@
                 }
                 break;
             case 'list':
-                $retval = "<a href=\"{$_CONF['site_admin_url']}/group.php?mode=listusers&amp;grp_id={$A['grp_id']}\">"
-                         ."{$icon_arr['list']}</a>&nbsp;&nbsp;"
-                         ."<a href=\"{$_CONF['site_admin_url']}/group.php?mode=editusers&amp;grp_id={$A['grp_id']}\">"
-                         ."{$icon_arr['edit']}</a>";
+                if ($show_all_groups) {
+                    $retval = "<a href=\"{$_CONF['site_admin_url']}/group.php?mode=listusers&amp;grp_id={$A['grp_id']}&amp;chk_showall=1\">"
+                             ."{$icon_arr['list']}</a>&nbsp;&nbsp;"
+                             ."<a href=\"{$_CONF['site_admin_url']}/group.php?mode=editusers&amp;grp_id={$A['grp_id']}&amp;chk_showall=1\">"
+                             ."{$icon_arr['edit']}</a>";
+                } else {
+                    $retval = "<a href=\"{$_CONF['site_admin_url']}/group.php?mode=listusers&amp;grp_id={$A['grp_id']}\">"
+                             ."{$icon_arr['list']}</a>&nbsp;&nbsp;"
+                             ."<a href=\"{$_CONF['site_admin_url']}/group.php?mode=editusers&amp;grp_id={$A['grp_id']}\">"
+                             ."{$icon_arr['edit']}</a>";
+                }
                 break;
             default:
                 $retval = $fieldvalue;
                 break;
         }
     }
+
     return $retval;
 }
 
 function ADMIN_getListField_users($fieldname, $fieldvalue, $A, $icon_arr)
 {
-    global $_CONF, $LANG_ADMIN, $LANG28, $_IMAGE_TYPE;
+    global $_CONF, $_TABLES, $LANG_ADMIN, $LANG04, $LANG28, $_IMAGE_TYPE;
 
     $retval = '';
 
-    switch($fieldname) {
-        case "edit":
+    switch ($fieldname) {
+        case 'delete':
+            $retval = '<input type="checkbox" name="delitem[]" checked="checked">';
+            break;
+        case 'edit':
             $retval = "<a href=\"{$_CONF['site_admin_url']}/user.php?mode=edit&amp;uid={$A['uid']}\">{$icon_arr['edit']}</a>";
             break;
         case 'username':
-            $photoico = '<img src="' . $_CONF['layout_url']
-                      . '/images/smallcamera.' . $_IMAGE_TYPE
-                      . '" border="0" alt="">';
-            if (!empty($A['photo']))
-                 {$photoico = "&nbsp;" . $photoico;}
-            else
-                 {$photoico = '';}
-            $retval = '<a href="'. $_CONF['site_url']. '/users.php?mode=profile&amp;uid='
-                      . $A['uid'].'">' . $fieldvalue.'</a>' . $photoico;
-            break;
-        case "lastlogin":
-             if ($fieldvalue < 1) {
-                 $retval = $LANG28[36];
-             } else {
-                 $retval = strftime ($_CONF['daytime'],$A['lastlogin']);
-             }
-
+            $photoico = '';
+            if (!empty ($A['photo'])) {
+                $photoico = "&nbsp;<img src=\"{$_CONF['layout_url']}/images/smallcamera."
+                          . $_IMAGE_TYPE . '" border="0" alt="{$LANG04[77]}">';
+            } else {
+                $photoico = '';
+            }
+            $retval = '<a href="' . $_CONF['site_url']
+                    . '/users.php?mode=profile&amp;uid=' .  $A['uid'] . '">'
+                    . $fieldvalue . '</a>' . $photoico;
+            break;
+        case 'lastlogin':
+            if ($fieldvalue < 1) {
+                // if the user never logged in, show the registration date
+                $regdate = strftime ($_CONF['shortdate'], strtotime($A['regdate']));
+                $retval = "({$LANG28[36]}, {$LANG28[53]} $regdate)";
+            } else {
+                $retval = strftime ($_CONF['shortdate'], $fieldvalue);
+            }
+            break;
+        case 'lastlogin_short':
+            if ($fieldvalue < 1) {
+                // if the user never logged in, show the registration date
+                $regdate = strftime ($_CONF['shortdate'], strtotime($A['regdate']));
+                $retval = "({$LANG28[36]})";
+            } else {
+                $retval = strftime ($_CONF['shortdate'], $fieldvalue);
+            }
+            break;
+        case 'online_days':
+            if ($fieldvalue < 0){
+                // users that never logged in, would have a negative online days
+                $retval = "N/A";
+            } else {
+                $retval = $fieldvalue;
+            }
+            break;
+        case 'phantom_date':
+        case 'offline_months':
+            $retval = COM_numberFormat(round($fieldvalue / 2592000, 1));
+            break;
+        case 'online_hours':
+            $retval = COM_numberFormat(round($fieldvalue / 3600, 3));
+            break;
+        case 'regdate':
+            $retval = strftime ($_CONF['shortdate'], strtotime($fieldvalue));
+            break;
+        case $_TABLES['users'] . '.uid':
+            $retval = $A['uid'];
             break;
         default:
             $retval = $fieldvalue;
             break;
     }
+
+    if (isset($A['status']) && ($A['status'] == USER_ACCOUNT_DISABLED)) {
+        if (($fieldname != 'edit') && ($fieldname != 'username')) {
+            $retval = sprintf ('<s title="%s">%s</s>', $LANG28[42], $retval);
+        }
+    }
+
     return $retval;
 }
 
@@ -651,6 +812,7 @@
             break;
         case "access":
         case "edit":
+        case "edit_adv":
             $access = SEC_hasAccess ($A['owner_id'], $A['group_id'],
                                      $A['perm_owner'], $A['perm_group'],
                                      $A['perm_members'], $A['perm_anon']);
@@ -666,7 +828,11 @@
             if ($fieldname == 'access') {
                 $retval = $access;
             } else if ($access == $LANG_ACCESS['edit']) {
-                $retval = "<a href=\"{$_CONF['site_admin_url']}/story.php?mode=edit&amp;sid={$A['sid']}\">{$icon_arr['edit']}</a>";
+                if ($fieldname == 'edit_adv') {
+                    $retval = "<a href=\"{$_CONF['site_admin_url']}/story.php?mode=edit&amp;editor=adv&amp;sid={$A['sid']}\">{$icon_arr['edit']}</a>";
+                } else if ($fieldname == 'edit') {
+                    $retval = "<a href=\"{$_CONF['site_admin_url']}/story.php?mode=edit&amp;editor=std&amp;sid={$A['sid']}\">{$icon_arr['edit']}</a>";
+                }
             }
             break;
         case "featured":
@@ -695,6 +861,9 @@
             }
             $retval = $topics[$A['tid']];
             break;
+        case 'username':
+            $retval = COM_getDisplayName ($A['uid'], $A['username'], $A['fullname']);
+            break;
         default:
             $retval = $fieldvalue;
             break;
@@ -704,9 +873,10 @@
 }
 
 function ADMIN_getListField_syndication($fieldname, $fieldvalue, $A, $icon_arr) {
-    global $_CONF, $LANG_ADMIN, $LANG33, $_IMAGE_TYPE;
+    global $_CONF, $_TABLES, $LANG_ADMIN, $LANG33, $_IMAGE_TYPE;
+
     $retval = '';
-    
+
     switch($fieldname) {
         case "edit":
             $retval = "<a href=\"{$_CONF['site_admin_url']}/syndication.php?mode=edit&amp;fid={$A['fid']}\">{$icon_arr['edit']}</a>";
@@ -735,6 +905,9 @@
                 $retval = $LANG33[43];
             } elseif ($A['header_tid'] == 'none') {
                 $retval = $LANG33[44];
+            } else {
+                $retval = DB_getItem ($_TABLES['topics'], 'topic',
+                                      "tid = '{$A['header_tid']}'");
             }
             break;
         case 'filename':
@@ -792,35 +965,53 @@
     return $retval;
 }
 
-function ADMIN_getListField_moderation($fieldname, $fieldvalue, $A, $icon_arr) {
-    global $_CONF, $LANG_ADMIN, $type;
+function ADMIN_getListField_moderation($fieldname, $fieldvalue, $A, $icon_arr)
+{
+    global $_CONF, $_TABLES, $LANG_ADMIN;
+
     $retval = '';
-    
-    switch($fieldname) {
-        case "edit":
+
+    $type = '';
+    if (isset ($A['_moderation_type'])) {
+        $type = $A['_moderation_type'];
+    }
+    switch ($fieldname) {
+        case 'edit':
             $retval = "<a href=\"{$A['edit']}\">{$icon_arr['edit']}</a>";
             break;
-        case "delete":
+        case 'delete':
             $retval = "<input type=\"radio\" name=\"action[{$A['row']}]\" value=\"delete\">";
             break;
-        case "approve":
+        case 'approve':
             $retval = "<input type=\"radio\" name=\"action[{$A['row']}]\" value=\"approve\">"
                      ."<input type=\"hidden\" name=\"id[{$A['row']}]\" value=\"{$A[0]}\">";
             break;
-        case "day":
+        case 'day':
             $retval = strftime ($_CONF['daytime'], $A['day']);
             break;
+        case 'tid':
+            $retval = DB_getItem ($_TABLES['topics'], 'topic',
+                                  "tid = '{$A['tid']}'");
+            break;
         default:
-            $retval = COM_makeClickableLinks (stripslashes ( $fieldvalue));
+            if (($fieldname == 3) && ($type == 'story')) {
+                $retval = DB_getItem ($_TABLES['topics'], 'topic',
+                                      "tid = '{$A[3]}'");
+            } else {
+                $retval = COM_makeClickableLinks (stripslashes ($fieldvalue));
+            }
             break;
     }
+
     return $retval;
 }
 
-function ADMIN_getListField_trackback($fieldname, $fieldvalue, $A, $icon_arr) {
-    global $_CONF, $LANG_TRB, $type;
+function ADMIN_getListField_trackback($fieldname, $fieldvalue, $A, $icon_arr)
+{
+    global $_CONF, $LANG_TRB;
+
     $retval = '';
-    
+
     switch($fieldname) {
         case "edit":
             $retval = "<a href=\"{$_CONF['site_admin_url']}/trackback.php?mode=editservice&amp;service_id={$A['pid']}\">{$icon_arr['edit']}</a>";
@@ -853,6 +1044,7 @@
             $retval = $fieldvalue;
             break;
     }
+
     return $retval;
 }
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/lib-comment.php 1.4.1.src/cpanel-glprivate/system/lib-comment.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/lib-comment.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/lib-comment.php	2006-12-09 16:35:17.000000000 -0600
@@ -33,7 +33,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: lib-comment.php,v 1.28.2.3 2006/07/22 14:12:03 dhaun Exp $
+// $Id: lib-comment.php,v 1.48 2006/12/09 22:16:49 dhaun Exp $
 
 if (strpos ($_SERVER['PHP_SELF'], 'lib-comment.php') !== false) {
     die ('This file can not be used on its own!');
@@ -66,7 +66,8 @@
 
     $parts = explode( '/', $_SERVER['PHP_SELF'] );
     $page = array_pop( $parts );
-    $nrows = DB_count( $_TABLES['comments'], 'sid', $sid );
+    $nrows = DB_count( $_TABLES['comments'], array( 'sid', 'type' ),
+                       array( $sid, $type ));
 
     $commentbar = new Template( $_CONF['path_layout'] . 'comment' );
     $commentbar->set_file( array( 'commentbar' => 'commentbar.thtml' ));
@@ -75,7 +76,7 @@
 
     $commentbar->set_var( 'lang_comments', $LANG01[3] );
     $commentbar->set_var( 'lang_refresh', $LANG01[39] );
-    $commentbar->set_var( 'lang_reply', $LANG01[25] );
+    $commentbar->set_var( 'lang_reply', $LANG01[60] );
     $commentbar->set_var( 'lang_disclaimer', $LANG01[26] );
 
     $commentbar->set_var( 'story_title', stripslashes( $title ));
@@ -102,8 +103,7 @@
 
     if( !empty( $_USER['uid'] ) && ( $_USER['uid'] > 1 )) {
         $username = $_USER['username'];
-        $fullname = DB_getItem( $_TABLES['users'], 'fullname',
-                                "uid = '{$_USER['uid']}'" ); 
+        $fullname = $_USER['fullname'];
     } else {
         $result = DB_query( "SELECT username,fullname FROM {$_TABLES['users']} WHERE uid = 1" );
         $N = DB_fetchArray( $result );
@@ -117,7 +117,9 @@
     $commentbar->set_var( 'user_fullname', $fullname );    
 
     if( !empty( $_USER['username'] )) {
-        $commentbar->set_var( 'user_nullname', $username );
+        $author = COM_getDisplayName( $_USER['uid'], $username, $fullname );
+        $commentbar->set_var( 'user_nullname', $author );
+        $commentbar->set_var( 'author', $author );
         $commentbar->set_var( 'login_logout_url',
                               $_CONF['site_url'] . '/users.php?mode=logout' );
         $commentbar->set_var( 'lang_login_logout', $LANG01[35] );
@@ -198,7 +200,7 @@
 */
 function CMT_getComment( &$comments, $mode, $type, $order, $delete_option = false, $preview = false )
 {
-    global $_CONF, $_TABLES, $_USER, $LANG01, $_IMAGE_TYPE;
+    global $_CONF, $_TABLES, $_USER, $LANG01, $MESSAGE, $_IMAGE_TYPE;
 
     $indent = 0;  // begin with 0 indent
     $retval = ''; // initialize return value
@@ -227,9 +229,19 @@
         if( empty( $A['nice_date'] )) {
             $A['nice_date'] = time();
         }
+        if( !isset( $A['cid'] )) {
+            $A['cid'] = 0;
+        }
+        if( !isset( $A['photo'] )) {
+            if( isset( $_USER['photo'] )) {
+                $A['photo'] = $_USER['photo'];
+            } else {
+                $A['photo'] = '';
+            }
+        }
         $mode = 'flat';
     } else {
-        $A = DB_fetchArray($comments);
+        $A = DB_fetchArray( $comments );
     }
 
     if( empty( $A ) ) {
@@ -245,23 +257,24 @@
 
         // comment variables
         $template->set_var( 'indent', $indent );
-        $template->set_var( 'author', $A['username'] );
+        $template->set_var( 'author_name', $A['username'] );
         $template->set_var( 'author_id', $A['uid'] );
         $template->set_var( 'cid', $A['cid'] );
         $template->set_var( 'cssid', $row % 2 );
 
         if( $A['uid'] > 1 ) {
-            if( empty( $A['fullname'] )) {
-                $template->set_var( 'author_fullname', $A['username'] );
-                $alttext = $A['username'];
-            } else {
-                $template->set_var( 'author_fullname', $A['fullname'] );
-                $alttext = $A['fullname'];
-            }
+            $fullname = COM_getDisplayName( $A['uid'], $A['username'],
+                                            $A['fullname'] );
+            $template->set_var( 'author_fullname', $fullname );
+            $template->set_var( 'author', $fullname );
+            $alttext = $fullname;
 
             $photo = '';
             if( $_CONF['allow_user_photo'] ) {
-                $photo = USER_getPhoto( $A['uid'], $A['photo'] );
+                if (isset ($A['photo']) && empty ($A['photo'])) {
+                    $A['photo'] = '(none)';
+                }
+                $photo = USER_getPhoto( $A['uid'], $A['photo'], $A['email'] );
             }
             if( !empty( $photo )) {
                 $template->set_var( 'author_photo', $photo );
@@ -281,6 +294,7 @@
                     . $A['uid'] . '">' );
             $template->set_var( 'end_author_anchortag', '</a>' );
         } else {
+            $template->set_var( 'author', $A['username'] );
             $template->set_var( 'author_fullname', $A['username'] );
             $template->set_var( 'author_photo', '' );
             $template->set_var( 'camera_icon', '' );
@@ -304,13 +318,13 @@
 
         // for threaded mode, add a link to comment parent
         if( $mode == 'threaded' && $A['pid'] != 0 && $indent == 0 ) {
-            $result = DB_query( "SELECT title,pid from {$_TABLES['comments']} where cid = '{$A['pid']}'" );
+            $result = DB_query( "SELECT title,pid FROM {$_TABLES['comments']} WHERE cid = '{$A['pid']}'" );
             $P = DB_fetchArray( $result );
             if ($P['pid'] != 0) {
                 $plink = $_CONF['site_url'] . '/comment.php?mode=display&amp;sid='
                        . $A['sid'] . '&amp;title=' . urlencode( htmlspecialchars( $P['title'] ))
                        . '&amp;type=' . $type . '&amp;order=' . $order . '&amp;pid='
-                       . $P['pid'] . '&amp;format=threaded';;
+                       . $P['pid'] . '&amp;format=threaded';
             } else {
                 $plink = $_CONF['site_url'] . '/comment.php?mode=view&amp;sid='
                        . $A['sid'] . '&amp;title=' . urlencode( htmlspecialchars( $P['title'] ))
@@ -331,7 +345,8 @@
             $deloption = '| <a href="' . $_CONF['site_url']
                        . '/comment.php?mode=delete&amp;cid='
                        . $A['cid'] . '&amp;sid=' . $A['sid'] . '&amp;type='
-                       . $type . '">' . $LANG01[28] . '</a> ';
+                       . $type . '" onclick="return confirm(\'' . $MESSAGE[76]
+                       . '\');">' . $LANG01[28] . '</a> ';
             if( !empty( $A['ipaddress'] )) {
                 if( empty( $_CONF['ip_lookup'] )) {
                     $deloption .= '| ' . $A['ipaddress'] . ' ';
@@ -466,17 +481,18 @@
                 if( $cid ) {
                     $count = 1;
 
-                    $q = "SELECT c.*, u.username, u.fullname, u.photo, " 
-                         . "unix_timestamp(c.date) AS nice_date "
-                       . "FROM {$_TABLES['comments']} as c, {$_TABLES['users']} as u "
+                    $q = "SELECT c.*, u.username, u.fullname, u.photo, u.email, " 
+                       . "UNIX_TIMESTAMP(c.date) AS nice_date "
+                       . "FROM {$_TABLES['comments']} AS c, {$_TABLES['users']} AS u "
                        . "WHERE c.uid = u.uid AND c.cid = $pid AND type='{$type}'";
                 } else {
-                    $count = DB_count( $_TABLES['comments'], 'sid', $sid );
-            
-                    $q = "SELECT c.*, u.username, u.fullname, u.photo, " 
-                         . "unix_timestamp(c.date) AS nice_date "
-                       . "FROM {$_TABLES['comments']} as c, {$_TABLES['users']} as u "
-                       . "WHERE c.uid = u.uid AND c.sid = '$sid' AND type='{$type}'"
+                    $count = DB_count( $_TABLES['comments'],
+                                array( 'sid', 'type' ), array( $sid, $type ));
+
+                    $q = "SELECT c.*, u.username, u.fullname, u.photo, u.email, " 
+                       . "UNIX_TIMESTAMP(c.date) AS nice_date "
+                       . "FROM {$_TABLES['comments']} AS c, {$_TABLES['users']} AS u "
+                       . "WHERE c.uid = u.uid AND c.sid = '$sid' AND type='{$type}' "
                        . "ORDER BY date $order LIMIT $start, $limit";
                 }
                 break;
@@ -495,44 +511,45 @@
                 if( $cid ) {  // pid refers to commentid rather than parentid
                     // count the total number of applicable comments
                     $q2 = "SELECT COUNT(*) "
-                        . "FROM {$_TABLES['comments']} as c, {$_TABLES['comments']} as c2 "
+                        . "FROM {$_TABLES['comments']} AS c, {$_TABLES['comments']} AS c2 "
                         . "WHERE c.sid = '$sid' AND (c.lft >= c2.lft AND c.lft <= c2.rht) "
                         . "AND c2.cid = $pid AND c.type='{$type}'";
                     $result = DB_query( $q2 );
                     list( $count ) = DB_fetchArray( $result );
 
-                    $q = "SELECT c.*, u.username, u.fullname, u.photo, c2.indent as pindent, " 
-                         . "unix_timestamp(c.date) AS nice_date "
-                       . "FROM {$_TABLES['comments']} as c, {$_TABLES['comments']} as c2, "
-                         . "{$_TABLES['users']} as u "
+                    $q = "SELECT c.*, u.username, u.fullname, u.photo, u.email, c2.indent AS pindent, " 
+                       . "UNIX_TIMESTAMP(c.date) AS nice_date "
+                       . "FROM {$_TABLES['comments']} AS c, {$_TABLES['comments']} AS c2, "
+                       . "{$_TABLES['users']} AS u "
                        . "WHERE c.sid = '$sid' AND (c.lft >= c2.lft AND c.lft <= c2.rht) "
-                         . "AND c2.cid = $pid AND c.uid = u.uid AND c.type='{$type}'"
+                       . "AND c2.cid = $pid AND c.uid = u.uid AND c.type='{$type}' "
                        . "ORDER BY $cOrder LIMIT $start, $limit";
                 } else {    // pid refers to parentid rather than commentid
                     if( $pid == 0 ) {  // the simple, fast case
                         // count the total number of applicable comments
-                        $count = DB_count( $_TABLES['comments'], 'sid', $sid );
+                        $count = DB_count( $_TABLES['comments'],
+                                array( 'sid', 'type' ), array( $sid, $type ));
 
-                        $q = "SELECT c.*, u.username, u.fullname, u.photo, 0 as pindent, " 
-                             . "unix_timestamp(c.date) AS nice_date "
-                           . "FROM {$_TABLES['comments']} as c, {$_TABLES['users']} as u "
-                           . "WHERE c.sid = '$sid' AND c.uid = u.uid  AND type='{$type}'"
+                        $q = "SELECT c.*, u.username, u.fullname, u.photo, u.email, 0 AS pindent, " 
+                           . "UNIX_TIMESTAMP(c.date) AS nice_date "
+                           . "FROM {$_TABLES['comments']} AS c, {$_TABLES['users']} AS u "
+                           . "WHERE c.sid = '$sid' AND c.uid = u.uid  AND type='{$type}' "
                            . "ORDER BY $cOrder LIMIT $start, $limit";
                     } else {
                         // count the total number of applicable comments
                         $q2 = "SELECT COUNT(*) "
-                            . "FROM {$_TABLES['comments']} as c, {$_TABLES['comments']} as c2 "
+                            . "FROM {$_TABLES['comments']} AS c, {$_TABLES['comments']} AS c2 "
                             . "WHERE c.sid = '$sid' AND (c.lft > c2.lft AND c.lft < c2.rht) "
                             . "AND c2.cid = $pid AND c.type='{$type}'";
                         $result = DB_query($q2);
                         list($count) = DB_fetchArray($result);
 
-                        $q = "SELECT c.*, u.username, u.fullname, u.photo, c2.indent + 1 as pindent, " 
-                             . "unix_timestamp(c.date) AS nice_date "
-                           . "FROM {$_TABLES['comments']} as c, {$_TABLES['comments']} as c2, "
-                             . "{$_TABLES['users']} as u "
+                        $q = "SELECT c.*, u.username, u.fullname, u.photo, u.email, c2.indent + 1 AS pindent, " 
+                           . "UNIX_TIMESTAMP(c.date) AS nice_date "
+                           . "FROM {$_TABLES['comments']} AS c, {$_TABLES['comments']} AS c2, "
+                           . "{$_TABLES['users']} AS u "
                            . "WHERE c.sid = '$sid' AND (c.lft > c2.lft AND c.lft < c2.rht) "
-                             . "AND c2.cid = $pid AND c.uid = u.uid AND c.type='{$type}'"
+                           . "AND c2.cid = $pid AND c.uid = u.uid AND c.type='{$type}' "
                            . "ORDER BY $cOrder LIMIT $start, $limit";
                     }
                 }
@@ -632,7 +649,7 @@
 
             $fakepostmode = $postmode;
             if ($postmode == 'html') {
-                $comment = COM_checkWords (COM_checkHTML (addslashes (COM_stripslashes ($comment))));
+                $comment = COM_checkWords (COM_checkHTML  (COM_stripslashes ($comment)));
             } else {
                 $comment = htmlspecialchars (COM_checkWords (COM_stripslashes ($comment)));
                 $newcomment = COM_makeClickableLinks ($comment);
@@ -660,6 +677,7 @@
             }
             $_POST['comment'] = $newcomment;
 
+            // Preview mode:
             if ($mode == $LANG03[14] && !empty($title) && !empty($comment) ) {
                 $start = new Template( $_CONF['path_layout'] . 'comment' );
                 $start->set_file( array( 'comment' => 'startcomment.thtml' ));
@@ -685,7 +703,7 @@
                                                  "uid = $uid");
                 }
                 $thecomments = CMT_getComment ($A, 'flat', $type, 'ASC', false,
-                                               true );
+                                               true);
 
                 $start->set_var( 'comments', $thecomments );
                 $retval .= COM_startBlock ($LANG03[14])
@@ -748,6 +766,7 @@
             $comment_template->set_var('lang_preview', $LANG03[14]);
 
             if (($_CONF['skip_preview'] == 1) || ($mode == $LANG03[14])) {
+                PLG_templateSetVars ('comment', $comment_template);
                 $comment_template->set_var('save_option', '<input type="submit" name="mode" value="' . $LANG03[11] . '">');
             }
 
@@ -773,7 +792,8 @@
  * @return   int         0 for success, > 0 indicates error
  *
  */
-function CMT_saveComment ($title, $comment, $sid, $pid, $type, $postmode) {
+function CMT_saveComment ($title, $comment, $sid, $pid, $type, $postmode)
+{
     global $_CONF, $_TABLES, $_USER, $LANG03;
 
     $ret = 0;
@@ -809,8 +829,9 @@
         return $ret = 3;
     }
 
-    // Let plugins have a chance to check for SPAM
-    $result = PLG_checkforSpam($comment, $_CONF['spamx']);
+    // Let plugins have a chance to check for spam
+    $spamcheck = '<h1>' . $title . '</h1><p>' . $comment . '</p>';
+    $result = PLG_checkforSpam ($spamcheck, $_CONF['spamx']);
     // Now check the result and display message if spam action was taken
     if ($result > 0) {
         // update speed limit nonetheless
@@ -827,7 +848,7 @@
 
     // Clean 'em up a bit!
     if ($postmode == 'html') {
-        $comment = COM_checkWords (COM_checkHTML (addslashes (COM_stripslashes ($comment))));
+        $comment = COM_checkWords (COM_checkHTML (COM_stripslashes ($comment)));
     } else {
         $comment = htmlspecialchars (COM_checkWords (COM_stripslashes ($comment)));
         $newcomment = COM_makeClickableLinks ($comment);
@@ -863,7 +884,7 @@
         $comment = addslashes ($comment);
 
         // Insert the comment into the comment table
-        DB_query("LOCK TABLES {$_TABLES['comments']} WRITE");
+        DB_lockTable ($_TABLES['comments']);
         if ($pid > 0) {
             $result = DB_query("SELECT rht, indent FROM {$_TABLES['comments']} WHERE cid = $pid "
                              . "AND sid = '$sid'");
@@ -889,7 +910,7 @@
                     "'$sid',$uid,'$comment',now(),'$title',$pid,$rht+1,$rht+2,0,'$type','{$_SERVER['REMOTE_ADDR']}'");
         }
         $cid = DB_insertId();
-        DB_query('UNLOCK TABLES');
+        DB_unlockTable ($_TABLES['comments']);
 
         // Send notification of comment if no errors and notications enabled for comments
         if (($ret == 0) && isset ($_CONF['notification']) &&
@@ -930,7 +951,7 @@
         $comment = strip_tags ($comment);
     }
 
-    $author = DB_getItem ($_TABLES['users'], 'username', "uid = '$uid'");
+    $author = COM_getDisplayName ($uid);
     if (($uid <= 1) && !empty ($ipaddress)) {
         // add IP address for anonymous posters
         $author .= ' (' . $ipaddress . ')';
@@ -945,7 +966,7 @@
 
     if ($_CONF['emailstorieslength'] > 0) {
         if ($_CONF['emailstorieslength'] > 1) {
-            $comment = substr ($comment, 0, $_CONF['emailstorieslength'])
+            $comment = MBYTE_substr ($comment, 0, $_CONF['emailstorieslength'])
                      . '...';
         }
         $mailbody .= $comment . "\n\n";
@@ -976,8 +997,9 @@
  * @param   int         $cid    Comment ID
  * @return  string      0 indicates success, >0 identifies problem
  */
-function CMT_deleteComment ($cid, $sid, $type) {
-    global $_TABLES, $_CONF, $_USER;
+function CMT_deleteComment ($cid, $sid, $type)
+{
+    global $_CONF, $_TABLES, $_USER;
 
     $ret = 0;  // Assume good status unless reported otherwise
 
@@ -994,7 +1016,7 @@
     // A lock is needed here to prevent other additions and/or deletions
     // from happening at the same time. A transaction would work better, 
     // but aren't supported with MyISAM tables.
-    DB_query("LOCK TABLES {$_TABLES['comments']} WRITE");
+    DB_lockTable ($_TABLES['comments']);
     $result = DB_query("SELECT pid, lft, rht FROM {$_TABLES['comments']} "
                      . "WHERE cid = $cid AND sid = '$sid' AND type = '$type'");
     if ( DB_numRows($result) == 1 ) {
@@ -1013,7 +1035,7 @@
         return $ret = 2;
     }
 
-    DB_query('UNLOCK TABLES');
+    DB_unlockTable ($_TABLES['comments']);
     
     return $ret;
 }
@@ -1105,7 +1127,7 @@
     global $_CONF, $_TABLES, $_USER, $LANG03, $LANG08, $LANG_LOGIN;
 
     if (empty ($_USER['username'])) {
-        $retval = COM_siteHeader ('menu');
+        $retval = COM_siteHeader ('menu', $LANG_LOGIN[1]);
         $retval .= COM_startBlock ($LANG_LOGIN[1], '',
                            COM_getBlockTemplate ('_msg_block', 'header'));     
         $loginreq = new Template ($_CONF['path_layout'] . 'submit');            
@@ -1140,7 +1162,7 @@
         $comment = strip_tags ($comment);
     }
 
-    $author = DB_getItem ($_TABLES['users'], 'username', "uid = {$A['uid']}");
+    $author = COM_getDisplayName ($A['uid']);
     if (($A['uid'] <= 1) && !empty ($A['ipaddress'])) {
         // add IP address for anonymous posters
         $author .= ' (' . $A['ipaddress'] . ')';
@@ -1157,7 +1179,7 @@
 
     if ($_CONF['emailstorieslength'] > 0) {
         if ($_CONF['emailstorieslength'] > 1) {
-            $comment = substr ($comment, 0, $_CONF['emailstorieslength'])
+            $comment = MBYTE_substr ($comment, 0, $_CONF['emailstorieslength'])
                      . '...';
         }
         $mailbody .= $comment . "\n\n";
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/lib-custom.php 1.4.1.src/cpanel-glprivate/system/lib-custom.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/lib-custom.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/lib-custom.php	2006-12-16 09:04:06.000000000 -0600
@@ -2,22 +2,25 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Geeklog 1.3                                                               |
+// | Geeklog 1.4                                                               |
 // +---------------------------------------------------------------------------+
 // | lib-custom.php                                                            |
+// |                                                                           |
 // | Your very own custom Geeklog library.                                     |
 // |                                                                           |
 // | This is the file where you should put all of your custom code.  When      |
 // | possible you should not alter lib-common.php but, instead, put code here. |
 // | This will make upgrading to future versions of Geeklog easier for you     |
-// | because you will always be gauranteed that the Geeklog developers will    |
-// | NOT add code to this file. NOTE: we have already gone through the trouble |
-// | of making sure that we always include this file when lib-common.php is    |
-// | included some place so you will have access to lib-common.php.  It        |
-// | follows then that you should not include lib-common.php in this file      |
+// | because you will always be guaranteed that the Geeklog developers will    |
+// | NOT add required code to this file.                                       |
+// |                                                                           |
+// | NOTE: we have already gone through the trouble of making sure that we     |
+// | always include this file when lib-common.php is included some place so    |
+// | you will have access to lib-common.php.  It follows then that you should  |
+// | not include lib-common.php in this file.                                  |
 // |                                                                           |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs       - tony AT tonybibbs DOT com                     |
 // |          Blaine Lang      - blaine AT portalparts DOT com                 |
@@ -40,9 +43,9 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: lib-custom.php,v 1.18.2.1 2006/06/30 12:20:48 dhaun Exp $
+// $Id: lib-custom.php,v 1.36 2006/12/14 05:19:58 blaine Exp $
 
-if (strpos ($_SERVER['PHP_SELF'], 'lib-custom.php') !== false) {               
+if (strpos ($_SERVER['PHP_SELF'], 'lib-custom.php') !== false) {
     die ('This file can not be used on its own!');
 }
 
@@ -80,88 +83,46 @@
 }
 
 
-/***
-*
-* Get Bent()
-*
-* Php function to tell you how if your site is grossly insecure
-*
-**/
-function phpblock_getBent()
-{
-    global $_CONF, $_TABLES;
-
-    $secure = true;
-
-    $retval = '';
-
-    $secure_msg = 'Could not find any gross insecurities in your site.  Do not take this ';
-    $secure_msg .= 'as meaning your site is 100% secure, as no site ever is.  I can only ';
-    $secure_msg .= 'check things that should be blatantly obvious.';
-
-    $insecure_msg = '';
-
-    // we don't have the path to the admin directory, so try to figure it out
-    // from $_CONF['site_admin_url']
-    $adminurl = $_CONF['site_admin_url'];
-    if (strrpos ($adminurl, '/') == strlen ($adminurl)) {
-        $adminurl = substr ($adminurl, 0, -1);
-    }
-    $pos = strrpos ($adminurl, '/');
-    if ($pos === false) {
-        // only guessing ...
-        $installdir = $_CONF['path_html'] . 'admin/install';
-    } else {
-        $installdir = $_CONF['path_html'] . substr ($adminurl, $pos + 1)
-                    . '/install';
-    }
-
-    if (is_dir ($installdir)) {
-        $insecure_msg .= '<p>You should really remove the install directory <b>' . $installdir .'</b> once you have your site up and running without any errors.';
-        $insecure_msg .= ' Keeping it around would allow malicious users the ability to destroy your current install, take over your site, or retrieve sensitive information.';
-
-        $secure = false;
-    }
-
-    // check to see if any account still has 'password' as its password.
-    $count = DB_query("select count(*) as count from {$_TABLES['users']} where passwd='" . md5('password') . "'");
-    $A = DB_fetchArray($count);
-    if ( $A['count'] > 0 ) {
-        $secure = false;
-        $insecure_msg .= '<p>You still have not changed the default password from "password" on ' . $A['count'] . ' account(s). ';
-        $insecure_msg .= 'This will allow people to do serious harm to your site!';
-    }
-
-    if ($secure) {
-        $retval = $secure_msg;
-    } else {
-        $retval = $insecure_msg;
-    }
-    $retval = wordwrap($retval,20,' ',1);
-
-    return $retval;
-}
-
-
 /**
 * Include any code in this function that will be called by the internal CRON API
 * The interval between runs is determined by $_CONF['cron_schedule_interval']
 */
-function CUSTOM_runSheduledTask() {
+function CUSTOM_runScheduledTask() {
 
 }
 
 
 /**
-* Include any code in this function that will be called by Plugin API to set template variables
-* Initially this API is only called in the COM_siteHeader function to set header.thtml variables
-*/
-function CUSTOM_templatesetvars($templatename, &$template) {
+* Example of custom function that can be used to handle a login error.
+* Only active with custom registration mode enabled
+* Used if you have a custom front page and need to trap and reformat any error messages
+* This example redirects to the front page with a extra passed variable plus the message
+* Note: Message could be a string but in this case maps to $MESSAGE[81] as a default - edit in language file
+*/
+function CUSTOM_loginErrorHandler($msg='') {
+    global $_CONF,$MESSAGE;
+
+    if ($msg > 0) {
+        $msg = $msg;
+    } elseif ($msg == '') {
+        $msg = 81;
+    }
+    $retval = COM_refresh($_CONF['site_url'] .'/index.php?mode=loginfail&msg='.$msg);
+    echo $retval;
+    exit;
+}
 
+
+/**
+* Include any code in this function to add custom template variables.
+* Initially, this function is only called in the COM_siteHeader function to set
+* header.thtml variables
+*/
+function CUSTOM_templateSetVars ($templatename, &$template)
+{
     if ($templatename == 'header') {
-        if (isset($mycontent)) {
-            $template->set_var( 'myvar', $mycontent );
-        }
+        // define a {hello_world} variable which displays "Hello, world!"
+        $template->set_var ('hello_world', 'Hello, world!');
     }
 }
 
@@ -171,43 +132,67 @@
     Note1: Enable CustomRegistration Feature in config.php
     $_CONF['custom_registration'] = true;  // Set to true if you have custom code
 
-    Note2: This example requries a template file called memberdetail.thtml to be
+    Note2: This example requires a template file called memberdetail.thtml to be
     located under the theme_dir/custom directory.
     Sample is provided under /system with the distribution.
 
     Functions have been provided that are called from the Core Geeklog user and admin functions
     - This works with User Moderation as well
-    - Admin will see the new registration info when checking a members profile only
+    - Admin will see the new registration info when checking a member's profile only
     - All other users will see the standard User profile with the optional extended custom information
-    - Customization requires changes to a few of the core template files to add {customfields} variable
+    - Customization requires changes to a few of the core template files to add {customfields} variables
     - See notes below in the custom function about the template changes
 */
 
 /* Create any new records in additional tables you may have added  */
 /* Update any fields in the core GL tables for this user as needed */
 /* Called when user is first created */
-function custom_usercreate($uid)
+function CUSTOM_userCreate ($uid)
 {
     global $_CONF, $_TABLES;
 
-    // Ensure all data is prepared correctly before inserts, quotes may need to be escaped with addslashes()
-    DB_query("UPDATE {$_TABLES['users']} SET email='{$_POST['email']}',homepage='{$_POST['homepage']}', fullname='{$_POST['fullname']}' WHERE uid=$uid");
+    // Ensure all data is prepared correctly before inserts, quotes may need to
+    // be escaped with addslashes()
+    $email = '';
+    if (isset ($_POST['email'])) {
+        $email = COM_applyFilter ($_POST['email']);
+        $email = addslashes ($email);
+    }
+
+    $homepage = '';
+    if (isset ($_POST['homepage'])) {
+        $homepage = COM_applyFilter ($_POST['homepage']);
+        $homepage = addslashes ($homepage);
+    }
+
+    $fullname = '';
+    if (isset ($_POST['fullname'])) {
+        // COM_applyFilter would strip special characters, e.g. quotes, so
+        // we only strip HTML
+        $fullname = strip_tags ($_POST['fullname']);
+        $fullname = addslashes ($fullname);
+    }
+
+    // Note: In this case, we can trust the $uid variable to contain the new
+    // account's uid.
+    DB_query("UPDATE {$_TABLES['users']} SET email = '$email', homepage = '$homepage', fullname = '$fullname' WHERE uid = $uid");
 
     return true;
 }
 
 // Delete any records from custom tables you may have used
-function custom_userdelete($uid)
+function CUSTOM_userDelete($uid)
 {
     return true;
 }
 
-/* Called from users.php - when user is displaying a member profile  */
-/* This function can now return any extra fields that need to be shown */
-/* Output is then replaced in {customfields) -- This variable needs to be added to your templates */
-/* Template: path_layout/users/profile/profile.thtml */
-
-function custom_userdisplay($uid)
+/* Called from users.php - when user is displaying a member profile.
+ * This function can now return any extra fields that need to be shown.
+ * Output is then replaced in {customfields} -- This variable needs to be added
+ * to your templates
+ * Template: path_layout/users/profile/profile.thtml
+ */
+function CUSTOM_userDisplay($uid)
 {
     global $_CONF, $_TABLES;
 
@@ -232,12 +217,12 @@
 /* As noted: You need to add the {customfields} template variable. */
 /* For the edituser.thtml - maybe it would be added about the {group_edit} variable. */
 
-function custom_useredit($uid)
+function CUSTOM_userEdit($uid)
 {
     global $_CONF, $_TABLES;
 
     $var = "Value from custom table";
-    $cookietimeout = DB_getitem($_TABLES['users'], 'cookietimeout' ,$uid);
+    $cookietimeout = DB_getitem($_TABLES['users'], 'cookietimeout', $uid);
     $selection = '<select name="cooktime">' . LB;
     $selection .= COM_optionList ($_TABLES['cookiecodes'], 'cc_value,cc_descr', $cookietimeout, 0);
     $selection .= '</select>';
@@ -256,11 +241,19 @@
 
 /* Function called when saving the user profile. */
 /* This function can now update any extra fields  */
-function custom_usersave($uid)
+function CUSTOM_userSave($uid)
 {
     global $_CONF, $_TABLES;
 
-    DB_query("UPDATE {$_TABLES['users']} SET cookietimeout='{$_POST["cooktime"]}'");
+    $cooktime = 0;
+    if (isset ($_POST['cooktime'])) {
+        $cooktime = COM_applyFilter ($_POST['cooktime'], true);
+        if ($cooktime < 0) {
+            $cooktime = 0;
+        }
+
+        DB_query("UPDATE {$_TABLES['users']} SET cookietimeout = $cooktime WHERE uid = $uid");
+    }
 }
 
 
@@ -274,7 +267,7 @@
 * @return   string          HTML for the registration form
 *
 */
-function custom_userform ($msg = '')
+function CUSTOM_userForm ($msg = '')
 {
     global $_CONF, $_TABLES, $LANG04;
 
@@ -282,26 +275,51 @@
         $retval .= COM_startBlock($LANG04[21]) . $msg . COM_endBlock();
     }
 
-    $post_url = $_CONF['site_url']."/users.php";
-    $postmode = "create";
+    $post_url = $_CONF['site_url'] . '/users.php';
+    $postmode = 'create';
     $submitbutton = '<input type="submit" value="Register Now!">';
-    $message = "<blockquote style=\"padding-top:10px;\"><font color=black><b>Please complete the application below. Once you have completed the application, click the Submit button and the application will be processed immediately.</b></font></blockquote>";
+    $message = "<blockquote style=\"padding-top:10px;\"><b>Please complete the application below. Once you have completed the application, click the Register Now! button and the application will be processed immediately.</b></blockquote>";
 
     $user_templates = new Template ($_CONF['path_layout'] . 'custom');
     $user_templates->set_file('memberdetail', 'memberdetail.thtml');
+    $user_templates->set_var('site_url', $_CONF['site_url']);
     $user_templates->set_var('layout_url', $_CONF['layout_url']);
     $user_templates->set_var('post_url', $post_url);
     $user_templates->set_var('startblock', COM_startBlock("Custom Registration Example"));
     $user_templates->set_var('message', $message);
-    $user_templates->set_var('USERNAME', "Username");
+
+    $user_templates->set_var('USERNAME', $LANG04[2]);
     $user_templates->set_var('USERNAME_HELP', "Name to be used when accessing this site");
-    $user_templates->set_var('username', '');
-    $user_templates->set_var('EMAIL', "Email Address");
-    $user_templates->set_var('EMAIL_HELP', "");
-    $user_templates->set_var('email', '');
-    $user_templates->set_var('FULLNAME', "Full Name");
-    $user_templates->set_var('FULLNAME_HELP', "");
-    $user_templates->set_var('fullname', '');
+    $username = '';
+    if (isset ($_POST['username'])) {
+        $username = COM_applyFilter ($_POST['username']);
+    }
+    $user_templates->set_var('username', $username);
+
+    $user_templates->set_var('EMAIL', $LANG04[5]);
+    $user_templates->set_var('EMAIL_HELP', $LANG04[33]);
+    $email = '';
+    if (isset ($_POST['email'])) {
+        $email = COM_applyFilter ($_POST['email']);
+    }
+    $user_templates->set_var('email', $email);
+
+    $user_templates->set_var('EMAIL_CONF', $LANG04[124]);
+    $user_templates->set_var('EMAIL_CONF_HELP', $LANG04[126]);
+    $email_conf = '';
+    if (isset ($_POST['email_conf'])) {
+        $email_conf = COM_applyFilter ($_POST['email_conf']);
+    }
+    $user_templates->set_var('email_conf', $email_conf);
+
+    $user_templates->set_var('FULLNAME', $LANG04[3]);
+    $user_templates->set_var('FULLNAME_HELP', $LANG04[34]);
+    $fullname = '';
+    if (isset ($_POST['fullname'])) {
+        $fullname = strip_tags ($_POST['fullname']);
+    }
+    $user_templates->set_var('fullname', $fullname);
+
     $user_templates->set_var('user_id', $user);
     $user_templates->set_var('postmode', $postmode);
     $user_templates->set_var('submitbutton', $submitbutton);
@@ -323,7 +341,7 @@
 * @return   string              an error message or an empty string for "OK"
 *
 */
-function custom_usercheck ($username, $email)
+function CUSTOM_userCheck ($username, $email)
 {
     $msg = '';
 
@@ -339,31 +357,41 @@
 
 /**
 * Custom function to retrieve and return a formatted list of blocks
-* Can be used when calling COM_siteHeader or COM_SiteFooter
-
+* Can be used when calling COM_siteHeader or COM_siteFooter
+*
 * Example:
 * 1: Setup an array of blocks to display
 * 2: Call COM_siteHeader or COM_siteFooter
 *
-*  $myblocks = array ('site_menu','site_news','poll_block');
-
-* COM_siteHeader( array('COM_showCustomBlocks',$myblocks) ) ;
-* COM_siteFooter( true, array('COM_showCustomBlocks',$myblocks));
-
+*  $myblocks = array( 'site_menu', 'site_news', 'poll_block' );
+*
+* COM_siteHeader( array( 'CUSTOM_showBlocks', $myblocks )) ;
+* COM_siteFooter( true, array( 'CUSTOM_showBlocks', $myblocks ));
+*
 * @param   array   $showblocks    An array of block names to retrieve and format
 * @return  string                 Formated HTML containing site footer and optionally right blocks
 */
-function custom_showBlocks($showblocks)
+function CUSTOM_showBlocks($showblocks)
 {
-    global $_CONF, $_TABLES;
+    global $_CONF, $_USER, $_TABLES;
 
     $retval = '';
+    if( !isset( $_USER['noboxes'] )) {
+        if( !empty( $_USER['uid'] )) {
+            $noboxes = DB_getItem( $_TABLES['userindex'], 'noboxes', "uid = {$_USER['uid']}" );
+        } else {
+            $noboxes = 0;
+        }
+    } else {
+        $noboxes = $_USER['noboxes'];
+    }
+ 
     foreach($showblocks as $block) {
-        $sql = "SELECT bid, name,type,title,content,rdfurl,phpblockfn,help FROM {$_TABLES['blocks']} WHERE name='$block'";
+        $sql = "SELECT bid, name,type,title,content,rdfurl,phpblockfn,help,allow_autotags FROM {$_TABLES['blocks']} WHERE name='$block'";
         $result = DB_query($sql);
         if (DB_numRows($result) == 1) {
             $A = DB_fetchArray($result);
-            $retval .= COM_formatBlock($A);
+            $retval .= COM_formatBlock($A,$noboxes);
         }
     }
 
@@ -436,7 +464,7 @@
     // logged-in users
     if (!empty ($_USER['uid']) && ($_USER['uid'] > 1)) {
         $myentries[] = array ('url'   => $_CONF['site_url']
-                                         . '/calendar.php?mode=personal',
+                                         . '/calendar/index.php?mode=personal',
                               'label' => 'My Calendar');
     }
 
@@ -444,4 +472,52 @@
 }
 */
 
+/**
+  * This is an example of an error handler override. This will be used in
+  * place of COM_handleError if the user is not in the Root group. Really,
+  * this should only be used to display some nice pretty "site error" html.
+  * Though you could try and notify the sysadmin, and log the error, as this
+  * example will show. The function is commented out for saftey.
+  */
+/*
+function CUSTOM_handleError($errno, $errstr, $errfile, $errline, $errcontext)
+{
+    global $_CONF;
+    if( is_array($_CONF) && function_exists('COM_mail'))
+    {
+        COM_mail($_CONF['site_mail'], $_CONF['site_name'].' Error Handler',
+                "An error has occurred: $errno $errstr @ $errline of $errfile");
+        COM_errorLog("Error Handler: $errno $errstr @ $errline of $errfile");
+    }
+    echo("
+        <html>
+            <head>
+                <title>{$_CONF['site_name']} - An error occurred.</title>
+                <style type=\"text/css\">
+                    body,html {height: 100%; width: 100%;}
+                    body{ border: 0px; padding: 0px;
+                        background-color: white;
+                        color: black;
+                        }
+                   div { margin-left: auto; margin-right: auto;
+                            margin-top: auto; margin-bottom: auto;
+                            border: solid thin blue; width: 400px;
+                            padding: 5px; text-align: center;
+                            }
+                   h1 { color: blue;}
+               </style>
+            </head>
+            <body>
+                <div>
+                    <h1>An Error Has Occurred.</h1>
+                    <p>Unfortunatley, the action you performed has caused an
+                    error. The site administrator has been informed. If you
+                    try again later, the issue may have been fixed.</p>
+                </div>
+            </body>
+        </html>
+        ");
+    exit;
+}
+*/
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/lib-database.php 1.4.1.src/cpanel-glprivate/system/lib-database.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/lib-database.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/lib-database.php	2006-11-12 05:58:00.000000000 -0600
@@ -2,13 +2,13 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Geeklog 1.3                                                               |
+// | Geeklog 1.4                                                               |
 // +---------------------------------------------------------------------------+
 // | lib-database.php                                                          |
 // |                                                                           |
 // | Geeklog database library.                                                 |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs, tony AT tonybibbs DOT com                            |
 // +---------------------------------------------------------------------------+
@@ -29,7 +29,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: lib-database.php,v 1.39.2.1 2006/06/30 12:20:48 dhaun Exp $
+// $Id: lib-database.php,v 1.43 2006/11/12 11:58:00 dhaun Exp $
 
 /**
 * This is the high-level database layer for Geeklog (for the low-level stuff,
@@ -106,7 +106,7 @@
 // | DO NOT TOUCH ANYTHING BELOW HERE                                          |
 // +---------------------------------------------------------------------------+
 
-if (strpos ($_SERVER['PHP_SELF'], 'lib-database.php') !== false) {             
+if (strpos ($_SERVER['PHP_SELF'], 'lib-database.php') !== false) {
     die ('This file can not be used on its own!');
 }
 
@@ -117,7 +117,8 @@
 require_once($_CONF['path_system'] . 'databases/'. $_DB_dbms . '.class.php');
 
 // Instantiate the database object
-$_DB = new database($_DB_host,$_DB_name,$_DB_user,$_DB_pass,'COM_errorLog');
+$_DB = new database($_DB_host, $_DB_name, $_DB_user, $_DB_pass, 'COM_errorLog',
+                    $_CONF['default_charset']);
 
 // +---------------------------------------------------------------------------+
 // | These are the library functions.  In all cases they turn around and make  |
@@ -164,16 +165,29 @@
 *
 * This executes the passed SQL and returns the recordset or errors out
 *
-* @param        string  $sql                SQL to be executed
-* @param        int     $ignore_errors      If 1 this function supresses any error messages
-* @return       object  Returns results from query
-*
-*/
-function DB_query($sql, $ignore_errors=0)
-{
-    global $_DB;
-    
-    return $_DB->dbQuery($sql,$ignore_errors);
+* @param    mixed   $sql            String or array of strings of SQL to be executed
+* @param    int     $ignore_errors  If 1 this function supresses any error messages
+* @return   object  Returns results from query
+*
+*/
+function DB_query ($sql, $ignore_errors = 0)
+{
+    global $_DB, $_DB_dbms;
+
+    if (is_array ($sql)) {
+        if (isset ($sql[$_DB_dbms])) {
+            $sql = $sql[$_DB_dbms];
+        } else {
+            $errmsg = "No SQL request given for DB '$_DB_dbms', only got these:";
+            foreach ($sql as $db => $request) {
+                $errmsg .= LB . $db . ': ' . $request;
+            }
+            COM_errorLog ($errmsg);
+            die ('An SQL error has occurred. Please see error.log for details.');
+        }
+    }
+
+    return $_DB->dbQuery ($sql, $ignore_errors);
 }
 
 /**
@@ -475,4 +489,38 @@
     return $_DB->dbDoDatabaseUpgrade($current_gl_version);
 }
 
+/**
+* Lock a table
+*
+* Locks a table for write operations
+*
+* @param    string      $table      Table to lock
+* @return   void
+* @see DB_unlockTable
+*
+*/
+function DB_lockTable($table)
+{
+    global $_DB;
+
+    $_DB->dbLockTable($table);
+}
+
+/**
+* Unlock a table
+*
+* Unlocks a table after DB_lockTable
+*
+* @param    string      $table      Table to unlock
+* @return   void
+* @see DB_lockTable
+*
+*/
+function DB_unlockTable($table)
+{
+    global $_DB;
+
+    $_DB->dbUnlockTable($table);
+}
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/lib-mbyte.php 1.4.1.src/cpanel-glprivate/system/lib-mbyte.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/lib-mbyte.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/cpanel-glprivate/system/lib-mbyte.php	2006-10-22 03:38:48.000000000 -0500
@@ -0,0 +1,271 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Geeklog 1.4                                                               |
+// +---------------------------------------------------------------------------+
+// | lib-mbyte.php                                                             |
+// |                                                                           |
+// | function collection to handle mutli-byte related issues                   |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2000-2006 by the following authors:                         |
+// |                                                                           |
+// | Authors: Oliver Spiesshofer - oliver AT spiesshofer DOT com               |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is free software; you can redistribute it and/or             |
+// | modify it under the terms of the GNU General Public License               |
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
+// | GNU General Public License for more details.                              |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+// $Id: lib-mbyte.php,v 1.18 2006/10/22 08:38:48 dhaun Exp $
+
+if (strpos ($_SERVER['PHP_SELF'], 'lib-mbyte.php') !== false) {
+    die ('This file can not be used on its own!');
+}
+
+// This function is supposed to display only language files in selection drop-
+// downs that are utf-8
+function MBYTE_languageList ($charset = 'utf-8')
+{
+    global $_CONF;
+
+    if ($charset != 'utf-8') {
+        $charset = '';
+    }
+
+    $language = array ();
+    $fd = opendir ($_CONF['path_language']);
+
+    while (($file = @readdir ($fd)) !== false) {
+        if ((substr ($file, 0, 1) != '.') && preg_match ('/\.php$/i', $file)
+                && is_file ($_CONF['path_language'] . $file)
+                && ((empty ($charset) && (strstr ($file, '_utf-8') === false))
+                    || (($charset == 'utf-8') && strstr ($file, '_utf-8')))) {
+            clearstatcache ();
+            $file = str_replace ('.php', '', $file);
+            $langfile = str_replace ('_utf-8', '', $file);
+            $uscore = strpos ($langfile, '_');
+            if ($uscore === false) {
+                $lngname = ucfirst ($langfile);
+            } else {
+                $lngname = ucfirst (substr ($langfile, 0, $uscore));
+                $lngadd = substr ($langfile, $uscore + 1);
+                $lngadd = str_replace ('utf-8', '', $lngadd);
+                $lngadd = str_replace ('_', ', ', $lngadd);
+                $word = explode (' ', $lngadd);
+                $lngadd = '';
+                foreach ($word as $w) {
+                    if (preg_match ('/[0-9]+/', $w)) {
+                        $lngadd .= strtoupper ($w) . ' ';
+                    } else {
+                        $lngadd .= ucfirst ($w) . ' ';
+                    }
+                }
+                $lngname .= ' (' . trim ($lngadd) . ')';
+            }
+            $language[$file] = $lngname;
+        }
+    }
+    asort ($language);
+
+    return $language;
+}
+
+// replacement functions for UTF-8 functions
+function MBYTE_checkEnabled() {
+    static $mb_enabled;
+    if (function_exists( 'mb_substr' )) {
+        $mb_enabled = mb_internal_encoding("UTF-8");
+    } else {
+        $mb_enabled = false;
+    }
+    return $mb_enabled;
+}
+
+
+function MBYTE_strlen($str) {
+    static $mb_enabled;
+    if (!isset($mb_enabled)) {
+        $mb_enabled = MBYTE_checkEnabled();
+    }
+    if ($mb_enabled) {
+        $result = mb_strlen($str);
+    } else {
+        $result = strlen($str);
+    }
+    return $result;
+}
+
+function MBYTE_substr($str, $start, $length = NULL) {
+    static $mb_enabled;
+    if (!isset($mb_enabled)) {
+        $mb_enabled = MBYTE_checkEnabled();
+    }
+    if ($mb_enabled) {
+        if( $length === NULL )
+        {
+            $result = mb_substr($str, $start);
+        } else {
+            $result = mb_substr($str, $start, $length);
+        }
+    } else {
+        if( $length === NULL )
+        {
+            $result = substr($str, $start);
+        } else {
+            $result = substr($str, $start, $length);
+        }
+    }
+    return $result;
+}
+
+function MBYTE_strpos($hay, $needle, $offset = NULL) {
+    static $mb_enabled;
+    if (!isset($mb_enabled)) {
+        $mb_enabled = MBYTE_checkEnabled();
+    }
+    if ($mb_enabled) {
+        $result = mb_strpos($hay, $needle, $offset);
+    } else {
+        $result = strpos($hay, $needle, $offset);
+    }
+    return $result;
+}
+
+function MBYTE_strtolower($str) {
+    static $mb_enabled;
+    if (!isset($mb_enabled)) {
+        $mb_enabled = MBYTE_checkEnabled();
+    }
+    if ($mb_enabled) {
+        $result = mb_strtolower($str);
+    } else {
+        $result = strtolower($str);
+    }
+    return $result;
+}
+
+function MBYTE_eregi($pattern, $str, $regs = NULL) {
+    static $mb_enabled;
+    if (!isset($mb_enabled)) {
+        $mb_enabled = MBYTE_checkEnabled();
+    }
+    if ($mb_enabled) {
+        $result = mb_eregi($pattern, $str, $regs);
+    } else {
+        $result = eregi($pattern, $str, $regs);
+    }
+    return $result;
+}
+
+function MBYTE_eregi_replace($pattern, $replace, $str) {
+    static $mb_enabled;
+    if (!isset($mb_enabled)) {
+        $mb_enabled = MBYTE_checkEnabled();
+    }
+    if ($mb_enabled) {
+        $result = mb_eregi_replace($pattern, $replace, $str);
+    } else {
+        $result = eregi_replace($pattern, $replace, $str);
+    }
+    return $result;
+}
+
+/** those are currently not needed in GL, left here if needed later
+function MBYTE_substr_count($hay, $needle) {
+    static $mb_enabled;
+    if (!isset($mb_enabled)) {
+        $mb_enabled = MBYTE_checkEnabled();
+    }
+    if ($mb_enabled) {
+        $result = mb_substr_count($hay, $needle, 'utf-8');
+    } else {
+        $result = substr_count($hay, $needle);
+    }
+    return $result;
+}
+
+function MBYTE_strtoupper($str) {
+    static $mb_enabled;
+    if (!isset($mb_enabled)) {
+        $mb_enabled = MBYTE_checkEnabled();
+    }
+    if ($mb_enabled) {
+        $result = mb_strtoupper($str, 'utf-8');
+    } else {
+        $result = strtoupper($str);
+    }
+    return $result;
+}
+
+function MBYTE_strrpos($hay, $needle, $offset='') {
+    static $mb_enabled;
+    if (!isset($mb_enabled)) {
+        $mb_enabled = MBYTE_checkEnabled();
+    }
+    if ($mb_enabled) {
+        $result = mb_strrpos($hay, $needle, $offset, 'utf-8');
+    } else {
+        $result = strrpos($hay, $needle, $offset);
+    }
+    return $result;
+}
+
+function MBYTE_mail($to, $subj, $mess, $header = NULL, $param = NULL) {
+    static $mb_enabled;
+    if (!isset($mb_enabled)) {
+        $mb_enabled = MBYTE_checkEnabled();
+    }
+    if ($mb_enabled) {
+          if (mb_language('uni')) {
+            $result = mb_send_mail($to, $subj, $mess, $header, $param);
+        } else {
+            $result = false;
+        }
+    } else {
+        $result = mail($to, $subj, $mess, $header, $param);
+    }
+    return $result;
+}
+
+*/
+
+
+/**
+mb_decode_mimeheader -- Decode string in MIME header field
+mb_decode_numericentity --  Decode HTML numeric string reference to character
+mb_encode_mimeheader -- Encode string for MIME header
+mb_encode_numericentity --  Encode character to HTML numeric string reference
+mb_ereg_match --  Regular expression match for multibyte string
+mb_ereg_search_getpos --  Returns start point for next regular expression match
+mb_ereg_search_getregs --  Retrieve the result from the last multibyte regular expression match
+mb_ereg_search_init --  Setup string and regular expression for multibyte regular expression match
+mb_ereg_search_pos --  Return position and length of matched part of multibyte regular expression for predefined multibyte string
+mb_ereg_search_regs --  Returns the matched part of multibyte regular expression
+mb_ereg_search_setpos --  Set start point of next regular expression match
+mb_ereg_search --  Multibyte regular expression match for predefined multibyte string
+mb_parse_str --  Parse GET/POST/COOKIE data and set global variable
+mb_split -- Split multibyte string using regular expression
+mb_strcut -- Get part of string
+mb_strimwidth -- Get truncated string with specified width
+mb_strrpos --  Find position of last occurrence of a string in a string
+mb_strwidth -- Return width of string
+mb_substitute_character -- Set/Get substitution character
+mb_substr_count -- Count the number of substring occurrences
+*/
+
+
+
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/lib-pingback.php 1.4.1.src/cpanel-glprivate/system/lib-pingback.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/lib-pingback.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/lib-pingback.php	2006-06-15 13:26:45.000000000 -0500
@@ -29,7 +29,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: lib-pingback.php,v 1.6.2.1 2006/06/30 12:20:48 dhaun Exp $
+// $Id: lib-pingback.php,v 1.7 2006/06/15 18:26:45 dhaun Exp $
 
 if (strpos ($_SERVER['PHP_SELF'], 'lib-pingback.php') !== false) {
     die ('This file can not be used on its own!');
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/lib-plugins.php 1.4.1.src/cpanel-glprivate/system/lib-plugins.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/lib-plugins.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/lib-plugins.php	2006-12-09 13:19:38.000000000 -0600
@@ -31,7 +31,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: lib-plugins.php,v 1.90.2.1 2006/06/30 12:20:48 dhaun Exp $
+// $Id: lib-plugins.php,v 1.113 2006/12/09 19:18:08 dhaun Exp $
 
 /**
 * This is the plugin library for Geeklog.  This is the API that plugins can
@@ -91,6 +91,10 @@
 function PLG_callFunctionForOnePlugin($function, $args='')
 {
     if (function_exists($function)) {
+        if (empty ($args)) {
+            $args = array ();
+        }
+
         // great, function exists, run it
         switch (count($args)) {
         case 0:
@@ -139,7 +143,7 @@
 }
 
 /**
-* Upgrades a plugin. Tells a plugin to upgrade itself. NOTE: not currently used
+* Upgrades a plugin. Tells a plugin to upgrade itself.
 *
 * @param        string      $type       Plugin name
 * @return       boolean     Returns true on success otherwise false
@@ -170,19 +174,130 @@
 * @return       boolean     Returns true on success otherwise false
 *
 */
-function PLG_uninstall($type)
+function PLG_uninstall ($type)
 {
-    if (empty($type)) {
+    global $_PLUGINS, $_TABLES;
+
+    if (empty ($type)) {
         return false;
     }
 
-    $retval = PLG_callFunctionForOnePlugin('plugin_uninstall_' . $type);
+    $retval = PLG_callFunctionForOnePlugin ('plugin_uninstall_' . $type);
 
-    if (empty($retval)) {
-        return false;
-    } else {
-        return $retval;
+    if ($retval === true) {
+        $plg = array_search ($type, $_PLUGINS);
+        if ($plg !== false) {
+            unset ($_PLUGINS[$plg]);
+        }
+
+        return true;
+    /**
+    } else if ($PLG_$type['auto_uninstall'] == true)
+
+        // removing tables
+        $i = count($PLG_$type['tables']);
+        for ($i=0; $i < count; $i++) {
+            COM_errorLog ('Dropping table' . $_PLG_$type['tables'][$i], 1);
+            DB_query ("DROP TABLE {$_TABLES[$_PLG_$type['tables'][$i]]}");
+            COM_errorLog ('...success', 1);
+        }
+
+        // removing groups
+        $i = count($PLG_$type['groups']);
+        for ($i=0; $i < count; $i++) {
+            $grp_id = DB_getItem ($_TABLES['groups'], 'grp_id',
+                                  "grp_name = '{$_PLG_$type['groups'][$i]}'");
+            if (!empty ($grp_id)) {
+                COM_errorLog ('Attempting to remove the {$_PLG_$type['groups'][$i]} group', 1);
+                DB_query ("DELETE FROM {$_TABLES['groups']} WHERE grp_id = $grp_id");
+                COM_errorLog ('...success', 1);
+                COM_errorLog ('Attempting to {$_PLG_$type['groups'][$i]} group from all groups.', 1);
+                DB_query("DELETE FROM {$_TABLES['group_assignments']} WHERE ug_main_grp_id = $grp_id");
+                COM_errorLog ('...success', 1);
+            }
+        }
+
+        // removing features
+        $i = count($PLG_$type['features']);
+        for ($i=0; $i < count; $i++) {
+            $access_id = DB_getItem ($_TABLES['features'], 'ft_id',
+                                    "ft_name = '{$_PLG_$type['features'][$i]}'");
+            if (!empty ($acess_id)) {
+                COM_errorLog ('Attempting to remove {$_PLG_$type['features'][$i]} rights from all groups' ,1);
+                DB_query ("DELETE FROM {$_TABLES['access']} WHERE acc_ft_id = $edit_id");
+                COM_errorLog ('...success', 1);
+                COM_errorLog ('Attempting to remove the {$_PLG_$type['features'][$i]} feature', 1);
+                DB_query ("DELETE FROM {$_TABLES['features']} WHERE ft_id = $edit_id");
+                COM_errorLog ('...success', 1);
+            }
+        }
+
+        #uninstall feeds
+        $sql = "SELECT filename FROM {$_TABLES['syndication']} WHERE type = '$type';";
+        $result = DB_query( $sql );
+        $nrows = DB_numRows( $result );
+        if ( $nrows > 0 ) {
+            COM_errorLog ('removing feed files', 1);
+            COM_errorLog ($nrows. ' files stored in table.', 1);
+            for ( $i = 0; $i < $nrows; $i++ ) {
+                $fcount = $i + 1;
+                $A = DB_fetchArray( $result );
+                $fullpath = SYND_getFeedPath( $A[0] );
+                if ( file_exists( $fullpath ) ) {
+                    unlink ($fullpath);
+                    COM_errorLog ("removed file $fcount of $nrows: $fullpath", 1);
+                } else {
+                    COM_errorLog ("cannot remove file $fcount of $nrows, it does not exist! ($fullpath)", 1);
+                }
+            }
+            COM_errorLog ('...success', 1);
+            // Remove Links Feeds from syndiaction table
+            COM_errorLog ('removing links feeds from table', 1);
+            DB_query ("DELETE FROM {$_TABLES['syndication']} WHERE `type` = '$type'");
+            COM_errorLog ('...success', 1);
+        }
+
+        // uninstall php-blocks
+        $i = count($PLG_$type['php_blocks']);
+        for ($i=0; $i < count; $i++) {
+            DB_delete ($_TABLES['blocks'], array ('type',     'phpblockfn'),
+                                           array ('phpblock', 'phpblock_{$_PLG_$type['php_blocks'][$i]}'));
+        }
+
+        // uninstall the plugin
+        COM_errorLog ('Attempting to unregister the $type plugin from Geeklog', 1);
+        DB_query ("DELETE FROM {$_TABLES['plugins']} WHERE pi_name = '$type'");
+        COM_errorLog ('...success',1);
+
+        COM_errorLog ('Finished uninstalling the $type plugin.', 1);
+    **/
     }
+
+    return false;
+}
+
+/**
+* Inform plugin that it is either being enabled or disabled.
+*
+* @param    string      $type       Plugin name
+* @param    boolean     $enable     true if enabling, false if disabling
+* @return   boolean     Returns true on success otherwise false
+*
+*/
+function PLG_enableStateChange ($type, $enable)
+{
+   global $_CONF, $_TABLES, $_DB_table_prefix;
+
+    $args[1] = $enable;
+
+    // IF we are enabling the plugin
+    // THEN we must include its functions.inc so we have access to the function
+    if ($enable) {
+        require_once ($_CONF['path'] . 'plugins/' . $type . '/functions.inc');
+    }
+
+    return PLG_callFunctionForOnePlugin ('plugin_enablestatechange_' . $type,
+                                         $args);
 }
 
 /**
@@ -351,6 +466,37 @@
     return false;
 }
 
+/**
+* Allows plugins a chance to handle an item before GL does. Modeled
+* after the PLG_commentPreSave() function.
+*
+* This is a first-come-first-serve affair so if a plugin returns an error, other
+* plugins wishing to handle comment preprocessing won't get called
+*
+* @author Mark Evans <mevans@ecsnet.com>
+* @access public
+* @param string $type Type of item, i.e.; registration, contact ...
+* @param string $content item specific content
+* @return string empty is no error, error message if error was encountered
+*
+*/
+function PLG_itemPreSave($type, $content)
+{
+    global $_PLUGINS;
+
+    foreach ($_PLUGINS as $pi_name) {
+        $function = 'plugin_itemPreSave_' . $pi_name;
+        if (function_exists ($function)) {
+            $msgError = $function ($type, $content);
+            if (!empty ($msgError)) {
+                // Plugin doesn't want to save the item
+                return $msgError;
+            }
+        }
+    }
+
+    return '';
+}
 
 /**
 * The way this function works is very specific to how Geeklog shows its
@@ -447,7 +593,7 @@
             }
         } // no else because this is not a required API function
     }
-
+    asort($types);
     return $types;
 }
 
@@ -548,6 +694,11 @@
 * This supports a plugin having either a single menuitem or multiple menuitems.
 * The plugin has to provide an array for the menuitem of the format:
 * array (menuitem_title, item_url, submission_count)
+* or an array of arrays in case there are several entries:
+* array (
+*   array (menuitem1_title, item1_url, submission1_count),
+*   array (menuitem2_title, item2_url, submission2_count),
+*   array (menuitem3_title, item3_url, submission3_count))
 * Plugin function can return a single record array or multiple records
 *
 *
@@ -573,7 +724,7 @@
         $function = $function_name . $pi_name;
         if (function_exists ($function)) {
             $plg_array = $function();
-            if ($plg_array !== false) {
+            if (($plg_array !== false) && (count ($plg_array) > 0)) {
                 // Check if plugin is returning a single record array or multiple records
                 $entries = count ($plg_array[0]);
                 if ($entries == 0) {
@@ -589,8 +740,12 @@
                     $plugin = new Plugin();
                     $good_array = true;
                     for ($n = 0; $n < count($var_names); $n++) {
-                        $plugin -> $var_names[$n] = $val[$n];
-                        if (empty ($plugin -> $var_names[$n]) && $required_names[$n]) {
+                        if (isset ($val[$n])) {
+                            $plugin->$var_names[$n] = $val[$n];
+                        } else {
+                            $plugin->$var_names[$n] = '';
+                        }
+                        if (empty ($plugin->$var_names[$n]) && $required_names[$n]) {
                             $good_array = false;
                         }
                     }
@@ -611,11 +766,14 @@
 * command and control center.
 *
 * This supports that a plugin can have several lines in the CC menu.
-* The plugin has to provide simply a set of 3 x n sets of variables in order to
+* The plugin has to provide simply a set arrays with 3 variables in order to
 * get n lines in the menu such as
-* array(    "first line", "url1", "1",
-*            "second line", "url2", "44",
+* array(
+*   array("first line", "url1", "1"),
+*   array("second line", "url2", "44"),
 *            etc, etc)
+* If there is only one item, a single array is enough:
+* array("first line", "url1", "1")
 *
 * @return   array   Returns Command and Control options for moderation.php
 *
@@ -637,11 +795,14 @@
 *
 * NOTE: the plugin is responsible for its own security.
 * This supports that a plugin can have several lines in the Admin menu.
-* The plugin has to provide simply a set of 3 x n sets of variables in order to
+* The plugin has to provide simply a set arrays with 3 variables in order to
 * get n lines in the menu such as
-* array(    "first line", "url1", "1",
-*            "second line", "url2", "44",
+* array(
+*   array("first line", "url1", "1"),
+*   array("second line", "url2", "44"),,
 *            etc, etc)
+* If there is only one item, a single array is enough:
+* array("first line", "url1", "1")
 *
 * @return   array   Returns options to put in admin menu
 *
@@ -661,11 +822,15 @@
 * user block on every page
 *
 * This supports that a plugin can have several lines in the User menu.
-* The plugin has to provide simply a set of 3 x n sets of variables in order to
+* The plugin has to provide simply a set of arrays with 3 variables in order to
 * get n lines in the menu such as
-* array(    "first line", "url1", "1",
-*            "second line", "url2", "44",
+* array(
+*   array("first line", "url1", "1"),
+*   array("second line", "url2", "44"),
 *            etc, etc)
+* If there is only one item, a single array is enough:
+* array("first line", "url1", "1")
+*
 * NOTE: the plugin is responsible for its own security.
 *
 * @return   array   Returns options to add to user menu
@@ -1046,7 +1211,7 @@
 * This function can be called to check if an plugin wants to set a template
 * variable
 * Example in COM_siteHeader, the API call is now added
-* A plugin can now check for templatename == 'header' and then set additional 
+* A plugin can now check for templatename == 'header' and then set additional
 * template variables
 *
 * @param   string   $templatename     Name of calling template - used as test in plugin function
@@ -1057,7 +1222,7 @@
 {
     global $_PLUGINS;
 
-    if (function_exists ('CUSTOM_templatesetvars')) {
+    if (function_exists ('CUSTOM_templateSetVars')) {
         CUSTOM_templatesetvars($templatename, $template);
     }
 
@@ -1111,9 +1276,7 @@
 
     // Determine which Core Modules and Plugins support AutoLinks
     //                        'tag'   => 'module'
-    $autolinkModules = array ('story' => 'geeklog',
-                              'event' => 'geeklog'
-                             );
+    $autolinkModules = array ('story' => 'geeklog');
 
     foreach ($_PLUGINS as $pi_name) {
         $function = 'plugin_autotags_' . $pi_name;
@@ -1159,30 +1322,30 @@
         $autotag_prefix = '['. $moduletag . ':';
         $offset = 0;
         $prev_offset = 0;
-        $contentlen = strlen ($content);
+        $contentlen = MBYTE_strlen ($content);
         while ($offset < $contentlen) {
-            $start_pos = strpos (strtolower ($content), $autotag_prefix,
+            $start_pos = MBYTE_strpos (MBYTE_strtolower ($content), $autotag_prefix,
                                  $offset);
             if ($start_pos === false) {
                 break;
             } else {
-                $end_pos = strpos (strtolower ($content), ']', $start_pos);
-                $next_tag = strpos (strtolower ($content), '[', $start_pos + 1);
+                $end_pos = MBYTE_strpos (MBYTE_strtolower ($content), ']', $start_pos);
+                $next_tag = MBYTE_strpos (MBYTE_strtolower ($content), '[', $start_pos + 1);
                 if (($end_pos > $start_pos) AND
                         (($next_tag === false) OR ($end_pos < $next_tag))) {
                     $taglength = $end_pos - $start_pos + 1;
-                    $tag = substr ($content, $start_pos, $taglength);
+                    $tag = MBYTE_substr ($content, $start_pos, $taglength);
                     $parms = explode (' ', $tag);
 
                     // Extra test to see if autotag was entered with a space
                     // after the module name
-                    if (substr ($parms[0], -1) == ':') {
-                        $startpos = strlen ($parms[0]) + strlen ($parms[1]) + 2;
-                        $label = str_replace (']', '', substr ($tag, $startpos));
+                    if (MBYTE_substr ($parms[0], -1) == ':') {
+                        $startpos = MBYTE_strlen ($parms[0]) + MBYTE_strlen ($parms[1]) + 2;
+                        $label = str_replace (']', '', MBYTE_substr ($tag, $startpos));
                         $tagid = $parms[1];
                     } else {
                         $label = str_replace (']', '',
-                                 substr ($tag, strlen ($parms[0]) + 1));
+                                 MBYTE_substr ($tag, MBYTE_strlen ($parms[0]) + 1));
                         $parms = explode (':', $parms[0]);
                         if (count ($parms) > 2) {
                             // whoops, there was a ':' in the tag id ...
@@ -1228,14 +1391,8 @@
                     if (empty ($linktext)) {
                         $linktext = stripslashes (DB_getItem ($_TABLES['stories'], 'title', "sid = '{$autotag['parm1']}'"));
                     }
-                } else if ($autotag['tag'] == 'event') {
-                    $autotag['parm1'] = COM_applyFilter ($autotag['parm1']);
-                    $url = $_CONF['site_url'] . '/calendar_event.php?eid='
-                         . $autotag['parm1'];
-                    if (empty ($linktext)) {
-                        $linktext = stripslashes (DB_getItem ($_TABLES['events'], 'title', "eid = '{$autotag['parm1']}'"));
-                    }
                 }
+
                 if (!empty ($url)) {
                     $filelink = '<a href="' . $url . '">' . $linktext . '</a>';
                     $content = str_replace ($autotag['tagstr'], $filelink,
@@ -1341,12 +1498,14 @@
   * available elements for an RSS 2.0 feed for articles. For some reason. This
   * function allows that.
   *
-  * @param  string  contentType     Type of feed content, article, event or a plugin specific type
+  * @param  string  contentType     Type of feed content, article or a plugin specific type
   * @param  string  contentID       Unique identifier of content item to extend
   * @param  string  feedType        Type of feed format (RSS/Atom/etc)
   * @param  string  feedVersion     Type of feed version (RSS 1.0 etc)
+  * @param  string  topic           The topic for the feed.
+  * @param  string  fid             The ID of the feed being fethed.
   */
-function PLG_getFeedElementExtensions($contentType, $contentID, $feedType, $feedVersion)
+function PLG_getFeedElementExtensions($contentType, $contentID, $feedType, $feedVersion, $topic, $fid)
 {
     global $_PLUGINS;
 
@@ -1356,7 +1515,7 @@
         $function = 'plugin_feedElementExtensions_'.$plugin;
         if (function_exists($function))
         {
-            $extensions = array_merge($extensions, $function($contentType, $contentID, $feedType, $feedVersion));
+            $extensions = array_merge($extensions, $function($contentType, $contentID, $feedType, $feedVersion, $topic, $fid));
         }
     }
     return $extensions;
@@ -1366,11 +1525,13 @@
   * Get namespaces extensions for a feed. If a plugin has added extended tags
   * to a feed, then it may also need to insert some extensions to the name
   * spaces.
-  * @param string contentType   Type of feed content, article, event or a plugin specific type
+  * @param string contentType   Type of feed content, article or a plugin specific type
   * @param  string  feedType        Type of feed format (RSS/Atom/etc)
   * @param  string  feedVersion     Type of feed version (RSS 1.0 etc)
+  * @param  string  topic           The topic for the feed.
+  * @param  string  fid             The ID of the feed being fethed.
   */
-function PLG_getFeedNSExtensions($contentType, $feedType, $feedVersion)
+function PLG_getFeedNSExtensions($contentType, $feedType, $feedVersion, $topic, $fid)
 {
     global $_PLUGINS;
 
@@ -1380,7 +1541,7 @@
         $function = 'plugin_feedNSExtensions_'.$plugin;
         if (function_exists($function))
         {
-            $namespaces = array_merge($namespaces, $function($contentType, $feedType, $feedVersion));
+            $namespaces = array_merge($namespaces, $function($contentType, $feedType, $feedVersion, $topic, $fid));
         }
     }
 
@@ -1390,11 +1551,13 @@
 /**
   * Get meta tag extensions for a feed. Add extended tags to the meta
   * area of a feed.
-  * @param  string contentType      Type of feed content, article, event or a plugin specific type
+  * @param  string contentType      Type of feed content, article or a plugin specific type
   * @param  string  feedType        Type of feed format (RSS/Atom/etc)
   * @param  string  feedVersion     Type of feed version (RSS 1.0 etc)
+  * @param  string  topic           The topic for the feed.
+  * @param  string  fid             The ID of the feed being fethed.
   */
-function PLG_getFeedExtensionTags($contentType, $feedType, $feedVersion)
+function PLG_getFeedExtensionTags($contentType, $feedType, $feedVersion, $topic, $fid)
 {
     global $_PLUGINS;
 
@@ -1404,7 +1567,7 @@
         $function = 'plugin_feedExtensionTags_'.$plugin;
         if (function_exists($function))
         {
-            $tags = array_merge($tags, $function($contentType, $feedType, $feedVersion));
+            $tags = array_merge($tags, $function($contentType, $feedType, $feedVersion, $topic, $fid));
         }
     }
 
@@ -1484,35 +1647,78 @@
 
 /**
 * Allows plugins and Core GL Components to filter out spam.
+*
 * The Spam-X Plugin is now part of the Geeklog Distribution
 * This plugin API will call the main function in the Spam-X plugin
 * but can also be used to call other plugins or custom functions
 * if available for filtering spam or content.
 *
-* @param string $content   Text to be filtered or checked for spam
-* @param integer $action   what to do if comment found
-* @return an error or formatted action HTML to return to calling program
+* @param    string  $content    Text to be filtered or checked for spam
+* @param    integer $action     what to do if spam found
+* @return   integer             > 0: spam detected, == 0: no spam detected
+*
+* The caller should check for return values > 0 in which case spam has been
+* detected and the poster should be told, either via
 *
-* Note: Examples for formatted action HTML are a redirect formatted by COM_refresh
-* The spamx DeleteComment.Action does this.
+*   echo COM_refresh ($_CONF['site_url'] . '/index.php?msg=' . $result
+*                     . '&amp;plugin=spamx');
+*
+* or by
+*
+*   COM_displayMessageAndAbort ($result, 'spamx', 403, 'Forbidden');
+*
+* Where the former will only display a "spam detected" message while the latter
+* will also send an HTTP status code 403 with the message.
 *
 */
-function PLG_checkforSpam($content, $action = -1)
+function PLG_checkforSpam ($content, $action = -1)
 {
     global $_PLUGINS;
 
     foreach ($_PLUGINS as $pi_name) {
         $function = 'plugin_checkforSpam_' . $pi_name;
-        if (function_exists($function)) {
-            $someError = $function($content, $action);
-            if ($someError) {
-                // Plugin found a match for spam or else an error
-                return $someError;
+        if (function_exists ($function)) {
+            $result = $function ($content, $action);
+            if ($result > 0) { // Plugin found a match for spam
+
+                $result = PLG_spamAction ($content, $action);
+
+                return $result;
             }
         }
     }
 
-    return false;
+    return 0;
+}
+
+/**
+* Act on spam
+*
+* This is normally called from PLG_checkforSpam (see above) automatically when
+* spam has been detected. There may however be situations where spam has been
+* detected by some other means, in which case you may want to trigger the
+* spam action explicitly.
+*
+* @param    string  $content    Text to be filtered or checked for spam
+* @param    integer $action     what to do if spam found
+* @return   integer             > 0: spam detected, == 0: no spam detected
+*
+*/
+function PLG_spamAction ($content, $action = -1)
+{
+    global $_PLUGINS;
+
+    $result = 0;
+
+    foreach ($_PLUGINS as $pi_name) {
+        $function = 'plugin_spamaction_' . $pi_name;
+        if (function_exists ($function)) {
+            $res = $function ($content, $action);
+            $result = max ($result, $res);
+        }
+    }
+
+    return $result;
 }
 
 /**
@@ -1586,8 +1792,8 @@
 {
     global $_PLUGINS;
 
-    if (function_exists ('CUSTOM_runSheduledTask')) {
-        CUSTOM_runSheduledTask();
+    if (function_exists ('CUSTOM_runScheduledTask')) {
+        CUSTOM_runScheduledTask();
     }
     foreach ($_PLUGINS as $pi_name) {
         $function = 'plugin_runScheduledTask_' . $pi_name;
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/lib-security.php 1.4.1.src/cpanel-glprivate/system/lib-security.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/lib-security.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/lib-security.php	2006-10-24 03:09:50.000000000 -0500
@@ -2,13 +2,13 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Geeklog 1.3                                                               |
+// | Geeklog 1.4                                                               |
 // +---------------------------------------------------------------------------+
 // | lib-security.php                                                          |
 // |                                                                           |
 // | Geeklog security library.                                                 |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs       - tony@tonybibbs.com                            |
 // |          Mark Limburg     - mlimburg@users.sourceforge.net                |
@@ -32,7 +32,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: lib-security.php,v 1.47.2.1 2006/06/30 12:20:48 dhaun Exp $
+// $Id: lib-security.php,v 1.55 2006/10/24 08:09:50 ospiess Exp $
 
 /**
 * This is the security library for Geeklog.  This is used to implement Geeklog's
@@ -67,6 +67,12 @@
     die ('This file can not be used on its own!');
 }
 
+/* Constants for acount stats */
+define('USER_ACCOUNT_DISABLED', 0); // Account is banned/disabled
+define('USER_ACCOUNT_AWAITING_ACTIVATION', 1); // Account awaiting user to login.
+define('USER_ACCOUNT_AWAITING_APPROVAL', 2); // Account awaiting moderator approval
+define('USER_ACCOUNT_ACTIVE', 3); // active account
+
 /**
 * Returns the groups a user belongs to
 *
@@ -415,58 +421,43 @@
 */
 function SEC_getPermissionsHTML($perm_owner,$perm_group,$perm_members,$perm_anon)
 {
-    global $LANG_ACCESS;
+    global $LANG_ACCESS, $_CONF;
+
+    $retval = '';
+
+    $perm_templates = new Template($_CONF['path_layout'] . 'admin/common');
+    $perm_templates->set_file(array('editor'=>'edit_permissions.thtml'));
 
-    $retval = '<table cellpadding="0" cellspacing="0" border="0">' . LB . '<tr>' . LB
-        . '<td colspan="3"><b>' . $LANG_ACCESS['owner'] . '</b></td>'  .LB
-        . '<td colspan="3"><b>' . $LANG_ACCESS['group'] . '</b></td>' . LB
-        . '<td><b>' . $LANG_ACCESS['members'] . '</b></td>' . LB
-        . '<td><b>' . $LANG_ACCESS['anonymous'] . '</b></td>' . LB
-        . '</tr>' . LB . '<tr>' . LB;
+    $perm_templates->set_var ('owner', $LANG_ACCESS['owner']);
+    $perm_templates->set_var ('group', $LANG_ACCESS['group']);
+    $perm_templates->set_var ('members', $LANG_ACCESS['members']);
+    $perm_templates->set_var ('anonymous', $LANG_ACCESS['anonymous']);
 
     // Owner Permissions
-    $retval .= '<td align="center"><b>R</b><br><input type="checkbox" name="perm_owner[]" value="2"';
     if ($perm_owner >= 2) {
-        $retval .= ' checked="checked"';
+        $perm_templates->set_var ('owner_r_checked',' checked="checked"');
     }
-    $retval .= '></td>' . LB
-        .'<td align="center"><b>E</b><br><input type="checkbox" name="perm_owner[]" value="1"';
     if ($perm_owner == 3) {
-        $retval .= ' checked="checked"';
+        $perm_templates->set_var ('owner_e_checked',' checked="checked"');
     }
-    $retval .= '></td>' . LB .'<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>' . LB;
-
     // Group Permissions
-
-    $retval .= '<td align="center"><b>R</b><br><input type="checkbox" name="perm_group[]" value="2"';
     if ($perm_group >= 2) {
-        $retval .= ' checked="checked"';
+        $perm_templates->set_var ('group_r_checked',' checked="checked"');
     }
-    $retval .= '></td>'.LB
-        .'<td align="center"><b>E</b><br><input type="checkbox" name="perm_group[]" value="1"';
     if ($perm_group == 3) {
-        $retval .= ' checked="checked"';
+        $perm_templates->set_var ('group_e_checked',' checked="checked"');
     }
-    $retval .= '></td>' . LB . '<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>' . LB;
-
     // Member Permissions
-    $retval .= '<td align="center"><b>R</b><br><input type="checkbox" name="perm_members[]" value="2"';
     if ($perm_members == 2) {
-        $retval .= ' checked="checked"';
+        $perm_templates->set_var ('members_checked',' checked="checked"');
     }
-    $retval .= '></td>' . LB;
-
     // Anonymous Permissions
-
-    $retval .= '<td align="center"><b>R</b><br><input type="checkbox" name="perm_anon[]" value="2"';
     if ($perm_anon == 2) {
-        $retval .= ' checked="checked"';
+        $perm_templates->set_var ('anon_checked',' checked="checked"');
     }
-    $retval .= '></td>' . LB;
-
-    // Finish off and return
 
-    $retval .= '</tr>' . LB . '</table>';
+    $perm_templates->parse('output','editor');
+    $retval .= $perm_templates->finish($perm_templates->get_var('output'));
 
     return $retval;
 }
@@ -699,7 +690,7 @@
     global $_TABLES, $LANG01, $_CONF;
 
     $result = DB_query( "SELECT status, passwd, email, uid FROM {$_TABLES['users']} WHERE username='$username' AND ((remoteservice is null) or (remoteservice = ''))" );
-    $tmp = mysql_errno();
+    $tmp = DB_error();
     $nrows = DB_numRows( $result );
 
     if(( $tmp == 0 ) && ( $nrows == 1 ))
@@ -740,12 +731,14 @@
 */
 function SEC_checkUserStatus($userid)
 {
-    global $_TABLES, $_CONF;
+    global $_CONF, $_TABLES;
+
     // Check user status
     $status = DB_getItem($_TABLES['users'], 'status', "uid=$userid");
+
     // only do redirects if we aren't on users.php in a valid mode (logout or
     // default)
-    if (!(eregi('users.php', $_SERVER['PHP_SELF'])))
+    if (strpos ($_SERVER['PHP_SELF'], 'users.php') === false)
     {
         $redirect = true;
     } else {
@@ -801,7 +794,7 @@
     /* First try a local cached login */
     $remoteusername = addslashes($loginname);
     $result = DB_query("SELECT passwd, status, uid FROM {$_TABLES['users']} WHERE remoteusername='$remoteusername' AND remoteservice='$service'");
-    $tmp = mysql_errno();
+    $tmp = DB_error();
     $nrows = DB_numRows($result);
     if (($tmp == 0) && ($nrows == 1))
     {
@@ -919,4 +912,112 @@
     $A['perm_anon']    = $use_permissions[3];
 }
 
+
+/**
+* Common function used to build group access SQL
+*
+* @param   string  $clause    Optional parm 'WHERE' - default is 'AND'
+* @return  string  $groupsql  Formatted SQL string to be appended in calling script SQL statement
+*/
+function SEC_buildAccessSql ($clause = 'AND')
+{
+    global $_TABLES, $_USER;
+
+    if (isset($_USER) AND $_USER['uid'] > 1) {
+        $uid = $_USER['uid'];
+    } else {
+        $uid = 1;
+    }
+
+    $_GROUPS = SEC_getUserGroups($uid);
+    $groupsql = '';
+    if (count($_GROUPS) == 1) {
+        $groupsql .= " $clause grp_access = '" . current($_GROUPS) ."'";
+    } else {
+        $groupsql .= " $clause grp_access IN (" . implode(',',array_values($_GROUPS)) .")";
+    }
+
+    return $groupsql;
+}
+
+/**
+* Remove a feature from the database entirely.
+*
+* This function can be used by plugins during uninstall.
+*
+* @param    string  $feature_name   name of the feature, e.g. 'foo.edit'
+* @param    bool    $logging        whether to log progress in error.log
+* @return   void
+*
+*/
+function SEC_removeFeatureFromDB ($feature_name, $logging = false)
+{
+    global $_TABLES;
+
+    if (!empty ($feature_name)) {
+        $feat_id = DB_getItem ($_TABLES['features'], 'ft_id',
+                               "ft_name = '$feature_name'");
+        if (!empty ($feat_id)) {
+            // Before removing the feature itself, remove it from all groups
+            if ($logging) {
+                COM_errorLog ("Attempting to remove '$feature_name' rights from all groups", 1);
+            }
+            DB_delete ($_TABLES['access'], 'acc_ft_id', $feat_id);
+            if ($logging) {
+                COM_errorLog ('...success', 1);
+            }
+
+            // now remove the feature itself
+            if ($logging) {
+                COM_errorLog ("Attempting to remove the '$feature_name' feature", 1);
+            }
+            DB_delete ($_TABLES['features'], 'ft_id', $feat_id);
+            if ($logging) {
+                COM_errorLog ('...success', 1);
+            }
+        } else if ($logging) {
+            COM_errorLog ("SEC_removeFeatureFromDB: Feature '$feature_name' not found.");
+        }
+    }
+}
+
+/**
+* Create a group dropdown
+*
+* Creates the group dropdown menu that's used on pretty much every admin page
+*
+* @param    int     $group_id   current group id (to be selected)
+* @param    int     $access     access permission
+* @return   string              HTML for the dropdown
+*
+*/
+function SEC_getGroupDropdown ($group_id, $access)
+{
+    global $_TABLES;
+
+    $groupdd = '';
+
+    if ($access == 3) {
+        $usergroups = SEC_getUserGroups ();
+
+        $groupdd .= '<select name="group_id">' . LB;
+        foreach ($usergroups as $ug_name => $ug_id) {
+            $groupdd .= '<option value="' . $ug_id . '"';
+            if ($group_id == $ug_id) {
+                $groupdd .= ' selected="selected"';
+            }
+            $groupdd .= '>' . $ug_name . '</option>' . LB;
+        }
+        $groupdd .= '</select>' . LB;
+    } else {
+        // They can't set the group then
+        $groupdd .= DB_getItem ($_TABLES['groups'], 'grp_name',
+                                "grp_id = '$group_id'")
+                 . '<input type="hidden" name="group_id" value="' . $group_id
+                 . '">';
+    }
+
+    return $groupdd;
+}
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/lib-sessions.php 1.4.1.src/cpanel-glprivate/system/lib-sessions.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/lib-sessions.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/lib-sessions.php	2006-10-24 03:09:50.000000000 -0500
@@ -1,4 +1,4 @@
-<?php 
+<?php
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
@@ -30,7 +30,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: lib-sessions.php,v 1.39.2.2 2006/06/30 12:20:48 dhaun Exp $
+// $Id: lib-sessions.php,v 1.43 2006/10/24 08:09:50 ospiess Exp $
 
 /**
 * This is the session management library for Geeklog.  Some of this code was
@@ -93,7 +93,7 @@
 
     // Check for a cookie on the users's machine.  If the cookie exists, build
     // an array of the users info and setup the theme.
-    
+
     if (isset ($_COOKIE[$_CONF['cookie_session']])) {
         $sessid = COM_applyFilter ($_COOKIE[$_CONF['cookie_session']]);
         if ($_SESS_VERBOSE) {
@@ -105,7 +105,7 @@
         if ($_SESS_VERBOSE) {
             COM_errorLog("Got $userid as User ID from the session ID",1);
         }
-        
+
         if ($userid > 1) {
             // Check user status
             SEC_checkUserStatus($userid);
@@ -197,7 +197,13 @@
         COM_errorLog("***Leaving SESS_sessionCheck***",1);
     }
 
-    return $_USER;
+    // Ensure $_USER is set to avoid warnings (path exposure...)
+    if(isset($_USER))
+    {
+        return $_USER;
+    } else {
+        return NULL;
+    }
 }
 
 /**
@@ -213,7 +219,7 @@
 * @return       string      Session ID
 *
 */
-function SESS_newSession($userid, $remote_ip, $lifespan, $md5_based=0) 
+function SESS_newSession($userid, $remote_ip, $lifespan, $md5_based=0)
 {
     global $_TABLES, $_CONF, $_SESS_VERBOSE;
 
@@ -232,7 +238,7 @@
         $ip = str_replace('.','',$remote_ip);
         $md5_sessid = md5($ip + $sessid);
     } else {
-        $md5_sessid = '';         
+        $md5_sessid = '';
     }
 
     $currtime = (string) (time());
@@ -243,12 +249,12 @@
     } else {
         $deleteSQL = "DELETE FROM {$_TABLES['sessions']} WHERE (start_time < $expirytime)";
         $delresult = DB_query($deleteSQL);
-    
+
         if ($_SESS_VERBOSE) {
             COM_errorLog("Attempted to delete rows from session table with following SQL\n$deleteSQL\n",1);
             COM_errorLog("Got $delresult as a result from the query",1);
         }
-    
+
         if (!$delresult) {
             die("Delete failed in new_session()");
         }
@@ -276,14 +282,14 @@
             return $sessid;
         }
     } else {
-        echo mysql_errno().": ".mysql_error()."<BR>";
+        echo DB_error().": ".DB_error()."<BR>";
         die("Insert failed in new_session()");
     }
     if ($_SESS_VERBOSE) COM_errorLog("*************leaving SESS_newSession*****************",1);
 }
 
 /**
-* Sets the session cookie 
+* Sets the session cookie
 *
 * This saves the session ID to the session cookie on client's machine for
 * later use
@@ -324,9 +330,9 @@
 * @param        string      $cookietime     Used to query DB for valid sessions
 * @param        string      $remote_ip      Used to pull session we need
 * @param        int         $md5_based      Let's us now if we need to take MD5 hash into consideration
-* @return       int         User ID 
+* @return       int         User ID
 */
-function SESS_getUserIdFromSession($sessid, $cookietime, $remote_ip, $md5_based=0) 
+function SESS_getUserIdFromSession($sessid, $cookietime, $remote_ip, $md5_based=0)
 {
     global $_CONF, $_TABLES, $_SESS_VERBOSE;
 
@@ -363,7 +369,7 @@
 }
 
 /**
-* Updates a session cookies timeout 
+* Updates a session cookies timeout
 *
 * Refresh the start_time of the given session in the database.
 * This is called whenever a page is hit by a user with a valid session.
@@ -373,12 +379,12 @@
 * @return       boolean     always true for some reason
 *
 */
-function SESS_updateSessionTime($sessid, $md5_based=0) 
+function SESS_updateSessionTime($sessid, $md5_based=0)
 {
     global $_TABLES;
 
     $newtime = (string) time();
-    
+
     if ($md5_based == 1) {
         $sql = "UPDATE {$_TABLES['sessions']} SET start_time=$newtime WHERE (md5_sess_id = '$sessid')";
     } else {
@@ -399,7 +405,7 @@
 * @return       boolean     Always true for some reason
 *
 */
-function SESS_endUserSession($userid) 
+function SESS_endUserSession($userid)
 {
     global $_TABLES;
 
@@ -418,7 +424,7 @@
 * @return       array       returns user's data in an array
 *
 */
-function SESS_getUserData($username) 
+function SESS_getUserData($username)
 {
     global $_TABLES;
 
@@ -429,11 +435,11 @@
     if(!$result = DB_query($sql)) {
         COM_errorLog("error in get_userdata");
     }
-    
+
     if(!$myrow = DB_fetchArray($result)) {
         COM_errorLog("error in get_userdata");
     }
-    
+
     return($myrow);
 }
 
@@ -446,7 +452,7 @@
 * @return       array   returns user'd data in an array
 *
 */
-function SESS_getUserDataFromId($userid) 
+function SESS_getUserDataFromId($userid)
 {
     global $_TABLES;
 
@@ -458,7 +464,7 @@
         $userdata = array("error" => "1");
         return ($userdata);
     }
-    
+
     if(!$myrow = DB_fetchArray($result)) {
         $userdata = array("error" => "1");
         return ($userdata);
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/lib-story.php 1.4.1.src/cpanel-glprivate/system/lib-story.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/lib-story.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/lib-story.php	2006-11-09 03:57:28.000000000 -0600
@@ -32,8 +32,8 @@
 // | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
 // |                                                                           |
 // +---------------------------------------------------------------------------+
-// 
-// $Id: lib-story.php,v 1.56.2.1 2006/06/30 12:20:48 dhaun Exp $
+//
+// $Id: lib-story.php,v 1.73 2006/11/09 09:57:28 dhaun Exp $
 
 if (strpos ($_SERVER['PHP_SELF'], 'lib-story.php') !== false) {
     die ('This file can not be used on its own!');
@@ -45,6 +45,11 @@
     require_once ($_CONF['path_system'] . 'lib-user.php');
 }
 
+// Story Record Options for the STATUS Field
+if (!defined ('STORY_ARCHIVE_ON_EXPIRE')) {
+    define ('STORY_ARCHIVE_ON_EXPIRE', '10');
+    define ('STORY_DELETE_ON_EXPIRE',  '11');
+}
 
 /**
 * Returns the array (created from db record) passed to it as formated HTML
@@ -64,12 +69,16 @@
     global $_CONF, $_TABLES, $_USER, $LANG01, $LANG05, $LANG11, $LANG_TRB,
            $_IMAGE_TYPE, $mode;
 
+    static $storycounter = 0;
+
     if( empty( $storytpl ))
     {
         $storytpl = 'storytext.thtml';
     }
 
     $curtime = COM_getUserDateTimeFormat( $A['day'] );
+    $shortdate = strftime( $_CONF['shortdate'], $A['day'] );
+    $dateonly = strftime( $_CONF['dateonly'], $A['day'] );
     $A['day'] = $curtime[0];
 
     $introtext = stripslashes( $A['introtext'] );
@@ -125,6 +134,8 @@
     $article->set_var( 'layout_url', $_CONF['layout_url'] );
     $article->set_var( 'site_url', $_CONF['site_url'] );
     $article->set_var( 'story_date', $A['day'] );
+    $article->set_var( 'story_date_short', $shortdate );
+    $article->set_var( 'story_date_only', $dateonly );
     if( $_CONF['hideviewscount'] != 1 ) {
         $article->set_var( 'lang_views', $LANG01[106] );
         $article->set_var( 'story_hits', COM_NumberFormat( $A['hits'] ));
@@ -136,32 +147,43 @@
         $article->set_var( 'lang_contributed_by', $LANG01[1] );
         $article->set_var( 'contributedby_uid', $A['uid'] );
         $username = $A['username'];
-        $article->set_var( 'contributedby_user', $username );
-
         $fullname = $A['fullname'];
-        if( empty( $fullname ))
-        {
+        $article->set_var( 'contributedby_user', $username );
+        if (empty ($fullname)) {
             $article->set_var( 'contributedby_fullname', $username );
-        }
-        else
-        {
+        } else {
             $article->set_var( 'contributedby_fullname', $fullname );
         }
 
+        $authorname = COM_getDisplayName( $A['uid'], $username, $fullname );
+        $article->set_var( 'contributedby_author', $authorname );
+        $article->set_var( 'author', $authorname );
+
         if( $A['uid'] > 1 )
         {
+            $profileUrl = $_CONF['site_url']
+                        . '/users.php?mode=profile&amp;uid=' . $A['uid'];
             $article->set_var( 'start_contributedby_anchortag',
-                    '<a class="storybyline" href="' . $_CONF['site_url']
-                    . '/users.php?mode=profile&amp;uid=' . $A['uid'] . '">' );
+                    '<a class="storybyline" href="' . $profileUrl . '">' );
             $article->set_var( 'end_contributedby_anchortag', '</a>' );
-            $article->set_var( 'contributedby_url', $_CONF['site_url']
-                    . '/users.php?mode=profile&amp;uid=' . $A['uid'] );
+            $article->set_var( 'contributedby_url', $profileUrl );
         }
 
         $photo = '';
-        if( $_CONF['allow_user_photo'] )
+        if( $_CONF['allow_user_photo'] == 1 )
         {
-            $photo = USER_getPhoto( $A['uid'], $A['photo'] );
+            if( isset( $A['photo'] ) && empty( $A['photo'] ))
+            {
+                $A['photo'] = '(none)'; // user does not have a photo
+            }
+            if( isset( $A['email'] ))
+            {
+                $photo = USER_getPhoto( $A['uid'], $A['photo'], $A['email'] );
+            }
+            else
+            {
+                $photo = USER_getPhoto( $A['uid'], $A['photo'] );
+            }
         }
         if( !empty( $photo ))
         {
@@ -252,13 +274,14 @@
                        ($story_page < count($article_array)) )
                     or
                      ( ($_CONF['page_break_comments'] == 'first')  and
-                       ($story_page!=1) )
+                       ($story_page != 1) )
                    )
                 {
                     $show_comments = false;
                 }
+                $article->set_var( 'story_page', $story_page );
             }
-            
+
             $article->set_var( 'story_introtext', $introtext . '<br><br>'
                                . $bodytext );
             $article->set_var( 'story_text_no_br', $introtext . $bodytext );
@@ -266,7 +289,7 @@
         $article->set_var( 'story_introtext_only', $introtext );
         $article->set_var( 'story_bodytext_only', $bodytext );
 
-        if(( $_CONF['trackback_enabled'] || $_CONF['pingback_enabled'] ) && 
+        if(( $_CONF['trackback_enabled'] || $_CONF['pingback_enabled'] ) &&
                 SEC_hasRights( 'story.ping' ))
         {
             $url = $_CONF['site_admin_url']
@@ -277,10 +300,14 @@
             $article->set_var( 'lang_send_trackback_text',
                                $LANG_TRB['send_trackback'] );
         }
+        $article->set_var( 'story_display',
+                           ( $index == 'p' ) ? 'preview' : 'article' );
+        $article->set_var( 'story_counter', 0 );
     }
     else
     {
         $article->set_var( 'story_introtext', $introtext );
+        $article->set_var( 'story_introtext_only', $introtext );
         $article->set_var( 'story_text_no_br', $introtext );
 
         if( !empty( $bodytext ))
@@ -290,12 +317,13 @@
             $numwords = COM_NumberFormat (sizeof( explode( ' ', strip_tags( $bodytext ))));
             $article->set_var( 'readmore_words', $numwords );
 
-            $article->set_var( 'readmore_link', '<a href="' . $articleUrl . '">'
-                    . $LANG01[2] . '</a> (' . $numwords . ' ' . $LANG01[62]
-                    . ') ' );
+            $article->set_var( 'readmore_link', '<a href="' . $articleUrl
+                    . '" class="story-read-more-link">' . $LANG01[2] . '</a> ('
+                    . $numwords . ' ' . $LANG01[62] . ') ' );
             $article->set_var( 'start_readmore_anchortag', '<a href="'
-                    . $articleUrl . '">' );
+                    . $articleUrl . '" class="story-read-more-link">' );
             $article->set_var( 'end_readmore_anchortag', '</a>' );
+            $article->set_var( 'read_more_class', 'class="story-read-more"' );
         }
         $article->set_var( 'start_storylink_anchortag', '<a href="'
                 . $articleUrl . '" class="non-ul">' );
@@ -316,13 +344,15 @@
 
             if( $A['comments'] > 0 )
             {
-                $result = DB_query( "SELECT UNIX_TIMESTAMP(date) AS day,username FROM {$_TABLES['comments']},{$_TABLES['users']} WHERE {$_TABLES['users']}.uid = {$_TABLES['comments']}.uid AND sid = '{$A['sid']}' ORDER BY date desc LIMIT 1" );
+                $result = DB_query( "SELECT UNIX_TIMESTAMP(date) AS day,username,fullname,{$_TABLES['comments']}.uid as cuid FROM {$_TABLES['comments']},{$_TABLES['users']} WHERE {$_TABLES['users']}.uid = {$_TABLES['comments']}.uid AND sid = '{$A['sid']}' ORDER BY date desc LIMIT 1" );
                 $C = DB_fetchArray( $result );
 
                 $recent_post_anchortag = '<span class="storybyline">'
                         . $LANG01[27] . ': '
                         . strftime( $_CONF['daytime'], $C['day'] ) . ' '
-                        . $LANG01[104] . ' ' . $C['username'] . '</span>';
+                        . $LANG01[104] . ' ' . COM_getDisplayName ($C['cuid'],
+                                                $C['username'], $C['fullname'])
+                        . '</span>';
                 $article->set_var( 'start_comments_anchortag', '<a href="'
                         . $commentsUrl . '">' );
                 $article->set_var( 'end_comments_anchortag', '</a>' );
@@ -416,11 +446,15 @@
         {
             $article->set_var( 'pdf_icon', '' );
         }
+        $article->set_var( 'story_display', 'index' );
+
+        $storycounter++;
+        $article->set_var( 'story_counter', $storycounter );
     }
     $article->set_var( 'article_url', $articleUrl );
     $article->set_var( 'recent_post_anchortag', $recent_post_anchortag );
 
-    if( SEC_hasAccess( $A['owner_id'], $A['group_id'], $A['perm_owner'], $A['perm_group'], $A['perm_members'], $A['perm_anon'] ) == 3 AND SEC_hasrights( 'story.edit' ) AND ( $index != 'p' ))
+    if( SEC_hasAccess( $A['owner_id'], $A['group_id'], $A['perm_owner'], $A['perm_group'], $A['perm_members'], $A['perm_anon'] ) == 3 AND SEC_hasrights( 'story.edit' ) AND ( $index != 'p' ) AND SEC_hasTopicAccess( $A['tid'] ) == 3 )
     {
         $article->set_var( 'edit_link', '<a href="' . $_CONF['site_admin_url']
                 . '/story.php?mode=edit&amp;sid=' . $A['sid'] . '">'
@@ -437,23 +471,30 @@
                 . $LANG01[4] . '" title="' . $LANG01[4] . '" border="0">' );
     }
 
-    // Need to convert text date/time to a timestamp
-    $t = explode( ' ', $A['expire'] );
-    $archiveDateTime = COM_convertDate2Timestamp( $t[0], $t[1] );
+    if (empty ($A['expire'])) { // e.g. in a preview
+        $archiveDateTime = time ();
+    } else {
+        // Need to convert text date/time to a timestamp
+        $t = explode( ' ', $A['expire'] );
+        $archiveDateTime = COM_convertDate2Timestamp( $t[0], $t[1] );
+    }
     if( $A['featured'] == 1 )
     {
         $article->set_var( 'lang_todays_featured_article', $LANG05[4] );
         $article->parse( 'story_bodyhtml', 'featuredbodytext', true );
+        PLG_templateSetVars( 'featuredstorytext', $article );
         $article->parse( 'finalstory', 'featuredarticle' );
     }
-    elseif( $A['statuscode'] == 10 AND $archiveDateTime <= time() )
+    else if(( $A['statuscode'] == STORY_ARCHIVE_ON_EXPIRE ) AND ( $archiveDateTime <= time()))
     {
         $article->parse( 'story_bodyhtml', 'archivestorybodytext', true );
+        PLG_templateSetVars( 'archivestorytext', $article );
         $article->parse( 'finalstory', 'archivearticle' );
     }
     else
     {
         $article->parse( 'story_bodyhtml', 'bodytext', true );
+        PLG_templateSetVars( 'storytext', $article );
         $article->parse( 'finalstory', 'article' );
     }
 
@@ -480,12 +521,12 @@
     for ( $i=0; $i< count( $matches[0] ); $i++ )
     {
         $matches[2][$i] = strip_tags( $matches[2][$i] );
-        if ( !strlen( trim( $matches[2][$i] ) ) ) {
+        if ( !MBYTE_strlen( trim( $matches[2][$i] ) ) ) {
             $matches[2][$i] = strip_tags( $matches[1][$i] );
         }
 
         // if link is too long, shorten it and add ... at the end
-        if ( ( $maxlength > 0 ) && ( strlen( $matches[2][$i] ) > $maxlength ) )
+        if ( ( $maxlength > 0 ) && ( MBYTE_strlen( $matches[2][$i] ) > $maxlength ) )
         {
             $matches[2][$i] = substr( $matches[2][$i], 0, $maxlength - 3 ) . '...';
         }
@@ -526,7 +567,7 @@
         // add a link to "search by author"
         if( $_CONF['contributedbyline'] == 1 )
         {
-            $author = DB_getItem( $_TABLES['users'], 'username', "uid = $uid" );
+            $author = COM_getDisplayName( $uid );
             $rel[] = "<a href=\"{$_CONF['site_url']}/search.php?mode=search&amp;type=stories&amp;author=$uid\">{$LANG24[37]} $author</a>";
         }
 
@@ -656,7 +697,11 @@
                 $retval[] = trim (PLG_replaceTags (stripslashes ($A['introtext']) . ' ' . stripslashes ($A['bodytext'])));
                 break;
             case 'excerpt':
-                $retval[] = trim (PLG_replaceTags (stripslashes ($A['introtext']) . "\n\n" . stripslashes ($A['bodytext'])));
+                $excerpt = stripslashes ($A['introtext']);
+                if (!empty ($A['bodytext'])) {
+                    $excerpt .= "\n\n" . stripslashes ($A['bodytext']);
+                }
+                $retval[] = trim (PLG_replaceTags ($excerpt));
                 break;
             case 'feed':
                 $feedfile = DB_getItem ($_TABLES['syndication'], 'filename',
@@ -922,6 +967,9 @@
     DB_query("DELETE FROM {$_TABLES['comments']} WHERE sid = '$sid' AND type = 'article'");
     DB_delete ($_TABLES['stories'], 'sid', $sid);
 
+    // delete Trackbacks
+    DB_query ("DELETE FROM {$_TABLES['trackback']} WHERE sid = '$sid' AND type = 'article';");
+
     // update RSS feed and Older Stories block
     COM_rdfUpToDateCheck ();
     COM_olderStuff ();
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/lib-syndication.php 1.4.1.src/cpanel-glprivate/system/lib-syndication.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/lib-syndication.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/lib-syndication.php	2006-11-30 14:24:47.000000000 -0600
@@ -30,7 +30,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: lib-syndication.php,v 1.30.2.1 2006/06/30 12:20:48 dhaun Exp $
+// $Id: lib-syndication.php,v 1.38 2006/11/22 04:44:57 blaine Exp $
 
 // set to true to enable debug output in error.log
 $_SYND_DEBUG = false;
@@ -177,63 +177,6 @@
 }
 
 /**
-* Check if a feed for the events needs to be updated.
-*
-* @param    string  $update_info    list of event ids
-* @param    string  $limit          number of entries or number of hours
-* @param    string  $updated_id     (optional) entry id to be updated
-* @return   bool                    false = feed needs to be updated
-*
-*/
-function SYND_feedUpdateCheckEvents( $update_info, $limit, $updated_id = '' )
-{
-    global $_CONF, $_TABLES, $_SYND_DEBUG;
-
-    $where = '';
-    if( !empty( $limit ))
-    {
-        if( substr( $limit, -1 ) == 'h' ) // next xx hours
-        {
-            $limitsql = '';
-            $hours = substr( $limit, 0, -1 );
-            $where = " AND (datestart <= DATE_ADD(NOW(), INTERVAL $hours HOUR))";
-        }
-        else
-        {
-            $limitsql = ' LIMIT ' . $limit;
-        }
-    }
-    else
-    {
-        $limitsql = ' LIMIT 10';
-    }
-
-    $result = DB_query( "SELECT eid FROM {$_TABLES['events']} WHERE perm_anon > 0 AND dateend >= NOW()$where ORDER BY datestart,timestart $limitsql" );
-    $nrows = DB_numRows( $result );
-
-    $eids = array();
-    for( $i = 0; $i < $nrows; $i++ )
-    {
-        $A = DB_fetchArray( $result );
-
-        if( $A['eid'] == $updated_id )
-        {
-            // no need to look any further - this feed has to be updated
-            return false;
-        }
-
-        $eids[] = $A['eid'];
-    }
-    $current = implode( ',', $eids );
-
-    if ($_SYND_DEBUG) {
-        COM_errorLog ("Update check for events: comparing new list ($current) with old list ($update_info)", 1);
-    }
-
-    return ( $current != $update_info ) ? false : true;
-}
-
-/**
 * Check if the contents of Geeklog's built-in feeds need to be updated.
 *
 * @param    string  topic           indicator of the feed's "topic"
@@ -245,24 +188,7 @@
 */
 function SYND_feedUpdateCheck( $topic, $update_data, $limit, $updated_topic = '', $updated_id = '' )
 {
-    $is_current = true;
-
-    if( $topic == '::events' )
-    {
-        if( $updated_topic != '::events' )
-        {
-            $updated_topic = '';
-            $updated_id = '';
-        }
-    }
-    else
-    {
-        if( $updated_topic == '::events' )
-        {
-            $updated_topic = '';
-            $updated_id = '';
-        }
-    }
+    $is_current = true; 
 
     switch( $topic )
     {
@@ -272,14 +198,6 @@
                             $updated_topic, $updated_id );
         }
         break;
-
-        case '::events':
-        {
-            $is_current = SYND_feedUpdateCheckEvents( $update_data, $limit,
-                            $updated_id );
-        }
-        break;
-
         default:
         {
             $is_current = SYND_feedUpdateCheckTopic( $topic, $update_data,
@@ -301,7 +219,7 @@
 * @return   array              content of the feed
 *
 */
-function SYND_getFeedContentPerTopic( $tid, $limit, &$link, &$update, $contentLength, $feedType, $feedVersion )
+function SYND_getFeedContentPerTopic( $tid, $limit, &$link, &$update, $contentLength, $feedType, $feedVersion, $fid )
 {
     global $_TABLES, $_CONF, $LANG01;
 
@@ -332,7 +250,7 @@
         $topic = stripslashes( DB_getItem( $_TABLES['topics'], 'topic',
                                "tid = '$tid'" ));
 
-        $result = DB_query( "SELECT sid,uid,title,introtext,bodytext,postmode,UNIX_TIMESTAMP(date) AS modified FROM {$_TABLES['stories']} WHERE draft_flag = 0 AND date <= NOW() AND tid = '$tid' AND perm_anon > 0 ORDER BY date DESC $limitsql" );
+        $result = DB_query( "SELECT sid,uid,title,introtext,bodytext,postmode,UNIX_TIMESTAMP(date) AS modified,commentcode,trackbackcode FROM {$_TABLES['stories']} WHERE draft_flag = 0 AND date <= NOW() AND tid = '$tid' AND perm_anon > 0 ORDER BY date DESC $limitsql" );
 
         $nrows = DB_numRows( $result );
 
@@ -351,13 +269,13 @@
 
             $storylink = COM_buildUrl( $_CONF['site_url']
                                        . '/article.php?story=' . $row['sid'] );
-            $extensionTags = PLG_getFeedElementExtensions('article', $row['sid'], $feedType, $feedVersion);
-            if( $_CONF['trackback_enabled'] && ($feedType == 'RSS'))
+            $extensionTags = PLG_getFeedElementExtensions('article', $row['sid'], $feedType, $feedVersion, $tid, $fid);
+            if( $_CONF['trackback_enabled'] && ($feedType == 'RSS') && ($row['trackbackcode'] >= 0))
             {
                 $trbUrl = TRB_makeTrackbackUrl( $row['sid'] );
-                $extensionTags[] = '<trackback:ping>'.htmlspecialchars($trbUrl).'</trackback:ping>';
+                $extensionTags['trackbacktag'] = '<trackback:ping>'.htmlspecialchars($trbUrl).'</trackback:ping>';
             }
-            $content[] = array( 'title'      => $storytitle,
+            $article = array( 'title'      => $storytitle,
                                 'summary'    => $storytext,
                                 'text'       => $fulltext,
                                 'link'       => $storylink,
@@ -365,10 +283,14 @@
                                 'author'     => COM_getDisplayName( $row['uid'] ),
                                 'date'       => $row['modified'],
                                 'format'     => $row['postmode'],
-                                'commenturl' => $storylink . '#comments',
                                 'topic'      => $topic,
-                                'extensions' => $extensionTags,
+                                'extensions' => $extensionTags
                               );
+            if($row['commentcode'] >= 0)
+            {
+                $article['commenturl'] = $storylink . '#comments';
+            }
+            $content[] = $article;
         }
     }
 
@@ -385,10 +307,11 @@
 * @param    string   $link     link to homepage
 * @param    string   $update   list of story ids
 * @param    int      $contentLength Length of summary to allow.
+* @param    int      $fid       the id of the feed being fetched
 * @return   array              content of the feed
 *
 */
-function SYND_getFeedContentAll( $limit, &$link, &$update, $contentLength, $feedType, $feedVersion )
+function SYND_getFeedContentAll( $limit, &$link, &$update, $contentLength, $feedType, $feedVersion, $fid)
 {
     global $_TABLES, $_CONF, $LANG01;
 
@@ -432,7 +355,7 @@
         $where .= " AND (tid IN ($tlist))";
     }
 
-    $result = DB_query( "SELECT sid,tid,uid,title,introtext,bodytext,postmode,UNIX_TIMESTAMP(date) AS modified FROM {$_TABLES['stories']} WHERE draft_flag = 0 AND date <= NOW() $where AND perm_anon > 0 ORDER BY date DESC $limitsql" );
+    $result = DB_query( "SELECT sid,tid,uid,title,introtext,bodytext,postmode,UNIX_TIMESTAMP(date) AS modified,commentcode,trackbackcode FROM {$_TABLES['stories']} WHERE draft_flag = 0 AND date <= NOW() $where AND perm_anon > 0 ORDER BY date DESC $limitsql" );
 
     $content = array();
     $sids = array();
@@ -453,13 +376,13 @@
 
         $storylink = COM_buildUrl( $_CONF['site_url'] . '/article.php?story='
                                    . $row['sid'] );
-        $extensionTags = PLG_getFeedElementExtensions('article', $row['sid'], $feedType, $feedVersion);
-        if( $_CONF['trackback_enabled'] && ($feedType == 'RSS'))
+        $extensionTags = PLG_getFeedElementExtensions('article', $row['sid'], $feedType, $feedVersion, $fid, '::all');
+        if( $_CONF['trackback_enabled'] && ($feedType == 'RSS') && ($row['trackbackcode'] >= 0))
         {
             $trbUrl = TRB_makeTrackbackUrl( $row['sid'] );
-            $extensionTags[] = '<trackback:ping>'.htmlspecialchars($trbUrl).'</trackback:ping>';
+            $extensionTags['trackbacktag'] = '<trackback:ping>'.htmlspecialchars($trbUrl).'</trackback:ping>';
         }
-        $content[] = array( 'title'      => $storytitle,
+        $article = array( 'title'      => $storytitle,
                             'summary'    => $storytext,
                             'text'       => $fulltext,
                             'link'       => $storylink,
@@ -467,91 +390,20 @@
                             'author'     => COM_getDisplayName( $row['uid'] ),
                             'date'       => $row['modified'],
                             'format'     => $row['postmode'],
-                            'commenturl' => $storylink . '#comments',
                             'topic'      => $topics[$row['tid']],
                             'extensions' => $extensionTags
                           );
-
-
-    }
-
-    $link = $_CONF['site_url'];
-    $update = implode( ',', $sids );
-
-    return $content;
-}
-
-/**
-* Get content for a feed that holds all events.
-*
-* @param    string   $limit    number of entries or number of stories
-* @param    string   $link     link to homepage
-* @param    string   $update   list of story ids
-* @return   array              content of the feed
-*
-*/
-function SYND_getFeedContentEvents( $limit, &$link, &$update, $contentLength, $feedType, $feedVersion )
-{
-    global $_TABLES, $_CONF, $LANG01;
-
-    $where = '';
-    if( !empty( $limit ))
-    {
-        if( substr( $limit, -1 ) == 'h' ) // next xx hours
-        {
-            $limitsql = '';
-            $hours = substr( $limit, 0, -1 );
-            $where = " AND (datestart <= DATE_ADD(NOW(), INTERVAL $hours HOUR))";
-        }
-        else
+        if($row['commentcode'] >= 0)
         {
-            $limitsql = ' LIMIT ' . $limit;
+            $article['commenturl'] = $storylink . '#comments';
         }
-    }
-    else
-    {
-        $limitsql = ' LIMIT 10';
-    }
+        $content[] = $article;
 
-    $result = DB_query( "SELECT eid,owner_id,title,description FROM {$_TABLES['events']} WHERE perm_anon > 0 AND dateend >= NOW()$where ORDER BY datestart,timestart $limitsql" );
 
-    $content = array();
-    $eids = array();
-    $nrows = DB_numRows( $result );
-
-    for( $i = 1; $i <= $nrows; $i++ )
-    {
-        $row = DB_fetchArray( $result );
-        $eids[] = $row['eid'];
-
-        $eventtitle = stripslashes( $row['title'] );
-        $eventtext = SYND_truncateSummary( $row['description'], $contentLength);
-        $eventlink  = $_CONF['site_url'] . '/calendar_event.php?eid='
-                    . $row['eid'];
-
-        // Need to reparse the date from the event id
-        $myyear = substr( $row['eid'], 0, 4 );
-        $mymonth = substr( $row['eid'], 4, 2 );
-        $myday = substr( $row['eid'], 6, 2 );
-        $myhour = substr( $row['eid'], 8, 2 );
-        $mymin = substr( $row['eid'], 10, 2 );
-        $mysec = substr( $row['eid'], 12, 2 );
-        $newtime = "{$mymonth}/{$myday}/{$myyear} {$myhour}:{$mymin}:{$mysec}";
-        $creationtime = strtotime( $newtime );
-        $extensionTags = PLG_getFeedElementExtensions('event', $row['eid'], $feedType, $feedVersion);
-        $content[] = array( 'title'  => $eventtitle,
-                            'summary'   => $eventtext,
-                            'link'   => $eventlink,
-                            'uid'    => $row['owner_id'],
-                            'author' => COM_getDisplayName( $row['owner_id'] ),
-                            'date'   => $creationtime,
-                            'format' => 'plaintext',
-                            'extensions' => $extensionTags
-                          );
     }
 
-    $link = $_CONF['site_url'] . '/calendar.php';
-    $update = implode( ',', $eids );
+    $link = $_CONF['site_url'];
+    $update = implode( ',', $sids );
 
     return $content;
 }
@@ -595,19 +447,13 @@
                 {
                     $content = SYND_getFeedContentAll( $A['limits'], $link,
                                                        $data, $A['content_length'],
-                                                       $format[0], $format[1] );
-                }
-                elseif( $A['topic'] == '::events')
-                {
-                    $content = SYND_getFeedContentEvents( $A['limits'], $link,
-                                                          $data, $A['content_length'],
-                                                          $format[0], $format[1] );
+                                                       $format[0], $format[1], $fid );
                 }
                 else // feed for a single topic only
                 {
                     $content = SYND_getFeedContentPerTopic( $A['topic'],
                             $A['limits'], $link, $data, $A['content_length'],
-                            $format[0], $format[1] );
+                            $format[0], $format[1], $fid );
                 }
             }
             else
@@ -620,8 +466,8 @@
                     $count = count( $content );
                     for( $i = 0; $i < $count; $i++ )
                     {
-                        $content[i]['summary'] = SYND_truncateSummary(
-                                    $content[i]['text'], $A['content_length'] );
+                        $content[$i]['summary'] = SYND_truncateSummary(
+                                    $content[$i]['text'], $A['content_length'] );
                     }
                 }
             }
@@ -647,12 +493,32 @@
             $feed->system = 'GeekLog';
 
             /* Gather any other stuff */
-            $feed->namespaces = PLG_getFeedNSExtensions($A['type'], $format[0], $format[1]);
+            $feed->namespaces = PLG_getFeedNSExtensions($A['type'], $format[0], $format[1], $A['topic'], $fid);
+            /* If the feed is RSS, and trackback is enabled */
             if( $_CONF['trackback_enabled'] && ($format[0] == 'RSS') )
             {
-                $feed->namespaces[] = 'xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"';
+                /* Check to see if an article has trackbacks enabled, and if
+                 * at least one does, then include the trackback namespace:
+                 */
+                $trackbackenabled = false;
+                foreach($content as $item)
+                {
+                    if( array_key_exists('extensions', $item) &&
+                        array_key_exists('trackbacktag', $item['extensions'])
+                        )
+                    {
+                        // Found at least one article, with a trackbacktag
+                        // in it's extensions tag.
+                        $trackbackenabled = true;
+                        break;
+                    }
+                }
+                if( $trackbackenabled )
+                {
+                    $feed->namespaces[] = 'xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"';
+                }
             }
-            $feed->extensions = PLG_getFeedExtensionTags($A['type'], $format[0], $format[1]);
+            $feed->extensions = PLG_getFeedExtensionTags($A['type'], $format[0], $format[1], $A['topic'], $fid);
             $feed->articles = $content;
 
             if( !empty( $A['filename'] ))
@@ -709,7 +575,7 @@
         $text = stripslashes( $text );
         $text = trim( $text );
         $text = preg_replace( "/(\015)/", "", $text );
-        if(( $length > 3 ) && ( strlen( $text ) > $length ))
+        if(( $length > 3 ) && ( MBYTE_strlen( $text ) > $length ))
         {
             $text = substr( $text, 0, $length - 3 ) . '...';
         }
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/lib-trackback.php 1.4.1.src/cpanel-glprivate/system/lib-trackback.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/lib-trackback.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/lib-trackback.php	2006-10-24 02:50:17.000000000 -0500
@@ -28,8 +28,8 @@
 // | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
 // |                                                                           |
 // +---------------------------------------------------------------------------+
-// 
-// $Id: lib-trackback.php,v 1.23.2.3 2006/07/23 07:35:33 dhaun Exp $
+//
+// $Id: lib-trackback.php,v 1.45 2006/10/24 07:50:17 ospiess Exp $
 
 if (strpos ($_SERVER['PHP_SELF'], 'lib-trackback.php') !== false) {
     die ('This file can not be used on its own!');
@@ -275,8 +275,8 @@
     $excerpt = TRB_filterExcerpt ($excerpt);
 
     // MT does that, so follow its example ...
-    if (strlen ($excerpt) > 255) {
-        $excerpt = substr ($excerpt, 0, 252) . '...';
+    if (MBYTE_strlen ($excerpt) > 255) {
+        $excerpt = MBYTE_substr ($excerpt, 0, 252) . '...';
     }
 
     $title   = str_replace (array ('$',     '{',      '}'),
@@ -403,7 +403,8 @@
     if ($delete_option) {
         $deloption .= '[ ';
         $deloption .= '<a href="' . $_CONF['site_admin_url']
-                   . '/trackback.php?mode=delete&amp;cid=' . $cid . '">'
+                   . '/trackback.php?mode=delete&amp;cid=' . $cid
+                   . '" onclick="return confirm(\'' . $MESSAGE[76] . '\');">'
                    . $LANG01[28] . '</a>';
         if (!empty ($ipaddress)) {
             if (empty ($_CONF['ip_lookup'])) {
@@ -423,6 +424,46 @@
 }
 
 /**
+* Perform a backlink check on an HTML page
+*
+* @param    string  $body       complete HTML page to check
+* @param    string  $urlToCheck URL to find in that page
+* @return   boolean             true: found a link to us; false: no link to us
+*
+*/
+function TRB_containsBacklink ($body, $urlToCheck)
+{
+    global $_CONF;
+
+    if (($_CONF['check_trackback_link'] & 3) == 0) {
+        // we shouldn't be here - don't do anything
+        return true;
+    }
+
+    $retval = false;
+
+    preg_match_all ("/<a[^>]*href=[\"']([^\"']*)[\"'][^>]*>/i",
+                    $body, $matches);
+    for ($i = 0; $i < count ($matches[0]); $i++) {
+        if ($_CONF['check_trackback_link'] & 1) {
+            if (strpos ($matches[1][$i], $urlToCheck) === 0) {
+                // found it!
+                $retval = true;
+                break;
+            }
+        } else {
+            if ($matches[1][$i] == $urlToCheck) {
+                // found it!
+                $retval = true;
+                break;
+            }
+        }
+    }
+
+    return $retval;
+}
+
+/**
 * Check if a given web page links to us
 *
 * @param    string  $sid        ID of entry that got pinged
@@ -435,8 +476,11 @@
 {
     global $_CONF;
 
-    if (!isset ($_CONF['check_trackback_link']) ||
-            ($_CONF['check_trackback_link'] == 0)) {
+    if (!isset ($_CONF['check_trackback_link'])) {
+        $_CONF['check_trackback_link'] = 2;
+    }
+
+    if (($_CONF['check_trackback_link'] & 3) == 0) {
         // we shouldn't be here - don't do anything
         return true;
     }
@@ -445,7 +489,7 @@
 
     $retval = false;
 
-    if ($_CONF['check_trackback_link'] == 2) {
+    if ($_CONF['check_trackback_link'] & 2) {
         // build the URL of the pinged page on our site
         if ($type == 'article') {
             $urlToCheck = COM_buildUrl ($_CONF['site_url']
@@ -460,30 +504,14 @@
 
     $req = new HTTP_Request ($urlToGet);
     $req->addHeader ('User-Agent', 'GeekLog/' . VERSION);
-    if (PEAR::isError ($req->sendRequest ())) {
-        COM_errorLog ("Trackback verification: " . $req->getMessage()
+    $response = $req->sendRequest ();
+    if (PEAR::isError ($response)) {
+        COM_errorLog ("Trackback verification: " . $response->getMessage()
                       . " when requesting $urlToGet");
     } else {
         if ($req->getResponseCode () == 200) {
             $body = $req->getResponseBody ();
-
-            preg_match_all ("/<a[^>]*href=[\"']([^\"']*)[\"'][^>]*>/i",
-                            $body, $matches);
-            for ($i = 0; $i < count ($matches[0]); $i++) {
-                if ($_CONF['check_trackback_link'] == 1) {
-                    if (strpos ($matches[1][$i], $urlToCheck) === 0) {
-                        // found it!
-                        $retval = true;
-                        break;
-                    }
-                } else {
-                    if ($matches[1][$i] == $urlToCheck) {
-                        // found it!
-                        $retval = true;
-                        break;
-                    }
-                }
-            }
+            $retval = TRB_containsBacklink ($body, $urlToCheck);
         } else {
             COM_errorLog ("Trackback verification: Got HTTP response code "
                           . $req->getResponseCode ()
@@ -568,11 +596,37 @@
             return false;
         }
 
-        if (isset ($_CONF['check_trackback_link']) &&
-                ($_CONF['check_trackback_link'] > 0)) {
+        if (!isset ($_CONF['check_trackback_link'])) {
+            $_CONF['check_trackback_link'] = 2;
+        }
+
+        if ($_CONF['check_trackback_link'] & 4) {
+            $parts = parse_url ($_POST['url']);
+            if (empty ($parts['host'])) {
+                TRB_sendTrackbackResponse (1, $TRB_ERROR['no_url'],
+                                           403, 'Forbidden');
+                TRB_logRejected ('No valid URL', $_POST['url']);
+
+                return false;
+            } else {
+                $ip = gethostbyname ($parts['host']);
+                if ($ip != $_SERVER['REMOTE_ADDR']) {
+                    TRB_sendTrackbackResponse (1, $TRB_ERROR['spam'],
+                                               403, 'Forbidden');
+                    TRB_logRejected ('IP address mismatch', $_POST['url']);
+
+                    return false;
+                }
+            }
+        }
+
+        if ($_CONF['check_trackback_link'] & 3) {
             if (!TRB_linksToUs ($sid, $type, $_POST['url'])) {
                 TRB_sendTrackbackResponse (1, $TRB_ERROR['no_link'],
                                            403, 'Forbidden');
+                $comment = TRB_formatComment ($_POST['url'], $_POST['title'],
+                                $_POST['blog_name'], $_POST['excerpt']);
+                PLG_spamAction ($comment, $_CONF['spamx']);
                 TRB_logRejected ('No link to us', $_POST['url']);
 
                 return false;
@@ -639,7 +693,8 @@
     $template->set_var ('permalink_and_title', $link_and_title);
     $template->set_var ('trackback_url', $trackback_url);
 
-    $result = DB_query ("SELECT cid,url,title,blog,excerpt,ipaddress,UNIX_TIMESTAMP(date) AS day FROM {$_TABLES['trackback']} WHERE sid = '$sid' AND type = '$type' ORDER BY date");
+    $result = DB_query ("SELECT cid,url,title,blog,excerpt,ipaddress,UNIX_TIMESTAMP(date) AS day "
+        . "FROM {$_TABLES['trackback']} WHERE sid = '$sid' AND type = '$type' ORDER BY date");
     $numrows = DB_numRows ($result);
 
     $template->set_var ('trackback_comment_count', $numrows);
@@ -729,7 +784,7 @@
     fputs ($sock, 'Host: ' . $target['host'] . "\r\n");
     fputs ($sock, 'Content-type: application/x-www-form-urlencoded; charset='
                   . $charset . "\r\n");
-    fputs ($sock, 'Content-length: ' . strlen ($toSend) . "\r\n");
+    fputs ($sock, 'Content-length: ' . MBYTE_strlen ($toSend) . "\r\n");
     fputs ($sock, 'User-Agent: GeekLog/' . VERSION . "\r\n");
     fputs ($sock, "Connection: close\r\n\r\n");
     fputs ($sock, $toSend);
@@ -884,6 +939,7 @@
         $mailsubject = $_CONF['site_name'] . ' ' . $LANG_TRB['pingback'];
     } else {
         $mailsubject = $_CONF['site_name'] . ' ' . $LANG_TRB['trackback'];
+        $mailbody .= "\n" . $LANG_TRB['delete_trackback'] . "<" . $_CONF['site_admin_url'] . '/trackback.php?mode=delete&cid=' . $cid . ">\n";
     }
 
     COM_mail ($_CONF['site_mail'], $mailsubject, $mailbody);
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/lib-user.php 1.4.1.src/cpanel-glprivate/system/lib-user.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/lib-user.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/lib-user.php	2006-09-18 05:04:42.000000000 -0500
@@ -8,12 +8,12 @@
 // |                                                                           |
 // | User-related functions needed in more than one place.                     |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
-// | Authors: Tony Bibbs        - tony@tonybibbs.com                           |
-// |          Mark Limburg      - mlimburg@users.sourceforge.net               |
-// |          Jason Whittenburg - jwhitten@securitygeeks.com                   |
-// |          Dirk Haun         - dirk@haun-online.de                          |
+// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
+// |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
+// |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
+// |          Dirk Haun         - dirk AT haun-online DOT de                   |
 // +---------------------------------------------------------------------------+
 // |                                                                           |
 // | This program is free software; you can redistribute it and/or             |
@@ -32,19 +32,12 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: lib-user.php,v 1.23.2.1 2006/06/30 12:20:48 dhaun Exp $
+// $Id: lib-user.php,v 1.34 2006/09/18 10:04:42 dhaun Exp $
 
 if (strpos ($_SERVER['PHP_SELF'], 'lib-user.php') !== false) {
     die ('This file can not be used on its own!');
 }
 
-/* Constants for acount stats */
-define('USER_ACCOUNT_DISABLED', 0); // Account is banned/disabled
-define('USER_ACCOUNT_AWAITING_ACTIVATION', 1); // Account awaiting user to login.
-define('USER_ACCOUNT_AWAITING_APPROVAL', 2); // Account awaiting moderator approval
-define('USER_ACCOUNT_ACTIVE', 3); // active account
-
-
 /**
 * Delete a user account
 *
@@ -94,8 +87,8 @@
     PLG_deleteUser ($uid);
 
     // Call custom account profile delete function if enabled and exists
-    if ($_CONF['custom_registration'] && function_exists (custom_userdelete)) {
-        custom_userdelete ($uid);
+    if ($_CONF['custom_registration'] && function_exists ('CUSTOM_userDelete')) {
+        CUSTOM_userDelete ($uid);
     }
 
     // remove from all security groups
@@ -111,26 +104,14 @@
     DB_query ("UPDATE {$_TABLES['comments']} SET uid = 1 WHERE uid = $uid");
     DB_query ("UPDATE {$_TABLES['stories']} SET uid = 1 WHERE uid = $uid");
     DB_query ("UPDATE {$_TABLES['stories']} SET owner_id = 1 WHERE owner_id = $uid");
-
-    // same for events
-    DB_query ("UPDATE {$_TABLES['events']} SET owner_id = 1 WHERE owner_id = $uid");
-
-    // delete personal events
-    DB_delete ($_TABLES['personal_events'], 'owner_id', $uid);
-
+ 
     // delete story submissions
     DB_delete ($_TABLES['storysubmission'], 'uid', $uid);
 
     // delete user photo, if enabled & exists
     if ($_CONF['allow_user_photo'] == 1) {
         $photo = DB_getItem ($_TABLES['users'], 'photo', "uid = $uid");
-        if (!empty ($photo)) {
-            $filetodelete = $_CONF['path_images'] . 'userphotos/' . $photo;
-            if (!@unlink ($filetodelete)) {
-                // just log the problem, but don't abort
-                COM_errorLog ("Unable to remove file $filetodelete.", 1);
-            }
-        }
+        USER_deletePhoto ($photo, false);
     }
 
     // in case the user owned any objects that require Admin access, assign
@@ -182,6 +163,7 @@
         $template->set_var ('lang_password', $LANG04[4]);
         $template->set_var ('username', $username);
         $template->set_var ('password', $passwd);
+        $template->set_var ('name', COM_getDisplayName ($uid));
         $template->parse ('output', 'mail');
         $mailtext = $template->get_var ('output');
     } else {
@@ -251,6 +233,7 @@
 {
     global $_CONF, $_TABLES;
 
+    $queueUser = false;
     $username = addslashes ($username);
     $email = addslashes ($email);
 
@@ -273,10 +256,17 @@
         $fields .= ',homepage';
         $values .= ",'$homepage'";
     }
-    if ($_CONF['usersubmission'] == 1)
-    {
-        $fields .= ',status';
-        $values .= ','.USER_ACCOUNT_AWAITING_APPROVAL;
+    if (($_CONF['usersubmission'] == 1) && !SEC_hasRights ('user.edit')) {
+        $queueUser = true;
+        if (!empty ($_CONF['allow_domains'])) {
+            if (USER_emailMatches ($email, $_CONF['allow_domains'])) {
+                $queueUser = false;
+            }
+        }
+        if ($queueUser) {
+            $fields .= ',status';
+            $values .= ',' . USER_ACCOUNT_AWAITING_APPROVAL;
+        }
     } else {
         if (!empty($remoteusername)) {
             $fields .= ',remoteusername';
@@ -307,7 +297,7 @@
 
     DB_query ("INSERT INTO {$_TABLES['userprefs']} (uid) VALUES ($uid)");
     if ($_CONF['emailstoriesperdefault'] == 1) {
-        DB_query ("INSERT INTO {$_TABLES['userindex']} (uid) VALUES ($uid)");
+        DB_query ("INSERT INTO {$_TABLES['userindex']} (uid,etids) VALUES ($uid,'')");
     } else {
         DB_query ("INSERT INTO {$_TABLES['userindex']} (uid,etids) VALUES ($uid, '-')");
     }
@@ -316,16 +306,15 @@
     DB_query ("INSERT INTO {$_TABLES['userinfo']} (uid) VALUES ($uid)");
 
     // call custom registration function and plugins
-    if ($_CONF['custom_registration'] && (function_exists ('custom_usercreate'))) {
-        custom_usercreate ($uid);
+    if ($_CONF['custom_registration'] && (function_exists ('CUSTOM_userCreate'))) {
+        CUSTOM_userCreate ($uid);
     }
     PLG_createUser ($uid);
 
     // Notify the admin?
     if (isset ($_CONF['notification']) &&
         in_array ('user', $_CONF['notification'])) {
-        if ($_CONF['usersubmission'] == 1)
-        {
+        if ($queueUser) {
             $mode = 'inactive';
         } else {
             $mode = 'active';
@@ -384,7 +373,8 @@
 {
     global $_CONF, $_TABLES, $_USER;
 
-    $photo = '';
+    $userphoto = '';
+
     if ($_CONF['allow_user_photo'] == 1) {
 
         if (($width == 0) && !empty ($_CONF['force_photo_width'])) {
@@ -397,14 +387,16 @@
             if (empty ($email)) {
                 $email = $_USER['email'];
             }
-            if (empty ($photo)) {
+            if (!empty ($_USER['photo']) &&
+                    (empty ($photo) || ($photo == '(none)'))) {
                 $photo = $_USER['photo'];
             }
         }
-        if (empty ($photo) || empty ($email)) {
+        if ((empty ($photo) || ($photo == '(none)')) ||
+                (empty ($email) && $_CONF['use_gravatar'])) {
             $result = DB_query ("SELECT email,photo FROM {$_TABLES['users']} WHERE uid = '$uid'");
             list($newemail, $newphoto) = DB_fetchArray ($result);
-            if (empty ($photo)) {
+            if (empty ($photo) || ($photo == '(none)')) {
                 $photo = $newphoto;
             }
             if (empty ($email)) {
@@ -413,7 +405,7 @@
         }
 
         $img = '';
-        if (empty ($photo)) {
+        if (empty ($photo) || ($photo == 'none')) {
             // no photo - try gravatar.com, if allowed
             if ($_CONF['use_gravatar']) {
                 $img = 'http://www.gravatar.com/avatar.php?gravatar_id='
@@ -446,15 +438,48 @@
             $img = $_CONF['default_photo'];
         }
         if (!empty ($img)) {
-            $photo = '<img src="' . $img . '"';
+            $userphoto = '<img src="' . $img . '"';
             if ($width > 0) {
-                $photo .= ' width="' . $width . '"';
+                $userphoto .= ' width="' . $width . '"';
             }
-            $photo .= ' alt="" class="userphoto">';
+            $userphoto .= ' alt="" class="userphoto">';
         }
     }
 
-    return $photo;
+    return $userphoto;
+}
+
+/**
+* Delete a user's photo (i.e. the actual file)
+*
+* @param    string  $photo          name of the photo (without the path)
+* @param    bool    $abortonerror   true: abort script on error, false: don't
+* @return   void
+*
+* @note     Will silently ignore non-existing files.
+*
+*/
+function USER_deletePhoto ($photo, $abortonerror = true)
+{
+    global $_CONF, $LANG04;
+
+    if (!empty ($photo)) {
+        $filetodelete = $_CONF['path_images'] . 'userphotos/' . $photo;
+        if (file_exists ($filetodelete)) {
+            if (!@unlink ($filetodelete)) {
+                if ($abortonerror) {
+                    $display = COM_siteHeader ('menu', $LANG04[21])
+                             . COM_errorLog ("Unable to remove file $photo")
+                             . COM_siteFooter ();
+                    echo $display;
+                    exit;
+                } else {
+                    // just log the problem, but don't abort
+                    COM_errorLog ("Unable to remove file $photo");
+                }
+            }
+        }
+    }
 }
 
 /**
@@ -526,4 +551,37 @@
         return false;
     }
 }
+
+/**
+* Check email address against a list of domains
+*
+* Checks if the given email's domain part matches one of the entries in a
+* comma-separated list of domain names (regular expressions are allowed).
+*
+* @param    string  $email          email address to check
+* @param    string  $domain_list    list of domain names
+* @return   boolean                 true if match found, otherwise false
+*
+*/
+function USER_emailMatches ($email, $domain_list)
+{
+    $match_found = false;
+
+    if (!empty ($domain_list)) {
+        $domains = explode (',', $domain_list);
+
+        // Note: We should already have made sure that $email is a valid address
+        $email_domain = substr ($email, strpos ($email, '@') + 1);
+
+        foreach ($domains as $domain) {
+            if (preg_match ("#$domain#i", $email_domain)) {
+                $match_found = true;
+                break;
+            }
+        }
+    }
+
+    return $match_found;
+}
+
 ?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/memberdetail.thtml 1.4.1.src/cpanel-glprivate/system/memberdetail.thtml
--- 1.4.0sr5-1.src/cpanel-glprivate/system/memberdetail.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/memberdetail.thtml	2006-06-15 04:14:57.000000000 -0500
@@ -2,28 +2,29 @@
 <!-- To be located under theme/custom directory - Example XSilver/custom/memberdetail.thtml -->
 {startblock}
 {message}
-<form action="{post_url}" method="post">
+<form action="{post_url}" method="POST">
     <table border="0" cellspacing="0" cellpadding="2" width="100%">
         <tr>
-            <td align="right" style="text-align:left;vertical-align:middle;padding-left:10px;"><font color='#000000'><b>{USERNAME}</b></font><br><font color=#676767 size=1>{USERNAME_HELP}</font></td>
-            <td align=left valign=middle><input type="text" name="username" size="25" maxlength="16" value="{username}"></td> 
-            <td><img src='/images/speck.gif' width=30 height=1></td>
+            <td align="right" style="text-align:left;vertical-align:middle;padding-left:10px;"><b>{USERNAME}</b><br><small style="color:#676767">{USERNAME_HELP}</small></td>
+            <td align="left" valign="middle"><input type="text" name="username" size="16" maxlength="16" value="{username}"></td>
         </tr>
-        {passwd_input} 
-        <tr> 
-            <td align="right" style="text-align:left;vertical-align:middle;padding-left:10px;"><font color='#000000'><b>{EMAIL}</b></font><br><font color=#676767 size=1>{EMAIL_HELP}</font></td> 
-            <td align=left valign=middle><input type="text" name="email" size="25" maxlength="100" value="{email}"></td> 
-                <td><img src='/images/speck.gif' width=30 height=1></td>
-        </tr> 
+        {passwd_input}
         <tr>
-            <td align="right" style="text-align:left;vertical-align:middle;padding-left:10px;"><font color='#000000'><b>{FULLNAME}</b></font><br><font color=#676767 size=1>{FULLNAME_HELP}</font></td>
-            <td align=left valign=middle><input type="text" name="fullname" size="25" maxlength="40" value="{fullname}"></td> 
-            <td><img src='/images/speck.gif' width=30 height=1></td>
-           </tr> 
-        <tr> 
-            <td align="center" colspan="3"><input type="hidden" name="uid" value="{user_id}"><HR><BR>
-            <input type="hidden" name="mode" value="{postmode}">{submitbutton}</td> 
-        </tr> 
+            <td align="right" style="text-align:left;vertical-align:middle;padding-left:10px;"><b>{FULLNAME}</b><br><small style="color:#676767">{FULLNAME_HELP}</small></td>
+            <td align="left" valign="middle"><input type="text" name="fullname" size="32" maxlength="80" value="{fullname}"></td>
+        </tr>
+        <tr>
+            <td align="right" style="text-align:left;vertical-align:middle;padding-left:10px;"><b>{EMAIL}</b><br><small style="color:#676767">{EMAIL_HELP}</small></td>
+            <td align="left" valign="middle"><input type="text" name="email" size="32" maxlength="96" value="{email}"></td>
+        </tr>
+        <tr>
+            <td align="right" style="text-align:left;vertical-align:middle;padding-left:10px;"><b>{EMAIL_CONF}</b><br><small style="color:#676767">{EMAIL_CONF_HELP}</small></td>
+            <td align="left" valign="middle"><input type="text" name="email_conf" size="32" maxlength="96" value="{email_conf}"></td>
+        </tr>
+        <tr>
+            <td align="center" colspan="3"><input type="hidden" name="uid" value="{user_id}"><hr><br>
+            <input type="hidden" name="mode" value="{postmode}">{submitbutton}</td>
+        </tr>
     </table>
 </form>
-{endblock}
\ No newline at end of file
+{endblock}
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/HTTP/Request/Listener.php 1.4.1.src/cpanel-glprivate/system/pear/HTTP/Request/Listener.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/HTTP/Request/Listener.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/HTTP/Request/Listener.php	2006-12-31 03:43:35.000000000 -0600
@@ -1,96 +1,96 @@
-<?php
-// +-----------------------------------------------------------------------+
-// | Copyright (c) 2002-2003, Richard Heyes                                |
-// | All rights reserved.                                                  |
-// |                                                                       |
-// | Redistribution and use in source and binary forms, with or without    |
-// | modification, are permitted provided that the following conditions    |
-// | are met:                                                              |
-// |                                                                       |
-// | o Redistributions of source code must retain the above copyright      |
-// |   notice, this list of conditions and the following disclaimer.       |
-// | o Redistributions in binary form must reproduce the above copyright   |
-// |   notice, this list of conditions and the following disclaimer in the |
-// |   documentation and/or other materials provided with the distribution.|
-// | o The names of the authors may not be used to endorse or promote      |
-// |   products derived from this software without specific prior written  |
-// |   permission.                                                         |
-// |                                                                       |
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |
-// |                                                                       |
-// +-----------------------------------------------------------------------+
-// | Author: Alexey Borzov <avb@php.net>                                  |
-// +-----------------------------------------------------------------------+
-//
-// $Id: Listener.php,v 1.2 2003/10/26 10:28:29 avb Exp $
-//
-
-/**
- * This class implements the Observer part of a Subject-Observer
- * design pattern. It listens to the events sent by a 
- * HTTP_Request or HTTP_Response instance.
- *
- * @package HTTP_Request
- * @author  Alexey Borzov <avb@php.net>
- * @version $Revision: 1.2 $
- */
-class HTTP_Request_Listener 
-{
-   /**
-    * A listener's identifier
-    * @var string
-    */
-    var $_id;
-
-   /**
-    * Constructor, sets the object's identifier
-    *
-    * @access public
-    */
-    function HTTP_Request_Listener()
-    {
-        $this->_id = md5(uniqid('http_request_', 1));
-    }
-
-
-   /**
-    * Returns the listener's identifier
-    *
-    * @access public
-    * @return string
-    */
-    function getId()
-    {
-        return $this->_id;
-    }
-
-
-   /**
-    * This method is called when Listener is notified of an event
-    *
-    * @access   public
-    * @param    object  an object the listener is attached to
-    * @param    string  Event name
-    * @param    mixed   Additional data
-    * @abstract
-    */
-    function update(&$subject, $event, $data = null)
-    {
-        echo "Notified of event: '$event'\n";
-        if (null !== $data) {
-            echo "Additional data: ";
-            var_dump($data);
-        }
-    }
-}
-?>
+<?php
+// +-----------------------------------------------------------------------+
+// | Copyright (c) 2002-2003, Richard Heyes                                |
+// | All rights reserved.                                                  |
+// |                                                                       |
+// | Redistribution and use in source and binary forms, with or without    |
+// | modification, are permitted provided that the following conditions    |
+// | are met:                                                              |
+// |                                                                       |
+// | o Redistributions of source code must retain the above copyright      |
+// |   notice, this list of conditions and the following disclaimer.       |
+// | o Redistributions in binary form must reproduce the above copyright   |
+// |   notice, this list of conditions and the following disclaimer in the |
+// |   documentation and/or other materials provided with the distribution.|
+// | o The names of the authors may not be used to endorse or promote      |
+// |   products derived from this software without specific prior written  |
+// |   permission.                                                         |
+// |                                                                       |
+// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |
+// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |
+// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
+// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |
+// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
+// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |
+// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
+// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |
+// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
+// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |
+// |                                                                       |
+// +-----------------------------------------------------------------------+
+// | Author: Alexey Borzov <avb@php.net>                                  |
+// +-----------------------------------------------------------------------+
+//
+// $Id: Listener.php,v 1.2 2003/10/26 10:28:29 avb Exp $
+//
+
+/**
+ * This class implements the Observer part of a Subject-Observer
+ * design pattern. It listens to the events sent by a 
+ * HTTP_Request or HTTP_Response instance.
+ *
+ * @package HTTP_Request
+ * @author  Alexey Borzov <avb@php.net>
+ * @version $Revision: 1.2 $
+ */
+class HTTP_Request_Listener 
+{
+   /**
+    * A listener's identifier
+    * @var string
+    */
+    var $_id;
+
+   /**
+    * Constructor, sets the object's identifier
+    *
+    * @access public
+    */
+    function HTTP_Request_Listener()
+    {
+        $this->_id = md5(uniqid('http_request_', 1));
+    }
+
+
+   /**
+    * Returns the listener's identifier
+    *
+    * @access public
+    * @return string
+    */
+    function getId()
+    {
+        return $this->_id;
+    }
+
+
+   /**
+    * This method is called when Listener is notified of an event
+    *
+    * @access   public
+    * @param    object  an object the listener is attached to
+    * @param    string  Event name
+    * @param    mixed   Additional data
+    * @abstract
+    */
+    function update(&$subject, $event, $data = null)
+    {
+        echo "Notified of event: '$event'\n";
+        if (null !== $data) {
+            echo "Additional data: ";
+            var_dump($data);
+        }
+    }
+}
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/HTTP/Request.php 1.4.1.src/cpanel-glprivate/system/pear/HTTP/Request.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/HTTP/Request.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/HTTP/Request.php	2006-12-31 03:43:35.000000000 -0600
@@ -1,1191 +1,1396 @@
-<?php
-// +-----------------------------------------------------------------------+
-// | Copyright (c) 2002-2003, Richard Heyes                                |
-// | All rights reserved.                                                  |
-// |                                                                       |
-// | Redistribution and use in source and binary forms, with or without    |
-// | modification, are permitted provided that the following conditions    |
-// | are met:                                                              |
-// |                                                                       |
-// | o Redistributions of source code must retain the above copyright      |
-// |   notice, this list of conditions and the following disclaimer.       |
-// | o Redistributions in binary form must reproduce the above copyright   |
-// |   notice, this list of conditions and the following disclaimer in the |
-// |   documentation and/or other materials provided with the distribution.|
-// | o The names of the authors may not be used to endorse or promote      |
-// |   products derived from this software without specific prior written  |
-// |   permission.                                                         |
-// |                                                                       |
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |
-// |                                                                       |
-// +-----------------------------------------------------------------------+
-// | Author: Richard Heyes <richard@phpguru.org>                           |
-// +-----------------------------------------------------------------------+
-//
-// $Id: Request.php,v 1.43 2005/11/06 18:29:14 avb Exp $
-//
-// HTTP_Request Class
-//
-// Simple example, (Fetches yahoo.com and displays it):
-//
-// $a = &new HTTP_Request('http://www.yahoo.com/');
-// $a->sendRequest();
-// echo $a->getResponseBody();
-//
-
-require_once 'PEAR.php';
-require_once 'Net/Socket.php';
-require_once 'Net/URL.php';
-
-define('HTTP_REQUEST_METHOD_GET',     'GET',     true);
-define('HTTP_REQUEST_METHOD_HEAD',    'HEAD',    true);
-define('HTTP_REQUEST_METHOD_POST',    'POST',    true);
-define('HTTP_REQUEST_METHOD_PUT',     'PUT',     true);
-define('HTTP_REQUEST_METHOD_DELETE',  'DELETE',  true);
-define('HTTP_REQUEST_METHOD_OPTIONS', 'OPTIONS', true);
-define('HTTP_REQUEST_METHOD_TRACE',   'TRACE',   true);
-
-define('HTTP_REQUEST_HTTP_VER_1_0', '1.0', true);
-define('HTTP_REQUEST_HTTP_VER_1_1', '1.1', true);
-
-class HTTP_Request {
-
-    /**
-    * Instance of Net_URL
-    * @var object Net_URL
-    */
-    var $_url;
-
-    /**
-    * Type of request
-    * @var string
-    */
-    var $_method;
-
-    /**
-    * HTTP Version
-    * @var string
-    */
-    var $_http;
-
-    /**
-    * Request headers
-    * @var array
-    */
-    var $_requestHeaders;
-
-    /**
-    * Basic Auth Username
-    * @var string
-    */
-    var $_user;
-    
-    /**
-    * Basic Auth Password
-    * @var string
-    */
-    var $_pass;
-
-    /**
-    * Socket object
-    * @var object Net_Socket
-    */
-    var $_sock;
-    
-    /**
-    * Proxy server
-    * @var string
-    */
-    var $_proxy_host;
-    
-    /**
-    * Proxy port
-    * @var integer
-    */
-    var $_proxy_port;
-    
-    /**
-    * Proxy username
-    * @var string
-    */
-    var $_proxy_user;
-    
-    /**
-    * Proxy password
-    * @var string
-    */
-    var $_proxy_pass;
-
-    /**
-    * Post data
-    * @var array
-    */
-    var $_postData;
-
-   /**
-    * Request body  
-    * @var string
-    */
-    var $_body;
-
-   /**
-    * A list of methods that MUST NOT have a request body, per RFC 2616
-    * @var array
-    */
-    var $_bodyDisallowed = array('TRACE');
-
-   /**
-    * Files to post 
-    * @var array
-    */
-    var $_postFiles = array();
-
-    /**
-    * Connection timeout.
-    * @var float
-    */
-    var $_timeout;
-    
-    /**
-    * HTTP_Response object
-    * @var object HTTP_Response
-    */
-    var $_response;
-    
-    /**
-    * Whether to allow redirects
-    * @var boolean
-    */
-    var $_allowRedirects;
-    
-    /**
-    * Maximum redirects allowed
-    * @var integer
-    */
-    var $_maxRedirects;
-    
-    /**
-    * Current number of redirects
-    * @var integer
-    */
-    var $_redirects;
-
-   /**
-    * Whether to append brackets [] to array variables
-    * @var bool
-    */
-    var $_useBrackets = true;
-
-   /**
-    * Attached listeners
-    * @var array
-    */
-    var $_listeners = array();
-
-   /**
-    * Whether to save response body in response object property  
-    * @var bool
-    */
-    var $_saveBody = true;
-
-   /**
-    * Timeout for reading from socket (array(seconds, microseconds))
-    * @var array
-    */
-    var $_readTimeout = null;
-
-   /**
-    * Options to pass to Net_Socket::connect. See stream_context_create
-    * @var array
-    */
-    var $_socketOptions = null;
-
-    /**
-    * Constructor
-    *
-    * Sets up the object
-    * @param    string  The url to fetch/access
-    * @param    array   Associative array of parameters which can have the following keys:
-    * <ul>
-    *   <li>method         - Method to use, GET, POST etc (string)</li>
-    *   <li>http           - HTTP Version to use, 1.0 or 1.1 (string)</li>
-    *   <li>user           - Basic Auth username (string)</li>
-    *   <li>pass           - Basic Auth password (string)</li>
-    *   <li>proxy_host     - Proxy server host (string)</li>
-    *   <li>proxy_port     - Proxy server port (integer)</li>
-    *   <li>proxy_user     - Proxy auth username (string)</li>
-    *   <li>proxy_pass     - Proxy auth password (string)</li>
-    *   <li>timeout        - Connection timeout in seconds (float)</li>
-    *   <li>allowRedirects - Whether to follow redirects or not (bool)</li>
-    *   <li>maxRedirects   - Max number of redirects to follow (integer)</li>
-    *   <li>useBrackets    - Whether to append [] to array variable names (bool)</li>
-    *   <li>saveBody       - Whether to save response body in response object property (bool)</li>
-    *   <li>readTimeout    - Timeout for reading / writing data over the socket (array (seconds, microseconds))</li>
-    *   <li>socketOptions  - Options to pass to Net_Socket object (array)</li>
-    * </ul>
-    * @access public
-    */
-    function HTTP_Request($url = '', $params = array())
-    {
-        $this->_sock           = &new Net_Socket();
-        $this->_method         =  HTTP_REQUEST_METHOD_GET;
-        $this->_http           =  HTTP_REQUEST_HTTP_VER_1_1;
-        $this->_requestHeaders = array();
-        $this->_postData       = array();
-        $this->_body           = null;
-
-        $this->_user = null;
-        $this->_pass = null;
-
-        $this->_proxy_host = null;
-        $this->_proxy_port = null;
-        $this->_proxy_user = null;
-        $this->_proxy_pass = null;
-
-        $this->_allowRedirects = false;
-        $this->_maxRedirects   = 3;
-        $this->_redirects      = 0;
-
-        $this->_timeout  = null;
-        $this->_response = null;
-
-        foreach ($params as $key => $value) {
-            $this->{'_' . $key} = $value;
-        }
-
-        if (!empty($url)) {
-            $this->setURL($url);
-        }
-
-        // Default useragent
-        $this->addHeader('User-Agent', 'PEAR HTTP_Request class ( http://pear.php.net/ )');
-
-        // Make sure keepalives dont knobble us
-        $this->addHeader('Connection', 'close');
-
-        // Basic authentication
-        if (!empty($this->_user)) {
-            $this->addHeader('Authorization', 'Basic ' . base64_encode($this->_user . ':' . $this->_pass));
-        }
-
-        // Use gzip encoding if possible
-        // Avoid gzip encoding if using multibyte functions (see #1781)
-        if (HTTP_REQUEST_HTTP_VER_1_1 == $this->_http && extension_loaded('zlib') &&
-            0 == (2 & ini_get('mbstring.func_overload'))) {
-
-            $this->addHeader('Accept-Encoding', 'gzip');
-        }
-    }
-    
-    /**
-    * Generates a Host header for HTTP/1.1 requests
-    *
-    * @access private
-    * @return string
-    */
-    function _generateHostHeader()
-    {
-        if ($this->_url->port != 80 AND strcasecmp($this->_url->protocol, 'http') == 0) {
-            $host = $this->_url->host . ':' . $this->_url->port;
-
-        } elseif ($this->_url->port != 443 AND strcasecmp($this->_url->protocol, 'https') == 0) {
-            $host = $this->_url->host . ':' . $this->_url->port;
-
-        } elseif ($this->_url->port == 443 AND strcasecmp($this->_url->protocol, 'https') == 0 AND strpos($this->_url->url, ':443') !== false) {
-            $host = $this->_url->host . ':' . $this->_url->port;
-        
-        } else {
-            $host = $this->_url->host;
-        }
-
-        return $host;
-    }
-    
-    /**
-    * Resets the object to its initial state (DEPRECATED).
-    * Takes the same parameters as the constructor.
-    *
-    * @param  string $url    The url to be requested
-    * @param  array  $params Associative array of parameters
-    *                        (see constructor for details)
-    * @access public
-    * @deprecated deprecated since 1.2, call the constructor if this is necessary
-    */
-    function reset($url, $params = array())
-    {
-        $this->HTTP_Request($url, $params);
-    }
-
-    /**
-    * Sets the URL to be requested
-    *
-    * @param  string The url to be requested
-    * @access public
-    */
-    function setURL($url)
-    {
-        $this->_url = &new Net_URL($url, $this->_useBrackets);
-
-        if (!empty($this->_url->user) || !empty($this->_url->pass)) {
-            $this->setBasicAuth($this->_url->user, $this->_url->pass);
-        }
-
-        if (HTTP_REQUEST_HTTP_VER_1_1 == $this->_http) {
-            $this->addHeader('Host', $this->_generateHostHeader());
-        }
-    }
-    
-    /**
-    * Sets a proxy to be used
-    *
-    * @param string     Proxy host
-    * @param int        Proxy port
-    * @param string     Proxy username
-    * @param string     Proxy password
-    * @access public
-    */
-    function setProxy($host, $port = 8080, $user = null, $pass = null)
-    {
-        $this->_proxy_host = $host;
-        $this->_proxy_port = $port;
-        $this->_proxy_user = $user;
-        $this->_proxy_pass = $pass;
-
-        if (!empty($user)) {
-            $this->addHeader('Proxy-Authorization', 'Basic ' . base64_encode($user . ':' . $pass));
-        }
-    }
-
-    /**
-    * Sets basic authentication parameters
-    *
-    * @param string     Username
-    * @param string     Password
-    */
-    function setBasicAuth($user, $pass)
-    {
-        $this->_user = $user;
-        $this->_pass = $pass;
-
-        $this->addHeader('Authorization', 'Basic ' . base64_encode($user . ':' . $pass));
-    }
-
-    /**
-    * Sets the method to be used, GET, POST etc.
-    *
-    * @param string     Method to use. Use the defined constants for this
-    * @access public
-    */
-    function setMethod($method)
-    {
-        $this->_method = $method;
-    }
-
-    /**
-    * Sets the HTTP version to use, 1.0 or 1.1
-    *
-    * @param string     Version to use. Use the defined constants for this
-    * @access public
-    */
-    function setHttpVer($http)
-    {
-        $this->_http = $http;
-    }
-
-    /**
-    * Adds a request header
-    *
-    * @param string     Header name
-    * @param string     Header value
-    * @access public
-    */
-    function addHeader($name, $value)
-    {
-        $this->_requestHeaders[strtolower($name)] = $value;
-    }
-
-    /**
-    * Removes a request header
-    *
-    * @param string     Header name to remove
-    * @access public
-    */
-    function removeHeader($name)
-    {
-        if (isset($this->_requestHeaders[strtolower($name)])) {
-            unset($this->_requestHeaders[strtolower($name)]);
-        }
-    }
-
-    /**
-    * Adds a querystring parameter
-    *
-    * @param string     Querystring parameter name
-    * @param string     Querystring parameter value
-    * @param bool       Whether the value is already urlencoded or not, default = not
-    * @access public
-    */
-    function addQueryString($name, $value, $preencoded = false)
-    {
-        $this->_url->addQueryString($name, $value, $preencoded);
-    }    
-    
-    /**
-    * Sets the querystring to literally what you supply
-    *
-    * @param string     The querystring data. Should be of the format foo=bar&x=y etc
-    * @param bool       Whether data is already urlencoded or not, default = already encoded
-    * @access public
-    */
-    function addRawQueryString($querystring, $preencoded = true)
-    {
-        $this->_url->addRawQueryString($querystring, $preencoded);
-    }
-
-    /**
-    * Adds postdata items
-    *
-    * @param string     Post data name
-    * @param string     Post data value
-    * @param bool       Whether data is already urlencoded or not, default = not
-    * @access public
-    */
-    function addPostData($name, $value, $preencoded = false)
-    {
-        if ($preencoded) {
-            $this->_postData[$name] = $value;
-        } else {
-            $this->_postData[$name] = $this->_arrayMapRecursive('urlencode', $value);
-        }
-    }
-
-   /**
-    * Recursively applies the callback function to the value
-    * 
-    * @param    mixed   Callback function
-    * @param    mixed   Value to process
-    * @access   private
-    * @return   mixed   Processed value
-    */
-    function _arrayMapRecursive($callback, $value)
-    {
-        if (!is_array($value)) {
-            return call_user_func($callback, $value);
-        } else {
-            $map = array();
-            foreach ($value as $k => $v) {
-                $map[$k] = $this->_arrayMapRecursive($callback, $v);
-            }
-            return $map;
-        }
-    }
-
-   /**
-    * Adds a file to upload
-    * 
-    * This also changes content-type to 'multipart/form-data' for proper upload
-    * 
-    * @access public
-    * @param  string    name of file-upload field
-    * @param  mixed     file name(s)
-    * @param  mixed     content-type(s) of file(s) being uploaded
-    * @return bool      true on success
-    * @throws PEAR_Error
-    */
-    function addFile($inputName, $fileName, $contentType = 'application/octet-stream')
-    {
-        if (!is_array($fileName) && !is_readable($fileName)) {
-            return PEAR::raiseError("File '{$fileName}' is not readable");
-        } elseif (is_array($fileName)) {
-            foreach ($fileName as $name) {
-                if (!is_readable($name)) {
-                    return PEAR::raiseError("File '{$name}' is not readable");
-                }
-            }
-        }
-        $this->addHeader('Content-Type', 'multipart/form-data');
-        $this->_postFiles[$inputName] = array(
-            'name' => $fileName,
-            'type' => $contentType
-        );
-        return true;
-    }
-
-    /**
-    * Adds raw postdata (DEPRECATED)
-    *
-    * @param string     The data
-    * @param bool       Whether data is preencoded or not, default = already encoded
-    * @access public
-    * @deprecated       deprecated since 1.3.0, method addBody() should be used instead
-    */
-    function addRawPostData($postdata, $preencoded = true)
-    {
-        $this->_body = $preencoded ? $postdata : urlencode($postdata);
-    }
-
-   /**
-    * Sets the request body (for POST, PUT and similar requests)
-    *
-    * @param    string  Request body
-    * @access   public
-    */
-    function setBody($body)
-    {
-        $this->_body = $body;
-    }
-
-    /**
-    * Clears any postdata that has been added (DEPRECATED). 
-    * 
-    * Useful for multiple request scenarios.
-    *
-    * @access public
-    * @deprecated deprecated since 1.2
-    */
-    function clearPostData()
-    {
-        $this->_postData = null;
-    }
-
-    /**
-    * Appends a cookie to "Cookie:" header
-    * 
-    * @param string $name cookie name
-    * @param string $value cookie value
-    * @access public
-    */
-    function addCookie($name, $value)
-    {
-        $cookies = isset($this->_requestHeaders['cookie']) ? $this->_requestHeaders['cookie']. '; ' : '';
-        $this->addHeader('Cookie', $cookies . $name . '=' . $value);
-    }
-    
-    /**
-    * Clears any cookies that have been added (DEPRECATED). 
-    * 
-    * Useful for multiple request scenarios
-    *
-    * @access public
-    * @deprecated deprecated since 1.2
-    */
-    function clearCookies()
-    {
-        $this->removeHeader('Cookie');
-    }
-
-    /**
-    * Sends the request
-    *
-    * @access public
-    * @param  bool   Whether to store response body in Response object property,
-    *                set this to false if downloading a LARGE file and using a Listener
-    * @return mixed  PEAR error on error, true otherwise
-    */
-    function sendRequest($saveBody = true)
-    {
-        if (!is_a($this->_url, 'Net_URL')) {
-            return PEAR::raiseError('No URL given.');
-        }
-
-        $host = isset($this->_proxy_host) ? $this->_proxy_host : $this->_url->host;
-        $port = isset($this->_proxy_port) ? $this->_proxy_port : $this->_url->port;
-
-        // 4.3.0 supports SSL connections using OpenSSL. The function test determines
-        // we running on at least 4.3.0
-        if (strcasecmp($this->_url->protocol, 'https') == 0 AND function_exists('file_get_contents') AND extension_loaded('openssl')) {
-            if (isset($this->_proxy_host)) {
-                return PEAR::raiseError('HTTPS proxies are not supported.');
-            }
-            $host = 'ssl://' . $host;
-        }
-
-        // magic quotes may fuck up file uploads and chunked response processing
-        $magicQuotes = ini_get('magic_quotes_runtime');
-        ini_set('magic_quotes_runtime', false);
-
-        // If this is a second request, we may get away without
-        // re-connecting if they're on the same server
-        $err = $this->_sock->connect($host, $port, null, $this->_timeout, $this->_socketOptions);
-        PEAR::isError($err) or $err = $this->_sock->write($this->_buildRequest());
-
-        if (!PEAR::isError($err)) {
-            if (!empty($this->_readTimeout)) {
-                $this->_sock->setTimeout($this->_readTimeout[0], $this->_readTimeout[1]);
-            }
-
-            $this->_notify('sentRequest');
-
-            // Read the response
-            $this->_response = &new HTTP_Response($this->_sock, $this->_listeners);
-            $err = $this->_response->process($this->_saveBody && $saveBody);
-        }
-
-        ini_set('magic_quotes_runtime', $magicQuotes);
-
-        if (PEAR::isError($err)) {
-            return $err;
-        }
-
-
-        // Check for redirection
-        if (    $this->_allowRedirects
-            AND $this->_redirects <= $this->_maxRedirects
-            AND $this->getResponseCode() > 300
-            AND $this->getResponseCode() < 399
-            AND !empty($this->_response->_headers['location'])) {
-
-            
-            $redirect = $this->_response->_headers['location'];
-
-            // Absolute URL
-            if (preg_match('/^https?:\/\//i', $redirect)) {
-                $this->_url = &new Net_URL($redirect);
-                $this->addHeader('Host', $this->_generateHostHeader());
-            // Absolute path
-            } elseif ($redirect{0} == '/') {
-                $this->_url->path = $redirect;
-            
-            // Relative path
-            } elseif (substr($redirect, 0, 3) == '../' OR substr($redirect, 0, 2) == './') {
-                if (substr($this->_url->path, -1) == '/') {
-                    $redirect = $this->_url->path . $redirect;
-                } else {
-                    $redirect = dirname($this->_url->path) . '/' . $redirect;
-                }
-                $redirect = Net_URL::resolvePath($redirect);
-                $this->_url->path = $redirect;
-                
-            // Filename, no path
-            } else {
-                if (substr($this->_url->path, -1) == '/') {
-                    $redirect = $this->_url->path . $redirect;
-                } else {
-                    $redirect = dirname($this->_url->path) . '/' . $redirect;
-                }
-                $this->_url->path = $redirect;
-            }
-
-            $this->_redirects++;
-            return $this->sendRequest($saveBody);
-
-        // Too many redirects
-        } elseif ($this->_allowRedirects AND $this->_redirects > $this->_maxRedirects) {
-            return PEAR::raiseError('Too many redirects');
-        }
-
-        $this->_sock->disconnect();
-
-        return true;
-    }
-
-    /**
-    * Returns the response code
-    *
-    * @access public
-    * @return mixed     Response code, false if not set
-    */
-    function getResponseCode()
-    {
-        return isset($this->_response->_code) ? $this->_response->_code : false;
-    }
-
-    /**
-    * Returns either the named header or all if no name given
-    *
-    * @access public
-    * @param string     The header name to return, do not set to get all headers
-    * @return mixed     either the value of $headername (false if header is not present)
-    *                   or an array of all headers
-    */
-    function getResponseHeader($headername = null)
-    {
-        if (!isset($headername)) {
-            return isset($this->_response->_headers)? $this->_response->_headers: array();
-        } else {
-            $headername = strtolower($headername);
-            return isset($this->_response->_headers[$headername]) ? $this->_response->_headers[$headername] : false;
-        }
-    }
-
-    /**
-    * Returns the body of the response
-    *
-    * @access public
-    * @return mixed     response body, false if not set
-    */
-    function getResponseBody()
-    {
-        return isset($this->_response->_body) ? $this->_response->_body : false;
-    }
-
-    /**
-    * Returns cookies set in response
-    * 
-    * @access public
-    * @return mixed     array of response cookies, false if none are present
-    */
-    function getResponseCookies()
-    {
-        return isset($this->_response->_cookies) ? $this->_response->_cookies : false;
-    }
-
-    /**
-    * Builds the request string
-    *
-    * @access private
-    * @return string The request string
-    */
-    function _buildRequest()
-    {
-        $separator = ini_get('arg_separator.output');
-        ini_set('arg_separator.output', '&');
-        $querystring = ($querystring = $this->_url->getQueryString()) ? '?' . $querystring : '';
-        ini_set('arg_separator.output', $separator);
-
-        $host = isset($this->_proxy_host) ? $this->_url->protocol . '://' . $this->_url->host : '';
-        $port = (isset($this->_proxy_host) AND $this->_url->port != 80) ? ':' . $this->_url->port : '';
-        $path = (empty($this->_url->path)? '/': $this->_url->path) . $querystring;
-        $url  = $host . $port . $path;
-
-        $request = $this->_method . ' ' . $url . ' HTTP/' . $this->_http . "\r\n";
-
-        if (in_array($this->_method, $this->_bodyDisallowed) ||
-            (HTTP_REQUEST_METHOD_POST != $this->_method && empty($this->_body)) ||
-            (HTTP_REQUEST_METHOD_POST != $this->_method && empty($this->_postData) && empty($this->_postFiles))) {
-
-            $this->removeHeader('Content-Type');
-        } else {
-            if (empty($this->_requestHeaders['content-type'])) {
-                // Add default content-type
-                $this->addHeader('Content-Type', 'application/x-www-form-urlencoded');
-            } elseif ('multipart/form-data' == $this->_requestHeaders['content-type']) {
-                $boundary = 'HTTP_Request_' . md5(uniqid('request') . microtime());
-                $this->addHeader('Content-Type', 'multipart/form-data; boundary=' . $boundary);
-            }
-        }
-
-        // Request Headers
-        if (!empty($this->_requestHeaders)) {
-            foreach ($this->_requestHeaders as $name => $value) {
-                $canonicalName = implode('-', array_map('ucfirst', explode('-', $name)));
-                $request      .= $canonicalName . ': ' . $value . "\r\n";
-            }
-        }
-
-        // No post data or wrong method, so simply add a final CRLF
-        if (in_array($this->_method, $this->_bodyDisallowed) || 
-            (HTTP_REQUEST_METHOD_POST != $this->_method && empty($this->_body))) {
-
-            $request .= "\r\n";
-
-        // Post data if it's an array
-        } elseif (HTTP_REQUEST_METHOD_POST == $this->_method && 
-                  (!empty($this->_postData) || !empty($this->_postFiles))) {
-
-            // "normal" POST request
-            if (!isset($boundary)) {
-                $postdata = implode('&', array_map(
-                    create_function('$a', 'return $a[0] . \'=\' . $a[1];'), 
-                    $this->_flattenArray('', $this->_postData)
-                ));
-
-            // multipart request, probably with file uploads
-            } else {
-                $postdata = '';
-                if (!empty($this->_postData)) {
-                    $flatData = $this->_flattenArray('', $this->_postData);
-                    foreach ($flatData as $item) {
-                        $postdata .= '--' . $boundary . "\r\n";
-                        $postdata .= 'Content-Disposition: form-data; name="' . $item[0] . '"';
-                        $postdata .= "\r\n\r\n" . urldecode($item[1]) . "\r\n";
-                    }
-                }
-                foreach ($this->_postFiles as $name => $value) {
-                    if (is_array($value['name'])) {
-                        $varname       = $name . ($this->_useBrackets? '[]': '');
-                    } else {
-                        $varname       = $name;
-                        $value['name'] = array($value['name']);
-                    }
-                    foreach ($value['name'] as $key => $filename) {
-                        $fp   = fopen($filename, 'r');
-                        $data = fread($fp, filesize($filename));
-                        fclose($fp);
-                        $basename = basename($filename);
-                        $type     = is_array($value['type'])? @$value['type'][$key]: $value['type'];
-
-                        $postdata .= '--' . $boundary . "\r\n";
-                        $postdata .= 'Content-Disposition: form-data; name="' . $varname . '"; filename="' . $basename . '"';
-                        $postdata .= "\r\nContent-Type: " . $type;
-                        $postdata .= "\r\n\r\n" . $data . "\r\n";
-                    }
-                }
-                $postdata .= '--' . $boundary . "--\r\n";
-            }
-            $request .= 'Content-Length: ' . strlen($postdata) . "\r\n\r\n";
-            $request .= $postdata;
-
-        // Explicitly set request body
-        } elseif (!empty($this->_body)) {
-
-            $request .= 'Content-Length: ' . strlen($this->_body) . "\r\n\r\n";
-            $request .= $this->_body;
-        }
-        
-        return $request;
-    }
-
-   /**
-    * Helper function to change the (probably multidimensional) associative array
-    * into the simple one.
-    *
-    * @param    string  name for item
-    * @param    mixed   item's values
-    * @return   array   array with the following items: array('item name', 'item value');
-    */
-    function _flattenArray($name, $values)
-    {
-        if (!is_array($values)) {
-            return array(array($name, $values));
-        } else {
-            $ret = array();
-            foreach ($values as $k => $v) {
-                if (empty($name)) {
-                    $newName = $k;
-                } elseif ($this->_useBrackets) {
-                    $newName = $name . '[' . $k . ']';
-                } else {
-                    $newName = $name;
-                }
-                $ret = array_merge($ret, $this->_flattenArray($newName, $v));
-            }
-            return $ret;
-        }
-    }
-
-
-   /**
-    * Adds a Listener to the list of listeners that are notified of
-    * the object's events
-    * 
-    * @param    object   HTTP_Request_Listener instance to attach
-    * @return   boolean  whether the listener was successfully attached
-    * @access   public
-    */
-    function attach(&$listener)
-    {
-        if (!is_a($listener, 'HTTP_Request_Listener')) {
-            return false;
-        }
-        $this->_listeners[$listener->getId()] =& $listener;
-        return true;
-    }
-
-
-   /**
-    * Removes a Listener from the list of listeners 
-    * 
-    * @param    object   HTTP_Request_Listener instance to detach
-    * @return   boolean  whether the listener was successfully detached
-    * @access   public
-    */
-    function detach(&$listener)
-    {
-        if (!is_a($listener, 'HTTP_Request_Listener') || 
-            !isset($this->_listeners[$listener->getId()])) {
-            return false;
-        }
-        unset($this->_listeners[$listener->getId()]);
-        return true;
-    }
-
-
-   /**
-    * Notifies all registered listeners of an event.
-    * 
-    * Events sent by HTTP_Request object
-    * 'sentRequest': after the request was sent
-    * Events sent by HTTP_Response object
-    * 'gotHeaders': after receiving response headers (headers are passed in $data)
-    * 'tick': on receiving a part of response body (the part is passed in $data)
-    * 'gzTick': on receiving a gzip-encoded part of response body (ditto)
-    * 'gotBody': after receiving the response body (passes the decoded body in $data if it was gzipped)
-    * 
-    * @param    string  Event name
-    * @param    mixed   Additional data
-    * @access   private
-    */
-    function _notify($event, $data = null)
-    {
-        foreach (array_keys($this->_listeners) as $id) {
-            $this->_listeners[$id]->update($this, $event, $data);
-        }
-    }
-}
-
-
-/**
-* Response class to complement the Request class
-*/
-class HTTP_Response
-{
-    /**
-    * Socket object
-    * @var object
-    */
-    var $_sock;
-
-    /**
-    * Protocol
-    * @var string
-    */
-    var $_protocol;
-    
-    /**
-    * Return code
-    * @var string
-    */
-    var $_code;
-    
-    /**
-    * Response headers
-    * @var array
-    */
-    var $_headers;
-
-    /**
-    * Cookies set in response  
-    * @var array
-    */
-    var $_cookies;
-
-    /**
-    * Response body
-    * @var string
-    */
-    var $_body = '';
-
-   /**
-    * Used by _readChunked(): remaining length of the current chunk
-    * @var string
-    */
-    var $_chunkLength = 0;
-
-   /**
-    * Attached listeners
-    * @var array
-    */
-    var $_listeners = array();
-
-    /**
-    * Constructor
-    *
-    * @param  object Net_Socket     socket to read the response from
-    * @param  array                 listeners attached to request
-    * @return mixed PEAR Error on error, true otherwise
-    */
-    function HTTP_Response(&$sock, &$listeners)
-    {
-        $this->_sock      =& $sock;
-        $this->_listeners =& $listeners;
-    }
-
-
-   /**
-    * Processes a HTTP response
-    * 
-    * This extracts response code, headers, cookies and decodes body if it 
-    * was encoded in some way
-    *
-    * @access public
-    * @param  bool      Whether to store response body in object property, set
-    *                   this to false if downloading a LARGE file and using a Listener.
-    *                   This is assumed to be true if body is gzip-encoded.
-    * @throws PEAR_Error
-    * @return mixed     true on success, PEAR_Error in case of malformed response
-    */
-    function process($saveBody = true)
-    {
-        do {
-            $line = $this->_sock->readLine();
-            if (sscanf($line, 'HTTP/%s %s', $http_version, $returncode) != 2) {
-                return PEAR::raiseError('Malformed response.');
-            } else {
-                $this->_protocol = 'HTTP/' . $http_version;
-                $this->_code     = intval($returncode);
-            }
-            while ('' !== ($header = $this->_sock->readLine())) {
-                $this->_processHeader($header);
-            }
-        } while (100 == $this->_code);
-
-        $this->_notify('gotHeaders', $this->_headers);
-
-        // If response body is present, read it and decode
-        $chunked = isset($this->_headers['transfer-encoding']) && ('chunked' == $this->_headers['transfer-encoding']);
-        $gzipped = isset($this->_headers['content-encoding']) && ('gzip' == $this->_headers['content-encoding']);
-        $hasBody = false;
-        if (!isset($this->_headers['content-length']) || 0 != $this->_headers['content-length']) {
-            while (!$this->_sock->eof()) {
-                if ($chunked) {
-                    $data = $this->_readChunked();
-                } else {
-                    $data = $this->_sock->read(4096);
-                }
-                if ('' == $data) {
-                    break;
-                } else {
-                    $hasBody = true;
-                    if ($saveBody || $gzipped) {
-                        $this->_body .= $data;
-                    }
-                    $this->_notify($gzipped? 'gzTick': 'tick', $data);
-                }
-            }
-        }
-        if ($hasBody) {
-            // Uncompress the body if needed
-            if ($gzipped) {
-                $this->_body = gzinflate(substr($this->_body, 10));
-                $this->_notify('gotBody', $this->_body);
-            } else {
-                $this->_notify('gotBody');
-            }
-        }
-        return true;
-    }
-
-
-   /**
-    * Processes the response header
-    *
-    * @access private
-    * @param  string    HTTP header
-    */
-    function _processHeader($header)
-    {
-        list($headername, $headervalue) = explode(':', $header, 2);
-        $headername  = strtolower($headername);
-        $headervalue = ltrim($headervalue);
-        
-        if ('set-cookie' != $headername) {
-            if (isset($this->_headers[$headername])) {
-                $this->_headers[$headername] .= ',' . $headervalue;
-            } else {
-                $this->_headers[$headername]  = $headervalue;
-            }
-        } else {
-            $this->_parseCookie($headervalue);
-        }
-    }
-
-
-   /**
-    * Parse a Set-Cookie header to fill $_cookies array
-    *
-    * @access private
-    * @param  string    value of Set-Cookie header
-    */
-    function _parseCookie($headervalue)
-    {
-        $cookie = array(
-            'expires' => null,
-            'domain'  => null,
-            'path'    => null,
-            'secure'  => false
-        );
-
-        // Only a name=value pair
-        if (!strpos($headervalue, ';')) {
-            $pos = strpos($headervalue, '=');
-            $cookie['name']  = trim(substr($headervalue, 0, $pos));
-            $cookie['value'] = trim(substr($headervalue, $pos + 1));
-
-        // Some optional parameters are supplied
-        } else {
-            $elements = explode(';', $headervalue);
-            $pos = strpos($elements[0], '=');
-            $cookie['name']  = trim(substr($elements[0], 0, $pos));
-            $cookie['value'] = trim(substr($elements[0], $pos + 1));
-
-            for ($i = 1; $i < count($elements); $i++) {
-                if (false === strpos($elements[$i], '=')) {
-                    $elName  = trim($elements[$i]);
-                    $elValue = null;
-                } else {
-                    list ($elName, $elValue) = array_map('trim', explode('=', $elements[$i]));
-                }
-                $elName = strtolower($elName);
-                if ('secure' == $elName) {
-                    $cookie['secure'] = true;
-                } elseif ('expires' == $elName) {
-                    $cookie['expires'] = str_replace('"', '', $elValue);
-                } elseif ('path' == $elName || 'domain' == $elName) {
-                    $cookie[$elName] = urldecode($elValue);
-                } else {
-                    $cookie[$elName] = $elValue;
-                }
-            }
-        }
-        $this->_cookies[] = $cookie;
-    }
-
-
-   /**
-    * Read a part of response body encoded with chunked Transfer-Encoding
-    * 
-    * @access private
-    * @return string
-    */
-    function _readChunked()
-    {
-        // at start of the next chunk?
-        if (0 == $this->_chunkLength) {
-            $line = $this->_sock->readLine();
-            if (preg_match('/^([0-9a-f]+)/i', $line, $matches)) {
-                $this->_chunkLength = hexdec($matches[1]); 
-                // Chunk with zero length indicates the end
-                if (0 == $this->_chunkLength) {
-                    $this->_sock->readLine(); // make this an eof()
-                    return '';
-                }
-            } else {
-                return '';
-            }
-        }
-        $data = $this->_sock->read($this->_chunkLength);
-        $this->_chunkLength -= strlen($data);
-        if (0 == $this->_chunkLength) {
-            $this->_sock->readLine(); // Trailing CRLF
-        }
-        return $data;
-    }
-
-
-   /**
-    * Notifies all registered listeners of an event.
-    * 
-    * @param    string  Event name
-    * @param    mixed   Additional data
-    * @access   private
-    * @see HTTP_Request::_notify()
-    */
-    function _notify($event, $data = null)
-    {
-        foreach (array_keys($this->_listeners) as $id) {
-            $this->_listeners[$id]->update($this, $event, $data);
-        }
-    }
-} // End class HTTP_Response
-?>
+<?php
+// +-----------------------------------------------------------------------+
+// | Copyright (c) 2002-2003, Richard Heyes                                |
+// | All rights reserved.                                                  |
+// |                                                                       |
+// | Redistribution and use in source and binary forms, with or without    |
+// | modification, are permitted provided that the following conditions    |
+// | are met:                                                              |
+// |                                                                       |
+// | o Redistributions of source code must retain the above copyright      |
+// |   notice, this list of conditions and the following disclaimer.       |
+// | o Redistributions in binary form must reproduce the above copyright   |
+// |   notice, this list of conditions and the following disclaimer in the |
+// |   documentation and/or other materials provided with the distribution.|
+// | o The names of the authors may not be used to endorse or promote      |
+// |   products derived from this software without specific prior written  |
+// |   permission.                                                         |
+// |                                                                       |
+// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |
+// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |
+// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
+// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |
+// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
+// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |
+// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
+// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |
+// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
+// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |
+// |                                                                       |
+// +-----------------------------------------------------------------------+
+// | Author: Richard Heyes <richard@phpguru.org>                           |
+// +-----------------------------------------------------------------------+
+//
+// $Id: Request.php,v 1.51 2006/10/25 16:23:31 avb Exp $
+//
+// HTTP_Request Class
+//
+// Simple example, (Fetches yahoo.com and displays it):
+//
+// $a = &new HTTP_Request('http://www.yahoo.com/');
+// $a->sendRequest();
+// echo $a->getResponseBody();
+//
+
+require_once 'PEAR.php';
+require_once 'Net/Socket.php';
+require_once 'Net/URL.php';
+
+define('HTTP_REQUEST_METHOD_GET',     'GET',     true);
+define('HTTP_REQUEST_METHOD_HEAD',    'HEAD',    true);
+define('HTTP_REQUEST_METHOD_POST',    'POST',    true);
+define('HTTP_REQUEST_METHOD_PUT',     'PUT',     true);
+define('HTTP_REQUEST_METHOD_DELETE',  'DELETE',  true);
+define('HTTP_REQUEST_METHOD_OPTIONS', 'OPTIONS', true);
+define('HTTP_REQUEST_METHOD_TRACE',   'TRACE',   true);
+
+define('HTTP_REQUEST_HTTP_VER_1_0', '1.0', true);
+define('HTTP_REQUEST_HTTP_VER_1_1', '1.1', true);
+
+class HTTP_Request {
+
+    /**
+    * Instance of Net_URL
+    * @var object Net_URL
+    */
+    var $_url;
+
+    /**
+    * Type of request
+    * @var string
+    */
+    var $_method;
+
+    /**
+    * HTTP Version
+    * @var string
+    */
+    var $_http;
+
+    /**
+    * Request headers
+    * @var array
+    */
+    var $_requestHeaders;
+
+    /**
+    * Basic Auth Username
+    * @var string
+    */
+    var $_user;
+    
+    /**
+    * Basic Auth Password
+    * @var string
+    */
+    var $_pass;
+
+    /**
+    * Socket object
+    * @var object Net_Socket
+    */
+    var $_sock;
+    
+    /**
+    * Proxy server
+    * @var string
+    */
+    var $_proxy_host;
+    
+    /**
+    * Proxy port
+    * @var integer
+    */
+    var $_proxy_port;
+    
+    /**
+    * Proxy username
+    * @var string
+    */
+    var $_proxy_user;
+    
+    /**
+    * Proxy password
+    * @var string
+    */
+    var $_proxy_pass;
+
+    /**
+    * Post data
+    * @var array
+    */
+    var $_postData;
+
+   /**
+    * Request body  
+    * @var string
+    */
+    var $_body;
+
+   /**
+    * A list of methods that MUST NOT have a request body, per RFC 2616
+    * @var array
+    */
+    var $_bodyDisallowed = array('TRACE');
+
+   /**
+    * Files to post 
+    * @var array
+    */
+    var $_postFiles = array();
+
+    /**
+    * Connection timeout.
+    * @var float
+    */
+    var $_timeout;
+    
+    /**
+    * HTTP_Response object
+    * @var object HTTP_Response
+    */
+    var $_response;
+    
+    /**
+    * Whether to allow redirects
+    * @var boolean
+    */
+    var $_allowRedirects;
+    
+    /**
+    * Maximum redirects allowed
+    * @var integer
+    */
+    var $_maxRedirects;
+    
+    /**
+    * Current number of redirects
+    * @var integer
+    */
+    var $_redirects;
+
+   /**
+    * Whether to append brackets [] to array variables
+    * @var bool
+    */
+    var $_useBrackets = true;
+
+   /**
+    * Attached listeners
+    * @var array
+    */
+    var $_listeners = array();
+
+   /**
+    * Whether to save response body in response object property  
+    * @var bool
+    */
+    var $_saveBody = true;
+
+   /**
+    * Timeout for reading from socket (array(seconds, microseconds))
+    * @var array
+    */
+    var $_readTimeout = null;
+
+   /**
+    * Options to pass to Net_Socket::connect. See stream_context_create
+    * @var array
+    */
+    var $_socketOptions = null;
+
+    /**
+    * Constructor
+    *
+    * Sets up the object
+    * @param    string  The url to fetch/access
+    * @param    array   Associative array of parameters which can have the following keys:
+    * <ul>
+    *   <li>method         - Method to use, GET, POST etc (string)</li>
+    *   <li>http           - HTTP Version to use, 1.0 or 1.1 (string)</li>
+    *   <li>user           - Basic Auth username (string)</li>
+    *   <li>pass           - Basic Auth password (string)</li>
+    *   <li>proxy_host     - Proxy server host (string)</li>
+    *   <li>proxy_port     - Proxy server port (integer)</li>
+    *   <li>proxy_user     - Proxy auth username (string)</li>
+    *   <li>proxy_pass     - Proxy auth password (string)</li>
+    *   <li>timeout        - Connection timeout in seconds (float)</li>
+    *   <li>allowRedirects - Whether to follow redirects or not (bool)</li>
+    *   <li>maxRedirects   - Max number of redirects to follow (integer)</li>
+    *   <li>useBrackets    - Whether to append [] to array variable names (bool)</li>
+    *   <li>saveBody       - Whether to save response body in response object property (bool)</li>
+    *   <li>readTimeout    - Timeout for reading / writing data over the socket (array (seconds, microseconds))</li>
+    *   <li>socketOptions  - Options to pass to Net_Socket object (array)</li>
+    * </ul>
+    * @access public
+    */
+    function HTTP_Request($url = '', $params = array())
+    {
+        $this->_method         =  HTTP_REQUEST_METHOD_GET;
+        $this->_http           =  HTTP_REQUEST_HTTP_VER_1_1;
+        $this->_requestHeaders = array();
+        $this->_postData       = array();
+        $this->_body           = null;
+
+        $this->_user = null;
+        $this->_pass = null;
+
+        $this->_proxy_host = null;
+        $this->_proxy_port = null;
+        $this->_proxy_user = null;
+        $this->_proxy_pass = null;
+
+        $this->_allowRedirects = false;
+        $this->_maxRedirects   = 3;
+        $this->_redirects      = 0;
+
+        $this->_timeout  = null;
+        $this->_response = null;
+
+        foreach ($params as $key => $value) {
+            $this->{'_' . $key} = $value;
+        }
+
+        if (!empty($url)) {
+            $this->setURL($url);
+        }
+
+        // Default useragent
+        $this->addHeader('User-Agent', 'PEAR HTTP_Request class ( http://pear.php.net/ )');
+
+        // We don't do keep-alives by default
+        $this->addHeader('Connection', 'close');
+
+        // Basic authentication
+        if (!empty($this->_user)) {
+            $this->addHeader('Authorization', 'Basic ' . base64_encode($this->_user . ':' . $this->_pass));
+        }
+
+        // Proxy authentication (see bug #5913)
+        if (!empty($this->_proxy_user)) {
+            $this->addHeader('Proxy-Authorization', 'Basic ' . base64_encode($this->_proxy_user . ':' . $this->_proxy_pass));
+        }
+
+        // Use gzip encoding if possible
+        // Avoid gzip encoding if using multibyte functions (see #1781)
+        if (HTTP_REQUEST_HTTP_VER_1_1 == $this->_http && extension_loaded('zlib') &&
+            0 == (2 & ini_get('mbstring.func_overload'))) {
+
+            $this->addHeader('Accept-Encoding', 'gzip');
+        }
+    }
+    
+    /**
+    * Generates a Host header for HTTP/1.1 requests
+    *
+    * @access private
+    * @return string
+    */
+    function _generateHostHeader()
+    {
+        if ($this->_url->port != 80 AND strcasecmp($this->_url->protocol, 'http') == 0) {
+            $host = $this->_url->host . ':' . $this->_url->port;
+
+        } elseif ($this->_url->port != 443 AND strcasecmp($this->_url->protocol, 'https') == 0) {
+            $host = $this->_url->host . ':' . $this->_url->port;
+
+        } elseif ($this->_url->port == 443 AND strcasecmp($this->_url->protocol, 'https') == 0 AND strpos($this->_url->url, ':443') !== false) {
+            $host = $this->_url->host . ':' . $this->_url->port;
+        
+        } else {
+            $host = $this->_url->host;
+        }
+
+        return $host;
+    }
+    
+    /**
+    * Resets the object to its initial state (DEPRECATED).
+    * Takes the same parameters as the constructor.
+    *
+    * @param  string $url    The url to be requested
+    * @param  array  $params Associative array of parameters
+    *                        (see constructor for details)
+    * @access public
+    * @deprecated deprecated since 1.2, call the constructor if this is necessary
+    */
+    function reset($url, $params = array())
+    {
+        $this->HTTP_Request($url, $params);
+    }
+
+    /**
+    * Sets the URL to be requested
+    *
+    * @param  string The url to be requested
+    * @access public
+    */
+    function setURL($url)
+    {
+        $this->_url = &new Net_URL($url, $this->_useBrackets);
+
+        if (!empty($this->_url->user) || !empty($this->_url->pass)) {
+            $this->setBasicAuth($this->_url->user, $this->_url->pass);
+        }
+
+        if (HTTP_REQUEST_HTTP_VER_1_1 == $this->_http) {
+            $this->addHeader('Host', $this->_generateHostHeader());
+        }
+
+        // set '/' instead of empty path rather than check later (see bug #8662)
+        if (empty($this->_url->path)) {
+            $this->_url->path = '/';
+        } 
+    }
+    
+   /**
+    * Returns the current request URL  
+    *
+    * @return   string  Current request URL
+    * @access   public
+    */
+    function getUrl($url)
+    {
+        return empty($this->_url)? '': $this->_url->getUrl();
+    }
+
+    /**
+    * Sets a proxy to be used
+    *
+    * @param string     Proxy host
+    * @param int        Proxy port
+    * @param string     Proxy username
+    * @param string     Proxy password
+    * @access public
+    */
+    function setProxy($host, $port = 8080, $user = null, $pass = null)
+    {
+        $this->_proxy_host = $host;
+        $this->_proxy_port = $port;
+        $this->_proxy_user = $user;
+        $this->_proxy_pass = $pass;
+
+        if (!empty($user)) {
+            $this->addHeader('Proxy-Authorization', 'Basic ' . base64_encode($user . ':' . $pass));
+        }
+    }
+
+    /**
+    * Sets basic authentication parameters
+    *
+    * @param string     Username
+    * @param string     Password
+    */
+    function setBasicAuth($user, $pass)
+    {
+        $this->_user = $user;
+        $this->_pass = $pass;
+
+        $this->addHeader('Authorization', 'Basic ' . base64_encode($user . ':' . $pass));
+    }
+
+    /**
+    * Sets the method to be used, GET, POST etc.
+    *
+    * @param string     Method to use. Use the defined constants for this
+    * @access public
+    */
+    function setMethod($method)
+    {
+        $this->_method = $method;
+    }
+
+    /**
+    * Sets the HTTP version to use, 1.0 or 1.1
+    *
+    * @param string     Version to use. Use the defined constants for this
+    * @access public
+    */
+    function setHttpVer($http)
+    {
+        $this->_http = $http;
+    }
+
+    /**
+    * Adds a request header
+    *
+    * @param string     Header name
+    * @param string     Header value
+    * @access public
+    */
+    function addHeader($name, $value)
+    {
+        $this->_requestHeaders[strtolower($name)] = $value;
+    }
+
+    /**
+    * Removes a request header
+    *
+    * @param string     Header name to remove
+    * @access public
+    */
+    function removeHeader($name)
+    {
+        if (isset($this->_requestHeaders[strtolower($name)])) {
+            unset($this->_requestHeaders[strtolower($name)]);
+        }
+    }
+
+    /**
+    * Adds a querystring parameter
+    *
+    * @param string     Querystring parameter name
+    * @param string     Querystring parameter value
+    * @param bool       Whether the value is already urlencoded or not, default = not
+    * @access public
+    */
+    function addQueryString($name, $value, $preencoded = false)
+    {
+        $this->_url->addQueryString($name, $value, $preencoded);
+    }    
+    
+    /**
+    * Sets the querystring to literally what you supply
+    *
+    * @param string     The querystring data. Should be of the format foo=bar&x=y etc
+    * @param bool       Whether data is already urlencoded or not, default = already encoded
+    * @access public
+    */
+    function addRawQueryString($querystring, $preencoded = true)
+    {
+        $this->_url->addRawQueryString($querystring, $preencoded);
+    }
+
+    /**
+    * Adds postdata items
+    *
+    * @param string     Post data name
+    * @param string     Post data value
+    * @param bool       Whether data is already urlencoded or not, default = not
+    * @access public
+    */
+    function addPostData($name, $value, $preencoded = false)
+    {
+        if ($preencoded) {
+            $this->_postData[$name] = $value;
+        } else {
+            $this->_postData[$name] = $this->_arrayMapRecursive('urlencode', $value);
+        }
+    }
+
+   /**
+    * Recursively applies the callback function to the value
+    * 
+    * @param    mixed   Callback function
+    * @param    mixed   Value to process
+    * @access   private
+    * @return   mixed   Processed value
+    */
+    function _arrayMapRecursive($callback, $value)
+    {
+        if (!is_array($value)) {
+            return call_user_func($callback, $value);
+        } else {
+            $map = array();
+            foreach ($value as $k => $v) {
+                $map[$k] = $this->_arrayMapRecursive($callback, $v);
+            }
+            return $map;
+        }
+    }
+
+   /**
+    * Adds a file to upload
+    * 
+    * This also changes content-type to 'multipart/form-data' for proper upload
+    * 
+    * @access public
+    * @param  string    name of file-upload field
+    * @param  mixed     file name(s)
+    * @param  mixed     content-type(s) of file(s) being uploaded
+    * @return bool      true on success
+    * @throws PEAR_Error
+    */
+    function addFile($inputName, $fileName, $contentType = 'application/octet-stream')
+    {
+        if (!is_array($fileName) && !is_readable($fileName)) {
+            return PEAR::raiseError("File '{$fileName}' is not readable");
+        } elseif (is_array($fileName)) {
+            foreach ($fileName as $name) {
+                if (!is_readable($name)) {
+                    return PEAR::raiseError("File '{$name}' is not readable");
+                }
+            }
+        }
+        $this->addHeader('Content-Type', 'multipart/form-data');
+        $this->_postFiles[$inputName] = array(
+            'name' => $fileName,
+            'type' => $contentType
+        );
+        return true;
+    }
+
+    /**
+    * Adds raw postdata (DEPRECATED)
+    *
+    * @param string     The data
+    * @param bool       Whether data is preencoded or not, default = already encoded
+    * @access public
+    * @deprecated       deprecated since 1.3.0, method setBody() should be used instead
+    */
+    function addRawPostData($postdata, $preencoded = true)
+    {
+        $this->_body = $preencoded ? $postdata : urlencode($postdata);
+    }
+
+   /**
+    * Sets the request body (for POST, PUT and similar requests)
+    *
+    * @param    string  Request body
+    * @access   public
+    */
+    function setBody($body)
+    {
+        $this->_body = $body;
+    }
+
+    /**
+    * Clears any postdata that has been added (DEPRECATED). 
+    * 
+    * Useful for multiple request scenarios.
+    *
+    * @access public
+    * @deprecated deprecated since 1.2
+    */
+    function clearPostData()
+    {
+        $this->_postData = null;
+    }
+
+    /**
+    * Appends a cookie to "Cookie:" header
+    * 
+    * @param string $name cookie name
+    * @param string $value cookie value
+    * @access public
+    */
+    function addCookie($name, $value)
+    {
+        $cookies = isset($this->_requestHeaders['cookie']) ? $this->_requestHeaders['cookie']. '; ' : '';
+        $this->addHeader('Cookie', $cookies . $name . '=' . $value);
+    }
+    
+    /**
+    * Clears any cookies that have been added (DEPRECATED). 
+    * 
+    * Useful for multiple request scenarios
+    *
+    * @access public
+    * @deprecated deprecated since 1.2
+    */
+    function clearCookies()
+    {
+        $this->removeHeader('Cookie');
+    }
+
+    /**
+    * Sends the request
+    *
+    * @access public
+    * @param  bool   Whether to store response body in Response object property,
+    *                set this to false if downloading a LARGE file and using a Listener
+    * @return mixed  PEAR error on error, true otherwise
+    */
+    function sendRequest($saveBody = true)
+    {
+        if (!is_a($this->_url, 'Net_URL')) {
+            return PEAR::raiseError('No URL given.');
+        }
+
+        $host = isset($this->_proxy_host) ? $this->_proxy_host : $this->_url->host;
+        $port = isset($this->_proxy_port) ? $this->_proxy_port : $this->_url->port;
+
+        // 4.3.0 supports SSL connections using OpenSSL. The function test determines
+        // we running on at least 4.3.0
+        if (strcasecmp($this->_url->protocol, 'https') == 0 AND function_exists('file_get_contents') AND extension_loaded('openssl')) {
+            if (isset($this->_proxy_host)) {
+                return PEAR::raiseError('HTTPS proxies are not supported.');
+            }
+            $host = 'ssl://' . $host;
+        }
+
+        // magic quotes may fuck up file uploads and chunked response processing
+        $magicQuotes = ini_get('magic_quotes_runtime');
+        ini_set('magic_quotes_runtime', false);
+
+        // RFC 2068, section 19.7.1: A client MUST NOT send the Keep-Alive 
+        // connection token to a proxy server...
+        if (isset($this->_proxy_host) && !empty($this->_requestHeaders['connection']) &&
+            'Keep-Alive' == $this->_requestHeaders['connection'])
+        {
+            $this->removeHeader('connection');
+        }
+
+        $keepAlive = (HTTP_REQUEST_HTTP_VER_1_1 == $this->_http && empty($this->_requestHeaders['connection'])) ||
+                     (!empty($this->_requestHeaders['connection']) && 'Keep-Alive' == $this->_requestHeaders['connection']);
+        $sockets   = &PEAR::getStaticProperty('HTTP_Request', 'sockets');
+        $sockKey   = $host . ':' . $port;
+        unset($this->_sock);
+
+        // There is a connected socket in the "static" property?
+        if ($keepAlive && !empty($sockets[$sockKey]) &&
+            !empty($sockets[$sockKey]->fp)) 
+        {
+            $this->_sock =& $sockets[$sockKey];
+            $err = null;
+        } else {
+            $this->_notify('connect');
+            $this->_sock =& new Net_Socket();
+            $err = $this->_sock->connect($host, $port, null, $this->_timeout, $this->_socketOptions);
+        }
+        PEAR::isError($err) or $err = $this->_sock->write($this->_buildRequest());
+
+        if (!PEAR::isError($err)) {
+            if (!empty($this->_readTimeout)) {
+                $this->_sock->setTimeout($this->_readTimeout[0], $this->_readTimeout[1]);
+            }
+
+            $this->_notify('sentRequest');
+
+            // Read the response
+            $this->_response = &new HTTP_Response($this->_sock, $this->_listeners);
+            $err = $this->_response->process(
+                $this->_saveBody && $saveBody,
+                HTTP_REQUEST_METHOD_HEAD != $this->_method
+            );
+
+            if ($keepAlive) {
+                $keepAlive = (isset($this->_response->_headers['content-length'])
+                              || (isset($this->_response->_headers['transfer-encoding'])
+                                  && strtolower($this->_response->_headers['transfer-encoding']) == 'chunked'));
+                if ($keepAlive) {
+                    if (isset($this->_response->_headers['connection'])) {
+                        $keepAlive = strtolower($this->_response->_headers['connection']) == 'keep-alive';
+                    } else {
+                        $keepAlive = 'HTTP/'.HTTP_REQUEST_HTTP_VER_1_1 == $this->_response->_protocol;
+                    }
+                }
+            }
+        }
+
+        ini_set('magic_quotes_runtime', $magicQuotes);
+
+        if (PEAR::isError($err)) {
+            return $err;
+        }
+
+        if (!$keepAlive) {
+            $this->disconnect();
+        // Store the connected socket in "static" property
+        } elseif (empty($sockets[$sockKey]) || empty($sockets[$sockKey]->fp)) {
+            $sockets[$sockKey] =& $this->_sock;
+        }
+
+        // Check for redirection
+        if (    $this->_allowRedirects
+            AND $this->_redirects <= $this->_maxRedirects
+            AND $this->getResponseCode() > 300
+            AND $this->getResponseCode() < 399
+            AND !empty($this->_response->_headers['location'])) {
+
+            
+            $redirect = $this->_response->_headers['location'];
+
+            // Absolute URL
+            if (preg_match('/^https?:\/\//i', $redirect)) {
+                $this->_url = &new Net_URL($redirect);
+                $this->addHeader('Host', $this->_generateHostHeader());
+            // Absolute path
+            } elseif ($redirect{0} == '/') {
+                $this->_url->path = $redirect;
+            
+            // Relative path
+            } elseif (substr($redirect, 0, 3) == '../' OR substr($redirect, 0, 2) == './') {
+                if (substr($this->_url->path, -1) == '/') {
+                    $redirect = $this->_url->path . $redirect;
+                } else {
+                    $redirect = dirname($this->_url->path) . '/' . $redirect;
+                }
+                $redirect = Net_URL::resolvePath($redirect);
+                $this->_url->path = $redirect;
+                
+            // Filename, no path
+            } else {
+                if (substr($this->_url->path, -1) == '/') {
+                    $redirect = $this->_url->path . $redirect;
+                } else {
+                    $redirect = dirname($this->_url->path) . '/' . $redirect;
+                }
+                $this->_url->path = $redirect;
+            }
+
+            $this->_redirects++;
+            return $this->sendRequest($saveBody);
+
+        // Too many redirects
+        } elseif ($this->_allowRedirects AND $this->_redirects > $this->_maxRedirects) {
+            return PEAR::raiseError('Too many redirects');
+        }
+
+        return true;
+    }
+
+    /**
+     * Disconnect the socket, if connected. Only useful if using Keep-Alive.
+     *
+     * @access public
+     */
+    function disconnect()
+    {
+        if (!empty($this->_sock) && !empty($this->_sock->fp)) {
+            $this->_notify('disconnect');
+            $this->_sock->disconnect();
+        }
+    }
+
+    /**
+    * Returns the response code
+    *
+    * @access public
+    * @return mixed     Response code, false if not set
+    */
+    function getResponseCode()
+    {
+        return isset($this->_response->_code) ? $this->_response->_code : false;
+    }
+
+    /**
+    * Returns either the named header or all if no name given
+    *
+    * @access public
+    * @param string     The header name to return, do not set to get all headers
+    * @return mixed     either the value of $headername (false if header is not present)
+    *                   or an array of all headers
+    */
+    function getResponseHeader($headername = null)
+    {
+        if (!isset($headername)) {
+            return isset($this->_response->_headers)? $this->_response->_headers: array();
+        } else {
+            $headername = strtolower($headername);
+            return isset($this->_response->_headers[$headername]) ? $this->_response->_headers[$headername] : false;
+        }
+    }
+
+    /**
+    * Returns the body of the response
+    *
+    * @access public
+    * @return mixed     response body, false if not set
+    */
+    function getResponseBody()
+    {
+        return isset($this->_response->_body) ? $this->_response->_body : false;
+    }
+
+    /**
+    * Returns cookies set in response
+    * 
+    * @access public
+    * @return mixed     array of response cookies, false if none are present
+    */
+    function getResponseCookies()
+    {
+        return isset($this->_response->_cookies) ? $this->_response->_cookies : false;
+    }
+
+    /**
+    * Builds the request string
+    *
+    * @access private
+    * @return string The request string
+    */
+    function _buildRequest()
+    {
+        $separator = ini_get('arg_separator.output');
+        ini_set('arg_separator.output', '&');
+        $querystring = ($querystring = $this->_url->getQueryString()) ? '?' . $querystring : '';
+        ini_set('arg_separator.output', $separator);
+
+        $host = isset($this->_proxy_host) ? $this->_url->protocol . '://' . $this->_url->host : '';
+        $port = (isset($this->_proxy_host) AND $this->_url->port != 80) ? ':' . $this->_url->port : '';
+        $path = $this->_url->path . $querystring;
+        $url  = $host . $port . $path;
+
+        $request = $this->_method . ' ' . $url . ' HTTP/' . $this->_http . "\r\n";
+
+        if (in_array($this->_method, $this->_bodyDisallowed) ||
+            (empty($this->_body) && (HTTP_REQUEST_METHOD_POST != $this->_method ||
+             (empty($this->_postData) && empty($this->_postFiles)))))
+        {
+            $this->removeHeader('Content-Type');
+        } else {
+            if (empty($this->_requestHeaders['content-type'])) {
+                // Add default content-type
+                $this->addHeader('Content-Type', 'application/x-www-form-urlencoded');
+            } elseif ('multipart/form-data' == $this->_requestHeaders['content-type']) {
+                $boundary = 'HTTP_Request_' . md5(uniqid('request') . microtime());
+                $this->addHeader('Content-Type', 'multipart/form-data; boundary=' . $boundary);
+            }
+        }
+
+        // Request Headers
+        if (!empty($this->_requestHeaders)) {
+            foreach ($this->_requestHeaders as $name => $value) {
+                $canonicalName = implode('-', array_map('ucfirst', explode('-', $name)));
+                $request      .= $canonicalName . ': ' . $value . "\r\n";
+            }
+        }
+
+        // No post data or wrong method, so simply add a final CRLF
+        if (in_array($this->_method, $this->_bodyDisallowed) || 
+            (HTTP_REQUEST_METHOD_POST != $this->_method && empty($this->_body))) {
+
+            $request .= "\r\n";
+
+        // Post data if it's an array
+        } elseif (HTTP_REQUEST_METHOD_POST == $this->_method && 
+                  (!empty($this->_postData) || !empty($this->_postFiles))) {
+
+            // "normal" POST request
+            if (!isset($boundary)) {
+                $postdata = implode('&', array_map(
+                    create_function('$a', 'return $a[0] . \'=\' . $a[1];'), 
+                    $this->_flattenArray('', $this->_postData)
+                ));
+
+            // multipart request, probably with file uploads
+            } else {
+                $postdata = '';
+                if (!empty($this->_postData)) {
+                    $flatData = $this->_flattenArray('', $this->_postData);
+                    foreach ($flatData as $item) {
+                        $postdata .= '--' . $boundary . "\r\n";
+                        $postdata .= 'Content-Disposition: form-data; name="' . $item[0] . '"';
+                        $postdata .= "\r\n\r\n" . urldecode($item[1]) . "\r\n";
+                    }
+                }
+                foreach ($this->_postFiles as $name => $value) {
+                    if (is_array($value['name'])) {
+                        $varname       = $name . ($this->_useBrackets? '[]': '');
+                    } else {
+                        $varname       = $name;
+                        $value['name'] = array($value['name']);
+                    }
+                    foreach ($value['name'] as $key => $filename) {
+                        $fp   = fopen($filename, 'r');
+                        $data = fread($fp, filesize($filename));
+                        fclose($fp);
+                        $basename = basename($filename);
+                        $type     = is_array($value['type'])? @$value['type'][$key]: $value['type'];
+
+                        $postdata .= '--' . $boundary . "\r\n";
+                        $postdata .= 'Content-Disposition: form-data; name="' . $varname . '"; filename="' . $basename . '"';
+                        $postdata .= "\r\nContent-Type: " . $type;
+                        $postdata .= "\r\n\r\n" . $data . "\r\n";
+                    }
+                }
+                $postdata .= '--' . $boundary . "--\r\n";
+            }
+            $request .= 'Content-Length: ' . strlen($postdata) . "\r\n\r\n";
+            $request .= $postdata;
+
+        // Explicitly set request body
+        } elseif (!empty($this->_body)) {
+
+            $request .= 'Content-Length: ' . strlen($this->_body) . "\r\n\r\n";
+            $request .= $this->_body;
+        }
+        
+        return $request;
+    }
+
+   /**
+    * Helper function to change the (probably multidimensional) associative array
+    * into the simple one.
+    *
+    * @param    string  name for item
+    * @param    mixed   item's values
+    * @return   array   array with the following items: array('item name', 'item value');
+    */
+    function _flattenArray($name, $values)
+    {
+        if (!is_array($values)) {
+            return array(array($name, $values));
+        } else {
+            $ret = array();
+            foreach ($values as $k => $v) {
+                if (empty($name)) {
+                    $newName = $k;
+                } elseif ($this->_useBrackets) {
+                    $newName = $name . '[' . $k . ']';
+                } else {
+                    $newName = $name;
+                }
+                $ret = array_merge($ret, $this->_flattenArray($newName, $v));
+            }
+            return $ret;
+        }
+    }
+
+
+   /**
+    * Adds a Listener to the list of listeners that are notified of
+    * the object's events
+    * 
+    * @param    object   HTTP_Request_Listener instance to attach
+    * @return   boolean  whether the listener was successfully attached
+    * @access   public
+    */
+    function attach(&$listener)
+    {
+        if (!is_a($listener, 'HTTP_Request_Listener')) {
+            return false;
+        }
+        $this->_listeners[$listener->getId()] =& $listener;
+        return true;
+    }
+
+
+   /**
+    * Removes a Listener from the list of listeners 
+    * 
+    * @param    object   HTTP_Request_Listener instance to detach
+    * @return   boolean  whether the listener was successfully detached
+    * @access   public
+    */
+    function detach(&$listener)
+    {
+        if (!is_a($listener, 'HTTP_Request_Listener') || 
+            !isset($this->_listeners[$listener->getId()])) {
+            return false;
+        }
+        unset($this->_listeners[$listener->getId()]);
+        return true;
+    }
+
+
+   /**
+    * Notifies all registered listeners of an event.
+    * 
+    * Events sent by HTTP_Request object
+    * - 'connect': on connection to server
+    * - 'sentRequest': after the request was sent
+    * - 'disconnect': on disconnection from server
+    * 
+    * Events sent by HTTP_Response object
+    * - 'gotHeaders': after receiving response headers (headers are passed in $data)
+    * - 'tick': on receiving a part of response body (the part is passed in $data)
+    * - 'gzTick': on receiving a gzip-encoded part of response body (ditto)
+    * - 'gotBody': after receiving the response body (passes the decoded body in $data if it was gzipped)
+    * 
+    * @param    string  Event name
+    * @param    mixed   Additional data
+    * @access   private
+    */
+    function _notify($event, $data = null)
+    {
+        foreach (array_keys($this->_listeners) as $id) {
+            $this->_listeners[$id]->update($this, $event, $data);
+        }
+    }
+}
+
+
+/**
+* Response class to complement the Request class
+*/
+class HTTP_Response
+{
+    /**
+    * Socket object
+    * @var object
+    */
+    var $_sock;
+
+    /**
+    * Protocol
+    * @var string
+    */
+    var $_protocol;
+    
+    /**
+    * Return code
+    * @var string
+    */
+    var $_code;
+    
+    /**
+    * Response headers
+    * @var array
+    */
+    var $_headers;
+
+    /**
+    * Cookies set in response  
+    * @var array
+    */
+    var $_cookies;
+
+    /**
+    * Response body
+    * @var string
+    */
+    var $_body = '';
+
+   /**
+    * Used by _readChunked(): remaining length of the current chunk
+    * @var string
+    */
+    var $_chunkLength = 0;
+
+   /**
+    * Attached listeners
+    * @var array
+    */
+    var $_listeners = array();
+
+   /**
+    * Bytes left to read from message-body
+    * @var null|int
+    */
+    var $_toRead;
+
+    /**
+    * Constructor
+    *
+    * @param  object Net_Socket     socket to read the response from
+    * @param  array                 listeners attached to request
+    * @return mixed PEAR Error on error, true otherwise
+    */
+    function HTTP_Response(&$sock, &$listeners)
+    {
+        $this->_sock      =& $sock;
+        $this->_listeners =& $listeners;
+    }
+
+
+   /**
+    * Processes a HTTP response
+    * 
+    * This extracts response code, headers, cookies and decodes body if it 
+    * was encoded in some way
+    *
+    * @access public
+    * @param  bool      Whether to store response body in object property, set
+    *                   this to false if downloading a LARGE file and using a Listener.
+    *                   This is assumed to be true if body is gzip-encoded.
+    * @param  bool      Whether the response can actually have a message-body.
+    *                   Will be set to false for HEAD requests.
+    * @throws PEAR_Error
+    * @return mixed     true on success, PEAR_Error in case of malformed response
+    */
+    function process($saveBody = true, $canHaveBody = true)
+    {
+        do {
+            $line = $this->_sock->readLine();
+            if (sscanf($line, 'HTTP/%s %s', $http_version, $returncode) != 2) {
+                return PEAR::raiseError('Malformed response.');
+            } else {
+                $this->_protocol = 'HTTP/' . $http_version;
+                $this->_code     = intval($returncode);
+            }
+            while ('' !== ($header = $this->_sock->readLine())) {
+                $this->_processHeader($header);
+            }
+        } while (100 == $this->_code);
+
+        $this->_notify('gotHeaders', $this->_headers);
+
+        // RFC 2616, section 4.4:
+        // 1. Any response message which "MUST NOT" include a message-body ... 
+        // is always terminated by the first empty line after the header fields 
+        // 3. ... If a message is received with both a
+        // Transfer-Encoding header field and a Content-Length header field,
+        // the latter MUST be ignored.
+        $canHaveBody = $canHaveBody && $this->_code >= 200 && 
+                       $this->_code != 204 && $this->_code != 304;
+
+        // If response body is present, read it and decode
+        $chunked = isset($this->_headers['transfer-encoding']) && ('chunked' == $this->_headers['transfer-encoding']);
+        $gzipped = isset($this->_headers['content-encoding']) && ('gzip' == $this->_headers['content-encoding']);
+        $hasBody = false;
+        if ($canHaveBody && ($chunked || !isset($this->_headers['content-length']) || 
+                0 != $this->_headers['content-length']))
+        {
+            if ($chunked || !isset($this->_headers['content-length'])) {
+                $this->_toRead = null;
+            } else {
+                $this->_toRead = $this->_headers['content-length'];
+            }
+            while (!$this->_sock->eof() && (is_null($this->_toRead) || 0 < $this->_toRead)) {
+                if ($chunked) {
+                    $data = $this->_readChunked();
+                } elseif (is_null($this->_toRead)) {
+                    $data = $this->_sock->read(4096);
+                } else {
+                    $data = $this->_sock->read(min(4096, $this->_toRead));
+                    $this->_toRead -= strlen($data);
+                }
+                if ('' == $data) {
+                    break;
+                } else {
+                    $hasBody = true;
+                    if ($saveBody || $gzipped) {
+                        $this->_body .= $data;
+                    }
+                    $this->_notify($gzipped? 'gzTick': 'tick', $data);
+                }
+            }
+        }
+
+        if ($hasBody) {
+            // Uncompress the body if needed
+            if ($gzipped) {
+                $body = $this->_decodeGzip($this->_body);
+                if (PEAR::isError($body)) {
+                    return $body;
+                }
+                $this->_body = $body;
+                $this->_notify('gotBody', $this->_body);
+            } else {
+                $this->_notify('gotBody');
+            }
+        }
+        return true;
+    }
+
+
+   /**
+    * Processes the response header
+    *
+    * @access private
+    * @param  string    HTTP header
+    */
+    function _processHeader($header)
+    {
+        if (false === strpos($header, ':')) {
+            return;
+        }
+        list($headername, $headervalue) = explode(':', $header, 2);
+        $headername  = strtolower($headername);
+        $headervalue = ltrim($headervalue);
+        
+        if ('set-cookie' != $headername) {
+            if (isset($this->_headers[$headername])) {
+                $this->_headers[$headername] .= ',' . $headervalue;
+            } else {
+                $this->_headers[$headername]  = $headervalue;
+            }
+        } else {
+            $this->_parseCookie($headervalue);
+        }
+    }
+
+
+   /**
+    * Parse a Set-Cookie header to fill $_cookies array
+    *
+    * @access private
+    * @param  string    value of Set-Cookie header
+    */
+    function _parseCookie($headervalue)
+    {
+        $cookie = array(
+            'expires' => null,
+            'domain'  => null,
+            'path'    => null,
+            'secure'  => false
+        );
+
+        // Only a name=value pair
+        if (!strpos($headervalue, ';')) {
+            $pos = strpos($headervalue, '=');
+            $cookie['name']  = trim(substr($headervalue, 0, $pos));
+            $cookie['value'] = trim(substr($headervalue, $pos + 1));
+
+        // Some optional parameters are supplied
+        } else {
+            $elements = explode(';', $headervalue);
+            $pos = strpos($elements[0], '=');
+            $cookie['name']  = trim(substr($elements[0], 0, $pos));
+            $cookie['value'] = trim(substr($elements[0], $pos + 1));
+
+            for ($i = 1; $i < count($elements); $i++) {
+                if (false === strpos($elements[$i], '=')) {
+                    $elName  = trim($elements[$i]);
+                    $elValue = null;
+                } else {
+                    list ($elName, $elValue) = array_map('trim', explode('=', $elements[$i]));
+                }
+                $elName = strtolower($elName);
+                if ('secure' == $elName) {
+                    $cookie['secure'] = true;
+                } elseif ('expires' == $elName) {
+                    $cookie['expires'] = str_replace('"', '', $elValue);
+                } elseif ('path' == $elName || 'domain' == $elName) {
+                    $cookie[$elName] = urldecode($elValue);
+                } else {
+                    $cookie[$elName] = $elValue;
+                }
+            }
+        }
+        $this->_cookies[] = $cookie;
+    }
+
+
+   /**
+    * Read a part of response body encoded with chunked Transfer-Encoding
+    * 
+    * @access private
+    * @return string
+    */
+    function _readChunked()
+    {
+        // at start of the next chunk?
+        if (0 == $this->_chunkLength) {
+            $line = $this->_sock->readLine();
+            if (preg_match('/^([0-9a-f]+)/i', $line, $matches)) {
+                $this->_chunkLength = hexdec($matches[1]); 
+                // Chunk with zero length indicates the end
+                if (0 == $this->_chunkLength) {
+                    $this->_sock->readLine(); // make this an eof()
+                    return '';
+                }
+            } else {
+                return '';
+            }
+        }
+        $data = $this->_sock->read($this->_chunkLength);
+        $this->_chunkLength -= strlen($data);
+        if (0 == $this->_chunkLength) {
+            $this->_sock->readLine(); // Trailing CRLF
+        }
+        return $data;
+    }
+
+
+   /**
+    * Notifies all registered listeners of an event.
+    * 
+    * @param    string  Event name
+    * @param    mixed   Additional data
+    * @access   private
+    * @see HTTP_Request::_notify()
+    */
+    function _notify($event, $data = null)
+    {
+        foreach (array_keys($this->_listeners) as $id) {
+            $this->_listeners[$id]->update($this, $event, $data);
+        }
+    }
+
+
+   /**
+    * Decodes the message-body encoded by gzip
+    *
+    * The real decoding work is done by gzinflate() built-in function, this
+    * method only parses the header and checks data for compliance with
+    * RFC 1952  
+    *
+    * @access   private
+    * @param    string  gzip-encoded data
+    * @return   string  decoded data
+    */
+    function _decodeGzip($data)
+    {
+        $length = strlen($data);
+        // If it doesn't look like gzip-encoded data, don't bother
+        if (18 > $length || strcmp(substr($data, 0, 2), "\x1f\x8b")) {
+            return $data;
+        }
+        $method = ord(substr($data, 2, 1));
+        if (8 != $method) {
+            return PEAR::raiseError('_decodeGzip(): unknown compression method');
+        }
+        $flags = ord(substr($data, 3, 1));
+        if ($flags & 224) {
+            return PEAR::raiseError('_decodeGzip(): reserved bits are set');
+        }
+
+        // header is 10 bytes minimum. may be longer, though.
+        $headerLength = 10;
+        // extra fields, need to skip 'em
+        if ($flags & 4) {
+            if ($length - $headerLength - 2 < 8) {
+                return PEAR::raiseError('_decodeGzip(): data too short');
+            }
+            $extraLength = unpack('v', substr($data, 10, 2));
+            if ($length - $headerLength - 2 - $extraLength[1] < 8) {
+                return PEAR::raiseError('_decodeGzip(): data too short');
+            }
+            $headerLength += $extraLength[1] + 2;
+        }
+        // file name, need to skip that
+        if ($flags & 8) {
+            if ($length - $headerLength - 1 < 8) {
+                return PEAR::raiseError('_decodeGzip(): data too short');
+            }
+            $filenameLength = strpos(substr($data, $headerLength), chr(0));
+            if (false === $filenameLength || $length - $headerLength - $filenameLength - 1 < 8) {
+                return PEAR::raiseError('_decodeGzip(): data too short');
+            }
+            $headerLength += $filenameLength + 1;
+        }
+        // comment, need to skip that also
+        if ($flags & 16) {
+            if ($length - $headerLength - 1 < 8) {
+                return PEAR::raiseError('_decodeGzip(): data too short');
+            }
+            $commentLength = strpos(substr($data, $headerLength), chr(0));
+            if (false === $commentLength || $length - $headerLength - $commentLength - 1 < 8) {
+                return PEAR::raiseError('_decodeGzip(): data too short');
+            }
+            $headerLength += $commentLength + 1;
+        }
+        // have a CRC for header. let's check
+        if ($flags & 1) {
+            if ($length - $headerLength - 2 < 8) {
+                return PEAR::raiseError('_decodeGzip(): data too short');
+            }
+            $crcReal   = 0xffff & crc32(substr($data, 0, $headerLength));
+            $crcStored = unpack('v', substr($data, $headerLength, 2));
+            if ($crcReal != $crcStored[1]) {
+                return PEAR::raiseError('_decodeGzip(): header CRC check failed');
+            }
+            $headerLength += 2;
+        }
+        // unpacked data CRC and size at the end of encoded data
+        $tmp = unpack('V2', substr($data, -8));
+        $dataCrc  = $tmp[1];
+        $dataSize = $tmp[2];
+
+        // finally, call the gzinflate() function
+        $unpacked = @gzinflate(substr($data, $headerLength, -8), $dataSize);
+        if (false === $unpacked) {
+            return PEAR::raiseError('_decodeGzip(): gzinflate() call failed');
+        } elseif ($dataSize != strlen($unpacked)) {
+            return PEAR::raiseError('_decodeGzip(): data size check failed');
+        } elseif ($dataCrc != crc32($unpacked)) {
+            return PEAR::raiseError('_decodeGzip(): data CRC check failed');
+        }
+        return $unpacked;
+    }
+} // End class HTTP_Response
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/Mail/mail.php 1.4.1.src/cpanel-glprivate/system/pear/Mail/mail.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/Mail/mail.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/Mail/mail.php	2006-12-31 03:43:36.000000000 -0600
@@ -16,12 +16,12 @@
 // | Author: Chuck Hagenbuch <chuck@horde.org>                            |
 // +----------------------------------------------------------------------+
 //
-// $Id: mail.php,v 1.14 2005/08/09 04:54:37 jon Exp $
+// $Id: mail.php,v 1.18 2006/09/13 05:32:08 jon Exp $
 
 /**
  * internal PHP-mail() implementation of the PEAR Mail:: interface.
  * @package Mail
- * @version $Revision: 1.14 $
+ * @version $Revision: 1.18 $
  */
 class Mail_mail extends Mail {
 
@@ -54,7 +54,11 @@
          * line arguments, we can't guarantee the use of the standard
          * "\r\n" separator.  Instead, we use the system's native line
          * separator. */
-        $this->sep = (strpos(PHP_OS, 'WIN') === false) ? "\n" : "\r\n";
+        if (defined('PHP_EOL')) {
+            $this->sep = PHP_EOL;
+        } else {
+            $this->sep = (strpos(PHP_OS, 'WIN') === false) ? "\n" : "\r\n";
+        }
     }
 
 	/**
@@ -85,6 +89,8 @@
      */
     function send($recipients, $headers, $body)
     {
+        $this->_sanitizeHeaders($headers);
+
         // If we're passed an array of recipients, implode it.
         if (is_array($recipients)) {
             $recipients = implode(', ', $recipients);
@@ -98,6 +104,12 @@
             unset($headers['Subject']);
         }
 
+        /*
+         * Also remove the To: header.  The mail() function will add its own
+         * To: header based on the contents of $recipients.
+         */
+        unset($headers['To']);
+
         // Flatten the headers out.
         $headerElements = $this->prepareHeaders($headers);
         if (PEAR::isError($headerElements)) {
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/Mail/RFC822.php 1.4.1.src/cpanel-glprivate/system/pear/Mail/RFC822.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/Mail/RFC822.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/Mail/RFC822.php	2006-12-31 03:43:36.000000000 -0600
@@ -52,7 +52,7 @@
  *
  * @author  Richard Heyes <richard@phpguru.org>
  * @author  Chuck Hagenbuch <chuck@horde.org>
- * @version $Revision: 1.22 $
+ * @version $Revision: 1.23 $
  * @license BSD
  * @package Mail
  */
@@ -912,7 +912,7 @@
      */
     function isValidInetAddress($data, $strict = false)
     {
-        $regex = $strict ? '/^([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,4})$/i' : '/^([*+!.&#$|\'\\%\/0-9a-z^_`{}=?~:-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,4})$/i';
+        $regex = $strict ? '/^([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})$/i' : '/^([*+!.&#$|\'\\%\/0-9a-z^_`{}=?~:-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})$/i';
         if (preg_match($regex, trim($data), $matches)) {
             return array($matches[1], $matches[2]);
         } else {
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/Mail/sendmail.php 1.4.1.src/cpanel-glprivate/system/pear/Mail/sendmail.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/Mail/sendmail.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/Mail/sendmail.php	2006-12-31 03:43:36.000000000 -0600
@@ -20,7 +20,7 @@
  * Sendmail implementation of the PEAR Mail:: interface.
  * @access public
  * @package Mail
- * @version $Revision: 1.11 $
+ * @version $Revision: 1.17 $
  */
 class Mail_sendmail extends Mail {
 
@@ -36,7 +36,7 @@
      * sendmail wrapper binary.
      * @var string
      */
-    var $sendmail_args = '';
+    var $sendmail_args = '-i';
 
 	/**
      * Constructor.
@@ -58,15 +58,23 @@
      */
     function Mail_sendmail($params)
     {
-        if (isset($params['sendmail_path'])) $this->sendmail_path = $params['sendmail_path'];
-        if (isset($params['sendmail_args'])) $this->sendmail_args = $params['sendmail_args'];
+        if (isset($params['sendmail_path'])) {
+            $this->sendmail_path = $params['sendmail_path'];
+        }
+        if (isset($params['sendmail_args'])) {
+            $this->sendmail_args = $params['sendmail_args'];
+        }
 
         /*
          * Because we need to pass message headers to the sendmail program on
          * the commandline, we can't guarantee the use of the standard "\r\n"
          * separator.  Instead, we use the system's native line separator.
          */
-        $this->sep = (strpos(PHP_OS, 'WIN') === false) ? "\n" : "\r\n";
+        if (defined('PHP_EOL')) {
+            $this->sep = PHP_EOL;
+        } else {
+            $this->sep = (strpos(PHP_OS, 'WIN') === false) ? "\n" : "\r\n";
+        }
     }
 
 	/**
@@ -102,6 +110,7 @@
         }
         $recipients = escapeShellCmd(implode(' ', $recipients));
 
+        $this->_sanitizeHeaders($headers);
         $headerElements = $this->prepareHeaders($headers);
         if (PEAR::isError($headerElements)) {
             return $headerElements;
@@ -117,21 +126,22 @@
             return PEAR::raiseError('From address specified with dangerous characters.');
         }
 
-        $result = 0;
-        if (@is_file($this->sendmail_path)) {
-            $from = escapeShellCmd($from);
-            $mail = popen($this->sendmail_path . (!empty($this->sendmail_args) ? ' ' . $this->sendmail_args : '') . " -f$from -- $recipients", 'w');
-            fputs($mail, $text_headers);
-            fputs($mail, $this->sep);  // newline to end the headers section
-            fputs($mail, $body);
-            $result = pclose($mail);
-            if (version_compare(phpversion(), '4.2.3') == -1) {
-                // With older php versions, we need to shift the
-                // pclose result to get the exit code.
-                $result = $result >> 8 & 0xFF;
-            }
-        } else {
-            return PEAR::raiseError('sendmail [' . $this->sendmail_path . '] is not a valid file');
+        $from = escapeShellCmd($from);
+        $mail = @popen($this->sendmail_path . (!empty($this->sendmail_args) ? ' ' . $this->sendmail_args : '') . " -f$from -- $recipients", 'w');
+        if (!$mail) {
+            return PEAR::raiseError('Failed to open sendmail [' . $this->sendmail_path . '] for execution.');
+        }
+
+        // Write the headers following by two newlines: one to end the headers
+        // section and a second to separate the headers block from the body.
+        fputs($mail, $text_headers . $this->sep . $this->sep);
+
+        fputs($mail, $body);
+        $result = pclose($mail);
+        if (version_compare(phpversion(), '4.2.3') == -1) {
+            // With older php versions, we need to shift the pclose
+            // result to get the exit code.
+            $result = $result >> 8 & 0xFF;
         }
 
         if ($result != 0) {
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/Mail/smtp.php 1.4.1.src/cpanel-glprivate/system/pear/Mail/smtp.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/Mail/smtp.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/Mail/smtp.php	2006-12-31 03:43:36.000000000 -0600
@@ -17,11 +17,32 @@
 // |          Jon Parise <jon@php.net>                                    |
 // +----------------------------------------------------------------------+
 
+/** Error: Failed to create a Net_SMTP object */
+define('PEAR_MAIL_SMTP_ERROR_CREATE', 10000);
+
+/** Error: Failed to connect to SMTP server */
+define('PEAR_MAIL_SMTP_ERROR_CONNECT', 10001);
+
+/** Error: SMTP authentication failure */
+define('PEAR_MAIL_SMTP_ERROR_AUTH', 10002);
+
+/** Error: No From: address has been provided */
+define('PEAR_MAIL_SMTP_ERROR_FROM', 10003);
+
+/** Error: Failed to set sender */
+define('PEAR_MAIL_SMTP_ERROR_SENDER', 10004);
+
+/** Error: Failed to add recipient */
+define('PEAR_MAIL_SMTP_ERROR_RECIPIENT', 10005);
+
+/** Error: Failed to send data */
+define('PEAR_MAIL_SMTP_ERROR_DATA', 10006);
+
 /**
  * SMTP implementation of the PEAR Mail interface. Requires the Net_SMTP class.
  * @access public
  * @package Mail
- * @version $Revision: 1.25 $
+ * @version $Revision: 1.28 $
  */
 class Mail_smtp extends Mail {
 
@@ -191,7 +212,8 @@
 
             /* If we still don't have an SMTP object at this point, fail. */
             if (is_object($this->_smtp) === false) {
-                return PEAR::raiseError('Failed to create a Net_SMTP object');
+                return PEAR::raiseError('Failed to create a Net_SMTP object',
+                                        PEAR_MAIL_SMTP_ERROR_CREATE);
             }
 
             /* Configure the SMTP connection. */
@@ -204,7 +226,7 @@
                 $error = $this->_error('Failed to connect to ' .
                                        $this->host . ':' . $this->port,
                                        $res);
-                return PEAR::raiseError($error);
+                return PEAR::raiseError($error, PEAR_MAIL_SMTP_ERROR_CONNECT);
             }
 
             /* Attempt to authenticate if authentication has been enabled. */
@@ -217,11 +239,12 @@
                     $error = $this->_error("$method authentication failure",
                                            $res);
                     $this->_smtp->rset();
-                    return PEAR::raiseError($error);
+                    return PEAR::raiseError($error, PEAR_MAIL_SMTP_ERROR_AUTH);
                 }
             }
         }
 
+        $this->_sanitizeHeaders($headers);
         $headerElements = $this->prepareHeaders($headers);
         if (PEAR::isError($headerElements)) {
             $this->_smtp->rset();
@@ -238,14 +261,15 @@
 
         if (!isset($from)) {
             $this->_smtp->rset();
-            return PEAR::raiseError('No From: address has been provided');
+            return PEAR::raiseError('No From: address has been provided',
+                                    PEAR_MAIL_SMTP_ERROR_FROM);
         }
 
         $args['verp'] = $this->verp;
         if (PEAR::isError($res = $this->_smtp->mailFrom($from, $args))) {
             $error = $this->_error("Failed to set sender: $from", $res);
             $this->_smtp->rset();
-            return PEAR::raiseError($error);
+            return PEAR::raiseError($error, PEAR_MAIL_SMTP_ERROR_SENDER);
         }
 
         $recipients = $this->parseRecipients($recipients);
@@ -259,15 +283,15 @@
                 $error = $this->_error("Failed to add recipient: $recipient",
                                        $res);
                 $this->_smtp->rset();
-                return PEAR::raiseError($error);
+                return PEAR::raiseError($error, PEAR_MAIL_SMTP_ERROR_RECIPIENT);
             }
         }
 
         /* Send the message's headers and the body as SMTP data. */
-        if (PEAR::isError($res = $this->_smtp->data("$textHeaders\r\n$body"))) {
+        if (PEAR::isError($res = $this->_smtp->data($textHeaders . "\r\n\r\n" . $body))) {
             $error = $this->_error('Failed to send data', $res);
             $this->_smtp->rset();
-            return PEAR::raiseError($error);
+            return PEAR::raiseError($error, PEAR_MAIL_SMTP_ERROR_DATA);
         }
 
         /* If persistent connections are disabled, destroy our SMTP object. */
@@ -320,4 +344,5 @@
 
         return $msg;
     }
+
 }
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/Mail.php 1.4.1.src/cpanel-glprivate/system/pear/Mail.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/Mail.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/Mail.php	2006-12-31 03:43:37.000000000 -0600
@@ -16,7 +16,7 @@
 // | Author: Chuck Hagenbuch <chuck@horde.org>                            |
 // +----------------------------------------------------------------------+
 //
-// $Id: Mail.php,v 1.12 2005/08/22 01:19:27 jon Exp $
+// $Id: Mail.php,v 1.17 2006/09/15 03:41:18 jon Exp $
 
 require_once 'PEAR.php';
 
@@ -26,7 +26,7 @@
  * useful in multiple mailer backends.
  *
  * @access public
- * @version $Revision: 1.12 $
+ * @version $Revision: 1.17 $
  * @package Mail
  */
 class Mail
@@ -87,6 +87,8 @@
      */
     function send($recipients, $headers, $body)
     {
+        $this->_sanitizeHeaders($headers);
+
         // if we're passed an array of recipients, implode it.
         if (is_array($recipients)) {
             $recipients = implode(', ', $recipients);
@@ -108,6 +110,24 @@
     }
 
     /**
+     * Sanitize an array of mail headers by removing any additional header
+     * strings present in a legitimate header's value.  The goal of this
+     * filter is to prevent mail injection attacks.
+     *
+     * @param array $headers The associative array of headers to sanitize.
+     *
+     * @access private
+     */
+    function _sanitizeHeaders(&$headers)
+    {
+        foreach ($headers as $key => $value) {
+            $headers[$key] =
+                preg_replace('=((<CR>|<LF>|0x0A/%0A|0x0D/%0D|\\n|\\r)\S).*=i',
+                             null, $value);
+        }
+    }
+
+    /**
      * Take an array of mail headers and return a string containing
      * text usable in sending a message.
      *
@@ -169,7 +189,7 @@
             }
         }
 
-        return array($from, join($this->sep, $lines) . $this->sep);
+        return array($from, join($this->sep, $lines));
     }
 
     /**
@@ -181,7 +201,8 @@
      *              (RFC822 compliant), or an array of recipients,
      *              each RFC822 valid.
      *
-     * @return array An array of forward paths (bare addresses).
+     * @return mixed An array of forward paths (bare addresses) or a PEAR_Error
+     *               object if the address list could not be parsed.
      * @access private
      */
     function parseRecipients($recipients)
@@ -198,6 +219,12 @@
         // for smtp recipients, etc. All relevant personal information
         // should already be in the headers.
         $addresses = Mail_RFC822::parseAddressList($recipients, 'localhost', false);
+
+        // If parseAddressList() returned a PEAR_Error object, just return it.
+        if (PEAR::isError($addresses)) {
+            return $addresses;
+        }
+
         $recipients = array();
         if (is_array($addresses)) {
             foreach ($addresses as $ob) {
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/OS/Guess.php 1.4.1.src/cpanel-glprivate/system/pear/OS/Guess.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/OS/Guess.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/OS/Guess.php	2006-12-31 03:43:37.000000000 -0600
@@ -16,7 +16,7 @@
  * @author     Gregory Beaver <cellog@php.net>
  * @copyright  1997-2005 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Guess.php,v 1.20 2005/10/26 19:33:03 cellog Exp $
+ * @version    CVS: $Id: Guess.php,v 1.20.2.1 2006/06/16 11:41:16 pajoye Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since PEAR 0.1
  */
@@ -93,7 +93,7 @@
  * @author     Gregory Beaver <cellog@php.net>
  * @copyright  1997-2005 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 0.1
  */
@@ -202,10 +202,12 @@
             return $glibc; // no need to run this multiple times
         }
         include_once "System.php";
-        if (!file_exists('/usr/bin/cpp') || !is_executable('/usr/bin/cpp')) {
+        if (!@file_exists('/usr/bin/cpp') || !@is_executable('/usr/bin/cpp')) {
             // Use glibc's <features.h> header file to
             // get major and minor version number:
-            if ($features_file = @fopen('/usr/include/features.h', 'rb') ) {
+            if (@file_exists('/usr/include/features.h') &&
+                  @is_readable('/usr/include/features.h')) {
+                $features_file = fopen('/usr/include/features.h', 'rb');
                 while (!feof($features_file)) {
                     $line = fgets($features_file, 8192);
                     if (!$line || (strpos($line, '#define') === false)) {
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Autoloader.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Autoloader.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Autoloader.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Autoloader.php	2006-12-31 03:43:37.000000000 -0600
@@ -50,7 +50,7 @@
  * @author Stig Bakken <ssb@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/manual/en/core.ppm.php#core.ppm.pear-autoloader
  * @since      File available since Release 0.1
  * @deprecated File deprecated in Release 1.4.0a1
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Builder.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Builder.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Builder.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Builder.php	2006-12-31 03:43:37.000000000 -0600
@@ -35,7 +35,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since PHP 4.0.2
  * @see        http://pear.php.net/manual/en/core.ppm.pear-builder.php
@@ -331,7 +331,7 @@
         if (!@chdir($build_dir)) {
             return $this->raiseError("could not chdir to $build_dir");
         }
-        putenv('PHP_PEAR_VERSION=1.4.6');
+        putenv('PHP_PEAR_VERSION=1.4.11');
         foreach ($to_run as $cmd) {
             $err = $this->_runCommand($cmd, $callback);
             if (PEAR::isError($err)) {
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/ChannelFile/Parser.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/ChannelFile/Parser.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/ChannelFile/Parser.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/ChannelFile/Parser.php	2006-12-31 03:43:37.000000000 -0600
@@ -32,7 +32,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/ChannelFile.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/ChannelFile.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/ChannelFile.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/ChannelFile.php	2006-12-31 03:43:37.000000000 -0600
@@ -15,7 +15,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: ChannelFile.php,v 1.74 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: ChannelFile.php,v 1.75 2006/03/02 18:14:12 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.0a1
  */
@@ -152,7 +152,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
@@ -324,6 +324,20 @@
         }
         return $a;
     }
+
+    /**
+     * Unlike {@link fromArray()} this does not do any validation
+     * @param array
+     * @static
+     * @return PEAR_ChannelFile
+     */
+    function &fromArrayWithErrors($data, $compatibility = false,
+                                  $stackClass = 'PEAR_ErrorStack')
+    {
+        $a = new PEAR_ChannelFile($compatibility, $stackClass);
+        $a->_fromArray($data);
+        return $a;
+    }
     
     /**
      * @param array
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Auth.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Auth.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Auth.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Auth.php	2006-12-31 03:43:37.000000000 -0600
@@ -16,7 +16,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Auth.php,v 1.22 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Auth.php,v 1.23 2006/03/02 18:14:13 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 0.1
  */
@@ -36,7 +36,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 0.1
  */
@@ -108,6 +108,9 @@
         $reg = &$this->config->getRegistry();
         $channel = $this->config->get('default_channel');
         $chan = $reg->getChannel($channel);
+        if (PEAR::isError($chan)) {
+            return $this->raiseError($chan);
+        }
         $server = $this->config->get('preferred_mirror');
         $remote = &$this->config->getRemote();
         $username = $this->config->get('username');
@@ -166,6 +169,9 @@
         $reg = &$this->config->getRegistry();
         $channel = $this->config->get('default_channel');
         $chan = $reg->getChannel($channel);
+        if (PEAR::isError($chan)) {
+            return $this->raiseError($chan);
+        }
         $server = $this->config->get('preferred_mirror');
         $this->ui->outputData("Logging out from $server.", $command);
         $this->config->remove('username');
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Build.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Build.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Build.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Build.php	2006-12-31 03:43:36.000000000 -0600
@@ -37,7 +37,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 0.1
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Channels.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Channels.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Channels.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Channels.php	2006-12-31 03:43:36.000000000 -0600
@@ -18,7 +18,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Channels.php,v 1.43 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Channels.php,v 1.44.2.1 2006/07/17 18:24:10 pajoye Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.0a1
  */
@@ -36,7 +36,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
@@ -132,8 +132,8 @@
             'function' => 'doDiscover',
             'shortcut' => 'di',
             'options' => array(),
-            'doc' => '<package>
-List the files in an installed package.
+            'doc' => '[<channel.xml>|<channel name>]
+Initialize a Channel from its server and creates the local channel.xml.
 '
             ),
         );
@@ -218,7 +218,7 @@
             if ($reg->channelExists($channel, true)) {
                 $this->ui->outputData("Updating channel \"$channel\"", $command);
                 $test = $reg->getChannel($channel, true);
-                if (!$test) {
+                if (PEAR::isError($test)) {
                     $this->ui->outputData("Channel '$channel' is corrupt in registry!", $command);
                     $lastmodified = false;
                 } else {
@@ -266,6 +266,9 @@
             } else {
                 if ($reg->isAlias($channel)) {
                     $temp = &$reg->getChannel($channel);
+                    if (PEAR::isError($temp)) {
+                        return $this->raiseError($temp);
+                    }
                     $temp->setAlias($temp->getName(), true); // set the alias to the channel name
                     if ($reg->channelExists($temp->getName())) {
                         $this->ui->outputData('ERROR: existing channel "' . $temp->getName() .
@@ -323,6 +326,9 @@
         $channel = strtolower($params[0]);
         if ($reg->channelExists($channel)) {
             $chan = $reg->getChannel($channel);
+            if (PEAR::isError($chan)) {
+                return $this->raiseError($chan);
+            }
         } else {
             if (strpos($channel, '://')) {
                 $downloader = &$this->getDownloader();
@@ -600,6 +606,9 @@
         if ((!file_exists($params[0]) || is_dir($params[0]))
               && $reg->channelExists(strtolower($params[0]))) {
             $c = $reg->getChannel(strtolower($params[0]));
+            if (PEAR::isError($c)) {
+                return $this->raiseError($c);
+            }
             $this->ui->outputData('Retrieving channel.xml from remote server');
             $dl = &$this->getDownloader(array());
             // if force is specified, use a timestamp of "1" to force retrieval
@@ -729,9 +738,9 @@
                 'already aliased to "' . strtolower($params[1]) . '", cannot re-alias');
         }
         $chan = &$reg->getChannel($params[0]);
-        if (!$chan) {
+        if (PEAR::isError($chan)) {
             return $this->raiseError('Corrupt registry?  Error retrieving channel "' . $params[0] .
-                '" information');
+                '" information (' . $chan->getMessage() . ')');
         }
         // make it a local alias
         if (!$chan->setAlias(strtolower($params[1]), true)) {
@@ -762,7 +771,8 @@
         $err = $this->doAdd($command, $options, array('http://' . $params[0] . '/channel.xml'));
         $this->popErrorHandling();
         if (PEAR::isError($err)) {
-            return $this->raiseError("Discovery of channel \"$params[0]\" failed");
+            return $this->raiseError("Discovery of channel \"$params[0]\" failed (" .
+                $err->getMessage() . ')');
         }
         $this->ui->outputData("Discovery of channel \"$params[0]\" succeeded", $command);
     }
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Channels.xml 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Channels.xml
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Channels.xml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Channels.xml	2006-12-31 03:43:36.000000000 -0600
@@ -86,8 +86,8 @@
   <function>doDiscover</function>
   <shortcut>di</shortcut>
   <options />
-  <doc>&lt;package&gt;
-List the files in an installed package.
+  <doc>[&lt;channel.xml&gt;|&lt;channel name&gt;]
+Initialize a Channel from its server and create the local channel.xml.
 </doc>
  </channel-discover>
-</commands>
\ No newline at end of file
+</commands>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Common.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Common.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Common.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Common.php	2006-12-31 03:43:36.000000000 -0600
@@ -16,7 +16,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Common.php,v 1.30 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Common.php,v 1.32.2.1 2006/06/08 22:27:11 pajoye Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 0.1
  */
@@ -35,7 +35,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 0.1
  */
@@ -74,7 +74,7 @@
 
     var $_deps_type_trans = array(
                                   'pkg' => 'package',
-                                  'extension' => 'extension',
+                                  'ext' => 'extension',
                                   'php' => 'PHP',
                                   'prog' => 'external program',
                                   'ldlib' => 'external library for linking',
@@ -254,19 +254,21 @@
 
     function run($command, $options, $params)
     {
-        $func = @$this->commands[$command]['function'];
-        if (empty($func)) {
+        if (empty($this->commands[$command]['function'])) {
             // look for shortcuts
             foreach (array_keys($this->commands) as $cmd) {
-                if (@$this->commands[$cmd]['shortcut'] == $command) {
-                    $command = $cmd;
-                    $func = @$this->commands[$command]['function'];
-                    if (empty($func)) {
+                if (isset($this->commands[$cmd]['shortcut']) && $this->commands[$cmd]['shortcut'] == $command) {
+                    if (empty($this->commands[$cmd]['function'])) {
                         return $this->raiseError("unknown command `$command'");
+                    } else {
+                        $func = $this->commands[$cmd]['function'];
                     }
+                    $command = $cmd;
                     break;
                 }
             }
+        } else {
+            $func = $this->commands[$command]['function'];
         }
         return $this->$func($command, $options, $params);
     }
@@ -274,4 +276,4 @@
     // }}}
 }
 
-?>
\ No newline at end of file
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Config.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Config.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Config.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Config.php	2006-12-31 03:43:36.000000000 -0600
@@ -16,7 +16,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Config.php,v 1.49 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Config.php,v 1.51.2.1 2006/06/04 12:11:39 pajoye Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 0.1
  */
@@ -35,7 +35,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 0.1
  */
@@ -155,8 +155,14 @@
 
     function doConfigShow($command, $options, $params)
     {
+        if (is_array($params)) {
+            $layer = isset($params[0]) ? $params[0] : NULL;
+        } else {
+            $layer = NULL;
+        }
+
         // $params[0] -> the layer
-        if ($error = $this->_checkLayer(@$params[0])) {
+        if ($error = $this->_checkLayer($layer)) {
             return $this->raiseError("config-show:$error");
         }
         $keys = $this->config->getKeys();
@@ -170,7 +176,7 @@
         $data = array('caption' => 'Configuration (channel ' . $channel . '):');
         foreach ($keys as $key) {
             $type = $this->config->getType($key);
-            $value = $this->config->get($key, @$params[0], $channel);
+            $value = $this->config->get($key, $layer, $channel);
             if ($type == 'password' && $value) {
                 $value = '********';
             }
@@ -184,7 +190,7 @@
         foreach ($this->config->getLayers() as $layer) {
             $data['data']['Config Files'][] = array(ucfirst($layer) . ' Configuration File', 'Filename' , $this->config->getConfFile($layer));
         }
-        
+
         $this->ui->outputData($data, $command);
         return true;
     }
@@ -194,27 +200,38 @@
 
     function doConfigGet($command, $options, $params)
     {
-        // $params[0] -> the parameter
-        // $params[1] -> the layer
-        if ($error = $this->_checkLayer(@$params[1])) {
-            return $this->raiseError("config-get:$error");
+        if (!is_array($params)) {
+            $args_cnt = 0;
+        } else {
+            $args_cnt  = count($params);
         }
-        $channel = isset($options['channel']) ? $options['channel'] :
-            $this->config->get('default_channel');
+
+        switch ($args_cnt) {
+            case 1:
+                $config_key = $params[0];
+                $layer = NULL;
+                break;
+            case 2:
+                $config_key = $params[0];
+                $layer = $params[1];
+                if ($error = $this->_checkLayer($layer)) {
+                    return $this->raiseError("config-get:$error");
+                }
+                break;
+            case 0:
+            default:
+                return $this->raiseError("config-get expects 1 or 2 parameters");
+        }
+
+        $channel = isset($options['channel']) ? $options['channel'] : $this->config->get('default_channel');
         $reg = &$this->config->getRegistry();
+
         if (!$reg->channelExists($channel)) {
             return $this->raiseError('Channel "' . $channel . '" does not exist');
         }
-        if (sizeof($params) < 1 || sizeof($params) > 2) {
-            return $this->raiseError("config-get expects 1 or 2 parameters");
-        } else {
-            if (count($params) == 1) {
-                $layer = null;
-            } else {
-                $layer = $params[1];
-            }
-            $this->ui->outputData($this->config->get($params[0], $layer, $channel), $command);
-        }
+
+        $this->ui->outputData($this->config->get($config_key, $layer, $channel), $command);
+
         return true;
     }
 
@@ -231,7 +248,7 @@
             $failmsg .= "config-set expects 2 or 3 parameters";
             return PEAR::raiseError($failmsg);
         }
-        if ($error = $this->_checkLayer(@$params[2])) {
+        if (isset($params[2]) && $error = $this->_checkLayer($params[2])) {
             $failmsg .= $error;
             return PEAR::raiseError("config-set:$failmsg");
         }
@@ -372,7 +389,7 @@
                 array(ucfirst($layer) . ' Configuration File', 'Filename' ,
                     $config->getConfFile($layer));
         }
-        
+
         $this->ui->outputData($data, 'config-show');
         return true;
     }
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Install.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Install.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Install.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Install.php	2006-12-31 03:43:36.000000000 -0600
@@ -16,7 +16,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Install.php,v 1.112 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Install.php,v 1.115 2006/03/02 18:14:13 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 0.1
  */
@@ -36,7 +36,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 0.1
  */
@@ -371,6 +371,9 @@
                 }
                 $this->config->set('default_channel', $channel);
                 $chan = &$reg->getChannel($channel);
+                if (PEAR::isError($chan)) {
+                    return $this->raiseError($chan);
+                }
                 if ($chan->supportsREST($this->config->get('preferred_mirror')) &&
                       $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) {
                     $dorest = true;
@@ -536,23 +539,29 @@
                                 $group['attribs']['hint'] . ')');
                         }
                         $extrainfo[] = 'To install use "pear install ' .
-                            $param->getPackage() . '#featurename"';
+                            $reg->parsedPackageNameToString(
+                                array('package' => $param->getPackage(),
+                                      'channel' => $param->getChannel()), true) .
+                                  '#featurename"';
                     }
                 }
                 if (isset($options['installroot'])) {
                     $reg = &$this->config->getRegistry();
                 }
                 $pkg = &$reg->getPackage($param->getPackage(), $param->getChannel());
-                $pkg->setConfig($this->config);
-                if ($list = $pkg->listPostinstallScripts()) {
-                    $pn = $reg->parsedPackageNameToString(array('channel' =>
-                        $param->getChannel(), 'package' => $param->getPackage()), true);
-                    $extrainfo[] = $pn . ' has post-install scripts:';
-                    foreach ($list as $file) {
-                        $extrainfo[] = $file;
+                // $pkg may be NULL if install is a 'fake' install via --packagingroot
+                if (is_object($pkg)) {
+                    $pkg->setConfig($this->config);
+                    if ($list = $pkg->listPostinstallScripts()) {
+                        $pn = $reg->parsedPackageNameToString(array('channel' =>
+                           $param->getChannel(), 'package' => $param->getPackage()), true);
+                        $extrainfo[] = $pn . ' has post-install scripts:';
+                        foreach ($list as $file) {
+                            $extrainfo[] = $file;
+                        }
+                        $extrainfo[] = 'Use "pear run-scripts ' . $pn . '" to run';
+                        $extrainfo[] = 'DO NOT RUN SCRIPTS FROM UNTRUSTED SOURCES';
                     }
-                    $extrainfo[] = 'Use "pear run-scripts ' . $pn . '" to run';
-                    $extrainfo[] = 'DO NOT RUN SCRIPTS FROM UNTRUSTED SOURCES';
                 }
             } else {
                 return $this->raiseError("$command failed");
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Mirror.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Mirror.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Mirror.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Mirror.php	2006-12-31 03:43:36.000000000 -0600
@@ -15,7 +15,7 @@
  * @author     Alexander Merz <alexmerz@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Mirror.php,v 1.16 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Mirror.php,v 1.18 2006/03/02 18:14:13 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.2.0
  */
@@ -33,7 +33,7 @@
  * @author     Alexander Merz <alexmerz@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.2.0
  */
@@ -113,6 +113,9 @@
         $this->config->set('default_channel', $channel);
         $this->ui->outputData('Using Channel ' . $this->config->get('default_channel'));
         $chan = $reg->getChannel($channel);
+        if (PEAR::isError($chan)) {
+            return $this->raiseError($chan);
+        }
         if ($chan->supportsREST($this->config->get('preferred_mirror')) &&
               $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) {
             $rest = &$this->config->getREST('1.0', array());
@@ -129,6 +132,9 @@
         if (PEAR::isError($cmd)) {
             return $cmd;
         }
+        $this->ui->outputData('Using Preferred State of ' .
+            $this->config->get('preferred_state'));
+        $this->ui->outputData('Gathering release information, please wait...');
         /**
          * Error handling not necessary, because already done by 
          * the download command
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Package.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Package.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Package.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Package.php	2006-12-31 03:43:36.000000000 -0600
@@ -18,7 +18,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Package.php,v 1.115 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Package.php,v 1.119.2.1 2006/06/07 23:39:22 pajoye Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 0.1
  */
@@ -185,7 +185,7 @@
             'shortcut' => 'pd',
             'options' => array(),
             'doc' => '
-List all depencies the package has.'
+List all dependencies the package has.'
             ),
         'sign' => array(
             'summary' => 'Sign a package distribution file',
@@ -730,27 +730,46 @@
         $a = &new PEAR_Installer($ui);
         return $a;
     }
+    
+    /**
+     * For unit testing purposes
+     */
+    function &getCommandPackaging(&$ui, &$config)
+    {
+        if (!class_exists('PEAR_Command_Packaging')) {
+            @include_once 'PEAR/Command/Packaging.php';
+        }
+        
+        if (class_exists('PEAR_Command_Packaging')) {
+            $a = &new PEAR_Command_Packaging($ui, $config);
+        } else {
+            $a = null;
+        }
+        return $a;
+    }
 
     // {{{ doMakeRPM()
 
-    /*
-
-    (cox)
-
-    TODO:
-        - Fill the rpm dependencies in the template file.
-
-    IDEAS:
-        - Instead of mapping the role to rpm vars, perhaps it's better
-          to use directly the pear cmd to install the files by itself
-          in %postrun so:
-          pear -d php_dir=%{_libdir}/php/pear -d test_dir=.. <package>
-    */
-
     function doMakeRPM($command, $options, $params)
     {
         require_once 'System.php';
         require_once 'Archive/Tar.php';
+
+        // Check to see if PEAR_Command_Packaging is installed, and
+        // transparently switch to use the "make-rpm-spec" command from it
+        // instead, if it does. Otherwise, continue to use the old version
+        // of "makerpm" supplied with this package (PEAR).
+        $packaging_cmd = $this->getCommandPackaging($this->ui, $this->config);
+        if ($packaging_cmd !== null) {
+            $this->ui->outputData('PEAR_Command_Packaging is installed; using '.
+                'newer "make-rpm-spec" command instead');
+            return $packaging_cmd->run('make-rpm-spec', $options, $params);
+        } else {
+            $this->ui->outputData('WARNING: "pear makerpm" is now deprecated; an '.
+              'improved version is available via "pear make-rpm-spec", which '.
+              'is available by installing PEAR_Command_Packaging');
+        }
+        
         if (sizeof($params) != 1) {
             return $this->raiseError("bad parameter(s), try \"help $command\"");
         }
@@ -804,6 +823,9 @@
                 $alias = 'PEAR';
             } else {
                 $chan = &$reg->getChannel($pf->getChannel());
+                if (PEAR::isError($chan)) {
+                    return $this->raiseError($chan);
+                }
                 $alias = $chan->getAlias();
                 $alias = strtoupper($alias);
                 $info['possible_channel'] = $pf->getChannel() . '/';
@@ -873,6 +895,9 @@
         foreach ($cfg as $k) {
             if ($k == 'master_server') {
                 $chan = $reg->getChannel($pf->getChannel());
+                if (PEAR::isError($chan)) {
+                    return $this->raiseError($chan);
+                }
                 $info[$k] = $chan->getServer();
                 continue;
             }
@@ -899,6 +924,9 @@
                     if (isset($dep['channel']) && $dep['channel'] != 'pear.php.net' &&
                           $dep['channel'] != 'pecl.php.net') {
                         $chan = &$reg->getChannel($dep['channel']);
+                        if (PEAR::isError($chan)) {
+                            return $this->raiseError($chan);
+                        }
                         $package = strtoupper($chan->getAlias()) . '::' . $dep['name'];
                     } else {
                         $package = 'PEAR::' . $dep['name'];
@@ -942,6 +970,9 @@
                     foreach ($deps['required']['package'] as $dep) {
                         if ($dep['channel'] != 'pear.php.net' &&  $dep['channel'] != 'pecl.php.net') {
                             $chan = &$reg->getChannel($dep['channel']);
+                            if (PEAR::isError($chan)) {
+                                return $this->raiseError($chan);
+                            }
                             $package = strtoupper($chan->getAlias()) . '::' . $dep['name'];
                         } else {
                             $package = 'PEAR::' . $dep['name'];
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Package.xml 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Package.xml
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Package.xml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Package.xml	2006-12-31 03:43:36.000000000 -0600
@@ -133,7 +133,7 @@
   <shortcut>pd</shortcut>
   <options />
   <doc>
-List all depencies the package has.</doc>
+List all dependencies the package has.</doc>
  </package-dependencies>
  <sign>
   <summary>Sign a package distribution file</summary>
@@ -191,4 +191,4 @@
 used for automated conversion or learning the format.
 </doc>
  </convert>
-</commands>
\ No newline at end of file
+</commands>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Pickle.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Pickle.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Pickle.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Pickle.php	2006-12-31 03:43:36.000000000 -0600
@@ -15,7 +15,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  2005-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Pickle.php,v 1.5 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Pickle.php,v 1.5.2.1 2006/05/10 03:25:15 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.1
  */
@@ -33,7 +33,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  2005-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.1
  */
@@ -156,7 +156,7 @@
         require_once 'PEAR/PackageFile/v1.php';
         $pf = new PEAR_PackageFile_v1;
         $pf->setConfig($this->config);
-        if (is_array($pf2->getPackageType() != 'extsrc')) {
+        if ($pf2->getPackageType() != 'extsrc') {
             return $this->raiseError('Cannot safely convert "' . $packagexml .
             '", is not an extension source package.  Using a PEAR_PackageFileManager-based ' .
             'script is an option');
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Registry.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Registry.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Registry.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Registry.php	2006-12-31 03:43:36.000000000 -0600
@@ -35,7 +35,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 0.1
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Remote.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Remote.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Remote.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Remote.php	2006-12-31 03:43:37.000000000 -0600
@@ -17,7 +17,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Remote.php,v 1.87 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Remote.php,v 1.90.2.3 2006/06/04 12:27:55 pajoye Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 0.1
  */
@@ -37,7 +37,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 0.1
  */
@@ -158,6 +158,13 @@
 
     function _checkChannelForStatus($channel, $chan)
     {
+        if (PEAR::isError($chan)) {
+            $this->raiseError($chan);
+        }
+        if (!is_a($chan, 'PEAR_ChannelFile')) {
+            return $this->raiseError('Internal corruption error: invalid channel "' .
+                $channel . '"');
+        }
         $rest = new PEAR_REST($this->config);
         PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);
         $a = $rest->downloadHttp('http://' . $channel .
@@ -188,7 +195,9 @@
         $channel = $parsed['channel'];
         $this->config->set('default_channel', $channel);
         $chan = $reg->getChannel($channel);
-        $this->_checkChannelForStatus($channel, $chan);
+        if (PEAR::isError($e = $this->_checkChannelForStatus($channel, $chan))) {
+            return $e;
+        }
         if ($chan->supportsREST($this->config->get('preferred_mirror')) &&
               $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) {
             $rest = &$this->config->getREST('1.0', array());
@@ -233,7 +242,9 @@
             }
         }
         $chan = $reg->getChannel($channel);
-        $this->_checkChannelForStatus($channel, $chan);
+        if (PEAR::isError($e = $this->_checkChannelForStatus($channel, $chan))) {
+            return $e;
+        }
         $list_options = false;
         if ($this->config->get('preferred_state') == 'stable') {
             $list_options = true;
@@ -299,7 +310,9 @@
             $list_options = true;
         }
         $chan = $reg->getChannel($channel);
-        $this->_checkChannelForStatus($channel, $chan);
+        if (PEAR::isError($e = $this->_checkChannelForStatus($channel, $chan))) {
+            return $e;
+        }
         if ($chan->supportsREST($this->config->get('preferred_mirror')) &&
               $base = $chan->getBaseURL('REST1.1', $this->config->get('preferred_mirror'))) {
             // use faster list-all if available
@@ -415,7 +428,9 @@
             }
         }
         $chan = $reg->getChannel($channel);
-        $this->_checkChannelForStatus($channel, $chan);
+        if (PEAR::isError($e = $this->_checkChannelForStatus($channel, $chan))) {
+            return $e;
+        }
         if ($chan->supportsREST($this->config->get('preferred_mirror')) &&
               $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) {
             $rest = &$this->config->getREST('1.0', array());
@@ -480,6 +495,8 @@
     {
         // make certain that dependencies are ignored
         $options['downloadonly'] = 1;
+        // eliminate error messages for preferred_state-related errors
+        $options['ignorepreferred_state'] = 1;
         $downloader = &$this->getDownloader($options);
         $downloader->setDownloadDir(getcwd());
         $errors = array();
@@ -490,10 +507,9 @@
         }
         $errors = $downloader->getErrorMsgs();
         if (count($errors)) {
-            $errinfo = array();
-            $errinfo['data'] = array($errors);
-            $errinfo['headline'] = 'Download Errors';
-            $this->ui->outputData($errinfo);
+            foreach ($errors as $error) {
+                $this->ui->outputData($error);
+            }
             return $this->raiseError("$command failed");
         }
         $downloaded = $downloader->getDownloadedPackages();
@@ -516,6 +532,9 @@
     function doListUpgrades($command, $options, $params)
     {
         require_once 'PEAR/Common.php';
+        if (isset($params[0]) && !is_array(PEAR_Common::betterStates($params[0]))) {
+            return $this->raiseError($params[0] . ' is not a valid state (stable/beta/alpha/devel/etc.) try "pear help list-upgrades"');
+        }
         $savechannel = $channel = $this->config->get('default_channel');
         $reg = &$this->config->getRegistry();
         foreach ($reg->listChannels() as $channel) {
@@ -534,7 +553,9 @@
             }
             $caption = $channel . ' Available Upgrades';
             $chan = $reg->getChannel($channel);
-            $this->_checkChannelForStatus($channel, $chan);
+            if (PEAR::isError($e = $this->_checkChannelForStatus($channel, $chan))) {
+                return $e;
+            }
             if ($chan->supportsREST($this->config->get('preferred_mirror')) &&
                   $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) {
                 $rest = &$this->config->getREST('1.0', array());
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Test.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Test.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Test.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Test.php	2006-12-31 03:43:37.000000000 -0600
@@ -17,7 +17,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Test.php,v 1.6 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Test.php,v 1.9 2006/02/03 22:28:08 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 0.1
  */
@@ -37,7 +37,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 0.1
  */
@@ -77,6 +77,10 @@
                     'shortopt' => 'p',
                     'doc' => 'Treat parameters as installed packages from which to run tests',
                 ),
+                'phpunit' => array(
+                    'shortopt' => 'u',
+                    'doc' => 'Search parameters for AllTests.php, and use that to run phpunit-based tests',
+                ),
             ),
             'doc' => '[testfile|dir ...]
 Run regression tests with PHP\'s regression testing script (run-tests.php).',
@@ -137,8 +141,14 @@
                     if (isset($atts['role']) && $atts['role'] != 'test') {
                         continue;
                     }
-                    if (!preg_match('/\.phpt$/', $name)) {
-                        continue;
+                    if (isset($options['phpunit'])) {
+                        if (!preg_match('/AllTests\.php$/i', $name)) {
+                            continue;
+                        }
+                    } else {
+                        if (!preg_match('/\.phpt$/', $name)) {
+                            continue;
+                        }
                     }
                     $params[] = $atts['installed_as'];
                 }
@@ -146,21 +156,34 @@
         }
         foreach ($params as $p) {
             if (is_dir($p)) {
-                $dir = System::find(array($p, '-type', 'f',
-                                            '-maxdepth', $depth,
-                                            '-name', '*.phpt'));
+                if (isset($options['phpunit'])) {
+                    $dir = System::find(array($p, '-type', 'f',
+                                                '-maxdepth', $depth,
+                                                '-name', 'AllTests.php'));
+                } else {
+                    $dir = System::find(array($p, '-type', 'f',
+                                                '-maxdepth', $depth,
+                                                '-name', '*.phpt'));
+                }
                 $tests = array_merge($tests, $dir);
             } else {
-                if (!@file_exists($p)) {
-                    if (!preg_match('/\.phpt$/', $p)) {
-                        $p .= '.phpt';
+                if (isset($options['phpunit'])) {
+                    if (!preg_match('/AllTests\.php$/i', $p)) {
+                        continue;
                     }
-                    $dir = System::find(array(dirname($p), '-type', 'f',
-                                                '-maxdepth', $depth,
-                                                '-name', $p));
-                    $tests = array_merge($tests, $dir);
-                } else {
                     $tests[] = $p;
+                } else {
+                    if (!@file_exists($p)) {
+                        if (!preg_match('/\.phpt$/', $p)) {
+                            $p .= '.phpt';
+                        }
+                        $dir = System::find(array(dirname($p), '-type', 'f',
+                                                    '-maxdepth', $depth,
+                                                    '-name', $p));
+                        $tests = array_merge($tests, $dir);
+                    } else {
+                        $tests[] = $p;
+                    }
                 }
             }
         }
@@ -195,11 +218,6 @@
                 $this->ui->log(0, $result->getMessage());
                 continue;
             }
-            if (OS_WINDOWS) {
-                for($i=0;$i<2000;$i++) {
-                    $i = $i; // delay - race conditions on windows
-                }
-            }
             if (isset($options['realtimelog'])) {
                 $fp = @fopen('run-tests.log', 'a');
                 if ($fp) {
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Test.xml 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Test.xml
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command/Test.xml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command/Test.xml	2006-12-31 03:43:36.000000000 -0600
@@ -29,6 +29,10 @@
     <shortopt>p</shortopt>
     <doc>Treat parameters as installed packages from which to run tests</doc>
    </package>
+   <phpunit>
+    <shortopt>u</shortopt>
+    <doc>Search parameters for AllTests.php, and use that to run phpunit-based tests</doc>
+   </phpunit>
   </options>
   <doc>[testfile|dir ...]
 Run regression tests with PHP&apos;s regression testing script (run-tests.php).</doc>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Command.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Command.php	2006-12-31 03:43:37.000000000 -0600
@@ -16,7 +16,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Command.php,v 1.36 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Command.php,v 1.36.2.1 2006/06/16 13:01:59 pajoye Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 0.1
  */
@@ -94,7 +94,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 0.1
  */
@@ -231,6 +231,11 @@
         if ($dir === null) {
             $dir = dirname(__FILE__) . '/Command';
         }
+
+        if (!@is_dir($dir)) {
+            return PEAR::raiseError("registerCommands: opendir($dir) '$dir' does not exist or is not a directory");
+        }
+
         $dp = @opendir($dir);
         if (empty($dp)) {
             return PEAR::raiseError("registerCommands: opendir($dir) failed");
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Common.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Common.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Common.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Common.php	2006-12-31 03:43:37.000000000 -0600
@@ -17,7 +17,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Common.php,v 1.153 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Common.php,v 1.155 2006/03/02 18:14:12 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 0.1.0
  * @deprecated File deprecated since Release 1.4.0a1
@@ -47,11 +47,11 @@
 define('PEAR_COMMON_PACKAGE_DOWNLOAD_PREG', '/^' . _PEAR_COMMON_PACKAGE_DOWNLOAD_PREG .
     '$/');
 
-define('_PEAR_CHANNELS_NAME_PREG', '[A-Za-z][a-zA-Z0-9_\.]+');
+define('_PEAR_CHANNELS_NAME_PREG', '[A-Za-z][a-zA-Z0-9\.]+');
 define('PEAR_CHANNELS_NAME_PREG', '/^' . _PEAR_CHANNELS_NAME_PREG . '$/');
 
 // this should allow any dns or IP address, plus a path - NO UNDERSCORES ALLOWED
-define('_PEAR_CHANNELS_SERVER_PREG', '[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*(\/[a-zA-Z0-9-]+)*');
+define('_PEAR_CHANNELS_SERVER_PREG', '[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*(\/[a-zA-Z0-9\-]+)*');
 define('PEAR_CHANNELS_SERVER_PREG', '/^' . _PEAR_CHANNELS_SERVER_PREG . '$/i');
 
 define('_PEAR_CHANNELS_PACKAGE_PREG',  '(' ._PEAR_CHANNELS_SERVER_PREG . ')\/('
@@ -128,7 +128,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  * @deprecated This class will disappear, and its components will be spread
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Config.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Config.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Config.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Config.php	2006-12-31 03:43:37.000000000 -0600
@@ -16,7 +16,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Config.php,v 1.123 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Config.php,v 1.124.2.3 2006/07/15 00:38:27 pajoye Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 0.1
  */
@@ -138,6 +138,15 @@
            $PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'tests');
 }
 
+// Default for temp_dir
+if (getenv('PHP_PEAR_TEMP_DIR')) {
+    define('PEAR_CONFIG_DEFAULT_TEMP_DIR', getenv('PHP_PEAR_TEMP_DIR'));
+} else {
+    define('PEAR_CONFIG_DEFAULT_TEMP_DIR',
+           System::tmpdir() . DIRECTORY_SEPARATOR . 'pear' .
+           DIRECTORY_SEPARATOR . 'temp');
+}
+
 // Default for cache_dir
 if (getenv('PHP_PEAR_CACHE_DIR')) {
     define('PEAR_CONFIG_DEFAULT_CACHE_DIR', getenv('PHP_PEAR_CACHE_DIR'));
@@ -147,6 +156,15 @@
            DIRECTORY_SEPARATOR . 'cache');
 }
 
+// Default for download_dir
+if (getenv('PHP_PEAR_DOWNLOAD_DIR')) {
+    define('PEAR_CONFIG_DEFAULT_DOWNLOAD_DIR', getenv('PHP_PEAR_DOWNLOAD_DIR'));
+} else {
+    define('PEAR_CONFIG_DEFAULT_DOWNLOAD_DIR',
+           System::tmpdir() . DIRECTORY_SEPARATOR . 'pear' .
+           DIRECTORY_SEPARATOR . 'download');
+}
+
 // Default for php_bin
 if (getenv('PHP_PEAR_PHP_BIN')) {
     define('PEAR_CONFIG_DEFAULT_PHP_BIN', getenv('PHP_PEAR_PHP_BIN'));
@@ -216,7 +234,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 0.1
  */
@@ -412,6 +430,20 @@
             'prompt' => 'PEAR Installer cache directory',
             'group' => 'File Locations (Advanced)',
             ),
+        'temp_dir' => array(
+            'type' => 'directory',
+            'default' => PEAR_CONFIG_DEFAULT_TEMP_DIR,
+            'doc' => 'directory which is used for all temp files',
+            'prompt' => 'PEAR Installer temp directory',
+            'group' => 'File Locations (Advanced)',
+            ),
+        'download_dir' => array(
+            'type' => 'directory',
+            'default' => PEAR_CONFIG_DEFAULT_CACHE_DIR,
+            'doc' => 'directory which is used for all downloaded files',
+            'prompt' => 'PEAR Installer download directory',
+            'group' => 'File Locations (Advanced)',
+            ),
         'php_bin' => array(
             'type' => 'file',
             'default' => PEAR_CONFIG_DEFAULT_PHP_BIN,
@@ -1265,6 +1297,9 @@
                         $reg = &$this->getRegistry();
                         if (is_object($reg)) {
                             $chan = &$reg->getChannel($channel);
+                            if (PEAR::isError($chan)) {
+                                return $channel;
+                            }
                             if (!$chan->getMirror($test) && $chan->getName() != $test) {
                                 return $channel; // mirror does not exist
                             }
@@ -1286,6 +1321,9 @@
                 $reg = &$this->getRegistry();
                 if (is_object($reg)) {
                     $chan = &$reg->getChannel($channel);
+                    if (PEAR::isError($chan)) {
+                        return $channel;
+                    }
                     if (!$chan->getMirror($test) && $chan->getName() != $test) {
                         return $channel; // mirror does not exist
                     }
@@ -1329,6 +1367,9 @@
                 $reg = &$this->getRegistry($layer);
                 if (is_object($reg)) {
                     $chan = &$reg->getChannel($channel);
+                    if (PEAR::isError($chan)) {
+                        return $channel;
+                    }
                     if (!$chan->getMirror($ret) && $chan->getName() != $ret) {
                         return $channel; // mirror does not exist
                     }
@@ -1383,6 +1424,9 @@
             $reg = &$this->getRegistry($layer);
             if (is_object($reg)) {
                 $chan = &$reg->getChannel($channel ? $channel : 'pear.php.net');
+                if (PEAR::isError($chan)) {
+                    return false;
+                }
                 if (!$chan->getMirror($value) && $chan->getName() != $value) {
                     return false; // mirror does not exist
                 }
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Dependency2.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Dependency2.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Dependency2.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Dependency2.php	2006-12-31 03:43:37.000000000 -0600
@@ -37,7 +37,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
@@ -525,7 +525,7 @@
      */
     function getPEARVersion()
     {
-        return '1.4.6';
+        return '1.4.11';
     }
 
     function validatePearinstallerDependency($dep)
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/DependencyDB.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/DependencyDB.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/DependencyDB.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/DependencyDB.php	2006-12-31 03:43:37.000000000 -0600
@@ -16,7 +16,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: DependencyDB.php,v 1.30 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: DependencyDB.php,v 1.30.2.1 2006/05/25 22:00:05 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.0a1
  */
@@ -35,7 +35,7 @@
  * @author     Tomas V.V.Cox <cox@idec.net.com>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
@@ -290,16 +290,36 @@
             return false;
         }
         foreach ($this->_cache['dependencies'][$channel][$package] as $info) {
+            if (isset($info['dep']['uri'])) {
+                if (is_object($child)) {
+                    if ($info['dep']['uri'] == $child->getURI()) {
+                        return true;
+                    }
+                } elseif (isset($child['uri'])) {
+                    if ($info['dep']['uri'] == $child['uri']) {
+                        return true;
+                    }
+                }
+                return false;
+            }
             if (strtolower($info['dep']['channel']) == strtolower($depchannel) &&
                   strtolower($info['dep']['name']) == strtolower($deppackage)) {
                 return true;
             }
         }
         foreach ($this->_cache['dependencies'][$channel][$package] as $info) {
-            if ($this->_dependsOn(array(
-                    'channel' => $info['dep']['channel'],
-                    'package' => $info['dep']['name']), $child, $checked)) {
-                return true;
+            if (isset($info['dep']['uri'])) {
+                if ($this->_dependsOn(array(
+                        'uri' => $info['dep']['uri'],
+                        'package' => $info['dep']['name']), $child, $checked)) {
+                    return true;
+                }
+            } else {
+                if ($this->_dependsOn(array(
+                        'channel' => $info['dep']['channel'],
+                        'package' => $info['dep']['name']), $child, $checked)) {
+                    return true;
+                }
             }
         }
         return false;
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Downloader/Package.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Downloader/Package.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Downloader/Package.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Downloader/Package.php	2006-12-31 03:43:37.000000000 -0600
@@ -15,11 +15,16 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Package.php,v 1.90 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Package.php,v 1.91.2.1 2006/05/25 22:00:05 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.0a1
  */
 /**
+ * Error code when parameter initialization fails because no releases
+ * exist within preferred_state, but releases do exist
+ */
+define('PEAR_DOWNLOADER_PACKAGE_STATE', -1003);
+/**
  * Coordinates download parameters and manages their dependencies
  * prior to downloading them.
  *
@@ -44,7 +49,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
@@ -147,7 +152,7 @@
      * This is the heart of the PEAR_Downloader_Package(), and is used in
      * {@link PEAR_Downloader::download()}
      * @param string
-     * @return void|PEAR_Error
+     * @return bool|PEAR_Error
      */
     function initialize($param)
     {
@@ -174,6 +179,10 @@
                 }
                 $err = $this->_fromString($param);
                 if (PEAR::isError($err) || !$this->_valid) {
+                    if (PEAR::isError($err) &&
+                          $err->getCode() == PEAR_DOWNLOADER_PACKAGE_STATE) {
+                        return false; // instruct the downloader to silently skip
+                    }
                     if (isset($this->_type) && $this->_type == 'local' &&
                           PEAR::isError($origErr)) {
                         if (is_array($origErr->getUserInfo())) {
@@ -209,6 +218,7 @@
                 }
             }
         }
+        return true;
     }
 
     /**
@@ -1000,8 +1010,10 @@
             }
         } else {
             if (isset($param['uri'])) {
-                $param['channel'] = '__uri';
-                $param['package'] = $param['dep']['name'];
+                if ($this->getChannel() != '__uri') {
+                    return false;
+                }
+                return $param['uri'] == $this->getURI();
             }
             $package = isset($param['package']) ? $param['package'] :
                 $param['info']->getPackage();
@@ -1522,7 +1534,11 @@
                             $this->_registry->parsedPackageNameToString($pname, true) .
                             ' can be installed with "pecl install ' . $pname['package'] .
                             '"');
+                    } else {
+                        $pname['channel'] = 'pear.php.net';
                     }
+                } else {
+                    $pname['channel'] = 'pear.php.net';
                 }
             }
             return $info;
@@ -1672,6 +1688,22 @@
                     $vs = ' within preferred state "' . $this->_downloader->config->get(
                         'preferred_state') . '"';
                 }
+                $options = $this->_downloader->getOptions();
+                // this is only set by the "download-all" command
+                if (isset($options['ignorepreferred_state'])) {
+                    $err = PEAR::raiseError(
+                        'Failed to download ' . $this->_registry->parsedPackageNameToString(
+                            array('channel' => $pname['channel'], 'package' => $pname['package']),
+                                true)
+                         . $vs .
+                        ', latest release is version ' . $info['version'] .
+                        ', stability "' . $info['info']->getState() . '", use "' .
+                        $this->_registry->parsedPackageNameToString(
+                            array('channel' => $pname['channel'], 'package' => $pname['package'],
+                            'version' => $info['version'])) . '" to install',
+                            PEAR_DOWNLOADER_PACKAGE_STATE);
+                    return $err;
+                }
                 $err = PEAR::raiseError(
                     'Failed to download ' . $this->_registry->parsedPackageNameToString(
                         array('channel' => $pname['channel'], 'package' => $pname['package']),
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Downloader.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Downloader.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Downloader.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Downloader.php	2006-12-31 03:43:37.000000000 -0600
@@ -18,7 +18,7 @@
  * @author     Martin Jansen <mj@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Downloader.php,v 1.96 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Downloader.php,v 1.99.2.2 2006/06/16 12:35:12 pajoye Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.3.0
  */
@@ -45,7 +45,7 @@
  * @author     Martin Jansen <mj@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.3.0
  */
@@ -132,7 +132,7 @@
      * @access private
      */
     var $_errorStack = array();
-    
+
     /**
      * @var boolean
      * @access private
@@ -278,6 +278,10 @@
             PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);
             $err = $params[$i]->initialize($param);
             PEAR::staticPopErrorHandling();
+            if (!$err) {
+                // skip parameters that were missed by preferred_state
+                continue;
+            }
             if (PEAR::isError($err)) {
                 if (!isset($this->_options['soft'])) {
                     $this->log(0, $err->getMessage());
@@ -289,27 +293,46 @@
                 $this->pushError('Package "' . $param . '" is not valid',
                     PEAR_INSTALLER_SKIPPED);
             } else {
-                if ($params[$i] && !isset($channelschecked[$params[$i]->getChannel()]) &&
-                      !isset($this->_options['offline'])) {
-                    $channelschecked[$params[$i]->getChannel()] = true;
-                    PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);
-                    if (!class_exists('System')) {
-                        require_once 'System.php';
+                do {
+                    if ($params[$i] && $params[$i]->getType() == 'local') {
+                        // bug #7090
+                        // skip channel.xml check for local packages
+                        break;
                     }
-                    $curchannel = &$this->_registry->getChannel($params[$i]->getChannel());
-                    $a = $this->downloadHttp('http://' . $params[$i]->getChannel() .
-                        '/channel.xml', $this->ui,
-                        System::mktemp(array('-d')), null, $curchannel->lastModified());
-                    PEAR::staticPopErrorHandling();
-                    if (PEAR::isError($a) || !$a) {
-                        continue;
+                    if ($params[$i] && !isset($channelschecked[$params[$i]->getChannel()]) &&
+                          !isset($this->_options['offline'])) {
+                        $channelschecked[$params[$i]->getChannel()] = true;
+                        PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);
+                        if (!class_exists('System')) {
+                            require_once 'System.php';
+                        }
+                        $curchannel = &$this->_registry->getChannel($params[$i]->getChannel());
+                        if (PEAR::isError($curchannel)) {
+                            PEAR::staticPopErrorHandling();
+                            return $this->raiseError($curchannel);
+                        }
+                        $a = $this->downloadHttp('http://' . $params[$i]->getChannel() .
+                            '/channel.xml', $this->ui,
+                            System::mktemp(array('-t' . $this->getDownloadDir())), null, $curchannel->lastModified());
+
+                        PEAR::staticPopErrorHandling();
+                        if (PEAR::isError($a) || !$a) {
+                                break;
+                        }
+                        $this->log(0, 'WARNING: channel "' . $params[$i]->getChannel() . '" has ' .
+                            'updated its protocols, use "channel-update ' . $params[$i]->getChannel() .
+                            '" to update');
                     }
-                    $this->log(0, 'WARNING: channel "' . $params[$i]->getChannel() . '" has ' .
-                        'updated its protocols, use "channel-update ' . $params[$i]->getChannel() .
-                        '" to update');
-                }
+                } while (false);
                 if ($params[$i] && !isset($this->_options['downloadonly'])) {
-                    $checkdir = $this->config->get('php_dir', null, $params[$i]->getChannel());
+                    if (isset($this->_options['packagingroot'])) {
+                        $checkdir = $this->_prependPath(
+                            $this->config->get('php_dir', null, $params[$i]->getChannel()),
+                            $this->_options['packagingroot']);
+                    } else {
+                        $checkdir = $this->config->get('php_dir',
+                            null, $params[$i]->getChannel());
+                    }
                     while ($checkdir && $checkdir != '/' && !file_exists($checkdir)) {
                         $checkdir = dirname($checkdir);
                     }
@@ -703,10 +726,14 @@
                         break;
                     }
                 }
+                $this->configSet('default_channel', $curchannel);
                 return PEAR::raiseError('Unknown remote channel: ' . $remotechannel);
             } while (false);
         }
         $chan = &$this->_registry->getChannel($parr['channel']);
+        if (PEAR::isError($chan)) {
+            return $chan;
+        }
         $version = $this->_registry->packageInfo($parr['package'], 'version',
             $parr['channel']);
         if ($chan->supportsREST($this->config->get('preferred_mirror')) &&
@@ -719,6 +746,7 @@
                 $url = $rest->getDownloadURL($base, $parr, $state, false);
             }
             if (PEAR::isError($url)) {
+                $this->configSet('default_channel', $curchannel);
                 return $url;
             }
             if ($parr['channel'] != $curchannel) {
@@ -823,30 +851,62 @@
     {
         $xsdversion = isset($dep['rel']) ? '1.0' : '2.0';
         $curchannel = $this->config->get('default_channel');
-        if (isset($dep['channel'])) {
-            $remotechannel = $dep['channel'];
+        if (isset($dep['uri'])) {
+            $xsdversion = '2.0';
+            $chan = &$this->_registry->getChannel('__uri');
+            if (PEAR::isError($chan)) {
+                return $chan;
+            }
+            $version = $this->_registry->packageInfo($dep['name'], 'version', '__uri');
+            $this->configSet('default_channel', '__uri');
         } else {
-            $remotechannel = 'pear.php.net';
-        }
-        if (!$this->_registry->channelExists($remotechannel)) {
-            do {
-                if ($this->config->get('auto_discover')) {
-                    if ($this->discover($remotechannel)) {
-                        break;
+            if (isset($dep['channel'])) {
+                $remotechannel = $dep['channel'];
+            } else {
+                $remotechannel = 'pear.php.net';
+            }
+            if (!$this->_registry->channelExists($remotechannel)) {
+                do {
+                    if ($this->config->get('auto_discover')) {
+                        if ($this->discover($remotechannel)) {
+                            break;
+                        }
                     }
-                }
-                return PEAR::raiseError('Unknown remote channel: ' . $remotechannel);
-            } while (false);
+                    return PEAR::raiseError('Unknown remote channel: ' . $remotechannel);
+                } while (false);
+            }
+            $chan = &$this->_registry->getChannel($remotechannel);
+            if (PEAR::isError($chan)) {
+                return $chan;
+            }
+            $version = $this->_registry->packageInfo($dep['name'], 'version',
+                $remotechannel);
+            $this->configSet('default_channel', $remotechannel);
         }
-        $this->configSet('default_channel', $remotechannel);
         $state = isset($parr['state']) ? $parr['state'] : $this->config->get('preferred_state');
         if (isset($parr['state']) && isset($parr['version'])) {
             unset($parr['state']);
         }
-        $chan = &$this->_registry->getChannel($remotechannel);
-        $version = $this->_registry->packageInfo($dep['name'], 'version',
-            $remotechannel);
-        if ($chan->supportsREST($this->config->get('preferred_mirror')) &&
+        if (isset($dep['uri'])) {
+            $info = &$this->newDownloaderPackage($this);
+            PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);
+            $err = $info->initialize($dep);
+            PEAR::staticPopErrorHandling();
+            if (!$err) {
+                // skip parameters that were missed by preferred_state
+                return PEAR::raiseError('Cannot initialize dependency');
+            }
+            if (PEAR::isError($err)) {
+                if (!isset($this->_options['soft'])) {
+                    $this->log(0, $err->getMessage());
+                }
+                if (is_object($info)) {
+                    $param = $info->getChannel() . '/' . $info->getPackage();
+                }
+                return PEAR::raiseError('Package "' . $param . '" is not valid');
+            }
+            return $info;
+        } elseif ($chan->supportsREST($this->config->get('preferred_mirror')) &&
               $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) {
             $rest = &$this->config->getREST('1.0', $this->_options);
             $url = $rest->getDepDownloadURL($base, $xsdversion, $dep, $parr,
@@ -903,7 +963,7 @@
         } else {
             $url = $this->_remote->call('package.getDepDownloadURL', $xsdversion, $dep, $parr, $state);
         }
-        if ($parr['channel'] != $curchannel) {
+        if ($this->config->get('default_channel') != $curchannel) {
             $this->configSet('default_channel', $curchannel);
         }
         if (!is_array($url)) {
@@ -951,6 +1011,9 @@
             $package = "http://pear.php.net/get/$package";
         } else {
             $chan = $this->_registry->getChannel($channel);
+            if (PEAR::isError($chan)) {
+                return '';
+            }
             $package = "http://" . $chan->getServer() . "/get/$package";
         }
         if (!extension_loaded("zlib")) {
@@ -1058,7 +1121,7 @@
      */
     function sortPkgDeps(&$packages, $uninstall = false)
     {
-        $uninstall ? 
+        $uninstall ?
             $this->sortPackagesForUninstall($packages) :
             $this->sortPackagesForInstall($packages);
     }
@@ -1301,7 +1364,7 @@
             $config = &PEAR_Config::singleton();
         }
         $proxy_host = $proxy_port = $proxy_user = $proxy_pass = '';
-        if ($config->get('http_proxy')&& 
+        if ($config->get('http_proxy')&&
               $proxy = parse_url($config->get('http_proxy'))) {
             $proxy_host = @$proxy['host'];
             if (isset($proxy['scheme']) && $proxy['scheme'] == 'https') {
@@ -1369,7 +1432,7 @@
             $ifmodifiedsince = ($lastmodified ? "If-Modified-Since: $lastmodified\r\n" : '');
         }
         $request .= "Host: $host:$port\r\n" . $ifmodifiedsince .
-            "User-Agent: PEAR/1.4.6/PHP/" . PHP_VERSION . "\r\n";
+            "User-Agent: PEAR/1.4.11/PHP/" . PHP_VERSION . "\r\n";
         if (isset($this)) { // only pass in authentication for non-static calls
             $username = $config->get('username');
             $password = $config->get('password');
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/ErrorStack.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/ErrorStack.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/ErrorStack.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/ErrorStack.php	2006-12-31 03:43:37.000000000 -0600
@@ -132,7 +132,7 @@
  * $local_stack = new PEAR_ErrorStack('MyPackage');
  * </code>
  * @author     Greg Beaver <cellog@php.net>
- * @version    1.4.6
+ * @version    1.4.11
  * @package    PEAR_ErrorStack
  * @category   Debugging
  * @copyright  2004-2006 Greg Beaver
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Exception.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Exception.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Exception.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Exception.php	2006-12-31 03:43:37.000000000 -0600
@@ -95,7 +95,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.3.3
  *
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Frontend/CLI.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Frontend/CLI.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Frontend/CLI.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Frontend/CLI.php	2006-12-31 03:43:37.000000000 -0600
@@ -16,7 +16,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: CLI.php,v 1.57 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: CLI.php,v 1.59 2006/03/02 13:16:19 pajoye Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 0.1
  */
@@ -33,7 +33,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 0.1
  */
@@ -455,12 +455,17 @@
             } else {
                 $w = strlen($col);
             }
-            if ($w > @$this->params['widest'][$i]) {
+
+            if (isset($this->params['widest'][$i])) {
+                if ($w > $this->params['widest'][$i]) {
+                    $this->params['widest'][$i] = $w;
+                }
+            } else {
                 $this->params['widest'][$i] = $w;
             }
             $tmp = count_chars($columns[$i], 1);
             // handle unix, mac and windows formats
-            $lines = (isset($tmp[10]) ? $tmp[10] : @$tmp[13]) + 1;
+            $lines = (isset($tmp[10]) ? $tmp[10] : (isset($tmp[13]) ? $tmp[13] : 0)) + 1;
             if ($lines > $highest) {
                 $highest = $lines;
             }
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Frontend.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Frontend.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Frontend.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Frontend.php	2006-12-31 03:43:37.000000000 -0600
@@ -15,7 +15,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Frontend.php,v 1.7 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Frontend.php,v 1.9 2006/03/03 13:13:07 pajoye Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.0a1
  */
@@ -34,7 +34,7 @@
 
 /**
  * Singleton-based frontend for PEAR user input/output
- * 
+ *
  * Note that frontend classes must implement userConfirm(), and shoul implement
  * displayFatalError() and outputData()
  * @category   pear
@@ -42,7 +42,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
@@ -106,6 +106,38 @@
     }
 
     /**
+     * Set the frontend class that will be used by calls to {@link singleton()}
+     *
+     * Frontends are expected to be a descendant of PEAR_Frontend
+     * @param PEAR_Frontend
+     * @return PEAR_Frontend
+     * @static
+     */
+    function &setFrontendObject($uiobject)
+    {
+        if (is_object($GLOBALS['_PEAR_FRONTEND_SINGLETON']) &&
+              is_a($GLOBALS['_PEAR_FRONTEND_SINGLETON'], get_class($uiobject))) {
+            return $GLOBALS['_PEAR_FRONTEND_SINGLETON'];
+        }
+        if (!is_a($uiobject, 'PEAR_Frontend')) {
+            $err = PEAR::raiseError('not a valid frontend class: (' .
+                get_class($uiobject) . ')');
+            return $err;
+        }
+        // quick test to see if this class implements a few of the most
+        // important frontend methods
+        if (method_exists($uiobject, 'userConfirm')) {
+            $GLOBALS['_PEAR_FRONTEND_SINGLETON'] = &$uiobject;
+            $GLOBALS['_PEAR_FRONTEND_CLASS'] = get_class($uiobject);
+            return $uiobject;
+        } else {
+            $err = PEAR::raiseError("not a value frontend class: (" . get_class($uiobject)
+                . ')');
+            return $err;
+        }
+    }
+
+    /**
      * @param string $path relative or absolute include path
      * @return boolean
      * @static
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Common.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Common.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Common.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Common.php	2006-12-31 03:43:36.000000000 -0600
@@ -30,7 +30,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Data.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Data.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Data.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Data.php	2006-12-31 03:43:36.000000000 -0600
@@ -26,7 +26,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Doc.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Doc.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Doc.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Doc.php	2006-12-31 03:43:36.000000000 -0600
@@ -26,7 +26,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Ext.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Ext.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Ext.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Ext.php	2006-12-31 03:43:36.000000000 -0600
@@ -26,7 +26,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Php.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Php.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Php.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Php.php	2006-12-31 03:43:36.000000000 -0600
@@ -26,7 +26,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Script.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Script.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Script.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Script.php	2006-12-31 03:43:36.000000000 -0600
@@ -26,7 +26,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Src.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Src.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Src.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Src.php	2006-12-31 03:43:36.000000000 -0600
@@ -26,7 +26,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Test.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Test.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Test.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role/Test.php	2006-12-31 03:43:36.000000000 -0600
@@ -26,7 +26,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer/Role.php	2006-12-31 03:43:36.000000000 -0600
@@ -32,7 +32,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Installer.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Installer.php	2006-12-31 03:43:37.000000000 -0600
@@ -18,7 +18,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Installer.php,v 1.224 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Installer.php,v 1.228.2.1 2006/03/05 20:07:52 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 0.1
  */
@@ -42,7 +42,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 0.1
  */
@@ -295,147 +295,150 @@
         $dest_file = $dest_dir . DIRECTORY_SEPARATOR . '.tmp' . basename($final_dest_file);
         // }}}
 
-        if (!@is_dir($dest_dir)) {
+        if (empty($this->_options['register-only']) && !@is_dir($dest_dir)) {
             if (!$this->mkDirHier($dest_dir)) {
                 return $this->raiseError("failed to mkdir $dest_dir",
                                          PEAR_INSTALLER_FAILED);
             }
             $this->log(3, "+ mkdir $dest_dir");
         }
-        if (empty($atts['replacements'])) {
-            if (!file_exists($orig_file)) {
-                return $this->raiseError("file $orig_file does not exist",
-                                         PEAR_INSTALLER_FAILED);
-            }
-            if (!@copy($orig_file, $dest_file)) {
-                return $this->raiseError("failed to write $dest_file",
-                                         PEAR_INSTALLER_FAILED);
-            }
-            $this->log(3, "+ cp $orig_file $dest_file");
-            if (isset($atts['md5sum'])) {
-                $md5sum = md5_file($dest_file);
-            }
-        } else {
-            // {{{ file with replacements
-            if (!file_exists($orig_file)) {
-                return $this->raiseError("file does not exist",
-                                         PEAR_INSTALLER_FAILED);
-            }
-            if (function_exists('file_get_contents')) {
-                $contents = file_get_contents($orig_file);
+        // pretty much nothing happens if we are only registering the install
+        if (empty($this->_options['register-only'])) {
+            if (empty($atts['replacements'])) {
+                if (!file_exists($orig_file)) {
+                    return $this->raiseError("file $orig_file does not exist",
+                                             PEAR_INSTALLER_FAILED);
+                }
+                if (!@copy($orig_file, $dest_file)) {
+                    return $this->raiseError("failed to write $dest_file",
+                                             PEAR_INSTALLER_FAILED);
+                }
+                $this->log(3, "+ cp $orig_file $dest_file");
+                if (isset($atts['md5sum'])) {
+                    $md5sum = md5_file($dest_file);
+                }
             } else {
-                $fp = fopen($orig_file, "r");
-                $contents = @fread($fp, filesize($orig_file));
-                fclose($fp);
-            }
-            if ($contents === false) {
-                $contents = '';
-            }
-            if (isset($atts['md5sum'])) {
-                $md5sum = md5($contents);
-            }
-            $subst_from = $subst_to = array();
-            foreach ($atts['replacements'] as $a) {
-                $to = '';
-                if ($a['type'] == 'php-const') {
-                    if (preg_match('/^[a-z0-9_]+$/i', $a['to'])) {
-                        eval("\$to = $a[to];");
-                    } else {
-                        if (!isset($options['soft'])) {
-                            $this->log(0, "invalid php-const replacement: $a[to]");
+                // {{{ file with replacements
+                if (!file_exists($orig_file)) {
+                    return $this->raiseError("file does not exist",
+                                             PEAR_INSTALLER_FAILED);
+                }
+                if (function_exists('file_get_contents')) {
+                    $contents = file_get_contents($orig_file);
+                } else {
+                    $fp = fopen($orig_file, "r");
+                    $contents = @fread($fp, filesize($orig_file));
+                    fclose($fp);
+                }
+                if ($contents === false) {
+                    $contents = '';
+                }
+                if (isset($atts['md5sum'])) {
+                    $md5sum = md5($contents);
+                }
+                $subst_from = $subst_to = array();
+                foreach ($atts['replacements'] as $a) {
+                    $to = '';
+                    if ($a['type'] == 'php-const') {
+                        if (preg_match('/^[a-z0-9_]+$/i', $a['to'])) {
+                            eval("\$to = $a[to];");
+                        } else {
+                            if (!isset($options['soft'])) {
+                                $this->log(0, "invalid php-const replacement: $a[to]");
+                            }
+                            continue;
                         }
-                        continue;
-                    }
-                } elseif ($a['type'] == 'pear-config') {
-                    if ($a['to'] == 'master_server') {
-                        $chan = $this->_registry->getChannel($channel);
-                        if ($chan) {
-                            $to = $chan->getServer();
+                    } elseif ($a['type'] == 'pear-config') {
+                        if ($a['to'] == 'master_server') {
+                            $chan = $this->_registry->getChannel($channel);
+                            if (!PEAR::isError($chan)) {
+                                $to = $chan->getServer();
+                            } else {
+                                $to = $this->config->get($a['to'], null, $channel);
+                            }
                         } else {
                             $to = $this->config->get($a['to'], null, $channel);
                         }
-                    } else {
-                        $to = $this->config->get($a['to'], null, $channel);
-                    }
-                    if (is_null($to)) {
-                        if (!isset($options['soft'])) {
-                            $this->log(0, "invalid pear-config replacement: $a[to]");
+                        if (is_null($to)) {
+                            if (!isset($options['soft'])) {
+                                $this->log(0, "invalid pear-config replacement: $a[to]");
+                            }
+                            continue;
                         }
-                        continue;
-                    }
-                } elseif ($a['type'] == 'package-info') {
-                    if ($t = $this->pkginfo->packageInfo($a['to'])) {
-                        $to = $t;
-                    } else {
-                        if (!isset($options['soft'])) {
-                            $this->log(0, "invalid package-info replacement: $a[to]");
+                    } elseif ($a['type'] == 'package-info') {
+                        if ($t = $this->pkginfo->packageInfo($a['to'])) {
+                            $to = $t;
+                        } else {
+                            if (!isset($options['soft'])) {
+                                $this->log(0, "invalid package-info replacement: $a[to]");
+                            }
+                            continue;
                         }
-                        continue;
+                    }
+                    if (!is_null($to)) {
+                        $subst_from[] = $a['from'];
+                        $subst_to[] = $to;
                     }
                 }
-                if (!is_null($to)) {
-                    $subst_from[] = $a['from'];
-                    $subst_to[] = $to;
+                $this->log(3, "doing ".sizeof($subst_from)." substitution(s) for $final_dest_file");
+                if (sizeof($subst_from)) {
+                    $contents = str_replace($subst_from, $subst_to, $contents);
                 }
-            }
-            $this->log(3, "doing ".sizeof($subst_from)." substitution(s) for $final_dest_file");
-            if (sizeof($subst_from)) {
-                $contents = str_replace($subst_from, $subst_to, $contents);
-            }
-            $wp = @fopen($dest_file, "wb");
-            if (!is_resource($wp)) {
-                return $this->raiseError("failed to create $dest_file: $php_errormsg",
-                                         PEAR_INSTALLER_FAILED);
-            }
-            if (fwrite($wp, $contents) === false) {
-                return $this->raiseError("failed writing to $dest_file: $php_errormsg",
-                                         PEAR_INSTALLER_FAILED);
-            }
-            fclose($wp);
-            // }}}
-        }
-        // {{{ check the md5
-        if (isset($md5sum)) {
-            if (strtolower($md5sum) == strtolower($atts['md5sum'])) {
-                $this->log(2, "md5sum ok: $final_dest_file");
-            } else {
-                if (empty($options['force'])) {
-                    // delete the file
-                    @unlink($dest_file);
-                    if (!isset($options['ignore-errors'])) {
-                        return $this->raiseError("bad md5sum for file $final_dest_file",
+                $wp = @fopen($dest_file, "wb");
+                if (!is_resource($wp)) {
+                    return $this->raiseError("failed to create $dest_file: $php_errormsg",
+                                             PEAR_INSTALLER_FAILED);
+                }
+                if (fwrite($wp, $contents) === false) {
+                    return $this->raiseError("failed writing to $dest_file: $php_errormsg",
                                              PEAR_INSTALLER_FAILED);
+                }
+                fclose($wp);
+                // }}}
+            }
+            // {{{ check the md5
+            if (isset($md5sum)) {
+                if (strtolower($md5sum) == strtolower($atts['md5sum'])) {
+                    $this->log(2, "md5sum ok: $final_dest_file");
+                } else {
+                    if (empty($options['force'])) {
+                        // delete the file
+                        @unlink($dest_file);
+                        if (!isset($options['ignore-errors'])) {
+                            return $this->raiseError("bad md5sum for file $final_dest_file",
+                                                 PEAR_INSTALLER_FAILED);
+                        } else {
+                            if (!isset($options['soft'])) {
+                                $this->log(0, "warning : bad md5sum for file $final_dest_file");
+                            }
+                        }
                     } else {
                         if (!isset($options['soft'])) {
                             $this->log(0, "warning : bad md5sum for file $final_dest_file");
                         }
                     }
+                }
+            }
+            // }}}
+            // {{{ set file permissions
+            if (!OS_WINDOWS) {
+                if ($atts['role'] == 'script') {
+                    $mode = 0777 & ~(int)octdec($this->config->get('umask'));
+                    $this->log(3, "+ chmod +x $dest_file");
                 } else {
+                    $mode = 0666 & ~(int)octdec($this->config->get('umask'));
+                }
+                $this->addFileOperation("chmod", array($mode, $dest_file));
+                if (!@chmod($dest_file, $mode)) {
                     if (!isset($options['soft'])) {
-                        $this->log(0, "warning : bad md5sum for file $final_dest_file");
+                        $this->log(0, "failed to change mode of $dest_file");
                     }
                 }
             }
+            // }}}
+            $this->addFileOperation("rename", array($dest_file, $final_dest_file,
+                $atts['role'] == 'ext'));
         }
-        // }}}
-        // {{{ set file permissions
-        if (!OS_WINDOWS) {
-            if ($atts['role'] == 'script') {
-                $mode = 0777 & ~(int)octdec($this->config->get('umask'));
-                $this->log(3, "+ chmod +x $dest_file");
-            } else {
-                $mode = 0666 & ~(int)octdec($this->config->get('umask'));
-            }
-            $this->addFileOperation("chmod", array($mode, $dest_file));
-            if (!@chmod($dest_file, $mode)) {
-                if (!isset($options['soft'])) {
-                    $this->log(0, "failed to change mode of $dest_file");
-                }
-            }
-        }
-        // }}}
-        $this->addFileOperation("rename", array($dest_file, $final_dest_file,
-            $atts['role'] == 'ext'));
         // Store the full path where the file was installed for easy unistall
         $this->addFileOperation("installed_as", array($file, $installed_as,
                                 $save_destdir, dirname(substr($installedas_dest_file, strlen($save_destdir)))));
@@ -491,114 +494,119 @@
         $dest_file = $dest_dir . DIRECTORY_SEPARATOR . '.tmp' . basename($final_dest_file);
         // }}}
 
-        if (!@is_dir($dest_dir)) {
-            if (!$this->mkDirHier($dest_dir)) {
-                return $this->raiseError("failed to mkdir $dest_dir",
-                                         PEAR_INSTALLER_FAILED);
+        if (empty($this->_options['register-only'])) {
+            if (!@is_dir($dest_dir)) {
+                if (!$this->mkDirHier($dest_dir)) {
+                    return $this->raiseError("failed to mkdir $dest_dir",
+                                             PEAR_INSTALLER_FAILED);
+                }
+                $this->log(3, "+ mkdir $dest_dir");
             }
-            $this->log(3, "+ mkdir $dest_dir");
         }
         $attribs = $atts['attribs'];
         unset($atts['attribs']);
-        if (!count($atts)) { // no tasks
-            if (!file_exists($orig_file)) {
-                return $this->raiseError("file $orig_file does not exist",
-                                         PEAR_INSTALLER_FAILED);
-            }
-            if (!@copy($orig_file, $dest_file)) {
-                return $this->raiseError("failed to write $dest_file",
-                                         PEAR_INSTALLER_FAILED);
-            }
-            $this->log(3, "+ cp $orig_file $dest_file");
-            if (isset($attribs['md5sum'])) {
-                $md5sum = md5_file($dest_file);
-            }
-        } else { // file with tasks
-            if (!file_exists($orig_file)) {
-                return $this->raiseError("file $orig_file does not exist",
-                                         PEAR_INSTALLER_FAILED);
-            }
-            if (function_exists('file_get_contents')) {
-                $contents = file_get_contents($orig_file);
-            } else {
-                $fp = fopen($orig_file, "r");
-                $contents = @fread($fp, filesize($orig_file)); // filesize can be 0
-                fclose($fp);
-            }
-            if ($contents === false) {
-                $contents = '';
-            }
-            if (isset($attribs['md5sum'])) {
-                $md5sum = md5($contents);
-            }
-            foreach ($atts as $tag => $raw) {
-                $tag = str_replace($pkg->getTasksNs() . ':', '', $tag);
-                $task = "PEAR_Task_$tag";
-                $task = &new $task($this->config, $this, PEAR_TASK_INSTALL);
-                if (!$task->isScript()) { // scripts are only handled after installation
-                    $task->init($raw, $attribs, $pkg->getLastInstalledVersion());
-                    $res = $task->startSession($pkg, $contents, $final_dest_file);
-                    if ($res === false) {
-                        continue; // skip this file
-                    }
-                    if (PEAR::isError($res)) {
-                        return $res;
-                    }
-                    $contents = $res; // save changes
+        // pretty much nothing happens if we are only registering the install
+        if (empty($this->_options['register-only'])) {
+            if (!count($atts)) { // no tasks
+                if (!file_exists($orig_file)) {
+                    return $this->raiseError("file $orig_file does not exist",
+                                             PEAR_INSTALLER_FAILED);
                 }
-                $wp = @fopen($dest_file, "wb");
-                if (!is_resource($wp)) {
-                    return $this->raiseError("failed to create $dest_file: $php_errormsg",
+                if (!@copy($orig_file, $dest_file)) {
+                    return $this->raiseError("failed to write $dest_file",
                                              PEAR_INSTALLER_FAILED);
                 }
-                if (fwrite($wp, $contents) === false) {
-                    return $this->raiseError("failed writing to $dest_file: $php_errormsg",
+                $this->log(3, "+ cp $orig_file $dest_file");
+                if (isset($attribs['md5sum'])) {
+                    $md5sum = md5_file($dest_file);
+                }
+            } else { // file with tasks
+                if (!file_exists($orig_file)) {
+                    return $this->raiseError("file $orig_file does not exist",
                                              PEAR_INSTALLER_FAILED);
                 }
-                fclose($wp);
-            }
-        }
-        // {{{ check the md5
-        if (isset($md5sum)) {
-            if (strtolower($md5sum) == strtolower($attribs['md5sum'])) {
-                $this->log(2, "md5sum ok: $final_dest_file");
-            } else {
-                if (empty($options['force'])) {
-                    // delete the file
-                    @unlink($dest_file);
-                    if (!isset($options['ignore-errors'])) {
-                        return $this->raiseError("bad md5sum for file $final_dest_file",
+                if (function_exists('file_get_contents')) {
+                    $contents = file_get_contents($orig_file);
+                } else {
+                    $fp = fopen($orig_file, "r");
+                    $contents = @fread($fp, filesize($orig_file)); // filesize can be 0
+                    fclose($fp);
+                }
+                if ($contents === false) {
+                    $contents = '';
+                }
+                if (isset($attribs['md5sum'])) {
+                    $md5sum = md5($contents);
+                }
+                foreach ($atts as $tag => $raw) {
+                    $tag = str_replace($pkg->getTasksNs() . ':', '', $tag);
+                    $task = "PEAR_Task_$tag";
+                    $task = &new $task($this->config, $this, PEAR_TASK_INSTALL);
+                    if (!$task->isScript()) { // scripts are only handled after installation
+                        $task->init($raw, $attribs, $pkg->getLastInstalledVersion());
+                        $res = $task->startSession($pkg, $contents, $final_dest_file);
+                        if ($res === false) {
+                            continue; // skip this file
+                        }
+                        if (PEAR::isError($res)) {
+                            return $res;
+                        }
+                        $contents = $res; // save changes
+                    }
+                    $wp = @fopen($dest_file, "wb");
+                    if (!is_resource($wp)) {
+                        return $this->raiseError("failed to create $dest_file: $php_errormsg",
+                                                 PEAR_INSTALLER_FAILED);
+                    }
+                    if (fwrite($wp, $contents) === false) {
+                        return $this->raiseError("failed writing to $dest_file: $php_errormsg",
                                                  PEAR_INSTALLER_FAILED);
+                    }
+                    fclose($wp);
+                }
+            }
+            // {{{ check the md5
+            if (isset($md5sum)) {
+                if (strtolower($md5sum) == strtolower($attribs['md5sum'])) {
+                    $this->log(2, "md5sum ok: $final_dest_file");
+                } else {
+                    if (empty($options['force'])) {
+                        // delete the file
+                        @unlink($dest_file);
+                        if (!isset($options['ignore-errors'])) {
+                            return $this->raiseError("bad md5sum for file $final_dest_file",
+                                                     PEAR_INSTALLER_FAILED);
+                        } else {
+                            if (!isset($options['soft'])) {
+                                $this->log(0, "warning : bad md5sum for file $final_dest_file");
+                            }
+                        }
                     } else {
                         if (!isset($options['soft'])) {
                             $this->log(0, "warning : bad md5sum for file $final_dest_file");
                         }
                     }
+                }
+            }
+            // }}}
+            // {{{ set file permissions
+            if (!OS_WINDOWS) {
+                if ($role->isExecutable()) {
+                    $mode = 0777 & ~(int)octdec($this->config->get('umask'));
+                    $this->log(3, "+ chmod +x $dest_file");
                 } else {
+                    $mode = 0666 & ~(int)octdec($this->config->get('umask'));
+                }
+                $this->addFileOperation("chmod", array($mode, $dest_file));
+                if (!@chmod($dest_file, $mode)) {
                     if (!isset($options['soft'])) {
-                        $this->log(0, "warning : bad md5sum for file $final_dest_file");
+                        $this->log(0, "failed to change mode of $dest_file");
                     }
                 }
             }
+            // }}}
+            $this->addFileOperation("rename", array($dest_file, $final_dest_file, $role->isExtension()));
         }
-        // }}}
-        // {{{ set file permissions
-        if (!OS_WINDOWS) {
-            if ($role->isExecutable()) {
-                $mode = 0777 & ~(int)octdec($this->config->get('umask'));
-                $this->log(3, "+ chmod +x $dest_file");
-            } else {
-                $mode = 0666 & ~(int)octdec($this->config->get('umask'));
-            }
-            $this->addFileOperation("chmod", array($mode, $dest_file));
-            if (!@chmod($dest_file, $mode)) {
-                if (!isset($options['soft'])) {
-                    $this->log(0, "failed to change mode of $dest_file");
-                }
-            }
-        }
-        // }}}
-        $this->addFileOperation("rename", array($dest_file, $final_dest_file, $role->isExtension()));
         // Store the full path where the file was installed for easy uninstall
         $this->addFileOperation("installed_as", array($file, $installed_as,
                             $save_destdir, dirname(substr($dest_file, strlen($save_destdir)))));
@@ -995,7 +1003,7 @@
         $channel = $pkg->getChannel();
         if (isset($this->_options['packagingroot'])) {
             $packrootphp_dir = $this->_prependPath(
-                $this->config->get('php_dir', null, 'pear.php.net'),
+                $this->config->get('php_dir', null, $channel),
                 $this->_options['packagingroot']);
         }
 
@@ -1004,6 +1012,7 @@
             $this->_registry = &$this->config->getRegistry();
             $installregistry = &$this->_registry;
             $this->installroot = ''; // all done automagically now
+            $php_dir = $this->config->get('php_dir', null, $channel);
         } else {
             $this->config->setInstallRoot(false);
             $this->_registry = &$this->config->getRegistry();
@@ -1156,74 +1165,69 @@
         $this->source_files = 0;
 
         $savechannel = $this->config->get('default_channel');
-        if (empty($options['register-only'])) {
-            if (!is_dir($php_dir)) {
-                if (PEAR::isError(System::mkdir(array('-p'), $php_dir))) {
-                    return $this->raiseError("no installation destination directory '$php_dir'\n");
-                }
+        if (empty($options['register-only']) && !is_dir($php_dir)) {
+            if (PEAR::isError(System::mkdir(array('-p'), $php_dir))) {
+                return $this->raiseError("no installation destination directory '$php_dir'\n");
             }
+        }
 
-            $tmp_path = dirname($descfile);
-            if (substr($pkgfile, -4) != '.xml') {
-                $tmp_path .= DIRECTORY_SEPARATOR . $pkgname . '-' . $pkg->getVersion();
-            }
+        $tmp_path = dirname($descfile);
+        if (substr($pkgfile, -4) != '.xml') {
+            $tmp_path .= DIRECTORY_SEPARATOR . $pkgname . '-' . $pkg->getVersion();
+        }
 
-            $this->configSet('default_channel', $channel);
-            // {{{ install files
-            
-            if ($pkg->getPackagexmlVersion() == '2.0') {
-                $filelist = $pkg->getInstallationFilelist();
-                if (PEAR::isError($filelist)) {
-                    return $filelist;
-                }
+        $this->configSet('default_channel', $channel);
+        // {{{ install files
+        
+        if ($pkg->getPackagexmlVersion() == '2.0') {
+            $filelist = $pkg->getInstallationFilelist();
+        } else {
+            $filelist = $pkg->getFileList();
+        }
+        if (PEAR::isError($filelist)) {
+            return $filelist;
+        }
+        $pkg->resetFilelist();
+        $pkg->setLastInstalledVersion($installregistry->packageInfo($pkg->getPackage(),
+            'version', $pkg->getChannel()));
+        foreach ($filelist as $file => $atts) {
+            if ($pkg->getPackagexmlVersion() == '1.0') {
+                $this->expectError(PEAR_INSTALLER_FAILED);
+                $res = $this->_installFile($file, $atts, $tmp_path, $options);
+                $this->popExpect();
             } else {
-                $filelist = $pkg->getFileList();
-            }
-            if (PEAR::isError($filelist)) {
-                return $filelist;
-            }
-            $pkg->resetFilelist();
-            $pkg->setLastInstalledVersion($installregistry->packageInfo($pkg->getPackage(),
-                'version', $pkg->getChannel()));
-            foreach ($filelist as $file => $atts) {
-                if ($pkg->getPackagexmlVersion() == '1.0') {
-                    $this->expectError(PEAR_INSTALLER_FAILED);
-                    $res = $this->_installFile($file, $atts, $tmp_path, $options);
-                    $this->popExpect();
+                $this->expectError(PEAR_INSTALLER_FAILED);
+                $res = $this->_installFile2($pkg, $file, $atts, $tmp_path, $options);
+                $this->popExpect();
+            }
+            if (PEAR::isError($res)) {
+                if (empty($options['ignore-errors'])) {
+                    $this->rollbackFileTransaction();
+                    if ($res->getMessage() == "file does not exist") {
+                        $this->raiseError("file $file in package.xml does not exist");
+                    }
+                    return $this->raiseError($res);
                 } else {
-                    $this->expectError(PEAR_INSTALLER_FAILED);
-                    $res = $this->_installFile2($pkg, $file, $atts, $tmp_path, $options);
-                    $this->popExpect();
-                }
-                if (PEAR::isError($res)) {
-                    if (empty($options['ignore-errors'])) {
-                        $this->rollbackFileTransaction();
-                        if ($res->getMessage() == "file does not exist") {
-                            $this->raiseError("file $file in package.xml does not exist");
-                        }
-                        return $this->raiseError($res);
-                    } else {
-                        if (!isset($options['soft'])) {
-                            $this->log(0, "Warning: " . $res->getMessage());
-                        }
+                    if (!isset($options['soft'])) {
+                        $this->log(0, "Warning: " . $res->getMessage());
                     }
                 }
-                if ($res == PEAR_INSTALLER_OK) {
-                    // Register files that were installed
-                    $pkg->installedFile($file, $atts);
-                }
             }
-            // }}}
+            if ($res == PEAR_INSTALLER_OK) {
+                // Register files that were installed
+                $pkg->installedFile($file, $atts);
+            }
+        }
+        // }}}
 
-            // {{{ compile and install source files
-            if ($this->source_files > 0 && empty($options['nobuild'])) {
-                if (PEAR::isError($err =
-                      $this->_compileSourceFiles($savechannel, $pkg))) {
-                    return $err;
-                }
+        // {{{ compile and install source files
+        if ($this->source_files > 0 && empty($options['nobuild'])) {
+            if (PEAR::isError($err =
+                  $this->_compileSourceFiles($savechannel, $pkg))) {
+                return $err;
             }
-            // }}}
         }
+        // }}}
 
         if (isset($backedup)) {
             $this->_removeBackups($backedup);
@@ -1329,27 +1333,34 @@
             }
             $dest = $ext['dest'];
             $this->log(1, "Installing '$ext[file]'");
-            $copyto = $this->_prependPath($dest, $this->installroot);
-            $copydir = dirname($copyto);
-            if (!@is_dir($copydir)) {
-                if (!$this->mkDirHier($copydir)) {
-                    return $this->raiseError("failed to mkdir $copydir",
-                        PEAR_INSTALLER_FAILED);
-                }
-                $this->log(3, "+ mkdir $copydir");
-            }
-            if (!@copy($ext['file'], $copyto)) {
-                return $this->raiseError("failed to write $copyto", PEAR_INSTALLER_FAILED);
+            $packagingroot = '';
+            if (isset($this->_options['packagingroot'])) {
+                $packagingroot = $this->_options['packagingroot'];
             }
-            $this->log(3, "+ cp $ext[file] $copyto");
-            if (!OS_WINDOWS) {
-                $mode = 0666 & ~(int)octdec($this->config->get('umask'));
-                $this->addFileOperation('chmod', array($mode, $copyto));
-                if (!@chmod($copyto, $mode)) {
-                    $this->log(0, "failed to change mode of $copyto");
+            $copyto = $this->_prependPath($dest, $packagingroot);
+            $copydir = dirname($copyto);
+            // pretty much nothing happens if we are only registering the install
+            if (empty($this->_options['register-only'])) {
+                if (!@is_dir($copydir)) {
+                    if (!$this->mkDirHier($copydir)) {
+                        return $this->raiseError("failed to mkdir $copydir",
+                            PEAR_INSTALLER_FAILED);
+                    }
+                    $this->log(3, "+ mkdir $copydir");
+                }
+                if (!@copy($ext['file'], $copyto)) {
+                    return $this->raiseError("failed to write $copyto", PEAR_INSTALLER_FAILED);
+                }
+                $this->log(3, "+ cp $ext[file] $copyto");
+                if (!OS_WINDOWS) {
+                    $mode = 0666 & ~(int)octdec($this->config->get('umask'));
+                    $this->addFileOperation('chmod', array($mode, $copyto));
+                    if (!@chmod($copyto, $mode)) {
+                        $this->log(0, "failed to change mode of $copyto");
+                    }
                 }
+                $this->addFileOperation('rename', array($ext['file'], $copyto));
             }
-            $this->addFileOperation('rename', array($ext['file'], $copyto));
 
             if ($filelist->getPackageXmlVersion() == '1.0') {
                 $filelist->installedFile($bn, array(
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/Generator/v1.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/Generator/v1.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/Generator/v1.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/Generator/v1.php	2006-12-31 03:43:36.000000000 -0600
@@ -15,7 +15,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: v1.php,v 1.70 2006/01/06 04:47:37 cellog Exp $
+ * @version    CVS: $Id: v1.php,v 1.70.2.1 2006/05/10 02:55:06 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.0a1
  */
@@ -35,7 +35,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
@@ -52,7 +52,7 @@
 
     function getPackagerVersion()
     {
-        return '1.4.6';
+        return '1.4.11';
     }
 
     /**
@@ -206,7 +206,7 @@
             );
         $ret = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
         $ret .= "<!DOCTYPE package SYSTEM \"http://pear.php.net/dtd/package-1.0\">\n";
-        $ret .= "<package version=\"1.0\" packagerversion=\"1.4.6\">\n" .
+        $ret .= "<package version=\"1.0\" packagerversion=\"1.4.11\">\n" .
 " <name>$pkginfo[package]</name>";
         if (isset($pkginfo['extends'])) {
             $ret .= "\n<extends>$pkginfo[extends]</extends>";
@@ -680,7 +680,9 @@
         }
         $ret = new $class;
         $ret->setConfig($this->_packagefile->_config);
-        $ret->setLogger($this->_packagefile->_logger);
+        if (isset($this->_packagefile->_logger) && is_object($this->_packagefile->_logger)) {
+            $ret->setLogger($this->_packagefile->_logger);
+        }
         $ret->fromArray($arr);
         return $ret;
     }
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/Generator/v2.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/Generator/v2.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/Generator/v2.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/Generator/v2.php	2006-12-31 03:43:36.000000000 -0600
@@ -16,7 +16,7 @@
  * @author     Stephan Schmidt (original XML_Serializer code)
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: v2.php,v 1.33 2006/01/06 04:47:37 cellog Exp $
+ * @version    CVS: $Id: v2.php,v 1.34 2006/03/02 20:50:59 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.0a1
  */
@@ -35,7 +35,7 @@
  * @author     Stephan Schmidt (original XML_Serializer code)
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
@@ -61,7 +61,7 @@
                          'indentAttributes'   => false,                 // indent the attributes, if set to '_auto', it will indent attributes so they all start at the same column
                          'mode'               => 'simplexml',             // use 'simplexml' to use parent name as tagname if transforming an indexed array
                          'addDoctype'         => false,                 // add a doctype declaration
-                         'doctype'            => null,                  // supply a string or an array with id and uri ({@see XML_Util::getDoctypeDeclaration()}
+                         'doctype'            => null,                  // supply a string or an array with id and uri ({@see PEAR_PackageFile_Generator_v2_PEAR_PackageFile_Generator_v2_XML_Util::getDoctypeDeclaration()}
                          'rootName'           => 'package',                  // name of the root tag
                          'rootAttributes'     => array(
                              'version' => '2.0',
@@ -114,7 +114,7 @@
      */
     function getPackagerVersion()
     {
-        return '1.4.6';
+        return '1.4.11';
     }
 
     /**
@@ -358,7 +358,7 @@
             }
             $this->options['beautifyFilelist'] = true;
         }
-        $arr['attribs']['packagerversion'] = '1.4.6';
+        $arr['attribs']['packagerversion'] = '1.4.11';
         if ($this->serialize($arr, $options)) {
             return $this->_serializedData . "\n";
         }
@@ -537,7 +537,7 @@
         
         // add doctype declaration
         if ($this->options['addDoctype'] === true) {
-            $this->_serializedData = XML_Util::getDoctypeDeclaration($tagName, $this->options['doctype'])
+            $this->_serializedData = PEAR_PackageFile_Generator_v2_XML_Util::getDoctypeDeclaration($tagName, $this->options['doctype'])
                                    . $this->options['linebreak']
                                    . $this->_serializedData;
         }
@@ -550,7 +550,7 @@
             } else {
                 $encoding = null;
             }
-            $this->_serializedData = XML_Util::getXMLDeclaration('1.0', $encoding)
+            $this->_serializedData = PEAR_PackageFile_Generator_v2_XML_Util::getXMLDeclaration('1.0', $encoding)
                                    . $this->options['linebreak']
                                    . $this->_serializedData;
         }
@@ -613,7 +613,7 @@
     * @param    string  $tagName     name of the root tag
     * @param    array   $attributes  attributes for the root tag
     * @return   string  $string      serialized data
-    * @uses     XML_Util::isValidName() to check, whether key has to be substituted
+    * @uses     PEAR_PackageFile_Generator_v2_XML_Util::isValidName() to check, whether key has to be substituted
     */
     function _serializeArray(&$array, $tagName = null, $attributes = array())
     {
@@ -695,7 +695,7 @@
         
 		if ($this->options['scalarAsAttributes'] === true) {
 	        foreach ($array as $key => $value) {
-				if (is_scalar($value) && (XML_Util::isValidName($key) === true)) {
+				if (is_scalar($value) && (PEAR_PackageFile_Generator_v2_XML_Util::isValidName($key) === true)) {
 					unset($array[$key]);
 					$attributes[$this->options['prependAttributes'].$key] = $value;
 				}
@@ -722,7 +722,7 @@
     			//	copy key
     			$origKey	=	$key;
     			//	key cannot be used as tagname => use default tag
-                $valid = XML_Util::isValidName($key);
+                $valid = PEAR_PackageFile_Generator_v2_XML_Util::isValidName($key);
     	        if (PEAR::isError($valid)) {
     	            if ($this->options['classAsTagName'] && is_object($value)) {
     	                $key = get_class($value);
@@ -842,31 +842,23 @@
         if (is_scalar($tag['content']) || is_null($tag['content'])) {
             if ($this->options['encoding'] == 'UTF-8' &&
                   version_compare(phpversion(), '5.0.0', 'lt')) {
-                $encoding = XML_UTIL_ENTITIES_UTF8_XML;
+                $encoding = PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_UTF8_XML;
             } else {
-                $encoding = XML_UTIL_ENTITIES_XML;
+                $encoding = PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML;
             }
-            $tag = XML_Util::createTagFromArray($tag, $replaceEntities, $multiline, $indent, $this->options['linebreak'], $encoding);
+            $tag = PEAR_PackageFile_Generator_v2_XML_Util::createTagFromArray($tag, $replaceEntities, $multiline, $indent, $this->options['linebreak'], $encoding);
         } elseif (is_array($tag['content'])) {
             $tag    =   $this->_serializeArray($tag['content'], $tag['qname'], $tag['attributes']);
         } elseif (is_object($tag['content'])) {
             $tag    =   $this->_serializeObject($tag['content'], $tag['qname'], $tag['attributes']);
         } elseif (is_resource($tag['content'])) {
             settype($tag['content'], 'string');
-            $tag    =   XML_Util::createTagFromArray($tag, $replaceEntities);
+            $tag    =   PEAR_PackageFile_Generator_v2_XML_Util::createTagFromArray($tag, $replaceEntities);
         }
         return  $tag;
     }
 }
 
-//foreach (explode(PATH_SEPARATOR, ini_get('include_path')) as $path) {
-//    $t = $path . DIRECTORY_SEPARATOR . 'XML' . DIRECTORY_SEPARATOR .
-//          'Util';
-//    if (file_exists($t) && is_readable($t)) {
-//        include_once 'XML/Util';
-//    }
-//}
-//if (!class_exists('XML_Util')) {
 // well, it's one way to do things without extra deps ...
 /* vim: set expandtab tabstop=4 shiftwidth=4: */
 // +----------------------------------------------------------------------+
@@ -885,76 +877,79 @@
 // | Authors: Stephan Schmidt <schst@php-tools.net>                       |
 // +----------------------------------------------------------------------+
 //
-//    $Id: v2.php,v 1.33 2006/01/06 04:47:37 cellog Exp $
+//    $Id: v2.php,v 1.34 2006/03/02 20:50:59 cellog Exp $
 
 /**
  * error code for invalid chars in XML name
  */
-define("XML_UTIL_ERROR_INVALID_CHARS", 51);
+define("PEAR_PackageFile_Generator_v2_XML_Util_ERROR_INVALID_CHARS", 51);
 
 /**
  * error code for invalid chars in XML name
  */
-define("XML_UTIL_ERROR_INVALID_START", 52);
+define("PEAR_PackageFile_Generator_v2_XML_Util_ERROR_INVALID_START", 52);
 
 /**
  * error code for non-scalar tag content
  */
-define("XML_UTIL_ERROR_NON_SCALAR_CONTENT", 60);
+define("PEAR_PackageFile_Generator_v2_XML_Util_ERROR_NON_SCALAR_CONTENT", 60);
     
 /**
  * error code for missing tag name
  */
-define("XML_UTIL_ERROR_NO_TAG_NAME", 61);
+define("PEAR_PackageFile_Generator_v2_XML_Util_ERROR_NO_TAG_NAME", 61);
     
 /**
  * replace XML entities
  */
-define("XML_UTIL_REPLACE_ENTITIES", 1);
+define("PEAR_PackageFile_Generator_v2_XML_Util_REPLACE_ENTITIES", 1);
 
 /**
  * embedd content in a CData Section
  */
-define("XML_UTIL_CDATA_SECTION", 2);
+define("PEAR_PackageFile_Generator_v2_XML_Util_CDATA_SECTION", 2);
 
 /**
  * do not replace entitites
  */
-define("XML_UTIL_ENTITIES_NONE", 0);
+define("PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_NONE", 0);
 
 /**
  * replace all XML entitites
  * This setting will replace <, >, ", ' and &
  */
-define("XML_UTIL_ENTITIES_XML", 1);
+define("PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML", 1);
 
 /**
  * replace only required XML entitites
  * This setting will replace <, " and &
  */
-define("XML_UTIL_ENTITIES_XML_REQUIRED", 2);
+define("PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML_REQUIRED", 2);
 
 /**
  * replace HTML entitites
  * @link    http://www.php.net/htmlentities
  */
-define("XML_UTIL_ENTITIES_HTML", 3);
+define("PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_HTML", 3);
 
 /**
  * replace all XML entitites, and encode from ISO-8859-1 to UTF-8
  * This setting will replace <, >, ", ' and &
  */
-define("XML_UTIL_ENTITIES_UTF8_XML", 4);
+define("PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_UTF8_XML", 4);
 
 /**
  * utility class for working with XML documents
+ * 
+ * customized version of XML_Util 0.6.0
  *
  * @category XML
- * @package  XML_Util
+ * @package  PEAR
  * @version  0.6.0
  * @author   Stephan Schmidt <schst@php.net>
+ * @author   Gregory Beaver <cellog@php.net>
  */
-class XML_Util {
+class PEAR_PackageFile_Generator_v2_XML_Util {
 
    /**
     * return API version
@@ -978,19 +973,19 @@
     * require_once 'XML/Util.php';
     * 
     * // replace XML entites:
-    * $string = XML_Util::replaceEntities("This string contains < & >.");
+    * $string = PEAR_PackageFile_Generator_v2_XML_Util::replaceEntities("This string contains < & >.");
     * </code>
     *
     * @access   public
     * @static
     * @param    string  string where XML special chars should be replaced
-    * @param    integer setting for entities in attribute values (one of XML_UTIL_ENTITIES_XML, XML_UTIL_ENTITIES_XML_REQUIRED, XML_UTIL_ENTITIES_HTML)
+    * @param    integer setting for entities in attribute values (one of PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML, PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML_REQUIRED, PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_HTML)
     * @return   string  string with replaced chars
     */
-    function replaceEntities($string, $replaceEntities = XML_UTIL_ENTITIES_XML)
+    function replaceEntities($string, $replaceEntities = PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML)
     {
         switch ($replaceEntities) {
-            case XML_UTIL_ENTITIES_UTF8_XML:
+            case PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_UTF8_XML:
                 return strtr(utf8_encode($string),array(
                                           '&'  => '&amp;',
                                           '>'  => '&gt;',
@@ -998,7 +993,7 @@
                                           '"'  => '&quot;',
                                           '\'' => '&apos;' ));
                 break;
-            case XML_UTIL_ENTITIES_XML:
+            case PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML:
                 return strtr($string,array(
                                           '&'  => '&amp;',
                                           '>'  => '&gt;',
@@ -1006,13 +1001,13 @@
                                           '"'  => '&quot;',
                                           '\'' => '&apos;' ));
                 break;
-            case XML_UTIL_ENTITIES_XML_REQUIRED:
+            case PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML_REQUIRED:
                 return strtr($string,array(
                                           '&'  => '&amp;',
                                           '<'  => '&lt;',
                                           '"'  => '&quot;' ));
                 break;
-            case XML_UTIL_ENTITIES_HTML:
+            case PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_HTML:
                 return htmlspecialchars($string);
                 break;
         }
@@ -1026,7 +1021,7 @@
     * require_once 'XML/Util.php';
     * 
     * // get an XML declaration:
-    * $xmlDecl = XML_Util::getXMLDeclaration("1.0", "UTF-8", true);
+    * $xmlDecl = PEAR_PackageFile_Generator_v2_XML_Util::getXMLDeclaration("1.0", "UTF-8", true);
     * </code>
     *
     * @access   public
@@ -1035,7 +1030,7 @@
     * @param    string  $encoding    character encoding
     * @param    boolean $standAlone  document is standalone (or not)
     * @return   string  $decl xml declaration
-    * @uses     XML_Util::attributesToString() to serialize the attributes of the XML declaration
+    * @uses     PEAR_PackageFile_Generator_v2_XML_Util::attributesToString() to serialize the attributes of the XML declaration
     */
     function getXMLDeclaration($version = "1.0", $encoding = null, $standalone = null)
     {
@@ -1051,7 +1046,7 @@
             $attributes["standalone"] = $standalone ? "yes" : "no";
         }
         
-        return sprintf("<?xml%s?>", XML_Util::attributesToString($attributes, false));
+        return sprintf("<?xml%s?>", PEAR_PackageFile_Generator_v2_XML_Util::attributesToString($attributes, false));
     }
 
    /**
@@ -1061,7 +1056,7 @@
     * require_once 'XML/Util.php';
     * 
     * // get a doctype declaration:
-    * $xmlDecl = XML_Util::getDocTypeDeclaration("rootTag","myDocType.dtd");
+    * $xmlDecl = PEAR_PackageFile_Generator_v2_XML_Util::getDocTypeDeclaration("rootTag","myDocType.dtd");
     * </code>
     *
     * @access   public
@@ -1101,7 +1096,7 @@
     *              "argh"  =>  "tomato"
     *            );
     *
-    * $attList = XML_Util::attributesToString($att);    
+    * $attList = PEAR_PackageFile_Generator_v2_XML_Util::attributesToString($att);    
     * </code>
     *
     * @access   public
@@ -1111,12 +1106,12 @@
     * @param    boolean       $multiline         use linebreaks, if more than one attribute is given
     * @param    string        $indent            string used for indentation of multiline attributes
     * @param    string        $linebreak         string used for linebreaks of multiline attributes
-    * @param    integer       $entities          setting for entities in attribute values (one of XML_UTIL_ENTITIES_NONE, XML_UTIL_ENTITIES_XML, XML_UTIL_ENTITIES_XML_REQUIRED, XML_UTIL_ENTITIES_HTML)
+    * @param    integer       $entities          setting for entities in attribute values (one of PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_NONE, PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML, PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML_REQUIRED, PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_HTML)
     * @return   string                           string representation of the attributes
-    * @uses     XML_Util::replaceEntities() to replace XML entities in attribute values
+    * @uses     PEAR_PackageFile_Generator_v2_XML_Util::replaceEntities() to replace XML entities in attribute values
     * @todo     allow sort also to be an options array
     */
-    function attributesToString($attributes, $sort = true, $multiline = false, $indent = '    ', $linebreak = "\n", $entities = XML_UTIL_ENTITIES_XML)
+    function attributesToString($attributes, $sort = true, $multiline = false, $indent = '    ', $linebreak = "\n", $entities = PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML)
     {
         /**
          * second parameter may be an array
@@ -1147,16 +1142,16 @@
             }
             if( !$multiline || count($attributes) == 1) {
                 foreach ($attributes as $key => $value) {
-                    if ($entities != XML_UTIL_ENTITIES_NONE) {
-                        $value = XML_Util::replaceEntities($value, $entities);
+                    if ($entities != PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_NONE) {
+                        $value = PEAR_PackageFile_Generator_v2_XML_Util::replaceEntities($value, $entities);
                     }
                     $string .= ' '.$key.'="'.$value.'"';
                 }
             } else {
                 $first = true;
                 foreach ($attributes as $key => $value) {
-                    if ($entities != XML_UTIL_ENTITIES_NONE) {
-                        $value = XML_Util::replaceEntities($value, $entities);
+                    if ($entities != PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_NONE) {
+                        $value = PEAR_PackageFile_Generator_v2_XML_Util::replaceEntities($value, $entities);
                     }
                     if ($first) {
                         $string .= " ".$key.'="'.$value.'"';
@@ -1173,14 +1168,14 @@
    /**
     * create a tag
     *
-    * This method will call XML_Util::createTagFromArray(), which
+    * This method will call PEAR_PackageFile_Generator_v2_XML_Util::createTagFromArray(), which
     * is more flexible.
     *
     * <code>
     * require_once 'XML/Util.php';
     * 
     * // create an XML tag:
-    * $tag = XML_Util::createTag("myNs:myTag", array("foo" => "bar"), "This is inside the tag", "http://www.w3c.org/myNs#");
+    * $tag = PEAR_PackageFile_Generator_v2_XML_Util::createTag("myNs:myTag", array("foo" => "bar"), "This is inside the tag", "http://www.w3c.org/myNs#");
     * </code>
     *
     * @access   public
@@ -1195,10 +1190,10 @@
     * @param    string  $linebreak         string used for linebreaks
     * @param    string  $encoding          encoding that should be used to translate content
     * @return   string  $string            XML tag
-    * @see      XML_Util::createTagFromArray()
-    * @uses     XML_Util::createTagFromArray() to create the tag
+    * @see      PEAR_PackageFile_Generator_v2_XML_Util::createTagFromArray()
+    * @uses     PEAR_PackageFile_Generator_v2_XML_Util::createTagFromArray() to create the tag
     */
-    function createTag($qname, $attributes = array(), $content = null, $namespaceUri = null, $replaceEntities = XML_UTIL_REPLACE_ENTITIES, $multiline = false, $indent = "_auto", $linebreak = "\n", $encoding = XML_UTIL_ENTITIES_XML)
+    function createTag($qname, $attributes = array(), $content = null, $namespaceUri = null, $replaceEntities = PEAR_PackageFile_Generator_v2_XML_Util_REPLACE_ENTITIES, $multiline = false, $indent = "_auto", $linebreak = "\n", $encoding = PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML)
     {
         $tag = array(
                      "qname"      => $qname,
@@ -1215,7 +1210,7 @@
             $tag["namespaceUri"] = $namespaceUri;
         }
 
-        return XML_Util::createTagFromArray($tag, $replaceEntities, $multiline, $indent, $linebreak, $encoding);
+        return PEAR_PackageFile_Generator_v2_XML_Util::createTagFromArray($tag, $replaceEntities, $multiline, $indent, $linebreak, $encoding);
     }
 
    /**
@@ -1242,7 +1237,7 @@
     *           "content"      => "I'm inside the tag",
     *            );
     * // creating a tag with qualified name and namespaceUri
-    * $string = XML_Util::createTagFromArray($tag);
+    * $string = PEAR_PackageFile_Generator_v2_XML_Util::createTagFromArray($tag);
     * </code>
     *
     * @access   public
@@ -1253,18 +1248,18 @@
     * @param    string  $indent            string used to indent attributes (_auto indents attributes so they start at the same column)
     * @param    string  $linebreak         string used for linebreaks
     * @return   string  $string            XML tag
-    * @see      XML_Util::createTag()
-    * @uses     XML_Util::attributesToString() to serialize the attributes of the tag
-    * @uses     XML_Util::splitQualifiedName() to get local part and namespace of a qualified name
+    * @see      PEAR_PackageFile_Generator_v2_XML_Util::createTag()
+    * @uses     PEAR_PackageFile_Generator_v2_XML_Util::attributesToString() to serialize the attributes of the tag
+    * @uses     PEAR_PackageFile_Generator_v2_XML_Util::splitQualifiedName() to get local part and namespace of a qualified name
     */
-    function createTagFromArray($tag, $replaceEntities = XML_UTIL_REPLACE_ENTITIES, $multiline = false, $indent = "_auto", $linebreak = "\n", $encoding = XML_UTIL_ENTITIES_XML)
+    function createTagFromArray($tag, $replaceEntities = PEAR_PackageFile_Generator_v2_XML_Util_REPLACE_ENTITIES, $multiline = false, $indent = "_auto", $linebreak = "\n", $encoding = PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML)
     {
         if (isset($tag["content"]) && !is_scalar($tag["content"])) {
-            return XML_Util::raiseError( "Supplied non-scalar value as tag content", XML_UTIL_ERROR_NON_SCALAR_CONTENT );
+            return PEAR_PackageFile_Generator_v2_XML_Util::raiseError( "Supplied non-scalar value as tag content", PEAR_PackageFile_Generator_v2_XML_Util_ERROR_NON_SCALAR_CONTENT );
         }
 
         if (!isset($tag['qname']) && !isset($tag['localPart'])) {
-            return XML_Util::raiseError( 'You must either supply a qualified name (qname) or local tag name (localPart).', XML_UTIL_ERROR_NO_TAG_NAME );
+            return PEAR_PackageFile_Generator_v2_XML_Util::raiseError( 'You must either supply a qualified name (qname) or local tag name (localPart).', PEAR_PackageFile_Generator_v2_XML_Util_ERROR_NO_TAG_NAME );
         }
 
         // if no attributes hav been set, use empty attributes
@@ -1282,7 +1277,7 @@
             }
         // namespace URI is set, but no namespace
         } elseif (isset($tag["namespaceUri"]) && !isset($tag["namespace"])) {
-            $parts = XML_Util::splitQualifiedName($tag["qname"]);
+            $parts = PEAR_PackageFile_Generator_v2_XML_Util::splitQualifiedName($tag["qname"]);
             $tag["localPart"] = $parts["localPart"];
             if (isset($parts["namespace"])) {
                 $tag["namespace"] = $parts["namespace"];
@@ -1307,14 +1302,14 @@
         }
         
         // create attribute list
-        $attList    =   XML_Util::attributesToString($tag["attributes"], true, $multiline, $indent, $linebreak );
+        $attList    =   PEAR_PackageFile_Generator_v2_XML_Util::attributesToString($tag["attributes"], true, $multiline, $indent, $linebreak );
         if (!isset($tag["content"]) || (string)$tag["content"] == '') {
             $tag    =   sprintf("<%s%s />", $tag["qname"], $attList);
         } else {
-            if ($replaceEntities == XML_UTIL_REPLACE_ENTITIES) {
-                $tag["content"] = XML_Util::replaceEntities($tag["content"], $encoding);
-            } elseif ($replaceEntities == XML_UTIL_CDATA_SECTION) {
-                $tag["content"] = XML_Util::createCDataSection($tag["content"]);
+            if ($replaceEntities == PEAR_PackageFile_Generator_v2_XML_Util_REPLACE_ENTITIES) {
+                $tag["content"] = PEAR_PackageFile_Generator_v2_XML_Util::replaceEntities($tag["content"], $encoding);
+            } elseif ($replaceEntities == PEAR_PackageFile_Generator_v2_XML_Util_CDATA_SECTION) {
+                $tag["content"] = PEAR_PackageFile_Generator_v2_XML_Util::createCDataSection($tag["content"]);
             }
             $tag    =   sprintf("<%s%s>%s</%s>", $tag["qname"], $attList, $tag["content"], $tag["qname"] );
         }        
@@ -1328,7 +1323,7 @@
     * require_once 'XML/Util.php';
     * 
     * // create an XML start element:
-    * $tag = XML_Util::createStartElement("myNs:myTag", array("foo" => "bar") ,"http://www.w3c.org/myNs#");
+    * $tag = PEAR_PackageFile_Generator_v2_XML_Util::createStartElement("myNs:myTag", array("foo" => "bar") ,"http://www.w3c.org/myNs#");
     * </code>
     *
     * @access   public
@@ -1340,7 +1335,7 @@
     * @param    string  $indent            string used to indent attributes (_auto indents attributes so they start at the same column)
     * @param    string  $linebreak         string used for linebreaks
     * @return   string  $string            XML start element
-    * @see      XML_Util::createEndElement(), XML_Util::createTag()
+    * @see      PEAR_PackageFile_Generator_v2_XML_Util::createEndElement(), PEAR_PackageFile_Generator_v2_XML_Util::createTag()
     */
     function createStartElement($qname, $attributes = array(), $namespaceUri = null, $multiline = false, $indent = '_auto', $linebreak = "\n")
     {
@@ -1350,7 +1345,7 @@
         }
         
         if ($namespaceUri != null) {
-            $parts = XML_Util::splitQualifiedName($qname);
+            $parts = PEAR_PackageFile_Generator_v2_XML_Util::splitQualifiedName($qname);
         }
 
         // check for multiline attributes
@@ -1371,7 +1366,7 @@
         }
 
         // create attribute list
-        $attList    =   XML_Util::attributesToString($attributes, true, $multiline, $indent, $linebreak);
+        $attList    =   PEAR_PackageFile_Generator_v2_XML_Util::attributesToString($attributes, true, $multiline, $indent, $linebreak);
         $element    =   sprintf("<%s%s>", $qname, $attList);
         return  $element;
     }
@@ -1383,14 +1378,14 @@
     * require_once 'XML/Util.php';
     * 
     * // create an XML start element:
-    * $tag = XML_Util::createEndElement("myNs:myTag");
+    * $tag = PEAR_PackageFile_Generator_v2_XML_Util::createEndElement("myNs:myTag");
     * </code>
     *
     * @access   public
     * @static
     * @param    string  $qname             qualified tagname (including namespace)
     * @return   string  $string            XML end element
-    * @see      XML_Util::createStartElement(), XML_Util::createTag()
+    * @see      PEAR_PackageFile_Generator_v2_XML_Util::createStartElement(), PEAR_PackageFile_Generator_v2_XML_Util::createTag()
     */
     function createEndElement($qname)
     {
@@ -1405,7 +1400,7 @@
     * require_once 'XML/Util.php';
     * 
     * // create an XML start element:
-    * $tag = XML_Util::createComment("I am a comment");
+    * $tag = PEAR_PackageFile_Generator_v2_XML_Util::createComment("I am a comment");
     * </code>
     *
     * @access   public
@@ -1426,7 +1421,7 @@
     * require_once 'XML/Util.php';
     * 
     * // create a CData section
-    * $tag = XML_Util::createCDataSection("I am content.");
+    * $tag = PEAR_PackageFile_Generator_v2_XML_Util::createCDataSection("I am content.");
     * </code>
     *
     * @access   public
@@ -1446,7 +1441,7 @@
     * require_once 'XML/Util.php';
     * 
     * // split qualified tag
-    * $parts = XML_Util::splitQualifiedName("xslt:stylesheet");
+    * $parts = PEAR_PackageFile_Generator_v2_XML_Util::splitQualifiedName("xslt:stylesheet");
     * </code>
     * the returned array will contain two elements:
     * <pre>
@@ -1491,8 +1486,8 @@
     * require_once 'XML/Util.php';
     * 
     * // verify tag name
-    * $result = XML_Util::isValidName("invalidTag?");
-    * if (XML_Util::isError($result)) {
+    * $result = PEAR_PackageFile_Generator_v2_XML_Util::isValidName("invalidTag?");
+    * if (PEAR_PackageFile_Generator_v2_XML_Util::isError($result)) {
     *    print "Invalid XML name: " . $result->getMessage();
     * }
     * </code>
@@ -1507,19 +1502,19 @@
     {
         // check for invalid chars
         if (!preg_match("/^[[:alnum:]_\-.]$/", $string{0})) {
-            return XML_Util::raiseError( "XML names may only start with letter or underscore", XML_UTIL_ERROR_INVALID_START );
+            return PEAR_PackageFile_Generator_v2_XML_Util::raiseError( "XML names may only start with letter or underscore", PEAR_PackageFile_Generator_v2_XML_Util_ERROR_INVALID_START );
         }
         
         // check for invalid chars
         if (!preg_match("/^([a-zA-Z_]([a-zA-Z0-9_\-\.]*)?:)?[a-zA-Z_]([a-zA-Z0-9_\-\.]+)?$/", $string)) {
-            return XML_Util::raiseError( "XML names may only contain alphanumeric chars, period, hyphen, colon and underscores", XML_UTIL_ERROR_INVALID_CHARS );
+            return PEAR_PackageFile_Generator_v2_XML_Util::raiseError( "XML names may only contain alphanumeric chars, period, hyphen, colon and underscores", PEAR_PackageFile_Generator_v2_XML_Util_ERROR_INVALID_CHARS );
          }
         // XML name is valid
         return true;
     }
 
    /**
-    * replacement for XML_Util::raiseError
+    * replacement for PEAR_PackageFile_Generator_v2_XML_Util::raiseError
     *
     * Avoids the necessity to always require
     * PEAR.php
@@ -1535,5 +1530,4 @@
         return PEAR::raiseError($msg, $code);
     }
 }
-//} // if (!class_exists('XML_Util'))
 ?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/Parser/v2.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/Parser/v2.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/Parser/v2.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/Parser/v2.php	2006-12-31 03:43:36.000000000 -0600
@@ -15,7 +15,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: v2.php,v 1.18 2006/01/06 04:47:37 cellog Exp $
+ * @version    CVS: $Id: v2.php,v 1.19 2006/01/23 17:39:52 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.0a1
  */
@@ -97,7 +97,7 @@
      *               a subclass
      * @return PEAR_PackageFile_v2
      */
-    function parse($data, $file, $archive = false, $class = 'PEAR_PackageFile_v2')
+    function &parse($data, $file, $archive = false, $class = 'PEAR_PackageFile_v2')
     {
         if (PEAR::isError($err = parent::parse($data, $file))) {
             return $err;
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/v1.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/v1.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/v1.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/v1.php	2006-12-31 03:43:36.000000000 -0600
@@ -15,7 +15,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: v1.php,v 1.68 2006/01/06 04:47:37 cellog Exp $
+ * @version    CVS: $Id: v1.php,v 1.69 2006/03/02 18:14:13 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.0a1
  */
@@ -281,7 +281,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
@@ -1200,6 +1200,10 @@
         }
         if (isset($this->_registry) && $this->_isValid) {
             $chan = $this->_registry->getChannel('pear.php.net');
+            if (PEAR::isError($chan)) {
+                $this->_validateError(PEAR_PACKAGEFILE_ERROR_CHANNELVAL, $chan->getMessage());
+                return $this->_isValid = 0;
+            }
             $validator = $chan->getValidationObject();
             $validator->setPackageFile($this);
             $validator->validate($state);
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/v2/rw.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/v2/rw.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/v2/rw.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/v2/rw.php	2006-12-31 03:43:36.000000000 -0600
@@ -15,7 +15,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: rw.php,v 1.13 2006/01/06 04:47:37 cellog Exp $
+ * @version    CVS: $Id: rw.php,v 1.15 2006/01/28 17:35:11 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.0a8
  */
@@ -29,7 +29,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a8
  */
@@ -240,7 +240,7 @@
                 $this->_packageInfo[$role] = array_values($this->_packageInfo[$role]);
             }
         }
-        $this->addMaintainer($newrole, $handle, $name, $email);
+        $this->addMaintainer($newrole, $handle, $name, $email, $active);
         $this->_isValid = 0;
     }
 
@@ -1508,7 +1508,7 @@
             'stability' =>
                 $this->getStability(),
             'date' => $this->getDate(),
-            'license' => $this->getLicense(),
+            'license' => $this->getLicense(true),
             'notes' => $notes ? $notes : $this->getNotes()
             );
     }
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/v2/Validator.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/v2/Validator.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/v2/Validator.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/v2/Validator.php	2006-12-31 03:43:36.000000000 -0600
@@ -17,7 +17,7 @@
 // |                                                                      |
 // +----------------------------------------------------------------------+
 //
-// $Id: Validator.php,v 1.83 2006/01/06 04:47:37 cellog Exp $
+// $Id: Validator.php,v 1.86.2.1 2006/05/10 02:55:06 cellog Exp $
 /**
  * Private validation class used by PEAR_PackageFile_v2 - do not use directly, its
  * sole purpose is to split up the PEAR/PackageFile/v2.php file to make it smaller
@@ -45,6 +45,10 @@
     /**
      * @var int
      */
+    var $_filesValid = 0;
+    /**
+     * @var int
+     */
     var $_curState = 0;
     /**
      * @param PEAR_PackageFile_v2
@@ -99,6 +103,15 @@
             '*changelog',
         );
         $test = $this->_packageInfo;
+        if (isset($test['dependencies']) &&
+              isset($test['dependencies']['required']) &&
+              isset($test['dependencies']['required']['pearinstaller']) &&
+              isset($test['dependencies']['required']['pearinstaller']['min']) &&
+              version_compare('1.4.11',
+                $test['dependencies']['required']['pearinstaller']['min'], '<')) {
+            $this->_pearVersionTooLow($test['dependencies']['required']['pearinstaller']['min']);
+            return false;
+        }
         // ignore post-installation array fields
         if (array_key_exists('filelist', $test)) {
             unset($test['filelist']);
@@ -222,7 +235,7 @@
         $this->_validateRelease();
         if (!$this->_stack->hasErrors()) {
             $chan = $this->_pf->_registry->getChannel($this->_pf->getChannel(), true);
-            if (!$chan) {
+            if (PEAR::isError($chan)) {
                 $this->_unknownChannel($this->_pf->getChannel());
             } else {
                 $valpack = $chan->getValidationPackage();
@@ -1266,6 +1279,14 @@
         return in_array($role, PEAR_Installer_Role::getValidRoles($this->_pf->getPackageType()));
     }
 
+    function _pearVersionTooLow($version)
+    {
+        $this->_stack->push(__FUNCTION__, 'error',
+            array('version' => $version),
+            'This package.xml requires PEAR version %version% to parse properly, we are ' .
+            'version 1.4.11');
+    }
+
     function _invalidTagOrder($oktags, $actual, $root)
     {
         $this->_stack->push(__FUNCTION__, 'error',
@@ -1709,6 +1730,8 @@
     function analyzeSourceCode($file, $string = false)
     {
         if (!function_exists("token_get_all")) {
+            $this->_stack->push(__FUNCTION__, 'error', array('file' => $file),
+                'Parser error: token_get_all() function must exist to analyze source code');
             return false;
         }
         if (!defined('T_DOC_COMMENT')) {
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/v2.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/v2.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/v2.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/PackageFile/v2.php	2006-12-31 03:43:36.000000000 -0600
@@ -15,7 +15,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: v2.php,v 1.122 2006/01/06 04:47:37 cellog Exp $
+ * @version    CVS: $Id: v2.php,v 1.129.2.1 2006/03/23 04:07:51 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.0a1
  */
@@ -29,7 +29,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
@@ -128,6 +128,11 @@
     var $_incomplete = true;
 
     /**
+     * @var PEAR_PackageFile_v2_Validator
+     */
+    var $_v2Validator;
+
+    /**
      * The constructor merely sets up the private error stack
      */
     function PEAR_PackageFile_v2()
@@ -730,7 +735,7 @@
 
     function setLogger(&$logger)
     {
-        if ($logger && (!is_object($logger) || !method_exists($logger, 'log'))) {
+        if (!is_object($logger) || !method_exists($logger, 'log')) {
             return PEAR::raiseError('Logger must be compatible with PEAR_Common::log');
         }
         $this->_logger = &$logger;
@@ -914,7 +919,7 @@
 
     function getMaintainers($raw = false)
     {
-        if (!$this->_isValid && !$this->validate()) {
+        if (!isset($this->_packageInfo['lead'])) {
             return false;
         }
         if ($raw) {
@@ -1653,6 +1658,7 @@
                             if (!isset($dep['min']) &&
                                   !isset($dep['max'])) {
                                 $s['rel'] = 'has';
+                                $s['optional'] = $optional;
                             } elseif (isset($dep['min']) &&
                                   isset($dep['max'])) {
                                 $s['rel'] = 'ge';
@@ -1671,14 +1677,24 @@
                                 $s1['optional'] = $optional;
                                 $ret[] = $s1;
                             } elseif (isset($dep['min'])) {
-                                $s['rel'] = 'ge';
+                                if (isset($dep['exclude']) &&
+                                      $dep['exclude'] == $dep['min']) {
+                                    $s['rel'] = 'gt';
+                                } else {
+                                    $s['rel'] = 'ge';
+                                }
                                 $s['version'] = $dep['min'];
                                 $s['optional'] = $optional;
                                 if ($dtype != 'php') {
                                     $s['name'] = $dep['name'];
                                 }
                             } elseif (isset($dep['max'])) {
-                                $s['rel'] = 'le';
+                                if (isset($dep['exclude']) &&
+                                      $dep['exclude'] == $dep['max']) {
+                                    $s['rel'] = 'lt';
+                                } else {
+                                    $s['rel'] = 'le';
+                                }
                                 $s['version'] = $dep['max'];
                                 $s['optional'] = $optional;
                                 if ($dtype != 'php') {
@@ -1842,7 +1858,8 @@
 
     function analyzeSourceCode($file, $string = false)
     {
-        if (!isset($this->_v2Validator)) {
+        if (!isset($this->_v2Validator) ||
+              !is_a($this->_v2Validator, 'PEAR_PackageFile_v2_Validator')) {
             if (!class_exists('PEAR_PackageFile_v2_Validator')) {
                 require_once 'PEAR/PackageFile/v2/Validator.php';
             }
@@ -1856,7 +1873,8 @@
         if (!isset($this->_packageInfo) || !is_array($this->_packageInfo)) {
             return false;
         }
-        if (!isset($this->_v2Validator)) {
+        if (!isset($this->_v2Validator) ||
+              !is_a($this->_v2Validator, 'PEAR_PackageFile_v2_Validator')) {
             if (!class_exists('PEAR_PackageFile_v2_Validator')) {
                 require_once 'PEAR/PackageFile/v2/Validator.php';
             }
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/PackageFile.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/PackageFile.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/PackageFile.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/PackageFile.php	2006-12-31 03:43:37.000000000 -0600
@@ -15,7 +15,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: PackageFile.php,v 1.32 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: PackageFile.php,v 1.33.2.1 2006/06/08 00:04:13 pajoye Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.0a1
  */
@@ -41,7 +41,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
@@ -332,7 +332,7 @@
                 $xml = $name;
                 break;
             } elseif (ereg('package.xml$', $name, $match)) {
-                $xml = $match[0];
+                $xml = $name;
                 break;
             }
         }
@@ -404,6 +404,11 @@
      */
     function &fromAnyFile($info, $state)
     {
+        if (is_dir($info)) {
+		 	$info = PEAR::raiseError("'$info' is a directory, a file is expected");
+            return $info;
+        }
+
         $fp = false;
         if (is_string($info) && strlen($info) < 255 &&
              (file_exists($info) || ($fp = @fopen($info, 'r')))) {
@@ -433,4 +438,4 @@
     }
 }
 
-?>
\ No newline at end of file
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Packager.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Packager.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Packager.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Packager.php	2006-12-31 03:43:37.000000000 -0600
@@ -37,7 +37,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 0.1
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Registry.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Registry.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Registry.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Registry.php	2006-12-31 03:43:37.000000000 -0600
@@ -17,7 +17,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Registry.php,v 1.145 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Registry.php,v 1.150.2.2 2006/03/11 04:16:48 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 0.1
  */
@@ -43,7 +43,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
@@ -536,6 +536,9 @@
             return false;
         }
         $channel = $this->_getChannel($channel);
+        if (PEAR::isError($channel)) {
+            return $channel;
+        }
         return $channel->getAlias();
     }    
     // }}}
@@ -836,6 +839,9 @@
                 return false;
             }
             $checker = $this->_getChannel($channel->getName());
+            if (PEAR::isError($checker)) {
+                return $checker;
+            }
             if ($channel->getAlias() != $checker->getAlias()) {
                 @unlink($this->_getChannelAliasFileName($checker->getAlias()));
             }
@@ -1063,7 +1069,11 @@
             if ($ent{0} == '.' || substr($ent, -4) != '.reg') {
                 continue;
             }
-            $channellist[] = substr($ent, 0, -4);
+            if ($ent == '__uri.reg') {
+                $channellist[] = '__uri';
+                continue;
+            }
+            $channellist[] = str_replace('_', '/', substr($ent, 0, -4));
         }
         closedir($dp);
         if (!in_array('pear.php.net', $channellist)) {
@@ -1284,19 +1294,29 @@
     /**
      * @param string channel name
      * @param bool whether to strictly retrieve channel names
-     * @return PEAR_ChannelFile|false
+     * @return PEAR_ChannelFile|PEAR_Error
      * @access private
      */
     function &_getChannel($channel, $noaliases = false)
     {
         $ch = false;
         if ($this->_channelExists($channel, $noaliases)) {
-            if (!class_exists('PEAR_ChannelFile')) {
-                require_once 'PEAR/ChannelFile.php';
+            $chinfo = $this->_channelInfo($channel, $noaliases);
+            if ($chinfo) {
+                if (!class_exists('PEAR_ChannelFile')) {
+                    require_once 'PEAR/ChannelFile.php';
+                }
+                $ch = &PEAR_ChannelFile::fromArrayWithErrors($chinfo);
             }
-            $ch = &PEAR_ChannelFile::fromArray($this->_channelInfo($channel, $noaliases));
         }
         if ($ch) {
+            if ($ch->validate()) {
+                return $ch;
+            }
+            foreach ($ch->getErrors(true) as $err) {
+                $message = $err['message'] . "\n";
+            }
+            $ch = PEAR::raiseError($message);
             return $ch;
         }
         if ($this->_getChannelFromAlias($channel) == 'pear.php.net') {
@@ -1650,6 +1670,9 @@
         $ret = $this->_updatePackage($package, $info, $merge);
         $this->_unlock();
         if ($ret) {
+            if (!class_exists('PEAR_PackageFile_v1')) {
+                require_once 'PEAR/PackageFile/v1.php';
+            }
             $pf = new PEAR_PackageFile_v1;
             $pf->setConfig($this->_config);
             $pf->fromArray($this->packageInfo($package));
@@ -1687,7 +1710,7 @@
     /**
      * @param string channel name
      * @param bool whether to strictly return raw channels (no aliases)
-     * @return PEAR_ChannelFile|false
+     * @return PEAR_ChannelFile|PEAR_Error
      */
     function &getChannel($channel, $noaliases = false)
     {
@@ -1695,6 +1718,9 @@
             return $e;
         }
         $ret = &$this->_getChannel($channel, $noaliases);
+        if (!$ret) {
+            return PEAR::raiseError('Unknown channel: ' . $channel);
+        }
         $this->_unlock();
         return $ret;
     }
@@ -1769,7 +1795,7 @@
     function &getChannelValidator($channel)
     {
         $chan = $this->getChannel($channel);
-        if (!$chan) {
+        if (PEAR::isError($chan)) {
             return $chan;
         }
         $val = $chan->getValidationObject();
@@ -1788,7 +1814,11 @@
             return $e;
         }
         foreach ($this->_listChannels() as $channel) {
-            $ret[] = &$this->_getChannel($channel);
+            $e = &$this->_getChannel($channel);
+            if (!$e || PEAR::isError($e)) {
+                continue;
+            }
+            $ret[] = $e;
         }
         $this->_unlock();
         return $ret;
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Remote.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Remote.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Remote.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Remote.php	2006-12-31 03:43:37.000000000 -0600
@@ -16,7 +16,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Remote.php,v 1.75 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Remote.php,v 1.76 2006/03/02 18:14:13 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 0.1
  */
@@ -40,7 +40,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 0.1
  */
@@ -151,7 +151,7 @@
 
         $server_channel = $this->config->get('default_channel');
         $channel = $this->_registry->getChannel($server_channel);
-        if ($channel) {
+        if (!PEAR::isError($channel)) {
             $mirror = $this->config->get('preferred_mirror');
             if ($channel->getMirror($mirror)) {
                 if ($channel->supports('xmlrpc', $method, $mirror)) {
@@ -277,7 +277,7 @@
         } while (false);
         $server_channel = $this->config->get('default_channel');
         $channel = $this->_registry->getChannel($server_channel);
-        if ($channel) {
+        if (!PEAR::isError($channel)) {
             $mirror = $this->config->get('preferred_mirror');
             if ($channel->getMirror($mirror)) {
                 if ($channel->supports('xmlrpc', $method, $mirror)) {
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/REST/10.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/REST/10.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/REST/10.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/REST/10.php	2006-12-31 03:43:36.000000000 -0600
@@ -33,7 +33,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a12
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/REST/11.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/REST/11.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/REST/11.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/REST/11.php	2006-12-31 03:43:36.000000000 -0600
@@ -15,7 +15,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: 11.php,v 1.4 2006/01/06 04:47:37 cellog Exp $
+ * @version    CVS: $Id: 11.php,v 1.4.2.3 2006/08/15 21:25:12 pajoye Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.3
  */
@@ -33,7 +33,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.3
  */
@@ -56,7 +56,7 @@
             return $categorylist;
         }
         $ret = array();
-        if (!is_array($categorylist['c'])) {
+        if (!is_array($categorylist['c']) || !isset($categorylist['c'][0])) {
             $categorylist['c'] = array($categorylist['c']);
         }
         PEAR::pushErrorHandling(PEAR_ERROR_RETURN);
@@ -143,9 +143,11 @@
                         }
                     }
                     $d = false;
-                    foreach ($packageinfo['deps'] as $dep) {
-                        if ($dep['v'] == $latest) {
-                            $d = unserialize($dep['d']);
+                    if (isset($packageinfo['deps']) && is_array($packageinfo['deps'])) {
+                        foreach ($packageinfo['deps'] as $dep) {
+                            if ($dep['v'] == $latest) {
+                                $d = unserialize($dep['d']);
+                            }
                         }
                     }
                     if ($d) {
@@ -204,4 +206,4 @@
         return array_slice($states, $i + 1);
     }
 }
-?>
\ No newline at end of file
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/REST.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/REST.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/REST.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/REST.php	2006-12-31 03:43:37.000000000 -0600
@@ -15,7 +15,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: REST.php,v 1.19 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: REST.php,v 1.20 2006/03/02 03:09:31 pajoye Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.0a1
  */
@@ -34,7 +34,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
@@ -204,10 +204,21 @@
         if ($cacheid === null && $nochange) {
             $cacheid = unserialize(implode('', file($cacheidfile)));
         }
+
         $fp = @fopen($cacheidfile, 'wb');
         if (!$fp) {
-            return false;
+            $cache_dir = $this->config->get('cache_dir');
+            if (!is_dir($cache_dir)) {
+                System::mkdir(array('-p', $cache_dir));
+                $fp = @fopen($cacheidfile, 'wb');
+                if (!$fp) {
+                    return false;
+                }
+            } else {
+                return false;
+            }
         }
+
         if ($nochange) {
             fwrite($fp, serialize(array(
                 'age'        => time(),
@@ -312,7 +323,7 @@
             $ifmodifiedsince = ($lastmodified ? "If-Modified-Since: $lastmodified\r\n" : '');
         }
         $request .= "Host: $host:$port\r\n" . $ifmodifiedsince .
-            "User-Agent: PEAR/1.4.6/PHP/" . PHP_VERSION . "\r\n";
+            "User-Agent: PEAR/1.4.11/PHP/" . PHP_VERSION . "\r\n";
         $username = $this->config->get('username');
         $password = $this->config->get('password');
         if ($username && $password) {
@@ -383,4 +394,4 @@
         return $data;
     }
 }
-?>
\ No newline at end of file
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/RunTest.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/RunTest.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/RunTest.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/RunTest.php	2006-12-31 03:43:37.000000000 -0600
@@ -16,7 +16,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: RunTest.php,v 1.16 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: RunTest.php,v 1.20 2006/02/03 02:08:11 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.3.3
  */
@@ -44,7 +44,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.3.3
  */
@@ -76,6 +76,18 @@
         $cwd = getcwd();
         $conf = &PEAR_Config::singleton();
         $php = $conf->get('php_bin');
+        if (isset($this->_options['phpunit'])) {
+            $cmd = "$php$ini_settings -f $file";
+            if (isset($this->_logger)) {
+                $this->_logger->log(2, 'Running command "' . $cmd . '"');
+            }
+    
+            $savedir = getcwd(); // in case the test moves us around
+            chdir(dirname($file));
+            echo `$cmd`;
+            chdir($savedir);
+            return 'PASSED'; // we have no way of knowing this information so assume passing
+        }
         //var_dump($php);exit;
         global $log_format, $info_params, $ini_overwrites;
 
@@ -88,6 +100,7 @@
             'SKIPIF'  => '',
             'GET'     => '',
             'ARGS'    => '',
+            'CLEAN'   => '',
         );
 
         $file = realpath($file);
@@ -202,6 +215,13 @@
             $returnfail = false;
         }
         chdir($savedir);
+
+        if ($section_text['CLEAN']) {
+            // perform test cleanup
+            $this->save_text($clean = $tmp . uniqid('/phpt.'), $section_text['CLEAN']);
+            `$php $clean`;
+            @unlink($clean);
+        }
         // Does the output match what is expected?
         $output = trim($out);
         $output = preg_replace('/\r\n/', "\n", $output);
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Task/Common.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Task/Common.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Task/Common.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Task/Common.php	2006-12-31 03:43:37.000000000 -0600
@@ -53,7 +53,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  * @abstract
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Task/Postinstallscript/rw.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Task/Postinstallscript/rw.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Task/Postinstallscript/rw.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Task/Postinstallscript/rw.php	2006-12-31 03:43:37.000000000 -0600
@@ -30,7 +30,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a10
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Task/Postinstallscript.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Task/Postinstallscript.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Task/Postinstallscript.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Task/Postinstallscript.php	2006-12-31 03:43:37.000000000 -0600
@@ -15,7 +15,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Postinstallscript.php,v 1.17 2006/01/06 04:47:37 cellog Exp $
+ * @version    CVS: $Id: Postinstallscript.php,v 1.18 2006/02/08 01:21:47 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.0a1
  */
@@ -33,7 +33,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
@@ -80,10 +80,14 @@
                 $fileXml['name'] . '" could not be retrieved for processing!');
         } else {
             $analysis = $pkg->analyzeSourceCode($file, true);
-            if (PEAR::isError($analysis)) {
+            if (!$analysis) {
                 PEAR::popErrorHandling();
+                $warnings = '';
+                foreach ($pkg->getValidationWarnings() as $warn) {
+                    $warnings .= $warn['message'] . "\n";
+                }
                 return array(PEAR_TASK_ERROR_INVALID, 'Analysis of post-install script "' .
-                    $fileXml['name'] . '" failed');
+                    $fileXml['name'] . '" failed: ' . $warnings);
             }
             if (count($analysis['declared_classes']) != 1) {
                 PEAR::popErrorHandling();
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Task/Replace/rw.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Task/Replace/rw.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Task/Replace/rw.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Task/Replace/rw.php	2006-12-31 03:43:37.000000000 -0600
@@ -30,7 +30,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a10
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Task/Replace.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Task/Replace.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Task/Replace.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Task/Replace.php	2006-12-31 03:43:37.000000000 -0600
@@ -15,7 +15,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Replace.php,v 1.13 2006/01/06 04:47:37 cellog Exp $
+ * @version    CVS: $Id: Replace.php,v 1.15 2006/03/02 18:14:13 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.0a1
  */
@@ -30,7 +30,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
@@ -89,7 +89,7 @@
             }
         } else {
             return array(PEAR_TASK_ERROR_WRONG_ATTRIB_VALUE, 'type', $xml['attribs']['type'],
-                array('pear-config', 'package-info'));
+                array('pear-config', 'package-info', 'php-const'));
         }
         return true;
     }
@@ -126,7 +126,7 @@
                 }
                 if ($a['to'] == 'master_server') {
                     $chan = $this->registry->getChannel($pkg->getChannel());
-                    if ($chan) {
+                    if (!PEAR::isError($chan)) {
                         $to = $chan->getServer();
                     } else {
                         $this->logger->log(0, "$dest: invalid pear-config replacement: $a[to]");
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Task/Unixeol/rw.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Task/Unixeol/rw.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Task/Unixeol/rw.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Task/Unixeol/rw.php	2006-12-31 03:43:37.000000000 -0600
@@ -30,7 +30,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a10
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Task/Unixeol.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Task/Unixeol.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Task/Unixeol.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Task/Unixeol.php	2006-12-31 03:43:37.000000000 -0600
@@ -30,7 +30,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Task/Windowseol/rw.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Task/Windowseol/rw.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Task/Windowseol/rw.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Task/Windowseol/rw.php	2006-12-31 03:43:37.000000000 -0600
@@ -30,7 +30,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a10
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Task/Windowseol.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Task/Windowseol.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Task/Windowseol.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Task/Windowseol.php	2006-12-31 03:43:37.000000000 -0600
@@ -30,7 +30,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Validate.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Validate.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Validate.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Validate.php	2006-12-31 03:43:37.000000000 -0600
@@ -15,7 +15,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: Validate.php,v 1.45 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: Validate.php,v 1.46.2.3 2006/07/17 17:49:37 pajoye Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.0a1
  */
@@ -38,7 +38,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
@@ -286,6 +286,13 @@
             case 'beta' :
                 // check for a package that extends a package,
                 // like Foo and Foo2
+                if ($this->_state == PEAR_VALIDATE_PACKAGING) {
+                    if (substr($versioncomponents[2], 1, 2) == 'rc') {
+                        $this->_addFailure('version', 'Release Candidate versions ' .
+                            'must have capital RC, not lower-case rc');
+                        return false;
+                    }
+                }
                 if (!$this->_packagexml->getExtends()) {
                     if ($versioncomponents[0] == '1') {
                         if ($versioncomponents[2]{0} == '0') {
@@ -438,17 +445,16 @@
     {
         if ($this->_state == PEAR_VALIDATE_NORMAL ||
               $this->_state == PEAR_VALIDATE_PACKAGING) {
-            if (!preg_match('/\d\d\d\d\-\d\d\-\d\d/',
-                  $this->_packagexml->getDate())) {
-                $this->_addFailure('date', 'invalid release date "' .
-                    $this->_packagexml->getDate() . '"');
-                return false;
-            }
-            if (strtotime($this->_packagexml->getDate()) == -1) {
+            if (!preg_match('/(\d\d\d\d)\-(\d\d)\-(\d\d)/',
+                  $this->_packagexml->getDate(), $res) ||
+                  count($res) < 4
+                  || !checkdate($res[2], $res[3], $res[1])
+                ) {
                 $this->_addFailure('date', 'invalid release date "' .
                     $this->_packagexml->getDate() . '"');
                 return false;
             }
+
             if ($this->_state == PEAR_VALIDATE_PACKAGING &&
                   $this->_packagexml->getDate() != date('Y-m-d')) {
                 $this->_addWarning('date', 'Release Date "' .
@@ -621,4 +627,4 @@
         return true;
     }
 }
-?>
\ No newline at end of file
+?>
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Validator/PECL.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Validator/PECL.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/Validator/PECL.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/Validator/PECL.php	2006-12-31 03:43:37.000000000 -0600
@@ -9,7 +9,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: PECL.php,v 1.5 2006/01/06 04:47:37 cellog Exp $
+ * @version    CVS: $Id: PECL.php,v 1.7 2006/02/03 02:02:22 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 1.4.0a5
  */
@@ -24,7 +24,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a5
  */
@@ -32,6 +32,16 @@
 {
     function validateVersion()
     {
+        if ($this->_state == PEAR_VALIDATE_PACKAGING) {
+            $version = $this->_packagexml->getVersion();
+            $versioncomponents = explode('.', $version);
+            $last = array_pop($versioncomponents);
+            if (substr($last, 1, 2) == 'rc') {
+                $this->_addFailure('version', 'Release Candidate versions must have ' .
+                'upper-case RC, not lower-case rc');
+                return false;
+            }
+        }
         return true;
     }
 
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/XMLParser.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR/XMLParser.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR/XMLParser.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR/XMLParser.php	2006-12-31 03:43:37.000000000 -0600
@@ -29,7 +29,7 @@
  * @author     Stephan Schmidt (original XML_Unserializer code)
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @since      Class available since Release 1.4.0a1
  */
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR.php 1.4.1.src/cpanel-glprivate/system/pear/PEAR.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/PEAR.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/PEAR.php	2006-12-31 03:43:37.000000000 -0600
@@ -20,7 +20,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: PEAR.php,v 1.97 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: PEAR.php,v 1.98 2006/01/23 05:38:05 cellog Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 0.1
  */
@@ -93,7 +93,7 @@
  * @author     Greg Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/package/PEAR
  * @see        PEAR_Error
  * @since      Class available since PHP 4.0.2
@@ -247,6 +247,12 @@
     */
     function registerShutdownFunc($func, $args = array())
     {
+        // if we are called statically, there is a potential
+        // that no shutdown func is registered.  Bug #6445
+        if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) {
+            register_shutdown_function("_PEAR_call_destructors");
+            $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true;
+        }
         $GLOBALS['_PEAR_shutdown_funcs'][] = array($func, $args);
     }
 
@@ -802,7 +808,7 @@
  * @author     Gregory Beaver <cellog@php.net>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    Release: 1.4.6
+ * @version    Release: 1.4.11
  * @link       http://pear.php.net/manual/en/core.pear.pear-error.php
  * @see        PEAR::raiseError(), PEAR::throwError()
  * @since      Class available since PHP 4.0.2
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/scripts/pear.bat 1.4.1.src/cpanel-glprivate/system/pear/scripts/pear.bat
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/scripts/pear.bat	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/scripts/pear.bat	2006-12-31 03:43:36.000000000 -0600
@@ -110,6 +110,6 @@
 ECHO %PHP_PEAR_PHP_BIN%
 GOTO END
 :RUN
-"%PHP_PEAR_PHP_BIN%" -C -d output_buffering=1 -d include_path="%PHP_PEAR_INSTALL_DIR%" -f "%PHP_PEAR_INSTALL_DIR%\pearcmd.php" -- %1 %2 %3 %4 %5 %6 %7 %8 %9
+"%PHP_PEAR_PHP_BIN%" -C -d output_buffering=1 -d safe_mode=0 -d open_basedir="" -d include_path="%PHP_PEAR_INSTALL_DIR%" -f "%PHP_PEAR_INSTALL_DIR%\pearcmd.php" -- %1 %2 %3 %4 %5 %6 %7 %8 %9
 :END
 @ECHO ON
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/scripts/peardev.bat 1.4.1.src/cpanel-glprivate/system/pear/scripts/peardev.bat
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/scripts/peardev.bat	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/scripts/peardev.bat	2006-12-31 03:43:36.000000000 -0600
@@ -16,7 +16,7 @@
 REM  Authors:     Alexander Merz (alexmerz@php.net)
 REM ----------------------------------------------------------------------
 REM
-REM  $Id: peardev.bat,v 1.2 2005/03/21 15:23:43 cellog Exp $
+REM  $Id: peardev.bat,v 1.3 2006/01/23 16:30:14 cellog Exp $
 
 REM change this lines to match the paths of your system
 REM -------------------
@@ -110,6 +110,6 @@
 ECHO %PHP_PEAR_PHP_BIN%
 GOTO END
 :RUN
-"%PHP_PEAR_PHP_BIN%" -C -d memory_limit="-1" -d output_buffering=1 -d include_path="%PHP_PEAR_INSTALL_DIR%" -f "%PHP_PEAR_INSTALL_DIR%\pearcmd.php" -- %1 %2 %3 %4 %5 %6 %7 %8 %9
+"%PHP_PEAR_PHP_BIN%" -C -d memory_limit="-1" -d safe_mode=0 -d open_basedir="" -d output_buffering=1 -d include_path="%PHP_PEAR_INSTALL_DIR%" -f "%PHP_PEAR_INSTALL_DIR%\pearcmd.php" -- %1 %2 %3 %4 %5 %6 %7 %8 %9
 :END
 @ECHO ON
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/scripts/peardev.sh 1.4.1.src/cpanel-glprivate/system/pear/scripts/peardev.sh
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/scripts/peardev.sh	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/scripts/peardev.sh	2006-12-31 03:43:36.000000000 -0600
@@ -25,4 +25,4 @@
   fi
 fi
 
-exec $PHP -d memory_limit="-1" -C -q $INCARG -d output_buffering=1 $INCDIR/pearcmd.php "$@"
+exec $PHP -d memory_limit="-1" -C -q $INCARG -d output_buffering=1 -d open_basedir="" -d safe_mode=0 $INCDIR/pearcmd.php "$@"
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/scripts/pear.sh 1.4.1.src/cpanel-glprivate/system/pear/scripts/pear.sh
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/scripts/pear.sh	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/scripts/pear.sh	2006-12-31 03:43:36.000000000 -0600
@@ -25,4 +25,4 @@
   fi
 fi
 
-exec $PHP -C -q $INCARG -d output_buffering=1 $INCDIR/pearcmd.php "$@"
+exec $PHP -C -q $INCARG -d output_buffering=1 -d open_basedir="" -d safe_mode=0 $INCDIR/pearcmd.php "$@"
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/System.php 1.4.1.src/cpanel-glprivate/system/pear/System.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/System.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/System.php	2006-12-31 03:43:37.000000000 -0600
@@ -15,7 +15,7 @@
  * @author     Tomas V.V.Cox <cox@idecnet.com>
  * @copyright  1997-2006 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
- * @version    CVS: $Id: System.php,v 1.53 2006/01/06 04:47:36 cellog Exp $
+ * @version    CVS: $Id: System.php,v 1.53.2.1 2006/06/16 13:55:16 pajoye Exp $
  * @link       http://pear.php.net/package/PEAR
  * @since      File available since Release 0.1
  */
@@ -55,7 +55,7 @@
 * @author     Tomas V.V. Cox <cox@idecnet.com>
 * @copyright  1997-2006 The PHP Group
 * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
-* @version    Release: 1.4.6
+* @version    Release: 1.4.11
 * @link       http://pear.php.net/package/PEAR
 * @since      Class available since Release 0.1
 */
@@ -491,7 +491,7 @@
         foreach ($exe_suffixes as $suff) {
             foreach ($path_elements as $dir) {
                 $file = $dir . DIRECTORY_SEPARATOR . $program . $suff;
-                if ($pear_is_executable($file)) {
+                if (@$pear_is_executable($file)) {
                     return $file;
                 }
             }
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/XML/RPC/Dump.php 1.4.1.src/cpanel-glprivate/system/pear/XML/RPC/Dump.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/XML/RPC/Dump.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/XML/RPC/Dump.php	2006-12-31 03:43:36.000000000 -0600
@@ -42,7 +42,7 @@
  * @category   Web Services
  * @package    XML_RPC
  * @author     Christian Weiske <cweiske@php.net>
- * @version    Release: 1.4.5
+ * @version    Release: 1.5.1
  * @link       http://pear.php.net/package/XML_RPC
  */
 class XML_RPC_Dump
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/XML/RPC/Server.php 1.4.1.src/cpanel-glprivate/system/pear/XML/RPC/Server.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/XML/RPC/Server.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/XML/RPC/Server.php	2006-12-31 03:43:36.000000000 -0600
@@ -31,8 +31,8 @@
  * @author     Stig Bakken <stig@php.net>
  * @author     Martin Jansen <mj@php.net>
  * @author     Daniel Convissor <danielc@php.net>
- * @copyright  1999-2001 Edd Dumbill, 2001-2005 The PHP Group
- * @version    CVS: $Id: Server.php,v 1.33 2006/01/14 22:30:31 danielc Exp $
+ * @copyright  1999-2001 Edd Dumbill, 2001-2006 The PHP Group
+ * @version    CVS: $Id: Server.php,v 1.37 2006/10/28 16:42:34 danielc Exp $
  * @link       http://pear.php.net/package/XML_RPC
  */
 
@@ -269,13 +269,22 @@
  * @author     Stig Bakken <stig@php.net>
  * @author     Martin Jansen <mj@php.net>
  * @author     Daniel Convissor <danielc@php.net>
- * @copyright  1999-2001 Edd Dumbill, 2001-2005 The PHP Group
- * @version    Release: 1.4.5
+ * @copyright  1999-2001 Edd Dumbill, 2001-2006 The PHP Group
+ * @version    Release: 1.5.1
  * @link       http://pear.php.net/package/XML_RPC
  */
 class XML_RPC_Server
 {
     /**
+     * Should the payload's content be passed through mb_convert_encoding()?
+     *
+     * @see XML_RPC_Server::setConvertPayloadEncoding()
+     * @since Property available since Release 1.5.1
+     * @var boolean
+     */
+    var $convert_payload_encoding = false;
+
+    /**
      * The dispatch map, listing the methods this server provides.
      * @var array
      */
@@ -365,7 +374,7 @@
 
         if ($XML_RPC_Server_debuginfo != '') {
             return "<!-- PEAR XML_RPC SERVER DEBUG INFO:\n\n"
-                   . preg_replace('/-(?=-)/', '- ', $XML_RPC_Server_debuginfo)
+                   . $GLOBALS['XML_RPC_func_ereg_replace']('--', '- - ', $XML_RPC_Server_debuginfo)
                    . "-->\n";
         } else {
             return '';
@@ -373,6 +382,28 @@
     }
 
     /**
+     * Sets whether the payload's content gets passed through
+     * mb_convert_encoding()
+     *
+     * Returns PEAR_ERROR object if mb_convert_encoding() isn't available.
+     *
+     * @param int $in  where 1 = on, 0 = off
+     *
+     * @return void
+     *
+     * @see XML_RPC_Message::getEncoding()
+     * @since Method available since Release 1.5.1
+     */
+    function setConvertPayloadEncoding($in)
+    {
+        if ($in && !function_exists('mb_convert_encoding')) {
+            return $this->raiseError('mb_convert_encoding() is not available',
+                              XML_RPC_ERROR_PROGRAMMING);
+        }
+        $this->convert_payload_encoding = $in;
+    }
+
+    /**
      * Sends the response
      *
      * The encoding and content-type are determined by
@@ -400,9 +431,9 @@
          * that someone composed a single header with multiple lines, which
          * the RFCs allow.
          */
-        $this->server_headers = preg_replace("/[\r\n]+[ \t]+/", ' ',
-                                             trim($this->server_headers));
-        $headers = preg_split("/[\r\n]+/", $this->server_headers);
+        $this->server_headers = $GLOBALS['XML_RPC_func_ereg_replace']("[\r\n]+[ \t]+",
+                                ' ', trim($this->server_headers));
+        $headers = $GLOBALS['XML_RPC_func_split']("[\r\n]+", $this->server_headers);
         foreach ($headers as $header)
         {
             header($header);
@@ -414,10 +445,17 @@
     /**
      * Generates the payload and puts it in the $server_payload property
      *
+     * If XML_RPC_Server::setConvertPayloadEncoding() was set to true,
+     * the payload gets passed through mb_convert_encoding()
+     * to ensure the payload matches the encoding set in the
+     * XML declaration.  The encoding type can be manually set via
+     * XML_RPC_Message::setSendEncoding().
+     *
      * @return void
      *
      * @uses XML_RPC_Server::parseRequest(), XML_RPC_Server::$encoding,
      *       XML_RPC_Response::serialize(), XML_RPC_Server::serializeDebug()
+     * @see  XML_RPC_Server::setConvertPayloadEncoding()
      */
     function createServerPayload()
     {
@@ -426,6 +464,10 @@
                               . $this->encoding . '"?>' . "\n"
                               . $this->serializeDebug()
                               . $r->serialize();
+        if ($this->convert_payload_encoding) {
+            $this->server_payload = mb_convert_encoding($this->server_payload,
+                                                        $this->encoding);
+        }
     }
 
     /**
diff -ruN 1.4.0sr5-1.src/cpanel-glprivate/system/pear/XML/RPC.php 1.4.1.src/cpanel-glprivate/system/pear/XML/RPC.php
--- 1.4.0sr5-1.src/cpanel-glprivate/system/pear/XML/RPC.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/cpanel-glprivate/system/pear/XML/RPC.php	2006-12-31 03:43:36.000000000 -0600
@@ -31,13 +31,14 @@
  * @author     Stig Bakken <stig@php.net>
  * @author     Martin Jansen <mj@php.net>
  * @author     Daniel Convissor <danielc@php.net>
- * @copyright  1999-2001 Edd Dumbill, 2001-2005 The PHP Group
- * @version    CVS: $Id: RPC.php,v 1.88 2005/10/15 20:29:43 danielc Exp $
+ * @copyright  1999-2001 Edd Dumbill, 2001-2006 The PHP Group
+ * @version    CVS: $Id: RPC.php,v 1.101 2006/10/28 16:42:34 danielc Exp $
  * @link       http://pear.php.net/package/XML_RPC
  */
 
 
 if (!function_exists('xml_parser_create')) {
+    include_once 'PEAR.php';
     PEAR::loadExtension('xml');
 }
 
@@ -198,6 +199,35 @@
 $GLOBALS['XML_RPC_backslash'] = chr(92) . chr(92);
 
 
+/**#@+
+ * Which functions to use, depending on whether mbstring is enabled or not.
+ */
+if (function_exists('mb_ereg')) {
+    /** @global string $GLOBALS['XML_RPC_func_ereg'] */
+    $GLOBALS['XML_RPC_func_ereg'] = 'mb_eregi';
+    /** @global string $GLOBALS['XML_RPC_func_ereg_replace'] */
+    $GLOBALS['XML_RPC_func_ereg_replace'] = 'mb_eregi_replace';
+    /** @global string $GLOBALS['XML_RPC_func_split'] */
+    $GLOBALS['XML_RPC_func_split'] = 'mb_split';
+} else {
+    /** @ignore */
+    $GLOBALS['XML_RPC_func_ereg'] = 'eregi';
+    /** @ignore */
+    $GLOBALS['XML_RPC_func_ereg_replace'] = 'eregi_replace';
+    /** @ignore */
+    $GLOBALS['XML_RPC_func_split'] = 'split';
+}
+/**#@-*/
+
+
+/**
+ * Should we automatically base64 encode strings that contain characters
+ * which can cause PHP's SAX-based XML parser to break?
+ * @global boolean $GLOBALS['XML_RPC_auto_base64']
+ */
+$GLOBALS['XML_RPC_auto_base64'] = false;
+
+
 /**
  * Valid parents of XML elements
  * @global array $GLOBALS['XML_RPC_valid_parents']
@@ -248,7 +278,8 @@
  */
 function XML_RPC_se($parser_resource, $name, $attrs)
 {
-    global $XML_RPC_xh, $XML_RPC_DateTime, $XML_RPC_String, $XML_RPC_valid_parents;
+    global $XML_RPC_xh, $XML_RPC_valid_parents;
+
     $parser = (int) $parser_resource;
 
     // if invalid xmlrpc already detected, skip all processing
@@ -267,7 +298,7 @@
     } else {
         // not top level element: see if parent is OK
         if (!in_array($XML_RPC_xh[$parser]['stack'][0], $XML_RPC_valid_parents[$name])) {
-            $name = preg_replace('[^a-zA-Z0-9._-]', '', $name);
+            $name = $GLOBALS['XML_RPC_func_ereg_replace']('[^a-zA-Z0-9._-]', '', $name);
             $XML_RPC_xh[$parser]['isf'] = 2;
             $XML_RPC_xh[$parser]['isf_reason'] = "xmlrpc element $name cannot be child of {$XML_RPC_xh[$parser]['stack'][0]}";
             return;
@@ -313,7 +344,7 @@
 
     case 'VALUE':
         $XML_RPC_xh[$parser]['lv'] = 1;
-        $XML_RPC_xh[$parser]['vt'] = $XML_RPC_String;
+        $XML_RPC_xh[$parser]['vt'] = $GLOBALS['XML_RPC_String'];
         $XML_RPC_xh[$parser]['ac'] = '';
         $XML_RPC_xh[$parser]['qt'] = 0;
         // look for a value: if this is still 1 by the
@@ -334,7 +365,7 @@
             $XML_RPC_xh[$parser]['qt'] = 1;
 
             if ($name == 'DATETIME.ISO8601') {
-                $XML_RPC_xh[$parser]['vt'] = $XML_RPC_DateTime;
+                $XML_RPC_xh[$parser]['vt'] = $GLOBALS['XML_RPC_DateTime'];
             }
 
         } elseif ($name == 'BASE64') {
@@ -376,7 +407,8 @@
  */
 function XML_RPC_ee($parser_resource, $name)
 {
-    global $XML_RPC_xh, $XML_RPC_Types, $XML_RPC_String;
+    global $XML_RPC_xh;
+
     $parser = (int) $parser_resource;
 
     if ($XML_RPC_xh[$parser]['isf'] >= 2) {
@@ -430,7 +462,7 @@
         } else {
             // we have an I4, INT or a DOUBLE
             // we must check that only 0123456789-.<space> are characters here
-            if (!ereg("^[+-]?[0123456789 \t\.]+$", $XML_RPC_xh[$parser]['ac'])) {
+            if (!$GLOBALS['XML_RPC_func_ereg']("^[+-]?[0123456789 \t\.]+$", $XML_RPC_xh[$parser]['ac'])) {
                 XML_RPC_Base::raiseError('Non-numeric value received in INT or DOUBLE',
                                          XML_RPC_ERROR_NON_NUMERIC_FOUND);
                 $XML_RPC_xh[$parser]['value'] = XML_RPC_ERROR_NON_NUMERIC_FOUND;
@@ -446,7 +478,7 @@
         break;
 
     case 'VALUE':
-        if ($XML_RPC_xh[$parser]['vt'] == $XML_RPC_String) {
+        if ($XML_RPC_xh[$parser]['vt'] == $GLOBALS['XML_RPC_String']) {
             if (strlen($XML_RPC_xh[$parser]['ac']) > 0) {
                 $XML_RPC_xh[$parser]['value'] = $XML_RPC_xh[$parser]['ac'];
             } elseif ($XML_RPC_xh[$parser]['lv'] == 1) {
@@ -494,13 +526,13 @@
 
     case 'METHODNAME':
     case 'RPCMETHODNAME':
-        $XML_RPC_xh[$parser]['method'] = ereg_replace("^[\n\r\t ]+", '',
+        $XML_RPC_xh[$parser]['method'] = $GLOBALS['XML_RPC_func_ereg_replace']("^[\n\r\t ]+", '',
                                                       $XML_RPC_xh[$parser]['ac']);
         break;
     }
 
     // if it's a valid type name, set the type
-    if (isset($XML_RPC_Types[strtolower($name)])) {
+    if (isset($GLOBALS['XML_RPC_Types'][strtolower($name)])) {
         $XML_RPC_xh[$parser]['vt'] = strtolower($name);
     }
 }
@@ -513,6 +545,7 @@
 function XML_RPC_cd($parser_resource, $data)
 {
     global $XML_RPC_xh, $XML_RPC_backslash;
+
     $parser = (int) $parser_resource;
 
     if ($XML_RPC_xh[$parser]['lv'] != 3) {
@@ -545,8 +578,8 @@
  * @author     Stig Bakken <stig@php.net>
  * @author     Martin Jansen <mj@php.net>
  * @author     Daniel Convissor <danielc@php.net>
- * @copyright  1999-2001 Edd Dumbill, 2001-2005 The PHP Group
- * @version    Release: 1.4.5
+ * @copyright  1999-2001 Edd Dumbill, 2001-2006 The PHP Group
+ * @version    Release: 1.5.1
  * @link       http://pear.php.net/package/XML_RPC
  */
 class XML_RPC_Base {
@@ -590,8 +623,8 @@
  * @author     Stig Bakken <stig@php.net>
  * @author     Martin Jansen <mj@php.net>
  * @author     Daniel Convissor <danielc@php.net>
- * @copyright  1999-2001 Edd Dumbill, 2001-2005 The PHP Group
- * @version    Release: 1.4.5
+ * @copyright  1999-2001 Edd Dumbill, 2001-2006 The PHP Group
+ * @version    Release: 1.5.1
  * @link       http://pear.php.net/package/XML_RPC
  */
 class XML_RPC_Client extends XML_RPC_Base {
@@ -729,7 +762,7 @@
         $this->proxy_user = $proxy_user;
         $this->proxy_pass = $proxy_pass;
 
-        preg_match('@^(http://|https://|ssl://)?(.*)$@', $server, $match);
+        $GLOBALS['XML_RPC_func_ereg']('^(http://|https://|ssl://)?(.*)$', $server, $match);
         if ($match[1] == '') {
             if ($port == 443) {
                 $this->server   = $match[2];
@@ -757,7 +790,7 @@
         }
 
         if ($proxy) {
-            preg_match('@^(http://|https://|ssl://)?(.*)$@', $proxy, $match);
+            $GLOBALS['XML_RPC_func_ereg']('^(http://|https://|ssl://)?(.*)$', $proxy, $match);
             if ($match[1] == '') {
                 if ($proxy_port == 443) {
                     $this->proxy          = $match[2];
@@ -803,6 +836,26 @@
     }
 
     /**
+     * Sets whether strings that contain characters which may cause PHP's
+     * SAX-based XML parser to break should be automatically base64 encoded
+     *
+     * This is is a workaround for systems that don't have PHP's mbstring
+     * extension available.
+     *
+     * @param int $in  where 1 = on, 0 = off
+     *
+     * @return void
+     */
+    function setAutoBase64($in)
+    {
+        if ($in) {
+            $GLOBALS['XML_RPC_auto_base64'] = true;
+        } else {
+            $GLOBALS['XML_RPC_auto_base64'] = false;
+        }
+    }
+
+    /**
      * Set username and password properties for connecting to the RPC server
      *
      * @param string $u  the user name
@@ -1012,8 +1065,8 @@
  * @author     Stig Bakken <stig@php.net>
  * @author     Martin Jansen <mj@php.net>
  * @author     Daniel Convissor <danielc@php.net>
- * @copyright  1999-2001 Edd Dumbill, 2001-2005 The PHP Group
- * @version    Release: 1.4.5
+ * @copyright  1999-2001 Edd Dumbill, 2001-2006 The PHP Group
+ * @version    Release: 1.5.1
  * @link       http://pear.php.net/package/XML_RPC
  */
 class XML_RPC_Response extends XML_RPC_Base
@@ -1103,13 +1156,22 @@
  * @author     Stig Bakken <stig@php.net>
  * @author     Martin Jansen <mj@php.net>
  * @author     Daniel Convissor <danielc@php.net>
- * @copyright  1999-2001 Edd Dumbill, 2001-2005 The PHP Group
- * @version    Release: 1.4.5
+ * @copyright  1999-2001 Edd Dumbill, 2001-2006 The PHP Group
+ * @version    Release: 1.5.1
  * @link       http://pear.php.net/package/XML_RPC
  */
 class XML_RPC_Message extends XML_RPC_Base
 {
     /**
+     * Should the payload's content be passed through mb_convert_encoding()?
+     *
+     * @see XML_RPC_Message::setConvertPayloadEncoding()
+     * @since Property available since Release 1.5.1
+     * @var boolean
+     */
+    var $convert_payload_encoding = false;
+
+    /**
      * The current debug mode (1 = on, 0 = off)
      * @var integer
      */
@@ -1144,6 +1206,21 @@
     var $payload = '';
 
     /**
+     * Should extra line breaks be removed from the payload?
+     * @since Property available since Release 1.4.6
+     * @var boolean
+     */
+    var $remove_extra_lines = true;
+
+    /**
+     * The XML response from the remote server
+     * @since Property available since Release 1.4.6
+     * @var string
+     */
+    var $response_payload = '';
+
+
+    /**
      * @return void
      */
     function XML_RPC_Message($meth, $pars = 0)
@@ -1171,6 +1248,7 @@
     function xml_header()
     {
         global $XML_RPC_defencoding;
+
         if (!$this->send_encoding) {
             $this->send_encoding = $XML_RPC_defencoding;
         }
@@ -1187,9 +1265,22 @@
     }
 
     /**
+     * Fills the XML_RPC_Message::$payload property
+     *
+     * Part of the process makes sure all line endings are in DOS format
+     * (CRLF), which is probably required by specifications.
+     *
+     * If XML_RPC_Message::setConvertPayloadEncoding() was set to true,
+     * the payload gets passed through mb_convert_encoding()
+     * to ensure the payload matches the encoding set in the
+     * XML declaration.  The encoding type can be manually set via
+     * XML_RPC_Message::setSendEncoding().
+     *
      * @return void
      *
      * @uses XML_RPC_Message::xml_header(), XML_RPC_Message::xml_footer()
+     * @see XML_RPC_Message::setSendEncoding(), $GLOBALS['XML_RPC_defencoding'],
+     *      XML_RPC_Message::setConvertPayloadEncoding()
      */
     function createPayload()
     {
@@ -1202,7 +1293,14 @@
         }
         $this->payload .= "</params>\n";
         $this->payload .= $this->xml_footer();
-        $this->payload = ereg_replace("[\r\n]+", "\r\n", $this->payload);
+        if ($this->remove_extra_lines) {
+            $this->payload = $GLOBALS['XML_RPC_func_ereg_replace']("[\r\n]+", "\r\n", $this->payload);
+        } else {
+            $this->payload = $GLOBALS['XML_RPC_func_ereg_replace']("\r\n|\n|\r|\n\r", "\r\n", $this->payload);
+        }
+        if ($this->convert_payload_encoding) {
+            $this->payload = mb_convert_encoding($this->payload, $this->send_encoding);
+        }
     }
 
     /**
@@ -1266,13 +1364,35 @@
     }
 
     /**
+     * Sets whether the payload's content gets passed through
+     * mb_convert_encoding()
+     *
+     * Returns PEAR_ERROR object if mb_convert_encoding() isn't available.
+     *
+     * @param int $in  where 1 = on, 0 = off
+     *
+     * @return void
+     *
+     * @see XML_RPC_Message::setSendEncoding()
+     * @since Method available since Release 1.5.1
+     */
+    function setConvertPayloadEncoding($in)
+    {
+        if ($in && !function_exists('mb_convert_encoding')) {
+            return $this->raiseError('mb_convert_encoding() is not available',
+                              XML_RPC_ERROR_PROGRAMMING);
+        }
+        $this->convert_payload_encoding = $in;
+    }
+
+    /**
      * Sets the XML declaration's encoding attribute
      *
      * @param string $type  the encoding type (ISO-8859-1, UTF-8 or US-ASCII)
      *
      * @return void
      *
-     * @see XML_RPC_Message::$send_encoding, XML_RPC_Message::xml_header()
+     * @see XML_RPC_Message::setConvertPayloadEncoding(), XML_RPC_Message::xml_header()
      * @since Method available since Release 1.2.0
      */
     function setSendEncoding($type)
@@ -1298,7 +1418,7 @@
     {
         global $XML_RPC_defencoding;
 
-        if (preg_match('/<\?xml[^>]*\s*encoding\s*=\s*[\'"]([^"\']*)[\'"]/i',
+        if ($GLOBALS['XML_RPC_func_ereg']('<\?xml[^>]*[:space:]*encoding[:space:]*=[:space:]*[\'"]([^"\']*)[\'"]',
                        $data, $match))
         {
             $match[1] = trim(strtoupper($match[1]));
@@ -1363,9 +1483,9 @@
 
         // See if response is a 200 or a 100 then a 200, else raise error.
         // But only do this if we're using the HTTP protocol.
-        if (ereg('^HTTP', $data) &&
-            !ereg('^HTTP/[0-9\.]+ 200 ', $data) &&
-            !preg_match('@^HTTP/[0-9\.]+ 10[0-9]([A-Za-z ]+)?[\r\n]+HTTP/[0-9\.]+ 200@', $data))
+        if ($GLOBALS['XML_RPC_func_ereg']('^HTTP', $data) &&
+            !$GLOBALS['XML_RPC_func_ereg']('^HTTP/[0-9\.]+ 200 ', $data) &&
+            !$GLOBALS['XML_RPC_func_ereg']('^HTTP/[0-9\.]+ 10[0-9]([A-Z ]+)?[\r\n]+HTTP/[0-9\.]+ 200', $data))
         {
                 $errstr = substr($data, 0, strpos($data, "\n") - 1);
                 error_log('HTTP error, got response: ' . $errstr);
@@ -1389,6 +1509,7 @@
          * thanks to Luca Mariano <luca.mariano@email.it>
          */
         $data = substr($data, 0, strpos($data, "</methodResponse>") + 17);
+        $this->response_payload = $data;
 
         if (!xml_parse($parser_resource, $data, sizeof($data))) {
             // thanks to Peter Kocks <peter.kocks@baygate.com>
@@ -1425,7 +1546,6 @@
                                       $XML_RPC_str['invalid_return']);
         } else {
             $v = $XML_RPC_xh[$parser]['value'];
-            $allOK=1;
             if ($XML_RPC_xh[$parser]['isf']) {
                 $f = $v->structmem('faultCode');
                 $fs = $v->structmem('faultString');
@@ -1449,8 +1569,8 @@
  * @author     Stig Bakken <stig@php.net>
  * @author     Martin Jansen <mj@php.net>
  * @author     Daniel Convissor <danielc@php.net>
- * @copyright  1999-2001 Edd Dumbill, 2001-2005 The PHP Group
- * @version    Release: 1.4.5
+ * @copyright  1999-2001 Edd Dumbill, 2001-2006 The PHP Group
+ * @version    Release: 1.5.1
  * @link       http://pear.php.net/package/XML_RPC
  */
 class XML_RPC_Value extends XML_RPC_Base
@@ -1463,21 +1583,20 @@
      */
     function XML_RPC_Value($val = -1, $type = '')
     {
-        global $XML_RPC_Types;
         $this->me = array();
         $this->mytype = 0;
         if ($val != -1 || $type != '') {
             if ($type == '') {
                 $type = 'string';
             }
-            if (!array_key_exists($type, $XML_RPC_Types)) {
+            if (!array_key_exists($type, $GLOBALS['XML_RPC_Types'])) {
                 // XXX
                 // need some way to report this error
-            } elseif ($XML_RPC_Types[$type] == 1) {
+            } elseif ($GLOBALS['XML_RPC_Types'][$type] == 1) {
                 $this->addScalar($val, $type);
-            } elseif ($XML_RPC_Types[$type] == 2) {
+            } elseif ($GLOBALS['XML_RPC_Types'][$type] == 2) {
                 $this->addArray($val);
-            } elseif ($XML_RPC_Types[$type] == 3) {
+            } elseif ($GLOBALS['XML_RPC_Types'][$type] == 3) {
                 $this->addStruct($val);
             }
         }
@@ -1488,21 +1607,19 @@
      */
     function addScalar($val, $type = 'string')
     {
-        global $XML_RPC_Types, $XML_RPC_Boolean;
-
         if ($this->mytype == 1) {
             $this->raiseError('Scalar can have only one value',
                               XML_RPC_ERROR_INVALID_TYPE);
             return 0;
         }
-        $typeof = $XML_RPC_Types[$type];
+        $typeof = $GLOBALS['XML_RPC_Types'][$type];
         if ($typeof != 1) {
             $this->raiseError("Not a scalar type (${typeof})",
                               XML_RPC_ERROR_INVALID_TYPE);
             return 0;
         }
 
-        if ($type == $XML_RPC_Boolean) {
+        if ($type == $GLOBALS['XML_RPC_Boolean']) {
             if (strcasecmp($val, 'true') == 0
                 || $val == 1
                 || ($val == true && strcasecmp($val, 'false')))
@@ -1531,14 +1648,13 @@
      */
     function addArray($vals)
     {
-        global $XML_RPC_Types;
         if ($this->mytype != 0) {
             $this->raiseError(
                     'Already initialized as a [' . $this->kindOf() . ']',
                     XML_RPC_ERROR_ALREADY_INITIALIZED);
             return 0;
         }
-        $this->mytype = $XML_RPC_Types['array'];
+        $this->mytype = $GLOBALS['XML_RPC_Types']['array'];
         $this->me['array'] = $vals;
         return 1;
     }
@@ -1548,14 +1664,13 @@
      */
     function addStruct($vals)
     {
-        global $XML_RPC_Types;
         if ($this->mytype != 0) {
             $this->raiseError(
                     'Already initialized as a [' . $this->kindOf() . ']',
                     XML_RPC_ERROR_ALREADY_INITIALIZED);
             return 0;
         }
-        $this->mytype = $XML_RPC_Types['struct'];
+        $this->mytype = $GLOBALS['XML_RPC_Types']['struct'];
         $this->me['struct'] = $vals;
         return 1;
     }
@@ -1602,13 +1717,12 @@
     function serializedata($typ, $val)
     {
         $rs = '';
-        global $XML_RPC_Types, $XML_RPC_Base64, $XML_RPC_String, $XML_RPC_Boolean;
-        if (!array_key_exists($typ, $XML_RPC_Types)) {
+        if (!array_key_exists($typ, $GLOBALS['XML_RPC_Types'])) {
             // XXX
             // need some way to report this error
             return;
         }
-        switch ($XML_RPC_Types[$typ]) {
+        switch ($GLOBALS['XML_RPC_Types'][$typ]) {
         case 3:
             // struct
             $rs .= "<struct>\n";
@@ -1632,13 +1746,13 @@
 
         case 1:
             switch ($typ) {
-            case $XML_RPC_Base64:
+            case $GLOBALS['XML_RPC_Base64']:
                 $rs .= "<${typ}>" . base64_encode($val) . "</${typ}>";
                 break;
-            case $XML_RPC_Boolean:
+            case $GLOBALS['XML_RPC_Boolean']:
                 $rs .= "<${typ}>" . ($val ? '1' : '0') . "</${typ}>";
                 break;
-            case $XML_RPC_String:
+            case $GLOBALS['XML_RPC_String']:
                 $rs .= "<${typ}>" . htmlspecialchars($val). "</${typ}>";
                 break;
             default:
@@ -1700,7 +1814,6 @@
     function getval()
     {
         // UNSTABLE
-        global $XML_RPC_BOOLEAN, $XML_RPC_Base64;
 
         reset($this->me);
         $b = current($this->me);
@@ -1732,13 +1845,17 @@
     }
 
     /**
-     * @return mixed
+     * @return mixed  the current element's scalar value.  If the value is
+     *                 not scalar, FALSE is returned.
      */
     function scalarval()
     {
-        global $XML_RPC_Boolean, $XML_RPC_Base64;
         reset($this->me);
-        return current($this->me);
+        $v = current($this->me);
+        if (!is_scalar($v)) {
+            $v = false;
+        }
+        return $v;
     }
 
     /**
@@ -1746,11 +1863,10 @@
      */
     function scalartyp()
     {
-        global $XML_RPC_I4, $XML_RPC_Int;
         reset($this->me);
         $a = key($this->me);
-        if ($a == $XML_RPC_I4) {
-            $a = $XML_RPC_Int;
+        if ($a == $GLOBALS['XML_RPC_I4']) {
+            $a = $GLOBALS['XML_RPC_Int'];
         }
         return $a;
     }
@@ -1834,7 +1950,7 @@
 function XML_RPC_iso8601_decode($idate, $utc = 0)
 {
     $t = 0;
-    if (ereg('([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})', $idate, $regs)) {
+    if ($GLOBALS['XML_RPC_func_ereg']('([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})', $idate, $regs)) {
         if ($utc) {
             $t = gmmktime($regs[4], $regs[5], $regs[6], $regs[2], $regs[3], $regs[1]);
         } else {
@@ -1885,9 +2001,6 @@
  */
 function XML_RPC_encode($php_val)
 {
-    global $XML_RPC_Boolean, $XML_RPC_Int, $XML_RPC_Double, $XML_RPC_String,
-           $XML_RPC_Array, $XML_RPC_Struct, $XML_RPC_DateTime;
-
     $type = gettype($php_val);
     $XML_RPC_val = new XML_RPC_Value;
 
@@ -1917,19 +2030,25 @@
         break;
 
     case 'integer':
-        $XML_RPC_val->addScalar($php_val, $XML_RPC_Int);
+        $XML_RPC_val->addScalar($php_val, $GLOBALS['XML_RPC_Int']);
         break;
 
     case 'double':
-        $XML_RPC_val->addScalar($php_val, $XML_RPC_Double);
+        $XML_RPC_val->addScalar($php_val, $GLOBALS['XML_RPC_Double']);
         break;
 
     case 'string':
     case 'NULL':
-        if(ereg('^[0-9]{8}\T{1}[0-9]{2}\:[0-9]{2}\:[0-9]{2}$', $php_val)) {
-            $XML_RPC_val->addScalar($php_val, $XML_RPC_DateTime);
+        if ($GLOBALS['XML_RPC_func_ereg']('^[0-9]{8}\T{1}[0-9]{2}\:[0-9]{2}\:[0-9]{2}$', $php_val)) {
+            $XML_RPC_val->addScalar($php_val, $GLOBALS['XML_RPC_DateTime']);
+        } elseif ($GLOBALS['XML_RPC_auto_base64']
+                  && $GLOBALS['XML_RPC_func_ereg']("[^ -~\t\r\n]", $php_val))
+        {
+            // Characters other than alpha-numeric, punctuation, SP, TAB,
+            // LF and CR break the XML parser, encode value via Base 64.
+            $XML_RPC_val->addScalar($php_val, $GLOBALS['XML_RPC_Base64']);
         } else {
-            $XML_RPC_val->addScalar($php_val, $XML_RPC_String);
+            $XML_RPC_val->addScalar($php_val, $GLOBALS['XML_RPC_String']);
         }
         break;
 
@@ -1937,7 +2056,7 @@
         // Add support for encoding/decoding of booleans, since they
         // are supported in PHP
         // by <G_Giunta_2001-02-29>
-        $XML_RPC_val->addScalar($php_val, $XML_RPC_Boolean);
+        $XML_RPC_val->addScalar($php_val, $GLOBALS['XML_RPC_Boolean']);
         break;
 
     case 'unknown type':
diff -ruN 1.4.0sr5-1.src/directory.php 1.4.1.src/directory.php
--- 1.4.0sr5-1.src/directory.php	2006-08-08 02:53:59.000000000 -0500
+++ 1.4.1.src/directory.php	2006-12-11 05:49:17.000000000 -0600
@@ -8,7 +8,7 @@
 // |                                                                           |
 // | Directory of all the stories on a Geeklog site.                           |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2004-2005 by the following authors:                         |
+// | Copyright (C) 2004-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Dirk Haun         - dirk AT haun-online DOT de                   |
 // +---------------------------------------------------------------------------+
@@ -29,7 +29,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: directory.php,v 1.4 2005/12/28 10:11:48 dhaun Exp $
+// $Id: directory.php,v 1.13 2006/12/11 11:49:17 dhaun Exp $
 
 require_once ('lib-common.php');
 
@@ -64,6 +64,31 @@
 }
 
 /**
+* Helper function: Calculate last day of a given month
+*
+* @param    int     $month  Month
+* @param    int     $year   Year
+* @return   int             Number of days in that month
+* @bugs     Will fail from 2038 onwards ...
+*
+* "The last day of any given month can be expressed as the "0" day
+* of the next month", http://www.php.net/manual/en/function.mktime.php
+*
+*/
+function DIR_lastDayOfMonth ($month, $year)
+{
+    $month++;
+    if ($month > 12) {
+        $month = 1;
+        $year++;
+    }
+
+    $lastday = mktime (0, 0, 0, $month, 0, $year);
+
+    return intval(strftime('%d', $lastday));
+}
+
+/**
 * Display a topic selection drop-down menu
 *
 * @param    string  $topic          current topic
@@ -111,7 +136,7 @@
 */
 function DIR_monthLink ($topic, $year, $month, $count)
 {
-    global $_CONF, $LANG30;
+    global $_CONF, $LANG_MONTH;
 
     $retval = '';
 
@@ -121,7 +146,7 @@
                 . $year . '&amp;month=' . $month) . '">';
     }
 
-    $retval .= $LANG30[$month + 12] . ' (' . COM_numberFormat ($count) . ')'
+    $retval .= $LANG_MONTH[$month] . ' (' . COM_numberFormat ($count) . ')'
             . LB;
 
     if ($count > 0) {
@@ -230,26 +255,28 @@
 */
 function DIR_displayMonth ($topic, $year, $month, $main = false)
 {
-    global $_CONF, $_TABLES, $LANG30, $LANG_DIR;
+    global $_CONF, $_TABLES, $LANG_MONTH, $LANG_DIR;
 
     $retval = '';
 
     if ($main) {
-        $retval .= '<div><h1 style="display:inline">' . $LANG30[$month + 12]
+        $retval .= '<div><h1 style="display:inline">' . $LANG_MONTH[$month]
                 . ' ' . $year . '</h1> ' . DIR_topicList ($topic, $year, $month)
                 . '</div>' . LB;
     } else {
-        $retval .= '<h1>' . $LANG30[$month + 12] . ' ' . $year . '</h1>' . LB;
+        $retval .= '<h1>' . $LANG_MONTH[$month] . ' ' . $year . '</h1>' . LB;
     }
 
     $start = sprintf ('%04d-%02d-01 00:00:00', $year, $month);
-    $end   = sprintf ('%04d-%02d-31 23:59:59', $year, $month);
+    $lastday = DIR_lastDayOfMonth ($month, $year);
+    $end   = sprintf ('%04d-%02d-%02d 23:59:59', $year, $month, $lastday);
 
-    $sql = "SELECT sid,title,UNIX_TIMESTAMP(date) AS day,DAYOFMONTH(date) AS mday FROM {$_TABLES['stories']} WHERE (date >= '$start') AND (date <= '$end') AND (draft_flag = 0) AND (date <= NOW())";
+    $sql = "SELECT sid,title,UNIX_TIMESTAMP(date) AS day,DATE_FORMAT(date, '%e') AS mday FROM {$_TABLES['stories']} WHERE (date >= '$start') AND (date <= '$end') AND (draft_flag = 0) AND (date <= NOW())";
     if ($topic != 'all') {
         $sql .= " AND (tid = '$topic')";
     }
-    $sql .= COM_getTopicSql ('AND') . COM_getPermSql ('AND') . " ORDER BY date ASC";
+    $sql .= COM_getTopicSql ('AND') . COM_getPermSql ('AND')
+         . COM_getLangSQL ('sid', 'AND') . " ORDER BY date ASC";
 
     $result = DB_query ($sql);
     $numrows = DB_numRows ($result);
@@ -307,7 +334,7 @@
 */
 function DIR_displayYear ($topic, $year, $main = false) 
 {
-    global $_CONF, $_TABLES, $LANG30, $LANG_DIR;
+    global $_CONF, $_TABLES, $LANG_MONTH, $LANG_DIR;
 
     $retval = '';
 
@@ -324,13 +351,23 @@
     $start = sprintf ('%04d-01-01 00:00:00', $year);
     $end   = sprintf ('%04d-12-31 23:59:59', $year);
 
-    $monthsql = "SELECT DISTINCT MONTH(date) AS month,COUNT(*) AS count FROM {$_TABLES['stories']} WHERE (date >= '$start') AND (date <= '$end') AND (draft_flag = 0) AND (date <= NOW())";
+    $monthsql = array();
+    $monthsql['mysql'] = "SELECT DISTINCT MONTH(date) AS month,COUNT(*) AS count FROM {$_TABLES['stories']} WHERE (date >= '$start') AND (date <= '$end') AND (draft_flag = 0) AND (date <= NOW())";
+    $monthsql['mssql'] = "SELECT MONTH(date) AS month,COUNT(sid) AS count FROM {$_TABLES['stories']} WHERE (date >= '$start') AND (date <= '$end') AND (draft_flag = 0) AND (date <= NOW())";
     if ($topic != 'all') {
-        $monthsql .= " AND (tid = '$topic')";
+        $monthsql['mysql'] .= " AND (tid = '$topic')";
+        $monthsql['mssql'] .= " AND (tid = '$topic')";
     }
-    $monthsql .= COM_getTopicSql ('AND') . COM_getPermSql ('AND') . " GROUP BY MONTH(date) ORDER BY date ASC";
+    $monthsql['mysql'] .= COM_getTopicSql ('AND') . COM_getPermSql ('AND')
+              . COM_getLangSQL ('sid', 'AND');
+    $monthsql['mssql'] .= COM_getTopicSql ('AND') . COM_getPermSql ('AND')
+              . COM_getLangSQL ('sid', 'AND');
+
+    $msql = array();
+    $msql['mysql'] = $monthsql['mysql'] . " GROUP BY MONTH(date) ORDER BY date ASC";
+    $msql['mssql'] = $monthsql['mssql'] . " GROUP BY MONTH(date) ORDER BY month(date) ASC";
 
-    $mresult = DB_query ($monthsql);
+    $mresult = DB_query ($msql);
     $nummonths = DB_numRows ($mresult);
 
     if ($nummonths > 0) {
@@ -355,7 +392,7 @@
             $fillm = 12;
         }
 
-        if ($lastm < $fillm) {
+        if ($lastm <= $fillm) {
             for (; $lastm <= $fillm; $lastm++) {
                 $retval .= '<li>' . DIR_monthLink ($topic, $year, $lastm, 0)
                         . '</li>';
@@ -392,7 +429,7 @@
 
     if ($list_current_month) {
         $currentyear = date ('Y', time ());
-        $currentmonth = date ('m', time ());
+        $currentmonth = date ('n', time ());
 
         $retval .= DIR_displayMonth ($topic, $currentyear, $currentmonth);
 
@@ -402,9 +439,14 @@
     $retval .= '<div><h1 style="display:inline">' . $LANG_DIR['title']
             . '</h1> ' . DIR_topicList ($topic) . '</div>' . LB;
 
-    $yearsql = "SELECT DISTINCT YEAR(date) AS year FROM {$_TABLES['stories']} WHERE (draft_flag = 0) AND (date <= NOW())" . COM_getTopicSql ('AND') . COM_getPermSql ('AND')  . " GROUP BY YEAR(date) ORDER BY date DESC";
+    $yearsql = array();
+    $yearsql['mysql'] = "SELECT DISTINCT YEAR(date) AS year,date FROM {$_TABLES['stories']} WHERE (draft_flag = 0) AND (date <= NOW())" . COM_getTopicSql ('AND') . COM_getPermSql ('AND')  . COM_getLangSQL ('sid', 'AND');
+    $yearsql['mssql'] = "SELECT YEAR(date) AS year FROM {$_TABLES['stories']} WHERE (draft_flag = 0) AND (date <= NOW())" . COM_getTopicSql ('AND') . COM_getPermSql ('AND')  . COM_getLangSQL ('sid', 'AND');
+    $ysql = array();
+    $ysql['mysql'] = $yearsql['mysql'] . " GROUP BY YEAR(date) ORDER BY date DESC";
+    $ysql['mssql'] = $yearsql['mssql'] . " GROUP BY YEAR(date) ORDER BY YEAR(date) DESC";
 
-    $yresult = DB_query ($yearsql);
+    $yresult = DB_query ($ysql);
     $numyears = DB_numRows ($yresult);
 
     for ($i = 0; $i < $numyears; $i++) {
@@ -445,7 +487,7 @@
 
 if (($year != 0) && ($month != 0)) {
     $title = sprintf ($LANG_DIR['title_month_year'],
-                      $LANG30[$month + 12], $year);
+                      $LANG_MONTH[$month], $year);
     $display .= COM_siteHeader ('menu', $title);
     $display .= DIR_displayMonth ($topic, $year, $month, true);
     $display .= DIR_navBar ($topic, $year, $month);
diff -ruN 1.4.0sr5-1.src/docs/calendar.html 1.4.1.src/docs/calendar.html
--- 1.4.0sr5-1.src/docs/calendar.html	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/docs/calendar.html	2006-09-03 16:08:03.000000000 -0500
@@ -0,0 +1,127 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+  <title>Geeklog Documentation - Calendar Plugin</title>
+  <link rel="stylesheet" type="text/css" href="docstyle.css" title="Dev Stylesheet">
+</head>
+
+<body>
+<table>
+<tr>
+  <td><a href="index.html" style="background:transparent"><img src="images/newlogo.gif" alt="Geeklog Documentation" width="243" height="90" border="0"></a></td>
+</tr>
+<tr>
+  <td class="menu"><a href="index.html">Geeklog Documentation</a> - Calendar Plugin</td>
+</tr>
+</table>
+
+<h1>Calendar Plugin</h1>
+
+<p>Events and the calendar used to be an integral part of the Geeklog core code,
+but have been moved to a plugin as of Geeklog 1.4.1.</p>
+
+<h2><a name="config.php">Configuration File</a></h2>
+
+<p>The calendar plugin has its own configuration file, located at <tt>/path/to/geeklog/plugins/calendar/config.php</tt>. There you will find the following options:</p>
+
+<table>
+<tr><th width="25%">Variable</th>
+    <th width="25%">Default Value</th>
+    <th width="50%">Description</th>
+</tr>
+<tr>
+  <td><a name="desc_calendarloginrequired">calendarloginrequired</a></td>
+  <td>0</td>
+  <td>When set to 1, only registered users can access the calendar<br>
+    Please note that <code>$_CONF['<a
+    href="config.html#desc_loginrequired">loginrequired</a>']</code> in
+    <tt>config.php</tt> takes precedence over this setting. So when
+    <code>'loginrequired'</code> is set to 1, anonymous users can not access
+    the calendar even when <code>'calendarloginrequired'</code> is set
+    to 0.</td>
+</tr>
+<tr class="r2">
+  <td><a name="desc_delete_event">delete_event</a></td>
+  <td>0</td>
+  <td>Defines what to do when a user is deleted that is the owner of an event.
+    When set to 0, all events owned by the deleted user will be assigned to a
+    user of the "Root" group (e.g. the site admin). When set to 1, the events
+    are deleted. This only applies to site events - a user's personal events
+    are always deleted.</td>
+</tr>
+<tr>
+  <td><a name="desc_eventsubmission">eventsubmission</a></td>
+  <td>1</td>
+  <td>Whether events submitted by users will have to be approved by an admin
+    first (when set = 1) or show up immediately (when set = 0).</td>
+</tr>
+<tr class="r2">
+  <td><a name="desc_event_types">event_types</a></td>
+  <td>Anniversary, Appointment, Birthday, Business, Education, Holiday, Meeting, Miscellaneous, Personal, Phone Call, Special Occasion, Travel, Vacation</td>
+  <td>The set of event types that are used both on the public calendar and the
+    user's personal calendar.</td>
+</tr>
+<tr>
+  <td><a name="desc_hidecalendarmenu">hidecalendarmenu</a></td>
+  <td>0</td>
+  <td>Whether to hide the "Calendar" entry from Geeklog's menu bar (when set to
+    1) or to show it (when set to 0).</td>
+</tr>
+<tr class="r2">
+  <td><a name="desc_hour_mode">hour_mode</a></td>
+  <td>12</td>
+  <td>Which format to use when submitting or editing an event. Can be 12 (for
+    the 12 hours am/pm format) or 24 (for the 24 hours format).<br>
+    Uses the same value as <a
+    href="config.html#desc_hour_mode">$_CONF['hour_mode']</a> by default.</td>
+</tr>
+<tr>
+  <td><a name="desc_notification">notification</a></td>
+  <td>0</td>
+  <td>Whether to send an email notification when a new event was submitted for
+    the site's calendar (when set to = 1) or not (when set to = 0).<br>
+    No notification is ever sent for events in personal calendars.</td>
+</tr>
+<tr class="r2">
+  <td><a name="desc_personalcalendars">personalcalendars</a></td>
+  <td>0</td>
+  <td>Allow account holders to have a personal calendar</td>
+</tr>
+<tr>
+  <td><a name="desc_showupcomingevents">showupcomingevents</a></td>
+  <td>1</td>
+  <td>Whether to show upcoming events (0 = no, 1 = yes) in a separate
+    block.</td>
+</tr>
+<tr class="r2">
+  <td><a name="desc_upcomingeventsrange">upcomingeventsrange</a></td>
+  <td>14</td>
+  <td>Number of days that the &quot;Upcoming Events&quot; block will look
+    ahead.</td>
+</tr>
+</table>
+
+
+<h2><a name="others">Other Options</a></h2>
+
+<p>Please note that some of the options from Geeklog's main <tt>config.php</tt>
+are also relevant for the calendar plugin:</p>
+<ul>
+<li>Times and dates are formatted according to the current language and the
+    <a href="config.html#locale">locale settings</a> from Geeklog's main
+    <tt>config.php</tt>.</li>
+<li>The names of the <a name="states">states</a> that are listed in a drop-down
+    box when submitting an event are taken from the <code>$_STATES</code> array
+    at the end of Geeklog's main <tt>config.php</tt>.</li>
+</ul>
+
+
+<table class="footer">
+<tr>
+  <td colspan="2"><a href="http://wiki.geeklog.net/">The Geeklog Documentation Project</a><br>
+    All trademarks and copyrights on this page are owned by their respective owners. GeekLog is copyleft.</td>
+</tr>
+</table>
+
+</body>
+</html>
diff -ruN 1.4.0sr5-1.src/docs/changed-files 1.4.1.src/docs/changed-files
--- 1.4.0sr5-1.src/docs/changed-files	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/docs/changed-files	2006-12-31 03:43:59.000000000 -0600
@@ -1,15 +1,20 @@
-geeklog-1.4.0sr5-1/config.php
-geeklog-1.4.0sr5-1/language/afrikaans.php
-geeklog-1.4.0sr5-1/language/afrikaans_utf-8.php
-geeklog-1.4.0sr5-1/language/hebrew.php
-geeklog-1.4.0sr5-1/language/turkish.php
-geeklog-1.4.0sr5-1/language/turkish_utf-8.php
-geeklog-1.4.0sr5-1/plugins/links/functions.inc
-geeklog-1.4.0sr5-1/public_html/admin/install/install.php
-geeklog-1.4.0sr5-1/public_html/docs/changed-files
-geeklog-1.4.0sr5-1/public_html/docs/changes.html
-geeklog-1.4.0sr5-1/public_html/docs/history
-geeklog-1.4.0sr5-1/public_html/docs/install.html
-geeklog-1.4.0sr5-1/sql/mysql_tableanddata.php
-geeklog-1.4.0sr5-1/system/lib-comment.php
-geeklog-1.4.0sr5-1/system/lib-trackback.php
+geeklog-1.4.1/config.php
+geeklog-1.4.1/language/estonian.php
+geeklog-1.4.1/language/estonian_utf-8.php
+geeklog-1.4.1/language/russian.php
+geeklog-1.4.1/language/russian_utf-8.php
+geeklog-1.4.1/language/turkish.php
+geeklog-1.4.1/language/turkish_utf-8.php
+geeklog-1.4.1/plugins/calendar/functions.inc
+geeklog-1.4.1/plugins/calendar/language/russian.php
+geeklog-1.4.1/plugins/calendar/language/russian_utf-8.php
+geeklog-1.4.1/plugins/links/functions.inc
+geeklog-1.4.1/plugins/spamx/functions.inc
+geeklog-1.4.1/public_html/admin/sectest.php
+geeklog-1.4.1/public_html/admin/user.php
+geeklog-1.4.1/public_html/docs/changed-files
+geeklog-1.4.1/public_html/docs/history
+geeklog-1.4.1/public_html/layout/professional/preferences/profile.thtml
+geeklog-1.4.1/sql/mssql_tableanddata.php
+geeklog-1.4.1/sql/mysql_tableanddata.php
+geeklog-1.4.1/sql/updates/mysql_1.4.0_to_1.4.1.php
diff -ruN 1.4.0sr5-1.src/docs/changes.html 1.4.1.src/docs/changes.html
--- 1.4.0sr5-1.src/docs/changes.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/docs/changes.html	2006-09-05 00:35:11.000000000 -0500
@@ -22,6 +22,49 @@
 <a href="history">ChangeLog</a>. The file <tt>docs/changed-files</tt> has a list
 of files that have been changed since the last release.</p>
 
+<h2><a name="changes141">Geeklog 1.4.1</a></h2>
+
+<h3>New Features</h3>
+
+<ul>
+<li>Support for Microsoft SQL Server. Starting with this release, Geeklog can
+    now also be installed on Microsoft SQL Server, so it's no longer restricted
+    to just MySQL. The MS SQL support was developed by Randy Kolenko.
+    Thanks, Randy!<br>
+    Please note that any third-party plugins will have to offer support for
+    MS SQL before they can be installed on Microsoft SQL Server. The bundled
+    plugins (Calendar, Links, Polls, Spam-X, Static Pages) have already been
+    updated accordingly.</li>
+<li><a href="calendar.html">Calendar plugin</a>. The formerly built-in calendar
+    and events have now been moved into a separate plugin. This complements the
+    move of the <a href="polls.html">polls</a> and <a href="links.html">links</a> sections into plugins in Geeklog 1.4.0 and makes Geeklog more modular as you
+    can now easily disable or replace functionality that you don't need for
+    your site.</li>
+<li><a href="http://wiki.geeklog.net/wiki/index.php/Multi-Language_Support">Multi-language support</a>. It is now possible to build truly multi-linugal sites
+    with Geeklog where not only the navigation but also the content of the site
+    changes with the language.</li>
+<li>Ships with <a href="http://fckeditor.net/">FCKeditor</a> 2.3.1, which once
+    again includes a file manager for uploading images.</li>
+<li>A function for mass-deletion of old or inactive users. The list automatically
+    searches for users that have never logged in, only used the site for a very
+    short time or have not been online since a very long time. The time span can
+    be varied, and found users can be selectively deleted.</li>
+</ul>
+
+<h3>Security</h3>
+
+<p>In the light of the security issues discovered in Geeklog 1.4.0 and earlier
+versions, the Geeklog source code has undergone a code review. We have
+identified and addressed several minor issues and introduced new measures to
+enhance security in this release. As a welcome side effect, the code reviews
+have also uncovered a few bugs and inconsistencies that we also fixed in this
+release.</p>
+
+<h3>Spam Protection</h3>
+
+<p>With this release we are finally removing support for the <a href="http://www.geeklog.net/article.php/mt-blacklist-discontinued">discontinued</a> MT-Blacklist. In its place, we are now using a system called Spam Link Verification (SLV) run by Russ Jones at <a href="http://www.linksleeve.org/">www.linksleeve.org</a>. SLV could be described as a community-driven, automatically updated blacklist. See the documentation of the <a href="spamx.html" rel="nofollow">Spam-X plugin</a> for details.</p>
+
+
 <h2><a name="changes140sr5-1">Geeklog 1.4.0sr5-1</a></h2>
 
 <p>This release fixes display problems in the comment preview that were only
@@ -239,7 +282,7 @@
 </ol>
 
 <p>Also included in this release are bugfixes, e.g. for the problems editing
-static pages when URL rewriting was enabled, that were introduced in 
+static pages when URL rewriting was enabled, that were introduced in
 1.3.11sr2.</p>
 
 
@@ -679,7 +722,7 @@
     filtered at all. Although you probably can't cause too much harm with
     those 32 characters, this has now been fixed.</li>
 <li>Vincent Furia found that the restrictions for the form to email users
-    could be circumvented and could even be used to spam users. 
+    could be circumvented and could even be used to spam users.
     In addition to fixing theses issues, there is now also a speed limit
     on that form (defaults to the speed limit for story submissions).</li>
 <li>There was a way to post comments anonymously even when posting for
@@ -939,9 +982,9 @@
     showfirstasfeatured, dateonly, timeonly, skip_preview, upcomingeventsrange,
     emailstoryloginrequired, hideemailicon, hideprintericon, hidenewstories,
     hidenewcomments, hidenewlinks, max_photo_width, max_photo_height,
-    max_photo_size).  Please see the <a 
+    max_photo_size).  Please see the <a
     href="config.html">config documentation</a> for details.</li>
-  <li>Theme changes: Please consult the <a href="theme.html#changes137">themes 
+  <li>Theme changes: Please consult the <a href="theme.html#changes137">themes
     documentation</a> for a list of changes.</li>
 </ul>
 
@@ -980,7 +1023,7 @@
 upgrade process of the install script) since it may take some time to run,
 depending on how many users / stories / etc. you have in your database. Some
 people may even run into timeouts, e.g. when their hosting service limits the
-execution time of PHP scripts. If that happens to you - <strong>Don't 
+execution time of PHP scripts. If that happens to you - <strong>Don't
 Panic</strong>. Simply run the script again (and again and ...) until it
 reports that it didn't add any fields to any tables.</p>
 
@@ -1019,7 +1062,7 @@
     needed.</li>
   <li>A Geeklog site can now be disabled easily (e.g. for maintenance) by
     setting a flag in <tt><a href="config.html#site">config.php</a></tt>.</li>
-  <li>Theme changes: Please consult the <a href="theme.html#changes136">themes 
+  <li>Theme changes: Please consult the <a href="theme.html#changes136">themes
     documentation</a> for a list of changes.</li>
 </ul>
 
@@ -1055,7 +1098,7 @@
 
 <table border="0" width="100%" class="footer">
 <tr valign="top">
-  <td colspan="2"><a href="http://www.geeklog.net">The Geeklog Documentation Project</a><br>
+  <td colspan="2"><a href="http://wiki.geeklog.net">The Geeklog Documentation Project</a><br>
     All trademarks and copyrights on this page are owned by their respective owners. GeekLog is copyleft.</td>
 </tr>
 </table>
diff -ruN 1.4.0sr5-1.src/docs/config.html 1.4.1.src/docs/config.html
--- 1.4.0sr5-1.src/docs/config.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/docs/config.html	2006-10-22 10:14:35.000000000 -0500
@@ -32,14 +32,13 @@
 <li><a href="#locale">Locale Settings</a></li>
 <li><a href="#session">Session Settings</a></li>
 <li><a href="#cookie">Cookie Names</a></li>
-<li><a href="#email">E-Mail Settings</a></li>
+<li><a href="#desc_mail_settings">E-Mail Settings</a></li>
 <li><a href="#login">Login Settings</a></li>
 <li><a href="#submission">Submission Settings</a></li>
-<li><a href="#misc">Topic, What's New &amp; E-mail Settings</a></li>
-<li><a href="#calendar">Calendar Settings</a></li>
+<li><a href="#trackback">Trackback, Pingback, and Ping Settings</a></li>
+<li><a href="#misc">Topic, What's New, and Daily Digest Settings</a></li>
 <li><a href="#story">Story Settings</a></li>
 <li><a href="#comment">Comment Settings</a></li>
-<li><a href="#poll">Poll Settings</a></li>
 <li><a href="#image">Image Settings</a>
     <ul><li><a href="#userphoto">User photo</a></li></ul></li>
 <li><a href="#rdf">Syndication Settings</a></li>
@@ -56,9 +55,9 @@
     <th width="63%">Description</th></tr>
 <tr><td valign="top">_DB_dbms</td>
     <td valign="top">mysql</td>
-    <td valign="top"><strong>Do not change!</strong> This tells Geeklog that it
-      is using a MySQL database - and currently, that is the only type of 
-      database that is supported.</td></tr>
+    <td valign="top">This option tells Geeklog which type of database it's
+        running on. Can be either <code>'mysql'</code> (for MySQL) or
+        <code>'mssql'</code> (for Microsoft SQL Server).</td></tr>
 <tr><td valign="top">_DB_host</td>
     <td valign="top">localhost</td>
     <td valign="top">Database Server (to be entered in the form: <i>hostname:port:unixsocket</i>). In most cases you won't need to change the default value.</td></tr>
@@ -77,14 +76,21 @@
         avoid name collisions with tables used by other applications)</td></tr>
 <tr><td valign="top">_DB_mysqldump_path</td>
     <td valign="top">/usr/bin/mysqldump</td>
-    <td valign="top">Complete path to the <a href="http://www.mysql.com/doc/en/mysqldump.html">mysqldump</a> utility (part of MySQL) for making 
-      backups of your Geeklog database</td></tr>
+    <td valign="top">Complete path to the <a
+        href="http://www.mysql.com/doc/en/mysqldump.html">mysqldump</a> utility
+        (part of MySQL) for making backups of your Geeklog database.<br>
+        <i>(only used when running on a MySQL database)</i></td></tr>
 <tr><td valign="top"><a name="desc_allow_mysqldump">allow_mysqldump</a></td>
     <td valign="top">1</td>
-    <td valign="top">Enable or disable the backup functionality (1 = on, 0 = off)</td></tr>
+    <td valign="top">Enable or disable the backup functionality (1 = on,
+        0 = off).<br>
+        <i>(only used when running on a MySQL database)</i></td></tr>
 <tr><td valign="top"><a name="desc_mysqldump_options">mysqldump_options</a></td>
     <td valign="top">-Q</td>
-    <td valign="top">Here you can include additional options for the <a href="http://www.mysql.com/doc/en/mysqldump.html">mysqldump</a> call that Geeklog uses to create a backup from your database.</td></tr>
+    <td valign="top">Here you can include additional options for the <a
+        href="http://www.mysql.com/doc/en/mysqldump.html">mysqldump</a> call
+        that Geeklog uses to create a backup from your database.<br>
+        <i>(only used when running on a MySQL database)</i></td></tr>
 </table>
 
 
@@ -119,6 +125,19 @@
 <tr><td valign="top"><a name="desc_path_data">path_data</a></td>
     <td valign="top">/path/to/geeklog/data/</td>
     <td valign="top">File system path for the data directory, used e.g. for the user batch add feature</td></tr>
+<tr><td valign="top"><a name="desc_have_pear">have_pear</a></td>
+    <td valign="top"><code>false</code></td>
+    <td valign="top">Whether you have <a href="http://pear.php.net/">PEAR</a>
+        installed on your server (<code>= true</code>) or not
+        (<code>= false</code>). When set to <code>false</code>, Geeklog will
+        use the PEAR packages installed in <code>$_CONF['path_pear']</code>
+        (see below)</td></tr>
+<tr><td valign="top"><a name="desc_path_pear">path_pear</a></td>
+    <td valign="top"><tt>/path/to/geeklog/system/pear/</tt></td>
+    <td valign="top">When <code>$_CONF['have_pear']</code> (see above) is set
+        to <code>false</code>, this is the path where Geeklog expects to find
+        the <a href="http://pear.php.net/">PEAR</a> packages it requires (e.g.
+        PEAR::Mail for sending emails).</td></tr>
 </table>
 
 
@@ -145,6 +164,14 @@
   <td valign="top">http://www.example.com</td>
   <td valign="top">Base URL for your site (no trailing slash)</td></tr>
 <tr>
+  <td valign="top"><a name="desc_site_admin_url">site_admin_url</a></td>
+  <td valign="top">http://www.example.com/admin</td>
+  <td valign="top">Base URL of the admin area of your site (no trailing slash).
+    You won't have to change this normally, but some hosting services use a
+    predefined "admin" directory for other purposes. In this case, you can
+    rename Geeklog's <tt>admin</tt> directory and adjust the URL accordingly to
+    avoid conflicts.</td></tr>
+<tr>
   <td valign="top"><a name="desc_theme">theme</a></td>
   <td valign="top">professional</td>
   <td valign="top">Default theme to use on the site</td></tr>
@@ -177,6 +204,12 @@
   <td valign="top">Can be 1 or 0</td>
   <td valign="top">If set to 1, the option to to exclude certain authors from being seen is hidden from the user's preferences.</td></tr>
 <tr>
+  <td valign="top"><a name="desc_show_fullname">show_fullname</a></td>
+  <td valign="top">0</td>
+  <td valign="top">Whether to display a user's full name (= 1) or only their
+    username (= 0). For users that haven't entered their full name, Geeklog
+    will always display the username.</td></tr>
+<tr>
   <td valign="top"><a name="desc_remoteauthentication">remoteauthentication</a></td>
   <td valign="top">false</td>
   <td valign="top">Allow (when set to <tt>true</tt>) users who already have
@@ -229,6 +262,45 @@
     provided by plugins, and <tt>'custom'</tt> displays the entries returned by
     a custom function <code>CUSTOM_menuEntries</code> (see
     <tt>lib-custom.php</tt> for details).</td></tr>
+<tr>
+  <td valign="top"><a name="desc_custom_registration">custom_registration</a></td>
+  <td valign="top"><code>false</code></td>
+  <td valign="top">When set to <code>true</code>, Geeklog will let you use
+      your own signup form for new user registrations. Please see the file
+      <tt>lib-custom.php</tt> that ships with Geeklog for an example.</td></tr>
+<tr>
+  <td valign="top"><a name="desc_spamx">spamx</a></td>
+  <td valign="top">128</td>
+  <td valign="top">Tells Geeklog's <a href="spamx.html" rel="nofollow">Spam-X</a> plugin what to do when a spam post has been detected. The value is the sum
+    of all values that uniquely identify the Spam-X modules that should be
+    executed. E.g. the "delete" action module uses 128, the "email admin"
+    module uses 8, so if both modules should be executed, this option should
+    be set to 128 + 8 = 136.</td></tr>
+<tr>
+  <td valign="top"><a name="desc_rootdebug">rootdebug</a></td>
+  <td valign="top"><code>false</code></td>
+  <td valign="top">When a PHP error occurs, Geeklog's error handler will only
+    display the actual error message to members of the Root group (to prevent
+    leakage of possibly sensitive information). When set to <code>true</code>,
+    this information will be displayed to <em>all</em> users. <strong>Use only
+    for debugging purposes!</strong></td></tr>
+<tr>
+  <td valign="top"><a name="desc_lastlogin">lastlogin</a></td>
+  <td valign="top"><code>true</code></td>
+  <td valign="top">Whether to keep track of when a user last logged in
+    (<code>= true</code>) or not (<code>= false</code>).</td></tr>
+<tr>
+  <td valign="top"><a name="desc_cron_schedule_interval">cron_schedule_interval</a></td>
+  <td valign="top">86400</td>
+  <td valign="top">Geeklog can emulate a <a href="http://en.wikipedia.org/wiki/Cronjob">cronjob</a>, i.e. trigger a certain action at a given time. The code
+    to be executed can be provided by a plugin or through the
+    <code>CUSTOM_runScheduledTask</code> function in your
+    <tt>lib-custom.php</tt>. The value given is in seconds and specifies the
+    interval in which the code should be executed.<br>
+    Please note that to trigger this action, you will need to have someone
+    visit your site at around the specified time. On a site with few visitors,
+    the code may only be executed with considerable delay.<br>
+    Set to 0 to disable.</td></tr>
 </table>
 
 
@@ -247,8 +319,11 @@
     href="#Localization">Localization</a> below.</td></tr>
 <tr>
   <td valign="top"><a name="desc_locale">locale</a></td>
-  <td valign="top">en-gb</td>
-  <td valign="top">Locale for the system</td></tr>
+  <td valign="top">en_GB</td>
+  <td valign="top"><a href="http://en.wikipedia.org/wiki/Locale">Locale</a> for
+        the system. This defines both the language and the country that PHP
+        will use when deciding how to display localized information such as
+        dates (e.g. for the names of months).</td></tr>
 <tr>
   <td valign="top"><a name="desc_date">date</a></td>
   <td valign="top">%A, %B %d %Y @ %I:%M %p %Z</td>
@@ -280,11 +355,39 @@
   <td valign="top">Sun</td>
   <td valign="top">First day of the week in the calendar. Can be either <tt>'Sun'</tt> (Sunday) or <tt>'Mon'</tt> (Monday).</td></tr>
 <tr>
+  <td valign="top"><a name="desc_hour_mode">hour_mode</a></td>
+  <td valign="top">12</td>
+  <td valign="top">Which format to use when submitting or editing an object
+    with a time setting (e.g. the publish time of a story). Can be 12 (for the
+    12 hour am/pm format) or 24 (for the 24 hour format).</td></tr>
+<tr>
   <td valign="top"><a name="desc_default_charset">default_charset</a></td>
   <td valign="top">iso-8859-1</td>
-  <td valign="top">Character encoding used by Geeklog when serving HTML pages or 
+  <td valign="top">Character encoding used by Geeklog when serving HTML pages or
     sending email. Only used if the language file did not already set 
-    another character encoding.</td></tr>
+    another character encoding.<br>
+    For <a href="http://wiki.geeklog.net/wiki/index.php/Multi-Language_Support">multi-language</a> setups, using <code>'utf-8'</code> as the default character
+    set is recommended.</td></tr>
+<tr>
+  <td valign="top"><a name="desc_thousand_separator">thousand_separator</a></td>
+  <td valign="top"><code>,</code></td>
+  <td valign="top">Character to use between every group of thousands.</td></tr>
+<tr>
+  <td valign="top"><a name="desc_decimal_separator">decimal_separator</a></td>
+  <td valign="top"><code>.</code></td>
+  <td valign="top">Character to use before decimals.</td></tr>
+<tr>
+  <td valign="top"><a name="desc_decimal_count">decimal_count</a></td>
+  <td valign="top">2</td>
+  <td valign="top">How many decimal places to display.</td></tr>
+<tr>
+  <td valign="top"><a name="desc_timezone">timezone</a></td>
+  <td valign="top"><i>(commented out)</i></td>
+  <td valign="top">If your server is located in a different timezone, use this
+    option to set your local (i.e. your own) timezone, so that the time and
+    date on the site match your own.<br>
+    This option is known as the "<a href="http://www.geeklog.net/forum/viewtopic.php?showtopic=21232">timezone hack</a>" and may not work on some
+    servers.</td></tr>
 </table>
 
 
@@ -350,7 +453,7 @@
   <td valign="top">Name of the language cookie.</td></tr>
 </table>
 
-<h3><a name="email">E-Mail Settings</a></h3>
+<h3><a name="desc_mail_settings">E-Mail Settings</a><a name="email"></a></h3>
 
 <p>Starting with Geeklog 1.3.9, Geeklog uses the PEAR::Mail class to send all
 emails. You can then select whether emails should be sent through SMTP,
@@ -414,7 +517,7 @@
 <tr><td valign="top"><a name="desc_submitloginrequired">submitloginrequired</a></td>
     <td valign="top">0</td>
     <td valign="top">When set to 1, only registered users can submit stories
-      and events</td></tr>
+      and items handled by plugins, e.g. links and events</td></tr>
 <tr><td valign="top"><a name="desc_commentsloginrequired">commentsloginrequired</a></td>
     <td valign="top">0</td>
     <td valign="top">When set to 1, only registered users can submit comments</td></tr>
@@ -455,10 +558,6 @@
   <td valign="top">1</td>
   <td valign="top">Enable (1) or disable (0) the story submission queue</td></tr>
 <tr>
-  <td valign="top"><a name="desc_eventsubmission">eventsubmission</a></td>
-  <td valign="top">1</td>
-  <td valign="top">Enable (1) or disable (0) the event submission queue</td></tr>
-<tr>
   <td valign="top"><a name="desc_usersubmission">usersubmission</a></td>
   <td valign="top">0</td>
   <td valign="top">Enable (1) or disable (0) the user submission queue (i.e.
@@ -471,24 +570,34 @@
 <tr>
   <td valign="top"><a name="desc_allow_domains">allow_domains</a></td>
   <td valign="top">''</td>
-  <td valign="top">When user submission is enabled this can contain a comma-separated list
-    of domain names from which user submissions will not be queued (but
-    approved automatically).
-    <br><strong>Example:</strong> 'mycompany.com,myothercompany.com'</td></tr>
+  <td valign="top">When the user submission queue is enabled this can contain a
+    comma-separated list of domain names from which user submissions will not
+    be queued (but approved automatically). Regular expressions are also allowed
+    and interpreted.<br><strong>Example:</strong>
+    <tt>'mycompany.com,myothercompany.com'</tt></td></tr>
+<tr>
+  <td valign="top"><a name="desc_disallow_domains">disallow_domains</a></td>
+  <td valign="top">''</td>
+  <td valign="top">This is the opposite of <code>$_CONF['allow_domains']</code>
+    (see above): A list of domain names that are <em>not</em> allowed in email
+    addresses of new users. Note that this list is <em>always</em> used, even
+    when the user submission queue has been switched off. Again, regular
+    expression can be used.<br><strong>Example</strong> disallow email addresses
+    with a certain domain name and from any ".edu" domain:
+    <tt>'somebaddomain.com,\.edu$'</tt></td></tr>
 <tr>
   <td valign="top"><a name="desc_notification">notification</a></td>
   <td valign="top">array()</td>
   <td valign="top">Send an email notification to <tt>$_CONF['site_email']</tt>
-    when a new story, comment, event, trackback or pingback has been submitted
+    when a new story, comment, trackback or pingback has been submitted
     or a new user has registered with the site. The <tt>array()</tt> can hold
     any combination of  the strings <tt>'story'</tt>, <tt>'comment'</tt>,
-    <tt>'trackback'</tt>, <tt>'pingback'</tt>, <tt>'event'</tt>, and
-    <tt>'user'</tt> (separated by commas), depending on which notification(s)
-    you want.<br>
+    <tt>'trackback'</tt>, <tt>'pingback'</tt>, and <tt>'user'</tt> (separated
+    by commas), depending on which notification(s) you want.<br>
     <strong>Example:</strong> <code>array('story','user');</code> would
     send notifications when a new story has been submitted or a new user has
     registered. No notifications would be sent, for example, for new
-    events.</td>
+    comments.</td>
 <tr>
   <td valign="top"><a name="desc_listdraftstories">listdraftstories</a></td>
   <td valign="top">0</td>
@@ -508,6 +617,21 @@
   <td valign="top">0</td>
   <td valign="top">If 1, allows submission of stories and comments without previewing (i.e. the submission form will always have a Preview <em>and</em> a Submit button).</td></tr>
 <tr>
+  <td valign="top"><a name="desc_advanced_editor">advanced_editor</a></td>
+  <td valign="top">false</td>
+  <td valign="top">Enable (if set to <code>true</code>) a WYSIWYG editor for
+    story and comment submissions and static pages. Geeklog ships with <a
+    href="http://www.fckeditor.net/">FCKeditor</a>.</td></tr>
+</table>
+
+
+<h3><a name="trackback">Trackback, Pingback, and Ping Settings</a></h3>
+
+<table border="1" width="100%">
+<tr><th width="8%">Variable</th>
+    <th width="29%">Default Value</th>
+    <th width="63%">Description</th></tr>
+<tr>
   <td valign="top"><a name="desc_trackback_enabled">trackback_enabled</a></td>
   <td valign="top">true</td>
   <td valign="top">Enable (true) or disable (true) <a href="http://en.wikipedia.org/wiki/Trackback">trackback</a> comments. This applies to both sending and receiving trackback comments.</td></tr>
@@ -518,7 +642,7 @@
 <tr>
   <td valign="top"><a name="desc_ping_enabled">ping_enabled</a></td>
   <td valign="top">true</td>
-  <td valign="top">Enable (true) or disable (true) the ability to ping weblog directory services like <a href="http://blo.gs/">blo.gs</a>.</td></tr>
+  <td valign="top">Enable (true) or disable (true) the ability to ping weblog directory services like <a href="http://technorati.com/">Technorati</a>.</td></tr>
 <tr>
   <td valign="top"><a name="desc_trackback_code">trackback_code</a></td>
   <td valign="top">0</td>
@@ -528,6 +652,23 @@
   <td valign="top">0</td>
   <td valign="top">How to handle multiple trackbacks and pingbacks from the same source: 0 = keep only the first, reject any further trackbacks / pingbacks; 1 = overwrite, i.e. only keep the latest trackback / pingback; 2 = allow multiple trackbacks / pingbacks, i.e. list them all</td></tr>
 <tr>
+  <td valign="top"><a name="desc_trackbackspeedlimit">trackbackspeedlimit</a></td>
+  <td valign="top">300</td>
+  <td valign="top">Number of seconds between two trackbacks / pingbacks from the same IP address.</td></tr>
+<tr>
+  <td valign="top"><a name="desc_check_trackback_link">check_trackback_link</a></td>
+  <td valign="top">2</td>
+  <td valign="top">This option can be used to check the validity of a trackback.
+    You can check if the URL in the trackback actually contains a link back to
+    your site (otherwise, it's probably spam). You can also check if the
+    trackback was sent from the proper IP address, i.e. the IP of the site in
+    the trackback URL (again, if they don't match, it's probably spam). Note
+    that you can <strong>add up the values</strong> below to do more than one
+    check (but using option 1 <em>and</em> 2 doesn't make sense and will be
+    treated as if you requested option 2).<br>
+    Options are: 0 = don't perform any checks, 1 = check only for your site's main URL (<code>$_CONF['site_url']</code>), 2 = check for the exact URL of the entry (e.g. an article) on your site, 4 = check IP address of the sender of the trackback against the site referred to in the trackback URL.<br>
+    <b>Example:</b> <code>$_CONF['check_trackback_link'] = 6; // check for the exact URL (2) and proper IP address (4)</code></td></tr>
+<tr>
   <td valign="top"><a name="desc_pingback_self">pingback_self</a></td>
   <td valign="top">0</td>
   <td valign="top">Pingbacks are sent out automatically to <em>all</em> the
@@ -539,16 +680,10 @@
     If your article contains more than one link to other stories on your site,
     then option 1 is probably of limited use, as it would only pingback the
     first linked story and run into the speed limit for the others.</td></tr>
-<tr>
-  <td valign="top"><a name="desc_advanced_editor">advanced_editor</a></td>
-  <td valign="top">false</td>
-  <td valign="top">Enable (if set to <code>true</code>) a WYSIWYG editor for
-    story and comment submissions and static pages. Geeklog ships with <a
-    href="http://www.fckeditor.net/">FCKeditor</a>.</td></tr>
 </table>
 
 
-<h3><a name="misc">Topic, What's New &amp; E-mail Settings</a></h3>
+<h3><a name="misc">Topic, What's New, and E-mail Settings</a></h3>
 
 <table border="1" width="100%">
 <tr><th width="8%">Variable</th>
@@ -624,6 +759,11 @@
   <td valign="top">Set to 1 to hide new entries by plugins from the What's New
     block.</td></tr>
 <tr>
+  <td valign="top"><a name="desc_title_trim_length">title_trim_length</a></td>
+  <td valign="top">20</td>
+  <td valign="top">Max. length of the title of items listed in the What's New
+    block.</td></tr>
+<tr>
   <td valign="top"><a name="desc_copyrightyear">copyrightyear</a></td>
   <td valign="top"><i>(commented out)</i></td>
   <td valign="top">Set this to the year you want to appear in the copyright notice of your
@@ -643,6 +783,18 @@
   <td valign="top">300</td>
   <td valign="top">Minimum delay between two requests for a new password, in seconds.</td></tr>
 <tr>
+  <td valign="top"><a name="desc_login_attempts">login_attempts</a></td>
+  <td valign="top">3</td>
+  <td valign="top">Max. number of login attempts before the speedlimit (see
+    below) kicks in and further logins are blocked for the given amount of
+    time.</td></tr>
+<tr>
+  <td valign="top"><a name="desc_login_speedlimit">login_speedlimit</a></td>
+  <td valign="top">300</td>
+  <td valign="top">How many seconds have to pass before another login attempt
+    can be made after <code>$_CONF['login_attempts']</code> (see above) login
+    attempts have failed.</td></tr>
+<tr>
   <td valign="top"><a name="desc_ip_lookup">ip_lookup</a></td>
   <td valign="top"><i>not set</i></td>
   <td valign="top">The IP addresses of comment posters are logged and displayed for admin users. When this variable is set to point to a service that can do IP address lookups, it's possible to lookup the owner of an IP address by clicking on it, making it easier to report abuse to ISPs, etc.<br>
@@ -654,31 +806,6 @@
 </table>
 
 
-<h3><a name="calendar">Calendar Settings</a></h3>
-
-<table border="1" width="100%">
-<tr><th width="8%">Variable</th>
-    <th width="29%">Default Value</th>
-    <th width="63%">Description</th></tr>
-<tr>
-  <td valign="top"><a name="desc_personalcalendars">personalcalendars</a></td>
-  <td valign="top">0</td>
-  <td valign="top">Allow account holders to have a personal calendar</td></tr>
-<tr>
-  <td valign="top"><a name="desc_showupcomingevents">showupcomingevents</a></td>
-  <td valign="top">1</td>
-  <td valign="top">Show up-coming events (0=no, 1=yes)</td></tr>
-<tr>
-  <td valign="top"><a name="desc_upcomingeventsrange">upcomingeventsrange</a></td>
-  <td valign="top">14</td>
-  <td valign="top">Number of days that &quot;Upcoming Events&quot; will look ahead.</td></tr>
-<tr>
-  <td valign="top"><a name="desc_event_types">event_types</a></td>
-  <td valign="top">Anniversary, Appointment, Birthday, Business, Education, Holiday, Meeting, Miscellaneous, Personal, Phone Call, Special Occasion, Travel, Vacation</td>
-  <td valign="top">The set of event types that are used both on the public calendar and the user's personal calendars</td></tr>
-</table>
-
-
 <h3><a name="story">Story Settings</a></h3>
 
 <table border="1" width="100%">
@@ -702,6 +829,11 @@
   <td valign="top">1</td>
   <td valign="top">Show author username to public, and enable search by username (0=no, 1=yes)</td></tr>
 <tr>
+  <td valign="top"><a name="desc_hideviewscount">hideviewscount</a></td>
+  <td valign="top">0</td>
+  <td valign="top">Whether to show (= 0) or to hide (= 1) the number of views
+    a story has had.</td></tr>
+<tr>
   <td valign="top"><a name="desc_article_image_align">article_image_align</a></td>
   <td valign="top">right</td>
   <td valign="top">Which side of article the topic image should be shown (right or left)</td></tr>
@@ -710,6 +842,20 @@
   <td valign="top">1</td>
   <td valign="top">Default setting for new stories and story submissions: Whether to show the topic icon (1) or not (0).</td></tr>
 <tr>
+  <td valign="top"><a name="desc_draft_flag">draft_flag</a></td>
+  <td valign="top">0</td>
+  <td valign="top">Default setting for new stories created by Story Admins: Whether the story's draft flag should be set (1) or not (0).</td></tr>
+<tr>
+  <td valign="top"><a name="desc_frontpage">frontpage</a></td>
+  <td valign="top">0</td>
+  <td valign="top">Default setting for new stories and story submissions: Whether the story should appear on the site's frontpage (1) or only in its topic's page (0). Please note that for stories submitted to the archive topic, this setting will be ignored and the story will <em>not</em> appear on the frontpage.</td></tr>
+<tr>
+  <td valign="top"><a name="desc_onlyrootfeatures">onlyrootfeatures</a></td>
+  <td valign="top">0</td>
+  <td valign="top">When set to 1, this will only allow members of the Root
+    group to make a story "featured", i.e. the sticky top story on the
+    site.</td></tr>
+<tr>
   <td valign="top"><a name="desc_hideemailicon">hideemailicon</a></td>
   <td valign="top">0</td>
   <td valign="top">When set to 1, this will disable the ability to send a story by email. It
@@ -723,6 +869,25 @@
     the &quot;View Printable Version&quot; from the Story Options
     block.</td></tr>
 <tr>
+  <td valign="top"><a name="desc_hide_no_news_msg">hide_no_news_msg</a></td>
+  <td valign="top">0</td>
+  <td valign="top">When set to 1, hide the "No News To Display" message on the index page (e.g. when viewing a topic without any stories in it)</td></tr>
+<tr>
+  <td valign="top"><a name="desc_hide_main_page_navigation">hide_main_page_navigation</a></td>
+  <td valign="top">0</td>
+  <td valign="top">When set to 1, this option will hide the "Google paging"
+    navigation from index.php, i.e. from the site's frontpage and all topic
+    pages. This may come in handy for more advanced layouts but will of course
+    prevent people from easily reaching older articles.</td></tr>
+<tr>
+  <td valign="top"><a name="desc_allow_page_breaks">allow_page_breaks</a></td>
+  <td valign="top">1</td>
+  <td valign="top">Allow usage of the <code>[page_break]</code> tag in stories (when set to 1), so that stories can spread over multiple pages.</td></tr>
+<tr>
+  <td valign="top"><a name="desc_page_break_comments">page_break_comments</a></td>
+  <td valign="top">last</td>
+  <td valign="top">When the <code>[page_break]</code> tag is allowed in stories (see above), where should the story's comments be displayed: <code>'last'</code> = on the story's last page only, <code>'first'</code> = on the first page only, <code>'all'</code> = on every page.</td></tr>
+<tr>
   <td valign="top"><a name="desc_show_right_blocks">show_right_blocks</a></td>
   <td valign="top">false</td>
   <td valign="top">If set to <tt>true</tt>, the right-side column of blocks
@@ -736,6 +901,14 @@
     featured. This will even be applied to the first story on page 2 of a
     topic page, for example.</td></tr>
 <tr>
+  <td valign="top"><a name="desc_showfirstasfeatured">onlyrootfeatures</a></td>
+  <td valign="top">0</td>
+  <td valign="top">This restricts the featuring of stories to root user(s). If you have several story admins 
+  that can create content that is not visible to other story admins, 
+  and such a content is featured, another admin might think its ok to feature his own content. To prevent
+  that two admins unknowingly take features from each other away, only a user who can see all content (= root)
+  should be able to feature a story.</td></tr>
+<tr>
   <td valign="top"><a name="desc_left_blocks_in_footer">left_blocks_in_footer</a></td>
   <td valign="top">0</td>
   <td valign="top">When set to 1, this will make the <code>{left_blocks}</code>
@@ -771,32 +944,6 @@
 </table>
 
 
-<h3><a name="poll">Poll Settings</a></h3>
-
-<table border="1" width="100%">
-<tr><th width="8%">Variable</th>
-    <th width="29%">Default Value</th>
-    <th width="63%">Description</th></tr>
-<tr>
-  <td valign="top"><a name="desc_maxanswers">maxanswers</a></td>
-  <td valign="top">10</td>
-  <td valign="top">Maximum number of possible answers for the poll editor</td></tr>
-<tr>
-  <td valign="top"><a name="desc_answerorder">answerorder</a></td>
-  <td valign="top">submitorder</td>
-  <td valign="top">Sort answers by the number of results ('voteorder') or keep the order 
-    in which they were entered ('submitorder')</td></tr>
-<tr>
-  <td valign="top"><a name="desc_pollcookietime">pollcookietime</a></td>
-  <td valign="top">86400</td>
-  <td valign="top">Number of seconds to set a poll answer cookie to time out on</td></tr>
-<tr>
-  <td valign="top"><a name="desc_polladdresstime">polladdresstime</a></td>
-  <td valign="top">604800</td>
-  <td valign="top">Number of seconds to set a poll answer IP address to time out on</td></tr>
-</table>
-
-
 <h3><a name="image">Image Settings</a></h3>
 
 <table border="1" width="100%">
@@ -813,9 +960,10 @@
 <tr>
   <td valign="top"><a name="desc_path_to_mogrify">path_to_mogrify</a></td>
   <td valign="top"><i>(commented out)</i></td>
-  <td valign="top">If you chose 'imagemagick' for $_CONF['image_lib'] above,
-    then this should hold the <strong>complete path</strong> to the mogrify
-    executable (from the ImageMagick package), e.g. '/usr/bin/mogrify'.<br>
+  <td valign="top">If you chose 'imagemagick' for
+    <code>$_CONF['image_lib']</code> above, then this should hold the
+    <strong>complete path</strong> to the mogrify executable (from the
+    ImageMagick package), e.g. '/usr/bin/mogrify'.<br>
     You will need a fairly recent version of <a
     href="http://www.imagemagick.org/">ImageMagick</a> for this to work
     (version 5.4.9 or newer is recommended).</td>
@@ -823,10 +971,10 @@
 <tr>
   <td valign="top"><a name="desc_path_to_netpbm">path_to_netpbm</a></td>
   <td valign="top"><i>(commented out)</i></td>
-  <td valign="top">If you chose 'netpbm' for $_CONF['image_lib'] above, then
-    this should hold the complete path to the <em>directory</em> where the
-    binaries from the netpbm package are kept, e.g. '/usr/bin/netpbm/'. Note
-    that the path must end in a slash.<br>
+  <td valign="top">If you chose 'netpbm' for <code>$_CONF['image_lib']</code>
+    above, then this should hold the complete path to the <em>directory</em>
+    where the binaries from the netpbm package are kept, e.g.
+    <code>'/usr/bin/netpbm/'</code>. Note that the path must end in a slash.<br>
     Precompiled binaries of the netpbm package for various platforms can be
     downloaded from the <a
     href="http://sourceforge.net/projects/gallery/">Homepage of the Gallery
@@ -849,41 +997,47 @@
   <td valign="top"><a name="desc_max_image_width">max_image_width</a></td>
   <td valign="top">160</td>
   <td valign="top">Max. width of an image in pixels. If it exceeds this, it is
-    either rejected or resized (depending on the setting of $_CONF['image_lib']
-    above).
+    either rejected or resized (depending on the setting of
+    <code>$_CONF['image_lib']</code> above).</td>
 </tr>
 <tr>
   <td valign="top"><a name="desc_max_image_height">max_image_height</a></td>
   <td valign="top">120</td>
   <td valign="top">Max. height of an image in pixels. If it exceeds this, it is
-    either rejected or resized (depending on the setting of $_CONF['image_lib']
-    above).
+    either rejected or resized (depending on the setting of
+    <code>$_CONF['image_lib']</code> above).</td>
 </tr>
 <tr>
   <td valign="top"><a name="desc_max_image_size">max_image_size</a></td>
   <td valign="top">1048576 <i>(equals 1 MB)</i></td>
   <td valign="top">Max. size of an image in bytes. If it exceeds this, it is
-    is rejected (even if you're using a graphics package to resize images).
+    is rejected (even if you're using a graphics package to resize images).</td>
 </tr>
 <tr>
   <td valign="top"><a name="desc_max_topicicon_width">max_topicicon_width</a></td>
   <td valign="top">48</td>
   <td valign="top">Max. width of a topic icon in pixels. If it exceeds this,
     it is either rejected or resized (depending on the setting of
-    $_CONF['image_lib'] above).
+    <code>$_CONF['image_lib']</code> above).</td>
 </tr>
 <tr>
   <td valign="top"><a name="desc_max_topicicon_height">max_topicicon_height</a></td>
   <td valign="top">48</td>
   <td valign="top">Max. height of a topic icon in pixels. If it exceeds this,
     it is either rejected or resized (depending on the setting of
-    $_CONF['image_lib'] above).
+    <code>$_CONF['image_lib']</code> above).</td>
 </tr>
 <tr>
   <td valign="top"><a name="desc_max_topicicon_size">max_topicicon_size</a></td>
   <td valign="top">65536 <i>(equals 64 KB)</i></td>
   <td valign="top">Max. size of a user photo in bytes. If it exceeds this, it
-    is rejected (even if you're using a graphics package to resize images).
+    is rejected (even if you're using a graphics package to resize images).</td>
+<tr>
+  <td valign="top"><a name="desc_debug_image_upload">debug_image_upload</a></td>
+  <td valign="top"><i>(commented out)</i></td>
+  <td valign="top">When not commented out(!) and set to <code>true</code>, this
+    option enables debugging output to be written into Geeklog's <tt>error.log</tt> file during the upload of an image. This is useful to track down problems
+    with the image upload.</td>
 </tr>
 </table>
 
@@ -900,14 +1054,14 @@
   <td valign="top">128</td>
   <td valign="top">Max. width of a user photo in pixels. If it exceeds this, it
     is either rejected or resized (depending on the setting of
-    $_CONF['image_lib'] above).
+    <code>$_CONF['image_lib']</code> above).
 </tr>
 <tr>
   <td valign="top"><a name="desc_max_photo_height">max_photo_height</a></td>
   <td valign="top">128</td>
   <td valign="top">Max. height of a user photo in pixels. If it exceeds this,
     it is either rejected or resized (depending on the setting of
-    $_CONF['image_lib'] above).</td>
+    <code>$_CONF['image_lib']</code> above).</td>
 </tr>
 <tr>
   <td valign="top"><a name="desc_max_photo_size">max_photo_size</a></td>
@@ -917,7 +1071,7 @@
 </tr>
 <tr>
   <td valign="top"><a name="desc_use_gravatar">use_gravatar</a></td>
-  <td valign="top">false</i></td>
+  <td valign="top">false</td>
   <td valign="top">If enabled (set to <tt>true</tt>), a user's avatar image will
     be requested from <a href="http://gravatar.com/">gravatar.com</a> if the
     user didn't upload a user photo (i.e. an uploaded photo always takes
@@ -961,8 +1115,8 @@
 
 <p>Starting with Geeklog 1.3.9, feeds can be created and configured from
 Geeklog's Admin menu ("Content Syndication"). The following settings will only
-be used as the default settings for any new feeds that you create from the
-admin panel.</p>
+be used as the <em>default settings</em> for any new feeds that you create from
+the admin panel.</p>
 
 <table border="1" width="100%">
 <tr><th width="8%">Variable</th>
@@ -1013,6 +1167,11 @@
   <td valign="top">Defines which protocols are allowed in links (i.e. HTML
     <code>&lt;a&gt;</code> tags).</td></tr>
 <tr>
+  <td valign="top"><a name="desc_skip_html_filter_for_root">skip_html_filter_for_root</a></td>
+  <td valign="top">0</td>
+  <td valign="top">When set to 1, this will allow members of the Root group
+    to use <em>all</em> HTML in their posts. <strong>Use at your own risk!</strong></td></tr>
+<tr>
   <td valign="top"><a name="desc_disable_autolinks">disable_autolinks</a></td>
   <td valign="top">0</td>
   <td valign="top">If set to 1, disables the autolinks. I.e. links using the
@@ -1027,7 +1186,7 @@
   <td valign="top">Text to replace a censored word with</td></tr>
 <tr>
   <td valign="top"><a name="desc_censorlist">censorlist</a></td>
-  <td valign="top">array("fuck", "cunt", "fucker", "fucking", "pussy", "cock", "c0ck", "cum", "twat", "clit", "bitch", "fuk", "fuking", "motherfucker")</td>
+  <td valign="top">array(<i>a list of "bad" words goes here ...</i>)</td>
   <td valign="top">An array of censored words</td></tr>
 </table>
 
@@ -1056,7 +1215,30 @@
 <tr>
   <td valign="top"><a name="desc_url_rewrite">url_rewrite</a></td>
   <td valign="top">false</td>
-  <td valign="top">Enable (true) or disable (false) URL rewriting.</td>
+  <td valign="top">Enable (true) or disable (false) URL rewriting.</td></tr>
+</table>
+
+
+<h3><a name="unused">Unused Settings</a></h3>
+
+<p>This is a list of <tt>config.php</tt> options that are currently unused, e.g.
+because the feature they were intended for has not been implemented yet.</p>
+
+<table border="1" width="100%">
+<tr><th width="8%">Variable</th>
+    <th width="29%">Default Value</th>
+    <th width="63%">Description</th></tr>
+<tr>
+  <td valign="top"><a name="desc_ostype">ostype</a></td>
+  <td valign="top"><code>PHP_OS</code></td>
+  <td valign="top">Identifies the operating system running on your
+    webserver.</td></tr>
+<tr>
+  <td valign="top"><a name="desc_pdf_enabled">pdf_enabled</a></td>
+  <td valign="top">0</td>
+  <td valign="top">PDF conversion of stories has not been fully implemented
+    yet. Leave this option as is to prevent unfinished options from showing up
+    on your site.</td></tr>
 </table>
 
 
@@ -1126,7 +1308,7 @@
 
 <table border="0" width="100%" class="footer">
 <tr valign="top">
-  <td colspan="2"><a href="http://www.geeklog.net">The Geeklog Documentation Project</a><br>
+  <td colspan="2"><a href="http://wiki.geeklog.net/">The Geeklog Documentation Project</a><br>
     All trademarks and copyrights on this page are owned by their respective owners. GeekLog is copyleft.</td>
 </tr>
 </table>
diff -ruN 1.4.0sr5-1.src/docs/docstyle.css 1.4.1.src/docs/docstyle.css
--- 1.4.0sr5-1.src/docs/docstyle.css	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/docs/docstyle.css	2006-08-27 04:30:19.000000000 -0500
@@ -18,6 +18,10 @@
   font-size: 1.0em;
 }
 
+h4 {
+  font-size: 0.8em;
+}
+
 p, ul, ol, li {
   margin-top: 0.6em;
   margin-bottom: 0.6em;
diff -ruN 1.4.0sr5-1.src/docs/history 1.4.1.src/docs/history
--- 1.4.0sr5-1.src/docs/history	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/docs/history	2006-12-31 03:40:34.000000000 -0600
@@ -1,5 +1,473 @@
 GeekLog History/Changes:
 
+Dec 31, 2006 (1.4.1)
+------------
+
+- Changed the default character set in config.php back to iso-8859-1 [Dirk]
+- Removed display of the site URL from admin/sectest.php. On sites not installed
+  in the webroot, it did not display the site's actual URL, which only causes
+  confusion (reported by Dazzy) [Dirk]
+- Fixed conflict between the Spam-X DeleteComment and SLVreport action
+  modules which prevented the count of deleted spams from being incremented
+  [Dirk]
+- Fixed max. allowed length for a user's homepage (128) and location (96) in the
+  preferences/profile.thtml template file (reported by burjans) [Dirk]
+- Fixed page title after a successful batch import of users (which read "Error")
+  [Dirk]
+- Back in Geeklog 1.4.0, a counter was added to the Spam-X plugin to count all
+  deleted spam posts. The counter was only added in fresh installs of 1.4.0,
+  though, but not when upgrading from an earlier version. Fixed that [Dirk]
+- In lists created from the Links and Calendar plugins, use "links-new-plugin"
+  as the CSS class name [Oliver]
+
+- Updated Estonian language file, provided by Artur Rpp
+- Updated Russian language file, provided by Alexander Yurchenko
+- New Russian language file for the Calendar plugin, provided by Alexander
+  Yurchenko
+- Updated Turkish language file, provided by Kemal Cellat
+
+
+Dec 17, 2006 (1.4.1rc1)
+------------
+
+- Improved handling of UTF-8 feeds (feature request #631) [Mike, Dirk]
+- Fixes for the remaining MS SQL issues (bugs #620, #621, #622, #624)
+  [Randy Kolenko, Dirk]
+- Initialize SQL request arrays to prevent PHP errors (e.g. with static pages),
+  reported by ldfoo [Dirk]
+- Escape the '#' sign in spam checks since we're using it as the separator
+  character for the regexp [Dirk]
+- Mark Evans provided a set of patches that let plugins hook into the user
+  registration, story and comment submission as well as the contact user and
+  email story forms. These hooks can be used to add CAPTCHAs to those forms,
+  but may also come in handy for other plugin applications.
+  Also modified several template files to include a {captcha} variable to ease
+  installation of Mark's CAPTCHA plugin.
+- Update the timestamp for the last run of PLG_runScheduledTask before calling
+  the function to minimize the risk of the call being triggered more than once
+  (bug #628) [Dirk]
+- In a multi-language setup, allow one static page per language to take over
+  the index page (bug #625) [Dirk]
+- sectest.php didn't perform the test for the install script and default
+  passwords on some setups (reported by Christian Weiske) [Dirk]
+- Fixed "delete account" option (reported by Paul Lelgemann) [Dirk]
+- Fixed counting of comments in several places where comments were counted
+  without taking the type of the parent object into account (e.g. when a story
+  and a poll happened to use the same id, their comment counts would have been
+  messed up) [Dirk]
+- Editing a story did reset the trackback count (reported by T. Marquez) [Dirk]
+- In the admin's story editor, set the debug option for the image upload only
+  when $_CONF['debug_image_upload']  = true (thus avoiding the "Warning: File #x
+  on the HTML form was empty" messages in error.log) [Dirk]
+- Renamed [calendar:] autotag back to [event:] for backward compatibility. It
+  also makes more sense this way, since it does provide a link to an event, not
+  a link to a calendar (bug #619) [Dirk]
+- Need to check if field 'etids' is NULL (for MySQL 4) for the Daily Digest
+  (bug #595) [Dirk]
+- Removed the outer table from the layout and merged several style declarations
+  into the body-tag declaration [Oliver]
+- The spam check for comment posts did not include the comment title (reported
+  by Laugh) [Dirk]
+- When multi-language support is enabled, allow language-specific overrides
+  of the locale settings, e.g. $_CONF['date_en'] and $_CONF['date_de'] to
+  overwrite $_CONF['date'] depending on the current language [Dirk]
+- When installing the Geeklog database using InnoDB tables, create a
+  'database_engine' entry in gl_vars, so that plugins know to use InnoDB for
+  their tables. Updated the bundled plugins to act accordingly [Dirk]
+- DB_query will now (optionally) accept an array of SQL request strings from
+  which it will pick the one applicable for the currently used database type
+  [Vinny, Dirk]
+- Provide some more meta information in header.thtml [Dirk]
+  + added optional {lang_id} variable and lang attribute
+  + added a hreflang attribute to the feed links
+  + added <link rel="home">, <link rel="search">, <link rel="contents"> links
+    (via the {rel_links} variable)
+- COM_isFrontpage has been deprecated, as it had its return values inverted
+  (returns false when on the site's index page). Use COM_onFrontpage instead
+  from now on [Dirk]
+- Fixed check for new stories from archive topic [Dirk]
+- Call PLG_templateSetVars() from STORY_renderArticle() so we can have custom
+  variables in the story templates [Dirk]
+
+- Updated Chinese language files (traditional and simplified), provided by
+  Samuel M. Stone
+- Updated Japanese language files for Geeklog and all the plugins, provided
+  by the Geeklog Japanese group
+- Updated Ukrainian language files (Windows-1251, KOI8-U, and UTF-8 encoding)
+  for Geeklog and all the plugins, provided by Vitaliy Biliyenko
+
+
+Nov 5, 2006 (1.4.1b2)
+-----------
+
+- Fixed potential SQL injection in the story editor preview (required Story
+  Admin permissions) [Dirk]
+- Added multi-language support in static pages centerblocks and search [Dirk]
+- When cloning a static page, keep the original's "wrap in a block" setting
+  [Dirk]
+- Spam-X stats: Removed MT-Blacklist entry, added SLV whitelist entry [Dirk]
+- Don't add empty "No Title" links in portal blocks when the feed has less than
+  the configured max. number of entries (bug #610) [Dirk]
+- Added support for COM_mail to use a parm for a CC: distribution list [Blaine]
+- Fixed bug #603, hardcoded mysql_error() [Oliver]
+- Fixed bug #604, delete trackbacks of a story when story is deleted [Oliver]
+- Allow users to switch the language again, even when the default character set
+  is not UTF-8. It is, however, not possible to mix UTF-8 and other charsets.
+  Also, "UTF-8" is not displayed in the language dropdown any more [Dirk]
+- Corrected SQL for group counting in Admin menu for root admin to fix bug #573
+  [Oliver]
+- Properly encode non-ASCII characters in email headers (subject, names),
+  loosely based on patch #489 and code from Cal Henderson's book [Dirk]
+- Removed the Calendar styles and moved them to a dedicated file in the
+  plugin's directory [Oliver]
+- Sorted all stylesheet definitions alphabetically and split semantics and
+  classes [Oliver]
+- When making a topic the archive topic, update all existing stories in that
+  topic to "archived" status (and likewise revert that status if the topic
+  loses its archive topic status) [Dirk]
+- Don't count archived stories as new stories in the What's New block [Dirk]
+- Moved the defines for STORY_ARCHIVE_ON_EXPIRE and STORY_DELETE_ON_EXPIRE to
+  lib-story.php (from config.php) where they make more sense [Dirk]
+- COM_getPermSQL was using the current user's group information when called for
+  another user. In Geeklog, this only happens for the Daily Digest, though
+  (bug #594) [Dirk]
+- When comments are disabled for a story, don't show any existing comments in
+  the What's New block, in search results or via comment.php (bug #597) [Dirk]
+- When trackbacks are disabled for a story, don't list any existing trackbacks
+  in the What's New block [Dirk]
+- In the Admin's User Editor, disabled the checkboxes for the All Users,
+  Logged-in Users, and Remote Users groups to prevent accidental change of
+  group membership [Dirk]
+- When deleting a topic, also delete all Trackbacks attached to stories in that
+  topic and update the Older Stories block and the feeds [Dirk]
+- Fixed approve / delete of draft stories from moderation.php [Dirk]
+- Strip blanks from the name of a PHP block function when saving a PHP block
+  [Dirk]
+- Fixed / added multi-language support in the article directory, What's New
+  block, and the search for stories and comments [Dirk]
+- Fixed an SQL error when changing a story's ID [Dirk]
+- Call SET NAMES 'utf8' when using UTF-8 as the site's character set (with
+  MySQL), as pointed out by several people [Dirk]
+- Removed wrong parameter when calling up the comment form again when the
+  comment's title was missing. This bug existed for both story and polls
+  comments. (bug #591) [Dirk]
+- Users who were only in the Syndication Admin group didn't have access to
+  Command and Control (moderation.php) [Dirk]
+- For Block, Group, Polls, Story and Topic Admins only display the number of
+  the respective entries they can actually see (instead of the number of all
+  entries, e.g. topics, in the system) [Dirk]
+- Fixed highlighting parse error when the search term contained an apostrophe
+  (bug #590) [Dirk]
+- Improved (and subsequently fixed) Pingback spam detection which now also uses
+  the $_CONF['check_trackback_link'] settings [Dirk]
+- directory.php was still using $LANG30 instead of $LANG_MONTH (bug #583) [Dirk]
+- When upgrading the database from 1.4.0, only update those plugins that are
+  actually installed (disabled or not) [Dirk]
+- CSS Changes to support better scaling of Font size - using browser Text-Size
+  adjustment. Removed many extra font-size declarations. [Blaine]
+- Don't allow viewing of a Banned user profile unless user admin [Blaine]
+- Only call CUSTOM_loginErrorHandler when custom_registration is enabled
+  (bug #584) [Blaine]
+- Fixed SQL error with some older MySQL versions when calling up the Batch User
+  Delete option [Oliver]
+- Comments always displayed the comment author's full name, even when
+  $_CONF['show_fullname'] was set to 0 [Dirk]
+- Fixed 404 (caused by a request for a file named '(none)') in the user profile
+  display when a user doesn't have a userphoto [Dirk]
+
+- New Estonian language files for Geeklog and most of the plugins, provided
+  by Artur Rpp
+- Updated Hebrew language file, provided by LWC
+- Updated Japanese language files for Geeklog and all the plugins, provided
+  by the Geeklog Japanese group
+- New Russian language files for the Spam-X plugin, provided by Pavel Kovalenko
+- Updated Slovenian language files for Geeklog and all the plugins, provided
+  by gape
+
+Calendar plugin
+------------
+- Created a dedicated stylesheet file and include the file only if the URL
+  contains the word 'calendar' [Oliver]
+- Tweaked the Calendar search result listing: Removed the Event Description
+  (usually too long for the result listing), replaced Location (which is only a
+  part of the address and not very helpful) with Event Type, minimized Date &
+  Time display for events lasting only one day (don't list date twice) [Dirk]
+
+Links plugin
+------------
+- Renamed classes block-vote-results to poll-vote-results and block-vote to
+  poll-vote [Oliver]
+- Removed duplicate "Other" entry from the Link submission form [Dirk]
+- In the Admin's list of links, only display an edit icon for links that the
+  current user can actually edit (they did get a proper error message when
+  trying to edit such a link, though) [Dirk]
+- Don't return the number of links in the links submission queue if the
+  current user does not have links.moderate permissions [Dirk]
+- Filter out special characters from link IDs. They were properly escaped
+  before storing them in the database but caused problems when using them
+  (bug #565) [Dirk]
+
+
+Sep 17, 2006 (1.4.1b1)
+------------
+
+- Changes to templates and CSS to remove deprecated HTML (align= and valign=)
+  Removed un-used CSS declarations, redundant font-family declarations
+  Removed use of font-size percentage and used more acceptable EM units [Blaine]
+- Don't display an "edit" link in a story if the current user doesn't have
+  edit permissions for the story's topic (bug #558) [Dirk]
+- Added a new script to check the site's security (admin/sectest.php). This
+  replaces the "get bent" PHP block, but also performs additional checks [Dirk]
+- Created a Batch Delete function for users that easily identifies inactive or
+  old users and allows mass-deletion of those [Oliver]
+- Updated FCKeditor to version 2.3.1 [Blaine]
+- Added ability to filter out Admin related groups on the Group Admin page
+  Allows users to easily see only user groups. When editing non-core groups,
+  You can select if this group is an Admin Group [Blaine]
+- Added ability to multi-select submission queue items on the moderation page
+  and delete them all at once [Blaine]
+- Always make "Submissions" the first entry in the Admins Only block to keep
+  the correspondence between the other entries and the icons on the moderation
+  page undisturbed (and because it's an important entry) [Dirk]
+- Fixed 'emailstoriesperdefault' config option (bug #553) [Dirk]
+- Added support for Microsoft SQL Server, provided by Randy Kolenko
+- Introduced $_CONF['disallow_domains'] as a blacklist of domain names that are
+  not allowed for new users during signup. Both 'disallow_domains' and
+  'allow_domains' can also contain regular expressions [Dirk]
+- Introduced DB_lockTable / DB_unlockTable to encapsulate the LOCK / UNLOCK
+  requests when updating the comments table [Dirk]
+- Fixed bug: [#540] Blocking the last Root user or yourself should not be
+  possible [Oliver]
+- Fixed bug: [#546] The phrase "Story Stats" is hardcoded [Oliver]
+- Added a spam check to the email user form [Dirk]
+- Use the same piece of code to compare plugin version numbers in lib-admin.php
+  and admin/plugins.php to avoid the "update" button not appearing for some
+  version numbers (bug #542) [Dirk]
+- Re-implemented $_CONF['allow_domains'] whitelist (when the user submission
+  queue is enabled) that was inexplicably missing from 1.4.0 [Dirk]
+- Merged User Preferences and Account information into one page, like the
+  Story editor with tabs etc. [Blaine, Oliver]
+- Tried to make "3 new stories in the last 1 day" sound less awkward by going
+  back one unit, i.e. "3 new stories in the last 24 hours", in the What's New
+  block (likewise for 1 week, 1 month, etc.) [Dirk]
+- Introduced config options to set the default for the story's draft flag
+  and frontpage option (feature request #163) [Dirk]
+- Introduced $_CONF['hide_main_page_navigation'] to hide the "Google paging"
+  from index.php (may be useful for some layouts) [Dirk]
+- Allow (optional) usage of autotags in "normal" blocks (can be enabled /
+  disabled per block) [Dirk]
+- Introduced a {story_counter} variable in the story templates. It's 0 on the
+  article page and in previews, but 1 for the first story, 2 for the second,
+  etc. on the index page (per page, i.e. starts with 1 again on the second page)
+  [Dirk]
+- Require that users enter their current password when changing their password,
+  email address or "Remember me for" setting. Redesigned the Account Information
+  page and added a note about this requirement. [Dirk]
+- Prevent accidental banning of users when the Admin edits a user's information
+  using a theme that wasn't updated for Geeklog 1.4.0+ [Dirk]
+- $_CONF['show_fullname'] now works as expected, i.e. when setting it to = 1,
+  a user's full name will be displayed everywhere in Geeklog instead of the
+  username (assuming the users entered their full name) [Dirk]
+- Fixed a bug in the article directory where December was not listed when no
+  stories had been posted in that month (reported by Kino and Ivy of geeklog.jp)
+- Replace Geeklog's [imageX] tags before extracting the What's Related links
+  from a story to prevent the (verbatim) tag to show up in the block [Dirk]
+- Update story ids in the gl_trackback table when a story's id is changed [Mike]
+- Implemented new plugin API function, PLG_spamAction, to perform the spam
+  actions in case spam has been detected through some other means (e.g.
+  trackbacks from sites that don't link back to us) [Dirk]
+- Implemented new plugin API function, plugin_enablestatechange_, to inform
+  plugins when they are about to be enabled / disabled (Patch #405) [Dirk]
+- Support backslashes in comment and submissions in HTML mode [Mike]
+- Added breadcrumb functionality to the navbar class (v1.1) [Blaine]
+- Enhancements to navbar templates and CSS for a more 3D TAB'ed look [Blaine]
+- Changed several <table>s to <div>s + CSS in the Professional theme [Oliver]
+- Introduced generic function to delete a user's photo to avoid code
+  duplication and slightly different error handling in various places [Dirk]
+- Made the new user registration form remember the user's input so that they
+  don't have to retype everything in case of an error [Dirk]
+- In the Admin's user list, banned users are indicated by striked-through
+  entries (based on a hack by Andy Maloney) [Dirk]
+- Added new setting $_CONF['onlyrootfeatures']. This is for sites where two or
+  more story admins can feature stories that the other admins cannot see. The
+  setting prevents that one admin does not see that there is another recent
+  story featured and sets one by himself, "stealing" the feature from the other.
+- Changed "Reply"-button to "Post a comment" [Oliver]
+- Implemented an error handler to supress all PHP level errors and display a
+  much more userfriendly error text to the end user. Prevents all path exposure,
+  prevents "white error page" mystery debugging fun. [Mike]
+- Full sweep of all code for $_REQUEST/$_GET/$_POST and $_COOKIE use. Made sure
+  that COM_applyFilter, or other safe usage is made of the variables. [Mike]
+- Added an option to hide the "No News To Display" message on the index page
+  (new config option $_CONF['hide_no_news_msg']) [Dirk]
+- Added an option to check if the sites sending trackbacks are actually linking
+  to our site (see $_CONF['check_trackback_link'] in config.php) [Dirk]
+- Made it impossible to save two syndication feeds with identical filenames
+  [Oliver]
+- Stories with comments/trackbacks disabled, do not show comment/trackback
+  url in RSS feeds [Mike]
+- Added email confirmation fields for new user and usersettings [Oliver]
+- Allow changing of group ownership for "gldefault" blocks. Requires a change
+  in admin/block/defaultblockeditor.thtml to enable the group dropdown. On a
+  fresh install, all the blocks (with the exception of "Are you secure?") are
+  now owned by the Block Admin group [Dirk]
+- Users created by a User Admin should not be queued for approval, even when
+  $_CONF['usersubmission'] = 1 [Dirk]
+- Introduced 'syndication.edit' permission and 'Syndication Admin' group so
+  that access to the Content Syndication panel no longer requires 'Root'
+  permissions [Dirk]
+- For the "Submissions" entry in the Admins Only block, only count story and
+  event submissions when the current user has story.moderate or event.moderate
+  permissions, respectively [Dirk]
+- On admin/moderation.php, list the stories that have their draft flag set only
+  when the current user has story.edit permission [Dirk]
+- Fixed empty lines in a Group Admin's list of groups when that Group Admin
+  was not a member of all groups [Dirk]
+- Renamed the misnamed CUSTOM_runSheduledTask function (in lib-custom.php) to
+  CUSTOM_runScheduledTask. Don't forget to make that change in your copy of
+  lib-custom.php if you're using that functionality! [Dirk]
+- Improved error log contents when unable to acquire a feed reader for a portal
+  block. [Mike]
+- Extended plugin API for feed extensions to include feed id and the topic (for
+  adding topic/feed specific data) [Mike]
+- Don't attempt to rename a non-existing user photo when
+  $_CONF['allow_username_change'] is enabled (reported and fix suggested by
+  Yusuke Sakata) [Dirk]
+- Made changes to ensure compatibility with MS SQL, as suggested by
+  Randy Kolenko [Dirk]
+- The "last login date" column in the Admin's list of users now uses
+  $_CONF['shortdate'] so that it includes the year [Dirk]
+- Fixed batch user import (which set all imported users to status "Awaiting
+  Authorization" instead of "Awaiting Activation") [Mike]
+- Fixed admin lists google paging for use in static pages etc. [Oliver]
+- Added support for a custom login error handler function,
+  CUSTOM_loginErrorHandler [Blaine]
+- Format the user agent string according to the RFCs 1945 / 2068 / 2616, i.e.
+  "Geeklog/1.4.1" when trying to detect a Trackback URL [Dirk]
+- Made the search option on the Admin pages behave like the site search, i.e.
+  it doesn't require you to pad queries with '*' any longer [Dirk]
+- In story search results, show/hide the "Author" and "Views" columns based on
+  the $_CONF['contributedbyline'] and $_CONF['hideviewscount'] settings [Dirk]
+- Introduced $_CONF['title_trim_length'] to make the max. title length of items
+  in the What's New block configurable (feature request #525). Also implemented
+  a new function COM_truncate (based on a patch by Yusuke Sakata) that properly
+  handles truncation of multi-byte text strings if the mb_ functions are
+  available [Dirk]
+- Added a JavaScript confirmation box to most delete buttons/links. If you'd
+  rather not have such a confirmation, use {delete_option_no_confirmation}
+  instead of {delete_option} in the admin templates [Dirk]
+- Fixed RSS Feed parser to create RFC 822 dates in en_GB or en_US locale as per
+  the RFC spec [Mike]
+- Removed obsolete "do not use spaces" warning from user editor (bug #530)
+  [Dirk]
+- Show fullname/username according to config.php settings in stories [Oliver]
+- Added possibility to change the css-class for admin list headers and fields
+  [Oliver]
+- Added unified new style class to stats.php/style.css to have all lists on
+  the page look the same [Oliver]
+- Added multi-language support, based on earlier works by Euan McKay and LWC.
+  Also see http://wiki.geeklog.net/wiki/index.php/Multi-Language_Support
+- Changed the default path for topic icons to /images/topics [Dirk]
+- Fixed an SQL error when calling up the Admin's list of stories without any
+  topics [Dirk]
+- Removed the public_html/portal.php script, as it is no longer needed [Dirk]
+- Remove uninstalled plugins from the global $_PLUGINS array immediately
+  (just in case the array would be used to trigger any actions) [Dirk]
+- The "Topic" column in the list of feeds was empty for feeds that are only
+  linked from a topic page [Dirk]
+- Only use the mb_substr workaround in the calendar when the current character
+  set is UTF-8 (bug #524) [Dirk]
+- Fixed SQL error on MySQL 5 when listing the members of a group (bug #527)
+  [Dirk]
+- When emailing a story, don't include the text "Comment on this story at ..."
+  when comments have been switched off for that story [Dirk]
+- Fixed wrong wording of some of the "access denied" messages when trying to
+  access Admin panels without proper privileges [Dirk]
+- Fixed display of Admin block for users that only had certain Admin privileges
+  [Dirk]
+
+- New Afrikaans language file, provided by Renier Maritz
+- Updated Hebrew language file, provided by LWC
+  The Hebrew language file was also renamed to hebrew_utf-8.php for consistency
+  with the other UTF-8 language files.
+- Updated Turkish language file, provided by Kemal Cellat
+
+Calendar plugin (1.0.0)
+---------------
+- Bugfix: Replace autotags in the event description [Dirk]
+- Added an option to switch between 24 hour and 12 hour am/pm mode for entering
+  and editing events [Dirk]
+- Implemented plugin_enablestatechange API function to enable/disable plugin
+  feeds and blocks when the plugin is enabled/disabled [Dirk]
+- Added calendar plugin initial version [Oliver]
+
+Links plugin (1.0.1)
+------------
+- Implemented plugin_enablestatechange API function to enable/disable plugin
+  feeds when the plugin is enabled/disabled [Dirk]
+- Changed the english language file from "Web Resources" to "Links"
+- Fixed hard-coded link to the "admin" directory when editing a link (reported
+  by Ronnie Rigl) [Dirk]
+- Optimized SQL requests for the plugin's What's New section [Dirk]
+- Re-introduced {button_links} header variable [Dirk]
+- Added an option to hide the Top Ten Links on the first page [Dirk]
+- Made the page title on the Web Resources page more informative by adding the
+  category and page number [Dirk]
+- The edit icon (only visible for Links Admins) now uses the same image type
+  as the current theme (was previously hardcoded to "edit.gif") [Dirk]
+- Hide the "Web Resources" link from the menu when login is required to see
+  the links (for consistency with the Polls plugin) [Dirk]
+- Added a title attribute to the links on the site stats page that contains
+  the link's actual URL [Dirk]
+- Fixed site link in search results which wasn't using portal.php [Dirk]
+- The Admin's search option now also searches the link description [Dirk]
+- Removed extra <small> tags from the What's New section (bug #526) [Dirk]
+
+Polls plugin (1.1.0)
+------------
+- Fixed call to undefined function polllist when calling up a non-existing
+  poll [Dirk]
+- Implemented plugin_enablestatechange API function to enable/disable the poll
+  block when the plugin is enabled/disabled [Dirk]
+- Fixed search [Dirk]
+- Added a remark field for polls answers [Oliver]
+- Re-introduced {button_polls} header variable [Dirk]
+- Added an option to hide the link to the polls from the menu (for consistency
+  with the Links plugin) [Dirk]
+- Fixed poll URLs on the site stats page [Dirk]
+- Remove the polls block when uninstalling the Polls plugin (another part of
+  bug #520) [Dirk]
+
+Spam-X plugin (1.1.0)
+-------------
+- Added SLV (Spam Link Verification) modules [Dirk]
+- The MT-Blacklist modules are not being shipped with Geeklog any longer. The
+  MT-Blacklist entries are removed from the database during the upgrade [Dirk]
+- Allow special characters (e.g. backslashes) in the Admin modules (e.g. the
+  Personal Blacklist module) [Dirk]
+- Moved spam actions to plugin_spamaction_spamx API function [Dirk]
+- Fixed potential problems with the checkforSpam function's return code in case
+  of unusual configurations (e.g. $_CONF['spamx'] = 0) [Dirk, Tom Willet]
+- Made the plugin's internal log flag a proper config option. So you can now
+  disable logging to spamx.log from the plugin's config.php [Dirk]
+- Mass delete by IP now uses stored IP address [Mike]
+
+Static Pages plugin (1.4.3)
+-------------------
+- Make sure autotags are replaced even when execution of PHP code is disabled
+  (reported by LWC) [Dirk]
+- Added a help URL for the block display of static pages [Oliver]
+- Added ability in staticpage editor to enable/disable Advanced Editor mode
+  so you can use FCKEditor and then if need basic html edit mode [Blaine]
+- Fixed default sorting order for the list of static pages [Dirk]
+- Allow to show/hide update date/time and hits [Oliver]
+- When creating a new page, don't set the default group ownership to the Static
+  Page Admin group if the current user is not a member of that group. Instead,
+  pick a group with staticpages.edit permission that the user is a member of
+  [Dirk]
+- Fixed paging for the list of static pages (bug #528) [Dirk]
+
+
 July 23, 2006 (1.4.0sr5-1)
 -------------
 
@@ -1298,6 +1766,28 @@
 - New Portuguese (Brazil) language file, provided by Alcides Soares Filho.
 
 
+Mar 5, 2006 (1.3.9sr5)
+-----------
+
+This release addresses the following security issues:
+
+- Konstantin Dyakoff found an old bug in the session handling that would allow
+  anyone to log in as any user.
+- James Bercegay of GulfTech Security Research reported several issues with
+  Geeklog's cookie handling that made it vulnerable to SQL injections, arbitrary
+  file access, and even injection and execution of arbitrary code.
+- Prevent execution of PHP code in "normal" blocks
+
+
+Jul 3, 2005 (1.3.9sr4)
+-----------
+
+This release addresses the following security issue:
+
+Stefan Esser found an SQL injection that can, under certain circumstances,
+be exploited to extract user data such as the user's password hash.
+
+
 Dec 31, 2004 (1.3.9sr3)
 ------------
 
@@ -2016,7 +2506,7 @@
 - Set the max length of the input field for the event URL to 128 characters
   (was 96) in the default themes (other themes may need adjusting).
 - Fixed localisation of the date of all-day events in the event details.
-- Added missing {event_location} variable in calender/eventdetails.thtml
+- Added missing {event_location} variable in calendar/eventdetails.thtml
   template files.
 - Fixed display of events spanning several days in the personal calendar.
 - Moved hard-coded HTML for the login form in the User Functions block to a new
diff -ruN 1.4.0sr5-1.src/docs/index.html 1.4.1.src/docs/index.html
--- 1.4.0sr5-1.src/docs/index.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/docs/index.html	2006-08-20 06:38:43.000000000 -0500
@@ -34,9 +34,16 @@
   <li><a href="config.html">The Geeklog Configuration File</a> (config.php)</li>
   <li>Pre-installed plugins
     <ul>
-      <li><a href="staticpages.html">Static Pages plugin</a></li>
-      <li><a href="spamx.html" rel="nofollow">Geeklog Spam-X plugin</a> - Fight comment spam!</li>
-      <li><a href="polls.html">Polls plugin</a></li>
+      <li><a href="calendar.html">Calendar plugin</a>
+        - a calendar for your site</li>
+      <li><a href="links.html">Links plugin</a>
+        - your collection of links to other sites</li>
+      <li><a href="polls.html">Polls plugin</a>
+        - let your users vote on something</li>
+      <li><a href="spamx.html" rel="nofollow">Spam-X plugin</a>
+        - fight comment spam!</li>
+      <li><a href="staticpages.html">Static Pages plugin</a>
+        - for other static and non-static content</li>
     </ul></li>
   <li><a href="trackback.html">Trackback, Pingback, Ping</a></li>
   <li>Geeklog's API
@@ -94,7 +101,7 @@
 
 <table border="0" width="100%" class="footer">
 <tr valign="top">
-  <td colspan="2"><a href="http://www.geeklog.net">The Geeklog Documentation Project</a><br>
+  <td colspan="2"><a href="http://wiki.geeklog.net/">The Geeklog Documentation Project</a><br>
     All trademarks and copyrights on this page are owned by their respective owners. GeekLog is copyleft.</td>
 </tr>
 </table>
diff -ruN 1.4.0sr5-1.src/docs/install.html 1.4.1.src/docs/install.html
--- 1.4.0sr5-1.src/docs/install.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/docs/install.html	2006-09-17 05:35:07.000000000 -0500
@@ -141,7 +141,7 @@
 		<ol>
 			<li>Unpack the tarball *within* your web tree by running the following in your shell (this assumes you have ssh access and that you are working with the tarball <i>on the designated server </i>- this can be locally or hosted elsewhere):<br>
 				<br>
-				<code>tar -zxvf geeklog-1.4.0.tar.gz</code><br>
+				<code>tar -zxvf geeklog-1.4.1.tar.gz</code><br>
 				<br>
 				<b>FTP, Windows Users:</b> unpack the tarball on your <i>local computer</i> and upload the result to your designated server. Everything uploads as ASCII except the images.<br>
 				<br>
@@ -401,7 +401,7 @@
 <table width="95%" border="0" cellspacing="0" cellpadding="4"><tr>
 <td bgcolor="#ffedf2">
 <p><b>I get the following error:</b></p>
-<p><code>Template Error: set_root: /some/path/to/public_html/layout/XSilver is not a directory.
+<p><code>Template Error: set_root: /some/path/to/public_html/layout/professional is not a directory.
 Halted.</code></p>
 </td></tr><tr><td>
 <p><strong>Answer:</strong></p>
@@ -516,7 +516,7 @@
 
 <table border="0" width="100%" class="footer">
 <tr valign="top">
-  <td colspan="2"><a href="http://www.geeklog.net">The Geeklog Documentation Project</a><br>
+  <td colspan="2"><a href="http://wiki.geeklog.net/">The Geeklog Documentation Project</a><br>
     All trademarks and copyrights on this page are owned by their respective owners. GeekLog is copyleft.</td>
 </tr>
 </table>
diff -ruN 1.4.0sr5-1.src/docs/links.html 1.4.1.src/docs/links.html
--- 1.4.0sr5-1.src/docs/links.html	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/docs/links.html	2006-08-13 10:24:09.000000000 -0500
@@ -0,0 +1,135 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+  <title>Geeklog Documentation - Links Plugin</title>
+  <link rel="stylesheet" type="text/css" href="docstyle.css" title="Dev Stylesheet">
+</head>
+
+<body>
+<table>
+<tr>
+  <td><a href="index.html" style="background:transparent"><img src="images/newlogo.gif" alt="Geeklog Documentation" width="243" height="90" border="0"></a></td>
+</tr>
+<tr>
+  <td class="menu"><a href="index.html">Geeklog Documentation</a> - Links Plugin</td>
+</tr>
+</table>
+
+<h1>Links Plugin</h1>
+
+<p>The links section used to be an integral part of the Geeklog core code, but have been moved to a plugin as of Geeklog 1.4.0.</p>
+
+<h2><a name="config.php">Configuration File</a></h2>
+
+<p>The links plugin has its own configuration file, located at <tt>/path/to/geeklog/plugins/links/config.php</tt>. There you will find the following options:</p>
+
+<table>
+<tr><th width="25%">Variable</th>
+    <th width="25%">Default Value</th>
+    <th width="50%">Description</th>
+</tr>
+<tr>
+  <td><a name="desc_delete_links">delete_links</a></td>
+  <td>0</td>
+  <td>Defines what to do when a user is deleted that is the owner of a link.
+    When set to 0, all links owned by the deleted user will be assigned to a
+    user of the "Root" group (e.g. the site admin). When set to 1, the links
+    are deleted.</td>
+</tr>
+<tr class="r2">
+  <td><a name="desc_hidelinksmenu">hidelinksmenu</a></td>
+  <td>0</td>
+  <td>Whether to hide the "Links" entry from Geeklog's menu bar (when set to 1)
+    or to show it (when set to 0).</td>
+</tr>
+<tr>
+  <td><a name="desc_hidenewlinks">hidenewlinks</a></td>
+  <td>0</td>
+  <td>Whether new links should be hidden from the "What's New" block (when set
+    = 1) or whether to list them there (when set to = 0).</td>
+</tr>
+<tr class="r2">
+  <td><a name="desc_linkcols">linkcols</a></td>
+  <td>3</td>
+  <td>The number of link categories to display per column.</td>
+</tr>
+<tr>
+  <td><a name="desc_linksloginrequired">linksloginrequired</a></td>
+  <td>0</td>
+  <td>When set to 1, only registered users can access the links section.<br>
+    Please note that <code>$_CONF['<a
+    href="config.html#desc_loginrequired">loginrequired</a>']</code> in
+    <tt>config.php</tt> takes precedence over this setting. So when
+    <code>'loginrequired'</code> is set to 1, anonymous users can not access
+    the links section even when <code>'linksloginrequired'</code> is set
+    to 0.</td>
+</tr>
+<tr class="r2">
+  <td><a name="desc_linksperpage">linksperpage</a></td>
+  <td>10</td>
+  <td>The number of links to show per page.</td>
+</tr>
+<tr>
+  <td><a name="desc_linksubmission">linksubmission</a></td>
+  <td>1</td>
+  <td>Whether links submitted by users will have to be approved by an admin
+    first (when set = 1) or show up immediately (when set = 0).</td>
+</tr>
+<tr class="r2">
+  <td><a name="desc_newlinksinterval">newlinksinterval</a></td>
+  <td>1209600</td>
+  <td>For how long a link should be considered "new" and show up in the "What's
+    New" block on the site. The interval is given in seconds, so the default
+    value equals 14 days.</td>
+</tr>
+<tr>
+  <td><a name="desc_notification">notification</a></td>
+  <td>0</td>
+  <td>Whether to send an email notification when a new link was submitted (when
+    set to = 1) or not (when set to = 0).</td>
+</tr>
+<tr class="r2">
+  <td><a name="desc_show_top10">show_top10</a></td>
+  <td><code>true</code></td>
+  <td>When both <code>$_LI_CONF['linkcols']</code> and
+    <code>$_LI_CONF['linksperpage']</code> are <em>not</em> 0, the plugin will
+    show a list of the 10 most clicked-on links on the Links plugin's index
+    page automatically. If you do not want that "top 10" list there, set this
+    option to <code>false</code>.</td>
+</tr>
+</table>
+
+
+<h2><a name="layout">Layout of the Links plugin's index page</a></h2>
+
+<p>The general layout of the index page of the Links plugin is defined by the
+options <code>$_LI_CONF['linkcols']</code> and <code>$_LI_CONF['linksperpage']</code>, as explained above.</p>
+
+<p>If you'd rather have a straight list of all your links, you can set both
+of these options to 0. This probably makes the most sense when you only have
+a few links. Setting only <code>$_LI_CONF['linksperpage']</code> to 0 zero will
+list all the links of the current category on one page. Setting only
+<code>$_LI_CONF['linkcols']</code> to 0 will hide the categories and will
+display all your links spread over several pages.</p>
+
+
+<h3><a name="templates">Template files</a></h3>
+
+<p>To further change the layout of your Links section, you can change the
+template files. Please note that they are now located in the plugin's directory,
+i.e. in</p>
+<p align="center"><tt>/path/to/geeklog/plugins/links/templates/</tt></p>
+<p>If you're using a theme that was made for an older version of Geeklog (prior
+to Geeklog 1.4.0), you may still have a "links" directory in your theme's
+directory - but that is not used any more and can be safely removed.</p>
+
+
+<table class="footer">
+<tr>
+  <td colspan="2"><a href="http://wiki.geeklog.net/">The Geeklog Documentation Project</a><br>
+    All trademarks and copyrights on this page are owned by their respective owners. GeekLog is copyleft.</td>
+</tr>
+</table>
+
+</body>
+</html>
diff -ruN 1.4.0sr5-1.src/docs/plugin.html 1.4.1.src/docs/plugin.html
--- 1.4.0sr5-1.src/docs/plugin.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/docs/plugin.html	2006-09-02 16:53:47.000000000 -0500
@@ -424,15 +424,15 @@
       <tr>
         <td valign="top" class="codeheader">plugin_feedExtensionTags_&lt;plugin
      name&gt;</td>
-        <td valign="top" class="code">Plugins may enter additional elements in the top level of a feed format by supporting this function. The function receives the type and version of a feed (e.g. RSS version 2.0) and is expected to return an array of valid XML tags. (See the <a href="http://sourceforge.net/project/showfiles.php?group_id=91120&package_id=168689">Syndication Extensions</a> plugin for an example.)</td>
+        <td valign="top" class="code">Plugins may enter additional elements in the top level of a feed format by supporting this function. The function receives the type and version of a feed (e.g. RSS version 2.0) and is expected to return an array of valid XML tags. (See the <a href="http://sourceforge.net/project/showfiles.php?group_id=91120&amp;package_id=168689">Syndication Extensions</a> plugin for an example.)</td>
       </tr>
     <tr>
         <td valign="top" class="codeheader">plugin_feedNSExtensions_&lt;plugin name&gt;</td>
-        <td valign="top" class="code">Plugins which add their own elements to feeds may require extra XML Namespaces adding to the XML. This function should return an array of valid namespace attributes. (See the <a href="http://sourceforge.net/project/showfiles.php?group_id=91120&package_id=168689">Syndication Extensions</a> plugin for an example.)</td>
+        <td valign="top" class="code">Plugins which add their own elements to feeds may require extra XML Namespaces adding to the XML. This function should return an array of valid namespace attributes. (See the <a href="http://sourceforge.net/project/showfiles.php?group_id=91120&amp;package_id=168689">Syndication Extensions</a> plugin for an example.)</td>
     </tr>
     <tr>
         <td valign="top" class="codeheader">plugin_feedElementExtensions_&lt;plugin name&gt;</td>
-        <td valign="top" class="code">Plugins may add additional elements to feed items by supporting this function. The function is supplied the version and type of feed, plus the content type and identifier and must return an array of valid XML Elements. (See the <a href="http://sourceforge.net/project/showfiles.php?group_id=91120&package_id=168689">Syndication Extensions</a> plugin for an example.)</td>
+        <td valign="top" class="code">Plugins may add additional elements to feed items by supporting this function. The function is supplied the version and type of feed, plus the content type and identifier and must return an array of valid XML Elements. (See the <a href="http://sourceforge.net/project/showfiles.php?group_id=91120&amp;package_id=168689">Syndication Extensions</a> plugin for an example.)</td>
     </tr>
   </table>
 
@@ -558,12 +558,11 @@
 will make sure that your plugin installs successfully and doesn't have any
 adverse behavior.&nbsp; Assuming your plugin checks out, we will put your
 tarfile on our site where it can be downloaded by Geeklog users.&nbsp; You
-can sumbit your plugin to our site at http://www.geeklog.net
+can sumbit your plugin to our site at http://www.geeklog.net/</p>
 
-<p />
 <table border="0" width="100%" class="footer">
 <tr valign="top">
-  <td colspan="2"><a href="http://wiki.geeklog.net/wiki/index.php/Geeklog_1.3x_Documentation">The Geeklog Documentation Project</a><br>
+  <td colspan="2"><a href="http://wiki.geeklog.net/">The Geeklog Documentation Project</a><br>
     All trademarks and copyrights on this page are owned by their respective owners. GeekLog is copyleft.</td>
 </tr>
 </table>
diff -ruN 1.4.0sr5-1.src/docs/polls.html 1.4.1.src/docs/polls.html
--- 1.4.0sr5-1.src/docs/polls.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/docs/polls.html	2006-08-12 14:06:57.000000000 -0500
@@ -42,27 +42,33 @@
     to 0.</td>
 </tr>
 <tr class="r2">
+  <td><a name="desc_hidepollsmenu">hidepollsmenu</a></td>
+  <td>0</td>
+  <td>Whether to hide the "Polls" entry from Geeklog's menu bar (when set to 1)
+    or to show it (when set to 0).</td>
+</tr>
+<tr>
   <td><a name="desc_maxanswers">maxanswers</a></td>
   <td>10</td>
-  <td>Maximum number of possible answers for the poll editor</td>
+  <td>Maximum number of possible answers for the poll editor.</td>
 </tr>
-<tr>
+<tr class="r2">
   <td><a name="desc_answerorder">answerorder</a></td>
   <td>submitorder</td>
   <td>Sort answers by the number of results ('voteorder') or keep the order 
-    in which they were entered ('submitorder')</td>
+    in which they were entered ('submitorder').</td>
 </tr>
-<tr class="r2">
+<tr>
   <td><a name="desc_pollcookietime">pollcookietime</a></td>
   <td>86400</td>
-  <td>Number of seconds to set a poll answer cookie to time out on</td>
+  <td>Number of seconds to set a poll answer cookie to time out on.</td>
 </tr>
-<tr>
+<tr class="r2">
   <td><a name="desc_polladdresstime">polladdresstime</a></td>
   <td>604800</td>
-  <td>Number of seconds to set a poll answer IP address to time out on</td>
+  <td>Number of seconds to set a poll answer IP address to time out on.</td>
 </tr>
-<tr class="r2">
+<tr>
   <td><a name="desc_delete_polls">delete_polls</a></td>
   <td>0</td>
   <td>Defines what to do when a user is deleted that is the owner of a poll.
@@ -106,7 +112,7 @@
 
 <table class="footer">
 <tr>
-  <td colspan="2"><a href="http://www.geeklog.net">The Geeklog Documentation Project</a><br>
+  <td colspan="2"><a href="http://wiki.geeklog.net/">The Geeklog Documentation Project</a><br>
     All trademarks and copyrights on this page are owned by their respective owners. GeekLog is copyleft.</td>
 </tr>
 </table>
diff -ruN 1.4.0sr5-1.src/docs/spamx.html 1.4.1.src/docs/spamx.html
--- 1.4.0sr5-1.src/docs/spamx.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/docs/spamx.html	2006-12-13 09:28:12.000000000 -0600
@@ -27,103 +27,279 @@
 <a href="http://kalsey.com/2003/11/comment_spam_manifesto/">Comment Spam
 Manifesto</a>.</p>
 
-<h2>MT-Blacklist</h2>
+<p>Spam protection in Geeklog is mostly based on the Spam-X plugin, originally
+developed by Tom Willet. It has a modular architecture that allows it to be
+extended with new modules to fight the spammer's latest tricks, should the need
+arise.</p>
 
-<p><strong>Important note:</strong> Please note that MT-Blacklist has recently
-been discontinued. See <a href="http://www.geeklog.net/article.php/mt-blacklist-discontinued" title="MT-Blacklist discontinued">this article</a> on geeklog.net
-for details.</p>
-
-<p>The main mechanism Spam-X uses to fight comment spam is to use the blacklist 
-created by Jay Allen and Movable Type users - MT-Blacklist.  You can find out
-info about this project at <a href="http://www.jayallen.org/comment_spam/">http://www.jayallen.org/comment_spam/</a>. Jay has taken
-it upon himself not only to write and support the plugin for Movable Type but
-also to maintain the blacklist.  This requires human effort to review all the
-submissions and determine which are really spam and which are just noise.  If
-you have a few extra bucks drop by Jay's website above and drop a few dollars
-in his PayPal account to show your appreciation.</p>
-
-<p>The MT-Blacklist theory is that comment spammers do it to increase their
-Google rankings and therefore the link is all important.  The MT-Blacklist
-therefore only filters on urls.</p>
-
-<h2>Other options</h2>
-
-<p>The MT-Blacklist is only one part of the Geeklog Spam-X plugin however.  The
-Spam-X plugin has its own personal blacklist that you can add to. You can
-use it to filter anything from comments.  One option is to import the Geeklog
-<a href="config.html#desc_censorlist">censor list</a> and ban all comments
-which contain one of those words.  This or an expanded list might be usefull
-for a website that caters to children.  Then no comments with offensive
-language could be posted.</p>
+<h2><a name="checked">What is being checked for spam?</a></h2>
 
-<h2>Module types</h2>
-
-<p>The Spam-X plugin was built to be expandable to easily adapt to changes the
-comment spammers might make.  There are three types of modules: <b>admin</b>,
-<b>examine</b> and <b>action</b>.  A new module is contained in a file and can
-simply be dropped in and it will be added to the plugin.  The modules with
-which the plugin ships are:</p>
+<p>Geeklog and the Spam-X plugin will check the following for spam:</p>
 
 <ul>
-  <li>Admin
-    <ul>
-      <li>View Spam-X Log</li>
-      <li>Update MT-Blacklist</li>
-      <li>Edit Personal Blacklist</li>
-      <li>Edit IP Blacklist</li>
-      <li>Edit IP of URL Blacklist</li>
-      <li>Edit HTTP Header Blacklist</li>
-      <li>Mass Delete Spam Comments</li>
-      <li>Mass Delete Trackback Spam</li>
-    </ul></li>
-  <li>Examine
-    <ul>
-      <li>MT-Blacklist</li>
-      <li>Personal Blacklist</li>
-      <li>IP of Spammer</li>
-      <li>IP of Link</li>
-    </ul></li>
-  <li>Action
-    <ul>
-      <li>Delete Comment if on Blacklist</li>
-      <li>Mail Admin if Comment Rejected</li>
-    </ul></li>
+<li>Story submissions</li>
+<li>Comments</li>
+<li>Trackbacks and Pingbacks</li>
+<li>Event submissions</li>
+<li>Link submissions</li>
+<li>The text sent with the "Email story to a friend" option</li>
+<li>Emails sent to users via the "send email" form from their profile page</li>
+<li>A user's profile</li>
 </ul>
 
-<p>Other modules can be just dropped into place and they will become
-available to the plugin.  To remove a module just
-delete it from the spamx directory or rename it.  Planned modules include:</p>
+<h2><a name="modules">Module Types</a></h2>
+
+<p>The Spam-X plugin was built to be expandable to easily adapt to changes the
+comment spammers might make.  There are three types of modules: <a
+href="#examine">Examine</a>, <a href="#action">Action</a>, and <a
+href="#admin">Admin</a>. A new module is contained in a file and can simply be
+dropped in and it will be added to the plugin.</p>
+
+<h2><a name="examine">Examine Modules</a></h2>
+
+<p>Geeklog ships with the following examine modules:</p>
 
 <ul>
-  <li>Admin
-    <ul>
-      <li>Comparing MT-Blacklist and personal blacklist to eliminate
-          duplications</li>
-      <li>Parsing comments and automatic adding spam links</li>
-    </ul></li>
-  <li>Examine
-    <ul>
-      <li>Specialized blacklists.  (These are in planning stages)</li>
-    </ul></li>
-  <li>Action
-    <ul>
-      <li>Save comment for review</li>
-    </ul></li>
+<li><a href="#slv">Spam Link Verification (SLV)</a></li>
+<li><a href="#personal">Personal Blacklist</a></li>
+<li><a href="#ip">IP Filter</a></li>
+<li><a href="#ipofurl">IP of URL Filter</a></li>
+<li><a href="#header">HTTP Header Filter</a></li>
 </ul>
 
-<p>Action modules are each assigned a number and the actions taken when a
-spam comment is found can be designated by a configuration variable.  Note:
-the spamx interface has been generalized and can be called by other modules
-and plugins.  See the developer docs for details.</p>
+<h3><a name="slv">Spam Link Verification (SLV)</a></h3>
+
+<p>SLV is a centralized, server-based service that examines posts made on
+websites and detects when certain links show up in unusually high numbers. In
+other words, when a spammer starts spamming a lot of sites with the same URLs
+and those sites all report to SLV, the system will recognize this as a spam
+wave and will flag posts containing these URLs as spam.</p>
+
+<p>In other words still, it's a dynamic blacklist that automatically updates
+itself when a spammer starts spamming for their site. And it can only get
+better (in terms of accuracy and reaction speed) the more sites use it.</p>
+
+<p>SLV is a free service run by Russ Jones at <a
+href="http://www.linksleeve.org/">www.linksleeve.org</a>.
+
+<p><strong><a name="slvprivacy">Privacy Notice:</a></strong>
+It should be stressed that using SLV means that information from your site
+is being sent to a third party's site. In some legislations you may have to
+inform your users about this fact - please check with your local privacy
+laws.</p>
+
+<p>Sending information to an external site may also be undesirable on some
+setups, e.g. on a company intranet. You can disable SLV support by removing the
+four files <tt>SLV.Examine.class.php</tt>, <tt>SLVbase.class.php</tt>,
+<tt>SLVreport.Action.class.php</tt>, and <tt>SLVwhitelist.Admin.class.php</tt>
+ from your Spam-X directory (<tt>/path/to/geeklog/plugins/spamx</tt>). Or you
+can simply disable the Spam-X plugin entirely (or uninstall it).</p>
+
+<p>The SLV Examine and Action modules will extract all URLs from a post and
+only send those to SLV (i.e. the rest of the post's content is not being sent).
+They also remove any links that contain your Geeklog site's URL. In case a post
+does not contain any external links, the modules simply do not contact SLV at
+all.</p>
+
+
+<h3><a name="personal">Personal Blacklist</a></h3>
+
+<p>The Personal Blacklist module lets you add keywords and URLs that typically
+exist in spam posts. When you're being hit by spam, make sure to add the URLs
+of those spam posts to your Personal Blacklist so that they can be filtered out
+automatically, should the spammer try to post them again.</p>
+
+<p>This will also help you get rid of spam that made it through, as you can
+then use the Mass Delete Comments and Mass Delete Trackbacks modules to easily
+remove large numbers of spam posts from your database.</p>
+
+<p>The Personal Blacklist also has an option to import the Geeklog <a
+href="config.html#desc_censorlist">censor list</a> and ban all comments which
+contain one of those words. This or an expanded list might be useful for a
+website that caters to children. Then no comments with offensive language could
+be posted.</p>
+
+<h3><a name="ip">IP Filter</a></h3>
+
+<p>Sometimes you will encounter spam that is coming from one or only a few IP
+addresses. By simply adding those IP addresses to the IP Filter module, any
+posts from these IPs will be blocked automatically.</p>
+
+<p>Please note that IP addresses aren't really a good filter criterion. While
+some ISPs and hosting services are known to host spammers, it won't help much
+to block an IP address by one of the well-known ISPs. Often, the spammer will
+get a new IP address the next time he connects to the internet, while the
+blocked IP address will be reused and may be used by some innocent user.</p>
+
+<h3><a name="ipofurl">IP of URL Filter</a></h3>
+
+<p>This module is only useful in a few special cases: Here you enter the IP
+address of a webserver that is used to host domains for which you may see spam.
+Some spammers have a lot of their sites on only a few webservers, so instead of
+adding lots of domains to your blacklist, you only add the IP addresses of
+those webservers. The Spam-X module will then check all the URLs in a post to
+see if any of these is hosted on one of those blacklisted webservers.</p>
+
+<h3><a name="header">HTTP Header Filter</a></h3>
+
+<p>This module lets you filter for certain HTTP headers. Every HTTP request
+sent to your site is accompanied by a series of headers identifying, for
+example, the browser that your visitors uses, their preferred language, and
+other information.</p>
+
+<p>With the Header filter module, you can block HTTP requests with certain
+headers. For example, some spammers are using Perl scripts to send their spam
+posts. The user agent (browser identification) sent by Perl scripts is usually
+something like "libwww-perl/5.805" (the version number may vary). So to block
+posts made by this user agent, you would enter:</p>
+<table border="0" style="width:15em">
+<tr><td><b>Header:</b></td><td align="left"><kbd>User-Agent</kbd></td></tr>
+<tr><td><b>Content:</b></td><td align="left"><kbd>^libwww-perl</kbd></td></tr>
+</table>
+<p>This would block all posts from user agents beginning with "libwww-perl".</p>
+
+
+<h2><a name="action">Action Modules</a></h2>
+
+<p>Once one of the <a href="#examine">examine modules</a> detects a spam post,
+the action modules will decide what to do with the spam. Most of the time, you
+will simply want to delete the post then, so this is what the <b>Delete
+Action</b> module does.</p>
+
+<p>As the name implies, the <b>Mail Admin Action</b> module sends an email to
+the site admin when a spam post is encountered. Since this can cause quite a
+lot of emails being sent, it is disabled by default.</p>
+
+<p>Action modules have to be enabled specifically before they are used (examine
+modules, on the other hand, are activated by simply dropping them into the
+Spam-X directory). For this, every action module has a unique number that needs
+to be added up with the number of the other action modules you want to enable
+and entered as the value for the <a href="config.html#desc_spamx">spamx config
+variable</a> in Geeklog's main <tt>config.php</tt> file.</p>
+
+<h3>Example</h3>
+
+<p>The Delete Action module has the value 128, while the Mail Admin Action
+module has the value 8. So to activate both modules, add 128 + 8 = 136 and
+enter that in your config.php:</p>
+
+<pre>    $_CONF['spamx'] = 136;</pre>
+
+<p>The SLV Examine module is complemented by a <strong>SLV Action</strong>
+module that ensures that SLV is notified of spam posts caught by other examine
+modules. It "piggybacks" on the Delete Action module, i.e. when you activate
+the Delete Action module, you'll also enable the SLV Action module.</p>
+
+
+<h2><a name="admin">Admin Modules</a></h2>
+
+<p>The Admin modules for the <a href="#personal">Personal Blacklist</a>, <a
+href="#ip">IP Filter</a>, <a href="#ipofurl">IP of URL Filter</a>, and <a
+href="#header">HTTP Header Filter</a> modules provide you with a form to add
+new entries. To delete an existing entry, simply click on it.</p>
+
+<p>With the <strong>SLV Whitelist</strong> admin module you can add URLs that
+you don't want to be reported to SLV. This is useful when posts on your site
+happen to contain certain URLs quite often but you don't want those to be
+considered spam by SLV.<br>Note that your site's URL (i.e. <a
+href="config.html#desc_site_url">$_CONF['site_url']</a>) is automatically
+whitelisted, so you don't need to add it here.</p>
+
+<p>The <strong>Log View</strong> module lets you inspect and clear the Spam-X
+logfile. The logfile contains additional information about the spam posts, e.g.
+which IP address they came from, the user id (if posted by a logged-in user),
+and which of the examine modules caught the spam post.</p>
+
+<p>In case a large number of spam posts made it through without being caught,
+the <strong>Mass Delete Comments</strong> and <strong>Mass Delete
+Trackbacks</strong> modules will help you get rid of them easily. Before you
+use these modules, make sure to add the URLs or keywords from those spams to
+your Personal Blacklist.</p>
+
+<h2><a name="mt-blacklist">Note about MT-Blacklist</a></h2>
+
+<p>MT-Blacklist was a blacklist, i.e. a listing of URLs that were used in spam
+posts, originally developed for Movable Type (hence the name) and maintained by
+Jay Allen.</p>
+
+<p>Maintaining a blacklist is a lot of work, and you're continually playing
+catch-up with the spammers. Therefore, Jay Allen eventually <a
+href="http://www.geeklog.net/article.php/mt-blacklist-discontinued">discontinued
+MT-Blacklist</a> on the assumption that new and better methods to detect spam
+are now available.</p>
+
+<p>Starting with Geeklog 1.4.1, Geeklog no longer uses MT-Blacklist. All
+MT-Blacklist entries are removed from the database when you upgrade to
+Geeklog 1.4.1 and the MT-Blacklist examine and admin modules are no longer
+included.</p>
+
+<h2><a name="trackback">Trackback Spam</a></h2>
+
+<p><a href="trackback.html">Trackbacks</a> are also run through Spam-X before
+they will be accepted by Geeklog. There are also some additional checks that
+can be performed on trackbacks: Geeklog can be configured to check if the site
+that supposedly sent the trackback actually contains a link back to your site.
+In addition, Geeklog can also check if the IP address of the site in the
+trackback URL matches the IP address that sent the trackback. Trackbacks that
+fail any of these tests are usually spam. Please refer to the <a
+href="config.html#desc_check_trackback_link">config.php documentation</a> for
+more information.</p>
+
+<h2><a name="config.php">Configuration File</a></h2>
+
+<p>The Spam-X plugin has its own configuration file, located at <tt>/path/to/geeklog/plugins/spamx/config.php</tt>. There you will find the following options:</p>
+
+<table>
+<tr><th width="25%">Variable</th>
+    <th width="25%">Default Value</th>
+    <th width="50%">Description</th>
+</tr>
+<tr>
+  <td><a name="desc_action">action</a></td>
+  <td>128</td>
+  <td>This only exists as a fallback in case <a
+    href="config.html#desc_spamx">$_CONF['spamx']</a> in Geeklog's main
+    <tt>config.php</tt> is not set. I.e. <code>$_CONF['spamx']</code> takes
+    precedence.</td>
+</tr>
+<tr class="r2">
+  <td><a name="desc_admin_override">admin_override</a></td>
+  <td>false</td>
+  <td>The Spam-X plugin will filter posts by any user - even site admins. This
+    can be a problem sometimes, e.g. when you want to post a note about spam
+    that itself contains "spammy" URLs or keywords. When this option is set to
+    <code>true</code> then posts made by users in the 'spamx Admin' group are
+    not checked for spam.</td>
+</tr>
+<tr>
+  <td><a name="desc_logging">logging</a></td>
+  <td><code>true</code></td>
+  <td>Whether to log recognized spam posts in the <tt>spamx.log</tt> logfile
+    (if set to <code>true</code>) or not (<code>false</code>).</td>
+</tr>
+<tr class="r2">
+  <td><a name="desc_notification_email">notification_email</a></td>
+  <td><code>$_CONF['site_mail']</code></td>
+  <td>Email address to which spam notifications are sent when the Mail Admin
+    <a href="#action">action module</a> is enabled.</td>
+</tr>
+<tr>
+  <td><a name="desc_timeout">timeout</a></td>
+  <td>5</td>
+  <td>Timeout (in seconds) for contacting external services such as SLV.</td>
+</tr>
+</table>
 
-<h2>Plugin Homepage</h2>
+<h2><a name="more">More Information</a></h2>
 
 <p>Further information as well as a support forum for the Spam-X plugin can be
-found on the <a href="http://www.pigstye.net/gplugs/staticpages/index.php/spamx" rel="nofollow">Spam-X Plugin's Homepage</a>.</p>
+found on the <a href="http://www.pigstye.net/gplugs/staticpages/index.php/spamx" rel="nofollow">Spam-X Plugin's Homepage</a> and in the <a
+href="http://wiki.geeklog.net/wiki/index.php/Dealing_with_Spam">Geeklog
+Wiki</a>.</p>
 
 <table border="0" width="100%" class="footer">
 <tr valign="top">
-  <td colspan="2"><a href="http://www.geeklog.net">The Geeklog Documentation Project</a><br>
+  <td colspan="2"><a href="http://wiki.geeklog.net/">The Geeklog Documentation Project</a><br>
     All trademarks and copyrights on this page are owned by their respective owners. GeekLog is copyleft.</td>
 </tr>
 </table>
diff -ruN 1.4.0sr5-1.src/docs/staticpages.html 1.4.1.src/docs/staticpages.html
--- 1.4.0sr5-1.src/docs/staticpages.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/docs/staticpages.html	2006-09-02 16:53:47.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
-  <title>Geeklog Documentation - Static Pages plugin 1.4.1</title>
+  <title>Geeklog Documentation - Static Pages Plugin</title>
   <link rel="stylesheet" type="text/css" href="docstyle.css" title="Dev Stylesheet">
 </head>
 
@@ -11,7 +11,7 @@
   <td valign="top"><img src="images/newlogo.gif" alt="Geeklog Documentation" width="243" height="90" border="0"></td>
 </tr>
 <tr>
-  <td valign="top" class="menu"><a href="index.html">Geeklog Documentation</a> - Static Pages plugin</td>
+  <td valign="top" class="menu"><a href="index.html">Geeklog Documentation</a> - Static Pages Plugin</td>
 </tr>
 </table>
 
@@ -100,13 +100,13 @@
 
 <h3><a name="sort">Sorting</a></h3>
 
-<p><strong>Centerblocks:</strong> When you have more than one static page that would appear in the same section of the center area (e.g. two static pages that would be displayed at the top of the index page), you can chose the order in which they appear by setting the <code>$_SP_CONF['sort_by']</code> variable in the plugin's <tt>config.php</tt> file to one of <tt>id</tt> (sort by page id), <tt>date</tt> (sort by last changed date), or <tt>title</tt> (sort by page title). The default is to sort by page id.</p>
+<p><strong>Centerblocks:</strong> When you have more than one static page that would appear in the same section of the center area (e.g. two static pages that would be displayed at the top of the index page), you can chose the order in which they appear by setting the <code>$_SP_CONF['sort_by']</code> variable in the plugin's <tt>config.php</tt> file to one of <tt>id</tt> (sort by page id), <tt>date</tt> (sort by last changed date), or <tt>title</tt> (sort by page title). The default is to sort by page id. Please note that this order will only apply to centerblocks from static pages. All other plugins creating centerblocks will not be in that order. Also note that the centerblock is not necessarily looking like a standard Geeklog block. To achieve that, please check the field "Wrapping Static Pages in a block" below.</p>
 
 <p><strong>Menu entries:</strong> It's also possible to sort the static pages that are displayed in the site's menu (if you're using a theme that uses the <code>{plg_menu_elements}</code> variables in its <tt>header.thtml</tt>). Set the <code>$_SP_CONF['sort_menu_by']</code> variable (again, in the plugin's <tt>config.php</tt> file) to one of <tt>id</tt> (sort by page id), <tt>date</tt> (sort by last changed date), <tt>label</tt> (sort by the menu label), or <tt>title</tt> (sort by page title).</p>
 
 <h2><a name="block">Wrapping Static Pages in a block</a></h2>
 
-<p>You can chose to have a static page wrapped in a Geeklog block by checking the "wrap static page in a block" option in the static pages editor. If selected, the page's title will be used as the block title.</p>
+<p>You can chose to have a static page wrapped in a Geeklog block-layout by checking the "wrap static page in a block" option in the static pages editor. If selected, the page's title will be used as the block title. Further, you can, as with normal blocks, enter a help URL. If this URL is entered, the block will display a help icon linking to that URL.</p>
 
 <p>The plugin's <tt>config.php</tt> file also has a flag, <code>$_SP_CONF['in_block']</code>, which is used as the default for this option.</p>
 
@@ -153,7 +153,7 @@
 
 <table border="0" width="100%" class="footer">
 <tr valign="top">
-  <td colspan="2"><a href="http://www.geeklog.net">The Geeklog Documentation Project</a><br>
+  <td colspan="2"><a href="http://wiki.geeklog.net/">The Geeklog Documentation Project</a><br>
     All trademarks and copyrights on this page are owned by their respective owners. GeekLog is copyleft.</td>
 </tr>
 </table>
diff -ruN 1.4.0sr5-1.src/docs/support.html 1.4.1.src/docs/support.html
--- 1.4.0sr5-1.src/docs/support.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/docs/support.html	2006-12-11 09:14:52.000000000 -0600
@@ -38,7 +38,7 @@
 
 <h3>Mailing Lists</h3>
 
-<p>If you prefer email, there are also several <a href="http://lists.geeklog.net/listinfo/">mailing lists</a> that you can use. Questions regarding installing and running Geeklog are best posted on the <a href="http://lists.geeklog.net/listinfo/geeklog-users">geeklog-users</a> mailing list.</p>
+<p>If you prefer email, there are also several <a href="http://lists.geeklog.net/mailman/listinfo/">mailing lists</a> that you can use. Questions regarding installing and running Geeklog are best posted on the <a href="http://lists.geeklog.net/mailman/listinfo/geeklog-users">geeklog-users</a> mailing list.</p>
 
 <p><strong>Note:</strong> Please note that due to the ever-increasing amount of spam, you have to subscribe to the mailing lists before you can post there. <strong>Posts by non-subscribers are silently discarded</strong>, so make sure to subscribe first.</p>
 
@@ -59,7 +59,7 @@
 
 <h3>Development</h3>
 
-<p>Want to develop a plugin or some other add-on? Read the <a href="http://gplugs.sourceforge.net/pluginman/">Plugins Developer's Guide</a> and join the <a href="http://lists.geeklog.net/listinfo/geeklog-modules">geeklog-modules</a> and <a href="http://lists.geeklog.net/listinfo/geeklog-devtalk">geeklog-devtalk</a> mailing lists.</p>
+<p>Want to develop a plugin or some other add-on? Read the <a href="http://gplugs.sourceforge.net/pluginman/">Plugins Developer's Guide</a> and join the <a href="http://lists.geeklog.net/mailman/listinfo/geeklog-modules">geeklog-modules</a> and <a href="http://lists.geeklog.net/mailman/listinfo/geeklog-devtalk">geeklog-devtalk</a> mailing lists.</p>
 
 <p>Want to help in Geeklog development? See <a href="http://www.geeklog.net/article.php/20030803155454822">this story</a> for suggestions on how to get started. And if you already made a modification, why not <a href="http://project.geeklog.net/tracker/?atid=107&amp;group_id=6">submit a patch</a>?
 
@@ -77,11 +77,11 @@
 
 <p>The best way to stay up to date with Geeklog development and being informed
 of new releases and other important news (such as security issues), is to
-subscribe to the <a href="http://lists.geeklog.net/listinfo/geeklog-announce">geeklog-announce</a> mailing list. This is a low-traffic mailing list and is
+subscribe to the <a href="http://lists.geeklog.net/mailman/listinfo/geeklog-announce">geeklog-announce</a> mailing list. This is a low-traffic mailing list and is
 really only used for important announcements.</p>
 
 <p>Geeklog also has a built-in feature to check for updates. Simply click on
-the <strong>GL Version Test</strong> link (last entry in your Admin menu) to
+the <strong>GL Version Test</strong> link (an entry in your Admin menu) to
 see if your install is up to date.</p>
 
 
@@ -95,11 +95,11 @@
 
 <p><img src="images/pl.png" width="16" height="16" border="0" align="middle" alt=""> <a href="http://www.geeklog.now.pl/">GeeklogPolska</a>  - Geeklog support po Polsku</p>
 
-<p><img src="images/jp.png" width="16" height="16" border="0" align="middle" alt=""> <a href="http://geek.ecofirm.com/">Geeklog Japanese</a> - Geeklog support in Japanese</p>
+<p><img src="images/jp.png" width="16" height="16" border="0" align="middle" alt=""> <a href="http://www.geeklog.jp/">Geeklog Japanese</a> - Geeklog support in Japanese</p>
 
 <table border="0" width="100%" class="footer">
 <tr valign="top">
-  <td colspan="2"><a href="http://www.geeklog.net">The Geeklog Documentation Project</a><br>
+  <td colspan="2"><a href="http://wiki.geeklog.net/">The Geeklog Documentation Project</a><br>
     All trademarks and copyrights on this page are owned by their respective owners. GeekLog is copyleft.</td>
 </tr>
 </table>
diff -ruN 1.4.0sr5-1.src/docs/theme.html 1.4.1.src/docs/theme.html
--- 1.4.0sr5-1.src/docs/theme.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/docs/theme.html	2006-12-09 16:32:06.000000000 -0600
@@ -69,8 +69,8 @@
 <tt>storytext.thtml</tt> and <tt>storybodytext.thtml</tt> (for normal stories)
 and <tt>featuredstorytext.thtml</tt> and <tt>featuredstorybodytext.thtml</tt>
 (for featured stories) template files. The <tt>footer.thtml</tt> file then
-builds the right column of blocks (variable {right_blocks}, file 
-<tt>right_blocks.thtml</tt>) and the site's footer. Blocks themselves consist 
+builds the right column of blocks (variable {right_blocks}, file
+<tt>right_blocks.thtml</tt>) and the site's footer. Blocks themselves consist
 of the <tt>blockheader.thtml</tt> and <tt>blockfooter.thtml</tt> files.
 
 <p>The above only describes how Geeklog's main page and stories are rendered.
@@ -107,16 +107,16 @@
 <p>Finally, you may want to update the logo and other images in your
 theme's images directory.
 
-<p>For the template system we are using PHPLib's template class (<a 
-href="http://phplib.sourceforge.net/">http://phplib.sourceforge.net/</a>). 
-Read their documentation and, optionally, look at 
-/path/to/geeklog/system/classes/template.class.php to see how it is 
-implemented. Even with this knowledge it may not be clear which templates 
-are used in conjunction with one another (i.e. <tt>storybody.thtml</tt> and 
-<tt>storybodytext.thtml</tt> together make up the complete format of a 
+<p>For the template system we are using PHPLib's template class (<a
+href="http://phplib.sourceforge.net/">http://phplib.sourceforge.net/</a>).
+Read their documentation and, optionally, look at
+/path/to/geeklog/system/classes/template.class.php to see how it is
+implemented. Even with this knowledge it may not be clear which templates
+are used in conjunction with one another (i.e. <tt>storybody.thtml</tt> and
+<tt>storybodytext.thtml</tt> together make up the complete format of a
 <em>single</em>
-story). If you have questions join our mailing list at <a 
-href="http://lists.geeklog.net/listinfo/geeklog-users">http://lists.geeklog.net/listinfo/geeklog-users</a> 
+story). If you have questions join our mailing list at <a
+href="http://lists.geeklog.net/listinfo/geeklog-users">http://lists.geeklog.net/listinfo/geeklog-users</a>
 or check us out in IRC at irc.freenode.net in #geeklog.</p>
 
 <h3><a name="tips">Tips and tricks</a></h3>
@@ -135,7 +135,7 @@
 put them in the file <tt>functions.php</tt> within your themes directory.</p>
 
 <p><strong><a name="different-look">Different look for left and right blocks:</a></strong>
-You can give the blocks on the left and right a different look. See 
+You can give the blocks on the left and right a different look. See
 <a href="http://www.geeklog.net/forum/viewtopic.php?showtopic=21070">this story on the Geeklog homepage</a> for details.</p>
 
 <p><strong><a name="polls">Polls:</a></strong>
@@ -171,7 +171,159 @@
 instead. That way, you can even leave your users a choice between, for example,
 a "normal" theme and one with the blocks on the right.</p>
 
-<h2><a name="changes">Theme changes in Geeklog 1.4.0</a></h2>
+<p><strong><a name="error-message">Error Message:</a></strong>
+Since Geeklog 1.4.1 it is possible to control what HTML is displayed to
+non-root users in the event of an error occurring (a crash bug). To do
+so, you need to change the function <code>CUSTOM_handleError</code> in
+lib-custom.php to output any HTML you like.</p>
+
+<h2><a name="changes">Theme changes in Geeklog 1.4.1</a></h2>
+
+<p>The css in 1.4.1 has been changed to a wider extent. More and more layout
+components are beeing moved to the stylesheet so more change in looks can be
+achieved with less change in the files. There is a reduction of tables and DIV,
+and a stronger focus on semantics and consistency. Please also notice that the
+styles.css includes additional documentation on the use of classes now.</p>
+
+<p>As usual, any missing new theme files can simply be copied over from the
+default theme (Professional) that ships with Geeklog.</p>
+
+<h3>Header-Tags</h3>
+
+<p>From now on, all headlines in blocks & stories are made with header-tags. The
+biggest title in a story is always h1, in a block always h2.</p>
+
+<h3>Story layout</h3>
+<p>The blocks for stories have no more tables, and the classes have been renamed
+for consistency. There is a box now around the story called class "story" or
+"story-featured". The components inside that box are story-icons,
+story-information, story-body and story-footer. The title is a h1-tag. For
+featured stories, only the outer box has a different class, the rest has to be
+cascaded for changes.</p>
+
+<h3>Blocks</h3>
+<p>The blocks changed in the same way as the stories. There are no more tables,
+only one div-tag as a frame around called block-box, block-box-left or
+block-box-right. The title is a h2-tag and the help icon for the block is a span
+ with a class called block-helpicon. Sub-titles in blocks have the h3-tag (such
+ such as in the What's new or Older Stories block). The changes affect (next to
+ styles.css) the follwing files:</p>
+<ul>
+<li>blockfooter-left.thtml</li>
+<li>blockfooter-related.thtml</li>
+<li>blockfooter-right.thtml</li>
+<li>blockfooter.thtml</li>
+<li>blockheader-left.thtml</li>
+<li>blockheader-message.thtml</li>
+<li>blockheader-related.thtml</li>
+<li>blockheader-right.thtml</li>
+<li>blockheader.thtml</li>
+</ul>
+
+<h3>Admin templates</h3>
+
+<p>Many of the admin template files have had minor changes to tweak appearance
+or functionality. If you didn't modify the admin templates in your theme, the
+easiest way to upgrade your theme's admin templates is to simply replace the
+entire 'admin' directory with the one from Geeklog's Professional theme.</p>
+
+<ul>
+<li>All the "delete" buttons in the admin's editors (story editor, etc.) now
+    pop up a JavaScript confirmation box as a simple measure against
+    accidental deletion. If you'd rather not have that confirmation box,
+    replace the <code>{delete_option}</code> variable with
+    <code>{delete_option_no_confirmation}</code> in the admin templates.</li>
+<li>The order of the save / cancel / delete buttons is now consistent across
+    all admin template files (changed <tt>group/groupeditor.thtml</tt> and
+    <tt>user/edituser.thtml</tt>).</li>
+<li>Changed the top links in <tt>lists/topmenu_nosearch.thtml</tt> and
+    <tt>topic/topiclist.thtml</tt> to be consistent with the other admin areas
+    (i.e. the links are no longer enclosed in square brackets).</li>
+<li>To enable changing the group ownership of "gldefault" blocks, the
+    <tt>defaultblockeditor.thtml</tt> has to be changed to include a
+    <code>{group_dropdown}</code> variable.
+</ul>
+
+<h3>Other theme changes</h3>
+
+<ul>
+<li>There was a div for spreading the with of the blocks to a minimum in the
+    files leftblocks.thtml and rightblocks.thtml. The format of those has been
+    transferred to the stylesheet with the class name block-bg-spreader</li>
+<li>The template for the Polls-plugin has renamed classes block-vote-results to
+    poll-vote-results and block-vote to poll-vote to avoid confustion with
+    block-related classes.</li>
+<li>The template files used by the Calendar plugin are now located in the
+    plugin's directory, (<tt>/path/to/geeklog/plugins/calendar/templates</tt>),
+    so the entire 'calendar' directory can be removed from the theme
+    directory.<br>
+    The <tt>submitevent.thtml</tt>, <tt>editpersonalevent.thtml</tt>,
+    <tt>admin/eventeditor.thtml</tt>, and <tt>dayview/quickaddform.thtml</tt>
+    have also been changed to (optionally) support entering the time in <a
+    href="calendar.html#desc_hour_mode">24 hour mode</a>: A hidden input field
+    "hour_mode" is now required, the am/pm dropdowns are available as variables
+    <code>{startampm_selection}</code>, <code>{endampm_selection}</code>,
+    <code>{ampm_selection}</code>, depending on the template file), and the
+    dropdowns for the minutes are available as variables
+    (<code>{startminute_options}</code>, <code>{endminute_options}</code>,
+    <code>{minute_options}</code>, depending on the template file).</li>
+<li>The variables <code>{author}</code> and <code>{owner}</code> are now
+    available in every template where an object's author (e.g. story or
+    comment author) or owner (e.g. owner of a block) name can be displayed.
+    They will also respect the <a
+    href="config.html#desc_show_fullname">$_CONF['show_fullname']</a> setting,
+    i.e. display either the user's full name or username.</li>
+<li>The Article Author's tag in <tt>storytext.thtml</tt> and
+    <tt>featuredstorytext.thtml</tt> is now called
+    <code>{contributedby_author}.</code></li>
+<li>To enable a remarks field in the answer to polls, the
+    <tt>pollvotes_bar.thtml</tt>, <tt>pollansweroption.thtml</tt> and
+    <tt>polleditor.thtml</tt> were changed. The
+    <tt>pollvotes_bar.thtml</tt> is now colored and has two lines, a class
+    for color coding each line and the <code>{answer_text}</code>. The
+    <tt>polleditor.thtml</tt> has an aditional field to enter the remarks,
+    same as the <tt>pollansweroption.thtml</tt>.
+<li>A user's Account Information page has been redesigned. While there were no
+    technical changes (i.e. template files from earlier versions will still
+    work), some options have been rearranged and a note has been added to tell
+    the user that the current password is required to change those. Affected
+    files in the <tt>preferences</tt> directory: <tt>profile.thtml</tt>,
+    <tt>username.thtml</tt>, and <tt>userphoto.thtml</tt>.</li>
+<li>The <tt>navbar</tt> directory now contains four files,
+    <tt>menuitem.thtml</tt>,<tt>navbar.thtml</tt>,<tt>breadcrumbs.thtml</tt>,<tt>breadcrumb_link</tt> as well as two images,
+    <tt>button.gif</tt> and <tt>button_over.gif</tt>.</li>
+<li>A <a name="captcha"><code>{captcha}</code></a> variable has been added to
+    the following files:
+    <ul>
+    <li><tt>comment/commentform.thtml</tt></li>
+    <li><tt>comment/commentform_advanced.thtml</tt></li>
+    <li><tt>profiles/contactauthorform.thtml</tt></li>
+    <li><tt>profiles/contactuserform.thtml</tt></li>
+    <li><tt>submit/submitstory.thtml</tt></li>
+    <li><tt>submit/submitstory_advanced.thtml</tt></li>
+    <li><tt>users/registrationform.thtml</tt></li>
+    </ul>
+    This variable is supposed to be used by a plugin that implements <a
+    href="http://en.wikipedia.org/wiki/Captcha">CAPTCHA</a>s and will simply be
+    empty when no such plugin is installed.</li>
+</ul>
+
+<h3>Professional theme</h3>
+
+<p>The following changes are specific to the Professional theme. There is
+probably no need to port them over to other themes.</p>
+
+<ul>
+<li>The theme now uses CSS everywhere for spacing and dividers instead of
+    relying on a 1x1 pixel transparent GIF image (<tt>speck.gif</tt>).</li>
+<li>The amount of nested tables has been reduced, e.g. in the block
+    headers.</li>
+<li>Two unused template files, <tt>customlogin-header.thtml</tt> and
+    <tt>customlogin-footer.thtml</tt>, have been removed.</li>
+</ul>
+
+
+<h2><a name="changes140">Theme changes in Geeklog 1.4.0</a></h2>
 
 <p>As usual, any missing new theme files can simply be copied over from the
 default theme (Professional) that ships with Geeklog.</p>
@@ -235,7 +387,7 @@
 <li>The search form, <tt>search/searchform.thtml</tt> has a new option for the
     number of search results per page, while the hard-coded option to search
     for links has been removed (since Links are in plugin now, it will show up
-    as part of the <code>{plugin_types}</tt> option).</li>
+    as part of the <code>{plugin_types}</code> option).</li>
 <li>An additional variable, <code>{services}</code>, has to be added to the
     <tt>loginform.thtml</tt> template file if you plan to allow users to log in
     to your site using remote authentication.</li>
@@ -599,7 +751,7 @@
 
 <p>There have been a lot of changes in the themes for 1.3.6 to get rid of the
 last pieces of hard-coded english texts so as to make localisation easier.
-Most of these changes have been made in the Admin editors (<tt>admin</tt> 
+Most of these changes have been made in the Admin editors (<tt>admin</tt>
 directory) and the calendar (<tt>calendar</tt> directory). If you created
 your own theme for an earlier version of Geeklog, we recommend that you copy
 over these two directories from one of the themes that come with Geeklog
@@ -672,7 +824,7 @@
 
 <table border="0" width="100%" class="footer">
 <tr valign="top">
-  <td colspan="2"><a href="http://www.geeklog.net">The Geeklog Documentation Project</a><br>
+  <td colspan="2"><a href="http://wiki.geeklog.net/">The Geeklog Documentation Project</a><br>
     All trademarks and copyrights on this page are owned by their respective owners. GeekLog is copyleft.</td>
 </tr>
 </table>
diff -ruN 1.4.0sr5-1.src/docs/themevars.html 1.4.1.src/docs/themevars.html
--- 1.4.0sr5-1.src/docs/themevars.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/docs/themevars.html	2006-11-12 04:38:33.000000000 -0600
@@ -58,7 +58,7 @@
         <code>$_CONF['site_url']</code> in your <tt>config.php</tt>
         file).</td></tr>
 <tr><td><code>layout_url</code></td>
-    <td><tt>http://www.example.com/layout/XSilver</tt></td>
+    <td><tt>http://www.example.com/layout/professional</tt></td>
     <td>The URL of the layout folder of the user's current theme.</td></tr>
 <tr><td><code>page_title</code></td>
     <td>Geeklog Site - Another Nifty Geeklog Site</td>
@@ -91,29 +91,57 @@
     <td>The current date and time, formatted according to
         <code>$_CONF['date']</code>.</td></tr>
 <tr><td><code>site_logo</code></td>
-    <td><tt>http://www.example.com/layout/<br>XSilver/images/logo.gif</tt></td>
-    <td>Points to a file named <tt>logo.gif</tt> in the <tt>images</tt>
-        directory of the current theme, intended to be used as the site's
-        logo.</td></tr>
+    <td><tt>http://www.example.com/layout/<br>professional/images/logo.png</tt></td>
+    <td>Points to the logo image in the <tt>images</tt> directory of the
+        current theme, intended to be used as the site's logo. This is usually
+        a GIF image (<tt>logo.gif</tt>), but the image type can be overwritten
+        by the theme (the Professional theme, for example, uses PNG images, and
+        so the logo is a PNG file, <tt>logo.png</tt>, too).</td></tr>
 <tr><td><code>css_url</code></td>
-    <td><tt>http://www.example.com/layout/<br>XSilver/style.css</tt></td>
+    <td><tt>http://www.example.com/layout/<br>professional/style.css</tt></td>
     <td>Points to the style sheet of the current theme.</td></tr>
 <tr><td><code>theme</code></td>
-    <td>XSilver</td>
+    <td>professional</td>
     <td>Name of the current theme.</td></tr>
 <tr><td><code>charset</code></td>
     <td>iso-8859-1</td>
     <td>The character set for the current language file.</td></tr>
+<tr><td><code>lang_id</code></td>
+    <td><tt>en-GB</tt>
+    <td>An ID representing the language used on your site. Ideally, this should
+        be an ISO language/country code, e.g. 'en-GB' for British English. The
+        value for this variable is the language shortcut used in the
+        <code>$_CONF['languages']</code> array when multi-language support is
+        enabled. Otherwise, it's derived from <code>$_CONF['locale']</code>,
+        which involves some guesswork. In the latter case, this may also end
+        up with a value like 'German' if your site is running on a non-Unix
+        system (and which is not a valid ISO code).</td></tr>
+<tr><td><code>lang_attribute</code></td>
+    <td><tt>lang="en-GB"</tt>
+    <td>An <a href="http://www.w3.org/TR/html4/struct/dirlang.html#adef-lang">HTML lang attribute</a> (including the value) to be used in your site
+        header's HTML to indicate the language of your site or of the current
+        page, e.g. like so: <pre>&lt;html {lang_attribute}&gt;</pre>
+        Please note that this variable is <em>empty</em>, i.e. not set, when
+        the site's language ID does not appear to be a <a href="http://www.w3.org/TR/html4/struct/dirlang.html#langcodes">valid language code</a> (see
+        description of the <code>lang_id</code> variable above).</td></tr>
+<tr><td><code>feed_url</code></td>
+    <td><tt>&lt;link rel="alternate" type="application/rss+xml" hreflang="en-gb" href="http://www.example.com/backend/geeklog.rss" title="RSS Feed: Geeklog"&gt;</tt></td>
+    <td>Provides links to all the relevant feeds for the current page
+        (depending on the "header link in topic" setting in the Feed Editor).</td></tr>
 <tr><td><code>rss_url</code></td>
     <td><tt>http://www.example.com/backend/geeklog.rdf</tt></td>
     <td>The URL of your site's RSS feed (identical to <code>{rdf_file}</code>.
-        This variable is also available in the site's
-        <tt>footer.thtml</tt>.</td></tr>
+        This variable is also available in the site's <tt>footer.thtml</tt>.
+        <strong>Deprecated:</strong> Use <code>{feed_url}</code> instead.</td></tr>
 <tr><td><code>rdf_file</code></td>
     <td><tt>http://www.example.com/backend/geeklog.rdf</tt></td>
     <td>The URL of your site's RSS feed (identical to <code>{rss_url}</code>.
-        This variable is also available in the site's
-        <tt>footer.thtml</tt>.</td></tr>
+        This variable is also available in the site's <tt>footer.thtml</tt>.
+        <strong>Deprecated:</strong> Use <code>{feed_url}</code> instead.</td></tr>
+<tr><td><code>rel_links</code></td>
+    <td><tt>&lt;link rel="home" href="http://www.example.com/" title="Home"&gt;</tt></td>
+    <td>Provides a set of predefined <a href="http://www.w3.org/TR/html4/struct/links.html#edef-LINK">link tags</a>, offering additional navigation links and
+        relationship information.</td></tr>
 </table>
 
 
@@ -137,12 +165,20 @@
         <code>$_CONF['site_url']</code> in your <tt>config.php</tt>
         file).</td></tr>
 <tr><td><code>layout_url</code></td>
-    <td><tt>http://www.example.com/layout/XSilver</tt></td>
+    <td><tt>http://www.example.com/layout/professional</tt></td>
     <td>The URL of the layout folder of the user's current theme.</td></tr>
 <tr><td><code>story_date</code></td>
     <td>Tuesday, October 22 2002 @ 11:50 PM PDT</td>
     <td>The date and time of the story, formatted according to the user's
         preferred date and time format.</td></tr>
+<tr><td><code>story_date_only</code></td>
+    <td>22-Oct</td>
+    <td>The date of the story, formatted using
+        $_CONF['<a href="config.html#desc_dateonly">dateonly</a>'].</td></tr>
+<tr><td><code>story_date_short</code></td>
+    <td>10/22/02</td>
+    <td>The date of the story, formatted using
+        $_CONF['<a href="config.html#desc_shortdate">shortdate</a>'].</td></tr>
 <tr><td><code>lang_views</code></td>
     <td>Views</td>
     <td>The word "Views" in the user's preferred language.</td></tr>
@@ -170,10 +206,19 @@
     <td>Today's Featured Article</td>
     <td>The words "Today's Featured Article" in the user's preferred language.
         <strong>Only available when the story is the featured story.</strong></td></tr>
+<tr><td><code>story_counter</code></td>
+    <td>1</td>
+    <td>On the site's index page (<tt>index.php</tt>), this variable contains
+        1 for the first story, 2 for the second, etc. This is independent
+        whether the first story is a featured story or not. The counter restarts
+        with every new page (<tt>index.php?page=2</tt>, etc.).<br>
+        The variable contains 0 on the article page (<tt>article.php</tt>) and
+        in story previews.</td></tr>
 </table>
 
-<p>The following variables are only available when the story is displayed on
-the index page <em>and</em> the body text of the story is <em>not</em> empty:</p>
+<p>The <a name="readmore">following variables</a> are only available when the
+story is displayed on the index page <em>and</em> the body text of the story is
+<em>not</em> empty:</p>
 
 <table border="1" width="100%" cellpadding="2">
 <tr><th width="8%">Variable</th>
@@ -198,9 +243,13 @@
 <tr><td><code>end_readmore_anchortag</code></td>
     <td><code>&lt;/a&gt;</code></td>
     <td>Closing tag for a link to the story.</td></tr>
+<tr><td><code>read_more_class</code></td>
 <tr><td><code>email_icon</code></td>
-    <td>(icon)</td>
-    <td>The email icon, linking to the form to send the story by email.</td></tr>
+    <td>class="story-read-more"</td>
+    <td>This variable is empty when the body text is empty and contains the
+        class attribute when the body text is not empty. Use the
+        <code>story-read-more</code> class to change the layout of the "read
+        more" link.</td></tr>
 <tr><td><code>print_icon</code></td>
     <td>(icon)</td>
     <td>The printer icon, linking to a "printer friendly" version of the story.</td></tr>
@@ -341,7 +390,7 @@
 
 <table border="0" width="100%" class="footer">
 <tr valign="top">
-  <td colspan="2"><a href="http://www.geeklog.net">The Geeklog Documentation Project</a><br>
+  <td colspan="2"><a href="http://wiki.geeklog.net/">The Geeklog Documentation Project</a><br>
     All trademarks and copyrights on this page are owned by their respective owners. GeekLog is copyleft.</td>
 </tr>
 </table>
diff -ruN 1.4.0sr5-1.src/docs/trackback.html 1.4.1.src/docs/trackback.html
--- 1.4.0sr5-1.src/docs/trackback.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/docs/trackback.html	2006-09-02 14:29:01.000000000 -0500
@@ -97,7 +97,7 @@
 only reference to trackbacks that you'll still see is the drop-down menu entry
 in the Admin's story editor (to enable/disable trackbacks on a per-story basis).
 But its setting is overridden by the <tt>config.php</tt> entries, so it can be
-ignores.</p>
+ignored.</p>
 
 
 <h2>Further reading</h2>
@@ -111,7 +111,7 @@
 
 <table border="0" width="100%" class="footer">
 <tr valign="top">
-  <td colspan="2"><a href="http://www.geeklog.net">The Geeklog Documentation Project</a><br>
+  <td colspan="2"><a href="http://wiki.geeklog.net/">The Geeklog Documentation Project</a><br>
     All trademarks and copyrights on this page are owned by their respective owners. GeekLog is copyleft.</td>
 </tr>
 </table>
diff -ruN 1.4.0sr5-1.src/fckeditor/_documentation.html 1.4.1.src/fckeditor/_documentation.html
--- 1.4.0sr5-1.src/fckeditor/_documentation.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/_documentation.html	2006-06-17 16:25:25.000000000 -0500
@@ -1,7 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -11,20 +11,24 @@
  * 
  * "Support Open Source software. What about a donation today?"
 -->
-<html>
-	<head>
-		<title>FCKeditor - Documentation</title>
-		<style>
-			BODY { FONT-FAMILY: Arial, Verdana, Sans-Serif }
-			P { MARGIN-LEFT: 20px }
-			</style>
-	</head>
-	<body>
-		<h1>FCKeditor Documentation</h1>
-		<p>You can find all the available documentation for FCKeditor online, at our wiki 
-			web site:</p>
-		<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
-			<p><a href="http://wiki.fckeditor.net/">http://wiki.fckeditor.net/</a></p>
-		</blockquote>
-	</body>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor - Documentation</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<style type="text/css">
+		body { font-family: arial, verdana, sans-serif }
+		p { margin-left: 20px }
+	</style>
+</head>
+<body>
+	<h1>
+		FCKeditor Documentation</h1>
+	<p>
+		You can find all the available documentation for FCKeditor online, at our wiki web
+		site:</p>
+	<blockquote dir="ltr" style="margin-right: 0px">
+		<p>
+			<a href="http://wiki.fckeditor.net/">http://wiki.fckeditor.net/</a></p>
+	</blockquote>
+</body>
 </html>
Binary files 1.4.0sr5-1.src/fckeditor/editor/css/behaviors/anchor.gif and 1.4.1.src/fckeditor/editor/css/behaviors/anchor.gif differ
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/css/behaviors/anchors.htc 1.4.1.src/fckeditor/editor/css/behaviors/anchors.htc
--- 1.4.0sr5-1.src/fckeditor/editor/css/behaviors/anchors.htc	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/css/behaviors/anchors.htc	1969-12-31 18:00:00.000000000 -0600
@@ -1,22 +0,0 @@
-<public:component lightweight="true">
-
-<public:attach event="oncontentready" onevent="ShowIcon()" />
-
-<script language="javascript">
-
-var bIsAnchor = this.name.length > 0 && this.getAttribute('href').length == 0 ;
-
-function ShowIcon()
-{
-	if ( bIsAnchor ) 
-	{
-		this.runtimeStyle.paddingLeft		= '16px' ;
-		this.runtimeStyle.backgroundImage	= 'url(' + window.parent.FCKConfig.FullBasePath + 'css/behaviors/anchor.gif)' ;
-		this.runtimeStyle.backgroundRepeat	= 'no-repeat' ;
-		this.runtimeStyle.cursor = 'hand' ;
-	}
-}
-
-</script>
-
-</public:component>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/css/behaviors/moz-bindings.xml 1.4.1.src/fckeditor/editor/css/behaviors/moz-bindings.xml
--- 1.4.0sr5-1.src/fckeditor/editor/css/behaviors/moz-bindings.xml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/css/behaviors/moz-bindings.xml	1969-12-31 18:00:00.000000000 -0600
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<bindings xmlns="http://www.mozilla.org/xbl">
-	<binding id="showtableborders">
-		<implementation>
-			<constructor>
-				this.CheckShowBorders() ;
-			</constructor>
-			<method name="CheckShowBorders">
-				<body>
-					var oClassRegex = /\s*FCK__ShowTableBorders\s*/ ;
-
-					if ( this.border == 0 )
-					{
-						if ( !oClassRegex.test( this.className ) )
-							this.className += ' FCK__ShowTableBorders' ;
-					}
-					else
-					{
-						if ( oClassRegex.test( this.className ) )
-							this.className = this.className.replace( oClassRegex, '' ) ;
-					}
-			   </body>
-			</method>
-		</implementation>
-		<handlers>
-			<handler event="DOMAttrModified">
-				this.CheckShowBorders() ;
-			</handler>
-		</handlers>
-	</binding>
-	<binding id="anchors">
-		<implementation>
-			<constructor>
-				<![CDATA[
-				this.IsAnchor = ( this.name != null && this.name.length > 0 && ( this.getAttribute('href') == null || this.getAttribute('href').length == 0 ) ) ;
-				this.ShowIcon() ;
-				]]>
-			</constructor>
-			<method name="ShowIcon">
-				<body>
-					if ( this.IsAnchor ) 
-					{
-						this.style.height = '1px' ;
-						this.style.paddingLeft		= '16px' ;
-						this.style.backgroundImage	= 'url(behaviors/anchor.gif)' ;
-						this.style.backgroundRepeat	= 'no-repeat' ;
-						this.style.cursor = 'pointer' ;
-					}
-			   </body>
-			</method>
-		</implementation>
-		<handlers>
-			<handler event="click">
-				if ( this.IsAnchor ) 
-					alert( this.IsAnchor ) ;
-			</handler>
-		</handlers>
-	</binding>
-</bindings>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/css/behaviors/showtableborders.htc 1.4.1.src/fckeditor/editor/css/behaviors/showtableborders.htc
--- 1.4.0sr5-1.src/fckeditor/editor/css/behaviors/showtableborders.htc	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/css/behaviors/showtableborders.htc	2006-06-17 16:25:26.000000000 -0500
@@ -4,8 +4,8 @@
 <public:attach event="onpropertychange" onevent="OnPropertyChange()" />
 
 <script language="javascript">
+
 var oClassRegex = /\s*FCK__ShowTableBorders/ ;
-var FCKConfig = window.parent.FCKConfig ;
 
 function ShowBorders()
 {
@@ -28,7 +28,7 @@
 function OnPropertyChange()
 {
 	if ( event.propertyName == 'border' || event.propertyName == 'className' )
-		ShowBorders() ;
+		ShowBorders.call(this) ;
 }
 
 </script>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/css/fck_editorarea.css 1.4.1.src/fckeditor/editor/css/fck_editorarea.css
--- 1.4.0sr5-1.src/fckeditor/editor/css/fck_editorarea.css	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/css/fck_editorarea.css	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -22,20 +22,34 @@
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
  */
 
+/*
+    The "body" styles should match your editor web site, mainly regarding
+    background color and font family and size.
+*/
+
 body
 {
-	font-family: Arial, Verdana, Sans-Serif;
-	font-size: 12px;
+	background-color: #ffffff;
 	padding: 5px 5px 5px 5px;
 	margin: 0px;
-	border-style: none;
-	background-color: #ffffff;
+}
+
+body, td
+{
+	font-family: Arial, Verdana, Sans-Serif;
+	font-size: 12px;
+}
+
+a
+{
+	color: #0000FF !important;	/* For Firefox... mark as important, otherwise it becomes black */
 }
 
 /* 
 	Just uncomment the following block if you want to avoid spaces between 
 	paragraphs. Remember to apply the same style in your output front end page.
 */
+
 /*
 P, UL, LI
 {
@@ -44,6 +58,12 @@
 }
 */
 
+/*
+    The following are some sample styles used in the "Styles" toolbar command.
+    You should instead remove them, and include the styles used by the site
+    you are using the editor in.
+*/
+
 .Bold
 {
 	font-weight: bold;
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/css/fck_internal.css 1.4.1.src/fckeditor/editor/css/fck_internal.css
--- 1.4.0sr5-1.src/fckeditor/editor/css/fck_internal.css	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/css/fck_internal.css	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -17,15 +17,23 @@
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
  */
 
-TABLE.FCK__ShowTableBorders, TABLE.FCK__ShowTableBorders TD
+/* Fix to allow putting the caret at the end of the
+content in Firefox if clicking below the content */
+html
 {
-	border: #d3d3d3 1px solid ;
+	min-height:100%;
 }
 
-FORM
+
+table.FCK__ShowTableBorders, table.FCK__ShowTableBorders td, table.FCK__ShowTableBorders th
+{
+	border: #d3d3d3 1px solid;
+}
+
+form
 {
 	border: 1px dotted #FF0000;
-	padding: 2px ;
+	padding: 2px;
 }
 
 .FCK__Flash
@@ -34,8 +42,8 @@
 	background-position: center center;
 	background-image: url(images/fck_flashlogo.gif);
 	background-repeat: no-repeat;
-	width: 80px ;
-	height: 80px ;
+	width: 80px;
+	height: 80px;
 }
 
 .FCK__Anchor
@@ -43,8 +51,8 @@
 	background-position: center center;
 	background-image: url(images/fck_anchor.gif);
 	background-repeat: no-repeat;
-	width: 16px ;
-	height: 15px ;
+	width: 16px;
+	height: 15px;
 }
 
 .FCK__PageBreak
@@ -58,7 +66,23 @@
 	width: 100%;
 	border-top: #999999 1px dotted;
 	border-bottom: #999999 1px dotted;
-	border-right:0px;
-	border-left:0px;
+	border-right: 0px;
+	border-left: 0px;
 	height: 5px;
-}
\ No newline at end of file
+}
+
+input[type="hidden"]
+{
+	display: inline;
+	width:20px;
+	height:20px;
+	border:1px dotted #FF0000 ;
+	background-image: url(behaviors/hiddenfield.gif);
+	background-repeat: no-repeat;
+}
+
+input[type="hidden"]:after
+{
+	padding-left: 20px;
+	content: "" ;
+}
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/css/fck_showtableborders_gecko.css 1.4.1.src/fckeditor/editor/css/fck_showtableborders_gecko.css
--- 1.4.0sr5-1.src/fckeditor/editor/css/fck_showtableborders_gecko.css	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/css/fck_showtableborders_gecko.css	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -17,7 +17,22 @@
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
  */
 
-TABLE[border="0"], TABLE[border="0"] TD
+/* For tables with the "border" attribute set to "0" */
+table[border="0"], 
+table[border="0"] > tr > td, table[border="0"] > tr > th, 
+table[border="0"] > tbody > tr > td, table[border="0"] > tbody > tr > th, 
+table[border="0"] > thead > tr > td, table[border="0"] > thead > tr > th, 
+table[border="0"] > tfoot > tr > td, table[border="0"] > tfoot > tr > th
 {
-	border: #d3d3d3 1px solid
+	border: #d3d3d3 1px dotted ;
+}
+
+/* For tables with no "border" attribute set */
+table:not([border]), 
+table:not([border]) > tr > td, table:not([border]) > tr > th,
+table:not([border]) > tbody > tr > td, table:not([border]) > tbody > tr > th,
+table:not([border]) > thead > tr > td, table:not([border]) > thead > tr > th,
+table:not([border]) > tfoot > tr > td, table:not([border]) > tfoot > tr > th
+{
+	border: #d3d3d3 1px dotted ;
 }
Binary files 1.4.0sr5-1.src/fckeditor/editor/css/images/fck_flashlogo.gif and 1.4.1.src/fckeditor/editor/css/images/fck_flashlogo.gif differ
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/common/fck_dialog_common.css 1.4.1.src/fckeditor/editor/dialog/common/fck_dialog_common.css
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/common/fck_dialog_common.css	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/common/fck_dialog_common.css	2006-09-03 13:05:03.000000000 -0500
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -8,6 +8,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_dialog_common.css
  * 	This is the CSS file used for interface details in some dialog
  * 	windows.
@@ -19,7 +21,6 @@
 .ImagePreviewArea
 {
 	border: #000000 1px solid;
-	padding: 5px;
 	overflow: auto;
 	width: 100%;
 	height: 170px;
@@ -56,7 +57,7 @@
 	width: 16px;
 	height: 16px;
 	background-repeat: no-repeat;
-	border: 1px none;
+	border: none 1px;
 	font-size: 1px ;
 }
 
@@ -67,7 +68,7 @@
 
 .BtnOver
 {
-	border: 1px outset;
+	border: outset 1px;
 	cursor: pointer;
 	cursor: hand;
 }
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/common/fck_dialog_common.js 1.4.1.src/fckeditor/editor/dialog/common/fck_dialog_common.js
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/common/fck_dialog_common.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/common/fck_dialog_common.js	2006-06-17 16:25:27.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -8,6 +8,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_dialog_common.js
  * 	Useful functions used by almost all dialog window pages.
  * 
@@ -89,4 +91,47 @@
 		s += this.substring( start + length , this.length ) ;
 
 	return s ;
+}
+
+function OpenFileBrowser( url, width, height )
+{
+	// oEditor must be defined.
+	
+	var iLeft = ( oEditor.FCKConfig.ScreenWidth  - width ) / 2 ;
+	var iTop  = ( oEditor.FCKConfig.ScreenHeight - height ) / 2 ;
+
+	var sOptions = "toolbar=no,status=no,resizable=yes,dependent=yes" ;
+	sOptions += ",width=" + width ;
+	sOptions += ",height=" + height ;
+	sOptions += ",left=" + iLeft ;
+	sOptions += ",top=" + iTop ;
+
+	// The "PreserveSessionOnFileBrowser" because the above code could be 
+	// blocked by popup blockers.
+	if ( oEditor.FCKConfig.PreserveSessionOnFileBrowser && oEditor.FCKBrowserInfo.IsIE )
+	{
+		// The following change has been made otherwise IE will open the file 
+		// browser on a different server session (on some cases):
+		// http://support.microsoft.com/default.aspx?scid=kb;en-us;831678
+		// by Simone Chiaretta.
+		var oWindow = oEditor.window.open( url, 'FCKBrowseWindow', sOptions ) ;
+		
+		if ( oWindow )
+		{
+			// Detect Yahoo popup blocker.
+			try
+			{
+				var sTest = oWindow.name ; // Yahoo returns "something", but we can't access it, so detect that and avoid strange errors for the user.
+				oWindow.opener = window ;
+			}
+			catch(e)
+			{
+				alert( oEditor.FCKLang.BrowseServerBlocked ) ;
+			}
+		}
+		else
+			alert( oEditor.FCKLang.BrowseServerBlocked ) ;
+    }
+    else
+		window.open( url, 'FCKBrowseWindow', sOptions ) ;
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/common/moz-bindings.xml 1.4.1.src/fckeditor/editor/dialog/common/moz-bindings.xml
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/common/moz-bindings.xml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/common/moz-bindings.xml	2006-06-17 16:25:27.000000000 -0500
@@ -7,18 +7,20 @@
 			</constructor>
 			<method name="CheckIsDigit">
 				<body>
+					<![CDATA[
 					var iCode = keyCode ;
 
 					var bAccepted =
 						(
 							( iCode >= 48 && iCode <= 57 )		// Numbers
 							|| (iCode >= 37 && iCode <= 40)		// Arrows
-							|| iCode == 8						// Backspace
-							|| iCode == 46						// Delete
+							|| iCode == 8											// Backspace
+							|| iCode == 46										// Delete
 						) ;
 
 					return bAccepted ;
-			   </body>
+					]]>
+				</body>
 			</method>
 		</implementation>
 		<events>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_about.html 1.4.1.src/fckeditor/editor/dialog/fck_about.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_about.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_about.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -28,7 +28,7 @@
 var FCKLang	= oEditor.FCKLang ;
 
 window.parent.AddTab( 'About', FCKLang.DlgAboutAboutTab ) ;
-window.parent.AddTab( 'License', 'License' ) ;
+window.parent.AddTab( 'License', FCKLang.DlgAboutLicenseTab ) ;
 window.parent.AddTab( 'BrowserInfo', FCKLang.DlgAboutBrowserInfoTab ) ;
 
 // Function called when a dialog tag is selected.
@@ -69,10 +69,11 @@
 						<img alt="" src="fck_about/logo_fckeditor.gif" width="236" height="41" align="left">
 						<table width="80" border="0" cellspacing="0" cellpadding="5" bgcolor="#ffffff" align="right">
 							<tr>
-								<td align="center" style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid">
+								<td align="center" nowrap style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid">
 									<span fckLang="DlgAboutVersion">version</span>
 									<br>
-									<b>2.1.1</b></td>
+									<b>2.3</b><br />
+									Build 1054</td>
 							</tr>
 						</table>
 					</td>
@@ -87,7 +88,7 @@
 						<span fckLang="DlgAboutInfo">For further information go to</span> <a href="http://www.fckeditor.net/?About" target="_blank">
 							http://www.fckeditor.net/</a>.
 						<br>
-						Copyright &copy; 2003-2005 <a href="#" onclick="SendEMail();">Frederico Caldeira 
+						Copyright &copy; 2003-2006 <a href="#" onclick="SendEMail();">Frederico Caldeira 
 							Knabben</a>
 					</td>
 				</tr>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_anchor.html 1.4.1.src/fckeditor/editor/dialog/fck_anchor.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_anchor.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_anchor.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -69,7 +69,7 @@
 	oAnchor.innerHTML = '<a name="' + GetE('txtName').value + '"><\/a>' ;
 	oAnchor = oAnchor.firstChild ;
 
-	oFakeImage	= oEditor.FCKDocumentProcessors_CreateFakeImage( 'FCK__Anchor', oAnchor ) ;
+	oFakeImage	= oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Anchor', oAnchor ) ;
 	oFakeImage.setAttribute( '_fckanchor', 'true', 0 ) ;
 	oFakeImage	= FCK.InsertElementAndGetIt( oFakeImage ) ;
 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_button.html 1.4.1.src/fckeditor/editor/dialog/fck_button.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_button.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_button.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -9,6 +9,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_button.html
  * 	Button dialog window.
  * 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_checkbox.html 1.4.1.src/fckeditor/editor/dialog/fck_checkbox.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_checkbox.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_checkbox.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -9,6 +9,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_checkbox.html
  * 	Checkbox dialog window.
  * 
@@ -38,7 +40,7 @@
 	if ( oActiveEl && oActiveEl.tagName == 'INPUT' && oActiveEl.type == 'checkbox' )
 	{
 		GetE('txtName').value		= oActiveEl.name ;
-		GetE('txtValue').value		= oActiveEl.value ;
+		GetE('txtValue').value		= oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ;
 		GetE('txtSelected').checked	= oActiveEl.checked ;
 	}
 	else
@@ -56,14 +58,17 @@
 		oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
 	}
 
-	oActiveEl.name = GetE('txtName').value ;
-	SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
+	if ( GetE('txtName').value.length > 0 )
+		oActiveEl.name = GetE('txtName').value ;
+		
+	if ( oEditor.FCKBrowserInfo.IsIE )
+		oActiveEl.value = GetE('txtValue').value ;
+	else
+		SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
 
-	if ( GetE('txtSelected').checked )
-	{
-		SetAttribute( oActiveEl, 'checked', 'checked' ) ;
-		oActiveEl.checked = GetE('txtSelected').checked ;
-	}
+	var bIsChecked = GetE('txtSelected').checked ;
+	SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ;	// For Firefox
+	oActiveEl.checked = bIsChecked ;
 
 	return true ;
 }
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_colorselector.html 1.4.1.src/fckeditor/editor/dialog/fck_colorselector.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_colorselector.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_colorselector.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,6 +1,6 @@
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -8,6 +8,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_colorselector.html
  * 	Color Selection dialog window.
  * 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_docprops/fck_document_preview.html 1.4.1.src/fckeditor/editor/dialog/fck_docprops/fck_document_preview.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_docprops/fck_document_preview.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_docprops/fck_document_preview.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -9,6 +9,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_document_preview.html
  * 	Preview shown in the "Document Properties" dialog window.
  * 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_docprops.html 1.4.1.src/fckeditor/editor/dialog/fck_docprops.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_docprops.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_docprops.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -148,6 +148,9 @@
 
 window.onload = function ()
 {
+	// Show/Hide the "Browse Server" button.
+	GetE('tdBrowse').style.display = oEditor.FCKConfig.ImageBrowser ? "" : "none";
+
 	// First of all, translate the dialog box texts
 	oEditor.FCKLanguageManager.TranslatePage( document ) ;
 
@@ -372,26 +375,7 @@
 
 function BrowseServerBack()
 {
-	var iLeft = (FCKConfig.ScreenWidth  - FCKConfig.ImageBrowserWindowWidth) / 2 ;
-	var iTop  = (FCKConfig.ScreenHeight - FCKConfig.ImageBrowserWindowHeight) / 2 ;
-
-	var sOptions = "toolbar=no,status=no,resizable=yes,dependent=yes" ;
-	sOptions += ",width=" + FCKConfig.LinkBrowserWindowWidth ;
-	sOptions += ",height=" + FCKConfig.LinkBrowserWindowHeight ;
-	sOptions += ",left=" + iLeft ;
-	sOptions += ",top=" + iTop ;
-
-	if ( oEditor.FCKBrowserInfo.IsIE )
-	{
-		// The following change has been made otherwise IE will open the file 
-		// browser on a different server session (on some cases):
-		// http://support.microsoft.com/default.aspx?scid=kb;en-us;831678
-		// by Simone Chiaretta.
-		var oWindow = oEditor.window.open( FCKConfig.ImageBrowserURL, "FCKBrowseWindow", sOptions ) ;
-		oWindow.opener = window ;
-    }
-    else
-		window.open( FCKConfig.ImageBrowserURL, "FCKBrowseWindow", sOptions ) ;
+	OpenFileBrowser( FCKConfig.ImageBrowserURL, FCKConfig.ImageBrowserWindowWidth, FCKConfig.ImageBrowserWindowHeight ) ;
 }
 
 function SetUrl( url )
@@ -499,7 +483,7 @@
 						<table cellSpacing="0" cellPadding="0" width="100%" border="0">
 							<tr>
 								<td width="100%"><input id="txtBackImage" style="WIDTH: 100%" type="text" onchange="UpdatePreview();" onkeyup="UpdatePreview();"></td>
-								<td nowrap>&nbsp;<input id="btnBrowse" onclick="BrowseServerBack();" type="button" fckLang="DlgBtnBrowseServer" value="Browse Server" fckLang="DlgBtnBrowseServer"></td>
+								<td id="tdBrowse" nowrap>&nbsp;<input id="btnBrowse" onclick="BrowseServerBack();" type="button" fckLang="DlgBtnBrowseServer" value="Browse Server" fckLang="DlgBtnBrowseServer"></td>
 							</tr>
 						</table>
 						<input id="chkBackNoScroll" type="checkbox" onclick="UpdatePreview();"> <label for="chkBackNoScroll" fckLang="DlgDocBgNoScroll">Nonscrolling
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_find.html 1.4.1.src/fckeditor/editor/dialog/fck_find.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_find.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_find.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -9,17 +9,20 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_find.html
  * 	"Find" dialog window.
  * 
  * File Authors:
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
 -->
-<html>
-	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-		<meta content="noindex, nofollow" name="robots">
-		<script type="text/javascript">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta content="noindex, nofollow" name="robots" />
+	<script type="text/javascript">
 
 var oEditor = window.parent.InnerDialogLoaded() ;
 
@@ -80,8 +83,6 @@
 	return ( document.getElementById('chkCase').checked ? '' : 'i' ) ;
 }
 
-var oRange = oEditor.FCK.EditorDocument.body.createTextRange() ;
-
 function Ok()
 {
 	if ( document.getElementById('txtFind').value.length == 0 )
@@ -93,6 +94,11 @@
 		FindGecko() ;
 }
 
+var oRange ;
+
+if ( oEditor.FCKBrowserInfo.IsIE )
+	oRange = oEditor.FCK.EditorDocument.body.createTextRange() ;
+
 function FindIE()
 {
 	var iFlags = 0 ;
@@ -128,33 +134,44 @@
 	oEditor.FCK.EditorWindow.find( document.getElementById('txtFind').value, bCase, false, false, bWord, false, false ) ;
 
 }
-		</script>
-	</head>
-	<body onload="OnLoad()" scroll="no" style="OVERFLOW: hidden">
-		<table cellSpacing="3" cellPadding="2" width="100%" border="0">
-			<tr>
-				<td nowrap>
-					<label for="txtFind" fckLang="DlgReplaceFindLbl">Find what:</label>&nbsp;
-				</td>
-				<td width="100%">
-					<input id="txtFind" style="WIDTH: 100%" tabIndex="1" type="text">
-				</td>
-				<td>
-					<input id="btnFind" style="WIDTH: 100%; PADDING-RIGHT: 5px; PADDING-LEFT: 5px" onclick="Ok();"
-						type="button" value="Find" fckLang="DlgFindFindBtn">
-				</td>
-			</tr>
-			<tr>
-				<td valign="bottom" colSpan="3">
-					&nbsp;<input id="chkCase" tabIndex="3" type="checkbox"><label for="chkCase" fckLang="DlgReplaceCaseChk">Match 
-						case</label>
-					<br>
-					<div id="divWord" style="DISPLAY: none">
-						&nbsp;<input id="chkWord" tabIndex="4" type="checkbox"><label for="chkWord" fckLang="DlgReplaceWordChk">Match 
-							whole word</label>
-					</div>
-				</td>
-			</tr>
-		</table>
-	</body>
+
+function FindGecko()
+{
+	var bCase = document.getElementById('chkCase').checked ;
+	var bWord = document.getElementById('chkWord').checked ;
+
+	// window.find( searchString, caseSensitive, backwards, wrapAround, wholeWord, searchInFrames, showDialog ) ;
+	if ( !oEditor.FCK.EditorWindow.find( document.getElementById('txtFind').value, bCase, false, false, bWord, false, false ) )
+		alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
+}
+	</script>
+</head>
+<body onload="OnLoad()" scroll="no" style="overflow: hidden">
+	<table cellspacing="3" cellpadding="2" width="100%" border="0">
+		<tr>
+			<td nowrap="nowrap">
+				<label for="txtFind" fcklang="DlgReplaceFindLbl">
+					Find what:</label>&nbsp;
+			</td>
+			<td width="100%">
+				<input id="txtFind" style="width: 100%" tabindex="1" type="text" />
+			</td>
+			<td>
+				<input id="btnFind" style="padding-right: 5px; padding-left: 5px" onclick="Ok();"
+					type="button" value="Find" fcklang="DlgFindFindBtn" />
+			</td>
+		</tr>
+		<tr>
+			<td valign="bottom" colspan="3">
+				&nbsp;<input id="chkCase" tabindex="3" type="checkbox" /><label for="chkCase" fcklang="DlgReplaceCaseChk">Match
+					case</label>
+				<br />
+				<div id="divWord" style="display: none">
+					&nbsp;<input id="chkWord" tabindex="4" type="checkbox" /><label for="chkWord" fcklang="DlgReplaceWordChk">Match
+					whole word</label>
+				</div>
+			</td>
+		</tr>
+	</table>
+</body>
 </html>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_flash/fck_flash.js 1.4.1.src/fckeditor/editor/dialog/fck_flash/fck_flash.js
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_flash/fck_flash.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_flash/fck_flash.js	2006-06-17 16:25:27.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -92,12 +92,17 @@
 	GetE('cmbScale').value		= GetAttribute( oEmbed, 'scale', '' ).toLowerCase() ;
 	
 	GetE('txtAttTitle').value		= oEmbed.title ;
-	GetE('txtAttClasses').value		= oEmbed.getAttribute('class',2) || '' ;
 
 	if ( oEditor.FCKBrowserInfo.IsIE )
-		GetE('txtAttStyle').value	= oEmbed.style.cssText ;
+	{
+		GetE('txtAttClasses').value = oEmbed.getAttribute('className') || '' ;
+		GetE('txtAttStyle').value = oEmbed.style.cssText ;
+	}
 	else
-		GetE('txtAttStyle').value	= oEmbed.getAttribute('style',2) ;
+	{
+		GetE('txtAttClasses').value = oEmbed.getAttribute('class',2) || '' ;
+		GetE('txtAttStyle').value = oEmbed.getAttribute('style',2) ;
+	}
 
 	UpdatePreview() ;
 }
@@ -124,7 +129,7 @@
 	
 	if ( !oFakeImage )
 	{
-		oFakeImage	= oEditor.FCKDocumentProcessors_CreateFakeImage( 'FCK__Flash', oEmbed ) ;
+		oFakeImage	= oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Flash', oEmbed ) ;
 		oFakeImage.setAttribute( '_fckflash', 'true', 0 ) ;
 		oFakeImage	= FCK.InsertElementAndGetIt( oFakeImage ) ;
 	}
@@ -150,38 +155,55 @@
 	SetAttribute( e, 'id'	, GetE('txtAttId').value ) ;
 	SetAttribute( e, 'scale', GetE('cmbScale').value ) ;
 	
-	if ( !GetE('chkAutoPlay').checked )	SetAttribute( e, 'play', 'false' ) ;
-	if ( !GetE('chkLoop').checked )		SetAttribute( e, 'loop', 'false' ) ;
-	if ( !GetE('chkMenu').checked )		SetAttribute( e, 'menu', 'false' ) ;
+	SetAttribute( e, 'play', GetE('chkAutoPlay').checked ? 'true' : 'false' ) ;
+	SetAttribute( e, 'loop', GetE('chkLoop').checked ? 'true' : 'false' ) ;
+	SetAttribute( e, 'menu', GetE('chkMenu').checked ? 'true' : 'false' ) ;
 
 	SetAttribute( e, 'title'	, GetE('txtAttTitle').value ) ;
-	SetAttribute( e, 'class'	, GetE('txtAttClasses').value ) ;
 
 	if ( oEditor.FCKBrowserInfo.IsIE )
+	{
+		SetAttribute( e, 'className', GetE('txtAttClasses').value ) ;
 		e.style.cssText = GetE('txtAttStyle').value ;
+	}
 	else
+	{
+		SetAttribute( e, 'class', GetE('txtAttClasses').value ) ;
 		SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
+	}
 }
 
-function UpdatePreview()
+var ePreview ;
+
+function SetPreviewElement( previewEl )
 {
-	var oCell = GetE('ePreviewCell') ;
+	ePreview = previewEl ;
 	
-	while ( oCell.firstChild )
-		oCell.removeChild( oCell.firstChild ) ;
+	if ( GetE('txtUrl').value.length > 0 )
+		UpdatePreview() ;
+}
+
+function UpdatePreview()
+{
+	if ( !ePreview )
+		return ;
+		
+	while ( ePreview.firstChild )
+		ePreview.removeChild( ePreview.firstChild ) ;
 
 	if ( GetE('txtUrl').value.length == 0 )
-		oCell.innerHTML = '&nbsp;' ;
+		ePreview.innerHTML = '&nbsp;' ;
 	else
 	{
-		var e = document.createElement( 'EMBED' ) ;
+		var oDoc	= ePreview.ownerDocument || ePreview.document ;
+		var e		= oDoc.createElement( 'EMBED' ) ;
 		
 		e.src		= GetE('txtUrl').value ;
 		e.type		= 'application/x-shockwave-flash' ;
 		e.width		= '100%' ;
 		e.height	= '100%' ;
 		
-		oCell.appendChild( e ) ;
+		ePreview.appendChild( e ) ;
 	}
 }
 
@@ -189,40 +211,19 @@
 
 function BrowseServer()
 {
-	OpenServerBrowser(
-		'Flash',
-		FCKConfig.FlashBrowserURL,
-		FCKConfig.FlashBrowserWindowWidth,
-		FCKConfig.FlashBrowserWindowHeight ) ;
-}
-
-function OpenServerBrowser( type, url, width, height )
-{
-	var iLeft = (FCKConfig.ScreenWidth  - width) / 2 ;
-	var iTop  = (FCKConfig.ScreenHeight - height) / 2 ;
-
-	var sOptions = "toolbar=no,status=no,resizable=yes,dependent=yes" ;
-	sOptions += ",width=" + width ;
-	sOptions += ",height=" + height ;
-	sOptions += ",left=" + iLeft ;
-	sOptions += ",top=" + iTop ;
-
-	if ( oEditor.FCKBrowserInfo.IsIE )
-	{
-		// The following change has been made otherwise IE will open the file 
-		// browser on a different server session (on some cases):
-		// http://support.microsoft.com/default.aspx?scid=kb;en-us;831678
-		// by Simone Chiaretta.
-		var oWindow = oEditor.window.open( url, "FCKBrowseWindow", sOptions ) ;
-		oWindow.opener = window ;
-    }
-    else
-		window.open( url, "FCKBrowseWindow", sOptions ) ;
+	OpenFileBrowser( FCKConfig.FlashBrowserURL, FCKConfig.FlashBrowserWindowWidth, FCKConfig.FlashBrowserWindowHeight ) ;
 }
 
-function SetUrl( url )
+function SetUrl( url, width, height )
 {
 	GetE('txtUrl').value = url ;
+	
+	if ( width )
+		GetE('txtWidth').value = width ;
+		
+	if ( height ) 
+		GetE('txtHeight').value = height ;
+
 	UpdatePreview() ;
 
 	window.parent.SetSelectedTab( 'Info' ) ;
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_flash/fck_flash_preview.html 1.4.1.src/fckeditor/editor/dialog/fck_flash/fck_flash_preview.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_flash/fck_flash_preview.html	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/dialog/fck_flash/fck_flash_preview.html	2006-06-17 16:25:27.000000000 -0500
@@ -0,0 +1,42 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_flash_preview.html
+ * 	Preview page for the Flash dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<title></title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<link href="../common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
+		<script language="javascript">
+
+// Sets the Skin CSS
+document.write( '<link href="' + window.parent.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
+
+if ( window.parent.FCKConfig.BaseHref.length > 0 )
+	document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ;
+
+window.onload = function()
+{
+	window.parent.SetPreviewElement( document.body ) ;
+}
+
+		</script>
+	</head>
+	<body style="COLOR: #000000; BACKGROUND-COLOR: #ffffff"></body>
+</html>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_flash.html 1.4.1.src/fckeditor/editor/dialog/fck_flash.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_flash.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_flash.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -72,7 +72,7 @@
 											<td><span fckLang="DlgImgPreview">Preview</span></td>
 										</tr>
 										<tr>
-											<td id="ePreviewCell" valign="top" class="FlashPreviewArea">&nbsp;</td>
+											<td id="ePreviewCell" valign="top" class="FlashPreviewArea"><iframe src="fck_flash/fck_flash_preview.html" frameborder="0" marginheight="0" marginwidth="0"></iframe></td>
 										</tr>
 									</table>
 								</td>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_form.html 1.4.1.src/fckeditor/editor/dialog/fck_form.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_form.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_form.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -9,6 +9,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_form.html
  * 	Checkbox dialog window.
  * 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_hiddenfield.html 1.4.1.src/fckeditor/editor/dialog/fck_hiddenfield.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_hiddenfield.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_hiddenfield.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -9,6 +9,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_hiddenfield.html
  * 	Hidden Field dialog window.
  * 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_image/fck_image.js 1.4.1.src/fckeditor/editor/dialog/fck_image/fck_image.js
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_image/fck_image.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_image/fck_image.js	2006-09-03 13:05:03.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -21,6 +21,7 @@
 var FCK			= oEditor.FCK ;
 var FCKLang		= oEditor.FCKLang ;
 var FCKConfig	= oEditor.FCKConfig ;
+var FCKDebug	= oEditor.FCKDebug ;
 
 var bImageButton = ( document.location.search.length > 0 && document.location.search.substr(1) == 'ImageButton' ) ;
 
@@ -60,6 +61,15 @@
 
 function UpdateOriginal( resetSize )
 {
+	if ( !eImgPreview )
+		return ;
+	
+	if ( GetE('txtUrl').value.length == 0 )
+	{
+		oImageOriginal = null ;
+		return ;
+	}
+		
 	oImageOriginal = document.createElement( 'IMG' ) ;	// new Image() ;
 
 	if ( resetSize )
@@ -71,9 +81,11 @@
 		}
 	}
 
-	oImageOriginal.src = GetE('imgPreview').src ;
+	oImageOriginal.src = eImgPreview.src ;
 }
 
+var bPreviewInitialized ;
+
 window.onload = function()
 {
 	// Translate the dialog box texts.
@@ -105,7 +117,9 @@
 {
 	if ( ! oImage ) return ;
 
-	var sUrl = GetAttribute( oImage, 'src', '' ) ;
+	var sUrl = GetAttribute( oImage, '_fcksavedurl', '' ) ;
+	if ( sUrl.length == 0 )
+		sUrl = GetAttribute( oImage, 'src', '' ) ;
 
 	// TODO: Wait stable version and remove the following commented lines.
 //	if ( sUrl.startsWith( FCK.BaseUrl ) )
@@ -118,15 +132,32 @@
 	GetE('txtBorder').value	= GetAttribute( oImage, 'border', '' ) ;
 	GetE('cmbAlign').value	= GetAttribute( oImage, 'align', '' ) ;
 
-	if ( oImage.style.pixelWidth > 0 )
-		GetE('txtWidth').value  = oImage.style.pixelWidth ;
-	else
-		GetE('txtWidth').value  = GetAttribute( oImage, "width", '' ) ;
+	var iWidth, iHeight ;
 
-	if ( oImage.style.pixelHeight > 0 )
-		GetE('txtHeight').value  = oImage.style.pixelHeight ;
-	else
-		GetE('txtHeight').value = GetAttribute( oImage, "height", '' ) ;
+	var regexSize = /^\s*(\d+)px\s*$/i ;
+	
+	if ( oImage.style.width )
+	{
+		var aMatch  = oImage.style.width.match( regexSize ) ;
+		if ( aMatch )
+		{
+			iWidth = aMatch[1] ;
+			oImage.style.width = '' ;
+		}
+	}
+
+	if ( oImage.style.height )
+	{
+		var aMatch  = oImage.style.height.match( regexSize ) ;
+		if ( aMatch )
+		{
+			iHeight = aMatch[1] ;
+			oImage.style.height = '' ;
+		}
+	}
+
+	GetE('txtWidth').value	= iWidth ? iWidth : GetAttribute( oImage, "width", '' ) ;
+	GetE('txtHeight').value	= iHeight ? iHeight : GetAttribute( oImage, "height", '' ) ;
 
 	// Get Advances Attributes
 	GetE('txtAttId').value			= oImage.id ;
@@ -143,7 +174,11 @@
 
 	if ( oLink )
 	{
-		GetE('txtLnkUrl').value		= oLink.getAttribute('href',2) ;
+		var sUrl = GetAttribute( oLink, '_fcksavedurl', '' ) ;
+		if ( sUrl.length == 0 )
+			sUrl = oLink.getAttribute('href',2) ;
+	
+		GetE('txtLnkUrl').value		= sUrl ;
 		GetE('cmbLnkTarget').value	= oLink.target ;
 	}
 
@@ -217,6 +252,7 @@
 			}
 		}
 
+		SetAttribute( oLink, '_fcksavedurl', sLnkUrl ) ;
 		SetAttribute( oLink, 'target', GetE('cmbLnkTarget').value ) ;
 	}
 
@@ -226,6 +262,7 @@
 function UpdateImage( e, skipId )
 {
 	e.src = GetE('txtUrl').value ;
+	SetAttribute( e, "_fcksavedurl", GetE('txtUrl').value ) ;
 	SetAttribute( e, "alt"   , GetE('txtAlt').value ) ;
 	SetAttribute( e, "width" , GetE('txtWidth').value ) ;
 	SetAttribute( e, "height", GetE('txtHeight').value ) ;
@@ -251,20 +288,37 @@
 		SetAttribute( e, 'style', GetE('txtAttStyle').value ) ;
 }
 
+var eImgPreview ;
+var eImgPreviewLink ;
+
+function SetPreviewElements( imageElement, linkElement )
+{
+	eImgPreview = imageElement ;
+	eImgPreviewLink = linkElement ;
+
+	UpdatePreview() ;
+	UpdateOriginal() ;
+	
+	bPreviewInitialized = true ;
+}
+
 function UpdatePreview()
 {
+	if ( !eImgPreview || !eImgPreviewLink )
+		return ;
+
 	if ( GetE('txtUrl').value.length == 0 )
-		GetE('lnkPreview').style.display = 'none' ;
+		eImgPreviewLink.style.display = 'none' ;
 	else
 	{
-		UpdateImage( GetE('imgPreview'), true ) ;
+		UpdateImage( eImgPreview, true ) ;
 
 		if ( GetE('txtLnkUrl').value.trim().length > 0 )
-			GetE('lnkPreview').href = 'javascript:void(null);' ;
+			eImgPreviewLink.href = 'javascript:void(null);' ;
 		else
-			SetAttribute( GetE('lnkPreview'), 'href', '' ) ;
+			SetAttribute( eImgPreviewLink, 'href', '' ) ;
 
-		GetE('lnkPreview').style.display = '' ;
+		eImgPreviewLink.style.display = '' ;
 	}
 }
 
@@ -291,16 +345,21 @@
 	// Verifies if the aspect ration has to be mantained
 	if ( oImageOriginal && bLockRatio )
 	{
+		var e = dimension == 'Width' ? GetE('txtHeight') : GetE('txtWidth') ;
+		
 		if ( value.length == 0 || isNaN( value ) )
 		{
-			GetE('txtHeight').value = GetE('txtWidth').value = '' ;
+			e.value = '' ;
 			return ;
 		}
 
 		if ( dimension == 'Width' )
-			GetE('txtHeight').value = value == 0 ? 0 : Math.round( oImageOriginal.height * ( value  / oImageOriginal.width ) ) ;
+			value = value == 0 ? 0 : Math.round( oImageOriginal.height * ( value  / oImageOriginal.width ) ) ;
 		else
-			GetE('txtWidth').value  = value == 0 ? 0 : Math.round( oImageOriginal.width  * ( value / oImageOriginal.height ) ) ;
+			value = value == 0 ? 0 : Math.round( oImageOriginal.width  * ( value / oImageOriginal.height ) ) ;
+
+		if ( !isNaN( value ) )
+			e.value = value ;
 	}
 
 	UpdatePreview() ;
@@ -338,27 +397,7 @@
 function OpenServerBrowser( type, url, width, height )
 {
 	sActualBrowser = type ;
-
-	var iLeft = (FCKConfig.ScreenWidth  - width) / 2 ;
-	var iTop  = (FCKConfig.ScreenHeight - height) / 2 ;
-
-	var sOptions = "toolbar=no,status=no,resizable=yes,dependent=yes" ;
-	sOptions += ",width=" + width ;
-	sOptions += ",height=" + height ;
-	sOptions += ",left=" + iLeft ;
-	sOptions += ",top=" + iTop ;
-
-	if ( oEditor.FCKBrowserInfo.IsIE )
-	{
-		// The following change has been made otherwise IE will open the file 
-		// browser on a different server session (on some cases):
-		// http://support.microsoft.com/default.aspx?scid=kb;en-us;831678
-		// by Simone Chiaretta.
-		var oWindow = oEditor.window.open( url, "FCKBrowseWindow", sOptions ) ;
-		oWindow.opener = window ;
-    }
-    else
-		window.open( url, "FCKBrowseWindow", sOptions ) ;
+	OpenFileBrowser( url, width, height ) ;
 }
 
 var sActualBrowser ;
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_image/fck_image_preview.html 1.4.1.src/fckeditor/editor/dialog/fck_image/fck_image_preview.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_image/fck_image_preview.html	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/dialog/fck_image/fck_image_preview.html	2006-09-03 13:05:03.000000000 -0500
@@ -0,0 +1,61 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_image_preview.html
+ * 	Preview page for the Image dialog window.
+ * 	Curiosity: http://en.wikipedia.org/wiki/Lorem_ipsum
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title></title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<link href="../common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
+	<script type="text/javascript">
+
+// Sets the Skin CSS
+document.write( '<link href="' + window.parent.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
+
+if ( window.parent.FCKConfig.BaseHref.length > 0 )
+	document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ;
+
+window.onload = function()
+{
+	window.parent.SetPreviewElements( 
+		document.getElementById( 'imgPreview' ),
+		document.getElementById( 'lnkPreview' ) ) ;
+}
+
+	</script>
+</head>
+<body style="color: #000000; background-color: #ffffff">
+	<a id="lnkPreview" onclick="return false;" style="cursor: default">
+		<img id="imgPreview" onload="window.parent.UpdateOriginal();" style="display: none" /></a>Lorem
+	ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam.
+	Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla.
+	Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis
+	euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce
+	mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie.
+	Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque
+	egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem,
+	in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut
+	placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy
+	metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices,
+	ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris
+	non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas
+	elementum. Nunc imperdiet gravida mauris.
+</body>
+</html>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_image.html 1.4.1.src/fckeditor/editor/dialog/fck_image.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_image.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_image.html	2006-09-03 13:05:03.000000000 -0500
@@ -1,6 +1,6 @@
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -17,226 +17,232 @@
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
 -->
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-	<head>
-		<title>Image Properties</title>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-		<meta name="robots" content="noindex, nofollow">
-		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-		<script src="fck_image/fck_image.js" type="text/javascript"></script>
-		<link href="common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
-	</head>
-	<body scroll="no" style="OVERFLOW: hidden">
-		<div id="divInfo">
-			<table cellspacing="1" cellpadding="1" border="0" width="100%" height="100%">
-				<tr>
-					<td>
-						<table cellspacing="0" cellpadding="0" width="100%" border="0">
-							<tr>
-								<td width="100%">
-									<span fckLang="DlgImgURL">URL</span>
-								</td>
-								<td id="tdBrowse" style="DISPLAY: none" nowrap rowspan="2">
-									&nbsp; <input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server" fckLang="DlgBtnBrowseServer">
-								</td>
-							</tr>
-							<tr>
-								<td valign="top">
-									<input id="txtUrl" style="WIDTH: 100%" type="text" onblur="UpdatePreview();">
-								</td>
-							</tr>
-						</table>
-					</td>
-				</tr>
-				<tr>
-					<td>
-						<span fckLang="DlgImgAlt">Short Description</span><br />
-						<input id="txtAlt" style="WIDTH: 100%" type="text"><br />
-					</td>
-				</tr>
-				<tr height="100%">
-					<td valign="top">
-						<table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%">
-							<tr>
-								<td valign="top">
-									<br />
-									<table cellspacing="0" cellpadding="0" border="0">
-										<tr>
-											<td nowrap><span fckLang="DlgImgWidth">Width</span>&nbsp;</td>
-											<td>
-												<input type="text" size="3" id="txtWidth" onkeyup="OnSizeChanged('Width',this.value);"></td>
-											<td nowrap rowspan="2">
-												<div id="btnLockSizes" class="BtnLocked" onmouseover="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ) + ' BtnOver';"
-													onmouseout="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' );" title="Lock Sizes"
-													onclick="SwitchLock(this);"></div>
-												<div id="btnResetSize" class="BtnReset" onmouseover="this.className='BtnReset BtnOver';"
-													onmouseout="this.className='BtnReset';" title="Reset Size" onclick="ResetSizes();"></div>
-											</td>
-										</tr>
-										<tr>
-											<td nowrap><span fckLang="DlgImgHeight">Height</span>&nbsp;</td>
-											<td>
-												<input type="text" size="3" id="txtHeight" onkeyup="OnSizeChanged('Height',this.value);"></td>
-										</tr>
-									</table>
-									<br />
-									<table cellspacing="0" cellpadding="0" border="0">
-										<tr>
-											<td nowrap><span fckLang="DlgImgBorder">Border</span>&nbsp;</td>
-											<td>
-												<input type="text" size="2" value="" id="txtBorder" onkeyup="UpdatePreview();"></td>
-										</tr>
-										<tr>
-											<td nowrap><span fckLang="DlgImgHSpace">HSpace</span>&nbsp;</td>
-											<td>
-												<input type="text" size="2" id="txtHSpace" onkeyup="UpdatePreview();"></td>
-										</tr>
-										<tr>
-											<td nowrap><span fckLang="DlgImgVSpace">VSpace</span>&nbsp;</td>
-											<td>
-												<input type="text" size="2" id="txtVSpace" onkeyup="UpdatePreview();"></td>
-										</tr>
-										<tr>
-											<td nowrap><span fckLang="DlgImgAlign">Align</span>&nbsp;</td>
-											<td><select id="cmbAlign" onchange="UpdatePreview();">
-													<option value="" selected></option>
-													<option fckLang="DlgImgAlignLeft" value="left">Left</option>
-													<option fckLang="DlgImgAlignAbsBottom" value="absBottom">Abs Bottom</option>
-													<option fckLang="DlgImgAlignAbsMiddle" value="absMiddle">Abs Middle</option>
-													<option fckLang="DlgImgAlignBaseline" value="baseline">Baseline</option>
-													<option fckLang="DlgImgAlignBottom" value="bottom">Bottom</option>
-													<option fckLang="DlgImgAlignMiddle" value="middle">Middle</option>
-													<option fckLang="DlgImgAlignRight" value="right">Right</option>
-													<option fckLang="DlgImgAlignTextTop" value="textTop">Text Top</option>
-													<option fckLang="DlgImgAlignTop" value="top">Top</option>
-												</select>
-											</td>
-										</tr>
-									</table>
-								</td>
-								<td>&nbsp;&nbsp;&nbsp;</td>
-								<td width="100%" valign="top">
-									<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed">
-										<tr>
-											<td><span fckLang="DlgImgPreview">Preview</span></td>
-										</tr>
-										<tr>
-											<td valign="top">
-												<div class="ImagePreviewArea">
-													<a id="lnkPreview" onclick="return false;" style="CURSOR: default"><img id="imgPreview" style="DISPLAY: none"></a>Magnus 
-													es, domine, et laudabilis valde: magna virtus tua, et sapientiae tuae non est 
-													numerus. et laudare te vult homo, aliqua portio creaturae tuae, et homo 
-													circumferens mortalitem suam, circumferens testimonium peccati sui et 
-													testimonium, quia superbis resistis: et tamen laudare te vult homo, aliqua 
-													portio creaturae tuae.tu excitas, ut laudare te delectet, quia fecisti nos ad 
-													te et inquietum est cor nostrum, donec requiescat in te. da mihi, domine, scire 
-													et intellegere, utrum sit prius invocare te an laudare te, et scire te prius 
-													sit an invocare te. sed quis te invocat nesciens te? aliud enim pro alio potest 
-													invocare nesciens. an potius invocaris, ut sciaris? quomodo autem invocabunt, 
-													in quem non crediderunt? aut quomodo credent sine praedicante? et laudabunt 
-													dominum qui requirunt eum. quaerentes enim inveniunt eum et invenientes 
-													laudabunt eum. quaeram te, domine, invocans te, et invocem te credens in te: 
-													praedicatus enim es nobis. invocat te, domine, fides mea, quam dedisti mihi, 
-													quam inspirasti mihi per humanitatem filii tui, per ministerium praedicatoris 
-													tui.
-												</div>
-											</td>
-										</tr>
-									</table>
-								</td>
-							</tr>
-						</table>
-					</td>
-				</tr>
-			</table>
-		</div>
-		<div id="divUpload" style="DISPLAY: none">
-			<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
-				<span fckLang="DlgLnkUpload">Upload</span><br />
-				<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
-				<br />
-				<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
-				<iframe name="UploadWindow" style="DISPLAY: none" src="../fckblank.html"></iframe> 
-			</form>
-		</div>
-		<div id="divLink" style="DISPLAY: none">
-			<table cellspacing="1" cellpadding="1" border="0" width="100%">
-				<tr>
-					<td>
-						<div>
-							<span fckLang="DlgLnkURL">URL</span><br />
-							<input id="txtLnkUrl" style="WIDTH: 100%" type="text" onblur="UpdatePreview();" />
-						</div>
-						<div id="divLnkBrowseServer" align="right">
-							<input type="button" value="Browse Server" fckLang="DlgBtnBrowseServer" onclick="LnkBrowseServer();" />
-						</div>
-						<div>
-							<span fckLang="DlgLnkTarget">Target</span><br />
-							<select id="cmbLnkTarget">
-								<option value="" fckLang="DlgGenNotSet" selected="selected">&lt;not set&gt;</option>
-								<option value="_blank" fckLang="DlgLnkTargetBlank">New Window (_blank)</option>
-								<option value="_top" fckLang="DlgLnkTargetTop">Topmost Window (_top)</option>
-								<option value="_self" fckLang="DlgLnkTargetSelf">Same Window (_self)</option>
-								<option value="_parent" fckLang="DlgLnkTargetParent">Parent Window (_parent)</option>
-							</select>
-						</div>
-					</td>
-				</tr>
-			</table>
-		</div>
-		<div id="divAdvanced" style="DISPLAY: none">
-			<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
-				<tr>
-					<td valign="top" width="50%">
-						<span fckLang="DlgGenId">Id</span><br />
-						<input id="txtAttId" style="WIDTH: 100%" type="text">
-					</td>
-					<td width="1">&nbsp;&nbsp;</td>
-					<td valign="top">
-						<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
-							<tr>
-								<td width="60%">
-									<span fckLang="DlgGenLangDir">Language Direction</span><br />
-									<select id="cmbAttLangDir" style="WIDTH: 100%">
-										<option value="" fckLang="DlgGenNotSet" selected>&lt;not set&gt;</option>
-										<option value="ltr" fckLang="DlgGenLangDirLtr">Left to Right (LTR)</option>
-										<option value="rtl" fckLang="DlgGenLangDirRtl">Right to Left (RTL)</option>
-									</select>
-								</td>
-								<td width="1%">&nbsp;&nbsp;</td>
-								<td nowrap>
-									<span fckLang="DlgGenLangCode">Language Code</span><br />
-									<input id="txtAttLangCode" style="WIDTH: 100%" type="text">&nbsp;
-								</td>
-							</tr>
-						</table>
-					</td>
-				</tr>
-				<tr>
-					<td colspan="3">&nbsp;</td>
-				</tr>
-				<tr>
-					<td colspan="3">
-						<span fckLang="DlgGenLongDescr">Long Description URL</span><br />
-						<input id="txtLongDesc" style="WIDTH: 100%" type="text">
-					</td>
-				</tr>
-				<tr>
-					<td colspan="3">&nbsp;</td>
-				</tr>
-				<tr>
-					<td valign="top">
-						<span fckLang="DlgGenClass">Stylesheet Classes</span><br />
-						<input id="txtAttClasses" style="WIDTH: 100%" type="text">
-					</td>
-					<td></td>
-					<td valign="top">&nbsp;<span fckLang="DlgGenTitle">Advisory Title</span><br />
-						<input id="txtAttTitle" style="WIDTH: 100%" type="text">
-					</td>
-				</tr>
-			</table>
-			<span fckLang="DlgGenStyle">Style</span><br />
-			<input id="txtAttStyle" style="WIDTH: 100%" type="text">
-		</div>
-	</body>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Image Properties</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script src="fck_image/fck_image.js" type="text/javascript"></script>
+	<link href="common/fck_dialog_common.css" rel="stylesheet" type="text/css" />
+</head>
+<body scroll="no" style="overflow: hidden">
+	<div id="divInfo">
+		<table cellspacing="1" cellpadding="1" border="0" width="100%" height="100%">
+			<tr>
+				<td>
+					<table cellspacing="0" cellpadding="0" width="100%" border="0">
+						<tr>
+							<td width="100%">
+								<span fcklang="DlgImgURL">URL</span>
+							</td>
+							<td id="tdBrowse" style="display: none" nowrap="nowrap" rowspan="2">
+								&nbsp;
+								<input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server"
+									fcklang="DlgBtnBrowseServer" />
+							</td>
+						</tr>
+						<tr>
+							<td valign="top">
+								<input id="txtUrl" style="width: 100%" type="text" onblur="UpdatePreview();" />
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td>
+					<span fcklang="DlgImgAlt">Short Description</span><br />
+					<input id="txtAlt" style="width: 100%" type="text" /><br />
+				</td>
+			</tr>
+			<tr height="100%">
+				<td valign="top">
+					<table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%">
+						<tr>
+							<td valign="top">
+								<br />
+								<table cellspacing="0" cellpadding="0" border="0">
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgWidth">Width</span>&nbsp;</td>
+										<td>
+											<input type="text" size="3" id="txtWidth" onkeyup="OnSizeChanged('Width',this.value);" /></td>
+										<td rowspan="2">
+											<div id="btnLockSizes" class="BtnLocked" onmouseover="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ) + ' BtnOver';"
+												onmouseout="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' );" title="Lock Sizes"
+												onclick="SwitchLock(this);">
+											</div>
+										</td>
+										<td rowspan="2">
+											<div id="btnResetSize" class="BtnReset" onmouseover="this.className='BtnReset BtnOver';"
+												onmouseout="this.className='BtnReset';" title="Reset Size" onclick="ResetSizes();">
+											</div>
+										</td>
+									</tr>
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgHeight">Height</span>&nbsp;</td>
+										<td>
+											<input type="text" size="3" id="txtHeight" onkeyup="OnSizeChanged('Height',this.value);" /></td>
+									</tr>
+								</table>
+								<br />
+								<table cellspacing="0" cellpadding="0" border="0">
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgBorder">Border</span>&nbsp;</td>
+										<td>
+											<input type="text" size="2" value="" id="txtBorder" onkeyup="UpdatePreview();" /></td>
+									</tr>
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgHSpace">HSpace</span>&nbsp;</td>
+										<td>
+											<input type="text" size="2" id="txtHSpace" onkeyup="UpdatePreview();" /></td>
+									</tr>
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgVSpace">VSpace</span>&nbsp;</td>
+										<td>
+											<input type="text" size="2" id="txtVSpace" onkeyup="UpdatePreview();" /></td>
+									</tr>
+									<tr>
+										<td nowrap="nowrap">
+											<span fcklang="DlgImgAlign">Align</span>&nbsp;</td>
+										<td>
+											<select id="cmbAlign" onchange="UpdatePreview();">
+												<option value="" selected="selected"></option>
+												<option fcklang="DlgImgAlignLeft" value="left">Left</option>
+												<option fcklang="DlgImgAlignAbsBottom" value="absBottom">Abs Bottom</option>
+												<option fcklang="DlgImgAlignAbsMiddle" value="absMiddle">Abs Middle</option>
+												<option fcklang="DlgImgAlignBaseline" value="baseline">Baseline</option>
+												<option fcklang="DlgImgAlignBottom" value="bottom">Bottom</option>
+												<option fcklang="DlgImgAlignMiddle" value="middle">Middle</option>
+												<option fcklang="DlgImgAlignRight" value="right">Right</option>
+												<option fcklang="DlgImgAlignTextTop" value="textTop">Text Top</option>
+												<option fcklang="DlgImgAlignTop" value="top">Top</option>
+											</select>
+										</td>
+									</tr>
+								</table>
+							</td>
+							<td>
+								&nbsp;&nbsp;&nbsp;</td>
+							<td width="100%" valign="top">
+								<table cellpadding="0" cellspacing="0" width="100%" style="table-layout: fixed">
+									<tr>
+										<td>
+											<span fcklang="DlgImgPreview">Preview</span></td>
+									</tr>
+									<tr>
+										<td valign="top">
+											<iframe class="ImagePreviewArea" src="fck_image/fck_image_preview.html" frameborder="0"
+												marginheight="0" marginwidth="0"></iframe>
+										</td>
+									</tr>
+								</table>
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+	</div>
+	<div id="divUpload" style="display: none">
+		<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data"
+			action="" onsubmit="return CheckUpload();">
+			<span fcklang="DlgLnkUpload">Upload</span><br />
+			<input id="txtUploadFile" style="width: 100%" type="file" size="40" name="NewFile" /><br />
+			<br />
+			<input id="btnUpload" type="submit" value="Send it to the Server" fcklang="DlgLnkBtnUpload" />
+			<iframe name="UploadWindow" style="display: none" src="../fckblank.html"></iframe>
+		</form>
+	</div>
+	<div id="divLink" style="display: none">
+		<table cellspacing="1" cellpadding="1" border="0" width="100%">
+			<tr>
+				<td>
+					<div>
+						<span fcklang="DlgLnkURL">URL</span><br />
+						<input id="txtLnkUrl" style="width: 100%" type="text" onblur="UpdatePreview();" />
+					</div>
+					<div id="divLnkBrowseServer" align="right">
+						<input type="button" value="Browse Server" fcklang="DlgBtnBrowseServer" onclick="LnkBrowseServer();" />
+					</div>
+					<div>
+						<span fcklang="DlgLnkTarget">Target</span><br />
+						<select id="cmbLnkTarget">
+							<option value="" fcklang="DlgGenNotSet" selected="selected">&lt;not set&gt;</option>
+							<option value="_blank" fcklang="DlgLnkTargetBlank">New Window (_blank)</option>
+							<option value="_top" fcklang="DlgLnkTargetTop">Topmost Window (_top)</option>
+							<option value="_self" fcklang="DlgLnkTargetSelf">Same Window (_self)</option>
+							<option value="_parent" fcklang="DlgLnkTargetParent">Parent Window (_parent)</option>
+						</select>
+					</div>
+				</td>
+			</tr>
+		</table>
+	</div>
+	<div id="divAdvanced" style="display: none">
+		<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+			<tr>
+				<td valign="top" width="50%">
+					<span fcklang="DlgGenId">Id</span><br />
+					<input id="txtAttId" style="width: 100%" type="text" />
+				</td>
+				<td width="1">
+					&nbsp;&nbsp;</td>
+				<td valign="top">
+					<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
+						<tr>
+							<td width="60%">
+								<span fcklang="DlgGenLangDir">Language Direction</span><br />
+								<select id="cmbAttLangDir" style="width: 100%">
+									<option value="" fcklang="DlgGenNotSet" selected="selected">&lt;not set&gt;</option>
+									<option value="ltr" fcklang="DlgGenLangDirLtr">Left to Right (LTR)</option>
+									<option value="rtl" fcklang="DlgGenLangDirRtl">Right to Left (RTL)</option>
+								</select>
+							</td>
+							<td width="1%">
+								&nbsp;&nbsp;</td>
+							<td nowrap="nowrap">
+								<span fcklang="DlgGenLangCode">Language Code</span><br />
+								<input id="txtAttLangCode" style="width: 100%" type="text" />&nbsp;
+							</td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					&nbsp;</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					<span fcklang="DlgGenLongDescr">Long Description URL</span><br />
+					<input id="txtLongDesc" style="width: 100%" type="text" />
+				</td>
+			</tr>
+			<tr>
+				<td colspan="3">
+					&nbsp;</td>
+			</tr>
+			<tr>
+				<td valign="top">
+					<span fcklang="DlgGenClass">Stylesheet Classes</span><br />
+					<input id="txtAttClasses" style="width: 100%" type="text" />
+				</td>
+				<td>
+				</td>
+				<td valign="top">
+					&nbsp;<span fcklang="DlgGenTitle">Advisory Title</span><br />
+					<input id="txtAttTitle" style="width: 100%" type="text" />
+				</td>
+			</tr>
+		</table>
+		<span fcklang="DlgGenStyle">Style</span><br />
+		<input id="txtAttStyle" style="width: 100%" type="text" />
+	</div>
+</body>
 </html>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_link/fck_link.js 1.4.1.src/fckeditor/editor/dialog/fck_link/fck_link.js
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_link/fck_link.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_link/fck_link.js	2006-06-17 16:25:27.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -15,6 +15,7 @@
  * 
  * File Authors:
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ * 		Dominik Pesch ?dom? (empty selection patch) (d.pesch@11com7.de)
  */
 
 var oEditor		= window.parent.InnerDialogLoaded() ;
@@ -43,6 +44,8 @@
 	ShowE('divTarget'	, ( tabCode == 'Target' ) ) ;
 	ShowE('divUpload'	, ( tabCode == 'Upload' ) ) ;
 	ShowE('divAttribs'	, ( tabCode == 'Advanced' ) ) ;
+
+	window.parent.SetAutoSize( true ) ;
 }
 
 //#### Regular Expressions library.
@@ -175,12 +178,12 @@
 	{
 		var sName = aAnchors[i].name ;
 		if ( sName && sName.length > 0 )
-			oEditor.FCKTools.AddSelectOption( document, GetE('cmbAnchorName'), sName, sName ) ;
+			oEditor.FCKTools.AddSelectOption( GetE('cmbAnchorName'), sName, sName ) ;
 	}
 
 	for ( var i = 0 ; i < aIds.length ; i++ )
 	{
-		oEditor.FCKTools.AddSelectOption( document, GetE('cmbAnchorId'), aIds[i], aIds[i] ) ;
+		oEditor.FCKTools.AddSelectOption( GetE('cmbAnchorId'), aIds[i], aIds[i] ) ;
 	}
 
 	ShowE( 'divSelAnchor'	, bHasAnchors ) ;
@@ -194,8 +197,10 @@
 	var sType = 'url' ;
 
 	// Get the actual Link href.
-	var sHRef = oLink.getAttribute('href',2) + '' ;
-
+	var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
+	if ( !sHRef || sHRef.length == 0 )
+		sHRef = oLink.getAttribute( 'href' , 2 ) + '' ;
+	
 	// TODO: Wait stable version and remove the following commented lines.
 //	if ( sHRef.startsWith( FCK.BaseUrl ) )
 //		sHRef = sHRef.remove( 0, FCK.BaseUrl.length ) ;
@@ -236,7 +241,7 @@
 			GetE('txtUrl').value = sUrl ;
 		}
 	}
-	else if ( sHRef.substr(0,1) == '#' && sHRef.length > 2 )	// It is an anchor link.
+	else if ( sHRef.substr(0,1) == '#' && sHRef.length > 1 )	// It is an anchor link.
 	{
 		sType = 'anchor' ;
 		GetE('cmbAnchorName').value = GetE('cmbAnchorId').value = sHRef.substr(1) ;
@@ -425,7 +430,7 @@
 //#### The OK button was hit.
 function Ok()
 {
-	var sUri ;
+	var sUri, sInnerHtml ;
 
 	switch ( GetE('cmbLinkType').value )
 	{
@@ -474,17 +479,50 @@
 			break ;
 	}
 
-	if ( oLink )	// Modifying an existent link.
-	{
-		oEditor.FCKUndo.SaveUndoStep() ;
-		oLink.href = sUri ;
-	}
-	else			// Creating a new link.
-	{
+	// No link selected, so try to create one.
+	if ( !oLink )
 		oLink = oEditor.FCK.CreateLink( sUri ) ;
-		if ( ! oLink )
-			return true ;
+	
+	if ( oLink )
+		sInnerHtml = oLink.innerHTML ;		// Save the innerHTML (IE changes it if it is like a URL).
+	else
+	{
+		// If no selection, use the uri as the link text (by dom, 2006-05-26)
+
+		sInnerHtml = sUri;
+
+		// try to built better text for empty link
+		switch (GetE('cmbLinkType').value)
+		{
+			// anchor: use old behavior --> return true
+			case 'anchor':
+				sInnerHtml = sInnerHtml.replace( /^#/, '' ) ;
+				break;
+
+			// url: try to get path
+			case 'url':
+				var oLinkPathRegEx = new RegExp("//?([^?\"']+)([?].*)?$");
+				var asLinkPath = oLinkPathRegEx.exec( sUri );
+				if (asLinkPath != null)
+					sInnerHtml = asLinkPath[1];  // use matched path
+				break;
+
+			// mailto: try to get email address
+			case 'email':
+				sInnerHtml = GetE('txtEMailAddress').value
+				break;
+		}
+
+		// built new anchor and add link text
+		oLink = oEditor.FCK.CreateElement( 'a' ) ;
 	}
+	
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	oLink.href = sUri ;
+	SetAttribute( oLink, '_fcksavedurl', sUri ) ;
+
+	oLink.innerHTML = sInnerHtml ;		// Set (or restore) the innerHTML
 
 	// Target
 	if( GetE('cmbTarget').value != 'popup' )
@@ -500,44 +538,29 @@
 	SetAttribute( oLink, 'accesskey', GetE('txtAttAccessKey').value ) ;
 	SetAttribute( oLink, 'tabindex'	, ( GetE('txtAttTabIndex').value > 0 ? GetE('txtAttTabIndex').value : null ) ) ;
 	SetAttribute( oLink, 'title'	, GetE('txtAttTitle').value ) ;
-	SetAttribute( oLink, 'class'	, GetE('txtAttClasses').value ) ;
 	SetAttribute( oLink, 'type'		, GetE('txtAttContentType').value ) ;
 	SetAttribute( oLink, 'charset'	, GetE('txtAttCharSet').value ) ;
 
 	if ( oEditor.FCKBrowserInfo.IsIE )
+	{
+		SetAttribute( oLink, 'className', GetE('txtAttClasses').value ) ;
 		oLink.style.cssText = GetE('txtAttStyle').value ;
+	}
 	else
+	{
+		SetAttribute( oLink, 'class', GetE('txtAttClasses').value ) ;
 		SetAttribute( oLink, 'style', GetE('txtAttStyle').value ) ;
+	}
 
+	// Select the link.
+	oEditor.FCKSelection.SelectNode(oLink);
+	
 	return true ;
 }
 
 function BrowseServer()
 {
-	// Set the browser window feature.
-	var iWidth	= FCKConfig.LinkBrowserWindowWidth ;
-	var iHeight	= FCKConfig.LinkBrowserWindowHeight ;
-
-	var iLeft = (FCKConfig.ScreenWidth  - iWidth) / 2 ;
-	var iTop  = (FCKConfig.ScreenHeight - iHeight) / 2 ;
-
-	var sOptions = "toolbar=no,status=no,resizable=yes,dependent=yes" ;
-	sOptions += ",width=" + iWidth ;
-	sOptions += ",height=" + iHeight ;
-	sOptions += ",left=" + iLeft ;
-	sOptions += ",top=" + iTop ;
-
-	if ( oEditor.FCKBrowserInfo.IsIE )
-	{
-		// The following change has been made otherwise IE will open the file 
-		// browser on a different server session (on some cases):
-		// http://support.microsoft.com/default.aspx?scid=kb;en-us;831678
-		// by Simone Chiaretta.
-		var oWindow = oEditor.window.open( FCKConfig.LinkBrowserURL, "FCKBrowseWindow", sOptions ) ;
-		oWindow.opener = window ;
-    }
-    else
-		window.open( FCKConfig.LinkBrowserURL, "FCKBrowseWindow", sOptions ) ;
+	OpenFileBrowser( FCKConfig.LinkBrowserURL, FCKConfig.LinkBrowserWindowWidth, FCKConfig.LinkBrowserWindowHeight ) ;
 }
 
 function SetUrl( url )
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_link.html 1.4.1.src/fckeditor/editor/dialog/fck_link.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_link.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_link.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,6 +1,6 @@
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_listprop.html 1.4.1.src/fckeditor/editor/dialog/fck_listprop.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_listprop.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_listprop.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_paste.html 1.4.1.src/fckeditor/editor/dialog/fck_paste.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_paste.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_paste.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -9,6 +9,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_paste.html
  * 	This dialog is shown when, for some reason (usually security settings), 
  * 	the user is not able to paste data from the clipboard to the editor using 
@@ -29,8 +31,6 @@
 	// First of all, translate the dialog box texts
 	oEditor.FCKLanguageManager.TranslatePage(document) ;
 	
-	window.parent.SetOkButton( true ) ;	
-
 	if ( window.parent.dialogArguments.CustomValue == 'Word' )
 	{
 		var oFrame = document.getElementById('frmData')
@@ -46,6 +46,9 @@
 		document.getElementById('txtData').style.display = '' ;
 		document.getElementById('oWordCommands').style.display = 'none' ;
 	}
+
+	window.parent.SetOkButton( true ) ;	
+	window.parent.SetAutoSize( true ) ;	
 }
 
 function Ok()
@@ -144,7 +147,7 @@
 	// Remove XML elements and declarations
 	html = html.replace(/<\\?\?xml[^>]*>/gi, "") ;
 	
-	// Remove Tags with XML namespace declarations: <o:p></o:p>
+	// Remove Tags with XML namespace declarations: <o:p><\/o:p>
 	html = html.replace(/<\/?\w+:[^>]*>/gi, "") ;
 	
 	html = html.replace( /<H\d>\s*<\/H\d>/gi, '' ) ;
@@ -156,7 +159,7 @@
 	html = html.replace( /<H5([^>]*)>/gi, '<div$1><b><font size="2">' ) ;
 	html = html.replace( /<H6([^>]*)>/gi, '<div$1><b><font size="1">' ) ;
 
-	html = html.replace( /<\/H\d>/gi, '</font></b></div>' ) ;
+	html = html.replace( /<\/H\d>/gi, '<\/font><\/b><\/div>' ) ;
 	
 	html = html.replace( /<(U|I|STRIKE)>&nbsp;<\/\1>/g, '&nbsp;' ) ;
 
@@ -167,7 +170,7 @@
 
 	// Transform <P> to <DIV>
 	var re = new RegExp("(<P)([^>]*>.*?)(<\/P>)","gi") ;	// Different because of a IE 5.0 error
-	html = html.replace( re, "<div$2</div>" ) ;
+	html = html.replace( re, "<div$2<\/div>" ) ;
 
 	return html ;
 }
@@ -187,7 +190,7 @@
 			<tr>
 				<td valign="top" height="100%" style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid">
 					<textarea id="txtData" style="BORDER-RIGHT: #000000 1px; BORDER-TOP: #000000 1px; DISPLAY: none; BORDER-LEFT: #000000 1px; WIDTH: 99%; BORDER-BOTTOM: #000000 1px; HEIGHT: 98%"></textarea>
-					<iframe id="frmData" src="../fckblank.html" height="98%" width="99%" frameborder="no" style="BORDER-RIGHT: #000000 1px; BORDER-TOP: #000000 1px; DISPLAY: none; BORDER-LEFT: #000000 1px; BORDER-BOTTOM: #000000 1px; BACKGROUND-COLOR: #ffffff">
+					<iframe id="frmData" src="../fckblank.html" height="98%" width="99%" frameborder="0" style="BORDER-RIGHT: #000000 1px; BORDER-TOP: #000000 1px; DISPLAY: none; BORDER-LEFT: #000000 1px; BORDER-BOTTOM: #000000 1px; BACKGROUND-COLOR: #ffffff">
 					</iframe>
 				</td>
 			</tr>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_radiobutton.html 1.4.1.src/fckeditor/editor/dialog/fck_radiobutton.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_radiobutton.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_radiobutton.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -9,6 +9,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_radiobutton.html
  * 	Radio Button dialog window.
  * 
@@ -38,7 +40,7 @@
 	if ( oActiveEl && oActiveEl.tagName.toUpperCase() == 'INPUT' && oActiveEl.type == 'radio' )
 	{
 		GetE('txtName').value		= oActiveEl.name ;
-		GetE('txtValue').value		= oActiveEl.value ;
+		GetE('txtValue').value		= oEditor.FCKBrowserInfo.IsIE ? oActiveEl.value : GetAttribute( oActiveEl, 'value' ) ;
 		GetE('txtSelected').checked	= oActiveEl.checked ;
 	}
 	else
@@ -56,14 +58,17 @@
 		oActiveEl = oEditor.FCK.InsertElementAndGetIt( oActiveEl ) ;
 	}
 
-	oActiveEl.name = GetE('txtName').value ;
-	SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
+	if ( GetE('txtName').value.length > 0 )
+		oActiveEl.name = GetE('txtName').value ;
+		
+	if ( oEditor.FCKBrowserInfo.IsIE )
+		oActiveEl.value = GetE('txtValue').value ;
+	else
+		SetAttribute( oActiveEl, 'value', GetE('txtValue').value ) ;
 
-	if ( GetE('txtSelected').checked )
-	{
-		SetAttribute( oActiveEl, 'checked', 'checked' ) ;
-		oActiveEl.checked = GetE('txtSelected').checked ;
-	}
+	var bIsChecked = GetE('txtSelected').checked ;
+	SetAttribute( oActiveEl, 'checked', bIsChecked ? 'checked' : null ) ;	// For Firefox
+	oActiveEl.checked = bIsChecked ;
 
 	return true ;
 }
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_replace.html 1.4.1.src/fckeditor/editor/dialog/fck_replace.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_replace.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_replace.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -9,6 +9,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_replace.html
  * 	"Replace" dialog box window.
  * 
@@ -18,8 +20,8 @@
 -->
 <html>
 	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-		<meta content="noindex, nofollow" name="robots">
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+		<meta content="noindex, nofollow" name="robots" />
 		<script type="text/javascript">
 
 var oEditor = window.parent.InnerDialogLoaded() ;
@@ -84,13 +86,15 @@
 function Replace()
 {
 	var oRegex = new RegExp( GetRegexExpr(), GetCase() ) ;
-	ReplaceTextNodes( oEditor.FCK.EditorDocument.body, oRegex, document.getElementById('txtReplace').value, false, false ) ;
+	if ( !ReplaceTextNodes( oEditor.FCK.EditorDocument.body, oRegex, document.getElementById('txtReplace').value, false, false ) )
+		alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
 }
 
 function ReplaceAll()
 {
 	var oRegex = new RegExp( GetRegexExpr(), GetCase() + 'g' ) ;
-	ReplaceTextNodes( oEditor.FCK.EditorDocument.body, oRegex, document.getElementById('txtReplace').value, true, false ) ;
+	if ( !ReplaceTextNodes( oEditor.FCK.EditorDocument.body, oRegex, document.getElementById('txtReplace').value, true, false ) )
+		alert( oEditor.FCKLang.DlgFindNotFoundMsg ) ;
 	window.parent.Cancel() ;
 }
 		</script>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_select/fck_select.js 1.4.1.src/fckeditor/editor/dialog/fck_select/fck_select.js
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_select/fck_select.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_select/fck_select.js	2006-06-17 16:25:27.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -104,8 +104,8 @@
 	if ( iFinalIndex < 0 )
 		iFinalIndex = 0 ;
 
-	if ( iFinalIndex > ( combo.options.lenght - 1 ) )
-		iFinalIndex = combo.options.lenght - 1 ;
+	if ( iFinalIndex > ( combo.options.length - 1 ) )
+		iFinalIndex = combo.options.length - 1 ;
 
 	if ( iActualIndex == iFinalIndex )
 		return ;
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_select.html 1.4.1.src/fckeditor/editor/dialog/fck_select.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_select.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_select.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -9,6 +9,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_select.html
  * 	Select dialog window.
  * 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_smiley.html 1.4.1.src/fckeditor/editor/dialog/fck_smiley.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_smiley.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_smiley.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,6 +1,6 @@
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -39,6 +39,7 @@
 {
 	var oImg = oEditor.FCK.CreateElement( 'IMG' ) ;
 	oImg.src = url ;
+	oImg.setAttribute( '_fcksavedurl', url ) ;
 
 	window.parent.Cancel() ;
 }
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_source.html 1.4.1.src/fckeditor/editor/dialog/fck_source.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_source.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_source.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,6 +1,6 @@
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -31,7 +31,9 @@
 
 window.onload = function()
 {
-	document.getElementById('txtSource').value = ( FCKConfig.EnableXHTML && FCKConfig.EnableSourceXHTML ? FCK.GetXHTML( FCKConfig.FormatSource ) : FCK.GetHTML( FCKConfig.FormatSource ) ) ;
+	// EnableXHTML and EnableSourceXHTML has been deprecated
+//	document.getElementById('txtSource').value = ( FCKConfig.EnableXHTML && FCKConfig.EnableSourceXHTML ? FCK.GetXHTML( FCKConfig.FormatSource ) : FCK.GetHTML( FCKConfig.FormatSource ) ) ;
+	document.getElementById('txtSource').value = FCK.GetXHTML( FCKConfig.FormatSource ) ;
 
 	// Activate the "OK" button.
 	window.parent.SetOkButton( true ) ;
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_specialchar.html 1.4.1.src/fckeditor/editor/dialog/fck_specialchar.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_specialchar.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_specialchar.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,6 +1,6 @@
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -22,8 +22,11 @@
 		<meta name="robots" content="noindex, nofollow">
 		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 		<style type="text/css">
-				.HandIE { cursor: hand ; }
-				.HandMozilla { cursor: pointer ; }
+				.Hand 
+				{ 
+					cursor: pointer ;
+					cursor: hand ; 
+				}
 				.Sample { font-size: 24px; }
 		</style>
 		<script type="text/javascript">
@@ -41,13 +44,13 @@
 function over(td)
 {
 	oSample.innerHTML = td.innerHTML ;
-	td.className = 'LightBackground HandIE HandMozilla' ;
+	td.className = 'LightBackground SpecialCharsOver Hand' ;
 }
 
 function out(td)
 {
 	oSample.innerHTML = "&nbsp;" ;
-	td.className = 'DarkBackground HandIE HandMozilla' ;
+	td.className = 'DarkBackground SpecialCharsOut Hand' ;
 }
 
 function setDefaults()
@@ -67,7 +70,7 @@
 				<td width="100%">
 					<table cellpadding="1" cellspacing="1" align="center" border="0" width="100%" height="100%">
 						<script type="text/javascript">
-var aChars = ["!","&quot;","#","$","%","&amp;","\\'","(",")","*","+","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","&lt;","=","&gt;","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","&euro;","&lsquo;","&rsquo;","&rsquo;","&ldquo;","&rdquo;","&ndash;","&mdash;","&iexcl;","&cent;","&pound;","&curren;","&yen;","&brvbar;","&sect;","&uml;","&copy;","&ordf;","&laquo;","&not;","&reg;","&macr;","&deg;","&plusmn;","&sup2;","&sup3;","&acute;","&micro;","&para;","&middot;","&cedil;","&sup1;","&ordm;","&raquo;","&frac14;","&frac12;","&frac34;","&iquest;","&Agrave;","&Aacute;","&Acirc;","&Atilde;","&Auml;","&Aring;","&AElig;","&Ccedil;","&Egrave;","&Eacute;","&Ecirc;","&Euml;","&Igrave;","&Iacute;","&Icirc;","&Iuml;","&ETH;","&Ntilde;","&Ograve;","&Oacute;","&Ocirc;","&Otilde;","&Ouml;","&times;","&Oslash;","&Ugrave;","&Uacute;","&Ucirc;","&Uuml;","&Yacute;","&THORN;","&szlig;","&agrave;","&aacute;","&acirc;","&atilde;","&auml;","&aring;","&aelig;","&ccedil;","&egrave;","&eacute;","&ecirc;","&euml;","&igrave;","&iacute;","&icirc;","&iuml;","&eth;","&ntilde;","&ograve;","&oacute;","&ocirc;","&otilde;","&ouml;","&divide;","&oslash;","&ugrave;","&uacute;","&ucirc;","&uuml;","&uuml;","&yacute;","&thorn;","&yuml;"] ;
+var aChars = ["!","&quot;","#","$","%","&amp;","\\'","(",")","*","+","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","&lt;","=","&gt;","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","&euro;","&lsquo;","&rsquo;","&rsquo;","&ldquo;","&rdquo;","&ndash;","&mdash;","&iexcl;","&cent;","&pound;","&curren;","&yen;","&brvbar;","&sect;","&uml;","&copy;","&ordf;","&laquo;","&not;","&reg;","&macr;","&deg;","&plusmn;","&sup2;","&sup3;","&acute;","&micro;","&para;","&middot;","&cedil;","&sup1;","&ordm;","&raquo;","&frac14;","&frac12;","&frac34;","&iquest;","&Agrave;","&Aacute;","&Acirc;","&Atilde;","&Auml;","&Aring;","&AElig;","&Ccedil;","&Egrave;","&Eacute;","&Ecirc;","&Euml;","&Igrave;","&Iacute;","&Icirc;","&Iuml;","&ETH;","&Ntilde;","&Ograve;","&Oacute;","&Ocirc;","&Otilde;","&Ouml;","&times;","&Oslash;","&Ugrave;","&Uacute;","&Ucirc;","&Uuml;","&Yacute;","&THORN;","&szlig;","&agrave;","&aacute;","&acirc;","&atilde;","&auml;","&aring;","&aelig;","&ccedil;","&egrave;","&eacute;","&ecirc;","&euml;","&igrave;","&iacute;","&icirc;","&iuml;","&eth;","&ntilde;","&ograve;","&oacute;","&ocirc;","&otilde;","&ouml;","&divide;","&oslash;","&ugrave;","&uacute;","&ucirc;","&uuml;","&uuml;","&yacute;","&thorn;","&yuml;","&OElig;","&oelig;","&sbquo;","&#8219;","&bdquo;","&hellip;","&trade;","&#9658;","&bull;","&rarr;","&rArr;","&hArr;","&diams;","&asymp;"] ;
 
 var cols = 20 ;
 
@@ -79,11 +82,11 @@
 	{
 		if (aChars[i])
 		{
-			document.write('<TD width="1%" class="DarkBackground HandIE HandMozilla" align="center" onclick="insertChar(\'' + aChars[i].replace(/&/g, "&amp;") + '\')" onmouseover="over(this)" onmouseout="out(this)">') ;
+			document.write('<TD width="1%" class="DarkBackground SpecialCharsOut Hand" align="center" onclick="insertChar(\'' + aChars[i].replace(/&/g, "&amp;") + '\')" onmouseover="over(this)" onmouseout="out(this)">') ;
 			document.write(aChars[i]) ;
 		}
 		else
-			document.write("<TD class='DarkBackground'>&nbsp;") ;
+			document.write("<TD class='DarkBackground SpecialCharsOut'>&nbsp;") ;
 		document.write("<\/TD>") ;
 		i++ ;
 	}
@@ -96,7 +99,7 @@
 				<td valign="top">
 					<table width="40" cellpadding="0" cellspacing="0" border="0">
 						<tr>
-							<td id="SampleTD" width="40" height="40" align="center" class="DarkBackground Sample">&nbsp;</td>
+							<td id="SampleTD" width="40" height="40" align="center" class="DarkBackground SpecialCharsOut Sample">&nbsp;</td>
 						</tr>
 					</table>
 				</td>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_spellerpages.html 1.4.1.src/fckeditor/editor/dialog/fck_spellerpages.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_spellerpages.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_spellerpages.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -9,6 +9,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_spellerpages.html
  * 	Spell Check dialog window.
  * 
@@ -28,7 +30,7 @@
 
 window.onload = function()
 {
-	document.getElementById('txtHtml').value = oEditor.FCK.GetHTML() ;
+	document.getElementById('txtHtml').value = oEditor.FCK.EditorDocument.body.innerHTML ;
 
 	var oSpeller = new spellChecker( document.getElementById('txtHtml') ) ;
 	oSpeller.OnFinished = oSpeller_OnFinished ;
@@ -52,6 +54,6 @@
 	</head>
 	<body style="OVERFLOW: hidden" scroll="no" style="padding:0px;">
 		<input type="hidden" id="txtHtml" value="">
-		<iframe id="frmSpell" src="../fckblank.html" name="spellchecker" width="100%" height="100%" frameborder="no"></iframe>
+		<iframe id="frmSpell" src="../fckblank.html" name="spellchecker" width="100%" height="100%" frameborder="0"></iframe>
 	</body>
 </html>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_tablecell.html 1.4.1.src/fckeditor/editor/dialog/fck_tablecell.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_tablecell.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_tablecell.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,6 +1,7 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -8,20 +9,21 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_tablecell.html
  * 	Cell properties dialog window.
  * 
  * File Authors:
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
 -->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<html>
-	<head>
-		<title>Table Cell Properties</title>
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-		<meta name="robots" content="noindex, nofollow" />
-		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
-		<script type="text/javascript">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>Table Cell Properties</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+	<script type="text/javascript">
 
 var oEditor = window.parent.InnerDialogLoaded() ;
 
@@ -115,101 +117,135 @@
 	oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', oEditor.FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, wich == 'Back' ? SelectBackColor : SelectBorderColor, window ) ;
 }
 
-		</script>
-	</head>
-	<body scroll="no" style="OVERFLOW: hidden">
-		<table cellSpacing="0" cellPadding="0" width="100%" border="0" height="100%">
-			<tr>
-				<td>
-					<table cellSpacing="1" cellPadding="1" width="100%" border="0">
-						<tr>
-							<td>
-								<table cellSpacing="0" cellPadding="0" border="0">
-									<tr>
-										<td nowrap><span fckLang="DlgCellWidth">Width</span>:</td>
-										<td>&nbsp;<input onkeypress="return IsDigit();" id="txtWidth" type="text" maxLength="4"
-												size="3" name="txtWidth">&nbsp;<select id="selWidthType" name="selWidthType">
-												<option fckLang="DlgCellWidthPx" value="pixels" selected>pixels</option>
-												<option fckLang="DlgCellWidthPc" value="percent">percent</option>
-											</select></td>
-									</tr>
-									<tr>
-										<td nowrap><span fckLang="DlgCellHeight">Height</span>:</td>
-										<td>&nbsp;<INPUT id="txtHeight" type="text" maxLength="4" size="3" name="txtHeight" onkeypress="return IsDigit();">&nbsp;<span fckLang="DlgCellWidthPx">pixels</span></td>
-									</tr>
-									<tr>
-										<td>&nbsp;</td>
-										<td>&nbsp;</td>
-									</tr>
-									<tr>
-										<td nowrap><span fckLang="DlgCellWordWrap">Word Wrap</span>:</td>
-										<td>&nbsp;<select id="selWordWrap" name="selAlignment">
-												<option fckLang="DlgCellWordWrapNotSet" value="" selected>&lt;Not set&gt;</option>
-												<option fckLang="DlgCellWordWrapYes" value="true">Yes</option>
-												<option fckLang="DlgCellWordWrapNo" value="false">No</option>
-											</select></td>
-									</tr>
-									<tr>
-										<td>&nbsp;</td>
-										<td>&nbsp;</td>
-									</tr>
-									<tr>
-										<td nowrap><span fckLang="DlgCellHorAlign">Horizontal Alignment</span>:</td>
-										<td>&nbsp;<select id="selHAlign" name="selAlignment">
-												<option fckLang="DlgCellHorAlignNotSet" value="" selected>&lt;Not set&gt;</option>
-												<option fckLang="DlgCellHorAlignLeft" value="left">Left</option>
-												<option fckLang="DlgCellHorAlignCenter" value="center">Center</option>
-												<option fckLang="DlgCellHorAlignRight" value="right">Right</option>
-											</select></td>
-									</tr>
-									<tr>
-										<td nowrap><span fckLang="DlgCellVerAlign">Vertival Alignement</span>:</td>
-										<td>&nbsp;<select id="selVAlign" name="selAlignment">
-												<option fckLang="DlgCellVerAlignNotSet" value="" selected>&lt;Not set&gt;</option>
-												<option fckLang="DlgCellVerAlignTop" value="top">Top</option>
-												<option fckLang="DlgCellVerAlignMiddle" value="middle">Middle</option>
-												<option fckLang="DlgCellVerAlignBottom" value="bottom">Bottom</option>
-												<option fckLang="DlgCellVerAlignBaseline" value="baseline">Baseline</option>
+	</script>
+</head>
+<body scroll="no" style="overflow: hidden">
+	<table cellspacing="0" cellpadding="0" width="100%" border="0" height="100%">
+		<tr>
+			<td>
+				<table cellspacing="1" cellpadding="1" width="100%" border="0">
+					<tr>
+						<td>
+							<table cellspacing="0" cellpadding="0" border="0">
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellWidth">Width</span>:</td>
+									<td>
+										&nbsp;<input onkeypress="return IsDigit();" id="txtWidth" type="text" maxlength="4"
+											size="3" name="txtWidth" />&nbsp;<select id="selWidthType" name="selWidthType">
+												<option fcklang="DlgCellWidthPx" value="pixels" selected="selected">pixels</option>
+												<option fcklang="DlgCellWidthPc" value="percent">percent</option>
 											</select></td>
-									</tr>
-								</table>
-							</td>
-							<td>&nbsp;&nbsp;&nbsp;</td>
-							<td align="right">
-								<table cellSpacing="0" cellPadding="0" border="0">
-									<tr>
-										<td nowrap><span fckLang="DlgCellRowSpan">Rows Span</span>:</td>
-										<td>&nbsp; <input onkeypress="return IsDigit();" id="txtRowSpan" type="text" maxLength="3"
-												size="2" name="txtRows"></td>
-										<td></td>
-									</tr>
-									<tr>
-										<td nowrap><span fckLang="DlgCellCollSpan">Columns Span</span>:</td>
-										<td>&nbsp; <input onkeypress="return IsDigit();" id="txtCollSpan" type="text" maxLength="2"
-												size="2" name="txtColumns"></td>
-										<td></td>
-									</tr>
-									<tr>
-										<td>&nbsp;</td>
-										<td>&nbsp;</td>
-										<td>&nbsp;</td>
-									</tr>
-									<tr>
-										<td nowrap><span fckLang="DlgCellBackColor">Background Color</span>:</td>
-										<td>&nbsp;<input id="txtBackColor" type="text" size="8" name="txtCellSpacing"></td>
-										<td>&nbsp; <input type="button" fckLang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Back' )"></td>
-									</tr>
-									<tr>
-										<td nowrap><span fckLang="DlgCellBorderColor">Border Color</span>:</td>
-										<td>&nbsp;<input id="txtBorderColor" type="text" size="8" name="txtCellPadding"></td>
-										<td>&nbsp; <input type="button" fckLang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Border' )"></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-		</table>
-	</body>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellHeight">Height</span>:</td>
+									<td>
+										&nbsp;<input id="txtHeight" type="text" maxlength="4" size="3" name="txtHeight" onkeypress="return IsDigit();" />&nbsp;<span
+											fcklang="DlgCellWidthPx">pixels</span></td>
+								</tr>
+								<tr>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellWordWrap">Word Wrap</span>:</td>
+									<td>
+										&nbsp;<select id="selWordWrap" name="selAlignment">
+											<option fcklang="DlgCellWordWrapYes" value="true" selected="selected">Yes</option>
+											<option fcklang="DlgCellWordWrapNo" value="false">No</option>
+										</select></td>
+								</tr>
+								<tr>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellHorAlign">Horizontal Alignment</span>:</td>
+									<td>
+										&nbsp;<select id="selHAlign" name="selAlignment">
+											<option fcklang="DlgCellHorAlignNotSet" value="" selected>&lt;Not set&gt;</option>
+											<option fcklang="DlgCellHorAlignLeft" value="left">Left</option>
+											<option fcklang="DlgCellHorAlignCenter" value="center">Center</option>
+											<option fcklang="DlgCellHorAlignRight" value="right">Right</option>
+										</select></td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellVerAlign">Vertical Alignment</span>:</td>
+									<td>
+										&nbsp;<select id="selVAlign" name="selAlignment">
+											<option fcklang="DlgCellVerAlignNotSet" value="" selected>&lt;Not set&gt;</option>
+											<option fcklang="DlgCellVerAlignTop" value="top">Top</option>
+											<option fcklang="DlgCellVerAlignMiddle" value="middle">Middle</option>
+											<option fcklang="DlgCellVerAlignBottom" value="bottom">Bottom</option>
+											<option fcklang="DlgCellVerAlignBaseline" value="baseline">Baseline</option>
+										</select></td>
+								</tr>
+							</table>
+						</td>
+						<td>
+							&nbsp;&nbsp;&nbsp;</td>
+						<td align="right">
+							<table cellspacing="0" cellpadding="0" border="0">
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellRowSpan">Rows Span</span>:</td>
+									<td>
+										&nbsp;
+										<input onkeypress="return IsDigit();" id="txtRowSpan" type="text" maxlength="3" size="2"
+											name="txtRows"></td>
+									<td>
+									</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellCollSpan">Columns Span</span>:</td>
+									<td>
+										&nbsp;
+										<input onkeypress="return IsDigit();" id="txtCollSpan" type="text" maxlength="2"
+											size="2" name="txtColumns"></td>
+									<td>
+									</td>
+								</tr>
+								<tr>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+									<td>
+										&nbsp;</td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellBackColor">Background Color</span>:</td>
+									<td>
+										&nbsp;<input id="txtBackColor" type="text" size="8" name="txtCellSpacing"></td>
+									<td>
+										&nbsp;
+										<input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Back' )"></td>
+								</tr>
+								<tr>
+									<td nowrap="nowrap">
+										<span fcklang="DlgCellBorderColor">Border Color</span>:</td>
+									<td>
+										&nbsp;<input id="txtBorderColor" type="text" size="8" name="txtCellPadding" /></td>
+									<td>
+										&nbsp;
+										<input type="button" fcklang="DlgCellBtnSelect" value="Select..." onclick="SelectColor( 'Border' )" /></td>
+								</tr>
+							</table>
+						</td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</body>
 </html>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_table.html 1.4.1.src/fckeditor/editor/dialog/fck_table.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_table.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_table.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,6 +1,6 @@
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -33,7 +33,7 @@
 var table ;
 var e = oEditor.FCKSelection.GetSelectedElement() ;
 
-if ( ! e && document.location.search.substr(1) == 'Parent' )
+if ( ( !e && document.location.search.substr(1) == 'Parent' ) || ( e && e.tagName != 'TABLE' ) )
 	e = oEditor.FCKSelection.MoveToAncestorNode( 'TABLE' ) ;
 
 if ( e && e.tagName == "TABLE" )
@@ -75,6 +75,7 @@
 		document.getElementById('selAlignment').value	= table.align ;
 		document.getElementById('txtCellPadding').value	= table.cellPadding	;
 		document.getElementById('txtCellSpacing').value	= table.cellSpacing	;
+		document.getElementById('txtSummary').value     = table.summary;
 //		document.getElementById('cmbFontStyle').value	= table.className ;
 
 		if (table.caption) document.getElementById('txtCaption').value = table.caption.innerHTML ;
@@ -94,7 +95,7 @@
 	
 	if ( ! bExists )
 	{
-		table = document.createElement( "TABLE" ) ;
+		table = oEditor.FCK.EditorDocument.createElement( "TABLE" ) ;
 	}
 
 	// Removes the Width and Height styles
@@ -107,6 +108,7 @@
 	table.align			= document.getElementById('selAlignment').value ;
 	table.cellPadding	= document.getElementById('txtCellPadding').value ;
 	table.cellSpacing	= document.getElementById('txtCellSpacing').value ;
+	table.summary       = document.getElementById('txtSummary').value ;
 //	table.className		= cmbFontStyle.value ;
 	
 	if ( document.getElementById('txtCaption').value != '')
@@ -263,9 +265,15 @@
 						<tr>
 							<td nowrap><span fckLang="DlgTableCaption">Caption</span>:</td>
 							<td>&nbsp;</td>
-							<td width="100%">&nbsp;
+							<td width="100%" nowrap>&nbsp;
 								<input id="txtCaption" type="text" style="WIDTH: 100%"></td>
 						</tr>
+						<tr>
+							<td nowrap><span fckLang="DlgTableSummary">Summary</span>:</td>
+							<td>&nbsp;</td>
+							<td width="100%" nowrap>&nbsp;
+								<input id="txtSummary" type="text" style="WIDTH: 100%"></td>
+						</tr>
 					</table>
 				</td>
 			</tr>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_template/fck_templateitem.htc 1.4.1.src/fckeditor/editor/dialog/fck_template/fck_templateitem.htc
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_template/fck_templateitem.htc	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_template/fck_templateitem.htc	1969-12-31 18:00:00.000000000 -0600
@@ -1,26 +0,0 @@
-<public:component lightweight="true">
-
-<public:attach event="onmouseover" onevent="OnMouseOver()" />
-<public:attach event="onmouseout" onevent="OnMouseOut()" />
-<public:attach event="onclick" onevent="OnClick()" />
-
-<script language="javascript">
-
-function OnMouseOver()
-{
-	this.className += ' PopupSelectionBox' ;
-}
-
-function OnMouseOut()
-{
-	this.className = this.className.replace( /\s*PopupSelectionBox\s*/, '' ) ;
-}
-
-function OnClick()
-{
-	SelectTemplate( this.TplIndex ) ;
-}
-
-</script>
-
-</public:component>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_template/fck_template_moz-bindings.xml 1.4.1.src/fckeditor/editor/dialog/fck_template/fck_template_moz-bindings.xml
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_template/fck_template_moz-bindings.xml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_template/fck_template_moz-bindings.xml	1969-12-31 18:00:00.000000000 -0600
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?> 
-<bindings xmlns="http://www.mozilla.org/xbl">
-	<binding id="templateitem">
-		<handlers>
-			<handler event="mouseover">
-				this.className += ' PopupSelectionBox' ;
-			</handler>
-			<handler event="mouseout">
-				this.className = this.className.replace( /\s*PopupSelectionBox\s*/, '' ) ;
-			</handler>
-			<handler event="click">
-				SelectTemplate( this.TplIndex ) ;
-			</handler>
-		</handlers>
-	</binding>
-</bindings>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_template.html 1.4.1.src/fckeditor/editor/dialog/fck_template.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_template.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_template.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,6 +1,6 @@
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_textarea.html 1.4.1.src/fckeditor/editor/dialog/fck_textarea.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_textarea.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_textarea.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -9,6 +9,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_textarea.html
  * 	Text Area dialog window.
  * 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_textfield.html 1.4.1.src/fckeditor/editor/dialog/fck_textfield.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_textfield.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_textfield.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -9,6 +9,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_textfield.html
  * 	Text field dialog window.
  * 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_universalkey/data.js 1.4.1.src/fckeditor/editor/dialog/fck_universalkey/data.js
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_universalkey/data.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_universalkey/data.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -8,6 +8,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: data.js
  * 	Scripts for the fck_universalkey.html page.
  * 	Definition des 104 caracteres en hexa unicode.
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_universalkey/diacritic.js 1.4.1.src/fckeditor/editor/dialog/fck_universalkey/diacritic.js
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_universalkey/diacritic.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_universalkey/diacritic.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -8,6 +8,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: diacritic.js
  * 	Scripts for the fck_universalkey.html page.
  * 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_universalkey/dialogue.js 1.4.1.src/fckeditor/editor/dialog/fck_universalkey/dialogue.js
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_universalkey/dialogue.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_universalkey/dialogue.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -8,6 +8,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: dialogue.js
  * 	Scripts for the fck_universalkey.html page.
  * 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_universalkey/fck_universalkey.css 1.4.1.src/fckeditor/editor/dialog/fck_universalkey/fck_universalkey.css
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_universalkey/fck_universalkey.css	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_universalkey/fck_universalkey.css	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -8,6 +8,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_universalkey.css
  * 	CSS styles for the Universal Keyboard.
  * 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_universalkey/multihexa.js 1.4.1.src/fckeditor/editor/dialog/fck_universalkey/multihexa.js
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_universalkey/multihexa.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_universalkey/multihexa.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_universalkey.html 1.4.1.src/fckeditor/editor/dialog/fck_universalkey.html
--- 1.4.0sr5-1.src/fckeditor/editor/dialog/fck_universalkey.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/dialog/fck_universalkey.html	2006-06-17 16:25:27.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -9,6 +9,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_universalkey.html
  * 	Unicode Keyboard dialog window.
  * 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/fckblank.html 1.4.1.src/fckeditor/editor/fckblank.html
--- 1.4.0sr5-1.src/fckeditor/editor/fckblank.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/fckblank.html	2006-06-17 16:25:28.000000000 -0500
@@ -1,3 +1,4 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html>
 <head><title></title></head>
 <body></body>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/fckdebug.html 1.4.1.src/fckeditor/editor/fckdebug.html
--- 1.4.0sr5-1.src/fckeditor/editor/fckdebug.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/fckdebug.html	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,7 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -17,12 +18,11 @@
  * File Authors:
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
 -->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-	<head>
-		<meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
-		<title>FCKeditor Debug Window</title>
-		<script type="text/javascript">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor Debug Window</title>
+	<meta name="robots" content="noindex, nofollow" />
+	<script type="text/javascript">
 
 var oWindow ;
 var oDiv ;
@@ -30,9 +30,9 @@
 if ( !window.FCKMessages )
 	window.FCKMessages = new Array() ;
 
-function Initialize()
+window.onload = function()
 {
-	oWindow = window.frames[ 'eOutput' ]
+	oWindow = document.getElementById('xOutput').contentWindow ;
 	oWindow.document.open() ;
 	oWindow.document.write( '<div id="divMsg"><\/div>' ) ;
 	oWindow.document.close() ;
@@ -84,25 +84,28 @@
 {
 	oDiv.innerHTML = '' ;
 }
-		</script>
-	</head>
-	<body onload="Initialize();" bottomMargin="10" leftMargin="10" topMargin="10" rightMargin="10">
-		<TABLE height="100%" cellSpacing="5" cellPadding="0" width="100%" border="0">
-			<TR>
-				<TD>
-					<TABLE cellSpacing="0" cellPadding="0" width="100%" border="0">
-						<TR>
-							<TD><FONT size="+2"><STRONG>FCKeditor Debug Window</STRONG></FONT></TD>
-							<TD align="right"><INPUT type="button" value="Clear" onclick="Clear();"></TD>
-						</TR>
-					</TABLE>
-				</TD>
-			</TR>
-			<TR>
-				<TD height="100%" style="BORDER-RIGHT: #696969 1px solid; BORDER-TOP: #696969 1px solid; BORDER-LEFT: #696969 1px solid; BORDER-BOTTOM: #696969 1px solid">
-					<iframe id="eOutput" name="eOutput" width="100%" height="100%" scrolling="auto" src="fckblank.html" frameborder="no"></iframe>
-				</TD>
-			</TR>
-		</TABLE>
-	</body>
-</html>
\ No newline at end of file
+	</script>
+</head>
+<body style="margin: 10px">
+	<table style="height: 100%" cellspacing="5" cellpadding="0" width="100%" border="0">
+		<tr>
+			<td>
+				<table cellspacing="0" cellpadding="0" width="100%" border="0">
+					<tr>
+						<td style="font-weight: bold; font-size: 1.2em;">
+							FCKeditor Debug Window</td>
+						<td align="right">
+							<input type="button" value="Clear" onclick="Clear();" /></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+		<tr style="height: 100%">
+			<td style="border: #696969 1px solid">
+				<iframe id="xOutput" width="100%" height="100%" scrolling="auto" src="fckblank.html"
+					frameborder="0"></iframe>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/fckdialog.html 1.4.1.src/fckeditor/editor/fckdialog.html
--- 1.4.0sr5-1.src/fckeditor/editor/fckdialog.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/fckdialog.html	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,7 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -16,8 +17,7 @@
  * File Authors:
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
 -->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml">
 	<head>
 		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 		<meta name="robots" content="noindex, nofollow" />
@@ -39,6 +39,9 @@
 
 function LoadInnerDialog()
 {
+	// The following value is set, so the editor can check that the dialog has been correctly opened.
+	window.setTimeout( function() { window.returnValue = true ; }, 100 ) ;
+
 	if ( window.onresize )
 		window.onresize() ;
 
@@ -111,6 +114,9 @@
 
 function Cancel()
 {
+	// All dialog windows will fire the "OnSelectionChange" event, not matter
+	// the Ok or Cancel button have being pressed.
+	window.dialogArguments.Editor.FCK.Events.FireEvent( 'OnSelectionChange' ) ;
 	window.close() ;
 }
 
@@ -248,11 +254,6 @@
 	}
 }
 
-window.onfocus = function()
-{
-	document.getElementById('frmMain').contentWindow.focus() ;
-}
-
 if ( window.dialogArguments.Editor.FCKBrowserInfo.IsIE )
 {
 	function Window_OnBeforeUnload()
@@ -265,6 +266,14 @@
 	window.attachEvent( "onbeforeunload", Window_OnBeforeUnload ) ;
 }
 
+function Window_OnClose()
+{
+	window.dialogArguments.Editor.FCKFocusManager.Unlock() ;
+}
+
+if ( window.addEventListener )
+	window.addEventListener( 'unload', Window_OnClose, false ) ;
+
 		</script>
 	</head>
 	<body onload="LoadInnerDialog();" class="PopupBody">
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/fckeditor.html 1.4.1.src/fckeditor/editor/fckeditor.html
--- 1.4.0sr5-1.src/fckeditor/editor/fckeditor.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/fckeditor.html	2006-09-03 13:05:04.000000000 -0500
@@ -1,6 +1,7 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -16,43 +17,194 @@
  * File Authors:
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
 -->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-	<head>
-		<title>FCKeditor</title>
-		<meta name="robots" content="noindex, nofollow" />
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-		<script type="text/javascript" src="lang/fcklanguagemanager.js"></script>
-		<meta http-equiv="Cache-Control" content="public">
-		<script type="text/javascript" src="js/fck_startup.js"></script>
-	</head>
-	<body>
-		<table height="100%" width="100%" cellpadding="0" cellspacing="0" border="0" style="TABLE-LAYOUT: fixed">
-			<tr>
-				<td unselectable="on" style="OVERFLOW: hidden">
-					<table width="100%" cellpadding="0" cellspacing="0" border="0">
-						<tr id="Collapsed" style="DISPLAY: none">
-							<td id="ExpandHandle" class="TB_Expand" unselectable="on" colspan="3" onclick="FCKToolbarSet.Expand();return false;"><img class="TB_ExpandImg" src="images/spacer.gif" width="8" height="4" unselectable="on"></td>
-						</tr>
-						<tr id="Expanded" style="DISPLAY: none">
-							<td id="CollapseHandle" style="DISPLAY: none" class="TB_Collapse" 
-								unselectable="on" valign="bottom" onclick="FCKToolbarSet.Collapse();return false;"><img class="TB_CollapseImg" src="images/spacer.gif" width="8" height="4" unselectable="on"></td>
-							<td id="eToolbar" class="TB_ToolbarSet" unselectable="on"></td>
-							<td width="1" class="TB_SideBorder"></td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-			<tr id="eWysiwyg">
-				<td id="eWysiwygCell" height="100%" valign="top">
-					<iframe id="eEditorArea" name="eEditorArea" height="100%" width="100%" frameborder="no" src="fckblank.html"></iframe>
-				</td>
-			</tr>
-			<tr id="eSource" style="DISPLAY: none">
-				<td class="Source" height="100%" valign="top">
-					<textarea id="eSourceField" dir="ltr" style="WIDTH: 100%; HEIGHT: 100%"></textarea>
-				</td>
-			</tr>
-		</table>
-	</body>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor</title>
+	<meta name="robots" content="noindex, nofollow" />
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta http-equiv="Cache-Control" content="public" />
+	<script type="text/javascript">
+
+// Instead of loading scripts and CSSs using inline tags, all scripts are
+// loaded by code. In this way we can guarantee the correct processing order,
+// otherwise external scripts and inline scripts could be executed in an
+// unwanted order (IE).
+
+function LoadScript( url )
+{
+	document.write( '<script type="text/javascript" src="' + url + '" onerror="alert(\'Error loading \' + this.src);"><\/script>' ) ;
+}
+
+function LoadCss( url )
+{
+	document.write( '<link href="' + url + '" type="text/css" rel="stylesheet" onerror="alert(\'Error loading \' + this.src);" />' ) ;
+}
+
+// Main editor scripts.
+var sSuffix = /msie/.test( navigator.userAgent.toLowerCase() ) ? 'ie' : 'gecko' ;
+
+LoadScript( 'js/fckeditorcode_' + sSuffix + '.js' ) ;
+
+// Base configuration file.
+LoadScript( '../fckconfig.js' ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// Create the default cleanup object used by the editor.
+if ( FCKBrowserInfo.IsIE )
+{
+	FCK.IECleanup = new FCKIECleanup( window ) ;
+	FCK.IECleanup.AddItem( FCKTempBin, FCKTempBin.Reset ) ;
+	FCK.IECleanup.AddItem( FCK, FCK_Cleanup ) ;
+}
+
+// The config hidden field is processed immediately, because
+// CustomConfigurationsPath may be set in the page.
+FCKConfig.ProcessHiddenField() ;
+
+// Load the custom configurations file (if defined).
+if ( FCKConfig.CustomConfigurationsPath.length > 0 )
+	LoadScript( FCKConfig.CustomConfigurationsPath ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// Load configurations defined at page level.
+FCKConfig_LoadPageConfig() ;
+
+FCKConfig_PreProcess() ;
+
+// Load the active skin CSS.
+LoadCss( FCKConfig.SkinPath + 'fck_editor.css' ) ;
+
+// Load the language file.
+FCKLanguageManager.Initialize() ;
+LoadScript( 'lang/' + FCKLanguageManager.ActiveLanguage.Code + '.js' ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// Initialize the editing area context menu.
+FCK_ContextMenu_Init() ;
+
+FCKPlugins.Load() ;
+
+	</script>
+	<script type="text/javascript">
+	
+// Set the editor interface direction.
+window.document.dir = FCKLang.Dir ;
+
+// Activate pasting operations.
+if ( FCKConfig.ForcePasteAsPlainText || FCKConfig.AutoDetectPasteFromWord )
+	FCK.Events.AttachEvent( "OnPaste", FCK.Paste ) ;
+
+	</script>
+	<script type="text/javascript">
+
+window.onload = function()
+{
+	InitializeAPI() ;
+
+	if ( FCKBrowserInfo.IsIE )
+		FCK_PreloadImages() ;
+	else
+		LoadToolbarSetup() ;
+}
+
+function LoadToolbarSetup()
+{
+	FCKeditorAPI._FunctionQueue.Add( LoadToolbar ) ;
+}
+
+function LoadToolbar()
+{
+	var oToolbarSet = FCK.ToolbarSet = FCKToolbarSet_Create() ;
+	
+	if ( oToolbarSet.IsLoaded )
+		StartEditor() ;
+	else
+	{
+		oToolbarSet.OnLoad = StartEditor ;
+		oToolbarSet.Load( FCKURLParams['Toolbar'] || 'Default' ) ;
+	}
+}
+
+function StartEditor()
+{
+	// Remove the onload listener.
+	FCK.ToolbarSet.OnLoad = null ;
+
+	FCKeditorAPI._FunctionQueue.Remove( LoadToolbar ) ;
+
+	FCK.Events.AttachEvent( 'OnStatusChange', WaitForActive ) ;
+
+	// Start the editor.
+	FCK.StartEditor() ;
+}
+
+function WaitForActive( editorInstance, newStatus )
+{
+	if ( newStatus == FCK_STATUS_ACTIVE )
+	{
+		if ( FCKBrowserInfo.IsGecko )
+			FCKTools.RunFunction( window.onresize ) ;
+
+		FCK.SetStatus( FCK_STATUS_COMPLETE ) ;
+
+		// Call the special "FCKeditor_OnComplete" function that should be present in 
+		// the HTML page where the editor is located.
+		if ( typeof( window.parent.FCKeditor_OnComplete ) == 'function' )
+			window.parent.FCKeditor_OnComplete( FCK ) ;	
+	}
+}
+
+// Gecko browsers doens't calculate well that IFRAME size so we must
+// recalculate it every time the window size changes.
+if ( FCKBrowserInfo.IsGecko )
+{
+	function Window_OnResize()
+	{
+		if ( FCKBrowserInfo.IsOpera )
+			return ;
+
+		var oCell = document.getElementById( 'xEditingArea' ) ;
+
+		var eInnerElement ;
+		if ( eInnerElement = oCell.firstChild )
+		{
+			eInnerElement.style.height = 0 ;
+			eInnerElement.style.height = oCell.scrollHeight - 2 ;
+		}
+	}
+	window.onresize = Window_OnResize ;
+}
+
+	</script>
+</head>
+<body>
+	<table width="100%" cellpadding="0" cellspacing="0" style="height: 100%; table-layout: fixed">
+		<tr id="xToolbarRow" style="display: none">
+			<td id="xToolbarSpace" style="overflow: hidden">
+				<table width="100%" cellpadding="0" cellspacing="0">
+					<tr id="xCollapsed" style="display: none">
+						<td id="xExpandHandle" class="TB_Expand" colspan="3">
+							<img class="TB_ExpandImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
+					</tr>
+					<tr id="xExpanded" style="display: none">
+						<td id="xTBLeftBorder" class="TB_SideBorder" style="width: 1px; display: none;"></td>
+						<td id="xCollapseHandle" style="display: none" class="TB_Collapse" valign="bottom">
+							<img class="TB_CollapseImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
+						<td id="xToolbar" class="TB_ToolbarSet"></td>
+						<td class="TB_SideBorder" style="width: 1px"></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+		<tr style="height: 100%">
+			<td id="xEditingArea" valign="top"></td>
+		</tr>
+	</table>
+</body>
 </html>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/fckeditor.original.html 1.4.1.src/fckeditor/editor/fckeditor.original.html
--- 1.4.0sr5-1.src/fckeditor/editor/fckeditor.original.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/fckeditor.original.html	2006-09-03 13:05:04.000000000 -0500
@@ -1,6 +1,7 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -16,60 +17,276 @@
  * File Authors:
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
 -->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-	<head>
-		<title>FCKeditor</title>
-		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> <!-- @Packager.RemoveLine -->
-		<meta name="robots" content="noindex, nofollow" />
-		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-		<script type="text/javascript" src="lang/fcklanguagemanager.js"></script>
-		<!-- @Packager.RemoveLine
-		<meta http-equiv="Cache-Control" content="public">
-		@Packager.RemoveLine -->
-		<!-- @Packager.Remove.Start -->
-		<script type="text/javascript" src="_source/internals/fcknamespace.js"></script>
-		<script type="text/javascript" src="_source/internals/fckcoreextensions.js"></script>
-		<script type="text/javascript" src="_source/globals/fck_constants.js"></script>
-		<script type="text/javascript" src="_source/internals/fckbrowserinfo.js"></script>
-		<script type="text/javascript" src="_source/internals/fckscriptloader.js"></script>
-		<script type="text/javascript" src="_source/internals/fckurlparams.js"></script>
-		<script type="text/javascript" src="_source/internals/fck.js"></script>
-		<script type="text/javascript" src="_source/internals/fckconfig.js"></script>
-		<script type="text/javascript" src="_source/globals/fckeditorapi.js"></script>
-		<script type="text/javascript" src="_source/internals/fck_onload.js"></script>
-		<!-- @Packager.Remove.End -->
-		<!-- @Packager.RemoveLine
-		<script type="text/javascript" src="js/fck_startup.js"></script>
-		@Packager.RemoveLine -->
-	</head>
-	<body>
-		<table height="100%" width="100%" cellpadding="0" cellspacing="0" border="0" style="TABLE-LAYOUT: fixed">
-			<tr>
-				<td unselectable="on" style="OVERFLOW: hidden">
-					<table width="100%" cellpadding="0" cellspacing="0" border="0">
-						<tr id="Collapsed" style="DISPLAY: none">
-							<td id="ExpandHandle" class="TB_Expand" unselectable="on" colspan="3" onclick="FCKToolbarSet.Expand();return false;"><img class="TB_ExpandImg" src="images/spacer.gif" width="8" height="4" unselectable="on"></td>
-						</tr>
-						<tr id="Expanded" style="DISPLAY: none">
-							<td id="CollapseHandle" style="DISPLAY: none" class="TB_Collapse" 
-								unselectable="on" valign="bottom" onclick="FCKToolbarSet.Collapse();return false;"><img class="TB_CollapseImg" src="images/spacer.gif" width="8" height="4" unselectable="on"></td>
-							<td id="eToolbar" class="TB_ToolbarSet" unselectable="on"></td>
-							<td width="1" class="TB_SideBorder"></td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-			<tr id="eWysiwyg">
-				<td id="eWysiwygCell" height="100%" valign="top">
-					<iframe id="eEditorArea" name="eEditorArea" height="100%" width="100%" frameborder="no" src="fckblank.html"></iframe>
-				</td>
-			</tr>
-			<tr id="eSource" style="DISPLAY: none">
-				<td class="Source" height="100%" valign="top">
-					<textarea id="eSourceField" dir="ltr" style="WIDTH: 100%; HEIGHT: 100%"></textarea>
-				</td>
-			</tr>
-		</table>
-	</body>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor</title>
+	<meta name="robots" content="noindex, nofollow" />
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<!-- @Packager.RemoveLine
+	<meta http-equiv="Cache-Control" content="public" />
+	@Packager.RemoveLine -->
+	<script type="text/javascript">
+
+// Instead of loading scripts and CSSs using inline tags, all scripts are
+// loaded by code. In this way we can guarantee the correct processing order,
+// otherwise external scripts and inline scripts could be executed in an
+// unwanted order (IE).
+
+function LoadScript( url )
+{
+	document.write( '<script type="text/javascript" src="' + url + '" onerror="alert(\'Error loading \' + this.src);"><\/script>' ) ;
+}
+
+function LoadCss( url )
+{
+	document.write( '<link href="' + url + '" type="text/css" rel="stylesheet" onerror="alert(\'Error loading \' + this.src);" />' ) ;
+}
+
+// Main editor scripts.
+var sSuffix = /msie/.test( navigator.userAgent.toLowerCase() ) ? 'ie' : 'gecko' ;
+
+/* @Packager.RemoveLine
+LoadScript( 'js/fckeditorcode_' + sSuffix + '.js' ) ;
+@Packager.RemoveLine */
+// @Packager.Remove.Start
+
+LoadScript( '_source/fckconstants.js' ) ;
+LoadScript( '_source/fckjscoreextensions.js' ) ;
+
+if ( sSuffix == 'ie' )
+	LoadScript( '_source/classes/fckiecleanup.js' ) ;
+
+LoadScript( '_source/internals/fckbrowserinfo.js' ) ;
+LoadScript( '_source/internals/fckurlparams.js' ) ;
+LoadScript( '_source/internals/fck.js' ) ;
+LoadScript( '_source/internals/fckconfig.js' ) ;
+
+LoadScript( '_source/internals/fckdebug.js' ) ;
+LoadScript( '_source/internals/fcktools.js' ) ;
+LoadScript( '_source/internals/fcktools_' + sSuffix + '.js' ) ;
+LoadScript( '_source/fckeditorapi.js' ) ;
+LoadScript( '_source/internals/fckregexlib.js' ) ;
+LoadScript( '_source/internals/fcklanguagemanager.js' ) ;
+LoadScript( '_source/classes/fckevents.js' ) ;
+LoadScript( '_source/internals/fckxhtmlentities.js' ) ;
+LoadScript( '_source/internals/fckxhtml.js' ) ;
+LoadScript( '_source/internals/fckxhtml_' + sSuffix + '.js' ) ;
+LoadScript( '_source/internals/fckcodeformatter.js' ) ;
+LoadScript( '_source/internals/fckundo_' + sSuffix + '.js' ) ;
+LoadScript( '_source/classes/fckeditingarea.js' ) ;
+LoadScript( '_source/internals/fckdocumentprocessor.js' ) ;
+LoadScript( '_source/internals/fck_1.js' ) ;
+LoadScript( '_source/internals/fck_1_' + sSuffix + '.js' ) ;
+LoadScript( '_source/internals/fck_2.js' ) ;
+LoadScript( '_source/internals/fck_2_' + sSuffix + '.js' ) ;
+LoadScript( '_source/internals/fckselection.js' ) ;
+LoadScript( '_source/internals/fckselection_' + sSuffix + '.js' ) ;
+
+LoadScript( '_source/internals/fcktablehandler.js' ) ;
+LoadScript( '_source/internals/fcktablehandler_' + sSuffix + '.js' ) ;
+LoadScript( '_source/classes/fckxml_' + sSuffix + '.js' ) ;
+LoadScript( '_source/classes/fckstyledef.js' ) ;
+LoadScript( '_source/classes/fckstyledef_' + sSuffix + '.js' ) ;
+LoadScript( '_source/classes/fckstylesloader.js' ) ;
+
+LoadScript( '_source/commandclasses/fcknamedcommand.js' ) ;
+LoadScript( '_source/commandclasses/fck_othercommands.js' ) ;
+LoadScript( '_source/commandclasses/fckspellcheckcommand_' + sSuffix + '.js' ) ;
+LoadScript( '_source/commandclasses/fcktextcolorcommand.js' ) ;
+LoadScript( '_source/commandclasses/fckpasteplaintextcommand.js' ) ;
+LoadScript( '_source/commandclasses/fckpastewordcommand.js' ) ;
+LoadScript( '_source/commandclasses/fcktablecommand.js' ) ;
+LoadScript( '_source/commandclasses/fckstylecommand.js' ) ;
+LoadScript( '_source/commandclasses/fckfitwindow.js' ) ;
+LoadScript( '_source/internals/fckcommands.js' ) ;
+
+LoadScript( '_source/classes/fckpanel.js' ) ;
+LoadScript( '_source/classes/fckicon.js' ) ;
+LoadScript( '_source/classes/fcktoolbarbuttonui.js' ) ;
+LoadScript( '_source/classes/fcktoolbarbutton.js' ) ;
+LoadScript( '_source/classes/fckspecialcombo.js' ) ;
+LoadScript( '_source/classes/fcktoolbarspecialcombo.js' ) ;
+LoadScript( '_source/classes/fcktoolbarfontscombo.js' ) ;
+LoadScript( '_source/classes/fcktoolbarfontsizecombo.js' ) ;
+LoadScript( '_source/classes/fcktoolbarfontformatcombo.js' ) ;
+LoadScript( '_source/classes/fcktoolbarstylecombo.js' ) ;
+LoadScript( '_source/classes/fcktoolbarpanelbutton.js' ) ;
+LoadScript( '_source/internals/fcktoolbaritems.js' ) ;
+LoadScript( '_source/classes/fcktoolbar.js' ) ;
+LoadScript( '_source/classes/fcktoolbarbreak_' + sSuffix + '.js' ) ;
+LoadScript( '_source/internals/fcktoolbarset.js' ) ;
+LoadScript( '_source/internals/fckdialog.js' ) ;
+LoadScript( '_source/internals/fckdialog_' + sSuffix + '.js' ) ;
+LoadScript( '_source/classes/fckmenuitem.js' ) ;
+LoadScript( '_source/classes/fckmenublock.js' ) ;
+LoadScript( '_source/classes/fckmenublockpanel.js' ) ;
+LoadScript( '_source/classes/fckcontextmenu.js' ) ;
+LoadScript( '_source/internals/fck_contextmenu.js' ) ;
+LoadScript( '_source/classes/fckplugin.js' ) ;
+LoadScript( '_source/internals/fckplugins.js' ) ;
+
+// @Packager.Remove.End
+
+// Base configuration file.
+LoadScript( '../fckconfig.js' ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// Create the default cleanup object used by the editor.
+if ( FCKBrowserInfo.IsIE )
+{
+	FCK.IECleanup = new FCKIECleanup( window ) ;
+	FCK.IECleanup.AddItem( FCKTempBin, FCKTempBin.Reset ) ;
+	FCK.IECleanup.AddItem( FCK, FCK_Cleanup ) ;
+}
+
+// The config hidden field is processed immediately, because
+// CustomConfigurationsPath may be set in the page.
+FCKConfig.ProcessHiddenField() ;
+
+// Load the custom configurations file (if defined).
+if ( FCKConfig.CustomConfigurationsPath.length > 0 )
+	LoadScript( FCKConfig.CustomConfigurationsPath ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// Load configurations defined at page level.
+FCKConfig_LoadPageConfig() ;
+
+FCKConfig_PreProcess() ;
+
+// Load the active skin CSS.
+LoadCss( FCKConfig.SkinPath + 'fck_editor.css' ) ;
+
+// Load the language file.
+FCKLanguageManager.Initialize() ;
+LoadScript( 'lang/' + FCKLanguageManager.ActiveLanguage.Code + '.js' ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// Initialize the editing area context menu.
+FCK_ContextMenu_Init() ;
+
+FCKPlugins.Load() ;
+
+	</script>
+	<script type="text/javascript">
+	
+// Set the editor interface direction.
+window.document.dir = FCKLang.Dir ;
+
+// Activate pasting operations.
+if ( FCKConfig.ForcePasteAsPlainText || FCKConfig.AutoDetectPasteFromWord )
+	FCK.Events.AttachEvent( "OnPaste", FCK.Paste ) ;
+
+	</script>
+	<script type="text/javascript">
+
+window.onload = function()
+{
+	InitializeAPI() ;
+
+	if ( FCKBrowserInfo.IsIE )
+		FCK_PreloadImages() ;
+	else
+		LoadToolbarSetup() ;
+}
+
+function LoadToolbarSetup()
+{
+	FCKeditorAPI._FunctionQueue.Add( LoadToolbar ) ;
+}
+
+function LoadToolbar()
+{
+	var oToolbarSet = FCK.ToolbarSet = FCKToolbarSet_Create() ;
+	
+	if ( oToolbarSet.IsLoaded )
+		StartEditor() ;
+	else
+	{
+		oToolbarSet.OnLoad = StartEditor ;
+		oToolbarSet.Load( FCKURLParams['Toolbar'] || 'Default' ) ;
+	}
+}
+
+function StartEditor()
+{
+	// Remove the onload listener.
+	FCK.ToolbarSet.OnLoad = null ;
+
+	FCKeditorAPI._FunctionQueue.Remove( LoadToolbar ) ;
+
+	FCK.Events.AttachEvent( 'OnStatusChange', WaitForActive ) ;
+
+	// Start the editor.
+	FCK.StartEditor() ;
+}
+
+function WaitForActive( editorInstance, newStatus )
+{
+	if ( newStatus == FCK_STATUS_ACTIVE )
+	{
+		if ( FCKBrowserInfo.IsGecko )
+			FCKTools.RunFunction( window.onresize ) ;
+
+		FCK.SetStatus( FCK_STATUS_COMPLETE ) ;
+
+		// Call the special "FCKeditor_OnComplete" function that should be present in 
+		// the HTML page where the editor is located.
+		if ( typeof( window.parent.FCKeditor_OnComplete ) == 'function' )
+			window.parent.FCKeditor_OnComplete( FCK ) ;	
+	}
+}
+
+// Gecko browsers doens't calculate well that IFRAME size so we must
+// recalculate it every time the window size changes.
+if ( FCKBrowserInfo.IsGecko )
+{
+	function Window_OnResize()
+	{
+		if ( FCKBrowserInfo.IsOpera )
+			return ;
+
+		var oCell = document.getElementById( 'xEditingArea' ) ;
+
+		var eInnerElement ;
+		if ( eInnerElement = oCell.firstChild )
+		{
+			eInnerElement.style.height = 0 ;
+			eInnerElement.style.height = oCell.scrollHeight - 2 ;
+		}
+	}
+	window.onresize = Window_OnResize ;
+}
+
+	</script>
+</head>
+<body>
+	<table width="100%" cellpadding="0" cellspacing="0" style="height: 100%; table-layout: fixed">
+		<tr id="xToolbarRow" style="display: none">
+			<td id="xToolbarSpace" style="overflow: hidden">
+				<table width="100%" cellpadding="0" cellspacing="0">
+					<tr id="xCollapsed" style="display: none">
+						<td id="xExpandHandle" class="TB_Expand" colspan="3">
+							<img class="TB_ExpandImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
+					</tr>
+					<tr id="xExpanded" style="display: none">
+						<td id="xTBLeftBorder" class="TB_SideBorder" style="width: 1px; display: none;"></td>
+						<td id="xCollapseHandle" style="display: none" class="TB_Collapse" valign="bottom">
+							<img class="TB_CollapseImg" alt="" src="images/spacer.gif" width="8" height="4" /></td>
+						<td id="xToolbar" class="TB_ToolbarSet"></td>
+						<td class="TB_SideBorder" style="width: 1px"></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+		<tr style="height: 100%">
+			<td id="xEditingArea" valign="top"></td>
+		</tr>
+	</table>
+</body>
 </html>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/browser.css 1.4.1.src/fckeditor/editor/filemanager/browser/default/browser.css
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/browser.css	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/browser/default/browser.css	2006-06-17 16:25:34.000000000 -0500
@@ -0,0 +1,84 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: browser.css
+ * 	CSS styles used by all pages that compose the File Browser.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+body
+{
+	background-color: #f1f1e3;
+}
+
+form
+{
+	margin: 0px 0px 0px 0px ;
+	padding: 0px 0px 0px 0px ;
+}
+
+.Frame
+{
+	background-color: #f1f1e3;
+	border-color: #f1f1e3;
+	border-right: thin inset;
+	border-top: thin inset;
+	border-left: thin inset;
+	border-bottom: thin inset;
+}
+
+body.FileArea
+{
+
+	background-color: #ffffff;
+}
+
+body, td, input, select
+{
+	font-size: 11px;
+	font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana;
+}
+
+.ActualFolder
+{
+	font-weight: bold;
+	font-size: 14px;
+}
+
+.PopupButtons
+{
+	border-top: #d5d59d 1px solid;
+	background-color: #e3e3c7;
+	padding: 7px 10px 7px 10px;
+}
+
+.Button, button
+{
+	border-right: #737357 1px solid;
+	border-top: #737357 1px solid;
+	border-left: #737357 1px solid;
+	color: #3b3b1f;
+	border-bottom: #737357 1px solid;
+	background-color: #c7c78f;
+}
+
+.FolderListCurrentFolder img
+{
+	background-image: url(images/FolderOpened.gif);
+}
+
+.FolderListFolder img
+{
+	background-image: url(images/Folder.gif);
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/browser.html 1.4.1.src/fckeditor/editor/filemanager/browser/default/browser.html
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/browser.html	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/browser/default/browser.html	2006-06-17 16:25:34.000000000 -0500
@@ -0,0 +1,148 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: browser.html
+ * 	This page compose the File Browser dialog frameset.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<title>FCKeditor - Resources Browser</title>
+		<link href="browser.css" type="text/css" rel="stylesheet">
+		<script type="text/javascript" src="js/fckxml.js"></script>
+		<script language="javascript">
+
+function GetUrlParam( paramName )
+{
+	var oRegex = new RegExp( '[\?&]' + paramName + '=([^&]+)', 'i' ) ;
+	var oMatch = oRegex.exec( window.top.location.search ) ;
+	
+	if ( oMatch && oMatch.length > 1 )
+		return unescape( oMatch[1] ) ;
+	else
+		return '' ;
+}
+
+var oConnector = new Object() ;
+oConnector.CurrentFolder	= '/' ;
+
+var sConnUrl = GetUrlParam( 'Connector' ) ;
+
+// Gecko has some problems when using relative URLs (not starting with slash).
+if ( sConnUrl.substr(0,1) != '/' && sConnUrl.indexOf( '://' ) < 0 )
+	sConnUrl = window.location.href.replace( /browser.html.*$/, '' ) + sConnUrl ;
+
+oConnector.ConnectorUrl = sConnUrl + ( sConnUrl.indexOf('?') != -1 ? '&' : '?' ) ;
+
+var sServerPath = GetUrlParam( 'ServerPath' ) ;
+if ( sServerPath.length > 0 )
+	oConnector.ConnectorUrl += 'ServerPath=' + escape( sServerPath ) + '&' ;
+
+oConnector.ResourceType		= GetUrlParam( 'Type' ) ;
+oConnector.ShowAllTypes		= ( oConnector.ResourceType.length == 0 ) ;
+
+if ( oConnector.ShowAllTypes )
+	oConnector.ResourceType = 'File' ;
+
+oConnector.SendCommand = function( command, params, callBackFunction )
+{
+	var sUrl = this.ConnectorUrl + 'Command=' + command ;
+	sUrl += '&Type=' + this.ResourceType ;
+	sUrl += '&CurrentFolder=' + escape( this.CurrentFolder ) ;
+	
+	if ( params ) sUrl += '&' + params ;
+
+	var oXML = new FCKXml() ;
+	
+	if ( callBackFunction )
+		oXML.LoadUrl( sUrl, callBackFunction ) ;	// Asynchronous load.
+	else
+		return oXML.LoadUrl( sUrl ) ;
+}
+
+oConnector.CheckError = function( responseXml )
+{
+	var iErrorNumber = 0
+	var oErrorNode = responseXml.SelectSingleNode( 'Connector/Error' ) ;
+	
+	if ( oErrorNode )
+	{
+		iErrorNumber = parseInt( oErrorNode.attributes.getNamedItem('number').value ) ;
+		
+		switch ( iErrorNumber )
+		{
+			case 0 :
+				break ;
+			case 1 :	// Custom error. Message placed in the "text" attribute.
+				alert( oErrorNode.attributes.getNamedItem('text').value ) ;
+				break ;
+			case 101 :
+				alert( 'Folder already exists' ) ;
+				break ;
+			case 102 :
+				alert( 'Invalid folder name' ) ;
+				break ;
+			case 103 :
+				alert( 'You have no permissions to create the folder' ) ;
+				break ;
+			case 110 :
+				alert( 'Unknown error creating folder' ) ;
+				break ;
+			default :
+				alert( 'Error on your request. Error number: ' + iErrorNumber ) ;
+				break ;
+		}
+	}
+	return iErrorNumber ;
+}
+
+var oIcons = new Object() ;
+
+oIcons.AvailableIconsArray = [ 
+	'ai','avi','bmp','cs','dll','doc','exe','fla','gif','htm','html','jpg','js',
+	'mdb','mp3','pdf','ppt','rdp','swf','swt','txt','vsd','xls','xml','zip' ] ;
+	
+oIcons.AvailableIcons = new Object() ;
+
+for ( var i = 0 ; i < oIcons.AvailableIconsArray.length ; i++ )
+	oIcons.AvailableIcons[ oIcons.AvailableIconsArray[i] ] = true ;
+
+oIcons.GetIcon = function( fileName )
+{
+	var sExtension = fileName.substr( fileName.lastIndexOf('.') + 1 ).toLowerCase() ;
+
+	if ( this.AvailableIcons[ sExtension ] == true )
+		return sExtension ;
+	else
+		return 'default.icon' ;
+}
+		</script>
+	</head>
+	<frameset cols="150,*" class="Frame" framespacing="3" bordercolor="#f1f1e3" frameborder="1">
+		<frameset rows="50,*" framespacing="0">
+			<frame src="frmresourcetype.html" scrolling="no" frameborder="0">
+			<frame name="frmFolders" src="frmfolders.html" scrolling="auto" frameborder="1">
+		</frameset>
+		<frameset rows="50,*,50" framespacing="0">
+			<frame name="frmActualFolder" src="frmactualfolder.html" scrolling="no" frameborder="0">
+			<frame name="frmResourcesList" src="frmresourceslist.html" scrolling="auto" frameborder="1">
+			<frameset cols="150,*,0" framespacing="0" frameborder="0">
+				<frame name="frmCreateFolder" src="frmcreatefolder.html" scrolling="no" frameborder="0">
+				<frame name="frmUpload" src="frmupload.html" scrolling="no" frameborder="0">
+				<frame name="frmUploadWorker" src="../../../fckblank.html" scrolling="no" frameborder="0">
+			</frameset>
+		</frameset>
+	</frameset>
+</html>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/connectors/php/basexml.php 1.4.1.src/fckeditor/editor/filemanager/browser/default/connectors/php/basexml.php
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/connectors/php/basexml.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/browser/default/connectors/php/basexml.php	2006-09-03 13:05:04.000000000 -0500
@@ -0,0 +1,71 @@
+<?php 
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: basexml.php
+ * 	These functions define the base of the XML response sent by the PHP
+ * 	connector.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+function SetXmlHeaders()
+{
+	ob_end_clean() ;
+
+	// Prevent the browser from caching the result.
+	// Date in the past
+	header('Expires: Mon, 26 Jul 1997 05:00:00 GMT') ;
+	// always modified
+	header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT') ;
+	// HTTP/1.1
+	header('Cache-Control: no-store, no-cache, must-revalidate') ;
+	header('Cache-Control: post-check=0, pre-check=0', false) ;
+	// HTTP/1.0
+	header('Pragma: no-cache') ;
+
+	// Set the response format.
+	header( 'Content-Type:text/xml; charset=utf-8' ) ;
+}
+
+function CreateXmlHeader( $command, $resourceType, $currentFolder )
+{
+	SetXmlHeaders() ;
+	
+	// Create the XML document header.
+	echo '<?xml version="1.0" encoding="utf-8" ?>' ;
+
+	// Create the main "Connector" node.
+	echo '<Connector command="' . $command . '" resourceType="' . $resourceType . '">' ;
+	
+	// Add the current folder node.
+	echo '<CurrentFolder path="' . ConvertToXmlAttribute( $currentFolder ) . '" url="' . ConvertToXmlAttribute( GetUrlFromPath( $resourceType, $currentFolder ) ) . '" />' ;
+}
+
+function CreateXmlFooter()
+{
+	echo '</Connector>' ;
+}
+
+function SendError( $number, $text )
+{
+	SetXmlHeaders() ;
+	
+	// Create the XML document header
+	echo '<?xml version="1.0" encoding="utf-8" ?>' ;
+	
+	echo '<Connector><Error number="' . $number . '" text="' . htmlspecialchars( $text ) . '" /></Connector>' ;
+	
+	exit ;
+}
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/connectors/php/commands.php 1.4.1.src/fckeditor/editor/filemanager/browser/default/connectors/php/commands.php
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/connectors/php/commands.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/browser/default/connectors/php/commands.php	2006-06-17 16:25:34.000000000 -0500
@@ -0,0 +1,218 @@
+<?php 
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: commands.php
+ * 	This is the File Manager Connector for PHP.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+function GetFolders( $resourceType, $currentFolder )
+{
+	// Map the virtual path to the local server path.
+	$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
+
+	// Array that will hold the folders names.
+	$aFolders	= array() ;
+
+	$oCurrentFolder = opendir( $sServerDir ) ;
+
+	while ( $sFile = readdir( $oCurrentFolder ) )
+	{
+		if ( $sFile != '.' && $sFile != '..' && is_dir( $sServerDir . $sFile ) )
+			$aFolders[] = '<Folder name="' . ConvertToXmlAttribute( $sFile ) . '" />' ;
+	}
+
+	closedir( $oCurrentFolder ) ;
+
+	// Open the "Folders" node.
+	echo "<Folders>" ;
+	
+	natcasesort( $aFolders ) ;
+	foreach ( $aFolders as $sFolder )
+		echo $sFolder ;
+
+	// Close the "Folders" node.
+	echo "</Folders>" ;
+}
+
+function GetFoldersAndFiles( $resourceType, $currentFolder )
+{
+	// Map the virtual path to the local server path.
+	$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
+
+	// Arrays that will hold the folders and files names.
+	$aFolders	= array() ;
+	$aFiles		= array() ;
+
+	$oCurrentFolder = opendir( $sServerDir ) ;
+
+	while ( $sFile = readdir( $oCurrentFolder ) )
+	{
+		if ( $sFile != '.' && $sFile != '..' )
+		{
+			if ( is_dir( $sServerDir . $sFile ) )
+				$aFolders[] = '<Folder name="' . ConvertToXmlAttribute( $sFile ) . '" />' ;
+			else
+			{
+				$iFileSize = filesize( $sServerDir . $sFile ) ;
+				if ( $iFileSize > 0 )
+				{
+					$iFileSize = round( $iFileSize / 1024 ) ;
+					if ( $iFileSize < 1 ) $iFileSize = 1 ;
+				}
+
+				$aFiles[] = '<File name="' . ConvertToXmlAttribute( $sFile ) . '" size="' . $iFileSize . '" />' ;
+			}
+		}
+	}
+
+	// Send the folders
+	natcasesort( $aFolders ) ;
+	echo '<Folders>' ;
+
+	foreach ( $aFolders as $sFolder )
+		echo $sFolder ;
+
+	echo '</Folders>' ;
+
+	// Send the files
+	natcasesort( $aFiles ) ;
+	echo '<Files>' ;
+
+	foreach ( $aFiles as $sFiles )
+		echo $sFiles ;
+
+	echo '</Files>' ;
+}
+
+function CreateFolder( $resourceType, $currentFolder )
+{
+	$sErrorNumber	= '0' ;
+	$sErrorMsg		= '' ;
+
+	if ( isset( $_GET['NewFolderName'] ) )
+	{
+		$sNewFolderName = $_GET['NewFolderName'] ;
+
+		if ( strpos( $sNewFolderName, '..' ) !== FALSE )
+			$sErrorNumber = '102' ;		// Invalid folder name.
+		else
+		{
+			// Map the virtual path to the local server path of the current folder.
+			$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
+
+			if ( is_writable( $sServerDir ) )
+			{
+				$sServerDir .= $sNewFolderName ;
+
+				$sErrorMsg = CreateServerFolder( $sServerDir ) ;
+
+				switch ( $sErrorMsg )
+				{
+					case '' :
+						$sErrorNumber = '0' ;
+						break ;
+					case 'Invalid argument' :
+					case 'No such file or directory' :
+						$sErrorNumber = '102' ;		// Path too long.
+						break ;
+					default :
+						$sErrorNumber = '110' ;
+						break ;
+				}
+			}
+			else
+				$sErrorNumber = '103' ;
+		}
+	}
+	else
+		$sErrorNumber = '102' ;
+
+	// Create the "Error" node.
+	echo '<Error number="' . $sErrorNumber . '" originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />' ;
+}
+
+function FileUpload( $resourceType, $currentFolder )
+{
+	$sErrorNumber = '0' ;
+	$sFileName = '' ;
+
+	if ( isset( $_FILES['NewFile'] ) && !is_null( $_FILES['NewFile']['tmp_name'] ) )
+	{
+		global $Config ;
+
+		$oFile = $_FILES['NewFile'] ;
+
+		// Map the virtual path to the local server path.
+		$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
+
+		// Get the uploaded file name.
+		$sFileName = $oFile['name'] ;
+		
+		// Replace dots in the name with underscores (only one dot can be there... security issue).
+		if ( $Config['ForceSingleExtension'] )
+			$sFileName = preg_replace( '/\\.(?![^.]*$)/', '_', $sFileName ) ;
+
+		$sOriginalFileName = $sFileName ;
+
+		// Get the extension.
+		$sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;
+		$sExtension = strtolower( $sExtension ) ;
+
+		$arAllowed	= $Config['AllowedExtensions'][$resourceType] ;
+		$arDenied	= $Config['DeniedExtensions'][$resourceType] ;
+
+		if ( ( count($arAllowed) == 0 || in_array( $sExtension, $arAllowed ) ) && ( count($arDenied) == 0 || !in_array( $sExtension, $arDenied ) ) )
+		{
+			$iCounter = 0 ;
+
+			while ( true )
+			{
+				$sFilePath = $sServerDir . $sFileName ;
+
+				if ( is_file( $sFilePath ) )
+				{
+					$iCounter++ ;
+					$sFileName = RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ;
+					$sErrorNumber = '201' ;
+				}
+				else
+				{
+					move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ;
+
+					if ( is_file( $sFilePath ) )
+					{
+						$oldumask = umask(0) ;
+						chmod( $sFilePath, 0777 ) ;
+						umask( $oldumask ) ;
+					}
+
+					break ;
+				}
+			}
+		}
+		else
+			$sErrorNumber = '202' ;
+	}
+	else
+		$sErrorNumber = '202' ;
+
+	echo '<script type="text/javascript">' ;
+	echo 'window.parent.frames["frmUpload"].OnUploadCompleted(' . $sErrorNumber . ',"' . str_replace( '"', '\\"', $sFileName ) . '") ;' ;
+	echo '</script>' ;
+
+	exit ;
+}
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/connectors/php/config.php 1.4.1.src/fckeditor/editor/filemanager/browser/default/connectors/php/config.php
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/connectors/php/config.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/browser/default/connectors/php/config.php	2006-06-17 16:25:34.000000000 -0500
@@ -0,0 +1,52 @@
+<?php 
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: config.php
+ * 	Configuration file for the File Manager Connector for PHP.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+include ('../../../../../../../lib-common.php');
+global $Config ;
+
+// SECURITY: You must explicitelly enable this "connector". (Set it to "true").
+$Config['Enabled'] = true ;
+
+// Path to user files relative to the document root.
+$Config['UserFilesPath'] = $_CONF['site_url'] . $_CONF_FCK['imagelibrary'] ;
+
+// Fill the following value it you prefer to specify the absolute path for the
+// user files directory. Usefull if you are using a virtual directory, symbolic
+// link or alias. Examples: 'C:\\MySite\\UserFiles\\' or '/root/mysite/UserFiles/'.
+// Attention: The above 'UserFilesPath' must point to the same directory.
+$Config['UserFilesAbsolutePath'] = $_CONF['path_html'] . $_CONF_FCK['imagelibrary'];
+
+// Due to security issues with Apache modules, it is reccomended to leave the
+// following setting enabled.
+$Config['ForceSingleExtension'] = true ;
+
+$Config['AllowedExtensions']['File']	= array() ;
+$Config['DeniedExtensions']['File']		= array('php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi') ;
+
+$Config['AllowedExtensions']['Image']	= array('jpg','gif','jpeg','png') ;
+$Config['DeniedExtensions']['Image']	= array() ;
+
+$Config['AllowedExtensions']['Flash']	= array('swf','fla') ;
+$Config['DeniedExtensions']['Flash']	= array() ;
+
+$Config['AllowedExtensions']['Media']	= array('swf','fla','jpg','gif','jpeg','png','avi','mpg','mpeg') ;
+$Config['DeniedExtensions']['Media']	= array() ;
+
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/connectors/php/connector.php 1.4.1.src/fckeditor/editor/filemanager/browser/default/connectors/php/connector.php
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/connectors/php/connector.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/browser/default/connectors/php/connector.php	2006-09-03 13:05:04.000000000 -0500
@@ -0,0 +1,109 @@
+<?php 
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: connector.php
+ * 	This is the File Manager Connector for PHP.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+ob_start() ;
+
+include('config.php') ;
+include('util.php') ;
+include('io.php') ;
+include('basexml.php') ;
+include('commands.php') ;
+
+if ( !$Config['Enabled'] )
+	SendError( 1, 'This connector is disabled. Please check the "editor/filemanager/browser/default/connectors/php/config.php" file' ) ;
+
+// Get the "UserFiles" path.
+$GLOBALS["UserFilesPath"] = '' ;
+
+if ( isset( $Config['UserFilesPath'] ) )
+	$GLOBALS["UserFilesPath"] = $Config['UserFilesPath'] ;
+else if ( isset( $_GET['ServerPath'] ) )
+	$GLOBALS["UserFilesPath"] = $_GET['ServerPath'] ;
+else
+	$GLOBALS["UserFilesPath"] = '/UserFiles/' ;
+
+if ( ! ereg( '/$', $GLOBALS["UserFilesPath"] ) )
+	$GLOBALS["UserFilesPath"] .= '/' ;
+
+if ( strlen( $Config['UserFilesAbsolutePath'] ) > 0 ) 
+{
+	$GLOBALS["UserFilesDirectory"] = $Config['UserFilesAbsolutePath'] ;
+
+	if ( ! ereg( '/$', $GLOBALS["UserFilesDirectory"] ) )
+		$GLOBALS["UserFilesDirectory"] .= '/' ;
+}
+else
+{
+	// Map the "UserFiles" path to a local directory.
+	$GLOBALS["UserFilesDirectory"] = GetRootPath() . $GLOBALS["UserFilesPath"] ;
+}
+
+DoResponse() ;
+
+function DoResponse()
+{
+	if ( !isset( $_GET['Command'] ) || !isset( $_GET['Type'] ) || !isset( $_GET['CurrentFolder'] ) )
+		return ;
+
+	// Get the main request informaiton.
+	$sCommand		= $_GET['Command'] ;
+	$sResourceType	= $_GET['Type'] ;
+	$sCurrentFolder	= $_GET['CurrentFolder'] ;
+
+	// Check if it is an allowed type.
+	if ( !in_array( $sResourceType, array('File','Image','Flash','Media') ) )
+		return ;
+
+	// Check the current folder syntax (must begin and start with a slash).
+	if ( ! ereg( '/$', $sCurrentFolder ) ) $sCurrentFolder .= '/' ;
+	if ( strpos( $sCurrentFolder, '/' ) !== 0 ) $sCurrentFolder = '/' . $sCurrentFolder ;
+	
+	// Check for invalid folder paths (..)
+	if ( strpos( $sCurrentFolder, '..' ) )
+		SendError( 102, "" ) ;
+
+	// File Upload doesn't have to Return XML, so it must be intercepted before anything.
+	if ( $sCommand == 'FileUpload' )
+	{
+		FileUpload( $sResourceType, $sCurrentFolder ) ;
+		return ;
+	}
+
+	CreateXmlHeader( $sCommand, $sResourceType, $sCurrentFolder ) ;
+
+	// Execute the required command.
+	switch ( $sCommand )
+	{
+		case 'GetFolders' :
+			GetFolders( $sResourceType, $sCurrentFolder ) ;
+			break ;
+		case 'GetFoldersAndFiles' :
+			GetFoldersAndFiles( $sResourceType, $sCurrentFolder ) ;
+			break ;
+		case 'CreateFolder' :
+			CreateFolder( $sResourceType, $sCurrentFolder ) ;
+			break ;
+	}
+
+	CreateXmlFooter() ;
+
+	exit ;
+}
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/connectors/php/io.php 1.4.1.src/fckeditor/editor/filemanager/browser/default/connectors/php/io.php
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/connectors/php/io.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/browser/default/connectors/php/io.php	2006-06-17 16:25:34.000000000 -0500
@@ -0,0 +1,97 @@
+<?php 
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: io.php
+ * 	This is the File Manager Connector for ASP.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+function GetUrlFromPath( $resourceType, $folderPath )
+{
+	if ( $resourceType == '' )
+		return RemoveFromEnd( $GLOBALS["UserFilesPath"], '/' ) . $folderPath ;
+	else
+		return $GLOBALS["UserFilesPath"] . $resourceType . $folderPath ;
+}
+
+function RemoveExtension( $fileName )
+{
+	return substr( $fileName, 0, strrpos( $fileName, '.' ) ) ;
+}
+
+function ServerMapFolder( $resourceType, $folderPath )
+{
+	// Get the resource type directory.
+	$sResourceTypePath = $GLOBALS["UserFilesDirectory"] . $resourceType . '/' ;
+
+	// Ensure that the directory exists.
+	CreateServerFolder( $sResourceTypePath ) ;
+
+	// Return the resource type directory combined with the required path.
+	return $sResourceTypePath . RemoveFromStart( $folderPath, '/' ) ;
+}
+
+function GetParentFolder( $folderPath )
+{
+	$sPattern = "-[/\\\\][^/\\\\]+[/\\\\]?$-" ;
+	return preg_replace( $sPattern, '', $folderPath ) ;
+}
+
+function CreateServerFolder( $folderPath )
+{
+	$sParent = GetParentFolder( $folderPath ) ;
+
+	// Check if the parent exists, or create it.
+	if ( !file_exists( $sParent ) )
+	{
+		$sErrorMsg = CreateServerFolder( $sParent ) ;
+		if ( $sErrorMsg != '' )
+			return $sErrorMsg ;
+	}
+
+	if ( !file_exists( $folderPath ) )
+	{
+		// Turn off all error reporting.
+		error_reporting( 0 ) ;
+		// Enable error tracking to catch the error.
+		ini_set( 'track_errors', '1' ) ;
+
+		// To create the folder with 0777 permissions, we need to set umask to zero.
+		$oldumask = umask(0) ;
+		mkdir( $folderPath, 0777 ) ;
+		umask( $oldumask ) ;
+
+		$sErrorMsg = $php_errormsg ;
+
+		// Restore the configurations.
+		ini_restore( 'track_errors' ) ;
+		ini_restore( 'error_reporting' ) ;
+
+		return $sErrorMsg ;
+	}
+	else
+		return '' ;
+}
+
+function GetRootPath()
+{
+	$sRealPath = realpath( './' ) ;
+
+	$sSelfPath = $_SERVER['PHP_SELF'] ;
+	$sSelfPath = substr( $sSelfPath, 0, strrpos( $sSelfPath, '/' ) ) ;
+
+	return substr( $sRealPath, 0, strlen( $sRealPath ) - strlen( $sSelfPath ) ) ;
+}
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/connectors/php/util.php 1.4.1.src/fckeditor/editor/filemanager/browser/default/connectors/php/util.php
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/connectors/php/util.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/browser/default/connectors/php/util.php	2006-06-17 16:25:34.000000000 -0500
@@ -0,0 +1,37 @@
+<?php 
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: util.php
+ * 	This is the File Manager Connector for ASP.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+function RemoveFromStart( $sourceString, $charToRemove )
+{
+	$sPattern = '|^' . $charToRemove . '+|' ;
+	return preg_replace( $sPattern, '', $sourceString ) ;
+}
+
+function RemoveFromEnd( $sourceString, $charToRemove )
+{
+	$sPattern = '|' . $charToRemove . '+$|' ;
+	return preg_replace( $sPattern, '', $sourceString ) ;
+}
+
+function ConvertToXmlAttribute( $value )
+{
+	return utf8_encode( htmlspecialchars( $value ) ) ;
+}
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/frmactualfolder.html 1.4.1.src/fckeditor/editor/filemanager/browser/default/frmactualfolder.html
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/frmactualfolder.html	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/browser/default/frmactualfolder.html	2006-06-17 16:25:34.000000000 -0500
@@ -0,0 +1,63 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: frmactualfolder.html
+ * 	This page shows the actual folder path.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<link href="browser.css" type="text/css" rel="stylesheet">
+		<script type="text/javascript">
+
+function OnResize()
+{
+	divName.style.width = "1px" ;
+	divName.style.width = tdName.offsetWidth + "px" ;
+}
+
+function SetCurrentFolder( resourceType, folderPath )
+{
+	document.getElementById('tdName').innerHTML = folderPath ;
+}
+
+window.onload = function()
+{
+	window.top.IsLoadedActualFolder = true ;
+}
+
+		</script>
+	</head>
+	<body bottomMargin="0" topMargin="0">
+		<table height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0">
+			<tr>
+				<td>
+					<button style="WIDTH: 100%" type="button">
+						<table cellSpacing="0" cellPadding="0" width="100%" border="0">
+							<tr>
+								<td><img height="32" alt="" src="images/FolderOpened32.gif" width="32"></td>
+								<td>&nbsp;</td>
+								<td id="tdName" width="100%" nowrap class="ActualFolder">/</td>
+								<td>&nbsp;</td>
+								<td><img height="8" src="images/ButtonArrow.gif" width="12"></td>
+								<td>&nbsp;</td>
+							</tr>
+						</table>
+					</button>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html 1.4.1.src/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html	2006-06-17 16:25:34.000000000 -0500
@@ -0,0 +1,109 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: frmcreatefolder.html
+ * 	Page used to create new folders in the current folder.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<link href="browser.css" type="text/css" rel="stylesheet">
+		<script type="text/javascript" src="js/common.js"></script>
+		<script language="javascript">
+
+function SetCurrentFolder( resourceType, folderPath )
+{
+	oConnector.ResourceType = resourceType ;
+	oConnector.CurrentFolder = folderPath
+}
+
+function CreateFolder()
+{
+	var sFolderName ;
+	
+	while ( true ) 
+	{
+		sFolderName = prompt( 'Type the name of the new folder:', '' ) ;
+	
+		if ( sFolderName == null )
+			return ;
+		else if ( sFolderName.length == 0 )
+			alert( 'Please type the folder name' ) ;
+		else
+			break ;
+	}
+	
+	oConnector.SendCommand( 'CreateFolder', 'NewFolderName=' + escape( sFolderName) , CreateFolderCallBack ) ;
+}
+
+function CreateFolderCallBack( fckXml )
+{
+	if ( oConnector.CheckError( fckXml ) == 0 )
+		window.parent.frames['frmResourcesList'].Refresh() ;
+	
+	/*
+	// Get the current folder path.
+	var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;
+	var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;
+	
+	switch ( iErrorNumber )
+	{
+		case 0 :
+			window.parent.frames['frmResourcesList'].Refresh() ;
+			break ;
+		case 101 :
+			alert( 'Folder already exists' ) ;
+			break ;
+		case 102 :
+			alert( 'Invalid folder name' ) ;
+			break ;
+		case 103 :
+			alert( 'You have no permissions to create the folder' ) ;
+			break ;
+		case 110 :
+			alert( 'Unknown error creating folder' ) ;
+			break ;
+		default :
+			alert( 'Error creating folder. Error number: ' + iErrorNumber ) ;
+			break ;
+	}
+	*/
+}
+
+window.onload = function()
+{
+	window.top.IsLoadedCreateFolder = true ;
+}
+		</script>
+	</head>
+	<body bottomMargin="0" topMargin="0">
+		<table height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0">
+			<tr>
+				<td>
+					<button type="button" style="WIDTH: 100%" onclick="CreateFolder();">
+						<table cellSpacing="0" cellPadding="0" border="0">
+							<tr>
+								<td><img height="16" alt="" src="images/Folder.gif" width="16"></td>
+								<td>&nbsp;</td>
+								<td nowrap>Create New Folder</td>
+							</tr>
+						</table>
+					</button>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/frmfolders.html 1.4.1.src/fckeditor/editor/filemanager/browser/default/frmfolders.html
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/frmfolders.html	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/browser/default/frmfolders.html	2006-06-17 16:25:34.000000000 -0500
@@ -0,0 +1,192 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: frmfolders.html
+ * 	This page shows the list of folders available in the parent folder 
+ * 	of the current folder.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<link href="browser.css" type="text/css" rel="stylesheet">
+		<script type="text/javascript" src="js/common.js"></script>
+		<script language="javascript">
+
+var sActiveFolder ;
+
+var bIsLoaded = false ;
+var iIntervalId ;
+
+var oListManager = new Object() ;
+
+oListManager.Init = function()
+{
+	this.Table = document.getElementById('tableFiles') ;
+	this.UpRow = document.getElementById('trUp') ;
+
+	this.TableRows = new Object() ;	
+}
+
+oListManager.Clear = function()
+{
+	// Remove all other rows available.
+	while ( this.Table.rows.length > 1 )
+		this.Table.deleteRow(1) ;
+
+	// Reset the TableRows collection.
+	this.TableRows = new Object() ;
+}
+
+oListManager.AddItem = function( folderName, folderPath )
+{
+	// Create the new row.
+	var oRow = this.Table.insertRow(-1) ;
+	oRow.className = 'FolderListFolder' ;
+
+	// Build the link to view the folder.
+	var sLink = '<a href="#" onclick="OpenFolder(\'' + folderPath + '\');return false;">' ;
+
+	// Add the folder icon cell.
+	var oCell = oRow.insertCell(-1) ;
+	oCell.width = 16 ;
+	oCell.innerHTML = sLink + '<img alt="" src="images/spacer.gif" width="16" height="16" border="0"></a>' ;
+
+	// Add the folder name cell.
+	oCell = oRow.insertCell(-1) ;
+	oCell.noWrap = true ;
+	oCell.innerHTML = '&nbsp;' + sLink + folderName + '</a>' ;
+	
+	this.TableRows[ folderPath ] = oRow ;
+}
+
+oListManager.ShowUpFolder = function( upFolderPath )
+{
+	this.UpRow.style.display = ( upFolderPath != null ? '' : 'none' ) ;
+	
+	if ( upFolderPath != null )
+	{
+		document.getElementById('linkUpIcon').onclick = document.getElementById('linkUp').onclick = function()
+		{
+			LoadFolders( upFolderPath ) ;
+			return false ;
+		}
+	}
+}
+
+function CheckLoaded()
+{
+	if ( window.top.IsLoadedActualFolder 
+		&& window.top.IsLoadedCreateFolder 
+		&& window.top.IsLoadedUpload
+		&& window.top.IsLoadedResourcesList )
+	{
+		window.clearInterval( iIntervalId ) ;
+		bIsLoaded = true ;
+		OpenFolder( sActiveFolder ) ;
+	}
+}
+
+function OpenFolder( folderPath )
+{
+	sActiveFolder = folderPath ;
+
+	if ( ! bIsLoaded )
+	{
+		if ( ! iIntervalId )
+			iIntervalId = window.setInterval( CheckLoaded, 100 ) ;
+		return ;
+	}
+
+	// Change the style for the select row (to show the opened folder).
+	for ( var sFolderPath in oListManager.TableRows )
+	{
+		oListManager.TableRows[ sFolderPath ].className = 
+			( sFolderPath == folderPath ? 'FolderListCurrentFolder' : 'FolderListFolder' ) ;
+	}
+
+	// Set the current folder in all frames.
+	window.parent.frames['frmActualFolder'].SetCurrentFolder( oConnector.ResourceType, folderPath ) ;
+	window.parent.frames['frmCreateFolder'].SetCurrentFolder( oConnector.ResourceType, folderPath ) ;
+	window.parent.frames['frmUpload'].SetCurrentFolder( oConnector.ResourceType, folderPath ) ;
+	
+	// Load the resources list for this folder.
+	window.parent.frames['frmResourcesList'].LoadResources( oConnector.ResourceType, folderPath ) ;
+}
+
+function LoadFolders( folderPath )
+{
+	// Clear the folders list.
+	oListManager.Clear() ;
+
+	// Get the parent folder path.
+	var sParentFolderPath ;
+	if ( folderPath != '/' )
+		sParentFolderPath = folderPath.substring( 0, folderPath.lastIndexOf( '/', folderPath.length - 2 ) + 1 ) ;
+
+	// Show/Hide the Up Folder.
+	oListManager.ShowUpFolder( sParentFolderPath ) ;
+	
+	if ( folderPath != '/' )
+	{
+		sActiveFolder = folderPath ;
+		oConnector.CurrentFolder = sParentFolderPath
+		oConnector.SendCommand( 'GetFolders', null, GetFoldersCallBack ) ;
+	}
+	else
+		OpenFolder( '/' ) ;
+}
+
+function GetFoldersCallBack( fckXml )
+{
+	if ( oConnector.CheckError( fckXml ) != 0 )
+		return ;
+		
+	// Get the current folder path.
+	var oNode = fckXml.SelectSingleNode( 'Connector/CurrentFolder' ) ;
+	var sCurrentFolderPath = oNode.attributes.getNamedItem('path').value ;
+	
+	var oNodes = fckXml.SelectNodes( 'Connector/Folders/Folder' ) ;
+	
+	for ( var i = 0 ; i < oNodes.length ; i++ )
+	{
+		var sFolderName = oNodes[i].attributes.getNamedItem('name').value ;
+		oListManager.AddItem( sFolderName, sCurrentFolderPath + sFolderName + "/" ) ;
+	}
+	
+	OpenFolder( sActiveFolder ) ;
+}
+
+function SetResourceType( type )
+{
+	oConnector.ResourceType = type ;
+	LoadFolders( '/' ) ;
+}
+
+window.onload = function()
+{
+	oListManager.Init() ;
+	LoadFolders( '/' ) ;
+}
+		</script>
+	</head>
+	<body class="FileArea" bottomMargin="10" leftMargin="10" topMargin="10" rightMargin="10">
+		<table id="tableFiles" cellSpacing="0" cellPadding="0" width="100%" border="0">
+			<tr id="trUp" style="DISPLAY: none">
+				<td width="16"><a id="linkUpIcon" href="#"><img alt="" src="images/FolderUp.gif" width="16" height="16" border="0"></a></td>
+				<td nowrap width="100%">&nbsp;<a id="linkUp" href="#">..</a></td>
+			</tr>
+		</table>
+	</body>
+</html>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/frmresourceslist.html 1.4.1.src/fckeditor/editor/filemanager/browser/default/frmresourceslist.html
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/frmresourceslist.html	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/browser/default/frmresourceslist.html	2006-09-03 13:05:04.000000000 -0500
@@ -0,0 +1,145 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: frmresourceslist.html
+ * 	This page shows all resources available in a folder in the File Browser.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<link href="browser.css" type="text/css" rel="stylesheet" />
+	<script type="text/javascript" src="js/common.js"></script>
+	<script type="text/javascript">
+
+var oListManager = new Object() ;
+
+oListManager.Clear = function()
+{
+	document.body.innerHTML = '' ;
+}
+
+oListManager.GetFolderRowHtml = function( folderName, folderPath )
+{
+	// Build the link to view the folder.
+	var sLink = '<a href="#" onclick="OpenFolder(\'' + folderPath.replace( /'/g, '\\\'') + '\');return false;">' ;
+
+	return '<tr>' +
+			'<td width="16">' +
+				sLink +
+				'<img alt="" src="images/Folder.gif" width="16" height="16" border="0"></a>' +
+			'</td><td nowrap colspan="2">&nbsp;' +
+				sLink + 
+				folderName + 
+				'</a>' +
+		'</td></tr>' ;
+}
+
+oListManager.GetFileRowHtml = function( fileName, fileUrl, fileSize )
+{
+	// Build the link to view the folder.
+	var sLink = '<a href="#" onclick="OpenFile(\'' + fileUrl.replace( /'/g, '\\\'') + '\');return false;">' ;
+
+	// Get the file icon.
+	var sIcon = oIcons.GetIcon( fileName ) ;
+
+	return '<tr>' +
+			'<td width="16">' +
+				sLink + 
+				'<img alt="" src="images/icons/' + sIcon + '.gif" width="16" height="16" border="0"></a>' +
+			'</td><td>&nbsp;' +
+				sLink + 
+				fileName + 
+				'</a>' +
+			'</td><td align="right" nowrap>&nbsp;' +
+				fileSize + 
+				' KB' +
+		'</td></tr>' ;
+}
+
+function OpenFolder( folderPath )
+{
+	// Load the resources list for this folder.
+	window.parent.frames['frmFolders'].LoadFolders( folderPath ) ;
+}
+
+function OpenFile( fileUrl )
+{
+	window.top.opener.SetUrl( fileUrl ) ;
+	window.top.close() ;
+	window.top.opener.focus() ;
+}
+
+function LoadResources( resourceType, folderPath )
+{
+	oListManager.Clear() ;
+	oConnector.ResourceType = resourceType ;
+	oConnector.CurrentFolder = folderPath
+	oConnector.SendCommand( 'GetFoldersAndFiles', null, GetFoldersAndFilesCallBack ) ;
+}
+
+function Refresh()
+{
+	LoadResources( oConnector.ResourceType, oConnector.CurrentFolder ) ;
+}
+
+function GetFoldersAndFilesCallBack( fckXml )
+{
+	if ( oConnector.CheckError( fckXml ) != 0 )
+		return ;
+
+	// Get the current folder path.
+	var oNode = fckXml.SelectSingleNode( 'Connector/CurrentFolder' ) ;
+	var sCurrentFolderPath	= oNode.attributes.getNamedItem('path').value ;
+	var sCurrentFolderUrl	= oNode.attributes.getNamedItem('url').value ;
+
+//	var dTimer = new Date() ;
+
+	var oHtml = new StringBuilder( '<table id="tableFiles" cellspacing="1" cellpadding="0" width="100%" border="0">' ) ;
+
+	// Add the Folders.	
+	var oNodes = fckXml.SelectNodes( 'Connector/Folders/Folder' ) ;
+	for ( var i = 0 ; i < oNodes.length ; i++ )
+	{
+		var sFolderName = oNodes[i].attributes.getNamedItem('name').value ;
+		oHtml.Append( oListManager.GetFolderRowHtml( sFolderName, sCurrentFolderPath + sFolderName + "/" ) ) ;
+	}
+
+	// Add the Files.	
+	var oNodes = fckXml.SelectNodes( 'Connector/Files/File' ) ;
+	for ( var i = 0 ; i < oNodes.length ; i++ )
+	{
+		var oNode = oNodes[i] ;
+		var sFileName = oNode.attributes.getNamedItem('name').value ;
+		var sFileSize = oNode.attributes.getNamedItem('size').value ;
+		oHtml.Append( oListManager.GetFileRowHtml( sFileName, sCurrentFolderUrl + sFileName, sFileSize ) ) ;
+	}
+
+	oHtml.Append( '</table>' ) ;
+	
+	document.body.innerHTML = oHtml.ToString() ;
+
+//	window.top.document.title = 'Finished processing in ' + ( ( ( new Date() ) - dTimer ) / 1000 ) + ' seconds' ;
+
+}
+
+window.onload = function()
+{
+	window.top.IsLoadedResourcesList = true ;
+}
+	</script>
+</head>
+<body class="FileArea" bottommargin="10" leftmargin="10" topmargin="10" rightmargin="10">
+</body>
+</html>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/frmresourcetype.html 1.4.1.src/fckeditor/editor/filemanager/browser/default/frmresourcetype.html
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/frmresourcetype.html	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/browser/default/frmresourcetype.html	2006-06-17 16:25:34.000000000 -0500
@@ -0,0 +1,61 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: frmresourcetype.html
+ * 	This page shows the list of available resource types.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<link href="browser.css" type="text/css" rel="stylesheet">
+		<script type="text/javascript" src="js/common.js"></script>
+		<script language="javascript">
+
+function SetResourceType( type )
+{
+	window.parent.frames["frmFolders"].SetResourceType( type ) ;
+}
+
+var aTypes = [
+	['File','File'],
+	['Image','Image'],
+	['Flash','Flash'],
+	['Media','Media']
+] ;
+
+window.onload = function()
+{
+	for ( var i = 0 ; i < aTypes.length ; i++ )
+	{
+		if ( oConnector.ShowAllTypes || aTypes[i][0] == oConnector.ResourceType )
+			AddSelectOption( document.getElementById('cmbType'), aTypes[i][1], aTypes[i][0] ) ;
+	}
+}
+
+		</script>
+	</head>
+	<body bottomMargin="0" topMargin="0">
+		<table height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0">
+			<tr>
+				<td nowrap>
+					Resource Type<BR>
+					<select id="cmbType" style="WIDTH: 100%" onchange="SetResourceType(this.value);">
+					</select>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/frmupload.html 1.4.1.src/fckeditor/editor/filemanager/browser/default/frmupload.html
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/frmupload.html	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/browser/default/frmupload.html	2006-06-17 16:25:34.000000000 -0500
@@ -0,0 +1,109 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: frmupload.html
+ * 	Page used to upload new files in the current folder.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<link href="browser.css" type="text/css" rel="stylesheet" />
+		<script type="text/javascript" src="js/common.js"></script>
+		<script type="text/javascript">
+
+function SetCurrentFolder( resourceType, folderPath )
+{
+	var sUrl = oConnector.ConnectorUrl + 'Command=FileUpload' ;
+	sUrl += '&Type=' + resourceType ;
+	sUrl += '&CurrentFolder=' + escape( folderPath ) ;
+	
+	document.getElementById('frmUpload').action = sUrl ;
+}
+
+function OnSubmit()
+{
+	if ( document.getElementById('NewFile').value.length == 0 )
+	{
+		alert( 'Please select a file from your computer' ) ;
+		return false ;
+	}
+
+	// Set the interface elements.
+	document.getElementById('eUploadMessage').innerHTML = 'Upload a new file in this folder (Upload in progress, please wait...)' ;
+	document.getElementById('btnUpload').disabled = true ;
+	
+	return true ;
+}
+
+function OnUploadCompleted( errorNumber, data )
+{
+	// Reset the Upload Worker Frame.
+	window.parent.frames['frmUploadWorker'].location = '../../../../../fckblank.html' ;
+	
+	// Reset the upload form (On IE we must do a little trick to avout problems).
+	if ( document.all )
+		document.getElementById('NewFile').outerHTML = '<input id="NewFile" name="NewFile" style="WIDTH: 100%" type="file">' ;
+	else
+		document.getElementById('frmUpload').reset() ;
+	
+	// Reset the interface elements.
+	document.getElementById('eUploadMessage').innerHTML = 'Upload a new file in this folder' ;
+	document.getElementById('btnUpload').disabled = false ;
+	
+	switch ( errorNumber )
+	{
+		case 0 :
+			window.parent.frames['frmResourcesList'].Refresh() ;
+			break ;
+		case 1 :	// Custom error.
+			alert( data ) ;
+			break ;
+		case 201 :
+			window.parent.frames['frmResourcesList'].Refresh() ;
+			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + data + '"' ) ;
+			break ;
+		case 202 :
+			alert( 'Invalid file' ) ;
+			break ;
+		default :
+			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
+			break ;
+	}
+}
+
+window.onload = function()
+{
+	window.top.IsLoadedUpload = true ;
+}
+		</script>
+	</head>
+	<body bottommargin="0" topmargin="0">
+		<form id="frmUpload" action="" target="frmUploadWorker" method="post" enctype="multipart/form-data" onsubmit="return OnSubmit();">
+			<table height="100%" cellspacing="0" cellpadding="0" width="100%" border="0">
+				<tr>
+					<td nowrap="nowrap">
+						<span id="eUploadMessage">Upload a new file in this folder</span><br>
+						<table cellspacing="0" cellpadding="0" width="100%" border="0">
+							<tr>
+								<td width="100%"><input id="NewFile" name="NewFile" style="WIDTH: 100%" type="file"></td>
+								<td nowrap="nowrap">&nbsp;<input id="btnUpload" type="submit" value="Upload"></td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+			</table>
+		</form>
+	</body>
+</html>
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/ButtonArrow.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/ButtonArrow.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/Folder32.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/Folder32.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/Folder.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/Folder.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/FolderOpened32.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/FolderOpened32.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/FolderOpened.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/FolderOpened.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/FolderUp.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/FolderUp.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/ai.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/ai.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/avi.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/avi.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/bmp.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/bmp.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/cs.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/cs.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/default.icon.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/default.icon.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/dll.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/dll.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/doc.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/doc.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/exe.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/exe.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/fla.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/fla.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/gif.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/gif.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/htm.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/htm.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/html.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/html.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/jpg.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/jpg.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/js.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/js.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/mdb.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/mdb.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/mp3.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/mp3.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/pdf.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/pdf.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/ppt.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/ppt.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/rdp.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/rdp.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/swf.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/swf.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/swt.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/swt.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/txt.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/txt.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/vsd.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/vsd.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/xls.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/xls.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/xml.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/xml.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/zip.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/32/zip.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/ai.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/ai.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/avi.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/avi.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/bmp.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/bmp.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/cs.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/cs.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/default.icon.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/default.icon.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/dll.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/dll.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/doc.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/doc.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/exe.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/exe.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/fla.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/fla.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/gif.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/gif.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/htm.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/htm.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/html.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/html.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/jpg.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/jpg.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/js.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/js.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/mdb.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/mdb.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/mp3.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/mp3.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/pdf.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/pdf.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/ppt.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/ppt.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/rdp.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/rdp.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/swf.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/swf.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/swt.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/swt.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/txt.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/txt.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/vsd.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/vsd.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/xls.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/xls.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/xml.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/xml.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/icons/zip.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/icons/zip.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/images/spacer.gif and 1.4.1.src/fckeditor/editor/filemanager/browser/default/images/spacer.gif differ
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/js/common.js 1.4.1.src/fckeditor/editor/filemanager/browser/default/js/common.js
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/js/common.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/browser/default/js/common.js	2006-09-03 13:05:04.000000000 -0500
@@ -0,0 +1,51 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: common.js
+ * 	Common objects and functions shared by all pages that compose the
+ * 	File Browser dialog window.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+function AddSelectOption( selectElement, optionText, optionValue )
+{
+	var oOption = document.createElement("OPTION") ;
+
+	oOption.text	= optionText ;
+	oOption.value	= optionValue ;	
+
+	selectElement.options.add(oOption) ;
+
+	return oOption ;
+}
+
+var oConnector	= window.parent.oConnector ;
+var oIcons		= window.parent.oIcons ;
+
+
+function StringBuilder( value )
+{
+    this._Strings = new Array( value || '' ) ;
+}
+
+StringBuilder.prototype.Append = function( value )
+{
+    if ( value )
+        this._Strings.push( value ) ;
+}
+
+StringBuilder.prototype.ToString = function()
+{
+    return this._Strings.join( '' ) ;
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/js/fckxml.js 1.4.1.src/fckeditor/editor/filemanager/browser/default/js/fckxml.js
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/browser/default/js/fckxml.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/browser/default/js/fckxml.js	2006-06-17 16:25:36.000000000 -0500
@@ -0,0 +1,109 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckxml.js
+ * 	Defines the FCKXml object that is used for XML data calls
+ * 	and XML processing.
+ * 	This script is shared by almost all pages that compose the 
+ * 	File Browser frameset.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKXml = function()
+{}
+
+FCKXml.prototype.GetHttpRequest = function()
+{
+	if ( window.XMLHttpRequest )		// Gecko
+		return new XMLHttpRequest() ;
+	else if ( window.ActiveXObject )	// IE
+		return new ActiveXObject("MsXml2.XmlHttp") ;
+}
+
+FCKXml.prototype.LoadUrl = function( urlToCall, asyncFunctionPointer )
+{
+	var oFCKXml = this ;
+
+	var bAsync = ( typeof(asyncFunctionPointer) == 'function' ) ;
+
+	var oXmlHttp = this.GetHttpRequest() ;
+		
+	oXmlHttp.open( "GET", urlToCall, bAsync ) ;
+	
+	if ( bAsync )
+	{	
+		oXmlHttp.onreadystatechange = function() 
+		{
+			if ( oXmlHttp.readyState == 4 )
+			{
+				oFCKXml.DOMDocument = oXmlHttp.responseXML ;
+				if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )
+					asyncFunctionPointer( oFCKXml ) ;
+				else
+					alert( 'XML request error: ' + oXmlHttp.statusText + ' (' + oXmlHttp.status + ')' ) ;
+			}
+		}
+	}
+	
+	oXmlHttp.send( null ) ;
+	
+	if ( ! bAsync )
+	{
+		if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )
+			this.DOMDocument = oXmlHttp.responseXML ;
+		else
+		{
+			alert( 'XML request error: ' + oXmlHttp.statusText + ' (' + oXmlHttp.status + ')' ) ;
+		}
+	}
+}
+
+FCKXml.prototype.SelectNodes = function( xpath )
+{
+	if ( document.all )		// IE
+		return this.DOMDocument.selectNodes( xpath ) ;
+	else					// Gecko
+	{
+		var aNodeArray = new Array();
+
+		var xPathResult = this.DOMDocument.evaluate( xpath, this.DOMDocument, 
+				this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), XPathResult.ORDERED_NODE_ITERATOR_TYPE, null) ;
+		if ( xPathResult ) 
+		{
+			var oNode = xPathResult.iterateNext() ;
+ 			while( oNode )
+ 			{
+ 				aNodeArray[aNodeArray.length] = oNode ;
+ 				oNode = xPathResult.iterateNext();
+ 			}
+		} 
+		return aNodeArray ;
+	}
+}
+
+FCKXml.prototype.SelectSingleNode = function( xpath ) 
+{
+	if ( document.all )		// IE
+		return this.DOMDocument.selectSingleNode( xpath ) ;
+	else					// Gecko
+	{
+		var xPathResult = this.DOMDocument.evaluate( xpath, this.DOMDocument,
+				this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), 9, null);
+
+		if ( xPathResult && xPathResult.singleNodeValue )
+			return xPathResult.singleNodeValue ;
+		else	
+			return null ;
+	}
+}
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/upload/php/config.php 1.4.1.src/fckeditor/editor/filemanager/upload/php/config.php
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/upload/php/config.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/upload/php/config.php	2006-09-03 13:05:04.000000000 -0500
@@ -0,0 +1,49 @@
+<?php 
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ *         http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ *         http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: config.php
+ *     Configuration file for the PHP File Uploader.
+ * 
+ * File Authors:
+ *         Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+include ('../../../../../lib-common.php');
+global $Config ;
+
+// SECURITY: You must explicitelly enable this "uploader". 
+$Config['Enabled'] = true ;
+
+// Path to uploaded files relative to the document root.
+$Config['UserFilesPath'] = $_CONF['site_url'] . $_CONF_FCK['imagelibrary'] ;
+
+// Fill the following value it you prefer to specify the absolute path for the
+// user files directory. Usefull if you are using a virtual directory, symbolic
+// link or alias. Examples: 'C:\\MySite\\UserFiles\\' or '/root/mysite/UserFiles/'.
+// Attention: The above 'UserFilesPath' must point to the same directory.
+$Config['UserFilesAbsolutePath'] = $_CONF['path_html'] . $_CONF_FCK['imagelibrary'];
+
+// Due to security issues with Apache modules, it is reccomended to leave the
+// following setting enabled.
+$Config['ForceSingleExtension'] = true ;
+
+$Config['AllowedExtensions']['File']    = array() ;
+$Config['DeniedExtensions']['File']        = array('php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi') ;
+
+$Config['AllowedExtensions']['Image']    = array('jpg','gif','jpeg','png') ;
+$Config['DeniedExtensions']['Image']    = array() ;
+
+$Config['AllowedExtensions']['Flash']    = array('swf','fla') ;
+$Config['DeniedExtensions']['Flash']    = array() ;
+
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/upload/php/upload.php 1.4.1.src/fckeditor/editor/filemanager/upload/php/upload.php
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/upload/php/upload.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/upload/php/upload.php	2006-06-17 16:25:36.000000000 -0500
@@ -0,0 +1,114 @@
+<?php 
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: upload.php
+ * 	This is the "File Uploader" for PHP.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+require('config.php') ;
+require('util.php') ;
+
+// This is the function that sends the results of the uploading process.
+function SendResults( $errorNumber, $fileUrl = '', $fileName = '', $customMsg = '' )
+{
+	echo '<script type="text/javascript">' ;
+	echo 'window.parent.OnUploadCompleted(' . $errorNumber . ',"' . str_replace( '"', '\\"', $fileUrl ) . '","' . str_replace( '"', '\\"', $fileName ) . '", "' . str_replace( '"', '\\"', $customMsg ) . '") ;' ;
+	echo '</script>' ;
+	exit ;
+}
+
+// Check if this uploader has been enabled.
+if ( !$Config['Enabled'] )
+	SendResults( '1', '', '', 'This file uploader is disabled. Please check the "editor/filemanager/upload/php/config.php" file' ) ;
+
+// Check if the file has been correctly uploaded.
+if ( !isset( $_FILES['NewFile'] ) || is_null( $_FILES['NewFile']['tmp_name'] ) || $_FILES['NewFile']['name'] == '' )
+	SendResults( '202' ) ;
+
+// Get the posted file.
+$oFile = $_FILES['NewFile'] ;
+
+// Get the uploaded file name extension.
+$sFileName = $oFile['name'] ;
+
+// Replace dots in the name with underscores (only one dot can be there... security issue).
+if ( $Config['ForceSingleExtension'] )
+	$sFileName = preg_replace( '/\\.(?![^.]*$)/', '_', $sFileName ) ;
+
+$sOriginalFileName = $sFileName ;
+
+// Get the extension.
+$sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;
+$sExtension = strtolower( $sExtension ) ;
+
+// The the file type (from the QueryString, by default 'File').
+$sType = isset( $_GET['Type'] ) ? $_GET['Type'] : 'File' ;
+
+// Check if it is an allowed type.
+if ( !in_array( $sType, array('File','Image','Flash','Media') ) )
+    SendResults( 1, '', '', 'Invalid type specified' ) ;
+
+// Get the allowed and denied extensions arrays.
+$arAllowed	= $Config['AllowedExtensions'][$sType] ;
+$arDenied	= $Config['DeniedExtensions'][$sType] ;
+
+// Check if it is an allowed extension.
+if ( ( count($arAllowed) > 0 && !in_array( $sExtension, $arAllowed ) ) || ( count($arDenied) > 0 && in_array( $sExtension, $arDenied ) ) )
+	SendResults( '202' ) ;
+
+$sErrorNumber	= '0' ;
+$sFileUrl		= '' ;
+
+// Initializes the counter used to rename the file, if another one with the same name already exists.
+$iCounter = 0 ;
+
+// The the target directory.
+if ( isset( $Config['UserFilesAbsolutePath'] ) && strlen( $Config['UserFilesAbsolutePath'] ) > 0 )
+	$sServerDir = $Config['UserFilesAbsolutePath'] ;
+else 
+	$sServerDir = GetRootPath() . $Config["UserFilesPath"] ;
+
+while ( true )
+{
+	// Compose the file path.
+	$sFilePath = $sServerDir . $sFileName ;
+
+	// If a file with that name already exists.
+	if ( is_file( $sFilePath ) )
+	{
+		$iCounter++ ;
+		$sFileName = RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ;
+		$sErrorNumber = '201' ;
+	}
+	else
+	{
+		move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ;
+
+		if ( is_file( $sFilePath ) )
+		{
+			$oldumask = umask(0) ;
+			chmod( $sFilePath, 0777 ) ;
+			umask( $oldumask ) ;
+		}
+		
+		$sFileUrl = $Config["UserFilesPath"] . $sFileName ;
+
+		break ;
+	}
+}
+
+SendResults( $sErrorNumber, $sFileUrl, $sFileName ) ;
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/upload/php/util.php 1.4.1.src/fckeditor/editor/filemanager/upload/php/util.php
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/upload/php/util.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/upload/php/util.php	2006-06-17 16:25:37.000000000 -0500
@@ -0,0 +1,36 @@
+<?php 
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: util.php
+ * 	This is the File Manager Connector for ASP.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+function RemoveExtension( $fileName )
+{
+	return substr( $fileName, 0, strrpos( $fileName, '.' ) ) ;
+}
+
+function GetRootPath()
+{
+	$sRealPath = realpath( './' ) ;
+
+	$sSelfPath = $_SERVER['PHP_SELF'] ;
+	$sSelfPath = substr( $sSelfPath, 0, strrpos( $sSelfPath, '/' ) ) ;
+
+	return substr( $sRealPath, 0, strlen( $sRealPath ) - strlen( $sSelfPath ) ) ;
+}
+
+?>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/filemanager/upload/test.html 1.4.1.src/fckeditor/editor/filemanager/upload/test.html
--- 1.4.0sr5-1.src/fckeditor/editor/filemanager/upload/test.html	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/filemanager/upload/test.html	2006-06-17 16:25:37.000000000 -0500
@@ -0,0 +1,129 @@
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: test.html
+ * 	Test page for the "File Uploaders".
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html>
+	<head>
+		<title>FCKeditor - Uploaders Tests</title>
+		<script language="javascript">
+
+function SendFile()
+{
+	var sUploaderUrl = cmbUploaderUrl.value ;
+	
+	if ( sUploaderUrl.length == 0 )
+		sUploaderUrl = txtCustomUrl.value ;
+	
+	if ( sUploaderUrl.length == 0 )
+	{
+		alert( 'Please provide your custom URL or select a default one' ) ;
+		return ;
+	}
+	
+	eURL.innerHTML = sUploaderUrl ;
+	txtUrl.value = '' ;
+	
+	frmUpload.action = sUploaderUrl ;
+	frmUpload.submit() ;
+}
+
+function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
+{
+	switch ( errorNumber )
+	{
+		case 0 :	// No errors
+			txtUrl.value = fileUrl ;
+			alert( 'File uploaded with no errors' ) ;
+			break ;
+		case 1 :	// Custom error
+			alert( customMsg ) ;
+			break ;
+		case 10 :	// Custom warning
+			txtUrl.value = fileUrl ;
+			alert( customMsg ) ;
+			break ;
+		case 201 :
+			txtUrl.value = fileUrl ;
+			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
+			break ;
+		case 202 :
+			alert( 'Invalid file' ) ;
+			break ;
+		case 203 :
+			alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
+			break ;
+		default :
+			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
+			break ;
+	}
+}
+
+		</script>
+	</head>
+	<body>
+		<table cellSpacing="0" cellPadding="0" width="100%" border="0" height="100%">
+			<tr>
+				<td>
+					<table cellSpacing="0" cellPadding="0" width="100%" border="0">
+						<tr>
+							<td nowrap>
+								Select the "File Uploader" to use:<br>
+								<select id="cmbUploaderUrl">
+									<option selected value="asp/upload.asp">ASP</option>
+									<option value="aspx/upload.aspx">ASP.Net</option>
+									<option value="cfm/upload.cfm">ColdFusion</option>
+									<option value="lasso/upload.lasso">Lasso</option>
+									<option value="php/upload.php">PHP</option>
+									<option value="">(Custom)</option>
+								</select>
+							</td>
+							<td nowrap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+							<td width="100%">
+								Custom Uploader URL:<BR>
+								<input id="txtCustomUrl" style="WIDTH: 100%; BACKGROUND-COLOR: #dcdcdc" disabled type="text">
+							</td>
+						</tr>
+					</table>
+					<br>
+					<table cellSpacing="0" cellPadding="0" width="100%" border="0">
+						<tr>
+							<td noWrap>
+								<form id="frmUpload" target="UploadWindow" enctype="multipart/form-data" action="" method="post">
+									Upload a new file:<br>
+									<input type="file" name="NewFile"><br>
+									<input type="button" value="Send it to the Server" onclick="SendFile();">
+								</form>
+							</td>
+							<td style="WIDTH: 16px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+							<td vAlign="top" width="100%">
+								Uploaded File URL:<br>
+								<INPUT id="txtUrl" style="WIDTH: 100%" readonly type="text">
+							</td>
+						</tr>
+					</table>
+					<br>
+					Post URL: <span id="eURL">&nbsp;</span>
+				</td>
+			</tr>
+			<tr>
+				<td height="100%">
+					<iframe name="UploadWindow" width="100%" height="100%" src="../../fckblank.html"></iframe>
+				</td>
+			</tr>
+		</table>
+	</body>
+</html>
Binary files 1.4.0sr5-1.src/fckeditor/editor/images/arrow_ltr.gif and 1.4.1.src/fckeditor/editor/images/arrow_ltr.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/images/arrow_rtl.gif and 1.4.1.src/fckeditor/editor/images/arrow_rtl.gif differ
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/js/fckeditorcode_gecko_1.js 1.4.1.src/fckeditor/editor/js/fckeditorcode_gecko_1.js
--- 1.4.0sr5-1.src/fckeditor/editor/js/fckeditorcode_gecko_1.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/js/fckeditorcode_gecko_1.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,27 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * This file has been compacted for best loading performance.
- */
-var FCKDebug=new Object();if (FCKConfig.Debug){FCKDebug.Output=function(A,B){if (!FCKConfig.Debug) return;if (A!=null&&isNaN(A)) A=A.replace(/</g,"&lt;");if (!this.DebugWindow||this.DebugWindow.closed) this.DebugWindow=window.open('fckdebug.html','FCKeditorDebug','menubar=no,scrollbars=no,resizable=yes,location=no,toolbar=no,width=600,height=500',true);if (this.DebugWindow.Output) this.DebugWindow.Output(A,B);};}else FCKDebug.Output=function() {};
-var FCKTools=new Object();FCKTools.GetLinkedFieldValue=function(){return FCK.LinkedField.value;};FCKTools.AttachToLinkedFieldFormSubmit=function(A){var B=FCK.LinkedField.form;if (!B) return;if (FCKBrowserInfo.IsIE) B.attachEvent("onsubmit",A);else B.addEventListener('submit',A,true);if (!B.updateFCKeditor) B.updateFCKeditor=new Array();B.updateFCKeditor[B.updateFCKeditor.length]=A;if (!B.originalSubmit&&(typeof(B.submit)=='function'||(!B.submit.tagName&&!B.submit.length))){B.originalSubmit=B.submit;B.submit=FCKTools_SubmitReplacer;};};function FCKTools_SubmitReplacer(){if (this.updateFCKeditor){for (var i=0;i<this.updateFCKeditor.length;i++) this.updateFCKeditor[i]();};this.originalSubmit();};FCKTools.AddSelectOption=function(A,B,C,D){var E=A.createElement("OPTION");E.text=C;E.value=D;B.options.add(E);return E;};FCKTools.RemoveAllSelectOptions=function(A){for (var i=A.options.length-1;i>=0;i--){A.options.remove(i);};};FCKTools.SelectNoCase=function(A,B,C){var D=B.toString().toLowerCase();for (var i=0;i<A.options.length;i++){if (D==A.options[i].value.toLowerCase()){A.selectedIndex=i;return;};};if (C!=null) FCKTools.SelectNoCase(A,C);};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,"&amp;");A=A.replace(/"/g,"&quot;");A=A.replace(/</g,"&lt;");A=A.replace(/>/g,"&gt;");A=A.replace(/'/g,"&#39;");return A;};FCKTools.GetResultingArray=function(A,B){switch (typeof(A)){case "string":return A.split(B);case "function":return B();default:if (isArray(A)) return A;else return new Array();};};FCKTools.GetElementPosition=function(A){var c={ X:0,Y:0 };while (A){c.X+=A.offsetLeft;c.Y+=A.offsetTop;A=A.offsetParent;};return c;};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.Pause=function(A){var B=new Date();while (true){var C=new Date();if (A<C-B) return;};};FCKTools.ConvertStyleSizeToHtml=function(A){return A.endsWith('%')?A:parseInt(A);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.endsWith('%')?A:(A+'px');};
-var GECKO_BOGUS='<br _moz_editor_bogus_node="TRUE">';FCKTools.AppendStyleSheet=function(A,B){var e=A.createElement('LINK');e.rel='stylesheet';e.type='text/css';e.href=B;A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools.ClearElementAttributes=function(A){for (var i=0;i<A.attributes.length;i++){A.removeAttribute(A.attributes[i].name,0);};};FCKTools.GetAllChildrenIds=function(A){var B=new Array();var C=function(parent){for (var i=0;i<parent.childNodes.length;i++){var D=parent.childNodes[i].id;if (D&&D.length>0) B[B.length]=D;C(parent.childNodes[i]);};};C(A);return B;};FCKTools.RemoveOuterTags=function(e){var A=e.ownerDocument.createDocumentFragment();for (var i=0;i<e.childNodes.length;i++) A.appendChild(e.childNodes[i]);e.parentNode.replaceChild(A,e);};FCKTools.CreateXmlObject=function(A){switch (A){case 'XmlHttp':return new XMLHttpRequest();case 'DOMDocument':return document.implementation.createDocument('','',null);};return null;};
-var FCKRegexLib=new Object();FCKRegexLib.AposEntity=/&apos;/gi;FCKRegexLib.ObjectElements=/^(?:IMG|TABLE|TR|TD|INPUT|SELECT|TEXTAREA|HR|OBJECT)$/i;FCKRegexLib.BlockElements=/^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TD)$/i;FCKRegexLib.EmptyElements=/^(?:BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT)$/i;FCKRegexLib.NamedCommands=/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i;FCKRegexLib.BodyContents=/([\s\S]*\<body[^\>]*\>)([\s\S]*)(\<\/body\>[\s\S]*)/i;FCKRegexLib.ToReplace=/___fcktoreplace:([\w]+)/ig;FCKRegexLib.MetaHttpEquiv=/http-equiv\s*=\s*["']?([^"' ]+)/i;FCKRegexLib.HasBaseTag=/<base /i;FCKRegexLib.HeadOpener=/<head\s?[^>]*>/i;FCKRegexLib.HeadCloser=/<\/head\s*>/i;FCKRegexLib.TableBorderClass=/\s*FCK__ShowTableBorders\s*/;FCKRegexLib.ElementName=/^[A-Za-z_:][\w.-:]*$/;FCKRegexLib.ForceSimpleAmpersand=/___FCKAmp___/g;FCKRegexLib.SpaceNoClose=/\/>/g;FCKRegexLib.EmptyParagraph=/^<(p|div)>\s*<\/\1>$/i;FCKRegexLib.TagBody=/></;FCKRegexLib.StrongOpener=/<STRONG([ \>])/gi;FCKRegexLib.StrongCloser=/<\/STRONG>/gi;FCKRegexLib.EmOpener=/<EM([ \>])/gi;FCKRegexLib.EmCloser=/<\/EM>/gi;FCKRegexLib.GeckoEntitiesMarker=/#\?-\:/g;
-FCKLanguageManager.GetActiveLanguage=function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;};};return this.DefaultLanguage;};FCKLanguageManager.TranslateElements=function(A,B,C){var e=A.getElementsByTagName(B);for (var i=0;i<e.length;i++){var D=e[i].getAttribute('fckLang');if (D){var s=FCKLang[D];if (s) eval('e[i].'+C+' = s');};};};FCKLanguageManager.TranslatePage=function(A){this.TranslateElements(A,'INPUT','value');this.TranslateElements(A,'SPAN','innerHTML');this.TranslateElements(A,'LABEL','innerHTML');this.TranslateElements(A,'OPTION','innerHTML');};if (FCKLanguageManager.AvailableLanguages[FCKConfig.DefaultLanguage]) FCKLanguageManager.DefaultLanguage=FCKConfig.DefaultLanguage;else FCKLanguageManager.DefaultLanguage='en';FCKLanguageManager.ActiveLanguage=new Object();FCKLanguageManager.ActiveLanguage.Code=FCKLanguageManager.GetActiveLanguage();FCKLanguageManager.ActiveLanguage.Name=FCKLanguageManager.AvailableLanguages[FCKLanguageManager.ActiveLanguage.Code];FCK.Language=FCKLanguageManager;LoadLanguageFile();
-var FCKEvents;if (!(FCKEvents=NS.FCKEvents)){FCKEvents=NS.FCKEvents=function(A){this.Owner=A;this.RegisteredEvents=new Object();};FCKEvents.prototype.AttachEvent=function(A,B){if (!this.RegisteredEvents[A]) this.RegisteredEvents[A]=new Array();this.RegisteredEvents[A][this.RegisteredEvents[A].length]=B;};FCKEvents.prototype.FireEvent=function(A,B){var C=true;var D=this.RegisteredEvents[A];if (D){for (var i=0;i<D.length;i++) C=(D[i](this.Owner,B)&&C);};return C;};}
-var FCKXHtmlEntities=new Object();if (FCKConfig.ProcessHTMLEntities){FCKXHtmlEntities.Entities={' ':'nbsp','¡':'iexcl','¢':'cent','£':'pound','¤':'curren','¥':'yen','¦':'brvbar','§':'sect','¨':'uml','©':'copy','ª':'ordf','«':'laquo','¬':'not','­':'shy','®':'reg','¯':'macr','°':'deg','±':'plusmn','²':'sup2','³':'sup3','´':'acute','µ':'micro','¶':'para','·':'middot','¸':'cedil','¹':'sup1','º':'ordm','»':'raquo','¼':'frac14','½':'frac12','¾':'frac34','¿':'iquest','×':'times','÷':'divide','ƒ':'fnof','•':'bull','…':'hellip','′':'prime','″':'Prime','‾':'oline','⁄':'frasl','℘':'weierp','ℑ':'image','ℜ':'real','™':'trade','ℵ':'alefsym','←':'larr','↑':'uarr','→':'rarr','↓':'darr','↔':'harr','↵':'crarr','⇐':'lArr','⇑':'uArr','⇒':'rArr','⇓':'dArr','⇔':'hArr','∀':'forall','∂':'part','∃':'exist','∅':'empty','∇':'nabla','∈':'isin','∉':'notin','∋':'ni','∏':'prod','∑':'sum','−':'minus','∗':'lowast','√':'radic','∝':'prop','∞':'infin','∠':'ang','∧':'and','∨':'or','∩':'cap','∪':'cup','∫':'int','∴':'there4','∼':'sim','≅':'cong','≈':'asymp','≠':'ne','≡':'equiv','≤':'le','≥':'ge','⊂':'sub','⊃':'sup','⊄':'nsub','⊆':'sube','⊇':'supe','⊕':'oplus','⊗':'otimes','⊥':'perp','⋅':'sdot','◊':'loz','♠':'spades','♣':'clubs','♥':'hearts','♦':'diams','"':'quot','ˆ':'circ','˜':'tilde',' ':'ensp',' ':'emsp',' ':'thinsp','‌':'zwnj','‍':'zwj','‎':'lrm','‏':'rlm','–':'ndash','—':'mdash','‘':'lsquo','’':'rsquo','‚':'sbquo','“':'ldquo','”':'rdquo','„':'bdquo','†':'dagger','‡':'Dagger','‰':'permil','‹':'lsaquo','›':'rsaquo','€':'euro'};FCKXHtmlEntities.Chars='';for (var e in FCKXHtmlEntities.Entities) FCKXHtmlEntities.Chars+=e;if (FCKConfig.IncludeLatinEntities){var oEntities={'À':'Agrave','Á':'Aacute','Â':'Acirc','Ã':'Atilde','Ä':'Auml','Å':'Aring','Æ':'AElig','Ç':'Ccedil','È':'Egrave','É':'Eacute','Ê':'Ecirc','Ë':'Euml','Ì':'Igrave','Í':'Iacute','Î':'Icirc','Ï':'Iuml','Ð':'ETH','Ñ':'Ntilde','Ò':'Ograve','Ó':'Oacute','Ô':'Ocirc','Õ':'Otilde','Ö':'Ouml','Ø':'Oslash','Ù':'Ugrave','Ú':'Uacute','Û':'Ucirc','Ü':'Uuml','Ý':'Yacute','Þ':'THORN','ß':'szlig','à':'agrave','á':'aacute','â':'acirc','ã':'atilde','ä':'auml','å':'aring','æ':'aelig','ç':'ccedil','è':'egrave','é':'eacute','ê':'ecirc','ë':'euml','ì':'igrave','í':'iacute','î':'icirc','ï':'iuml','ð':'eth','ñ':'ntilde','ò':'ograve','ó':'oacute','ô':'ocirc','õ':'otilde','ö':'ouml','ø':'oslash','ù':'ugrave','ú':'uacute','û':'ucirc','ü':'uuml','ý':'yacute','þ':'thorn','ÿ':'yuml','Œ':'OElig','œ':'oelig','Š':'Scaron','š':'scaron','Ÿ':'Yuml'};for (var e in oEntities){FCKXHtmlEntities.Entities[e]=oEntities[e];FCKXHtmlEntities.Chars+=e;};oEntities=null;};if (FCKConfig.IncludeGreekEntities){var oEntities={'Α':'Alpha','Β':'Beta','Γ':'Gamma','Δ':'Delta','Ε':'Epsilon','Ζ':'Zeta','Η':'Eta','Θ':'Theta','Ι':'Iota','Κ':'Kappa','Λ':'Lambda','Μ':'Mu','Ν':'Nu','Ξ':'Xi','Ο':'Omicron','Π':'Pi','Ρ':'Rho','Σ':'Sigma','Τ':'Tau','Υ':'Upsilon','Φ':'Phi','Χ':'Chi','Ψ':'Psi','Ω':'Omega','α':'alpha','β':'beta','γ':'gamma','δ':'delta','ε':'epsilon','ζ':'zeta','η':'eta','θ':'theta','ι':'iota','κ':'kappa','λ':'lambda','μ':'mu','ν':'nu','ξ':'xi','ο':'omicron','π':'pi','ρ':'rho','ς':'sigmaf','σ':'sigma','τ':'tau','υ':'upsilon','φ':'phi','χ':'chi','ψ':'psi','ω':'omega'};for (var e in oEntities){FCKXHtmlEntities.Entities[e]=oEntities[e];FCKXHtmlEntities.Chars+=e;};oEntities=null;};FCKXHtmlEntities.EntitiesRegex=new RegExp('','');FCKXHtmlEntities.EntitiesRegex.compile('['+FCKXHtmlEntities.Chars+']|[^'+FCKXHtmlEntities.Chars+']+','g');}else{FCKXHtmlEntities.Entities={ ' ':'nbsp' };FCKXHtmlEntities.EntitiesRegex=/[ ]|[^ ]+/g;}
-var FCKXHtml=new Object();FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKXHtml.SpecialBlocks=new Array();this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);var D=this._GetMainXmlString();D=D.substr(7,D.length-15).trim();if (FCKBrowserInfo.IsGecko) D=D.replace(/<br\/>$/,'');D=D.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) D=D.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) D=FCKCodeFormatter.Format(D);for (var i=0;i<FCKXHtml.SpecialBlocks.length;i++){var E=new RegExp('___FCKsi___'+i);D=D.replace(E,FCKXHtml.SpecialBlocks[i]);};this.XML=null;return D};FCKXHtml._AppendAttribute=function(A,B,C){try{var D=this.XML.createAttribute(B);D.value=C?C:'';A.attributes.setNamedItem(D);}catch (e){};};FCKXHtml._AppendChildNodes=function(A,B,C){var D=0;if (B.hasChildNodes()){var E=B.childNodes;for (var i=0;i<E.length;i++){if (this._AppendNode(A,E[i])) D++;};};if (D==0){if (C&&FCKConfig.FillEmptyBlocks){this._AppendEntity(A,'nbsp');return;};if (!FCKRegexLib.EmptyElements.test(B.nodeName)) A.appendChild(this.XML.createTextNode(''));};};FCKXHtml._AppendNode=function(A,B){switch (B.nodeType){case 1:if (B.getAttribute('_fckfakelement')) return FCKXHtml._AppendNode(A,FCK.GetRealElement(B));if (FCKBrowserInfo.IsGecko&&B.hasAttribute('_moz_editor_bogus_node')) return false;if (B.getAttribute('_fckdelete')) return false;var C=B.nodeName;if (!FCKRegexLib.ElementName.test(C)) return false;C=C.toLowerCase();if (FCKBrowserInfo.IsGecko&&C=='br'&&B.hasAttribute('type')&&B.getAttribute('type',2)=='_moz') return false;if (B._fckxhtmljob&&B._fckxhtmljob==FCKXHtml.CurrentJobNum) return false;else B._fckxhtmljob=FCKXHtml.CurrentJobNum;var D=this._CreateNode(C);FCKXHtml._AppendAttributes(A,B,D,C);var E=FCKXHtml.TagProcessors[C];if (E){D=E(D,B);if (!D) break;}else this._AppendChildNodes(D,B,FCKRegexLib.BlockElements.test(C));A.appendChild(D);break;case 3:this._AppendTextNode(A,B.nodeValue.replaceNewLineChars(' '));break;case 8:try { A.appendChild(this.XML.createComment(B.nodeValue));}catch (e) { /* Do nothing... probably this is a wrong format comment. */};break;default:A.appendChild(this.XML.createComment("Element not supported - Type: "+B.nodeType+" Name: "+B.nodeName));break;};return true;};if (FCKConfig.ForceStrongEm){FCKXHtml._CreateNode=function(A){switch (A){case 'b':A='strong';break;case 'i':A='em';break;};return this.XML.createElement(A);};}else{FCKXHtml._CreateNode=function(A){return this.XML.createElement(A);};};FCKXHtml._AppendSpecialItem=function(A){return '___FCKsi___'+FCKXHtml.SpecialBlocks.addItem(A);};FCKXHtml._AppendTextNode=function(A,B){var C=B.match(FCKXHtmlEntities.EntitiesRegex);if (C){for (var i=0;i<C.length;i++){if (C[i].length==1){var D=FCKXHtmlEntities.Entities[C[i]];if (D!=null){this._AppendEntity(A,D);continue;};};A.appendChild(this.XML.createTextNode(C[i]));};};};FCKXHtml.TagProcessors=new Object();FCKXHtml.TagProcessors['img']=function(A){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');return A;};FCKXHtml.TagProcessors['script']=function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;};FCKXHtml.TagProcessors['style']=function(A,B){if (B.getAttribute('_fcktemp')) return null;if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.innerHTML)));return A;};FCKXHtml.TagProcessors['title']=function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;};FCKXHtml.TagProcessors['base']=function(A,B){if (B.getAttribute('_fcktemp')) return null;return A;};FCKXHtml.TagProcessors['link']=function(A,B){if (B.getAttribute('_fcktemp')) return null;return A;};FCKXHtml.TagProcessors['table']=function(A,B){var C=A.attributes.getNamedItem('class');if (C&&FCKRegexLib.TableBorderClass.test(C.nodeValue)){var D=C.nodeValue.replace(FCKRegexLib.TableBorderClass,'');if (D.length==0) A.attributes.removeNamedItem('class');else FCKXHtml._AppendAttribute(A,'class',D);};FCKXHtml._AppendChildNodes(A,B,false);return A;}
-FCKXHtml._GetMainXmlString=function(){var A=new XMLSerializer();return A.serializeToString(this.MainNode).replace(FCKRegexLib.GeckoEntitiesMarker,'&');};FCKXHtml._AppendEntity=function(A,B){A.appendChild(this.XML.createTextNode('#?-:'+B+';'));};FCKXHtml._AppendAttributes=function(A,B,C){var D=B.attributes;for (var n=0;n<D.length;n++){var E=D[n];if (E.specified){var F=E.nodeName.toLowerCase();var G;if (F=='_fckxhtmljob') continue;else if (F.indexOf('_moz')==0) continue;else if (F=='class') G=E.nodeValue;else if (E.nodeValue===true) G=F;else G=B.getAttribute(F,2);if (FCKConfig.ForceSimpleAmpersand&&G.replace) G=G.replace(/&/g,'___FCKAmp___');this._AppendAttribute(C,F,G);};};}
-var FCKCodeFormatter;if (!(FCKCodeFormatter=NS.FCKCodeFormatter)){FCKCodeFormatter=NS.FCKCodeFormatter=new Object();FCKCodeFormatter.Regex=new Object();FCKCodeFormatter.Regex.BlocksOpener=/\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|AREA|OPTION)[^\>]*\>/gi;FCKCodeFormatter.Regex.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|AREA|OPTION)[^\>]*\>/gi;FCKCodeFormatter.Regex.NewLineTags=/\<(BR|HR)[^\>]\>/gi;FCKCodeFormatter.Regex.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;FCKCodeFormatter.Regex.LineSplitter=/\s*\n+\s*/g;FCKCodeFormatter.Regex.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/\>]/i;FCKCodeFormatter.Regex.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \>]/i;FCKCodeFormatter.Regex.FormatIndentatorRemove=new RegExp(FCKConfig.FormatIndentator);FCKCodeFormatter.Format=function(A){var B=A.replace(this.Regex.BlocksOpener,'\n$&');;B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;i<D.length;i++){var E=D[i];if (E.length==0) continue;if (this.Regex.DecreaseIndent.test(E)) C=C.replace(this.Regex.FormatIndentatorRemove,'');B+=C+E+'\n';if (this.Regex.IncreaseIndent.test(E)) C+=FCKConfig.FormatIndentator;};return B.trim();};}
-var FCKUndo=new Object();FCKUndo.SaveUndoStep=function(){}
-FCK.Events=new FCKEvents(FCK);FCK.Toolbar=null;FCK.TempBaseTag=FCKConfig.BaseHref.length>0?'<base href="'+FCKConfig.BaseHref+'" _fcktemp="true"></base>':'';FCK.StartEditor=function(){this.EditorWindow=window.frames['eEditorArea'];this.EditorDocument=this.EditorWindow.document;this.SetHTML(FCKTools.GetLinkedFieldValue());FCKTools.AttachToLinkedFieldFormSubmit(this.UpdateLinkedField);FCKUndo.SaveUndoStep();this.SetStatus(FCK_STATUS_ACTIVE);};function Window_OnFocus(){FCK.Focus();};FCK.SetStatus=function(A){this.Status=A;if (A==FCK_STATUS_ACTIVE){window.onfocus=window.document.body.onfocus=Window_OnFocus;if (FCKConfig.StartupFocus) FCK.Focus();if (FCKBrowserInfo.IsIE) FCKScriptLoader.AddScript('js/fckeditorcode_ie_2.js');else FCKScriptLoader.AddScript('js/fckeditorcode_gecko_2.js');};this.Events.FireEvent('OnStatusChange',A);};FCK.GetHTML=function(A){var B;if (FCK.EditMode==FCK_EDITMODE_WYSIWYG){if (FCKBrowserInfo.IsIE) B=this.EditorDocument.body.innerHTML.replace(FCKRegexLib.ToReplace,'$1');else B=this.EditorDocument.body.innerHTML;}else B=document.getElementById('eSourceField').value;if (A) return FCKCodeFormatter.Format(B);else return B;};FCK.GetXHTML=function(A){var B=(FCK.EditMode==FCK_EDITMODE_SOURCE);if (B) this.SwitchEditMode();var C;if (FCKConfig.FullPage) C=FCKXHtml.GetXHTML(this.EditorDocument.getElementsByTagName('html')[0],true,A);else{if (FCKConfig.IgnoreEmptyParagraphValue&&this.EditorDocument.body.innerHTML=='<P>&nbsp;</P>') C='';else C=FCKXHtml.GetXHTML(this.EditorDocument.body,false,A);};if (B) this.SwitchEditMode();if (FCKBrowserInfo.IsIE) C=C.replace(FCKRegexLib.ToReplace,'$1');if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) C=FCK.DocTypeDeclaration+'\n'+C;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) C=FCK.XmlDeclaration+'\n'+C;return FCKConfig.ProtectedSource.Revert(C);};FCK.UpdateLinkedField=function(){if (FCKConfig.EnableXHTML) FCK.LinkedField.value=FCK.GetXHTML(FCKConfig.FormatOutput);else FCK.LinkedField.value=FCK.GetHTML(FCKConfig.FormatOutput);FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');};FCK.ShowContextMenu=function(x,y){if (this.Status!=FCK_STATUS_COMPLETE) return;FCKContextMenu.Show(x,y);this.Events.FireEvent("OnContextMenu");};FCK.RegisteredDoubleClickHandlers=new Object();FCK.OnDoubleClick=function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName];if (B) B(A);};FCK.RegisterDoubleClickHandler=function(A,B){FCK.RegisteredDoubleClickHandlers[B.toUpperCase()]=A;};FCK.OnAfterSetHTML=function(){var A,i=0;while((A=FCKDocumentProcessors[i++])) A.ProcessDocument(FCK.EditorDocument);this.Events.FireEvent('OnAfterSetHTML');};var FCKDocumentProcessors=new Array();var FCKDocumentProcessors_CreateFakeImage=function(A,B){var C=FCK.EditorDocument.createElement('IMG');C.className=A;C.src=FCKConfig.FullBasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};var FCKAnchorsProcessor=new Object();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0&&(!C.getAttribute('href')||C.getAttribute('href').length==0)){var D=FCKDocumentProcessors_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);};};};FCKDocumentProcessors.addItem(FCKAnchorsProcessor);var FCKPageBreaksProcessor=new Object();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('CENTER');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.innerHTML.trim().length==0){var D=FCKDocumentProcessors_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);};};};FCKDocumentProcessors.addItem(FCKPageBreaksProcessor);var FCKFlashProcessor=new Object();FCKFlashProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('EMBED');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.src.endsWith('.swf',true)){var D=FCKDocumentProcessors_CreateFakeImage('FCK__Flash',C.cloneNode(true));D.setAttribute('_fckflash','true',0);FCKFlashProcessor.RefreshView(D,C);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);};};};FCKFlashProcessor.RefreshView=function(A,B){if (B.width>0) A.style.width=FCKTools.ConvertHtmlSizeToStyle(B.width);if (B.height>0) A.style.height=FCKTools.ConvertHtmlSizeToStyle(B.height);};FCKDocumentProcessors.addItem(FCKFlashProcessor);FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};
-FCK.Description="FCKeditor for Gecko Browsers";FCK.InitializeBehaviors=function(){if (FCKConfig.ShowBorders){var A=FCKTools.AppendStyleSheet(this.EditorDocument,FCKConfig.FullBasePath+'css/fck_showtableborders_gecko.css');A.setAttribute('_fcktemp','true');};var B=function(e){e.preventDefault();FCK.ShowContextMenu(e.clientX,e.clientY);};this.EditorDocument.addEventListener('contextmenu',B,true);var C=function(e){if (e.ctrlKey&&!e.shiftKey&&!e.altKey){var D=false;switch (e.which){case 66:case 98:FCK.ExecuteNamedCommand('bold');D=true;break;case 105:case 73:FCK.ExecuteNamedCommand('italic');D=true;break;case 117:case 85:FCK.ExecuteNamedCommand('underline');D=true;break;case 86:case 118:D=(FCK.Status!=FCK_STATUS_COMPLETE||!FCK.Events.FireEvent("OnPaste"));break;};if (D){e.preventDefault();e.stopPropagation();};};};this.EditorDocument.addEventListener('keypress',C,true);this.ExecOnSelectionChange=function(){FCK.Events.FireEvent("OnSelectionChange");};this.ExecOnSelectionChangeTimer=function(){if (FCK.LastOnChangeTimer) window.clearTimeout(FCK.LastOnChangeTimer);FCK.LastOnChangeTimer=window.setTimeout(FCK.ExecOnSelectionChange,100);};this.EditorDocument.addEventListener('mouseup',this.ExecOnSelectionChange,false);this.EditorDocument.addEventListener('keyup',this.ExecOnSelectionChangeTimer,false);this._DblClickListener=function(e){FCK.OnDoubleClick(e.target);e.stopPropagation();};this.EditorDocument.addEventListener('dblclick',this._DblClickListener,true);this._OnLoad=function(){if (this._FCK_HTML){this.document.body.innerHTML=this._FCK_HTML;this._FCK_HTML=null;};};this.EditorWindow.addEventListener('load',this._OnLoad,true);};FCK.MakeEditable=function(){try{FCK.EditorDocument.designMode='on';FCK.EditorDocument.execCommand('useCSS',false,!FCKConfig.GeckoUseSPAN);}catch (e) {};};FCK.Focus=function(){try{FCK.EditorWindow.focus();}catch(e) {};};FCK.SetHTML=function(A,B){A=A.replace(FCKRegexLib.StrongOpener,'<b$1');A=A.replace(FCKRegexLib.StrongCloser,'<\/b>');A=A.replace(FCKRegexLib.EmOpener,'<i$1');A=A.replace(FCKRegexLib.EmCloser,'<\/i>');if (B||FCK.EditMode==FCK_EDITMODE_WYSIWYG){A=FCKConfig.ProtectedSource.Protect(A);if (FCKConfig.FullPage&&FCKRegexLib.BodyContents.test(A)){if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) A=A.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);A=A.replace(FCKRegexLib.HeadCloser,'<link href="'+FCKConfig.BasePath+'css/fck_internal.css'+'" rel="stylesheet" type="text/css" _fcktemp="true" /></head>');var C=A.match(FCKRegexLib.BodyContents);var D=C[1];var E=C[2];var F=C[3];var G=D+'&nbsp;'+F;if (!this._Initialized){FCK.EditorDocument.designMode="on";FCK.EditorDocument.execCommand("useCSS",false,!FCKConfig.GeckoUseSPAN);this._Initialized=true;};this.EditorDocument.open();this.EditorDocument.write(G);this.EditorDocument.close();if (this.EditorDocument.body) this.EditorDocument.body.innerHTML=E;else this.EditorWindow._FCK_HTML=E;this.InitializeBehaviors();}else{if (!this._Initialized){this.EditorDocument.dir=FCKConfig.ContentLangDirection;var G='<title></title>'+'<link href="'+FCKConfig.EditorAreaCSS+'" rel="stylesheet" type="text/css" />'+'<link href="'+FCKConfig.BasePath+'css/fck_internal.css'+'" rel="stylesheet" type="text/css" _fcktemp="true" />'+FCK.TempBaseTag;this.EditorDocument.getElementsByTagName("HEAD")[0].innerHTML=G;this.InitializeBehaviors();this._Initialized=true;};if (A.length==0) FCK.EditorDocument.body.innerHTML=GECKO_BOGUS;else if (FCKRegexLib.EmptyParagraph.test(A)) FCK.EditorDocument.body.innerHTML=A.replace(FCKRegexLib.TagBody,'>'+GECKO_BOGUS+'<');else FCK.EditorDocument.body.innerHTML=A;FCK.MakeEditable();};FCK.OnAfterSetHTML();}else document.getElementById('eSourceField').value=A;}
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/js/fckeditorcode_gecko_2.js 1.4.1.src/fckeditor/editor/js/fckeditorcode_gecko_2.js
--- 1.4.0sr5-1.src/fckeditor/editor/js/fckeditorcode_gecko_2.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/js/fckeditorcode_gecko_2.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,56 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * This file has been compacted for best loading performance.
- */
-FCK.RedirectNamedCommands=new Object();FCK.ExecuteNamedCommand=function(A,B){FCKUndo.SaveUndoStep();if (FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};FCKUndo.SaveUndoStep();};FCK.GetNamedCommandState=function(A){try{if (!FCK.EditorDocument.queryCommandEnabled(A)) return FCK_TRISTATE_DISABLED;else return FCK.EditorDocument.queryCommandState(A)?FCK_TRISTATE_ON:FCK_TRISTATE_OFF;}catch (e){return FCK_TRISTATE_OFF;};};FCK.GetNamedCommandValue=function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==FCK_TRISTATE_DISABLED) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';};FCK.PasteFromWord=function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');};FCK.Preview=function(){var A=FCKConfig.ScreenWidth*0.8;var B=FCKConfig.ScreenHeight*0.7;var C=(FCKConfig.ScreenWidth-A)/2;var D=window.open('',null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+A+',height='+B+',left='+C);var E;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) E=FCK.GetXHTML().replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);else E=FCK.GetXHTML();}else{E=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'">'+'<head><title>'+FCKLang.Preview+'</title>'+'<link href="'+FCKConfig.EditorAreaCSS+'" rel="stylesheet" type="text/css" />'+FCK.TempBaseTag+'</head><body>'+FCK.GetXHTML()+'</body></html>';};D.document.write(E);D.document.close();};FCK.SwitchEditMode=function(){var A=(FCK.EditMode==FCK_EDITMODE_WYSIWYG);document.getElementById('eWysiwyg').style.display=A?'none':'';document.getElementById('eSource').style.display=A?'':'none';if (A){if (FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();document.getElementById('eSourceField').value=(FCKConfig.EnableXHTML&&FCKConfig.EnableSourceXHTML?FCK.GetXHTML(FCKConfig.FormatSource):FCK.GetHTML(FCKConfig.FormatSource));}else FCK.SetHTML(FCK.GetHTML(),true);FCK.EditMode=A?FCK_EDITMODE_SOURCE:FCK_EDITMODE_WYSIWYG;FCKToolbarSet.RefreshModeState();FCK.Focus();};FCK.CreateElement=function(A){var e=FCK.EditorDocument.createElement(A);return FCK.InsertElementAndGetIt(e);};FCK.InsertElementAndGetIt=function(e){e.setAttribute('__FCKTempLabel',1);this.InsertElement(e);var A=FCK.EditorDocument.getElementsByTagName(e.tagName);for (var i=0;i<A.length;i++){if (A[i].getAttribute('__FCKTempLabel')){A[i].removeAttribute('__FCKTempLabel');return A[i];};};return null;};
-FCK._BaseGetNamedCommandState=FCK.GetNamedCommandState;FCK.GetNamedCommandState=function(A){switch (A){case 'Unlink':return FCKSelection.HasAncestorNode('A')?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;default:return FCK._BaseGetNamedCommandState(A);};};FCK.RedirectNamedCommands={Print:true,Paste:true,Cut:true,Copy:true};FCK.ExecuteRedirectedNamedCommand=function(A,B){switch (A){case 'Print':FCK.EditorWindow.print();break;case 'Paste':try			{ if (FCK.Paste()) FCK.ExecuteNamedCommand('Paste');}catch (e)	{ alert(FCKLang.PasteErrorPaste);};break;case 'Cut':try			{ FCK.ExecuteNamedCommand('Cut');}catch (e)	{ alert(FCKLang.PasteErrorCut);};break;case 'Copy':try			{ FCK.ExecuteNamedCommand('Copy');}catch (e)	{ alert(FCKLang.PasteErrorCopy);};break;default:FCK.ExecuteNamedCommand(A,B);};};FCK.AttachToOnSelectionChange=function(A){this.Events.AttachEvent('OnSelectionChange',A);};FCK.Paste=function(){if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;}else return true;};FCK.InsertHtml=function(A){var B=FCKSelection.Delete();var C=B.getRangeAt(0);var D=C.createContextualFragment(A);var E=D.lastChild;C.insertNode(D);C.setEndAfter(E);C.setStartAfter(E);B.removeAllRanges();B=FCK.EditorWindow.getSelection();B.addRange(C);this.Focus();};FCK.InsertElement=function(A){var B=FCKSelection.Delete();var C=B.getRangeAt(0);C.insertNode(A);C.setEndAfter(A);C.setStartAfter(A);this.Focus();};FCK.PasteAsPlainText=function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText');};FCK.GetClipboardHTML=function(){return '';};FCK.CreateLink=function(A){FCK.ExecuteNamedCommand('Unlink');if (A.length>0){var B='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',B);var C=document.evaluate("//a[@href='"+B+"']",this.EditorDocument.body,null,9,null).singleNodeValue;if (C){C.href=A;return C;};};};
-var FCKSelection=new Object();FCK.Selection=FCKSelection;
-FCKSelection.GetType=function(){this._Type='Text';var A=FCK.EditorWindow.getSelection();if (A&&A.rangeCount==1){var B=A.getRangeAt(0);if (B.startContainer==B.endContainer&&(B.endOffset-B.startOffset)==1) this._Type='Control';};return this._Type;};FCKSelection.GetSelectedElement=function(){if (this.GetType()=='Control'){var A=FCK.EditorWindow.getSelection();return A.anchorNode.childNodes[A.anchorOffset];};};FCKSelection.GetParentElement=function(){if (this.GetType()=='Control') return FCKSelection.GetSelectedElement().parentElement;else{var A=FCK.EditorWindow.getSelection();if (A){var B=A.anchorNode;while (B&&B.nodeType!=1) B=B.parentNode;return B;};};};FCKSelection.SelectNode=function(A){FCK.Focus();var B=FCK.EditorDocument.createRange();B.selectNode(A);var C=FCK.EditorWindow.getSelection();C.removeAllRanges();C.addRange(B);};FCKSelection.Collapse=function(A){var B=FCK.EditorWindow.getSelection();if (A==null||A===true) B.collapseToStart();else B.collapseToEnd();};FCKSelection.HasAncestorNode=function(A){var B=this.GetSelectedElement();if (!B&&FCK.EditorWindow){try		{ B=FCK.EditorWindow.getSelection().getRangeAt(0).startContainer;}catch(e){};};while (B){if (B.nodeType==1&&B.tagName==A) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B;var C=this.GetSelectedElement();if (!C) C=FCK.EditorWindow.getSelection().getRangeAt(0).startContainer;while (C){if (C.tagName==A) return C;C=C.parentNode;};return null;};FCKSelection.Delete=function(){var A=FCK.EditorWindow.getSelection();for (var i=0;i<A.rangeCount;i++){A.getRangeAt(i).deleteContents();};return A;};
-var FCKPanel=function(A){if (A) this.Window=A;else{this.Window=window;while (this.Window!=window.top){try{if (this.Window.parent.document.body.tagName=='FRAMESET') break;}catch (e){break;};this.Window=this.Window.parent;};};};FCKPanel.prototype.Create=function(){this._IFrame=this.Window.document.createElement('iframe');this._IFrame.src='about:blank';this._IFrame.frameBorder='0';this._IFrame.scrolling='no';this._IFrame.style.left='0px';this._IFrame.style.top='0px';this._IFrame.width=10;this._IFrame.height=10;this._IFrame.style.position='absolute';this._IFrame.style.visibility='hidden';this._IFrame.IsFCKPanel=true;this._IFrame.Panel=this;this.Window.document.body.appendChild(this._IFrame);this.Document=this._IFrame.contentWindow.document;this.Document.open();this.Document.write('<html><head></head><body><\/body><\/html>');this.Document.close();this.Document.body.style.margin=this.Document.body.style.padding='0px';if (this.StyleSheet) FCKTools.AppendStyleSheet(this.Document,this.StyleSheet);this.OuterDiv=this.Document.body.appendChild(this.Document.createElement('DIV'));this.OuterDiv.style.cssFloat='left';this.PanelDiv=this.OuterDiv.appendChild(this.Document.createElement('DIV'));this.PanelDiv.className='FCK_Panel';this.Created=true;};FCKPanel.prototype.Show=function(A,B,C,D,E,F){if (!this.Created) this.Create();if (D!=null&&F&&D<this.OuterDiv.offsetWidth) this.PanelDiv.style.width=D;if (E!=null&&F&&E<this.PanelDiv.offsetHeight) this.PanelDiv.style.height=E+'px';var G=this.GetElementPosition(C);A+=G.X;B+=G.Y;if (A+this.OuterDiv.offsetWidth>this.Window.innerWidth){A-=A+this.OuterDiv.offsetWidth-this.Window.innerWidth;};this._IFrame.style.left=A+'px';this._IFrame.style.top=B+'px';function SetOnClickListener(targetWindow,targetFunction){try{if (targetWindow==null||(targetWindow.frameElement&&targetWindow.frameElement.IsFCKPanel)) return;targetWindow.document.addEventListener('click',targetFunction,false);}catch (e) {};for (var i=0;i<targetWindow.frames.length;i++) SetOnClickListener(targetWindow.frames[i],targetFunction);};SetOnClickListener(window.top,FCKPanelEventHandlers.OnDocumentClick);this._IFrame.width=this.OuterDiv.offsetWidth;this._IFrame.height=this.OuterDiv.offsetHeight;this._IFrame.style.visibility='';};FCKPanel.prototype.GetElementPosition=function(A){var c={ X:0,Y:0 };while (A){c.X+=A.offsetLeft;c.Y+=A.offsetTop;if (A.offsetParent==null&&A.ownerDocument.defaultView!=this.Window) A=A.ownerDocument.defaultView.frameElement;else A=A.offsetParent;};return c;};FCKPanel.prototype.Hide=function(){this.PanelDiv.style.overflow='visible';this._IFrame.style.visibility='hidden';};var FCKPanelEventHandlers=new Object();FCKPanelEventHandlers.OnDocumentClick=function(e){var A=e.target.ownerDocument.defaultView;if (!A.IsFCKPanel){function RemoveOnClickListener(targetWindow){if (targetWindow==null) return;try{if (targetWindow.frameElement&&targetWindow.frameElement.IsFCKPanel) targetWindow.frameElement.Panel.Hide();else targetWindow.document.removeEventListener('click',FCKPanelEventHandlers.OnDocumentClick,false);}catch (e) {};for (var i=0;i<targetWindow.frames.length;i++) RemoveOnClickListener(targetWindow.frames[i]);};RemoveOnClickListener(window.top);};}
-var FCKTableHandler=new Object();FCKTableHandler.InsertRow=function(){var A=FCKSelection.MoveToAncestorNode("TR");if (!A) return;var B=A.cloneNode(true);A.parentNode.insertBefore(B,A);FCKTableHandler.ClearRow(A);};FCKTableHandler.DeleteRows=function(A){if (!A) A=FCKSelection.MoveToAncestorNode("TR");if (!A) return;var B=FCKTools.GetElementAscensor(A,'TABLE');if (B.rows.length==1){FCKTableHandler.DeleteTable(B);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A) A=FCKSelection.MoveToAncestorNode("TABLE");if (!A) return;A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(){var A=FCKSelection.MoveToAncestorNode("TD");if (!A) A=FCKSelection.MoveToAncestorNode("TH");if (!A) return;var B=FCKTools.GetElementAscensor(A,'TABLE');var C=A.cellIndex+1;for (var i=0;i<B.rows.length;i++){var D=B.rows[i];if (D.cells.length<C) continue;A=D.cells[C-1].cloneNode(false);if (FCKBrowserInfo.IsGecko) A.innerHTML=FCKBrowserInfo.IsGecko?GECKO_BOGUS:'';var E=D.cells[C];if (E) D.insertBefore(A,E);else D.appendChild(A);};};FCKTableHandler.DeleteColumns=function(){var A=FCKSelection.MoveToAncestorNode("TD");if (!A) return;var B=FCKTools.GetElementAscensor(A,'TABLE');var C=A.cellIndex;for (var i=B.rows.length-1;i>=0;i--){var D=B.rows[i];if (C==0&&D.cells.length==1){FCKTableHandler.DeleteRows(D);continue;};if (D.cells[C]) D.removeChild(D.cells[C]);};};FCKTableHandler.InsertCell=function(A){var B=A?A:FCKSelection.MoveToAncestorNode("TD");if (!B) return;var C=FCK.EditorDocument.createElement("TD");if (FCKBrowserInfo.IsGecko) C.innerHTML=GECKO_BOGUS;if (B.cellIndex==B.parentNode.cells.lenght-1){B.parentNode.appendChild(C);}else{B.parentNode.insertBefore(C,B.nextSibling);};return C;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(FCKTools.GetElementAscensor(A,'TR'));return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);};};FCKTableHandler.MergeCells=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<2) return;if (A[0].parentNode!=A[A.length-1].parentNode) return;var B=isNaN(A[0].colSpan)?1:A[0].colSpan;var C='';for (var i=A.length-1;i>0;i--){B+=isNaN(A[i].colSpan)?1:A[i].colSpan;C=A[i].innerHTML+C;FCKTableHandler.DeleteCell(A[i]);};A[0].colSpan=B;A[0].innerHTML+=C;};FCKTableHandler.SplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=this._CreateTableMap(A[0].parentNode.parentNode);var C=FCKTableHandler._GetCellIndexSpan(B,A[0].parentNode.rowIndex,A[0]);var D=this._GetCollumnCells(B,C);for (var i=0;i<D.length;i++){if (D[i]==A[0]){var E=this.InsertCell(A[0]);if (!isNaN(A[0].rowSpan)&&A[0].rowSpan>1) E.rowSpan=A[0].rowSpan;}else{if (isNaN(D[i].colSpan)) D[i].colSpan=2;else D[i].colSpan+=1;};};};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length<B+1) return null;var D=A[B];for (var c=0;c<D.length;c++){if (D[c]==C) return c;};return null;};FCKTableHandler._GetCollumnCells=function(A,B){var C=new Array();for (var r=0;r<A.length;r++){var D=A[r][B];if (D&&(C.length==0||C[C.length-1]!=D)) C[C.length]=D;};return C;};FCKTableHandler._CreateTableMap=function(A){var B=A.rows;var r=-1;var C=new Array();for (var i=0;i<B.length;i++){r++;if (!C[r]) C[r]=new Array();var c=-1;for (var j=0;j<B[i].cells.length;j++){var D=B[i].cells[j];c++;while (C[r][c]) c++;var E=isNaN(D.colSpan)?1:D.colSpan;var F=isNaN(D.rowSpan)?1:D.rowSpan;for (var G=0;G<F;G++){if (!C[r+G]) C[r+G]=new Array();for (var H=0;H<E;H++){C[r+G][c+H]=B[i].cells[j];};};c+=E-1;};};return C;};FCKTableHandler.ClearRow=function(A){var B=A.cells;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsGecko) B[i].innerHTML=GECKO_BOGUS;else B[i].innerHTML='';};}
-FCKTableHandler.GetSelectedCells=function(){var A=new Array();var B=FCK.EditorWindow.getSelection();if (B.rangeCount==1&&B.anchorNode.nodeType==3){var C=FCKTools.GetElementAscensor(B.anchorNode,'TD');if (C){A[0]=C;return A;};};for (var i=0;i<B.rangeCount;i++){var D=B.getRangeAt(i);var E=D.startContainer.childNodes[D.startOffset];if (E.tagName=='TD') A[A.length]=E;};return A;};
-var FCKXml;if (!(FCKXml=NS.FCKXml)){FCKXml=NS.FCKXml=function(){};FCKXml.prototype.LoadUrl=function(A){var B=this;var C=FCKTools.CreateXmlObject('XmlHttp');C.open("GET",A,false);C.send(null);if (C.status==200||C.status==304) this.DOMDocument=C.responseXML;else if (C.status==0&&C.readyState==4) this.DOMDocument=C.responseXML;else alert('Error loading "'+A+'"');};FCKXml.prototype.SelectNodes=function(A,B){var C=new Array();var D=this.DOMDocument.evaluate(A,B?B:this.DOMDocument,this.DOMDocument.createNSResolver(this.DOMDocument.documentElement),XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);if (D){var E=D.iterateNext();while(E){C[C.length]=E;E=D.iterateNext();};};return C;};FCKXml.prototype.SelectSingleNode=function(A,B){var C=this.DOMDocument.evaluate(A,B?B:this.DOMDocument,this.DOMDocument.createNSResolver(this.DOMDocument.documentElement),9,null);if (C&&C.singleNodeValue) return C.singleNodeValue;else return null;};}
-var FCKStyleDef=function(A,B){this.Name=A;this.Element=B.toUpperCase();this.IsObjectElement=FCKRegexLib.ObjectElements.test(this.Element);this.Attributes=new Object();};FCKStyleDef.prototype.AddAttribute=function(A,B){this.Attributes[A]=B;};FCKStyleDef.prototype.GetOpenerTag=function(){var s='<'+this.Element;for (var a in this.Attributes) s+=' '+a+'="'+this.Attributes[a]+'"';return s+'>';};FCKStyleDef.prototype.GetCloserTag=function(){return '</'+this.Element+'>';};FCKStyleDef.prototype.RemoveFromSelection=function(){if (FCKSelection.GetType()=='Control') this._RemoveMe(FCKSelection.GetSelectedElement());else this._RemoveMe(FCKSelection.GetParentElement());}
-FCKStyleDef.prototype.ApplyToSelection=function(){if (FCKSelection.GetType()=='Text'&&!this.IsObjectElement){var A=FCK.EditorWindow.getSelection();var e=FCK.EditorDocument.createElement(this.Element);for (var i=0;i<A.rangeCount;i++){e.appendChild(A.getRangeAt(i).extractContents());};this._AddAttributes(e);this._RemoveDuplicates(e);var B=A.getRangeAt(0);B.insertNode(e);}else{var C=FCKSelection.GetSelectedElement();if (C.tagName==this.Element) this._AddAttributes(C);};};FCKStyleDef.prototype._AddAttributes=function(A){for (var a in this.Attributes) A.setAttribute(a,this.Attributes[a],0);};FCKStyleDef.prototype._RemoveDuplicates=function(A){for (var i=0;i<A.childNodes.length;i++){var B=A.childNodes[i];if (B.nodeType!=1) continue;this._RemoveDuplicates(B);if (this.IsEqual(B)) FCKTools.RemoveOuterTags(B);};};FCKStyleDef.prototype.IsEqual=function(e){if (e.tagName!=this.Element) return false;for (var a in this.Attributes){if (e.getAttribute(a)!=this.Attributes[a]) return false;};return true;};FCKStyleDef.prototype._RemoveMe=function(A){if (!A) return;var B=A.parentNode;if (A.nodeType==1&&this.IsEqual(A)){if (this.IsObjectElement){for (var a in this.Attributes) A.removeAttribute(a,0);return;}else FCKTools.RemoveOuterTags(A);};this._RemoveMe(B);}
-var FCKStylesLoader=function(){this.Styles=new Object();this.StyleGroups=new Object();this.Loaded=false;this.HasObjectElements=false;};FCKStylesLoader.prototype.Load=function(A){var B=new FCKXml();B.LoadUrl(A);var C=B.SelectNodes('Styles/Style');for (var i=0;i<C.length;i++){var D=C[i].attributes.getNamedItem('element').value.toUpperCase();var E=new FCKStyleDef(C[i].attributes.getNamedItem('name').value,D);if (E.IsObjectElement) this.HasObjectElements=true;var F=B.SelectNodes('Attribute',C[i]);for (var j=0;j<F.length;j++){var G=F[j].attributes.getNamedItem('name').value;var H=F[j].attributes.getNamedItem('value').value;if (G.toLowerCase()=='style'){var I=document.createElement('SPAN');I.style.cssText=H;H=I.style.cssText;};E.AddAttribute(G,H);};this.Styles[E.Name]=E;var J=this.StyleGroups[D];if (J==null){this.StyleGroups[D]=new Array();J=this.StyleGroups[D];};J[J.length]=E;};this.Loaded=true;}
-var FCKNamedCommand=function(A){this.Name=A;};FCKNamedCommand.prototype.Execute=function(){FCK.ExecuteNamedCommand(this.Name);};FCKNamedCommand.prototype.GetState=function(){return FCK.GetNamedCommandState(this.Name);};
-var FCKDialogCommand=function(A,B,C,D,E,F,G){this.Name=A;this.Title=B;this.Url=C;this.Width=D;this.Height=E;this.GetStateFunction=F;this.GetStateParam=G;};FCKDialogCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_'+this.Name,this.Title,this.Url,this.Width,this.Height);};FCKDialogCommand.prototype.GetState=function(){if (this.GetStateFunction) return this.GetStateFunction(this.GetStateParam);else return FCK_TRISTATE_OFF;};var FCKUndefinedCommand=function(){this.Name='Undefined';};FCKUndefinedCommand.prototype.Execute=function(){alert(FCKLang.NotImplemented);};FCKUndefinedCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKFontNameCommand=function(){this.Name='FontName';};FCKFontNameCommand.prototype.Execute=function(A){if (A==null||A==""){}else FCK.ExecuteNamedCommand('FontName',A);};FCKFontNameCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FontName');};var FCKFontSizeCommand=function(){this.Name='FontSize';};FCKFontSizeCommand.prototype.Execute=function(A){if (typeof(A)=='string') A=parseInt(A);if (A==null||A==''){FCK.ExecuteNamedCommand('FontSize',3);}else FCK.ExecuteNamedCommand('FontSize',A);};FCKFontSizeCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FontSize');};var FCKFormatBlockCommand=function(){this.Name='FormatBlock';};FCKFormatBlockCommand.prototype.Execute=function(A){if (A==null||A=='') FCK.ExecuteNamedCommand('FormatBlock','<P>');else FCK.ExecuteNamedCommand('FormatBlock','<'+A+'>');};FCKFormatBlockCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FormatBlock');};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.LinkedField.form;if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};A.submit();};FCKSaveCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetHTML('');FCKUndo.Typing=true;};FCKNewPageCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsGecko){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==FCK_EDITMODE_WYSIWYG?FCK_TRISTATE_OFF:FCK_TRISTATE_ON);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsIE) FCKUndo.Undo();else FCK.ExecuteNamedCommand('Undo');};FCKUndoCommand.prototype.GetState=function(){if (FCKBrowserInfo.IsIE) return (FCKUndo.CheckUndoState()?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED);else return FCK.GetNamedCommandState('Undo');};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsIE) FCKUndo.Redo();else FCK.ExecuteNamedCommand('Redo');};FCKRedoCommand.prototype.GetState=function(){if (FCKBrowserInfo.IsIE) return (FCKUndo.CheckRedoState()?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED);else return FCK.GetNamedCommandState('Redo');};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){var A=FCK.EditorDocument.createElement('CENTER');A.style.pageBreakAfter='always';var B=FCKDocumentProcessors_CreateFakeImage('FCK__PageBreak',A);B=FCK.InsertElement(B);};FCKPageBreakCommand.prototype.GetState=function(){return 0;}
-var FCKSpellCheckCommand=function(){this.Name='SpellCheck';this.IsEnabled=(FCKConfig.SpellChecker=='SpellerPages');};FCKSpellCheckCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','dialog/fck_spellerpages.html',440,480);};FCKSpellCheckCommand.prototype.GetState=function(){return this.IsEnabled?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;}
-var FCKTextColorCommand=function(A){this.Name=A=='ForeColor'?'TextColor':'BGColor';this.Type=A;this._Panel=new FCKPanel();this._Panel.StyleSheet=FCKConfig.SkinPath+'fck_contextmenu.css';this._Panel.Create();this._CreatePanelBody(this._Panel.Document,this._Panel.PanelDiv);};FCKTextColorCommand.prototype.Execute=function(A,B,C){FCK._ActiveColorPanelType=this.Type;this._Panel.Show(A,B,C);};FCKTextColorCommand.prototype.SetColor=function(A){if (FCK._ActiveColorPanelType=='ForeColor') FCK.ExecuteNamedCommand('ForeColor',A);else if (FCKBrowserInfo.IsGecko) FCK.ExecuteNamedCommand('hilitecolor',A);else FCK.ExecuteNamedCommand('BackColor',A);delete FCK._ActiveColorPanelType;};FCKTextColorCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};function FCKTextColorCommand_OnMouseOver()	{ this.className='ColorSelected';};function FCKTextColorCommand_OnMouseOut()	{ this.className='ColorDeselected';};function FCKTextColorCommand_OnClick(){this.className='ColorDeselected';this.Command.SetColor('#'+this.Color);this.Command._Panel.Hide();};function FCKTextColorCommand_AutoOnClick(){this.className='ColorDeselected';this.Command.SetColor('');this.Command._Panel.Hide();};function FCKTextColorCommand_MoreOnClick(){this.className='ColorDeselected';this.Command._Panel.Hide();FCKDialog.OpenDialog('FCKDialog_Color',FCKLang.DlgColorTitle,'dialog/fck_colorselector.html',400,330,this.Command.SetColor);};FCKTextColorCommand.prototype._CreatePanelBody=function(A,B){function CreateSelectionDiv(){var C=A.createElement("DIV");C.className='ColorDeselected';C.onmouseover=FCKTextColorCommand_OnMouseOver;C.onmouseout=FCKTextColorCommand_OnMouseOut;return C;};var D=B.appendChild(A.createElement("TABLE"));D.style.tableLayout='fixed';D.cellPadding=0;D.cellSpacing=0;D.border=0;D.width=150;var E=D.insertRow(-1).insertCell(-1);E.colSpan=8;var C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table cellspacing="0" cellpadding="0" width="100%" border="0">\<tr>\<td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\<td nowrap width="100%" align="center" unselectable="on">' + FCKLang.ColorAutomatic + '</td>\</tr>\</table>';C.Command=this;C.onclick=FCKTextColorCommand_AutoOnClick;var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H<G.length){var I=D.insertRow(-1);for (var i=0;i<8&&H<G.length;i++,H++){C=I.insertCell(-1).appendChild(CreateSelectionDiv());C.Color=G[H];C.innerHTML='<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #'+G[H]+'"></div></div>';C.Command=this;C.onclick=FCKTextColorCommand_OnClick;};};E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">'+FCKLang.ColorMoreColors+'</td></tr></table>';C.Command=this;C.onclick=FCKTextColorCommand_MoreOnClick;}
-var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){return FCK.GetNamedCommandState('Paste');};
-var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCKConfig.ForcePasteAsPlainText) return FCK_TRISTATE_DISABLED;else return FCK.GetNamedCommandState('Paste');};
-var FCKTableCommand=function(A){this.Name=A;};FCKTableCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();switch (this.Name){case 'TableInsertRow':FCKTableHandler.InsertRow();break;case 'TableDeleteRows':FCKTableHandler.DeleteRows();break;case 'TableInsertColumn':FCKTableHandler.InsertColumn();break;case 'TableDeleteColumns':FCKTableHandler.DeleteColumns();break;case 'TableInsertCell':FCKTableHandler.InsertCell();break;case 'TableDeleteCells':FCKTableHandler.DeleteCells();break;case 'TableMergeCells':FCKTableHandler.MergeCells();break;case 'TableSplitCell':FCKTableHandler.SplitCell();break;default:alert(FCKLang.UnknownCommand.replace(/%1/g,this.Name));};};FCKTableCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;}
-var FCKStyleCommand=function(){this.Name='Style';this.StylesLoader=new FCKStylesLoader();this.StylesLoader.Load(FCKConfig.StylesXmlPath);this.Styles=this.StylesLoader.Styles;};FCKStyleCommand.prototype.Execute=function(A,B){FCKUndo.SaveUndoStep();if (B.Selected) B.Style.RemoveFromSelection();else B.Style.ApplyToSelection();FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent("OnSelectionChange");};FCKStyleCommand.prototype.GetState=function(){var A=FCK.EditorDocument.selection;if (FCKSelection.GetType()=='Control'){var e=FCKSelection.GetSelectedElement();if (e) return this.StylesLoader.StyleGroups[e.tagName]?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;};return FCK_TRISTATE_OFF;};FCKStyleCommand.prototype.GetActiveStyles=function(){var A=new Array();if (FCKSelection.GetType()=='Control') this._CheckStyle(FCKSelection.GetSelectedElement(),A,false);else this._CheckStyle(FCKSelection.GetParentElement(),A,true);return A;};FCKStyleCommand.prototype._CheckStyle=function(A,B,C){if (!A) return;if (A.nodeType==1){var D=this.StylesLoader.StyleGroups[A.tagName];if (D){for (var i=0;i<D.length;i++){if (D[i].IsEqual(A)) B[B.length]=D[i];};};};if (C) this._CheckStyle(A.parentNode,B,C);}
-var FCKCommands=FCK.Commands=new Object();FCKCommands.LoadedCommands=new Object();FCKCommands.RegisterCommand=function(A,B){this.LoadedCommands[A]=B;};FCKCommands.GetCommand=function(A){var B=FCKCommands.LoadedCommands[A];if (B) return B;switch (A){case 'DocProps':B=new FCKDialogCommand('DocProps',FCKLang.DocProps,'dialog/fck_docprops.html',400,390,FCKCommands.GetFullPageState);break;case 'Templates':B=new FCKDialogCommand('Templates',FCKLang.DlgTemplatesTitle,'dialog/fck_template.html',380,450);break;case 'Link':B=new FCKDialogCommand('Link',FCKLang.DlgLnkWindowTitle,'dialog/fck_link.html',400,330,FCK.GetNamedCommandState,'CreateLink');break;case 'Anchor':B=new FCKDialogCommand('Anchor',FCKLang.DlgAnchorTitle,'dialog/fck_anchor.html',370,170);break;case 'BulletedList':B=new FCKDialogCommand('BulletedList',FCKLang.BulletedListProp,'dialog/fck_listprop.html',370,170);break;case 'NumberedList':B=new FCKDialogCommand('NumberedList',FCKLang.NumberedListProp,'dialog/fck_listprop.html',370,170);break;case 'About':B=new FCKDialogCommand('About',FCKLang.About,'dialog/fck_about.html',400,330);break;case 'Find':B=new FCKDialogCommand('Find',FCKLang.DlgFindTitle,'dialog/fck_find.html',340,170);break;case 'Replace':B=new FCKDialogCommand('Replace',FCKLang.DlgReplaceTitle,'dialog/fck_replace.html',340,200);break;case 'Image':B=new FCKDialogCommand('Image',FCKLang.DlgImgTitle,'dialog/fck_image.html',450,400);break;case 'Flash':B=new FCKDialogCommand('Flash',FCKLang.DlgFlashTitle,'dialog/fck_flash.html',450,400);break;case 'SpecialChar':B=new FCKDialogCommand('SpecialChar',FCKLang.DlgSpecialCharTitle,'dialog/fck_specialchar.html',400,300);break;case 'Smiley':B=new FCKDialogCommand('Smiley',FCKLang.DlgSmileyTitle,'dialog/fck_smiley.html',FCKConfig.SmileyWindowWidth,FCKConfig.SmileyWindowHeight);break;case 'Table':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html',400,250);break;case 'TableProp':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html?Parent',400,250);break;case 'TableCellProp':B=new FCKDialogCommand('TableCell',FCKLang.DlgCellTitle,'dialog/fck_tablecell.html',500,250);break;case 'UniversalKey':B=new FCKDialogCommand('UniversalKey',FCKLang.UniversalKeyboard,'dialog/fck_universalkey.html',415,300);break;case 'Style':B=new FCKStyleCommand();break;case 'FontName':B=new FCKFontNameCommand();break;case 'FontSize':B=new FCKFontSizeCommand();break;case 'FontFormat':B=new FCKFormatBlockCommand();break;case 'Source':B=new FCKSourceCommand();break;case 'Preview':B=new FCKPreviewCommand();break;case 'Save':B=new FCKSaveCommand();break;case 'NewPage':B=new FCKNewPageCommand();break;case 'PageBreak':B=new FCKPageBreakCommand();break;case 'TextColor':B=new FCKTextColorCommand('ForeColor');break;case 'BGColor':B=new FCKTextColorCommand('BackColor');break;case 'PasteText':B=new FCKPastePlainTextCommand();break;case 'PasteWord':B=new FCKPasteWordCommand();break;case 'TableInsertRow':B=new FCKTableCommand('TableInsertRow');break;case 'TableDeleteRows':B=new FCKTableCommand('TableDeleteRows');break;case 'TableInsertColumn':B=new FCKTableCommand('TableInsertColumn');break;case 'TableDeleteColumns':B=new FCKTableCommand('TableDeleteColumns');break;case 'TableInsertCell':B=new FCKTableCommand('TableInsertCell');break;case 'TableDeleteCells':B=new FCKTableCommand('TableDeleteCells');break;case 'TableMergeCells':B=new FCKTableCommand('TableMergeCells');break;case 'TableSplitCell':B=new FCKTableCommand('TableSplitCell');break;case 'Form':B=new FCKDialogCommand('Form',FCKLang.Form,'dialog/fck_form.html',380,230);break;case 'Checkbox':B=new FCKDialogCommand('Checkbox',FCKLang.Checkbox,'dialog/fck_checkbox.html',380,230);break;case 'Radio':B=new FCKDialogCommand('Radio',FCKLang.RadioButton,'dialog/fck_radiobutton.html',380,230);break;case 'TextField':B=new FCKDialogCommand('TextField',FCKLang.TextField,'dialog/fck_textfield.html',380,230);break;case 'Textarea':B=new FCKDialogCommand('Textarea',FCKLang.Textarea,'dialog/fck_textarea.html',380,230);break;case 'HiddenField':B=new FCKDialogCommand('HiddenField',FCKLang.HiddenField,'dialog/fck_hiddenfield.html',380,230);break;case 'Button':B=new FCKDialogCommand('Button',FCKLang.Button,'dialog/fck_button.html',380,230);break;case 'Select':B=new FCKDialogCommand('Select',FCKLang.SelectionField,'dialog/fck_select.html',400,380);break;case 'ImageButton':B=new FCKDialogCommand('ImageButton',FCKLang.ImageButton,'dialog/fck_image.html?ImageButton',450,400);break;case 'SpellCheck':B=new FCKSpellCheckCommand();break;case 'Undo':B=new FCKUndoCommand();break;case 'Redo':B=new FCKRedoCommand();break;case 'Undefined':B=new FCKUndefinedCommand();break;default:if (FCKRegexLib.NamedCommands.test(A)) B=new FCKNamedCommand(A);else{alert(FCKLang.UnknownCommand.replace(/%1/g,A));return null;};};FCKCommands.LoadedCommands[A]=B;return B;};FCKCommands.GetFullPageState=function(){return FCKConfig.FullPage?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;};
-var FCKToolbarButton=function(A,B,C,D,E,F){this.Command=FCKCommands.GetCommand(A);this.Label=B?B:A;this.Tooltip=C?C:(B?B:A);this.Style=D?D:FCK_TOOLBARITEM_ONLYICON;this.SourceView=E?true:false;this.ContextSensitive=F?true:false;this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';this.State=FCK_UNKNOWN;};FCKToolbarButton.prototype.CreateInstance=function(A){this.DOMDiv=document.createElement('div');this.DOMDiv.className='TB_Button_Off';this.DOMDiv.FCKToolbarButton=this;var B='<table title="'+this.Tooltip+'" cellspacing="0" cellpadding="0" border="0" unselectable="on">'+'<tr>';if (this.Style!=FCK_TOOLBARITEM_ONLYTEXT) B+='<td class="TB_Icon" unselectable="on"><img src="'+this.IconPath+'" width="21" height="21" unselectable="on"></td>';if (this.Style!=FCK_TOOLBARITEM_ONLYICON) B+='<td class="TB_Text" unselectable="on" nowrap>'+this.Label+'</td>';B+='</tr>'+'</table>';this.DOMDiv.innerHTML=B;var C=A.DOMRow.insertCell(-1);C.appendChild(this.DOMDiv);this.RefreshState();};FCKToolbarButton.prototype.RefreshState=function(){var A=this.Command.GetState();if (A==this.State) return;this.State=A;switch (this.State){case FCK_TRISTATE_ON:this.DOMDiv.className='TB_Button_On';this.DOMDiv.onmouseover=FCKToolbarButton_OnMouseOnOver;this.DOMDiv.onmouseout=FCKToolbarButton_OnMouseOnOut;this.DOMDiv.onclick=FCKToolbarButton_OnClick;break;case FCK_TRISTATE_OFF:this.DOMDiv.className='TB_Button_Off';this.DOMDiv.onmouseover=FCKToolbarButton_OnMouseOffOver;this.DOMDiv.onmouseout=FCKToolbarButton_OnMouseOffOut;this.DOMDiv.onclick=FCKToolbarButton_OnClick;break;default:this.Disable();break;};};function FCKToolbarButton_OnMouseOnOver(){this.className='TB_Button_On TB_Button_On_Over';};function FCKToolbarButton_OnMouseOnOut(){this.className='TB_Button_On';};function FCKToolbarButton_OnMouseOffOver(){this.className='TB_Button_On TB_Button_Off_Over';};function FCKToolbarButton_OnMouseOffOut(){this.className='TB_Button_Off';};function FCKToolbarButton_OnClick(e){this.FCKToolbarButton.Click(e);return false;};FCKToolbarButton.prototype.Click=function(){this.Command.Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this.State=FCK_TRISTATE_DISABLED;this.DOMDiv.className='TB_Button_Disabled';this.DOMDiv.onmouseover=null;this.DOMDiv.onmouseout=null;this.DOMDiv.onclick=null;}
-var FCKSpecialCombo=function(A){this.FieldWidth=80;this.PanelWidth=130;this.PanelMaxHeight=150;this.Label='&nbsp;';this.Caption=A;this.Tooltip=A;this.Style=FCK_TOOLBARITEM_ICONTEXT;this.Enabled=true;this.Items=new Object();this._Panel=new FCKPanel();this._Panel.StyleSheet=FCKConfig.SkinPath+'fck_contextmenu.css';this._Panel.Create();this._Panel.PanelDiv.className+=' SC_Panel';this._Panel.PanelDiv.innerHTML='<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>';this._ItemsHolderEl=this._Panel.PanelDiv.getElementsByTagName('TD')[0];};function FCKSpecialCombo_ItemOnMouseOver(){this.className+=' SC_ItemOver';};function FCKSpecialCombo_ItemOnMouseOut(){this.className=this.originalClass;};function FCKSpecialCombo_ItemOnClick(){this.FCKSpecialCombo._Panel.Hide();this.FCKSpecialCombo.SetLabel(this.FCKItemLabel);if (typeof(this.FCKSpecialCombo.OnSelect)=='function') this.FCKSpecialCombo.OnSelect(this.FCKItemID,this);};FCKSpecialCombo.prototype.AddItem=function(A,B,C){var D=this._ItemsHolderEl.appendChild(this._Panel.Document.createElement('DIV'));D.className=D.originalClass='SC_Item';D.innerHTML=B;D.FCKItemID=A;D.FCKItemLabel=C?C:A;D.FCKSpecialCombo=this;D.Selected=false;D.onmouseover=FCKSpecialCombo_ItemOnMouseOver;D.onmouseout=FCKSpecialCombo_ItemOnMouseOut;D.onclick=FCKSpecialCombo_ItemOnClick;this.Items[A.toString().toLowerCase()]=D;return D;};FCKSpecialCombo.prototype.SelectItem=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];if (B){B.className=B.originalClass='SC_ItemSelected';B.Selected=true;};};FCKSpecialCombo.prototype.DeselectAll=function(){for (var i in this.Items){this.Items[i].className=this.Items[i].originalClass='SC_Item';this.Items[i].Selected=false;};};FCKSpecialCombo.prototype.SetLabelById=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];this.SetLabel(B?B.FCKItemLabel:'');};FCKSpecialCombo.prototype.SetLabel=function(A){this.Label=A.length==0?'&nbsp;':A;if (this._LabelEl) this._LabelEl.innerHTML=this.Label;};FCKSpecialCombo.prototype.SetEnabled=function(A){this.Enabled=A;this._OuterTable.className=A?'':'SC_FieldDisabled';};FCKSpecialCombo.prototype.Create=function(A){this._OuterTable=A.appendChild(document.createElement('TABLE'));this._OuterTable.cellPadding=0;this._OuterTable.cellSpacing=0;this._OuterTable.insertRow(-1);var B;var C;switch (this.Style){case FCK_TOOLBARITEM_ONLYICON:B='TB_ButtonType_Icon';C=false;break;case FCK_TOOLBARITEM_ONLYTEXT:B='TB_ButtonType_Text';C=false;break;case FCK_TOOLBARITEM_ICONTEXT:C=true;break;};if (this.Caption&&this.Caption.length>0&&C){var D=this._OuterTable.rows[0].insertCell(-1);D.unselectable='on';D.innerHTML=this.Caption;D.className='SC_FieldCaption';};var E=this._OuterTable.rows[0].insertCell(-1).appendChild(document.createElement('DIV'));if (C){E.className='SC_Field';E.style.width=this.FieldWidth+'px';E.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;" unselectable="on"><tbody><tr><td class="SC_FieldLabel" unselectable="on"><label unselectable="on">&nbsp;</label></td><td class="SC_FieldButton" unselectable="on">&nbsp;</td></tr></tbody></table>';this._LabelEl=E.getElementsByTagName('label')[0];this._LabelEl.innerHTML=this.Label;}else{E.className='TB_Button_Off';E.innerHTML='<table cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;" unselectable="on"><tbody><tr><td class="SC_FieldButton" style="border-left: none;" unselectable="on">&nbsp;</td></tr></tbody></table>';E.innerHTML='<table title="'+this.Tooltip+'" class="'+B+'" cellspacing="0" cellpadding="0" border="0" unselectable="on">'+'<tr>'+'<td class="TB_Text" unselectable="on">'+this.Caption+'</td>'+'<td class="TB_ButtonArrow" unselectable="on"><img src="'+FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif" width="5" height="3"></td>'+'</tr>'+'</table>';};E.SpecialCombo=this;E.onmouseover=FCKSpecialCombo_OnMouseOver;E.onmouseout=FCKSpecialCombo_OnMouseOut;E.onclick=FCKSpecialCombo_OnClick;};function FCKSpecialCombo_OnMouseOver(){if (this.SpecialCombo.Enabled){switch (this.SpecialCombo.Style){case FCK_TOOLBARITEM_ONLYICON:this.className='TB_Button_On';break;case FCK_TOOLBARITEM_ONLYTEXT:this.className='TB_Button_On';break;case FCK_TOOLBARITEM_ICONTEXT:this.className='SC_Field SC_FieldOver';break;};};};function FCKSpecialCombo_OnMouseOut(){switch (this.SpecialCombo.Style){case FCK_TOOLBARITEM_ONLYICON:this.className='TB_Button_Off';break;case FCK_TOOLBARITEM_ONLYTEXT:this.className='TB_Button_Off';break;case FCK_TOOLBARITEM_ICONTEXT:this.className='SC_Field';break;};};function FCKSpecialCombo_OnClick(e){if (e){e.stopPropagation();FCKPanelEventHandlers.OnDocumentClick(e);};if (this.SpecialCombo.Enabled){var oPanel=this.SpecialCombo._Panel;if (typeof(this.SpecialCombo.OnBeforeClick)=='function') this.SpecialCombo.OnBeforeClick(this.SpecialCombo);if (this.SpecialCombo._ItemsHolderEl.offsetHeight>this.SpecialCombo.PanelMaxHeight) oPanel.PanelDiv.style.height=this.SpecialCombo.PanelMaxHeight+'px';else oPanel.PanelDiv.style.height=this.SpecialCombo._ItemsHolderEl.offsetHeight+'px';oPanel.PanelDiv.style.width=this.SpecialCombo.PanelWidth+'px';if (FCKBrowserInfo.IsGecko) oPanel.PanelDiv.style.overflow='-moz-scrollbars-vertical';oPanel.Show(0,this.offsetHeight,this,null,this.SpecialCombo.PanelMaxHeight,true);};return false;};
-var FCKToolbarSpecialCombo=function(){this.SourceView=false;this.ContextSensitive=true;};function FCKToolbarSpecialCombo_OnSelect(itemId,item){this.Command.Execute(itemId,item);};FCKToolbarSpecialCombo.prototype.CreateInstance=function(A){this._Combo=new FCKSpecialCombo(this.GetLabel());this._Combo.FieldWidth=this.FieldWidth!=null?this.FieldWidth:100;this._Combo.PanelWidth=this.PanelWidth!=null?this.PanelWidth:150;this._Combo.PanelMaxHeight=this.PanelMaxHeight!=null?this.PanelMaxHeight:150;this._Combo.Tooltip=this.Tooltip;this._Combo.Style=this.Style;this.CreateItems(this._Combo);this._Combo.Create(A.DOMRow.insertCell(-1));this._Combo.Command=this.Command;this._Combo.OnSelect=FCKToolbarSpecialCombo_OnSelect;};function FCKToolbarSpecialCombo_RefreshActiveItems(combo,value){combo.DeselectAll();combo.SelectItem(value);combo.SetLabelById(value);};FCKToolbarSpecialCombo.prototype.RefreshState=function(){var A;var B=this.Command.GetState();if (B!=FCK_TRISTATE_DISABLED){A=FCK_TRISTATE_ON;if (this.RefreshActiveItems) this.RefreshActiveItems(this._Combo,B);else FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo,B);}else A=FCK_TRISTATE_DISABLED;if (A==this.State) return;if (A==FCK_TRISTATE_DISABLED){this._Combo.DeselectAll();this._Combo.SetLabel('');};this.State=A;this._Combo.SetEnabled(A!=FCK_TRISTATE_DISABLED);};FCKToolbarSpecialCombo.prototype.Enable=function(){this.RefreshState();};FCKToolbarSpecialCombo.prototype.Disable=function(){this.State=FCK_TRISTATE_DISABLED;this._Combo.DeselectAll();this._Combo.SetLabel('');this._Combo.SetEnabled(false);}
-var FCKToolbarFontsCombo=function(A,B){this.Command=FCKCommands.GetCommand('FontName');this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;};FCKToolbarFontsCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontsCombo.prototype.GetLabel=function(){return FCKLang.Font;};FCKToolbarFontsCombo.prototype.CreateItems=function(A){var B=FCKConfig.FontNames.split(';');for (var i=0;i<B.length;i++) this._Combo.AddItem(B[i],'<span style="font-family: \''+B[i]+'\'; font-size: 12px;">'+B[i]+'</span>');}
-var FCKToolbarFontSizeCombo=function(A,B){this.Command=FCKCommands.GetCommand('FontSize');this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;};FCKToolbarFontSizeCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontSizeCombo.prototype.GetLabel=function(){return FCKLang.FontSize;};FCKToolbarFontSizeCombo.prototype.CreateItems=function(A){A.FieldWidth=70;var B=FCKConfig.FontSizes.split(';');for (var i=0;i<B.length;i++){var C=B[i].split('/');this._Combo.AddItem(C[0],'<font size="'+C[0]+'">'+C[1]+'</font>',C[1]);};}
-var FCKToolbarFontFormatCombo=function(A,B){this.Command=FCKCommands.GetCommand('FontFormat');this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;this.PanelWidth=190;};FCKToolbarFontFormatCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontFormatCombo.prototype.GetLabel=function(){return FCKLang.FontFormat;};FCKToolbarFontFormatCombo.prototype.CreateItems=function(A){var B=FCKLang['FontFormats'].split(';');var C={p:B[0],pre:B[1],address:B[2],h1:B[3],h2:B[4],h3:B[5],h4:B[6],h5:B[7],h6:B[8],div:B[9]};var D=FCKConfig.FontFormats.split(';');for (var i=0;i<D.length;i++){if (D[i]=='div'&&FCKBrowserInfo.IsGecko) continue;this._Combo.AddItem(D[i],'<'+D[i]+'>'+C[D[i]]+'</'+D[i]+'>',C[D[i]]);};}
-var FCKToolbarStyleCombo=function(A,B){this.Command=FCKCommands.GetCommand('Style');this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;};FCKToolbarStyleCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarStyleCombo.prototype.GetLabel=function(){return FCKLang.Style;};FCKToolbarStyleCombo.prototype.CreateItems=function(A){FCKTools.AppendStyleSheet(A._Panel.Document,FCKConfig.EditorAreaCSS);if (!FCKBrowserInfo.IsGecko) A.OnBeforeClick=this.RefreshVisibleItems;for (var s in this.Command.Styles){var B=this.Command.Styles[s];var C;if (B.IsObjectElement) C=A.AddItem(s,s);else C=A.AddItem(s,B.GetOpenerTag()+s+B.GetCloserTag());C.Style=B;};};FCKToolbarStyleCombo.prototype.RefreshActiveItems=function(A){A.DeselectAll();var B=this.Command.GetActiveStyles();if (B.length>0){for (var i=0;i<B.length;i++) A.SelectItem(B[i].Name);A.SetLabelById(B[0].Name);}else A.SetLabel('');};FCKToolbarStyleCombo.prototype.RefreshVisibleItems=function(A){if (FCKSelection.GetType()=='Control') var B=FCKSelection.GetSelectedElement().tagName;for (var i in A.Items){var C=A.Items[i];if ((B&&C.Style.Element==B)||(!B&&!C.Style.IsObjectElement)) C.style.display='';else C.style.display='none';};}
-var FCKToolbarPanelButton=function(A,B,C,D){this.Command=FCKCommands.GetCommand(A);this.Label=B?B:A;this.Tooltip=C?C:(B?B:A);this.Style=D?D:FCK_TOOLBARITEM_ONLYICON;this.State=FCK_UNKNOWN;};FCKToolbarPanelButton.prototype.Click=function(e){if (e){e.stopPropagation();FCKPanelEventHandlers.OnDocumentClick(e);};if (this.State!=FCK_TRISTATE_DISABLED){this.Command.Execute(0,this.DOMDiv.offsetHeight,this.DOMDiv);};return false;};FCKToolbarPanelButton.prototype.CreateInstance=function(A){this.DOMDiv=document.createElement('div');this.DOMDiv.className='TB_Button_Off';this.DOMDiv.FCKToolbarButton=this;var B='<table title="'+this.Tooltip+'" cellspacing="0" cellpadding="0" border="0" unselectable="on">'+'<tr>';if (this.Style!=FCK_TOOLBARITEM_ONLYTEXT) B+='<td class="TB_Icon" unselectable="on"><img src="'+FCKConfig.SkinPath+'toolbar/'+this.Command.Name.toLowerCase()+'.gif" width="21" height="21" unselectable="on"></td>';if (this.Style!=FCK_TOOLBARITEM_ONLYICON) B+='<td class="TB_Text" unselectable="on" nowrap>'+this.Label+'</td>';B+='<td class="TB_ButtonArrow" unselectable="on"><img src="'+FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif" width="5" height="3"></td>'+'</tr>'+'</table>';this.DOMDiv.innerHTML=B;var C=A.DOMRow.insertCell(-1);C.appendChild(this.DOMDiv);this.RefreshState();};FCKToolbarPanelButton.prototype.RefreshState=FCKToolbarButton.prototype.RefreshState;FCKToolbarPanelButton.prototype.Enable=FCKToolbarButton.prototype.Enable;FCKToolbarPanelButton.prototype.Disable=FCKToolbarButton.prototype.Disable;
-var FCKToolbarItems=new Object();FCKToolbarItems.LoadedItems=new Object();FCKToolbarItems.RegisterItem=function(A,B){this.LoadedItems[A]=B;};FCKToolbarItems.GetItem=function(A){var B=FCKToolbarItems.LoadedItems[A];if (B) return B;switch (A){case 'Source':B=new FCKToolbarButton('Source',FCKLang.Source,null,FCK_TOOLBARITEM_ICONTEXT,true,true);break;case 'DocProps':B=new FCKToolbarButton('DocProps',FCKLang.DocProps);break;case 'Templates':B=new FCKToolbarButton('Templates',FCKLang.Templates);break;case 'Save':B=new FCKToolbarButton('Save',FCKLang.Save,null,null,true);break;case 'NewPage':B=new FCKToolbarButton('NewPage',FCKLang.NewPage,null,null,true);break;case 'Preview':B=new FCKToolbarButton('Preview',FCKLang.Preview,null,null,true);break;case 'About':B=new FCKToolbarButton('About',FCKLang.About,null,null,true);break;case 'Cut':B=new FCKToolbarButton('Cut',FCKLang.Cut,null,null,false,true);break;case 'Copy':B=new FCKToolbarButton('Copy',FCKLang.Copy,null,null,false,true);break;case 'Paste':B=new FCKToolbarButton('Paste',FCKLang.Paste,null,null,false,true);break;case 'PasteText':B=new FCKToolbarButton('PasteText',FCKLang.PasteText,null,null,false,true);break;case 'PasteWord':B=new FCKToolbarButton('PasteWord',FCKLang.PasteWord,null,null,false,true);break;case 'Print':B=new FCKToolbarButton('Print',FCKLang.Print,null,null,false,true);break;case 'SpellCheck':B=new FCKToolbarButton('SpellCheck',FCKLang.SpellCheck);break;case 'Undo':B=new FCKToolbarButton('Undo',FCKLang.Undo,null,null,false,true);break;case 'Redo':B=new FCKToolbarButton('Redo',FCKLang.Redo,null,null,false,true);break;case 'SelectAll':B=new FCKToolbarButton('SelectAll',FCKLang.SelectAll);break;case 'RemoveFormat':B=new FCKToolbarButton('RemoveFormat',FCKLang.RemoveFormat,null,null,false,true);break;case 'Bold':B=new FCKToolbarButton('Bold',FCKLang.Bold,null,null,false,true);break;case 'Italic':B=new FCKToolbarButton('Italic',FCKLang.Italic,null,null,false,true);break;case 'Underline':B=new FCKToolbarButton('Underline',FCKLang.Underline,null,null,false,true);break;case 'StrikeThrough':B=new FCKToolbarButton('StrikeThrough',FCKLang.StrikeThrough,null,null,false,true);break;case 'Subscript':B=new FCKToolbarButton('Subscript',FCKLang.Subscript,null,null,false,true);break;case 'Superscript':B=new FCKToolbarButton('Superscript',FCKLang.Superscript,null,null,false,true);break;case 'OrderedList':B=new FCKToolbarButton('InsertOrderedList',FCKLang.NumberedListLbl,FCKLang.NumberedList,null,false,true);break;case 'UnorderedList':B=new FCKToolbarButton('InsertUnorderedList',FCKLang.BulletedListLbl,FCKLang.BulletedList,null,false,true);break;case 'Outdent':B=new FCKToolbarButton('Outdent',FCKLang.DecreaseIndent,null,null,false,true);break;case 'Indent':B=new FCKToolbarButton('Indent',FCKLang.IncreaseIndent,null,null,false,true);break;case 'Link':B=new FCKToolbarButton('Link',FCKLang.InsertLinkLbl,FCKLang.InsertLink,null,false,true);break;case 'Unlink':B=new FCKToolbarButton('Unlink',FCKLang.RemoveLink,null,null,false,true);break;case 'Anchor':B=new FCKToolbarButton('Anchor',FCKLang.Anchor);break;case 'Image':B=new FCKToolbarButton('Image',FCKLang.InsertImageLbl,FCKLang.InsertImage);break;case 'Flash':B=new FCKToolbarButton('Flash',FCKLang.InsertFlashLbl,FCKLang.InsertFlash);break;case 'Table':B=new FCKToolbarButton('Table',FCKLang.InsertTableLbl,FCKLang.InsertTable);break;case 'SpecialChar':B=new FCKToolbarButton('SpecialChar',FCKLang.InsertSpecialCharLbl,FCKLang.InsertSpecialChar);break;case 'Smiley':B=new FCKToolbarButton('Smiley',FCKLang.InsertSmileyLbl,FCKLang.InsertSmiley);break;case 'PageBreak':B=new FCKToolbarButton('PageBreak',FCKLang.PageBreakLbl,FCKLang.PageBreak);break;case 'UniversalKey':B=new FCKToolbarButton('UniversalKey',FCKLang.UniversalKeyboard);break;case 'Rule':B=new FCKToolbarButton('InsertHorizontalRule',FCKLang.InsertLineLbl,FCKLang.InsertLine,null,false,true);break;case 'JustifyLeft':B=new FCKToolbarButton('JustifyLeft',FCKLang.LeftJustify,null,null,false,true);break;case 'JustifyCenter':B=new FCKToolbarButton('JustifyCenter',FCKLang.CenterJustify,null,null,false,true);break;case 'JustifyRight':B=new FCKToolbarButton('JustifyRight',FCKLang.RightJustify,null,null,false,true);break;case 'JustifyFull':B=new FCKToolbarButton('JustifyFull',FCKLang.BlockJustify,null,null,false,true);break;case 'Style':B=new FCKToolbarStyleCombo();break;case 'FontName':B=new FCKToolbarFontsCombo();break;case 'FontSize':B=new FCKToolbarFontSizeCombo();break;case 'FontFormat':B=new FCKToolbarFontFormatCombo();break;case 'TextColor':B=new FCKToolbarPanelButton('TextColor',FCKLang.TextColor);break;case 'BGColor':B=new FCKToolbarPanelButton('BGColor',FCKLang.BGColor);break;case 'Find':B=new FCKToolbarButton('Find',FCKLang.Find);break;case 'Replace':B=new FCKToolbarButton('Replace',FCKLang.Replace);break;case 'Form':B=new FCKToolbarButton('Form',FCKLang.Form);break;case 'Checkbox':B=new FCKToolbarButton('Checkbox',FCKLang.Checkbox);break;case 'Radio':B=new FCKToolbarButton('Radio',FCKLang.RadioButton);break;case 'TextField':B=new FCKToolbarButton('TextField',FCKLang.TextField);break;case 'Textarea':B=new FCKToolbarButton('Textarea',FCKLang.Textarea);break;case 'HiddenField':B=new FCKToolbarButton('HiddenField',FCKLang.HiddenField);break;case 'Button':B=new FCKToolbarButton('Button',FCKLang.Button);break;case 'Select':B=new FCKToolbarButton('Select',FCKLang.SelectionField);break;case 'ImageButton':B=new FCKToolbarButton('ImageButton',FCKLang.ImageButton);break;default:alert(FCKLang.UnknownToolbarItem.replace(/%1/g,A));return null;};FCKToolbarItems.LoadedItems[A]=B;return B;}
-var FCKToolbar=function(){this.Items=new Array();var e=this.DOMTable=document.createElement('table');e.className='TB_Toolbar';e.style.styleFloat=e.style.cssFloat=FCKLang.Dir=='rtl'?'right':'left';e.cellPadding=0;e.cellSpacing=0;e.border=0;this.DOMRow=e.insertRow(-1);var A=this.DOMRow.insertCell(-1);A.className='TB_Start';A.innerHTML='<img src="'+FCKConfig.SkinPath+'images/toolbar.start.gif" width="7" height="21" style="VISIBILITY: hidden" onload="this.style.visibility = \'\';" unselectable="on">';FCKToolbarSet.DOMElement.appendChild(e);};FCKToolbar.prototype.AddItem=function(A){this.Items[this.Items.length]=A;A.CreateInstance(this);};FCKToolbar.prototype.AddSeparator=function(){var A=this.DOMRow.insertCell(-1);A.unselectable='on';A.innerHTML='<img src="'+FCKConfig.SkinPath+'images/toolbar.separator.gif" width="5" height="21" style="VISIBILITY: hidden" onload="this.style.visibility = \'\';" unselectable="on">';};FCKToolbar.prototype.AddTerminator=function(){var A=this.DOMRow.insertCell(-1);A.className='TB_End';A.innerHTML='<img src="'+FCKConfig.SkinPath+'images/toolbar.end.gif" width="12" height="21" style="VISIBILITY: hidden" onload="this.style.visibility = \'\';" unselectable="on">';};
-var FCKToolbarBreak=function(){var A=document.createElement('div');A.style.clear=A.style.cssFloat=FCKLang.Dir=='rtl'?'right':'left';FCKToolbarSet.DOMElement.appendChild(A);}
-var FCKToolbarSet=FCK.ToolbarSet=new Object();document.getElementById('ExpandHandle').title=FCKLang.ToolbarExpand;document.getElementById('CollapseHandle').title=FCKLang.ToolbarCollapse;FCKToolbarSet.Toolbars=new Array();FCKToolbarSet.ItemsWysiwygOnly=new Array();FCKToolbarSet.ItemsContextSensitive=new Array();FCKToolbarSet.Expand=function(){document.getElementById('Collapsed').style.display='none';document.getElementById('Expanded').style.display='';if (!FCKBrowserInfo.IsIE){window.setTimeout("window.onresize()",1);};};FCKToolbarSet.Collapse=function(){document.getElementById('Collapsed').style.display='';document.getElementById('Expanded').style.display='none';if (!FCKBrowserInfo.IsIE){window.setTimeout("window.onresize()",1);};};FCKToolbarSet.Restart=function(){if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();document.getElementById('CollapseHandle').style.display=FCKConfig.ToolbarCanCollapse?'':'none';};FCKToolbarSet.Load=function(A){this.DOMElement=document.getElementById('eToolbar');var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=new Array();for (var x=0;x<B.length;x++){var C=B[x];var D;if (typeof(C)=='string'){if (C=='/') D=new FCKToolbarBreak();}else{D=new FCKToolbar();for (var j=0;j<C.length;j++){var E=C[j];if (E=='-') D.AddSeparator();else{var F=FCKToolbarItems.GetItem(E);if (F){D.AddItem(F);if (!F.SourceView) this.ItemsWysiwygOnly[this.ItemsWysiwygOnly.length]=F;if (F.ContextSensitive) this.ItemsContextSensitive[this.ItemsContextSensitive.length]=F;};};};D.AddTerminator();};this.Toolbars[this.Toolbars.length]=D;};};FCKToolbarSet.RefreshModeState=function(){if (FCK.EditMode==FCK_EDITMODE_WYSIWYG){for (var i=0;i<FCKToolbarSet.ItemsWysiwygOnly.length;i++) FCKToolbarSet.ItemsWysiwygOnly[i].Enable();FCKToolbarSet.RefreshItemsState();}else{FCKToolbarSet.RefreshItemsState();for (var i=0;i<FCKToolbarSet.ItemsWysiwygOnly.length;i++) FCKToolbarSet.ItemsWysiwygOnly[i].Disable();};};FCKToolbarSet.RefreshItemsState=function(){for (var i=0;i<FCKToolbarSet.ItemsContextSensitive.length;i++) FCKToolbarSet.ItemsContextSensitive[i].RefreshState();};
-var FCKDialog=new Object();FCKDialog.OpenDialog=function(A,B,C,D,E,F,G,H){var I=new Object();I.Title=B;I.Page=C;I.Editor=window;I.CustomValue=F;var J=FCKConfig.BasePath+'fckdialog.html';this.Show(I,A,J,D,E,G,H);};
-FCKDialog.Show=function(A,B,C,D,E,F,G){var H=(FCKConfig.ScreenHeight-E)/2;var I=(FCKConfig.ScreenWidth-D)/2;var J="location=no,menubar=no,toolbar=no,dependent=yes,dialog=yes,minimizable=no,modal=yes,alwaysRaised=yes"+",resizable="+(G?'yes':'no')+",width="+D+",height="+E+",top="+H+",left="+I;if (!F) F=window;var K=F.open('','FCKeditorDialog_'+B,J,true);K.moveTo(I,H);K.resizeTo(D,E);K.focus();K.location.href=C;K.dialogArguments=A;F.FCKLastDialogInfo=A;this.Window=K;try{window.top.captureEvents(Event.CLICK|Event.MOUSEDOWN|Event.MOUSEUP|Event.FOCUS);window.top.parent.addEventListener('mousedown',this.CheckFocus,true);window.top.parent.addEventListener('mouseup',this.CheckFocus,true);window.top.parent.addEventListener('click',this.CheckFocus,true);window.top.parent.addEventListener('focus',this.CheckFocus,true);}catch (e){};};FCKDialog.CheckFocus=function(){if (typeof(FCKDialog)!="object") return false;if (FCKDialog.Window&&!FCKDialog.Window.closed) FCKDialog.Window.focus();else{try{window.top.releaseEvents(Event.CLICK|Event.MOUSEDOWN|Event.MOUSEUP|Event.FOCUS);window.top.parent.removeEventListener('onmousedown',FCKDialog.CheckFocus,true);window.top.parent.removeEventListener('mouseup',FCKDialog.CheckFocus,true);window.top.parent.removeEventListener('click',FCKDialog.CheckFocus,true);window.top.parent.removeEventListener('onfocus',FCKDialog.CheckFocus,true);}catch (e){};};return false;};
-var FCKContextMenuItem=function(A,B,C,D){this.ContextMenu=A;this.Command=FCKCommands.GetCommand(B);this.Label=C?C:B;this.HasIcon=D?true:false;};function FCKContextMenuItem_OnMouseOver(){if (this.className!='CM_Disabled') this.className='CM_Over';};function FCKContextMenuItem_OnMouseOut(){if (this.className!='CM_Disabled') this.className='CM_Option';};function FCKContextMenuItem_OnClick(){if (this.className!='CM_Disabled'){this.FCKContextMenuItem.ContextMenu.Hide();this.FCKContextMenuItem.Command.Execute();};return false;};FCKContextMenuItem.prototype.CreateTableRow=function(A){this._Row=A.insertRow(-1);this._Row.className='CM_Disabled';this._Row.FCKContextMenuItem=this;this._Row.onmouseover=FCKContextMenuItem_OnMouseOver;this._Row.onmouseout=FCKContextMenuItem_OnMouseOut;this._Row.onclick=FCKContextMenuItem_OnClick;var B=this._Row.insertCell(-1);B.className='CM_Icon';if (this.HasIcon) B.innerHTML='<img alt="" src="'+FCKConfig.SkinPath+'toolbar/'+this.Command.Name.toLowerCase()+'.gif" width="21" height="20" unselectable="on">';B=this._Row.insertCell(-1);B.className='CM_Label';B.unselectable='on';B.noWrap=true;B.innerHTML=this.Label;};FCKContextMenuItem.prototype.SetVisible=function(A){this._Row.style.display=A?'':'none';};FCKContextMenuItem.prototype.RefreshState=function(){switch (this.Command.GetState()){case FCK_TRISTATE_ON:case FCK_TRISTATE_OFF:this._Row.className='CM_Option';break;default:this._Row.className='CM_Disabled';break;};};
-var FCKContextMenuSeparator=function(){};FCKContextMenuSeparator.prototype.CreateTableRow=function(A){this._Row=A.insertRow(-1);this._Row.className='CM_Separator';var B=this._Row.insertCell(-1);B.className='CM_Icon';B=this._Row.insertCell(-1);B.className='CM_Label';B.innerHTML='<div></div>';};FCKContextMenuSeparator.prototype.SetVisible=function(A){this._Row.style.display=A?'':'none';};FCKContextMenuSeparator.prototype.RefreshState=function(){};
-var FCKContextMenuGroup=function(A,B,C,D,E){this.IsVisible=true;this.Items=new Array();if (A) this.Add(new FCKContextMenuSeparator());if (B&&C&&D) this.Add(new FCKContextMenuItem(B,C,D,E));this.ValidationFunction=null;};FCKContextMenuGroup.prototype.Add=function(A){this.Items[this.Items.length]=A;};FCKContextMenuGroup.prototype.CreateTableRows=function(A){for (var i=0;i<this.Items.length;i++){this.Items[i].CreateTableRow(A);};};FCKContextMenuGroup.prototype.SetVisible=function(A){for (var i=0;i<this.Items.length;i++){this.Items[i].SetVisible(A);};this.IsVisible=A;};FCKContextMenuGroup.prototype.RefreshState=function(){if (!this.IsVisible) return;for (var i=0;i<this.Items.length;i++){this.Items[i].RefreshState();};}
-var FCKContextMenu=new Object();FCKContextMenu._IsLoaded=false;FCKContextMenu.Reload=function(){this._Div=this._Document.createElement('DIV');this._Div.className='CM_ContextMenu';this._Div.style.position='absolute';this._Div.style.visibility='hidden';this._Document.body.appendChild(this._Div);var A=this._Document.createElement('TABLE');A.cellSpacing=0;A.cellPadding=0;A.border=0;this._Div.appendChild(A);this.Groups=new Object();for (var i=0;i<FCKConfig.ContextMenu.length;i++){var B=FCKConfig.ContextMenu[i];this.Groups[B]=this._GetGroup(B);this.Groups[B].CreateTableRows(A);};this._IsLoaded=true;};FCKContextMenu._GetGroup=function(A){var B;switch (A){case 'Generic':B=new FCKContextMenuGroup();B.Add(new FCKContextMenuItem(this,'Cut',FCKLang.Cut,true));B.Add(new FCKContextMenuItem(this,'Copy',FCKLang.Copy,true));B.Add(new FCKContextMenuItem(this,'Paste',FCKLang.Paste,true));break;case 'Link':B=new FCKContextMenuGroup();B.Add(new FCKContextMenuSeparator());B.Add(new FCKContextMenuItem(this,'Link',FCKLang.EditLink,true));B.Add(new FCKContextMenuItem(this,'Unlink',FCKLang.RemoveLink,true));break;case 'TableCell':B=new FCKContextMenuGroup();B.Add(new FCKContextMenuSeparator());B.Add(new FCKContextMenuItem(this,'TableInsertRow',FCKLang.InsertRow,true));B.Add(new FCKContextMenuItem(this,'TableDeleteRows',FCKLang.DeleteRows,true));B.Add(new FCKContextMenuSeparator());B.Add(new FCKContextMenuItem(this,'TableInsertColumn',FCKLang.InsertColumn,true));B.Add(new FCKContextMenuItem(this,'TableDeleteColumns',FCKLang.DeleteColumns,true));B.Add(new FCKContextMenuSeparator());B.Add(new FCKContextMenuItem(this,'TableInsertCell',FCKLang.InsertCell,true));B.Add(new FCKContextMenuItem(this,'TableDeleteCells',FCKLang.DeleteCells,true));B.Add(new FCKContextMenuItem(this,'TableMergeCells',FCKLang.MergeCells,true));B.Add(new FCKContextMenuItem(this,'TableSplitCell',FCKLang.SplitCell,true));B.Add(new FCKContextMenuSeparator());B.Add(new FCKContextMenuItem(this,'TableCellProp',FCKLang.CellProperties,true));B.Add(new FCKContextMenuItem(this,'TableProp',FCKLang.TableProperties,true));break;case 'Table':return new FCKContextMenuGroup(true,this,'Table',FCKLang.TableProperties,true);case 'Image':return new FCKContextMenuGroup(true,this,'Image',FCKLang.ImageProperties,true);case 'Flash':return new FCKContextMenuGroup(true,this,'Flash',FCKLang.FlashProperties,true);case 'Form':return new FCKContextMenuGroup(true,this,'Form',FCKLang.FormProp,true);case 'Checkbox':return new FCKContextMenuGroup(true,this,'Checkbox',FCKLang.CheckboxProp,true);case 'Radio':return new FCKContextMenuGroup(true,this,'Radio',FCKLang.RadioButtonProp,true);case 'TextField':return new FCKContextMenuGroup(true,this,'TextField',FCKLang.TextFieldProp,true);case 'HiddenField':return new FCKContextMenuGroup(true,this,'HiddenField',FCKLang.HiddenFieldProp,true);case 'ImageButton':return new FCKContextMenuGroup(true,this,'ImageButton',FCKLang.ImageButtonProp,true);case 'Button':return new FCKContextMenuGroup(true,this,'Button',FCKLang.ButtonProp,true);case 'Select':return new FCKContextMenuGroup(true,this,'Select',FCKLang.SelectionFieldProp,true);case 'Textarea':return new FCKContextMenuGroup(true,this,'Textarea',FCKLang.TextareaProp,true);case 'BulletedList':return new FCKContextMenuGroup(true,this,'BulletedList',FCKLang.BulletedListProp,true);case 'NumberedList':return new FCKContextMenuGroup(true,this,'NumberedList',FCKLang.NumberedListProp,true);case 'Anchor':return new FCKContextMenuGroup(true,this,'Anchor',FCKLang.AnchorProp,true);};return B;};FCKContextMenu.RefreshState=function(){var A=FCKSelection.GetSelectedElement();var B;if (A) B=A.tagName;if (this.Groups['Link'])			this.Groups['Link'].SetVisible(FCK.GetNamedCommandState('Unlink')!=FCK_TRISTATE_DISABLED);if (this.Groups['TableCell'])		this.Groups['TableCell'].SetVisible(B!='TABLE'&&FCKSelection.HasAncestorNode('TABLE'));if (this.Groups['Table'])			this.Groups['Table'].SetVisible(B=='TABLE');if (this.Groups['Image'])			this.Groups['Image'].SetVisible(B=='IMG'&&!A.getAttribute('_fckfakelement'));if (this.Groups['Flash'])			this.Groups['Flash'].SetVisible(B=='IMG'&&A.getAttribute('_fckflash'));if (this.Groups['Anchor'])		this.Groups['Anchor'].SetVisible(B=='IMG'&&A.getAttribute('_fckanchor'));if (this.Groups['BulletedList'])	this.Groups['BulletedList'].SetVisible(FCKSelection.HasAncestorNode('UL'));if (this.Groups['NumberedList'])	this.Groups['NumberedList'].SetVisible(FCKSelection.HasAncestorNode('OL'));if (this.Groups['Select'])		this.Groups['Select'].SetVisible(B=='SELECT');if (this.Groups['Textarea'])		this.Groups['Textarea'].SetVisible(B=='TEXTAREA');if (this.Groups['Form'])			this.Groups['Form'].SetVisible(FCKSelection.HasAncestorNode('FORM'));if (this.Groups['Checkbox'])		this.Groups['Checkbox'].SetVisible(B=='INPUT'&&A.type=='checkbox');if (this.Groups['Radio'])			this.Groups['Radio'].SetVisible(B=='INPUT'&&A.type=='radio');if (this.Groups['TextField'])		this.Groups['TextField'].SetVisible(B=='INPUT'&&(A.type=='text'||A.type=='password'));if (this.Groups['HiddenField'])	this.Groups['HiddenField'].SetVisible(B=='INPUT'&&A.type=='hidden');if (this.Groups['ImageButton'])	this.Groups['ImageButton'].SetVisible(B=='INPUT'&&A.type=='image');if (this.Groups['Button'])		this.Groups['Button'].SetVisible(B=='INPUT'&&(A.type=='button'||A.type=='submit'||A.type=='reset'));for (var o in this.Groups){this.Groups[o].RefreshState();};};
-FCKTools.AppendStyleSheet(window.parent.document,FCKConfig.SkinPath+'fck_contextmenu.css');FCKContextMenu.Show=function(x,y){if (!this._Document){this._Document=window.parent.document;};if (!this._IsLoaded){this.Reload();this._Div.style.zIndex=10000;this._Div.oncontextmenu=function() { return false;};};this.RefreshState();var A=FCKTools.GetElementPosition(FCK.EditorWindow.frameElement);var B=FCKTools.GetElementPosition(window.frameElement);x+=A.X+B.X;y+=A.Y+B.Y;var C=x+this._Div.offsetWidth-this._Div.ownerDocument.defaultView.innerWidth;var D=y+this._Div.offsetHeight-this._Div.ownerDocument.defaultView.innerHeight;if (C>0) x-=this._Div.offsetWidth;if (D>0) y-=this._Div.offsetHeight;this._Div.style.left=x+'px';this._Div.style.top=y+'px';var E=FCK.EditorWindow;while (E){E.document.addEventListener('click',FCKContextMenu._OnDocumentClick,false);if (E!=E.parent) E=E.parent;else if (E.opener==null) E=E.opener;else break;};this._Div.style.visibility='';};FCKContextMenu._OnDocumentClick=function(A){var e=A.target;while (e){if (e==FCKContextMenu._Div) return;e=e.parentNode;};FCKContextMenu.Hide();};FCKContextMenu.Hide=function(){this._Div.style.visibility='hidden';this._Div.style.left=this._Div.style.top='1px';}
-if (!FCKConfig.PluginsPath.endsWith('/')) FCKConfig.PluginsPath+='/';var FCKPlugin=function(A,B,C){this.Name=A;this.BasePath=C?C:FCKConfig.PluginsPath;this.Path=this.BasePath+A+'/';if (!B||B.length==0) this.AvailableLangs=new Array();else this.AvailableLangs=B.split(',');};FCKPlugin.prototype.Load=function(){if (this.AvailableLangs.length>0){var A;if (this.AvailableLangs.indexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];FCKScriptLoader.AddScript(this.Path+'lang/'+A+'.js');};FCKScriptLoader.AddScript(this.Path+'fckplugin.js');}
-var FCKPlugins=FCK.Plugins=new Object();FCKPlugins.ItemsCount=0;FCKPlugins.Loaded=false;FCKPlugins.Items=new Object();for (var i=0;i<FCKConfig.Plugins.Items.length;i++){var oItem=FCKConfig.Plugins.Items[i];FCKPlugins.Items[oItem[0]]=new FCKPlugin(oItem[0],oItem[1],oItem[2]);FCKPlugins.ItemsCount++;};FCKPlugins.Load=function(){for (var s in this.Items) this.Items[s].Load();this.Loaded=true;FCKPlugins.Load=null;}
-if (FCKLang&&window.document.dir.toLowerCase()!=FCKLang.Dir.toLowerCase()) window.document.dir=FCKLang.Dir;if (FCKConfig.ForcePasteAsPlainText) FCK.Events.AttachEvent("OnPaste",FCK.Paste);if (FCKPlugins.ItemsCount>0){FCKScriptLoader.OnEmpty=CompleteLoading;FCKPlugins.Load();}else CompleteLoading();function CompleteLoading(){FCKToolbarSet.Name=FCKURLParams['Toolbar']||'Default';FCKToolbarSet.Load(FCKToolbarSet.Name);FCKToolbarSet.Restart();FCK.AttachToOnSelectionChange(FCKToolbarSet.RefreshItemsState);FCK.SetStatus(FCK_STATUS_COMPLETE);if (typeof(window.parent.FCKeditor_OnComplete)=='function') window.parent.FCKeditor_OnComplete(FCK);}
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/js/fckeditorcode_gecko.js 1.4.1.src/fckeditor/editor/js/fckeditorcode_gecko.js
--- 1.4.0sr5-1.src/fckeditor/editor/js/fckeditorcode_gecko.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/js/fckeditorcode_gecko.js	2006-09-03 13:05:04.000000000 -0500
@@ -0,0 +1,80 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * This file has been compacted for best loading performance.
+ */
+var FCK_STATUS_NOTLOADED=window.parent.FCK_STATUS_NOTLOADED=0;var FCK_STATUS_ACTIVE=window.parent.FCK_STATUS_ACTIVE=1;var FCK_STATUS_COMPLETE=window.parent.FCK_STATUS_COMPLETE=2;var FCK_TRISTATE_OFF=window.parent.FCK_TRISTATE_OFF=0;var FCK_TRISTATE_ON=window.parent.FCK_TRISTATE_ON=1;var FCK_TRISTATE_DISABLED=window.parent.FCK_TRISTATE_DISABLED=-1;var FCK_UNKNOWN=window.parent.FCK_UNKNOWN=-9;var FCK_TOOLBARITEM_ONLYICON=window.parent.FCK_TOOLBARITEM_ONLYICON=0;var FCK_TOOLBARITEM_ONLYTEXT=window.parent.FCK_TOOLBARITEM_ONLYTEXT=1;var FCK_TOOLBARITEM_ICONTEXT=window.parent.FCK_TOOLBARITEM_ICONTEXT=2;var FCK_EDITMODE_WYSIWYG=window.parent.FCK_EDITMODE_WYSIWYG=0;var FCK_EDITMODE_SOURCE=window.parent.FCK_EDITMODE_SOURCE=1;var FCK_IMAGES_PATH='images/';var FCK_SPACER_PATH='images/spacer.gif';
+String.prototype.Contains=function(A){return (this.indexOf(A)>-1);};String.prototype.Equals=function(){for (var i=0;i<arguments.length;i++) if (this==arguments[i]) return true;return false;};Array.prototype.AddItem=function(A){var i=this.length;this[i]=A;return i;};Array.prototype.indexOf=function(A){for (var i=0;i<this.length;i++){if (this[i]==A) return i;};return-1;};String.prototype.startsWith=function(A){return (this.substr(0,A.length)==A);};String.prototype.endsWith=function(A,B){var C=this.length;var D=A.length;if (D>C) return false;if (B){var E=new RegExp(A+'$','i');return E.test(this);}else return (D==0||this.substr(C-D,D)==A);};String.prototype.remove=function(A,B){var s='';if (A>0) s=this.substring(0,A);if (A+B<this.length) s+=this.substring(A+B,this.length);return s;};String.prototype.trim=function(){return this.replace(/(^\s*)|(\s*$)/g,'');};String.prototype.ltrim=function(){return this.replace(/^\s*/g,'');};String.prototype.rtrim=function(){return this.replace(/\s*$/g,'');};String.prototype.replaceNewLineChars=function(A){return this.replace(/\n/g,A);}
+var s=navigator.userAgent.toLowerCase();var FCKBrowserInfo={IsIE:s.Contains('msie'),IsIE7:s.Contains('msie 7'),IsGecko:s.Contains('gecko/'),IsSafari:s.Contains('safari'),IsOpera:s.Contains('opera')};FCKBrowserInfo.IsGeckoLike=FCKBrowserInfo.IsGecko||FCKBrowserInfo.IsSafari||FCKBrowserInfo.IsOpera;if (FCKBrowserInfo.IsGecko){var sGeckoVersion=s.match(/gecko\/(\d+)/)[1];FCKBrowserInfo.IsGecko10=sGeckoVersion<20051111;}
+var FCKURLParams=new Object();var aParams=document.location.search.substr(1).split('&');for (var i=0;i<aParams.length;i++){var aParam=aParams[i].split('=');var sParamName=aParam[0];var sParamValue=aParam[1];FCKURLParams[sParamName]=sParamValue;}
+var FCK=new Object();FCK.Name=FCKURLParams['InstanceName'];FCK.Status=FCK_STATUS_NOTLOADED;FCK.EditMode=FCK_EDITMODE_WYSIWYG;FCK.LoadLinkedFile=function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var C=A.getElementsByName(FCK.Name);var i=0;while (B||i==0){if (B&&(B.tagName=='INPUT'||B.tagName=='TEXTAREA')){FCK.LinkedField=B;break;};B=C[i++];}};FCK.LoadLinkedFile();var FCKTempBin=new Object();FCKTempBin.Elements=new Array();FCKTempBin.AddElement=function(A){var B=this.Elements.length;this.Elements[B]=A;return B;};FCKTempBin.RemoveElement=function(A){var e=this.Elements[A];this.Elements[A]=null;return e;};FCKTempBin.Reset=function(){var i=0;while (i<this.Elements.length) this.Elements[i++]==null;this.Elements.length=0;}
+var FCKConfig=FCK.Config=new Object();if (document.location.protocol=='file:'){FCKConfig.BasePath=unescape(document.location.pathname.substr(1));FCKConfig.BasePath=FCKConfig.BasePath.replace(/\\/gi, '/');FCKConfig.BasePath='file://'+FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1);FCKConfig.FullBasePath=FCKConfig.BasePath;}else{FCKConfig.BasePath=document.location.pathname.substring(0,document.location.pathname.lastIndexOf('/')+1);FCKConfig.FullBasePath=document.location.protocol+'//'+document.location.host+FCKConfig.BasePath;};FCKConfig.EditorPath=FCKConfig.BasePath.replace(/editor\/$/,'');try{FCKConfig.ScreenWidth=screen.width;FCKConfig.ScreenHeight=screen.height;}catch (e){FCKConfig.ScreenWidth=800;FCKConfig.ScreenHeight=600;};FCKConfig.ProcessHiddenField=function(){this.PageConfig=new Object();var A=window.parent.document.getElementById(FCK.Name+'___Config');if (!A) return;var B=A.value.split('&');for (var i=0;i<B.length;i++){if (B[i].length==0) continue;var C=B[i].split('=');var D=unescape(C[0]);var E=unescape(C[1]);if (D=='CustomConfigurationsPath') FCKConfig[D]=E;else if (E.toLowerCase()=="true") this.PageConfig[D]=true;else if (E.toLowerCase()=="false") this.PageConfig[D]=false;else if (!isNaN(E)) this.PageConfig[D]=parseInt(E);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var oPageConfig=FCKConfig.PageConfig;for (var sKey in oPageConfig) FCKConfig[sKey]=oPageConfig[sKey];};function FCKConfig_PreProcess(){var oConfig=FCKConfig;if (oConfig.AllowQueryStringDebug&&(/fckdebug=true/i).test(window.top.location.search)) oConfig.Debug=true;if (!oConfig.PluginsPath.endsWith('/')) oConfig.PluginsPath+='/';if (typeof(oConfig.EditorAreaCSS)=='string') oConfig.EditorAreaCSS=[oConfig.EditorAreaCSS];};FCKConfig.ToolbarSets=new Object();FCKConfig.Plugins=new Object();FCKConfig.Plugins.Items=new Array();FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.AddItem([A,B,C]);};FCKConfig.ProtectedSource=new Object();FCKConfig.ProtectedSource.RegexEntries=new Array();FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.AddItem(A);};FCKConfig.ProtectedSource.Protect=function(A){function _Replace(protectedSource){var B=FCKTempBin.AddElement(protectedSource);return '<!--{PS..'+B+'}-->';};for (var i=0;i<this.RegexEntries.length;i++){A=A.replace(this.RegexEntries[i],_Replace);};return A;};FCKConfig.ProtectedSource.Revert=function(A,B){function _Replace(m,opener,index){var C=B?FCKTempBin.RemoveElement(index):FCKTempBin.Elements[index];return FCKConfig.ProtectedSource.Revert(C,B);};return A.replace(/(<|&lt;)!--\{PS..(\d+)\}--(>|&gt;)/g,_Replace);};FCKConfig.ProtectedSource.Add(/<!--[\s\S]*?-->/g);
+var FCKDebug=new Object();FCKDebug.Output=function(A,B,C){if (!FCKConfig.Debug) return;if (!C&&A!=null&&isNaN(A)) A=A.replace(/</g,"&lt;");if (!this.DebugWindow||this.DebugWindow.closed) this.DebugWindow=window.open(FCKConfig.BasePath+'fckdebug.html','FCKeditorDebug','menubar=no,scrollbars=no,resizable=yes,location=no,toolbar=no,width=600,height=500',true);if (this.DebugWindow&&this.DebugWindow.Output){try{this.DebugWindow.Output(A,B);}catch (e) {}}};FCKDebug.OutputObject=function(A,B){if (!FCKConfig.Debug) return;var C;if (A!=null){C='Properties of: '+A+'</b><blockquote>';for (var D in A){try{var E=A[D]?A[D]+'':'[null]';C+='<b>'+D+'</b> : '+E.replace(/</g,'&lt;')+'<br>';}catch (e){try{C+='<b>'+D+'</b> : ['+typeof(A[D])+']<br>';}catch (e){C+='<b>'+D+'</b> : [-error-]<br>';}}};C+='</blockquote><b>';} else C='OutputObject : Object is "null".';FCKDebug.Output(C,B,true);}
+var FCKTools=new Object();FCKTools.GetLinkedFieldValue=function(){return FCK.LinkedField.value;};FCKTools.AttachToLinkedFieldFormSubmit=function(A){var B=FCK.LinkedField.form;if (!B) return;if (FCKBrowserInfo.IsIE) B.attachEvent("onsubmit",A);else B.addEventListener('submit',A,false);if (!B.updateFCKeditor) B.updateFCKeditor=new Array();B.updateFCKeditor[B.updateFCKeditor.length]=A;if (!B.originalSubmit&&(typeof(B.submit)=='function'||(!B.submit.tagName&&!B.submit.length))){B.originalSubmit=B.submit;B.submit=FCKTools_SubmitReplacer;}};function FCKTools_SubmitReplacer(){if (this.updateFCKeditor){for (var i=0;i<this.updateFCKeditor.length;i++) this.updateFCKeditor[i]();};this.originalSubmit();};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.GetElementPosition=function(A,B){var c={ X:0,Y:0 };var C=B||window;while (A){c.X+=A.offsetLeft-A.scrollLeft;c.Y+=A.offsetTop-A.scrollTop;if (A.offsetParent==null){var D=FCKTools.GetElementWindow(A);if (D!=C) A=D.frameElement;else{c.X+=A.scrollLeft;c.Y+=A.scrollTop;break;}}else A=A.offsetParent;};return c;};FCKTools.FixDocumentParentWindow=function(A){A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.GetParentWindow=function(A){return A.contentWindow?A.contentWindow:A.parentWindow;};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.endsWith('%')?A:parseInt(A);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.endsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;}
+var GECKO_BOGUS=FCKBrowserInfo.IsGecko?'<br _moz_editor_bogus_node="TRUE">':'';FCKTools.CancelEvent=function(e){if (e) e.preventDefault();};FCKTools.DisableSelection=function(A){if (FCKBrowserInfo.IsGecko) A.style.MozUserSelect='none';else A.style.userSelect='none';};FCKTools.AppendStyleSheet=function(A,B){var e=A.createElement('LINK');e.rel='stylesheet';e.type='text/css';e.href=B;A.getElementsByTagName("HEAD")[0].appendChild(e);return e;};FCKTools.ClearElementAttributes=function(A){for (var i=0;i<A.attributes.length;i++){A.removeAttribute(A.attributes[i].name,0);}};FCKTools.GetAllChildrenIds=function(A){var B=new Array();var C=function(parent){for (var i=0;i<parent.childNodes.length;i++){var D=parent.childNodes[i].id;if (D&&D.length>0) B[B.length]=D;C(parent.childNodes[i]);}};C(A);return B;};FCKTools.RemoveOuterTags=function(e){var A=e.ownerDocument.createDocumentFragment();for (var i=0;i<e.childNodes.length;i++) A.appendChild(e.childNodes[i]);e.parentNode.replaceChild(A,e);};FCKTools.CreateXmlObject=function(A){switch (A){case 'XmlHttp':return new XMLHttpRequest();case 'DOMDocument':return document.implementation.createDocument('','',null);};return null;};FCKTools.GetScrollPosition=function(A){return { X:A.pageXOffset,Y:A.pageYOffset };};FCKTools.AddEventListener=function(A,B,C){A.addEventListener(B,C,false);};FCKTools.RemoveEventListener=function(A,B,C){A.removeEventListener(B,C,false);};FCKTools.AddEventListenerEx=function(A,B,C,D){A.addEventListener(B,function(e){C.apply(A,[e].concat(D||[]));},false);};FCKTools.GetViewPaneSize=function(A){return { Width:A.innerWidth,Height:A.innerHeight };};FCKTools.SaveStyles=function(A){var B=new Object();if (A.className.length>0){B.Class=A.className;A.className='';};var C=A.getAttribute('style');if (C&&C.length>0){B.Inline=C;A.setAttribute('style','',0);};return B;};FCKTools.RestoreStyles=function(A,B){A.className=B.Class||'';if (B.Inline) A.setAttribute('style',B.Inline,0);else A.removeAttribute('style',0);};FCKTools.RegisterDollarFunction=function(A){A.$=function(id){return this.document.getElementById(id);};};FCKTools.AppendElement=function(A,B){return A.appendChild(A.ownerDocument.createElement(B));};
+var FCKeditorAPI;function InitializeAPI(){if (!(FCKeditorAPI=window.parent.FCKeditorAPI)){var sScript='\ var FCKeditorAPI={\ Version:\'2.3.1\',\ VersionBuild:\'1062\',\ __Instances:new Object(),\ GetInstance:function(instanceName)\{\ return this.__Instances[instanceName];\},\ _FunctionQueue:{\ Functions:new Array(),\ IsRunning:false,\ Add:function(functionToAdd)\{\ this.Functions.push(functionToAdd);\ if (!this.IsRunning)\ this.StartNext();\},\ StartNext:function()\{\ var aQueue=this.Functions;\ if (aQueue.length>0)\{\ this.IsRunning=true;\ aQueue[0].call();\}\ else\ this.IsRunning=false;\},\ Remove:function(func)\{\ var aQueue=this.Functions;\ var i=0,fFunc;\ while(fFunc=aQueue[i])\{\ if (fFunc==func)\ aQueue.splice(i,1);\ i++;\}\ this.StartNext();\}\}\}';if (window.parent.execScript) window.parent.execScript(sScript,'JavaScript');else window.parent.eval(sScript);FCKeditorAPI=window.parent.FCKeditorAPI;};FCKeditorAPI.__Instances[FCK.Name]=FCK;};function FCKeditorAPI_Cleanup(){FCKeditorAPI.__Instances[FCK.Name]=null;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);
+var FCKRegexLib=new Object();FCKRegexLib.AposEntity=/&apos;/gi;FCKRegexLib.ObjectElements=/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i;FCKRegexLib.BlockElements=/^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TD|TH)$/i;FCKRegexLib.EmptyElements=/^(?:BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT)$/i;FCKRegexLib.NamedCommands=/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i;FCKRegexLib.BodyContents=/([\s\S]*\<body[^\>]*\>)([\s\S]*)(\<\/body\>[\s\S]*)/i;FCKRegexLib.ToReplace=/___fcktoreplace:([\w]+)/ig;FCKRegexLib.MetaHttpEquiv=/http-equiv\s*=\s*["']?([^"' ]+)/i;FCKRegexLib.HasBaseTag=/<base /i;FCKRegexLib.HeadOpener=/<head\s?[^>]*>/i;FCKRegexLib.HeadCloser=/<\/head\s*>/i;FCKRegexLib.TableBorderClass=/\s*FCK__ShowTableBorders\s*/;FCKRegexLib.ElementName=/(^[A-Za-z_:][\w.\-:]*\w$)|(^[A-Za-z_]$)/;FCKRegexLib.ForceSimpleAmpersand=/___FCKAmp___/g;FCKRegexLib.SpaceNoClose=/\/>/g;FCKRegexLib.EmptyParagraph=/^<(p|div)>\s*<\/\1>$/i;FCKRegexLib.TagBody=/></;FCKRegexLib.StrongOpener=/<STRONG([ \>])/gi;FCKRegexLib.StrongCloser=/<\/STRONG>/gi;FCKRegexLib.EmOpener=/<EM([ \>])/gi;FCKRegexLib.EmCloser=/<\/EM>/gi;FCKRegexLib.GeckoEntitiesMarker=/#\?-\:/g;FCKRegexLib.ProtectUrlsAApo=/(<a\s.*?href=)("|')(.+?)\2/gi;FCKRegexLib.ProtectUrlsANoApo=/(<a\s.*?href=)([^"'][^ >]+)/gi;FCKRegexLib.ProtectUrlsImgApo=/(<img\s.*?src=)("|')(.+?)\2/gi;FCKRegexLib.ProtectUrlsImgNoApo=/(<img\s.*?src=)([^"'][^ >]+)/gi;FCKRegexLib.Html4DocType=/HTML 4\.0 Transitional/i;
+var FCKLanguageManager=FCK.Language=new Object();FCKLanguageManager.AvailableLanguages={'ar':'Arabic','bg':'Bulgarian','bn':'Bengali/Bangla','bs':'Bosnian','ca':'Catalan','cs':'Czech','da':'Danish','de':'German','el':'Greek','en':'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)','eo':'Esperanto','es':'Spanish','et':'Estonian','eu':'Basque','fa':'Persian','fi':'Finnish','fo':'Faroese','fr':'French','gl':'Galician','he':'Hebrew','hi':'Hindi','hr':'Croatian','hu':'Hungarian','it':'Italian','ja':'Japanese','km':'Khmer','ko':'Korean','lt':'Lithuanian','lv':'Latvian','mn':'Mongolian','ms':'Malay','nl':'Dutch','no':'Norwegian','pl':'Polish','pt':'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)','ro':'Romanian','ru':'Russian','sk':'Slovak','sl':'Slovenian','sr':'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)','sv':'Swedish','th':'Thai','tr':'Turkish','uk':'Ukrainian','vi':'Vietnamese','zh':'Chinese Traditional','zh-cn':'Chinese Simplified'};FCKLanguageManager.GetActiveLanguage=function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;};FCKLanguageManager.TranslateElements=function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i<e.length;i++){if (E=e[i].getAttribute('fckLang')){if (s=FCKLang[E]){if (D) s=FCKTools.HTMLEncode(s);eval('e[i].'+C+' = s');}}}};FCKLanguageManager.TranslatePage=function(A){this.TranslateElements(A,'INPUT','value');this.TranslateElements(A,'SPAN','innerHTML');this.TranslateElements(A,'LABEL','innerHTML');this.TranslateElements(A,'OPTION','innerHTML',true);};FCKLanguageManager.Initialize=function(){if (this.AvailableLanguages[FCKConfig.DefaultLanguage]) this.DefaultLanguage=FCKConfig.DefaultLanguage;else this.DefaultLanguage='en';this.ActiveLanguage=new Object();this.ActiveLanguage.Code=this.GetActiveLanguage();this.ActiveLanguage.Name=this.AvailableLanguages[this.ActiveLanguage.Code];}
+var FCKEvents;FCKEvents=function(A){this.Owner=A;this.RegisteredEvents=new Object();};FCKEvents.prototype.AttachEvent=function(A,B){var C;if (!(C=this.RegisteredEvents[A])) this.RegisteredEvents[A]=[B];else C.push(B);};FCKEvents.prototype.FireEvent=function(A,B){var C=true;var D=this.RegisteredEvents[A];if (D){for (var i=0;i<D.length;i++) C=(D[i](this.Owner,B)&&C);};return C;}
+var FCKXHtmlEntities=new Object();FCKXHtmlEntities.Initialize=function(){if (FCKXHtmlEntities.Entities) return;if (FCKConfig.ProcessHTMLEntities){FCKXHtmlEntities.Entities={' ':'nbsp','¡':'iexcl','¢':'cent','£':'pound','¤':'curren','¥':'yen','¦':'brvbar','§':'sect','¨':'uml','©':'copy','ª':'ordf','«':'laquo','¬':'not','­':'shy','®':'reg','¯':'macr','°':'deg','±':'plusmn','²':'sup2','³':'sup3','´':'acute','µ':'micro','¶':'para','·':'middot','¸':'cedil','¹':'sup1','º':'ordm','»':'raquo','¼':'frac14','½':'frac12','¾':'frac34','¿':'iquest','×':'times','÷':'divide','ƒ':'fnof','•':'bull','…':'hellip','′':'prime','″':'Prime','‾':'oline','⁄':'frasl','℘':'weierp','ℑ':'image','ℜ':'real','™':'trade','ℵ':'alefsym','←':'larr','↑':'uarr','→':'rarr','↓':'darr','↔':'harr','↵':'crarr','⇐':'lArr','⇑':'uArr','⇒':'rArr','⇓':'dArr','⇔':'hArr','∀':'forall','∂':'part','∃':'exist','∅':'empty','∇':'nabla','∈':'isin','∉':'notin','∋':'ni','∏':'prod','∑':'sum','−':'minus','∗':'lowast','√':'radic','∝':'prop','∞':'infin','∠':'ang','∧':'and','∨':'or','∩':'cap','∪':'cup','∫':'int','∴':'there4','∼':'sim','≅':'cong','≈':'asymp','≠':'ne','≡':'equiv','≤':'le','≥':'ge','⊂':'sub','⊃':'sup','⊄':'nsub','⊆':'sube','⊇':'supe','⊕':'oplus','⊗':'otimes','⊥':'perp','⋅':'sdot','◊':'loz','♠':'spades','♣':'clubs','♥':'hearts','♦':'diams','"':'quot','ˆ':'circ','˜':'tilde',' ':'ensp',' ':'emsp',' ':'thinsp','‌':'zwnj','‍':'zwj','‎':'lrm','‏':'rlm','–':'ndash','—':'mdash','‘':'lsquo','’':'rsquo','‚':'sbquo','“':'ldquo','”':'rdquo','„':'bdquo','†':'dagger','‡':'Dagger','‰':'permil','‹':'lsaquo','›':'rsaquo','€':'euro'};FCKXHtmlEntities.Chars='';for (var e in FCKXHtmlEntities.Entities) FCKXHtmlEntities.Chars+=e;if (FCKConfig.IncludeLatinEntities){var A={'À':'Agrave','Á':'Aacute','Â':'Acirc','Ã':'Atilde','Ä':'Auml','Å':'Aring','Æ':'AElig','Ç':'Ccedil','È':'Egrave','É':'Eacute','Ê':'Ecirc','Ë':'Euml','Ì':'Igrave','Í':'Iacute','Î':'Icirc','Ï':'Iuml','Ð':'ETH','Ñ':'Ntilde','Ò':'Ograve','Ó':'Oacute','Ô':'Ocirc','Õ':'Otilde','Ö':'Ouml','Ø':'Oslash','Ù':'Ugrave','Ú':'Uacute','Û':'Ucirc','Ü':'Uuml','Ý':'Yacute','Þ':'THORN','ß':'szlig','à':'agrave','á':'aacute','â':'acirc','ã':'atilde','ä':'auml','å':'aring','æ':'aelig','ç':'ccedil','è':'egrave','é':'eacute','ê':'ecirc','ë':'euml','ì':'igrave','í':'iacute','î':'icirc','ï':'iuml','ð':'eth','ñ':'ntilde','ò':'ograve','ó':'oacute','ô':'ocirc','õ':'otilde','ö':'ouml','ø':'oslash','ù':'ugrave','ú':'uacute','û':'ucirc','ü':'uuml','ý':'yacute','þ':'thorn','ÿ':'yuml','Œ':'OElig','œ':'oelig','Š':'Scaron','š':'scaron','Ÿ':'Yuml'};for (var e in A){FCKXHtmlEntities.Entities[e]=A[e];FCKXHtmlEntities.Chars+=e;};A=null;};if (FCKConfig.IncludeGreekEntities){var A={'Α':'Alpha','Β':'Beta','Γ':'Gamma','Δ':'Delta','Ε':'Epsilon','Ζ':'Zeta','Η':'Eta','Θ':'Theta','Ι':'Iota','Κ':'Kappa','Λ':'Lambda','Μ':'Mu','Ν':'Nu','Ξ':'Xi','Ο':'Omicron','Π':'Pi','Ρ':'Rho','Σ':'Sigma','Τ':'Tau','Υ':'Upsilon','Φ':'Phi','Χ':'Chi','Ψ':'Psi','Ω':'Omega','α':'alpha','β':'beta','γ':'gamma','δ':'delta','ε':'epsilon','ζ':'zeta','η':'eta','θ':'theta','ι':'iota','κ':'kappa','λ':'lambda','μ':'mu','ν':'nu','ξ':'xi','ο':'omicron','π':'pi','ρ':'rho','ς':'sigmaf','σ':'sigma','τ':'tau','υ':'upsilon','φ':'phi','χ':'chi','ψ':'psi','ω':'omega'};for (var e in A){FCKXHtmlEntities.Entities[e]=A[e];FCKXHtmlEntities.Chars+=e;};A=null;};FCKXHtmlEntities.EntitiesRegex=new RegExp('['+FCKXHtmlEntities.Chars+']|[^'+FCKXHtmlEntities.Chars+']+','g');}else{FCKXHtmlEntities.Entities={ ' ':'nbsp' };FCKXHtmlEntities.EntitiesRegex=/[ ]|[^ ]+/g;}}
+var FCKXHtml=new Object();FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKXHtmlEntities.Initialize();this._CreateNode=FCKConfig.ForceStrongEm?FCKXHtml_CreateNode_StrongEm:FCKXHtml_CreateNode_Normal;FCKXHtml.SpecialBlocks=new Array();this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);var D=this._GetMainXmlString();D=D.substr(7,D.length-15).trim();if (FCKBrowserInfo.IsGecko) D=D.replace(/<br\/>$/,'');D=D.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) D=D.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) D=FCKCodeFormatter.Format(D);for (var i=0;i<FCKXHtml.SpecialBlocks.length;i++){var E=new RegExp('___FCKsi___'+i);D=D.replace(E,FCKXHtml.SpecialBlocks[i]);};this.XML=null;return D};FCKXHtml._AppendAttribute=function(A,B,C){try{var D=this.XML.createAttribute(B);D.value=C?C:'';A.attributes.setNamedItem(D);}catch (e){}};FCKXHtml._AppendChildNodes=function(A,B,C){var D=0;var E=B.firstChild;while (E){if (this._AppendNode(A,E)) D++;E=E.nextSibling;};if (D==0){if (C&&FCKConfig.FillEmptyBlocks){this._AppendEntity(A,'nbsp');return;};if (!FCKRegexLib.EmptyElements.test(B.nodeName)) A.appendChild(this.XML.createTextNode(''));}};FCKXHtml._AppendNode=function(A,B){if (!B) return;switch (B.nodeType){case 1:if (B.getAttribute('_fckfakelement')) return FCKXHtml._AppendNode(A,FCK.GetRealElement(B));if (FCKBrowserInfo.IsGecko&&B.hasAttribute('_moz_editor_bogus_node')) return false;if (B.getAttribute('_fcktemp')) return false;var C=B.nodeName;if (FCKBrowserInfo.IsIE&&B.scopeName&&B.scopeName!='HTML') C=B.scopeName+':'+C;if (!FCKRegexLib.ElementName.test(C)) return false;C=C.toLowerCase();if (FCKBrowserInfo.IsGecko&&C=='br'&&B.hasAttribute('type')&&B.getAttribute('type',2)=='_moz') return false;if (B._fckxhtmljob&&B._fckxhtmljob==FCKXHtml.CurrentJobNum) return false;var D=this._CreateNode(C);FCKXHtml._AppendAttributes(A,B,D,C);B._fckxhtmljob=FCKXHtml.CurrentJobNum;var E=FCKXHtml.TagProcessors[C];if (E){D=E(D,B,A);if (!D) break;}else this._AppendChildNodes(D,B,FCKRegexLib.BlockElements.test(C));A.appendChild(D);break;case 3:this._AppendTextNode(A,B.nodeValue.replaceNewLineChars(' '));break;case 8:try { A.appendChild(this.XML.createComment(B.nodeValue));}catch (e) { /* Do nothing... probably this is a wrong format comment. */};break;default:A.appendChild(this.XML.createComment("Element not supported - Type: "+B.nodeType+" Name: "+B.nodeName));break;};return true;};function FCKXHtml_CreateNode_StrongEm(nodeName){switch (nodeName){case 'b':nodeName='strong';break;case 'i':nodeName='em';break;};return this.XML.createElement(nodeName);};function FCKXHtml_CreateNode_Normal(nodeName){return this.XML.createElement(nodeName);};FCKXHtml._AppendSpecialItem=function(A){return '___FCKsi___'+FCKXHtml.SpecialBlocks.AddItem(A);};FCKXHtml._AppendTextNode=function(A,B){var C=B.match(FCKXHtmlEntities.EntitiesRegex);if (C){for (var i=0;i<C.length;i++){if (C[i].length==1){var D=FCKXHtmlEntities.Entities[C[i]];if (D!=null){this._AppendEntity(A,D);continue;}};A.appendChild(this.XML.createTextNode(C[i]));}}};FCKXHtml.TagProcessors=new Object();FCKXHtml.TagProcessors['img']=function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C&&C.length>0) FCKXHtml._AppendAttribute(A,'src',C);return A;};FCKXHtml.TagProcessors['a']=function(A,B){var C=B.getAttribute('_fcksavedurl');if (C&&C.length>0) FCKXHtml._AppendAttribute(A,'href',C);FCKXHtml._AppendChildNodes(A,B,false);return A;};FCKXHtml.TagProcessors['script']=function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;};FCKXHtml.TagProcessors['style']=function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.innerHTML)));return A;};FCKXHtml.TagProcessors['title']=function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;};FCKXHtml.TagProcessors['table']=function(A,B){var C=A.attributes.getNamedItem('class');if (C&&FCKRegexLib.TableBorderClass.test(C.nodeValue)){var D=C.nodeValue.replace(FCKRegexLib.TableBorderClass,'');if (D.length==0) A.attributes.removeNamedItem('class');else FCKXHtml._AppendAttribute(A,'class',D);};FCKXHtml._AppendChildNodes(A,B,false);return A;};FCKXHtml.TagProcessors['ol']=FCKXHtml.TagProcessors['ul']=function(A,B,C){if (B.innerHTML.trim().length==0) return;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return;};FCKXHtml._AppendChildNodes(A,B);return A;}
+FCKXHtml._GetMainXmlString=function(){var A=new XMLSerializer();return A.serializeToString(this.MainNode).replace(FCKRegexLib.GeckoEntitiesMarker,'&');};FCKXHtml._AppendEntity=function(A,B){A.appendChild(this.XML.createTextNode('#?-:'+B+';'));};FCKXHtml._AppendAttributes=function(A,B,C){var D=B.attributes;for (var n=0;n<D.length;n++){var E=D[n];if (E.specified){var F=E.nodeName.toLowerCase();var G;if (F.startsWith('_fck')) continue;else if (F.indexOf('_moz')==0) continue;else if (F=='class') G=E.nodeValue;else if (E.nodeValue===true) G=F;else G=B.getAttribute(F,2);if (FCKConfig.ForceSimpleAmpersand&&G.replace) G=G.replace(/&/g,'___FCKAmp___');this._AppendAttribute(C,F,G);}}}
+var FCKCodeFormatter=new Object();FCKCodeFormatter.Init=function(){var A=this.Regex=new Object();A.BlocksOpener=/\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.NewLineTags=/\<(BR|HR)[^\>]*\>/gi;A.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;A.LineSplitter=/\s*\n+\s*/g;A.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/\>]/i;A.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \>]/i;A.FormatIndentatorRemove=new RegExp('^'+FCKConfig.FormatIndentator);A.ProtectedTags=/(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi;};FCKCodeFormatter._ProtectData=function(A,B,C,D){return B+'___FCKpd___'+FCKCodeFormatter.ProtectedData.AddItem(C)+D;};FCKCodeFormatter.Format=function(A){if (!this.Regex) this.Init();FCKCodeFormatter.ProtectedData=new Array();var B=A.replace(this.Regex.ProtectedTags,FCKCodeFormatter._ProtectData);B=B.replace(this.Regex.BlocksOpener,'\n$&');;B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;i<D.length;i++){var E=D[i];if (E.length==0) continue;if (this.Regex.DecreaseIndent.test(E)) C=C.replace(this.Regex.FormatIndentatorRemove,'');B+=C+E+'\n';if (this.Regex.IncreaseIndent.test(E)) C+=FCKConfig.FormatIndentator;};for (var i=0;i<FCKCodeFormatter.ProtectedData.length;i++){var F=new RegExp('___FCKpd___'+i);B=B.replace(F,FCKCodeFormatter.ProtectedData[i].replace(/\$/g,'$$$$'));};return B.trim();}
+var FCKUndo=new Object();FCKUndo.SaveUndoStep=function(){}
+var FCKEditingArea=function(A){this.TargetElement=A;this.Mode=FCK_EDITMODE_WYSIWYG;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKEditingArea_Cleanup);};FCKEditingArea.prototype.Start=function(A,B){var C=this.TargetElement;var D=FCKTools.GetElementDocument(C);while(C.childNodes.length>0) C.removeChild(C.childNodes[0]);if (this.Mode==FCK_EDITMODE_WYSIWYG){if (FCKBrowserInfo.IsGecko) A=A.replace(/(<body[^>]*>)\s*(<\/body>)/i,'$1'+GECKO_BOGUS+'$2');var E=this.IFrame=D.createElement('iframe');E.src='javascript:void(0)';E.frameBorder=0;E.width=E.height='100%';C.appendChild(E);if (FCKBrowserInfo.IsIE) A=A.replace(/(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1></base>');this.Window=E.contentWindow;var F=this.Document=this.Window.document;F.open();F.write(A);F.close();if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}else{var G=this.Textarea=D.createElement('textarea');G.className='SourceField';G.dir='ltr';G.style.width=G.style.height='100%';G.style.border='none';C.appendChild(G);G.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var oEditorArea=this._FCKEditingArea;oEditorArea.MakeEditable();FCKTools.RunFunction(oEditorArea.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE) A.body.contentEditable=true;else{try{A.designMode='on';A.execCommand('useCSS',false,!FCKConfig.GeckoUseSPAN);A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e) {}}};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==FCK_EDITMODE_WYSIWYG){if (FCKBrowserInfo.IsSafari) this.IFrame.focus();else this.Window.focus();}else this.Textarea.focus();}catch(e) {}};function FCKEditingArea_Cleanup(){this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}}
+var FCKDocumentProcessor=new Object();FCKDocumentProcessor._Items=new Array();FCKDocumentProcessor.AppendNew=function(){var A=new Object();this._Items.AddItem(A);return A;};FCKDocumentProcessor.Process=function(A){var B,i=0;while((B=this._Items[i++])) B.ProcessDocument(A);};var FCKDocumentProcessor_CreateFakeImage=function(A,B){var C=FCK.EditorDocument.createElement('IMG');C.className=A;C.src=FCKConfig.FullBasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};var FCKAnchorsProcessor=FCKDocumentProcessor.AppendNew();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0&&(!C.getAttribute('href')||C.getAttribute('href').length==0)){var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};var FCKFlashProcessor=FCKDocumentProcessor.AppendNew();FCKFlashProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('EMBED');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.src.endsWith('.swf',true)){var D=C.cloneNode(true);if (FCKBrowserInfo.IsIE){var E;if (E=C.getAttribute('scale')) D.setAttribute('scale',E);if (E=C.getAttribute('play')) D.setAttribute('play',E);if (E=C.getAttribute('loop')) D.setAttribute('loop',E);if (E=C.getAttribute('menu')) D.setAttribute('menu',E);if (E=C.getAttribute('wmode')) D.setAttribute('wmode',E);if (E=C.getAttribute('quality')) D.setAttribute('quality',E);};var F=FCKDocumentProcessor_CreateFakeImage('FCK__Flash',D);F.setAttribute('_fckflash','true',0);FCKFlashProcessor.RefreshView(F,C);C.parentNode.insertBefore(F,C);C.parentNode.removeChild(C);}}};FCKFlashProcessor.RefreshView=function(A,B){if (B.width>0) A.style.width=FCKTools.ConvertHtmlSizeToStyle(B.width);if (B.height>0) A.style.height=FCKTools.ConvertHtmlSizeToStyle(B.height);};FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};
+var FCK_StartupValue;FCK.Events=new FCKEvents(FCK);FCK.Toolbar=null;FCK.HasFocus=false;FCK.StartEditor=function(){FCK.TempBaseTag=FCKConfig.BaseHref.length>0?'<base href="'+FCKConfig.BaseHref+'" _fcktemp="true"></base>':'';FCK.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.SetHTML(FCKTools.GetLinkedFieldValue());};FCK.Focus=function(){FCK.EditingArea.Focus();};FCK.SetStatus=function(A){this.Status=A;if (A==FCK_STATUS_ACTIVE){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);};FCK.GetHTML=FCK.GetXHTML=function(A){if (FCK.EditMode==FCK_EDITMODE_SOURCE) return FCK.EditingArea.Textarea.value;var B;if (FCKConfig.FullPage) B=FCKXHtml.GetXHTML(this.EditorDocument.getElementsByTagName('html')[0],true,A);else{if (FCKConfig.IgnoreEmptyParagraphValue&&this.EditorDocument.body.innerHTML=='<P>&nbsp;</P>') B='';else B=FCKXHtml.GetXHTML(this.EditorDocument.body,false,A);};if (FCKBrowserInfo.IsIE) B=B.replace(FCKRegexLib.ToReplace,'$1');if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) B=FCK.DocTypeDeclaration+'\n'+B;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) B=FCK.XmlDeclaration+'\n'+B;return FCKConfig.ProtectedSource.Revert(B);};FCK.UpdateLinkedField=function(){FCK.LinkedField.value=FCK.GetXHTML(FCKConfig.FormatOutput);FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');};FCK.RegisteredDoubleClickHandlers=new Object();FCK.OnDoubleClick=function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName];if (B) B(A);};FCK.RegisterDoubleClickHandler=function(A,B){FCK.RegisteredDoubleClickHandlers[B.toUpperCase()]=A;};FCK.OnAfterSetHTML=function(){FCKDocumentProcessor.Process(FCK.EditorDocument);FCK.Events.FireEvent('OnAfterSetHTML');};FCK.ProtectUrls=function(A){A=A.replace(FCKRegexLib.ProtectUrlsAApo,'$1$2$3$2 _fcksavedurl=$2$3$2');A=A.replace(FCKRegexLib.ProtectUrlsANoApo,'$1$2 _fcksavedurl="$2"');A=A.replace(FCKRegexLib.ProtectUrlsImgApo,'$1$2$3$2 _fcksavedurl=$2$3$2');A=A.replace(FCKRegexLib.ProtectUrlsImgNoApo,'$1$2 _fcksavedurl="$2"');return A;};FCK.IsDirty=function(){return (FCK_StartupValue!=FCK.EditorDocument.body.innerHTML);};FCK.ResetIsDirty=function(){if (FCK.EditorDocument.body) FCK_StartupValue=FCK.EditorDocument.body.innerHTML;};FCK.SetHTML=function(A){this.EditingArea.Mode=FCK.EditMode;if (FCK.EditMode==FCK_EDITMODE_WYSIWYG){if (FCKBrowserInfo.IsGecko){A=A.replace(FCKRegexLib.StrongOpener,'<b$1');A=A.replace(FCKRegexLib.StrongCloser,'<\/b>');A=A.replace(FCKRegexLib.EmOpener,'<i$1');A=A.replace(FCKRegexLib.EmCloser,'<\/i>');};A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectUrls(A);var B;if (FCKConfig.FullPage){var B;if (FCKBrowserInfo.IsIE) B=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) B='<link href="'+FCKConfig.FullBasePath+'css/fck_showtableborders_gecko.css" rel="stylesheet" type="text/css" _fcktemp="true" />';B+='<link href="'+FCKConfig.FullBasePath+'css/fck_internal.css'+'" rel="stylesheet" type="text/css" _fcktemp="true" />';B=A.replace(FCKRegexLib.HeadCloser,B+'$&');if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) B=B.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);}else{B=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"';if (FCKBrowserInfo.IsIE&&!FCKRegexLib.Html4DocType.test(FCKConfig.DocType)) B+=' style="overflow-y: scroll"';B+='><head><title></title>'+this._GetEditorAreaStyleTags()+'<link href="'+FCKConfig.FullBasePath+'css/fck_internal.css'+'" rel="stylesheet" type="text/css" _fcktemp="true" />';if (FCKBrowserInfo.IsIE) B+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) B+='<link href="'+FCKConfig.FullBasePath+'css/fck_showtableborders_gecko.css" rel="stylesheet" type="text/css" _fcktemp="true" />';B+=FCK.TempBaseTag;B+='</head><body>';if (FCKBrowserInfo.IsGecko&&(A.length==0||FCKRegexLib.EmptyParagraph.test(A))) B+=GECKO_BOGUS;else B+=A;B+='</body></html>';};this.EditingArea.OnLoad=FCK_EditingArea_OnLoad;this.EditingArea.Start(B);}else{this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;}};function FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;FCK.InitializeBehaviors();FCK.OnAfterSetHTML();if (FCK.Status!=FCK_STATUS_NOTLOADED) return;FCK.ResetIsDirty();FCKTools.AttachToLinkedFieldFormSubmit(FCK.UpdateLinkedField);FCKUndo.SaveUndoStep();FCK.SetStatus(FCK_STATUS_ACTIVE);};FCK._GetEditorAreaStyleTags=function(){var A='';var B=FCKConfig.EditorAreaCSS;for (var i=0;i<B.length;i++) A+='<link href="'+B[i]+'" rel="stylesheet" type="text/css" />';return A;};var FCKFocusManager=FCK.FocusManager=new Object();FCKFocusManager.IsLocked=false;FCK.HasFocus=false;FCKFocusManager.AddWindow=function(A,B){var C;if (FCKBrowserInfo.IsIE) C=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else C=A.document;FCKTools.AddEventListener(C,'blur',FCKFocusManager_Win_OnBlur);FCKTools.AddEventListener(C,'focus',B?FCKFocusManager_Win_OnFocus_Area:FCKFocusManager_Win_OnFocus);};FCKFocusManager.RemoveWindow=function(A){if (FCKBrowserInfo.IsIE) oTarget=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else oTarget=A.document;FCKTools.RemoveEventListener(oTarget,'blur',FCKFocusManager_Win_OnBlur);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus_Area);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus);};FCKFocusManager.Lock=function(){this.IsLocked=true;};FCKFocusManager.Unlock=function(){if (this._HasPendingBlur) FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);this.IsLocked=false;};FCKFocusManager._ResetTimer=function(){this._HasPendingBlur=false;if (this._Timer){window.clearTimeout(this._Timer);delete this._Timer;}};function FCKFocusManager_Win_OnBlur(){if (FCK&&FCK.HasFocus){FCKFocusManager._ResetTimer();FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);}};function FCKFocusManager_FireOnBlur(){if (FCKFocusManager.IsLocked) FCKFocusManager._HasPendingBlur=true;else{FCK.HasFocus=false;FCK.Events.FireEvent("OnBlur");}};function FCKFocusManager_Win_OnFocus_Area(){FCKFocusManager_Win_OnFocus();FCK.Focus();};function FCKFocusManager_Win_OnFocus(){FCKFocusManager._ResetTimer();if (!FCK.HasFocus&&!FCKFocusManager.IsLocked){FCK.HasFocus=true;FCK.Events.FireEvent("OnFocus");}}
+FCK.Description="FCKeditor for Gecko Browsers";FCK.InitializeBehaviors=function(){Window_OnResize();FCKFocusManager.AddWindow(this.EditorWindow);var A=function(e){var B;if (e.ctrlKey&&!e.shiftKey&&!e.altKey){switch (e.which){case 66:case 98:FCK.ExecuteNamedCommand('bold');B=true;break;case 105:case 73:FCK.ExecuteNamedCommand('italic');B=true;break;case 117:case 85:FCK.ExecuteNamedCommand('underline');B=true;break;case 86:case 118:B=(FCK.Status!=FCK_STATUS_COMPLETE||!FCK.Events.FireEvent("OnPaste"));break;}}else if (e.shiftKey&&!e.ctrlKey&&!e.altKey&&e.keyCode==45) B=(FCK.Status!=FCK_STATUS_COMPLETE||!FCK.Events.FireEvent("OnPaste"));if (B){e.preventDefault();e.stopPropagation();}};this.EditorDocument.addEventListener('keypress',A,true);this.ExecOnSelectionChange=function(){FCK.Events.FireEvent("OnSelectionChange");};this.ExecOnSelectionChangeTimer=function(){if (FCK.LastOnChangeTimer) window.clearTimeout(FCK.LastOnChangeTimer);FCK.LastOnChangeTimer=window.setTimeout(FCK.ExecOnSelectionChange,100);};this.EditorDocument.addEventListener('mouseup',this.ExecOnSelectionChange,false);this.EditorDocument.addEventListener('keyup',this.ExecOnSelectionChangeTimer,false);this._DblClickListener=function(e){FCK.OnDoubleClick(e.target);e.stopPropagation();};this.EditorDocument.addEventListener('dblclick',this._DblClickListener,true);FCK.ContextMenu._InnerContextMenu.SetMouseClickWindow(FCK.EditorWindow);FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument);};FCK.MakeEditable=function(){this.EditingArea.MakeEditable();};function Document_OnContextMenu(e){if (!e.target._FCKShowContextMenu) e.preventDefault();};document.oncontextmenu=Document_OnContextMenu;
+FCK.RedirectNamedCommands=new Object();FCK.ExecuteNamedCommand=function(A,B,C){FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};FCKUndo.SaveUndoStep();};FCK.GetNamedCommandState=function(A){try{if (!FCK.EditorDocument.queryCommandEnabled(A)) return FCK_TRISTATE_DISABLED;else return FCK.EditorDocument.queryCommandState(A)?FCK_TRISTATE_ON:FCK_TRISTATE_OFF;}catch (e){return FCK_TRISTATE_OFF;}};FCK.GetNamedCommandValue=function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==FCK_TRISTATE_DISABLED) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';};FCK.PasteFromWord=function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');};FCK.Preview=function(){var A=FCKConfig.ScreenWidth*0.8;var B=FCKConfig.ScreenHeight*0.7;var C=(FCKConfig.ScreenWidth-A)/2;var D=window.open('',null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+A+',height='+B+',left='+C);var E;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) E=FCK.GetXHTML().replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);else E=FCK.GetXHTML();}else{E=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'">'+'<head>'+FCK.TempBaseTag+'<title>'+FCKLang.Preview+'</title>'+FCK._GetEditorAreaStyleTags()+'</head><body>'+FCK.GetXHTML()+'</body></html>';};D.document.write(E);D.document.close();};FCK.SwitchEditMode=function(A){var B=(FCK.EditMode==FCK_EDITMODE_WYSIWYG);var C;if (B){if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();C=FCK.GetXHTML(FCKConfig.FormatSource);}else C=this.EditingArea.Textarea.value;FCK.EditMode=B?FCK_EDITMODE_SOURCE:FCK_EDITMODE_WYSIWYG;FCK.SetHTML(C);if (FCKBrowserInfo.IsGecko) window.onresize();FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);};FCK.CreateElement=function(A){var e=FCK.EditorDocument.createElement(A);return FCK.InsertElementAndGetIt(e);};FCK.InsertElementAndGetIt=function(e){e.setAttribute('FCKTempLabel','true');this.InsertElement(e);var A=FCK.EditorDocument.getElementsByTagName(e.tagName);for (var i=0;i<A.length;i++){if (A[i].getAttribute('FCKTempLabel')){A[i].removeAttribute('FCKTempLabel');return A[i];}};return null;};
+FCK._BaseGetNamedCommandState=FCK.GetNamedCommandState;FCK.GetNamedCommandState=function(A){switch (A){case 'Unlink':return FCKSelection.HasAncestorNode('A')?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;default:return FCK._BaseGetNamedCommandState(A);}};FCK.RedirectNamedCommands={Print:true,Paste:true,Cut:true,Copy:true};FCK.ExecuteRedirectedNamedCommand=function(A,B){switch (A){case 'Print':FCK.EditorWindow.print();break;case 'Paste':try			{ if (FCK.Paste()) FCK.ExecuteNamedCommand('Paste',null,true);}catch (e)	{ alert(FCKLang.PasteErrorPaste);};break;case 'Cut':try			{ FCK.ExecuteNamedCommand('Cut',null,true);}catch (e)	{ alert(FCKLang.PasteErrorCut);};break;case 'Copy':try			{ FCK.ExecuteNamedCommand('Copy',null,true);}catch (e)	{ alert(FCKLang.PasteErrorCopy);};break;default:FCK.ExecuteNamedCommand(A,B);}};FCK.AttachToOnSelectionChange=function(A){this.Events.AttachEvent('OnSelectionChange',A);};FCK.Paste=function(){if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;}else return true;};FCK.InsertHtml=function(A){A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectUrls(A);var B=FCKSelection.Delete();var C=B.getRangeAt(0);var D=C.createContextualFragment(A);var E=D.lastChild;C.insertNode(D);FCKSelection.SelectNode(E);FCKSelection.Collapse(false);this.Focus();};FCK.InsertElement=function(A){var B=FCKSelection.Delete();var C=B.getRangeAt(0);C.insertNode(A);FCKSelection.SelectNode(A);FCKSelection.Collapse(false);this.Focus();};FCK.PasteAsPlainText=function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteAsText,'dialog/fck_paste.html',400,330,'PlainText');};FCK.GetClipboardHTML=function(){return '';};FCK.CreateLink=function(A){FCK.ExecuteNamedCommand('Unlink');if (A.length>0){var B='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',B);var C=document.evaluate("//a[@href='"+B+"']",this.EditorDocument.body,null,9,null).singleNodeValue;if (C){C.href=A;return C;}}};
+var FCKSelection=FCK.Selection=new Object();
+FCKSelection.GetType=function(){this._Type='Text';var A;try { A=FCK.EditorWindow.getSelection();}catch (e) {};if (A&&A.rangeCount==1){var B=A.getRangeAt(0);if (B.startContainer==B.endContainer&&(B.endOffset-B.startOffset)==1&&B.startContainer.nodeType!=Node.TEXT_NODE) this._Type='Control';};return this._Type;};FCKSelection.GetSelectedElement=function(){if (this.GetType()=='Control'){var A=FCK.EditorWindow.getSelection();return A.anchorNode.childNodes[A.anchorOffset];}};FCKSelection.GetParentElement=function(){if (this.GetType()=='Control') return FCKSelection.GetSelectedElement().parentNode;else{var A=FCK.EditorWindow.getSelection();if (A){var B=A.anchorNode;while (B&&B.nodeType!=1) B=B.parentNode;return B;}}};FCKSelection.SelectNode=function(A){var B=FCK.EditorDocument.createRange();B.selectNode(A);var C=FCK.EditorWindow.getSelection();C.removeAllRanges();C.addRange(B);};FCKSelection.Collapse=function(A){var B=FCK.EditorWindow.getSelection();if (A==null||A===true) B.collapseToStart();else B.collapseToEnd();};FCKSelection.HasAncestorNode=function(A){var B=this.GetSelectedElement();if (!B&&FCK.EditorWindow){try		{ B=FCK.EditorWindow.getSelection().getRangeAt(0).startContainer;}catch(e){}};while (B){if (B.nodeType==1&&B.tagName==A) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B;var C=this.GetSelectedElement();if (!C) C=FCK.EditorWindow.getSelection().getRangeAt(0).startContainer;while (C){if (C.tagName==A) return C;C=C.parentNode;};return null;};FCKSelection.Delete=function(){var A=FCK.EditorWindow.getSelection();for (var i=0;i<A.rangeCount;i++){A.getRangeAt(i).deleteContents();};return A;};
+var FCKTableHandler=new Object();FCKTableHandler.InsertRow=function(){var A=FCKSelection.MoveToAncestorNode("TR");if (!A) return;var B=A.cloneNode(true);A.parentNode.insertBefore(B,A);FCKTableHandler.ClearRow(A);};FCKTableHandler.DeleteRows=function(A){if (!A) A=FCKSelection.MoveToAncestorNode("TR");if (!A) return;var B=FCKTools.GetElementAscensor(A,'TABLE');if (B.rows.length==1){FCKTableHandler.DeleteTable(B);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A){var A=FCKSelection.GetSelectedElement();if (!A||A.tagName!='TABLE') A=FCKSelection.MoveToAncestorNode("TABLE");};if (!A) return;FCKSelection.SelectNode(A);FCKSelection.Collapse();A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(){var A=FCKSelection.MoveToAncestorNode("TD");if (!A) A=FCKSelection.MoveToAncestorNode("TH");if (!A) return;var B=FCKTools.GetElementAscensor(A,'TABLE');var C=A.cellIndex+1;for (var i=0;i<B.rows.length;i++){var D=B.rows[i];if (D.cells.length<C) continue;A=D.cells[C-1].cloneNode(false);if (FCKBrowserInfo.IsGecko) A.innerHTML=GECKO_BOGUS;var E=D.cells[C];if (E) D.insertBefore(A,E);else D.appendChild(A);}};FCKTableHandler.DeleteColumns=function(){var A=FCKSelection.MoveToAncestorNode('TD')||FCKSelection.MoveToAncestorNode('TH');if (!A) return;var B=FCKTools.GetElementAscensor(A,'TABLE');var C=A.cellIndex;for (var i=B.rows.length-1;i>=0;i--){var D=B.rows[i];if (C==0&&D.cells.length==1){FCKTableHandler.DeleteRows(D);continue;};if (D.cells[C]) D.removeChild(D.cells[C]);}};FCKTableHandler.InsertCell=function(A){var B=A?A:FCKSelection.MoveToAncestorNode("TD");if (!B) return;var C=FCK.EditorDocument.createElement("TD");if (FCKBrowserInfo.IsGecko) C.innerHTML=GECKO_BOGUS;if (B.cellIndex==B.parentNode.cells.length-1){B.parentNode.appendChild(C);}else{B.parentNode.insertBefore(C,B.nextSibling);};return C;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(FCKTools.GetElementAscensor(A,'TR'));return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler.MergeCells=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<2) return;if (A[0].parentNode!=A[A.length-1].parentNode) return;var B=isNaN(A[0].colSpan)?1:A[0].colSpan;var C='';var D=FCK.EditorDocument.createDocumentFragment();for (var i=A.length-1;i>=0;i--){var E=A[i];for (var c=E.childNodes.length-1;c>=0;c--){var F=E.removeChild(E.childNodes[c]);if ((F.hasAttribute&&F.hasAttribute('_moz_editor_bogus_node'))||(F.getAttribute&&F.getAttribute('type',2)=='_moz')) continue;D.insertBefore(F,D.firstChild);};if (i>0){B+=isNaN(E.colSpan)?1:E.colSpan;FCKTableHandler.DeleteCell(E);}};A[0].colSpan=B;if (FCKBrowserInfo.IsGecko&&D.childNodes.length==0) A[0].innerHTML=GECKO_BOGUS;else A[0].appendChild(D);};FCKTableHandler.SplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=this._CreateTableMap(A[0].parentNode.parentNode);var C=FCKTableHandler._GetCellIndexSpan(B,A[0].parentNode.rowIndex,A[0]);var D=this._GetCollumnCells(B,C);for (var i=0;i<D.length;i++){if (D[i]==A[0]){var E=this.InsertCell(A[0]);if (!isNaN(A[0].rowSpan)&&A[0].rowSpan>1) E.rowSpan=A[0].rowSpan;}else{if (isNaN(D[i].colSpan)) D[i].colSpan=2;else D[i].colSpan+=1;}}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length<B+1) return null;var D=A[B];for (var c=0;c<D.length;c++){if (D[c]==C) return c;};return null;};FCKTableHandler._GetCollumnCells=function(A,B){var C=new Array();for (var r=0;r<A.length;r++){var D=A[r][B];if (D&&(C.length==0||C[C.length-1]!=D)) C[C.length]=D;};return C;};FCKTableHandler._CreateTableMap=function(A){var B=A.rows;var r=-1;var C=new Array();for (var i=0;i<B.length;i++){r++;if (!C[r]) C[r]=new Array();var c=-1;for (var j=0;j<B[i].cells.length;j++){var D=B[i].cells[j];c++;while (C[r][c]) c++;var E=isNaN(D.colSpan)?1:D.colSpan;var F=isNaN(D.rowSpan)?1:D.rowSpan;for (var G=0;G<F;G++){if (!C[r+G]) C[r+G]=new Array();for (var H=0;H<E;H++){C[r+G][c+H]=B[i].cells[j];}};c+=E-1;}};return C;};FCKTableHandler.ClearRow=function(A){var B=A.cells;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsGecko) B[i].innerHTML=GECKO_BOGUS;else B[i].innerHTML='';}};
+FCKTableHandler.GetSelectedCells=function(){var A=new Array();var B=FCK.EditorWindow.getSelection();if (B.rangeCount==1&&B.anchorNode.nodeType==3){var C=FCKTools.GetElementAscensor(B.anchorNode,'TD,TH');if (C){A[0]=C;return A;}};for (var i=0;i<B.rangeCount;i++){var D=B.getRangeAt(i);var E;if (D.startContainer.tagName.Equals('TD','TH')) E=D.startContainer;else E=D.startContainer.childNodes[D.startOffset];if (E.tagName.Equals('TD','TH')) A[A.length]=E;};return A;};
+var FCKXml=function(){};FCKXml.prototype.LoadUrl=function(A){var B=this;var C=FCKTools.CreateXmlObject('XmlHttp');C.open("GET",A,false);C.send(null);if (C.status==200||C.status==304) this.DOMDocument=C.responseXML;else if (C.status==0&&C.readyState==4) this.DOMDocument=C.responseXML;else alert('Error loading "'+A+'"');};FCKXml.prototype.SelectNodes=function(A,B){var C=new Array();var D=this.DOMDocument.evaluate(A,B?B:this.DOMDocument,this.DOMDocument.createNSResolver(this.DOMDocument.documentElement),XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);if (D){var E=D.iterateNext();while(E){C[C.length]=E;E=D.iterateNext();}};return C;};FCKXml.prototype.SelectSingleNode=function(A,B){var C=this.DOMDocument.evaluate(A,B?B:this.DOMDocument,this.DOMDocument.createNSResolver(this.DOMDocument.documentElement),9,null);if (C&&C.singleNodeValue) return C.singleNodeValue;else return null;}
+var FCKStyleDef=function(A,B){this.Name=A;this.Element=B.toUpperCase();this.IsObjectElement=FCKRegexLib.ObjectElements.test(this.Element);this.Attributes=new Object();};FCKStyleDef.prototype.AddAttribute=function(A,B){this.Attributes[A]=B;};FCKStyleDef.prototype.GetOpenerTag=function(){var s='<'+this.Element;for (var a in this.Attributes) s+=' '+a+'="'+this.Attributes[a]+'"';return s+'>';};FCKStyleDef.prototype.GetCloserTag=function(){return '</'+this.Element+'>';};FCKStyleDef.prototype.RemoveFromSelection=function(){if (FCKSelection.GetType()=='Control') this._RemoveMe(FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement());else this._RemoveMe(FCK.ToolbarSet.CurrentInstance.Selection.GetParentElement());}
+FCKStyleDef.prototype.ApplyToSelection=function(){if (FCKSelection.GetType()=='Text'&&!this.IsObjectElement){var A=FCK.ToolbarSet.CurrentInstance.EditorWindow.getSelection();var e=FCK.ToolbarSet.CurrentInstance.EditorDocument.createElement(this.Element);for (var i=0;i<A.rangeCount;i++){e.appendChild(A.getRangeAt(i).extractContents());};this._AddAttributes(e);this._RemoveDuplicates(e);var B=A.getRangeAt(0);B.insertNode(e);}else{var C=FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement();if (C.tagName==this.Element) this._AddAttributes(C);}};FCKStyleDef.prototype._AddAttributes=function(A){for (var a in this.Attributes){switch (a.toLowerCase()){case 'src':A.setAttribute('_fcksavedurl',this.Attributes[a],0);default:A.setAttribute(a,this.Attributes[a],0);}}};FCKStyleDef.prototype._RemoveDuplicates=function(A){for (var i=0;i<A.childNodes.length;i++){var B=A.childNodes[i];if (B.nodeType!=1) continue;this._RemoveDuplicates(B);if (this.IsEqual(B)) FCKTools.RemoveOuterTags(B);}};FCKStyleDef.prototype.IsEqual=function(e){if (e.tagName!=this.Element) return false;for (var a in this.Attributes){if (e.getAttribute(a)!=this.Attributes[a]) return false;};return true;};FCKStyleDef.prototype._RemoveMe=function(A){if (!A) return;var B=A.parentNode;if (A.nodeType==1&&this.IsEqual(A)){if (this.IsObjectElement){for (var a in this.Attributes) A.removeAttribute(a,0);return;}else FCKTools.RemoveOuterTags(A);};this._RemoveMe(B);}
+var FCKStylesLoader=function(){this.Styles=new Object();this.StyleGroups=new Object();this.Loaded=false;this.HasObjectElements=false;};FCKStylesLoader.prototype.Load=function(A){var B=new FCKXml();B.LoadUrl(A);var C=B.SelectNodes('Styles/Style');for (var i=0;i<C.length;i++){var D=C[i].attributes.getNamedItem('element').value.toUpperCase();var E=new FCKStyleDef(C[i].attributes.getNamedItem('name').value,D);if (E.IsObjectElement) this.HasObjectElements=true;var F=B.SelectNodes('Attribute',C[i]);for (var j=0;j<F.length;j++){var G=F[j].attributes.getNamedItem('name').value;var H=F[j].attributes.getNamedItem('value').value;if (G.toLowerCase()=='style'){var I=document.createElement('SPAN');I.style.cssText=H;H=I.style.cssText;};E.AddAttribute(G,H);};this.Styles[E.Name]=E;var J=this.StyleGroups[D];if (J==null){this.StyleGroups[D]=new Array();J=this.StyleGroups[D];};J[J.length]=E;};this.Loaded=true;}
+var FCKNamedCommand=function(A){this.Name=A;};FCKNamedCommand.prototype.Execute=function(){FCK.ExecuteNamedCommand(this.Name);};FCKNamedCommand.prototype.GetState=function(){return FCK.GetNamedCommandState(this.Name);};
+var FCKDialogCommand=function(A,B,C,D,E,F,G){this.Name=A;this.Title=B;this.Url=C;this.Width=D;this.Height=E;this.GetStateFunction=F;this.GetStateParam=G;};FCKDialogCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_'+this.Name,this.Title,this.Url,this.Width,this.Height);};FCKDialogCommand.prototype.GetState=function(){if (this.GetStateFunction) return this.GetStateFunction(this.GetStateParam);else return FCK_TRISTATE_OFF;};var FCKUndefinedCommand=function(){this.Name='Undefined';};FCKUndefinedCommand.prototype.Execute=function(){alert(FCKLang.NotImplemented);};FCKUndefinedCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKFontNameCommand=function(){this.Name='FontName';};FCKFontNameCommand.prototype.Execute=function(A){if (A==null||A==""){}else FCK.ExecuteNamedCommand('FontName',A);};FCKFontNameCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FontName');};var FCKFontSizeCommand=function(){this.Name='FontSize';};FCKFontSizeCommand.prototype.Execute=function(A){if (typeof(A)=='string') A=parseInt(A);if (A==null||A==''){FCK.ExecuteNamedCommand('FontSize',3);}else FCK.ExecuteNamedCommand('FontSize',A);};FCKFontSizeCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FontSize');};var FCKFormatBlockCommand=function(){this.Name='FormatBlock';};FCKFormatBlockCommand.prototype.Execute=function(A){if (A==null||A=='') FCK.ExecuteNamedCommand('FormatBlock','<P>');else if (A=='div'&&FCKBrowserInfo.IsGecko) FCK.ExecuteNamedCommand('FormatBlock','div');else FCK.ExecuteNamedCommand('FormatBlock','<'+A+'>');};FCKFormatBlockCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FormatBlock');};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.LinkedField.form;if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};A.submit();};FCKSaveCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetHTML('');FCKUndo.Typing=true;};FCKNewPageCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKConfig.SourcePopup){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==FCK_EDITMODE_WYSIWYG?FCK_TRISTATE_OFF:FCK_TRISTATE_ON);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsIE) FCKUndo.Undo();else FCK.ExecuteNamedCommand('Undo');};FCKUndoCommand.prototype.GetState=function(){if (FCKBrowserInfo.IsIE) return (FCKUndo.CheckUndoState()?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED);else return FCK.GetNamedCommandState('Undo');};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsIE) FCKUndo.Redo();else FCK.ExecuteNamedCommand('Redo');};FCKRedoCommand.prototype.GetState=function(){if (FCKBrowserInfo.IsIE) return (FCKUndo.CheckRedoState()?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED);else return FCK.GetNamedCommandState('Redo');};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){var e=FCK.EditorDocument.createElement('DIV');e.style.pageBreakAfter='always';e.innerHTML='<span style="DISPLAY:none">&nbsp;</span>';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);A=FCK.InsertElement(A);};FCKPageBreakCommand.prototype.GetState=function(){return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsGecko){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCK.Selection.SelectNode(A);};FCK.ExecuteNamedCommand(this.Name);if (FCKBrowserInfo.IsGecko) FCK.Selection.Collapse(true);};FCKUnlinkCommand.prototype.GetState=function(){return FCK.GetNamedCommandState(this.Name);}
+var FCKSpellCheckCommand=function(){this.Name='SpellCheck';this.IsEnabled=(FCKConfig.SpellChecker=='SpellerPages');};FCKSpellCheckCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','dialog/fck_spellerpages.html',440,480);};FCKSpellCheckCommand.prototype.GetState=function(){return this.IsEnabled?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;}
+var FCKTextColorCommand=function(A){this.Name=A=='ForeColor'?'TextColor':'BGColor';this.Type=A;var B;if (FCKBrowserInfo.IsIE) B=window;else if (FCK.ToolbarSet._IFrame) B=FCKTools.GetElementWindow(FCK.ToolbarSet._IFrame);else B=window.parent;this._Panel=new FCKPanel(B,true);this._Panel.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');this._Panel.MainNode.className='FCK_Panel';this._CreatePanelBody(this._Panel.Document,this._Panel.MainNode);FCKTools.DisableSelection(this._Panel.Document.body);};FCKTextColorCommand.prototype.Execute=function(A,B,C){FCK._ActiveColorPanelType=this.Type;this._Panel.Show(A,B,C);};FCKTextColorCommand.prototype.SetColor=function(A){if (FCK._ActiveColorPanelType=='ForeColor') FCK.ExecuteNamedCommand('ForeColor',A);else if (FCKBrowserInfo.IsGeckoLike){if (FCKBrowserInfo.IsGecko&&!FCKConfig.GeckoUseSPAN) FCK.EditorDocument.execCommand('useCSS',false,false);FCK.ExecuteNamedCommand('hilitecolor',A);if (FCKBrowserInfo.IsGecko&&!FCKConfig.GeckoUseSPAN) FCK.EditorDocument.execCommand('useCSS',false,true);}else FCK.ExecuteNamedCommand('BackColor',A);delete FCK._ActiveColorPanelType;};FCKTextColorCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};function FCKTextColorCommand_OnMouseOver()	{ this.className='ColorSelected';};function FCKTextColorCommand_OnMouseOut()	{ this.className='ColorDeselected';};function FCKTextColorCommand_OnClick(){this.className='ColorDeselected';this.Command.SetColor('#'+this.Color);this.Command._Panel.Hide();};function FCKTextColorCommand_AutoOnClick(){this.className='ColorDeselected';this.Command.SetColor('');this.Command._Panel.Hide();};function FCKTextColorCommand_MoreOnClick(){this.className='ColorDeselected';this.Command._Panel.Hide();FCKDialog.OpenDialog('FCKDialog_Color',FCKLang.DlgColorTitle,'dialog/fck_colorselector.html',400,330,this.Command.SetColor);};FCKTextColorCommand.prototype._CreatePanelBody=function(A,B){function CreateSelectionDiv(){var C=A.createElement("DIV");C.className='ColorDeselected';C.onmouseover=FCKTextColorCommand_OnMouseOver;C.onmouseout=FCKTextColorCommand_OnMouseOut;return C;};var D=B.appendChild(A.createElement("TABLE"));D.className='ForceBaseFont';D.style.tableLayout='fixed';D.cellPadding=0;D.cellSpacing=0;D.border=0;D.width=150;var E=D.insertRow(-1).insertCell(-1);E.colSpan=8;var C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table cellspacing="0" cellpadding="0" width="100%" border="0">\<tr>\<td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\<td nowrap width="100%" align="center">' + FCKLang.ColorAutomatic + '</td>\</tr>\</table>';C.Command=this;C.onclick=FCKTextColorCommand_AutoOnClick;var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H<G.length){var I=D.insertRow(-1);for (var i=0;i<8&&H<G.length;i++,H++){C=I.insertCell(-1).appendChild(CreateSelectionDiv());C.Color=G[H];C.innerHTML='<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #'+G[H]+'"></div></div>';C.Command=this;C.onclick=FCKTextColorCommand_OnClick;}};E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">'+FCKLang.ColorMoreColors+'</td></tr></table>';C.Command=this;C.onclick=FCKTextColorCommand_MoreOnClick;}
+var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){return FCK.GetNamedCommandState('Paste');};
+var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCKConfig.ForcePasteAsPlainText) return FCK_TRISTATE_DISABLED;else return FCK.GetNamedCommandState('Paste');};
+var FCKTableCommand=function(A){this.Name=A;};FCKTableCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();switch (this.Name){case 'TableInsertRow':FCKTableHandler.InsertRow();break;case 'TableDeleteRows':FCKTableHandler.DeleteRows();break;case 'TableInsertColumn':FCKTableHandler.InsertColumn();break;case 'TableDeleteColumns':FCKTableHandler.DeleteColumns();break;case 'TableInsertCell':FCKTableHandler.InsertCell();break;case 'TableDeleteCells':FCKTableHandler.DeleteCells();break;case 'TableMergeCells':FCKTableHandler.MergeCells();break;case 'TableSplitCell':FCKTableHandler.SplitCell();break;case 'TableDelete':FCKTableHandler.DeleteTable();break;default:alert(FCKLang.UnknownCommand.replace(/%1/g,this.Name));}};FCKTableCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;}
+var FCKStyleCommand=function(){this.Name='Style';this.StylesLoader=new FCKStylesLoader();this.StylesLoader.Load(FCKConfig.StylesXmlPath);this.Styles=this.StylesLoader.Styles;};FCKStyleCommand.prototype.Execute=function(A,B){FCKUndo.SaveUndoStep();if (B.Selected) B.Style.RemoveFromSelection();else B.Style.ApplyToSelection();FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent("OnSelectionChange");};FCKStyleCommand.prototype.GetState=function(){if (!FCK.EditorDocument) return FCK_TRISTATE_DISABLED;var A=FCK.EditorDocument.selection;if (FCKSelection.GetType()=='Control'){var e=FCKSelection.GetSelectedElement();if (e) return this.StylesLoader.StyleGroups[e.tagName]?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;};return FCK_TRISTATE_OFF;};FCKStyleCommand.prototype.GetActiveStyles=function(){var A=new Array();if (FCKSelection.GetType()=='Control') this._CheckStyle(FCKSelection.GetSelectedElement(),A,false);else this._CheckStyle(FCKSelection.GetParentElement(),A,true);return A;};FCKStyleCommand.prototype._CheckStyle=function(A,B,C){if (!A) return;if (A.nodeType==1){var D=this.StylesLoader.StyleGroups[A.tagName];if (D){for (var i=0;i<D.length;i++){if (D[i].IsEqual(A)) B[B.length]=D[i];}}};if (C) this._CheckStyle(A.parentNode,B,C);}
+var FCKFitWindow=function(){this.Name='FitWindow';};FCKFitWindow.prototype.Execute=function(){var A=window.frameElement;var B=A.style;var C=parent;var D=C.document.documentElement;var E=C.document.body;var F=E.style;if (!this.IsMaximized){if(FCKBrowserInfo.IsIE) C.attachEvent('onresize',FCKFitWindow_Resize);else C.addEventListener('resize',FCKFitWindow_Resize,true);this._ScrollPos=FCKTools.GetScrollPosition(C);var G=A;while(G=G.parentNode){if (G.nodeType==1) G._fckSavedStyles=FCKTools.SaveStyles(G);};if (FCKBrowserInfo.IsIE){this.documentElementOverflow=D.style.overflow;D.style.overflow='hidden';F.overflow='hidden';}else{F.overflow='hidden';F.width='0px';F.height='0px';};this._EditorFrameStyles=FCKTools.SaveStyles(A);var H=FCKTools.GetViewPaneSize(C);B.position="absolute";B.zIndex=FCKConfig.FloatingPanelsZIndex-1;B.left="0px";B.top="0px";B.width=H.Width+"px";B.height=H.Height+"px";if (!FCKBrowserInfo.IsIE){B.borderRight=B.borderBottom="9999px solid white";B.backgroundColor="white";};C.scrollTo(0,0);this.IsMaximized=true;}else{if(FCKBrowserInfo.IsIE) C.detachEvent("onresize",FCKFitWindow_Resize);else C.removeEventListener("resize",FCKFitWindow_Resize,true);var G=A;while(G=G.parentNode){if (G._fckSavedStyles){FCKTools.RestoreStyles(G,G._fckSavedStyles);G._fckSavedStyles=null;}};if (FCKBrowserInfo.IsIE) D.style.overflow=this.documentElementOverflow;FCKTools.RestoreStyles(A,this._EditorFrameStyles);C.scrollTo(this._ScrollPos.X,this._ScrollPos.Y);this.IsMaximized=false;};FCKToolbarItems.GetItem('FitWindow').RefreshState();FCK.EditingArea.MakeEditable();FCK.Focus();};FCKFitWindow.prototype.GetState=function(){if (FCKConfig.ToolbarLocation!='In') return FCK_TRISTATE_DISABLED;else return (this.IsMaximized?FCK_TRISTATE_ON:FCK_TRISTATE_OFF);};function FCKFitWindow_Resize(){var oViewPaneSize=FCKTools.GetViewPaneSize(parent);var eEditorFrameStyle=window.frameElement.style;eEditorFrameStyle.width=oViewPaneSize.Width+'px';eEditorFrameStyle.height=oViewPaneSize.Height+'px';};
+var FCKCommands=FCK.Commands=new Object();FCKCommands.LoadedCommands=new Object();FCKCommands.RegisterCommand=function(A,B){this.LoadedCommands[A]=B;};FCKCommands.GetCommand=function(A){var B=FCKCommands.LoadedCommands[A];if (B) return B;switch (A){case 'DocProps':B=new FCKDialogCommand('DocProps',FCKLang.DocProps,'dialog/fck_docprops.html',400,390,FCKCommands.GetFullPageState);break;case 'Templates':B=new FCKDialogCommand('Templates',FCKLang.DlgTemplatesTitle,'dialog/fck_template.html',380,450);break;case 'Link':B=new FCKDialogCommand('Link',FCKLang.DlgLnkWindowTitle,'dialog/fck_link.html',400,330,FCK.GetNamedCommandState,'CreateLink');break;case 'Unlink':B=new FCKUnlinkCommand();break;case 'Anchor':B=new FCKDialogCommand('Anchor',FCKLang.DlgAnchorTitle,'dialog/fck_anchor.html',370,170);break;case 'BulletedList':B=new FCKDialogCommand('BulletedList',FCKLang.BulletedListProp,'dialog/fck_listprop.html',370,170);break;case 'NumberedList':B=new FCKDialogCommand('NumberedList',FCKLang.NumberedListProp,'dialog/fck_listprop.html',370,170);break;case 'About':B=new FCKDialogCommand('About',FCKLang.About,'dialog/fck_about.html',400,330);break;case 'Find':B=new FCKDialogCommand('Find',FCKLang.DlgFindTitle,'dialog/fck_find.html',340,170);break;case 'Replace':B=new FCKDialogCommand('Replace',FCKLang.DlgReplaceTitle,'dialog/fck_replace.html',340,200);break;case 'Image':B=new FCKDialogCommand('Image',FCKLang.DlgImgTitle,'dialog/fck_image.html',450,400);break;case 'Flash':B=new FCKDialogCommand('Flash',FCKLang.DlgFlashTitle,'dialog/fck_flash.html',450,400);break;case 'SpecialChar':B=new FCKDialogCommand('SpecialChar',FCKLang.DlgSpecialCharTitle,'dialog/fck_specialchar.html',400,320);break;case 'Smiley':B=new FCKDialogCommand('Smiley',FCKLang.DlgSmileyTitle,'dialog/fck_smiley.html',FCKConfig.SmileyWindowWidth,FCKConfig.SmileyWindowHeight);break;case 'Table':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html',450,250);break;case 'TableProp':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html?Parent',400,250);break;case 'TableCellProp':B=new FCKDialogCommand('TableCell',FCKLang.DlgCellTitle,'dialog/fck_tablecell.html',500,250);break;case 'UniversalKey':B=new FCKDialogCommand('UniversalKey',FCKLang.UniversalKeyboard,'dialog/fck_universalkey.html',415,300);break;case 'Style':B=new FCKStyleCommand();break;case 'FontName':B=new FCKFontNameCommand();break;case 'FontSize':B=new FCKFontSizeCommand();break;case 'FontFormat':B=new FCKFormatBlockCommand();break;case 'Source':B=new FCKSourceCommand();break;case 'Preview':B=new FCKPreviewCommand();break;case 'Save':B=new FCKSaveCommand();break;case 'NewPage':B=new FCKNewPageCommand();break;case 'PageBreak':B=new FCKPageBreakCommand();break;case 'TextColor':B=new FCKTextColorCommand('ForeColor');break;case 'BGColor':B=new FCKTextColorCommand('BackColor');break;case 'PasteText':B=new FCKPastePlainTextCommand();break;case 'PasteWord':B=new FCKPasteWordCommand();break;case 'TableInsertRow':B=new FCKTableCommand('TableInsertRow');break;case 'TableDeleteRows':B=new FCKTableCommand('TableDeleteRows');break;case 'TableInsertColumn':B=new FCKTableCommand('TableInsertColumn');break;case 'TableDeleteColumns':B=new FCKTableCommand('TableDeleteColumns');break;case 'TableInsertCell':B=new FCKTableCommand('TableInsertCell');break;case 'TableDeleteCells':B=new FCKTableCommand('TableDeleteCells');break;case 'TableMergeCells':B=new FCKTableCommand('TableMergeCells');break;case 'TableSplitCell':B=new FCKTableCommand('TableSplitCell');break;case 'TableDelete':B=new FCKTableCommand('TableDelete');break;case 'Form':B=new FCKDialogCommand('Form',FCKLang.Form,'dialog/fck_form.html',380,230);break;case 'Checkbox':B=new FCKDialogCommand('Checkbox',FCKLang.Checkbox,'dialog/fck_checkbox.html',380,230);break;case 'Radio':B=new FCKDialogCommand('Radio',FCKLang.RadioButton,'dialog/fck_radiobutton.html',380,230);break;case 'TextField':B=new FCKDialogCommand('TextField',FCKLang.TextField,'dialog/fck_textfield.html',380,230);break;case 'Textarea':B=new FCKDialogCommand('Textarea',FCKLang.Textarea,'dialog/fck_textarea.html',380,230);break;case 'HiddenField':B=new FCKDialogCommand('HiddenField',FCKLang.HiddenField,'dialog/fck_hiddenfield.html',380,230);break;case 'Button':B=new FCKDialogCommand('Button',FCKLang.Button,'dialog/fck_button.html',380,230);break;case 'Select':B=new FCKDialogCommand('Select',FCKLang.SelectionField,'dialog/fck_select.html',400,380);break;case 'ImageButton':B=new FCKDialogCommand('ImageButton',FCKLang.ImageButton,'dialog/fck_image.html?ImageButton',450,400);break;case 'SpellCheck':B=new FCKSpellCheckCommand();break;case 'FitWindow':B=new FCKFitWindow();break;case 'Undo':B=new FCKUndoCommand();break;case 'Redo':B=new FCKRedoCommand();break;case 'Undefined':B=new FCKUndefinedCommand();break;default:if (FCKRegexLib.NamedCommands.test(A)) B=new FCKNamedCommand(A);else{alert(FCKLang.UnknownCommand.replace(/%1/g,A));return null;}};FCKCommands.LoadedCommands[A]=B;return B;};FCKCommands.GetFullPageState=function(){return FCKConfig.FullPage?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;};
+var FCKPanel=function(A){this.IsRTL=(FCKLang.Dir=='rtl');this.IsContextMenu=false;this._LockCounter=0;this._Window=A||window;var B;if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();B=this.Document=this._Popup.document;}else{var C=this._IFrame=this._Window.document.createElement('iframe');C.src='javascript:void(0)';C.allowTransparency=true;C.frameBorder='0';C.scrolling='no';C.style.position='absolute';C.style.zIndex=FCKConfig.FloatingPanelsZIndex;C.width=C.height=0;if (this._Window==window.parent) window.frameElement.parentNode.insertBefore(C,window.frameElement);else this._Window.document.body.appendChild(C);var D=C.contentWindow;B=this.Document=D.document;B.open();B.write('<html><head></head><body style="margin:0px;padding:0px;"><\/body><\/html>');B.close();FCKTools.AddEventListenerEx(D,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(D,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;B.oncontextmenu=FCKTools.CancelEvent;this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.Show=function(x,y,A,B,C){if (this._Popup){this._Popup.show(x,y,0,0,A);this.MainNode.style.width=B?B+'px':'';this.MainNode.style.height=C?C+'px':'';var D=this.MainNode.offsetWidth;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};this._Popup.show(x,y,D,this.MainNode.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{FCKFocusManager.Lock();if (this.ParentPanel) this.ParentPanel.Lock();this.MainNode.style.width=B?B+'px':'';this.MainNode.style.height=C?C+'px':'';var D=this.MainNode.offsetWidth;if (!B)	this._IFrame.width=1;if (!C)	this._IFrame.height=1;D=this.MainNode.offsetWidth;var F=FCKTools.GetElementPosition((A.nodeType==9?A.body:A),this._Window);if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=F.X;y+=F.Y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var G=FCKTools.GetViewPaneSize(this._Window);var H=FCKTools.GetScrollPosition(this._Window);var I=G.Height+H.Y;var J=G.Width+H.X;if ((x+D)>J) x-=x+D-J;if ((y+this.MainNode.offsetHeight)>I) y-=y+this.MainNode.offsetHeight-I;};if (x<0) x=0;this._IFrame.style.left=x+'px';this._IFrame.style.top=y+'px';var K=D;var L=this.MainNode.offsetHeight;this._IFrame.width=K;this._IFrame.height=L;this._IFrame.contentWindow.focus();};this._IsOpened=true;FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened) return;FCKFocusManager.Unlock();this._IFrame.width=this._IFrame.height=0;this._IsOpened=false;if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetParentWindow(this.Document):this._Window;var B=new FCKPanel(A,true);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};/* Events */ function FCKPanel_Window_OnFocus(e,panel){panel.HasFocus=true;};function FCKPanel_Window_OnBlur(e,panel){panel.HasFocus=false;if (panel._LockCounter==0) FCKTools.RunFunction(panel.Hide,panel);};function CheckPopupOnHide(forceHide){if (forceHide||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;}
+var FCKIcon=function(A){var B=A?typeof(A):'undefined';switch (B){case 'number':this.Path=FCKConfig.SkinPath+'fck_strip.gif';this.Size=16;this.Position=A;break;case 'undefined':this.Path=FCK_SPACER_PATH;break;case 'string':this.Path=A;break;default:this.Path=A[0];this.Size=A[1];this.Position=A[2];}};FCKIcon.prototype.CreateIconElement=function(A){var B;if (this.Position){var C='-'+((this.Position-1)*this.Size)+'px';if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');var D=B.appendChild(A.createElement('IMG'));D.src=this.Path;D.style.top=C;}else{B=A.createElement('IMG');B.src=FCK_SPACER_PATH;B.style.backgroundPosition='0px '+C;B.style.backgroundImage='url('+this.Path+')';}}else{B=A.createElement('IMG');B.src=this.Path?this.Path:FCK_SPACER_PATH;};B.className='TB_Button_Image';return B;}
+var FCKToolbarButtonUI=function(A,B,C,D,E,F){this.Name=A;this.Label=B||A;this.Tooltip=C||this.Label;this.Style=E||FCK_TOOLBARITEM_ONLYICON;this.State=F||FCK_TRISTATE_OFF;this.Icon=new FCKIcon(D);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarButtonUI_Cleanup);};FCKToolbarButtonUI.prototype._CreatePaddingElement=function(A){var B=A.createElement('IMG');B.className='TB_Button_Padding';B.src=FCK_SPACER_PATH;return B;};FCKToolbarButtonUI.prototype.Create=function(A){var B=this.MainElement;if (B){FCKToolbarButtonUI_Cleanup.call(this);if (B.parentNode) B.parentNode.removeChild(B);B=this.MainElement=null;};var C=FCKTools.GetElementDocument(A);B=this.MainElement=C.createElement('DIV');B._FCKButton=this;B.title=this.Tooltip;if (FCKBrowserInfo.IsGecko) B.onmousedown=FCKTools.CancelEvent;this.ChangeState(this.State,true);if (this.Style==FCK_TOOLBARITEM_ONLYICON&&!this.ShowArrow){B.appendChild(this.Icon.CreateIconElement(C));}else{var D=B.appendChild(C.createElement('TABLE'));D.cellPadding=0;D.cellSpacing=0;var E=D.insertRow(-1);var F=E.insertCell(-1);if (this.Style==FCK_TOOLBARITEM_ONLYICON||this.Style==FCK_TOOLBARITEM_ICONTEXT) F.appendChild(this.Icon.CreateIconElement(C));else F.appendChild(this._CreatePaddingElement(C));if (this.Style==FCK_TOOLBARITEM_ONLYTEXT||this.Style==FCK_TOOLBARITEM_ICONTEXT){F=E.insertCell(-1);F.className='TB_Button_Text';F.noWrap=true;F.appendChild(C.createTextNode(this.Label));};if (this.ShowArrow){if (this.Style!=FCK_TOOLBARITEM_ONLYICON){E.insertCell(-1).appendChild(this._CreatePaddingElement(C));};F=E.insertCell(-1);var G=F.appendChild(C.createElement('IMG'));G.src=FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif';G.width=5;G.height=3;};F=E.insertCell(-1);F.appendChild(this._CreatePaddingElement(C));};A.appendChild(B);};FCKToolbarButtonUI.prototype.ChangeState=function(A,B){if (!B&&this.State==A) return;var e=this.MainElement;switch (parseInt(A)){case FCK_TRISTATE_OFF:e.className='TB_Button_Off';e.onmouseover=FCKToolbarButton_OnMouseOverOff;e.onmouseout=FCKToolbarButton_OnMouseOutOff;e.onclick=FCKToolbarButton_OnClick;break;case FCK_TRISTATE_ON:e.className='TB_Button_On';e.onmouseover=FCKToolbarButton_OnMouseOverOn;e.onmouseout=FCKToolbarButton_OnMouseOutOn;e.onclick=FCKToolbarButton_OnClick;break;case FCK_TRISTATE_DISABLED:e.className='TB_Button_Disabled';e.onmouseover=null;e.onmouseout=null;e.onclick=null;bEnableEvents=false;break;};this.State=A;};function FCKToolbarButtonUI_Cleanup(){if (this.MainElement){this.MainElement._FCKButton=null;this.MainElement=null;}};function FCKToolbarButton_OnMouseOverOn(){this.className='TB_Button_On_Over';};function FCKToolbarButton_OnMouseOutOn(){this.className='TB_Button_On';};function FCKToolbarButton_OnMouseOverOff(){this.className='TB_Button_Off_Over';};function FCKToolbarButton_OnMouseOutOff(){this.className='TB_Button_Off';};function FCKToolbarButton_OnClick(e){if (this._FCKButton.OnClick) this._FCKButton.OnClick(this._FCKButton);};
+var FCKToolbarButton=function(A,B,C,D,E,F,G){this.CommandName=A;this.Label=B;this.Tooltip=C;this.Style=D;this.SourceView=E?true:false;this.ContextSensitive=F?true:false;if (G==null) this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(G)=='number') this.IconPath=[FCKConfig.SkinPath+'fck_strip.gif',16,G];};FCKToolbarButton.prototype.Create=function(A){this._UIButton=new FCKToolbarButtonUI(this.CommandName,this.Label,this.Tooltip,this.IconPath,this.Style);this._UIButton.OnClick=this.Click;this._UIButton._ToolbarButton=this;this._UIButton.Create(A);};FCKToolbarButton.prototype.RefreshState=function(){var A=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (A==this._UIButton.State) return;this._UIButton.ChangeState(A);};FCKToolbarButton.prototype.Click=function(){var A=this._ToolbarButton||this;FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this._UIButton.ChangeState(FCK_TRISTATE_DISABLED);}
+var FCKSpecialCombo=function(A,B,C,D,E){this.FieldWidth=B||100;this.PanelWidth=C||150;this.PanelMaxHeight=D||150;this.Label='&nbsp;';this.Caption=A;this.Tooltip=A;this.Style=FCK_TOOLBARITEM_ICONTEXT;this.Enabled=true;this.Items=new Object();this._Panel=new FCKPanel(E||window,true);this._Panel.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');this._PanelBox=this._Panel.MainNode.appendChild(this._Panel.Document.createElement('DIV'));this._PanelBox.className='SC_Panel';this._PanelBox.style.width=this.PanelWidth+'px';this._PanelBox.innerHTML='<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>';this._ItemsHolderEl=this._PanelBox.getElementsByTagName('TD')[0];if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKSpecialCombo_Cleanup);};function FCKSpecialCombo_ItemOnMouseOver(){this.className+=' SC_ItemOver';};function FCKSpecialCombo_ItemOnMouseOut(){this.className=this.originalClass;};function FCKSpecialCombo_ItemOnClick(){this.className=this.originalClass;this.FCKSpecialCombo._Panel.Hide();this.FCKSpecialCombo.SetLabel(this.FCKItemLabel);if (typeof(this.FCKSpecialCombo.OnSelect)=='function') this.FCKSpecialCombo.OnSelect(this.FCKItemID,this);};FCKSpecialCombo.prototype.AddItem=function(A,B,C,D){var E=this._ItemsHolderEl.appendChild(this._Panel.Document.createElement('DIV'));E.className=E.originalClass='SC_Item';E.innerHTML=B;E.FCKItemID=A;E.FCKItemLabel=C||A;E.FCKSpecialCombo=this;E.Selected=false;if (FCKBrowserInfo.IsIE) E.style.width='100%';if (D) E.style.backgroundColor=D;E.onmouseover=FCKSpecialCombo_ItemOnMouseOver;E.onmouseout=FCKSpecialCombo_ItemOnMouseOut;E.onclick=FCKSpecialCombo_ItemOnClick;this.Items[A.toString().toLowerCase()]=E;return E;};FCKSpecialCombo.prototype.SelectItem=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];if (B){B.className=B.originalClass='SC_ItemSelected';B.Selected=true;}};FCKSpecialCombo.prototype.SelectItemByLabel=function(A,B){for (var C in this.Items){var D=this.Items[C];if (D.FCKItemLabel==A){D.className=D.originalClass='SC_ItemSelected';D.Selected=true;if (B) this.SetLabel(A);}}};FCKSpecialCombo.prototype.DeselectAll=function(A){for (var i in this.Items){this.Items[i].className=this.Items[i].originalClass='SC_Item';this.Items[i].Selected=false;};if (A) this.SetLabel('');};FCKSpecialCombo.prototype.SetLabelById=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];this.SetLabel(B?B.FCKItemLabel:'');};FCKSpecialCombo.prototype.SetLabel=function(A){this.Label=A.length==0?'&nbsp;':A;if (this._LabelEl) this._LabelEl.innerHTML=this.Label;};FCKSpecialCombo.prototype.SetEnabled=function(A){this.Enabled=A;this._OuterTable.className=A?'':'SC_FieldDisabled';};FCKSpecialCombo.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this._OuterTable=A.appendChild(B.createElement('TABLE'));C.cellPadding=0;C.cellSpacing=0;C.insertRow(-1);var D;var E;switch (this.Style){case FCK_TOOLBARITEM_ONLYICON:D='TB_ButtonType_Icon';E=false;break;case FCK_TOOLBARITEM_ONLYTEXT:D='TB_ButtonType_Text';E=false;break;case FCK_TOOLBARITEM_ICONTEXT:E=true;break;};if (this.Caption&&this.Caption.length>0&&E){var F=C.rows[0].insertCell(-1);F.innerHTML=this.Caption;F.className='SC_FieldCaption';};var G=FCKTools.AppendElement(C.rows[0].insertCell(-1),'div');if (E){G.className='SC_Field';G.style.width=this.FieldWidth+'px';G.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldLabel"><label>&nbsp;</label></td><td class="SC_FieldButton">&nbsp;</td></tr></tbody></table>';this._LabelEl=G.getElementsByTagName('label')[0];this._LabelEl.innerHTML=this.Label;}else{G.className='TB_Button_Off';G.innerHTML='<table title="'+this.Tooltip+'" class="'+D+'" cellspacing="0" cellpadding="0" border="0">'+'<tr>'+'<td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td>'+'<td class="TB_Text">'+this.Caption+'</td>'+'<td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td>'+'<td class="TB_ButtonArrow"><img src="'+FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif" width="5" height="3"></td>'+'<td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td>'+'</tr>'+'</table>';};G.SpecialCombo=this;G.onmouseover=FCKSpecialCombo_OnMouseOver;G.onmouseout=FCKSpecialCombo_OnMouseOut;G.onclick=FCKSpecialCombo_OnClick;FCKTools.DisableSelection(this._Panel.Document.body);};function FCKSpecialCombo_Cleanup(){this._LabelEl=null;this._OuterTable=null;this._ItemsHolderEl=null;this._PanelBox=null;if (this.Items){for (var key in this.Items) this.Items[key]=null;}};function FCKSpecialCombo_OnMouseOver(){if (this.SpecialCombo.Enabled){switch (this.SpecialCombo.Style){case FCK_TOOLBARITEM_ONLYICON:this.className='TB_Button_On_Over';break;case FCK_TOOLBARITEM_ONLYTEXT:this.className='TB_Button_On_Over';break;case FCK_TOOLBARITEM_ICONTEXT:this.className='SC_Field SC_FieldOver';break;}}};function FCKSpecialCombo_OnMouseOut(){switch (this.SpecialCombo.Style){case FCK_TOOLBARITEM_ONLYICON:this.className='TB_Button_Off';break;case FCK_TOOLBARITEM_ONLYTEXT:this.className='TB_Button_Off';break;case FCK_TOOLBARITEM_ICONTEXT:this.className='SC_Field';break;}};function FCKSpecialCombo_OnClick(e){var oSpecialCombo=this.SpecialCombo;if (oSpecialCombo.Enabled){var oPanel=oSpecialCombo._Panel;var oPanelBox=oSpecialCombo._PanelBox;var oItemsHolder=oSpecialCombo._ItemsHolderEl;var iMaxHeight=oSpecialCombo.PanelMaxHeight;if (oSpecialCombo.OnBeforeClick) oSpecialCombo.OnBeforeClick(oSpecialCombo);if (FCKBrowserInfo.IsIE) oPanel.Preload(0,this.offsetHeight,this);if (oItemsHolder.offsetHeight>iMaxHeight) oPanelBox.style.height=iMaxHeight+'px';else oPanelBox.style.height='';oPanel.Show(0,this.offsetHeight,this);}};
+var FCKToolbarSpecialCombo=function(){this.SourceView=false;this.ContextSensitive=true;};function FCKToolbarSpecialCombo_OnSelect(itemId,item){FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Execute(itemId,item);};FCKToolbarSpecialCombo.prototype.Create=function(A){this._Combo=new FCKSpecialCombo(this.GetLabel(),this.FieldWidth,this.PanelWidth,this.PanelMaxHeight,FCKBrowserInfo.IsIE?window:FCKTools.GetElementWindow(A).parent);this._Combo.Tooltip=this.Tooltip;this._Combo.Style=this.Style;this.CreateItems(this._Combo);this._Combo.Create(A);this._Combo.CommandName=this.CommandName;this._Combo.OnSelect=FCKToolbarSpecialCombo_OnSelect;};function FCKToolbarSpecialCombo_RefreshActiveItems(combo,value){combo.DeselectAll();combo.SelectItem(value);combo.SetLabelById(value);};FCKToolbarSpecialCombo.prototype.RefreshState=function(){var A;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B!=FCK_TRISTATE_DISABLED){A=FCK_TRISTATE_ON;if (this.RefreshActiveItems) this.RefreshActiveItems(this._Combo,B);else{if (this._LastValue!=B){this._LastValue=B;FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo,B);}}}else A=FCK_TRISTATE_DISABLED;if (A==this.State) return;if (A==FCK_TRISTATE_DISABLED){this._Combo.DeselectAll();this._Combo.SetLabel('');};this.State=A;this._Combo.SetEnabled(A!=FCK_TRISTATE_DISABLED);};FCKToolbarSpecialCombo.prototype.Enable=function(){this.RefreshState();};FCKToolbarSpecialCombo.prototype.Disable=function(){this.State=FCK_TRISTATE_DISABLED;this._Combo.DeselectAll();this._Combo.SetLabel('');this._Combo.SetEnabled(false);}
+var FCKToolbarFontsCombo=function(A,B){this.CommandName='FontName';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;};FCKToolbarFontsCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontsCombo.prototype.GetLabel=function(){return FCKLang.Font;};FCKToolbarFontsCombo.prototype.CreateItems=function(A){var B=FCKConfig.FontNames.split(';');for (var i=0;i<B.length;i++) this._Combo.AddItem(B[i],'<font face="'+B[i]+'" style="font-size: 12px">'+B[i]+'</font>');}
+var FCKToolbarFontSizeCombo=function(A,B){this.CommandName='FontSize';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;};FCKToolbarFontSizeCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontSizeCombo.prototype.GetLabel=function(){return FCKLang.FontSize;};FCKToolbarFontSizeCombo.prototype.CreateItems=function(A){A.FieldWidth=70;var B=FCKConfig.FontSizes.split(';');for (var i=0;i<B.length;i++){var C=B[i].split('/');this._Combo.AddItem(C[0],'<font size="'+C[0]+'">'+C[1]+'</font>',C[1]);}}
+var FCKToolbarFontFormatCombo=function(A,B){this.CommandName='FontFormat';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;this.NormalLabel='Normal';this.PanelWidth=190;};FCKToolbarFontFormatCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontFormatCombo.prototype.GetLabel=function(){return FCKLang.FontFormat;};FCKToolbarFontFormatCombo.prototype.CreateItems=function(A){var B=FCKLang['FontFormats'].split(';');var C={p:B[0],pre:B[1],address:B[2],h1:B[3],h2:B[4],h3:B[5],h4:B[6],h5:B[7],h6:B[8],div:B[9]};var D=FCKConfig.FontFormats.split(';');for (var i=0;i<D.length;i++){var E=D[i];var F=C[E];if (E=='p') this.NormalLabel=F;this._Combo.AddItem(E,'<div class="BaseFont"><'+E+'>'+F+'</'+E+'></div>',F);}};if (FCKBrowserInfo.IsIE){FCKToolbarFontFormatCombo.prototype.RefreshActiveItems=function(A,B){if (B==this.NormalLabel){if (A.Label!='&nbsp;') A.DeselectAll(true);}else{if (this._LastValue==B) return;A.SelectItemByLabel(B,true);};this._LastValue=B;}}
+var FCKToolbarStyleCombo=function(A,B){this.CommandName='Style';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;};FCKToolbarStyleCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarStyleCombo.prototype.GetLabel=function(){return FCKLang.Style;};FCKToolbarStyleCombo.prototype.CreateItems=function(A){var B=A._Panel.Document;var C=FCKConfig.EditorAreaCSS;for (var i=0;i<C.length;i++) FCKTools.AppendStyleSheet(B,C[i]);B.body.className+=' ForceBaseFont';if (!FCKBrowserInfo.IsGecko) A.OnBeforeClick=this.RefreshVisibleItems;var D=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Styles;for (var s in D){var E=D[s];var F;if (E.IsObjectElement) F=A.AddItem(s,s);else F=A.AddItem(s,E.GetOpenerTag()+s+E.GetCloserTag());F.Style=E;}};FCKToolbarStyleCombo.prototype.RefreshActiveItems=function(A){A.DeselectAll();var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetActiveStyles();if (B.length>0){for (var i=0;i<B.length;i++) A.SelectItem(B[i].Name);A.SetLabelById(B[0].Name);}else A.SetLabel('');};FCKToolbarStyleCombo.prototype.RefreshVisibleItems=function(A){if (FCKSelection.GetType()=='Control') var B=FCKSelection.GetSelectedElement().tagName;for (var i in A.Items){var C=A.Items[i];if ((B&&C.Style.Element==B)||(!B&&!C.Style.IsObjectElement)) C.style.display='';else C.style.display='none';}}
+var FCKToolbarPanelButton=function(A,B,C,D,E){this.CommandName=A;var F;if (E==null) F=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(E)=='number') F=[FCKConfig.SkinPath+'fck_strip.gif',16,E];var G=this._UIButton=new FCKToolbarButtonUI(A,B,C,F,D);G._FCKToolbarPanelButton=this;G.ShowArrow=true;G.OnClick=FCKToolbarPanelButton_OnButtonClick;};FCKToolbarPanelButton.prototype.TypeName='FCKToolbarPanelButton';FCKToolbarPanelButton.prototype.Create=function(A){A.className+='Menu';this._UIButton.Create(A);var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName)._Panel;B._FCKToolbarPanelButton=this;var C=B.Document.body.appendChild(B.Document.createElement('div'));C.style.position='absolute';C.style.top='0px';var D=this.LineImg=C.appendChild(B.Document.createElement('IMG'));D.className='TB_ConnectionLine';D.src=FCK_SPACER_PATH;B.OnHide=FCKToolbarPanelButton_OnPanelHide;};function FCKToolbarPanelButton_OnButtonClick(toolbarButton){var oButton=this._FCKToolbarPanelButton;var e=oButton._UIButton.MainElement;oButton._UIButton.ChangeState(FCK_TRISTATE_ON);oButton.LineImg.style.width=(e.offsetWidth-2)+'px';FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(oButton.CommandName).Execute(0,e.offsetHeight-1,e);};function FCKToolbarPanelButton_OnPanelHide(){var oMenuButton=this._FCKToolbarPanelButton;oMenuButton._UIButton.ChangeState(FCK_TRISTATE_OFF);};FCKToolbarPanelButton.prototype.RefreshState=FCKToolbarButton.prototype.RefreshState;FCKToolbarPanelButton.prototype.Enable=FCKToolbarButton.prototype.Enable;FCKToolbarPanelButton.prototype.Disable=FCKToolbarButton.prototype.Disable;
+var FCKToolbarItems=new Object();FCKToolbarItems.LoadedItems=new Object();FCKToolbarItems.RegisterItem=function(A,B){this.LoadedItems[A]=B;};FCKToolbarItems.GetItem=function(A){var B=FCKToolbarItems.LoadedItems[A];if (B) return B;switch (A){case 'Source':B=new FCKToolbarButton('Source',FCKLang.Source,null,FCK_TOOLBARITEM_ICONTEXT,true,true,1);break;case 'DocProps':B=new FCKToolbarButton('DocProps',FCKLang.DocProps,null,null,null,null,2);break;case 'Save':B=new FCKToolbarButton('Save',FCKLang.Save,null,null,true,null,3);break;case 'NewPage':B=new FCKToolbarButton('NewPage',FCKLang.NewPage,null,null,true,null,4);break;case 'Preview':B=new FCKToolbarButton('Preview',FCKLang.Preview,null,null,true,null,5);break;case 'Templates':B=new FCKToolbarButton('Templates',FCKLang.Templates,null,null,null,null,6);break;case 'About':B=new FCKToolbarButton('About',FCKLang.About,null,null,true,null,47);break;case 'Cut':B=new FCKToolbarButton('Cut',FCKLang.Cut,null,null,false,true,7);break;case 'Copy':B=new FCKToolbarButton('Copy',FCKLang.Copy,null,null,false,true,8);break;case 'Paste':B=new FCKToolbarButton('Paste',FCKLang.Paste,null,null,false,true,9);break;case 'PasteText':B=new FCKToolbarButton('PasteText',FCKLang.PasteText,null,null,false,true,10);break;case 'PasteWord':B=new FCKToolbarButton('PasteWord',FCKLang.PasteWord,null,null,false,true,11);break;case 'Print':B=new FCKToolbarButton('Print',FCKLang.Print,null,null,false,true,12);break;case 'SpellCheck':B=new FCKToolbarButton('SpellCheck',FCKLang.SpellCheck,null,null,null,null,13);break;case 'Undo':B=new FCKToolbarButton('Undo',FCKLang.Undo,null,null,false,true,14);break;case 'Redo':B=new FCKToolbarButton('Redo',FCKLang.Redo,null,null,false,true,15);break;case 'SelectAll':B=new FCKToolbarButton('SelectAll',FCKLang.SelectAll,null,null,null,null,18);break;case 'RemoveFormat':B=new FCKToolbarButton('RemoveFormat',FCKLang.RemoveFormat,null,null,false,true,19);break;case 'FitWindow':B=new FCKToolbarButton('FitWindow',FCKLang.FitWindow,null,null,true,true,66);break;case 'Bold':B=new FCKToolbarButton('Bold',FCKLang.Bold,null,null,false,true,20);break;case 'Italic':B=new FCKToolbarButton('Italic',FCKLang.Italic,null,null,false,true,21);break;case 'Underline':B=new FCKToolbarButton('Underline',FCKLang.Underline,null,null,false,true,22);break;case 'StrikeThrough':B=new FCKToolbarButton('StrikeThrough',FCKLang.StrikeThrough,null,null,false,true,23);break;case 'Subscript':B=new FCKToolbarButton('Subscript',FCKLang.Subscript,null,null,false,true,24);break;case 'Superscript':B=new FCKToolbarButton('Superscript',FCKLang.Superscript,null,null,false,true,25);break;case 'OrderedList':B=new FCKToolbarButton('InsertOrderedList',FCKLang.NumberedListLbl,FCKLang.NumberedList,null,false,true,26);break;case 'UnorderedList':B=new FCKToolbarButton('InsertUnorderedList',FCKLang.BulletedListLbl,FCKLang.BulletedList,null,false,true,27);break;case 'Outdent':B=new FCKToolbarButton('Outdent',FCKLang.DecreaseIndent,null,null,false,true,28);break;case 'Indent':B=new FCKToolbarButton('Indent',FCKLang.IncreaseIndent,null,null,false,true,29);break;case 'Link':B=new FCKToolbarButton('Link',FCKLang.InsertLinkLbl,FCKLang.InsertLink,null,false,true,34);break;case 'Unlink':B=new FCKToolbarButton('Unlink',FCKLang.RemoveLink,null,null,false,true,35);break;case 'Anchor':B=new FCKToolbarButton('Anchor',FCKLang.Anchor,null,null,null,null,36);break;case 'Image':B=new FCKToolbarButton('Image',FCKLang.InsertImageLbl,FCKLang.InsertImage,null,false,true,37);break;case 'Flash':B=new FCKToolbarButton('Flash',FCKLang.InsertFlashLbl,FCKLang.InsertFlash,null,false,true,38);break;case 'Table':B=new FCKToolbarButton('Table',FCKLang.InsertTableLbl,FCKLang.InsertTable,null,false,true,39);break;case 'SpecialChar':B=new FCKToolbarButton('SpecialChar',FCKLang.InsertSpecialCharLbl,FCKLang.InsertSpecialChar,null,false,true,42);break;case 'Smiley':B=new FCKToolbarButton('Smiley',FCKLang.InsertSmileyLbl,FCKLang.InsertSmiley,null,false,true,41);break;case 'PageBreak':B=new FCKToolbarButton('PageBreak',FCKLang.PageBreakLbl,FCKLang.PageBreak,null,false,true,43);break;case 'UniversalKey':B=new FCKToolbarButton('UniversalKey',FCKLang.UniversalKeyboard,null,null,false,true,44);break;case 'Rule':B=new FCKToolbarButton('InsertHorizontalRule',FCKLang.InsertLineLbl,FCKLang.InsertLine,null,false,true,40);break;case 'JustifyLeft':B=new FCKToolbarButton('JustifyLeft',FCKLang.LeftJustify,null,null,false,true,30);break;case 'JustifyCenter':B=new FCKToolbarButton('JustifyCenter',FCKLang.CenterJustify,null,null,false,true,31);break;case 'JustifyRight':B=new FCKToolbarButton('JustifyRight',FCKLang.RightJustify,null,null,false,true,32);break;case 'JustifyFull':B=new FCKToolbarButton('JustifyFull',FCKLang.BlockJustify,null,null,false,true,33);break;case 'Style':B=new FCKToolbarStyleCombo();break;case 'FontName':B=new FCKToolbarFontsCombo();break;case 'FontSize':B=new FCKToolbarFontSizeCombo();break;case 'FontFormat':B=new FCKToolbarFontFormatCombo();break;case 'TextColor':B=new FCKToolbarPanelButton('TextColor',FCKLang.TextColor,null,null,45);break;case 'BGColor':B=new FCKToolbarPanelButton('BGColor',FCKLang.BGColor,null,null,46);break;case 'Find':B=new FCKToolbarButton('Find',FCKLang.Find,null,null,null,null,16);break;case 'Replace':B=new FCKToolbarButton('Replace',FCKLang.Replace,null,null,null,null,17);break;case 'Form':B=new FCKToolbarButton('Form',FCKLang.Form,null,null,null,null,48);break;case 'Checkbox':B=new FCKToolbarButton('Checkbox',FCKLang.Checkbox,null,null,null,null,49);break;case 'Radio':B=new FCKToolbarButton('Radio',FCKLang.RadioButton,null,null,null,null,50);break;case 'TextField':B=new FCKToolbarButton('TextField',FCKLang.TextField,null,null,null,null,51);break;case 'Textarea':B=new FCKToolbarButton('Textarea',FCKLang.Textarea,null,null,null,null,52);break;case 'HiddenField':B=new FCKToolbarButton('HiddenField',FCKLang.HiddenField,null,null,null,null,56);break;case 'Button':B=new FCKToolbarButton('Button',FCKLang.Button,null,null,null,null,54);break;case 'Select':B=new FCKToolbarButton('Select',FCKLang.SelectionField,null,null,null,null,53);break;case 'ImageButton':B=new FCKToolbarButton('ImageButton',FCKLang.ImageButton,null,null,null,null,55);break;default:alert(FCKLang.UnknownToolbarItem.replace(/%1/g,A));return null;};FCKToolbarItems.LoadedItems[A]=B;return B;}
+var FCKToolbar=function(){this.Items=new Array();if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbar_Cleanup);};FCKToolbar.prototype.AddItem=function(A){return this.Items[this.Items.length]=A;};FCKToolbar.prototype.AddButton=function(A,B,C,D,E,F){if (typeof(D)=='number') D=[this.DefaultIconsStrip,this.DefaultIconSize,D];var G=new FCKToolbarButtonUI(A,B,C,D,E,F);G._FCKToolbar=this;G.OnClick=FCKToolbar_OnItemClick;return this.AddItem(G);};function FCKToolbar_OnItemClick(item){var oToolbar=item._FCKToolbar;if (oToolbar.OnItemClick) oToolbar.OnItemClick(oToolbar,item);};FCKToolbar.prototype.AddSeparator=function(){this.AddItem(new FCKToolbarSeparator());};FCKToolbar.prototype.Create=function(A){if (this.MainElement){if (this.MainElement.parentNode) this.MainElement.parentNode.removeChild(this.MainElement);this.MainElement=null;};var B=FCKTools.GetElementDocument(A);var e=this.MainElement=B.createElement('table');e.className='TB_Toolbar';e.style.styleFloat=e.style.cssFloat=(FCKLang.Dir=='ltr'?'left':'right');e.dir=FCKLang.Dir;e.cellPadding=0;e.cellSpacing=0;this.RowElement=e.insertRow(-1);var C;if (!this.HideStart){C=this.RowElement.insertCell(-1);C.appendChild(B.createElement('div')).className='TB_Start';};for (var i=0;i<this.Items.length;i++){this.Items[i].Create(this.RowElement.insertCell(-1));};if (!this.HideEnd){C=this.RowElement.insertCell(-1);C.appendChild(B.createElement('div')).className='TB_End';};A.appendChild(e);};function FCKToolbar_Cleanup(){this.MainElement=null;this.RowElement=null;};var FCKToolbarSeparator=function(){};FCKToolbarSeparator.prototype.Create=function(A){FCKTools.AppendElement(A,'div').className='TB_Separator';}
+var FCKToolbarBreak=function(){};FCKToolbarBreak.prototype.Create=function(A){var B=A.ownerDocument.createElement('div');B.style.clear=B.style.cssFloat=FCKLang.Dir=='rtl'?'right':'left';A.appendChild(B);}
+function FCKToolbarSet_Create(overhideLocation){var oToolbarSet;var sLocation=overhideLocation||FCKConfig.ToolbarLocation;switch (sLocation){case 'In':document.getElementById('xToolbarRow').style.display='';oToolbarSet=new FCKToolbarSet(document);break;default:FCK.Events.AttachEvent('OnBlur',FCK_OnBlur);FCK.Events.AttachEvent('OnFocus',FCK_OnFocus);var eToolbarTarget;var oOutMatch=sLocation.match(/^Out:(.+)\((\w+)\)$/);if (oOutMatch){eToolbarTarget=eval('parent.'+oOutMatch[1]).document.getElementById(oOutMatch[2]);}else{oOutMatch=sLocation.match(/^Out:(\w+)$/);if (oOutMatch) eToolbarTarget=parent.document.getElementById(oOutMatch[1]);};if (!eToolbarTarget){alert('Invalid value for "ToolbarLocation"');return this._Init('In');};if (oToolbarSet=eToolbarTarget.__FCKToolbarSet) break;var eToolbarIFrame=FCKTools.GetElementDocument(eToolbarTarget).createElement('iframe');eToolbarIFrame.frameBorder=0;eToolbarIFrame.width='100%';eToolbarIFrame.height='10';eToolbarTarget.appendChild(eToolbarIFrame);eToolbarIFrame.unselectable='on';var eTargetDocument=eToolbarIFrame.contentWindow.document;eTargetDocument.open();eTargetDocument.write('<html><head><script type="text/javascript"> window.onload = window.onresize = function() { window.frameElement.height = document.body.scrollHeight ; } </script></head><body style="overflow: hidden">'+document.getElementById('xToolbarSpace').innerHTML+'</body></html>');eTargetDocument.close();eTargetDocument.oncontextmenu=FCKTools.CancelEvent;FCKTools.AppendStyleSheet(eTargetDocument,FCKConfig.SkinPath+'fck_editor.css');oToolbarSet=eToolbarTarget.__FCKToolbarSet=new FCKToolbarSet(eTargetDocument);oToolbarSet._IFrame=eToolbarIFrame;if (FCK.IECleanup) FCK.IECleanup.AddItem(eToolbarTarget,FCKToolbarSet_Target_Cleanup);};oToolbarSet.CurrentInstance=FCK;FCK.AttachToOnSelectionChange(oToolbarSet.RefreshItemsState);return oToolbarSet;};function FCK_OnBlur(editorInstance){var eToolbarSet=editorInstance.ToolbarSet;if (eToolbarSet.CurrentInstance==editorInstance) eToolbarSet.Disable();};function FCK_OnFocus(editorInstance){var oToolbarset=editorInstance.ToolbarSet;var oInstance=editorInstance||FCK;oToolbarset.CurrentInstance.FocusManager.RemoveWindow(oToolbarset._IFrame.contentWindow);oToolbarset.CurrentInstance=oInstance;oInstance.FocusManager.AddWindow(oToolbarset._IFrame.contentWindow,true);oToolbarset.Enable();};function FCKToolbarSet_Cleanup(){this._TargetElement=null;this._IFrame=null;};function FCKToolbarSet_Target_Cleanup(){this.__FCKToolbarSet=null;};var FCKToolbarSet=function(A){this._Document=A;this._TargetElement=A.getElementById('xToolbar');var B=A.getElementById('xExpandHandle');var C=A.getElementById('xCollapseHandle');B.title=FCKLang.ToolbarExpand;B.onclick=FCKToolbarSet_Expand_OnClick;C.title=FCKLang.ToolbarCollapse;C.onclick=FCKToolbarSet_Collapse_OnClick;if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();C.style.display=FCKConfig.ToolbarCanCollapse?'':'none';if (FCKConfig.ToolbarCanCollapse) C.style.display='';else A.getElementById('xTBLeftBorder').style.display='';this.Toolbars=new Array();this.IsLoaded=false;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarSet_Cleanup);};function FCKToolbarSet_Expand_OnClick(){FCK.ToolbarSet.Expand();};function FCKToolbarSet_Collapse_OnClick(){FCK.ToolbarSet.Collapse();};FCKToolbarSet.prototype.Expand=function(){this._ChangeVisibility(false);};FCKToolbarSet.prototype.Collapse=function(){this._ChangeVisibility(true);};FCKToolbarSet.prototype._ChangeVisibility=function(A){this._Document.getElementById('xCollapsed').style.display=A?'':'none';this._Document.getElementById('xExpanded').style.display=A?'none':'';if (FCKBrowserInfo.IsGecko){FCKTools.RunFunction(window.onresize);}};FCKToolbarSet.prototype.Load=function(A){this.Name=A;this.Items=new Array();this.ItemsWysiwygOnly=new Array();this.ItemsContextSensitive=new Array();this._TargetElement.innerHTML='';var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=new Array();for (var x=0;x<B.length;x++){var C=B[x];var D;if (typeof(C)=='string'){if (C=='/') D=new FCKToolbarBreak();}else{D=new FCKToolbar();for (var j=0;j<C.length;j++){var E=C[j];if (E=='-') D.AddSeparator();else{var F=FCKToolbarItems.GetItem(E);if (F){D.AddItem(F);this.Items.push(F);if (!F.SourceView) this.ItemsWysiwygOnly.push(F);if (F.ContextSensitive) this.ItemsContextSensitive.push(F);}}}};D.Create(this._TargetElement);this.Toolbars[this.Toolbars.length]=D;};FCKTools.DisableSelection(this._Document.getElementById('xCollapseHandle').parentNode);if (FCK.Status!=FCK_STATUS_COMPLETE) FCK.Events.AttachEvent('OnStatusChange',this.RefreshModeState);else this.RefreshModeState();this.IsLoaded=true;this.IsEnabled=true;FCKTools.RunFunction(this.OnLoad);};FCKToolbarSet.prototype.Enable=function(){if (this.IsEnabled) return;this.IsEnabled=true;var A=this.Items;for (var i=0;i<A.length;i++) A[i].RefreshState();};FCKToolbarSet.prototype.Disable=function(){if (!this.IsEnabled) return;this.IsEnabled=false;var A=this.Items;for (var i=0;i<A.length;i++) A[i].Disable();};FCKToolbarSet.prototype.RefreshModeState=function(A){if (FCK.Status!=FCK_STATUS_COMPLETE) return;var B=A?A.ToolbarSet:this;var C=B.ItemsWysiwygOnly;if (FCK.EditMode==FCK_EDITMODE_WYSIWYG){for (var i=0;i<C.length;i++) C[i].Enable();B.RefreshItemsState(A);}else{B.RefreshItemsState(A);for (var i=0;i<C.length;i++) C[i].Disable();}};FCKToolbarSet.prototype.RefreshItemsState=function(A){var B=(A?A.ToolbarSet:this).ItemsContextSensitive;for (var i=0;i<B.length;i++) B[i].RefreshState();};
+var FCKDialog=new Object();FCKDialog.OpenDialog=function(A,B,C,D,E,F,G,H){var I=new Object();I.Title=B;I.Page=C;I.Editor=window;I.CustomValue=F;var J=FCKConfig.BasePath+'fckdialog.html';this.Show(I,A,J,D,E,G,H);};
+FCKDialog.Show=function(A,B,C,D,E,F,G){var H=(FCKConfig.ScreenHeight-E)/2;var I=(FCKConfig.ScreenWidth-D)/2;var J="location=no,menubar=no,toolbar=no,dependent=yes,dialog=yes,minimizable=no,modal=yes,alwaysRaised=yes"+",resizable="+(G?'yes':'no')+",width="+D+",height="+E+",top="+H+",left="+I;if (!F) F=window;FCKFocusManager.Lock();var K=F.open('','FCKeditorDialog_'+B,J,true);if (!K){alert(FCKLang.DialogBlocked);FCKFocusManager.Unlock();return;};K.moveTo(I,H);K.resizeTo(D,E);K.focus();K.location.href=C;K.dialogArguments=A;F.FCKLastDialogInfo=A;this.Window=K;try{window.top.captureEvents(Event.CLICK|Event.MOUSEDOWN|Event.MOUSEUP|Event.FOCUS);window.top.parent.addEventListener('mousedown',this.CheckFocus,true);window.top.parent.addEventListener('mouseup',this.CheckFocus,true);window.top.parent.addEventListener('click',this.CheckFocus,true);window.top.parent.addEventListener('focus',this.CheckFocus,true);}catch (e){}};FCKDialog.CheckFocus=function(){if (typeof(FCKDialog)!="object") return false;if (FCKDialog.Window&&!FCKDialog.Window.closed) FCKDialog.Window.focus();else{try{window.top.releaseEvents(Event.CLICK|Event.MOUSEDOWN|Event.MOUSEUP|Event.FOCUS);window.top.parent.removeEventListener('onmousedown',FCKDialog.CheckFocus,true);window.top.parent.removeEventListener('mouseup',FCKDialog.CheckFocus,true);window.top.parent.removeEventListener('click',FCKDialog.CheckFocus,true);window.top.parent.removeEventListener('onfocus',FCKDialog.CheckFocus,true);}catch (e){}};return false;};
+var FCKMenuItem=function(A,B,C,D,E){this.Name=B;this.Label=C||B;this.IsDisabled=E;this.Icon=new FCKIcon(D);this.SubMenu=new FCKMenuBlockPanel();this.SubMenu.Parent=A;this.SubMenu.OnClick=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnClick,this);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuItem_Cleanup);};FCKMenuItem.prototype.AddItem=function(A,B,C,D){this.HasSubMenu=true;return this.SubMenu.AddItem(A,B,C,D);};FCKMenuItem.prototype.AddSeparator=function(){this.SubMenu.AddSeparator();};FCKMenuItem.prototype.Create=function(A){var B=this.HasSubMenu;var C=FCKTools.GetElementDocument(A);var r=this.MainElement=A.insertRow(-1);r.className=this.IsDisabled?'MN_Item_Disabled':'MN_Item';if (!this.IsDisabled){FCKTools.AddEventListenerEx(r,'mouseover',FCKMenuItem_OnMouseOver,[this]);FCKTools.AddEventListenerEx(r,'click',FCKMenuItem_OnClick,[this]);if (!B) FCKTools.AddEventListenerEx(r,'mouseout',FCKMenuItem_OnMouseOut,[this]);};var D=r.insertCell(-1);D.className='MN_Icon';D.appendChild(this.Icon.CreateIconElement(C));D=r.insertCell(-1);D.className='MN_Label';D.noWrap=true;D.appendChild(C.createTextNode(this.Label));D=r.insertCell(-1);if (B){D.className='MN_Arrow';var E=D.appendChild(C.createElement('IMG'));E.src=FCK_IMAGES_PATH+'arrow_'+FCKLang.Dir+'.gif';E.width=4;E.height=7;this.SubMenu.Create();this.SubMenu.Panel.OnHide=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnHide,this);}};FCKMenuItem.prototype.Activate=function(){this.MainElement.className='MN_Item_Over';if (this.HasSubMenu){this.SubMenu.Show(this.MainElement.offsetWidth+2,-2,this.MainElement);};FCKTools.RunFunction(this.OnActivate,this);};FCKMenuItem.prototype.Deactivate=function(){this.MainElement.className='MN_Item';if (this.HasSubMenu) this.SubMenu.Hide();};/* Events */ function FCKMenuItem_SubMenu_OnClick(clickedItem,listeningItem){FCKTools.RunFunction(listeningItem.OnClick,listeningItem,[clickedItem]);};function FCKMenuItem_SubMenu_OnHide(menuItem){menuItem.Deactivate();};function FCKMenuItem_OnClick(ev,menuItem){if (menuItem.HasSubMenu) menuItem.Activate();else{menuItem.Deactivate();FCKTools.RunFunction(menuItem.OnClick,menuItem,[menuItem]);}};function FCKMenuItem_OnMouseOver(ev,menuItem){menuItem.Activate();};function FCKMenuItem_OnMouseOut(ev,menuItem){menuItem.Deactivate();};function FCKMenuItem_Cleanup(){this.MainElement=null;}
+var FCKMenuBlock=function(){this._Items=new Array();};FCKMenuBlock.prototype.AddItem=function(A,B,C,D){var E=new FCKMenuItem(this,A,B,C,D);E.OnClick=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnClick,this);E.OnActivate=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnActivate,this);this._Items.push(E);return E;};FCKMenuBlock.prototype.AddSeparator=function(){this._Items.push(new FCKMenuSeparator());};FCKMenuBlock.prototype.RemoveAllItems=function(){this._Items=new Array();var A=this._ItemsTable;if (A){while (A.rows.length>0) A.deleteRow(0);}};FCKMenuBlock.prototype.Create=function(A){if (!this._ItemsTable){if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuBlock_Cleanup);this._Window=FCKTools.GetElementWindow(A);var B=FCKTools.GetElementDocument(A);var C=A.appendChild(B.createElement('table'));C.cellPadding=0;C.cellSpacing=0;FCKTools.DisableSelection(C);var D=C.insertRow(-1).insertCell(-1);D.className='MN_Menu';var E=this._ItemsTable=D.appendChild(B.createElement('table'));E.cellPadding=0;E.cellSpacing=0;};for (var i=0;i<this._Items.length;i++) this._Items[i].Create(this._ItemsTable);};/* Events */ function FCKMenuBlock_Item_OnClick(clickedItem,menuBlock){FCKTools.RunFunction(menuBlock.OnClick,menuBlock,[clickedItem]);};function FCKMenuBlock_Item_OnActivate(menuBlock){var oActiveItem=menuBlock._ActiveItem;if (oActiveItem&&oActiveItem!=this){if (!FCKBrowserInfo.IsIE&&oActiveItem.HasSubMenu&&!this.HasSubMenu) menuBlock._Window.focus();oActiveItem.Deactivate();};menuBlock._ActiveItem=this;};function FCKMenuBlock_Cleanup(){this._Window=null;this._ItemsTable=null;};var FCKMenuSeparator=function(){};FCKMenuSeparator.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var r=A.insertRow(-1);var C=r.insertCell(-1);C.className='MN_Separator MN_Icon';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';}
+var FCKMenuBlockPanel=function(){FCKMenuBlock.call(this);};FCKMenuBlockPanel.prototype=new FCKMenuBlock();FCKMenuBlockPanel.prototype.Create=function(){var A=this.Panel=(this.Parent&&this.Parent.Panel?this.Parent.Panel.CreateChildPanel():new FCKPanel());A.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');FCKMenuBlock.prototype.Create.call(this,A.MainNode);};FCKMenuBlockPanel.prototype.Show=function(x,y,A){if (!this.Panel.CheckIsOpened()) this.Panel.Show(x,y,A);};FCKMenuBlockPanel.prototype.Hide=function(){if (this.Panel.CheckIsOpened()) this.Panel.Hide();}
+var FCKContextMenu=function(A,B,C){var D=this._Panel=new FCKPanel(A,true);D.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');D.IsContextMenu=true;var E=this._MenuBlock=new FCKMenuBlock();E.Panel=D;E.OnClick=FCKTools.CreateEventListener(FCKContextMenu_MenuBlock_OnClick,this);this._Redraw=true;this.SetMouseClickWindow(B||A);};FCKContextMenu.prototype.SetMouseClickWindow=function(A){if (!FCKBrowserInfo.IsIE){this._Document=A.document;this._Document.addEventListener('contextmenu',FCKContextMenu_Document_OnContextMenu,false);}};FCKContextMenu.prototype.AddItem=function(A,B,C,D){var E=this._MenuBlock.AddItem(A,B,C,D);this._Redraw=true;return E;};FCKContextMenu.prototype.AddSeparator=function(){this._MenuBlock.AddSeparator();this._Redraw=true;};FCKContextMenu.prototype.RemoveAllItems=function(){this._MenuBlock.RemoveAllItems();this._Redraw=true;};FCKContextMenu.prototype.AttachToElement=function(A){if (FCKBrowserInfo.IsIE) FCKTools.AddEventListenerEx(A,'contextmenu',FCKContextMenu_AttachedElement_OnContextMenu,this);else A._FCKContextMenu=this;};function FCKContextMenu_Document_OnContextMenu(e){var el=e.target;while (el){if (el._FCKContextMenu){FCKTools.CancelEvent(e);FCKContextMenu_AttachedElement_OnContextMenu(e,el._FCKContextMenu,el);};el=el.parentNode;}};function FCKContextMenu_AttachedElement_OnContextMenu(ev,fckContextMenu,el){var eTarget=el||this;if (fckContextMenu.OnBeforeOpen) fckContextMenu.OnBeforeOpen.call(fckContextMenu,eTarget);if (fckContextMenu._Redraw){fckContextMenu._MenuBlock.Create(fckContextMenu._Panel.MainNode);fckContextMenu._Redraw=false;};fckContextMenu._Panel.Show(ev.pageX||ev.screenX,ev.pageY||ev.screenY,ev.currentTarget||null);return false;};function FCKContextMenu_MenuBlock_OnClick(menuItem,contextMenu){contextMenu._Panel.Hide();FCKTools.RunFunction(contextMenu.OnItemClick,contextMenu,menuItem);}
+FCK.ContextMenu=new Object();FCK.ContextMenu.Listeners=new Array();FCK.ContextMenu.RegisterListener=function(A){if (A) this.Listeners.push(A);};function FCK_ContextMenu_Init(){var oInnerContextMenu=FCK.ContextMenu._InnerContextMenu=new FCKContextMenu(FCKBrowserInfo.IsIE?window:window.parent,FCK.EditorWindow,FCKLang.Dir);oInnerContextMenu.OnBeforeOpen=FCK_ContextMenu_OnBeforeOpen;oInnerContextMenu.OnItemClick=FCK_ContextMenu_OnItemClick;var oMenu=FCK.ContextMenu;for (var i=0;i<FCKConfig.ContextMenu.length;i++) oMenu.RegisterListener(FCK_ContextMenu_GetListener(FCKConfig.ContextMenu[i]));};function FCK_ContextMenu_GetListener(listenerName){switch (listenerName){case 'Generic':return {AddItems:function(A,B,C){A.AddItem('Cut',FCKLang.Cut,7,FCKCommands.GetCommand('Cut').GetState()==FCK_TRISTATE_DISABLED);A.AddItem('Copy',FCKLang.Copy,8,FCKCommands.GetCommand('Copy').GetState()==FCK_TRISTATE_DISABLED);A.AddItem('Paste',FCKLang.Paste,9,FCKCommands.GetCommand('Paste').GetState()==FCK_TRISTATE_DISABLED);}};case 'Table':return {AddItems:function(A,B,C){var D=(C=='TABLE');var E=(!D&&FCKSelection.HasAncestorNode('TABLE'));if (E){A.AddSeparator();var F=A.AddItem('Cell',FCKLang.CellCM);F.AddItem('TableInsertCell',FCKLang.InsertCell,58);F.AddItem('TableDeleteCells',FCKLang.DeleteCells,59);F.AddItem('TableMergeCells',FCKLang.MergeCells,60);F.AddItem('TableSplitCell',FCKLang.SplitCell,61);F.AddSeparator();F.AddItem('TableCellProp',FCKLang.CellProperties,57);A.AddSeparator();F=A.AddItem('Row',FCKLang.RowCM);F.AddItem('TableInsertRow',FCKLang.InsertRow,62);F.AddItem('TableDeleteRows',FCKLang.DeleteRows,63);A.AddSeparator();F=A.AddItem('Column',FCKLang.ColumnCM);F.AddItem('TableInsertColumn',FCKLang.InsertColumn,64);F.AddItem('TableDeleteColumns',FCKLang.DeleteColumns,65);};if (D||E){A.AddSeparator();A.AddItem('TableDelete',FCKLang.TableDelete);A.AddItem('TableProp',FCKLang.TableProperties,39);}}};case 'Link':return {AddItems:function(A,B,C){if (FCK.GetNamedCommandState('Unlink')!=FCK_TRISTATE_DISABLED){A.AddSeparator();A.AddItem('Link',FCKLang.EditLink,34);A.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(A,B,C){if (C=='IMG'&&!B.getAttribute('_fckfakelement')){A.AddSeparator();A.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(A,B,C){if (C=='IMG'&&B.getAttribute('_fckanchor')){A.AddSeparator();A.AddItem('Anchor',FCKLang.AnchorProp,36);}}};case 'Flash':return {AddItems:function(A,B,C){if (C=='IMG'&&B.getAttribute('_fckflash')){A.AddSeparator();A.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(A,B,C){if (FCKSelection.HasAncestorNode('FORM')){A.AddSeparator();A.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(A,B,C){if (C=='INPUT'&&B.type=='checkbox'){A.AddSeparator();A.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(A,B,C){if (C=='INPUT'&&B.type=='radio'){A.AddSeparator();A.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(A,B,C){if (C=='INPUT'&&(B.type=='text'||B.type=='password')){A.AddSeparator();A.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(A,B,C){if (C=='INPUT'&&B.type=='hidden'){A.AddSeparator();A.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(A,B,C){if (C=='INPUT'&&B.type=='image'){A.AddSeparator();A.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(A,B,C){if (C=='INPUT'&&(B.type=='button'||B.type=='submit'||B.type=='reset')){A.AddSeparator();A.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(A,B,C){if (C=='SELECT'){A.AddSeparator();A.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(A,B,C){if (C=='TEXTAREA'){A.AddSeparator();A.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(A,B,C){if (FCKSelection.HasAncestorNode('UL')){A.AddSeparator();A.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(A,B,C){if (FCKSelection.HasAncestorNode('OL')){A.AddSeparator();A.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};}};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent("OnSelectionChange");var oTag,sTagName;if (oTag=FCKSelection.GetSelectedElement()) sTagName=oTag.tagName;var oMenu=FCK.ContextMenu._InnerContextMenu;oMenu.RemoveAllItems();var aListeners=FCK.ContextMenu.Listeners;for (var i=0;i<aListeners.length;i++) aListeners[i].AddItems(oMenu,oTag,sTagName);};function FCK_ContextMenu_OnItemClick(item){FCK.Focus();FCKCommands.GetCommand(item.Name).Execute();}
+var FCKPlugin=function(A,B,C){this.Name=A;this.BasePath=C?C:FCKConfig.PluginsPath;this.Path=this.BasePath+A+'/';if (!B||B.length==0) this.AvailableLangs=new Array();else this.AvailableLangs=B.split(',');};FCKPlugin.prototype.Load=function(){if (this.AvailableLangs.length>0){var A;if (this.AvailableLangs.indexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];LoadScript(this.Path+'lang/'+A+'.js');};LoadScript(this.Path+'fckplugin.js');}
+var FCKPlugins=FCK.Plugins=new Object();FCKPlugins.ItemsCount=0;FCKPlugins.Items=new Object();FCKPlugins.Load=function(){var A=FCKPlugins.Items;for (var i=0;i<FCKConfig.Plugins.Items.length;i++){var B=FCKConfig.Plugins.Items[i];var C=A[B[0]]=new FCKPlugin(B[0],B[1],B[2]);FCKPlugins.ItemsCount++;};for (var s in A) A[s].Load();FCKPlugins.Load=null;}
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/js/fckeditorcode_ie_1.js 1.4.1.src/fckeditor/editor/js/fckeditorcode_ie_1.js
--- 1.4.0sr5-1.src/fckeditor/editor/js/fckeditorcode_ie_1.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/js/fckeditorcode_ie_1.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,27 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * This file has been compacted for best loading performance.
- */
-var FCKDebug=new Object();if (FCKConfig.Debug){FCKDebug.Output=function(A,B){if (!FCKConfig.Debug) return;if (A!=null&&isNaN(A)) A=A.replace(/</g,"&lt;");if (!this.DebugWindow||this.DebugWindow.closed) this.DebugWindow=window.open('fckdebug.html','FCKeditorDebug','menubar=no,scrollbars=no,resizable=yes,location=no,toolbar=no,width=600,height=500',true);if (this.DebugWindow.Output) this.DebugWindow.Output(A,B);};}else FCKDebug.Output=function() {};
-var FCKTools=new Object();FCKTools.GetLinkedFieldValue=function(){return FCK.LinkedField.value;};FCKTools.AttachToLinkedFieldFormSubmit=function(A){var B=FCK.LinkedField.form;if (!B) return;if (FCKBrowserInfo.IsIE) B.attachEvent("onsubmit",A);else B.addEventListener('submit',A,true);if (!B.updateFCKeditor) B.updateFCKeditor=new Array();B.updateFCKeditor[B.updateFCKeditor.length]=A;if (!B.originalSubmit&&(typeof(B.submit)=='function'||(!B.submit.tagName&&!B.submit.length))){B.originalSubmit=B.submit;B.submit=FCKTools_SubmitReplacer;};};function FCKTools_SubmitReplacer(){if (this.updateFCKeditor){for (var i=0;i<this.updateFCKeditor.length;i++) this.updateFCKeditor[i]();};this.originalSubmit();};FCKTools.AddSelectOption=function(A,B,C,D){var E=A.createElement("OPTION");E.text=C;E.value=D;B.options.add(E);return E;};FCKTools.RemoveAllSelectOptions=function(A){for (var i=A.options.length-1;i>=0;i--){A.options.remove(i);};};FCKTools.SelectNoCase=function(A,B,C){var D=B.toString().toLowerCase();for (var i=0;i<A.options.length;i++){if (D==A.options[i].value.toLowerCase()){A.selectedIndex=i;return;};};if (C!=null) FCKTools.SelectNoCase(A,C);};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,"&amp;");A=A.replace(/"/g,"&quot;");A=A.replace(/</g,"&lt;");A=A.replace(/>/g,"&gt;");A=A.replace(/'/g,"&#39;");return A;};FCKTools.GetResultingArray=function(A,B){switch (typeof(A)){case "string":return A.split(B);case "function":return B();default:if (isArray(A)) return A;else return new Array();};};FCKTools.GetElementPosition=function(A){var c={ X:0,Y:0 };while (A){c.X+=A.offsetLeft;c.Y+=A.offsetTop;A=A.offsetParent;};return c;};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.Pause=function(A){var B=new Date();while (true){var C=new Date();if (A<C-B) return;};};FCKTools.ConvertStyleSizeToHtml=function(A){return A.endsWith('%')?A:parseInt(A);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.endsWith('%')?A:(A+'px');};
-FCKTools.AppendStyleSheet=function(A,B){return A.createStyleSheet(B);};FCKTools.ClearElementAttributes=function(A){A.clearAttributes();};FCKTools.GetAllChildrenIds=function(A){var B=new Array();for (var i=0;i<A.all.length;i++){var C=A.all[i].id;if (C&&C.length>0) B[B.length]=C;};return B;};FCKTools.RemoveOuterTags=function(e){e.insertAdjacentHTML('beforeBegin',e.innerHTML);e.parentNode.removeChild(e);};FCKTools.CreateXmlObject=function(A){var B;switch (A){case 'XmlHttp':B=['MSXML2.XmlHttp','Microsoft.XmlHttp'];break;case 'DOMDocument':B=['MSXML2.DOMDocument','Microsoft.XmlDom'];break;};for (var i=0;i<2;i++){try { return new ActiveXObject(B[i]);}catch (e){};};if (FCKLang.NoActiveX){alert(FCKLang.NoActiveX);FCKLang.NoActiveX=null;};}
-var FCKRegexLib=new Object();FCKRegexLib.AposEntity=/&apos;/gi;FCKRegexLib.ObjectElements=/^(?:IMG|TABLE|TR|TD|INPUT|SELECT|TEXTAREA|HR|OBJECT)$/i;FCKRegexLib.BlockElements=/^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TD)$/i;FCKRegexLib.EmptyElements=/^(?:BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT)$/i;FCKRegexLib.NamedCommands=/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i;FCKRegexLib.BodyContents=/([\s\S]*\<body[^\>]*\>)([\s\S]*)(\<\/body\>[\s\S]*)/i;FCKRegexLib.ToReplace=/___fcktoreplace:([\w]+)/ig;FCKRegexLib.MetaHttpEquiv=/http-equiv\s*=\s*["']?([^"' ]+)/i;FCKRegexLib.HasBaseTag=/<base /i;FCKRegexLib.HeadOpener=/<head\s?[^>]*>/i;FCKRegexLib.HeadCloser=/<\/head\s*>/i;FCKRegexLib.TableBorderClass=/\s*FCK__ShowTableBorders\s*/;FCKRegexLib.ElementName=/^[A-Za-z_:][\w.-:]*$/;FCKRegexLib.ForceSimpleAmpersand=/___FCKAmp___/g;FCKRegexLib.SpaceNoClose=/\/>/g;FCKRegexLib.EmptyParagraph=/^<(p|div)>\s*<\/\1>$/i;FCKRegexLib.TagBody=/></;FCKRegexLib.StrongOpener=/<STRONG([ \>])/gi;FCKRegexLib.StrongCloser=/<\/STRONG>/gi;FCKRegexLib.EmOpener=/<EM([ \>])/gi;FCKRegexLib.EmCloser=/<\/EM>/gi;FCKRegexLib.GeckoEntitiesMarker=/#\?-\:/g;
-FCKLanguageManager.GetActiveLanguage=function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;};};return this.DefaultLanguage;};FCKLanguageManager.TranslateElements=function(A,B,C){var e=A.getElementsByTagName(B);for (var i=0;i<e.length;i++){var D=e[i].getAttribute('fckLang');if (D){var s=FCKLang[D];if (s) eval('e[i].'+C+' = s');};};};FCKLanguageManager.TranslatePage=function(A){this.TranslateElements(A,'INPUT','value');this.TranslateElements(A,'SPAN','innerHTML');this.TranslateElements(A,'LABEL','innerHTML');this.TranslateElements(A,'OPTION','innerHTML');};if (FCKLanguageManager.AvailableLanguages[FCKConfig.DefaultLanguage]) FCKLanguageManager.DefaultLanguage=FCKConfig.DefaultLanguage;else FCKLanguageManager.DefaultLanguage='en';FCKLanguageManager.ActiveLanguage=new Object();FCKLanguageManager.ActiveLanguage.Code=FCKLanguageManager.GetActiveLanguage();FCKLanguageManager.ActiveLanguage.Name=FCKLanguageManager.AvailableLanguages[FCKLanguageManager.ActiveLanguage.Code];FCK.Language=FCKLanguageManager;LoadLanguageFile();
-var FCKEvents;if (!(FCKEvents=NS.FCKEvents)){FCKEvents=NS.FCKEvents=function(A){this.Owner=A;this.RegisteredEvents=new Object();};FCKEvents.prototype.AttachEvent=function(A,B){if (!this.RegisteredEvents[A]) this.RegisteredEvents[A]=new Array();this.RegisteredEvents[A][this.RegisteredEvents[A].length]=B;};FCKEvents.prototype.FireEvent=function(A,B){var C=true;var D=this.RegisteredEvents[A];if (D){for (var i=0;i<D.length;i++) C=(D[i](this.Owner,B)&&C);};return C;};}
-var FCKXHtmlEntities=new Object();if (FCKConfig.ProcessHTMLEntities){FCKXHtmlEntities.Entities={' ':'nbsp','¡':'iexcl','¢':'cent','£':'pound','¤':'curren','¥':'yen','¦':'brvbar','§':'sect','¨':'uml','©':'copy','ª':'ordf','«':'laquo','¬':'not','­':'shy','®':'reg','¯':'macr','°':'deg','±':'plusmn','²':'sup2','³':'sup3','´':'acute','µ':'micro','¶':'para','·':'middot','¸':'cedil','¹':'sup1','º':'ordm','»':'raquo','¼':'frac14','½':'frac12','¾':'frac34','¿':'iquest','×':'times','÷':'divide','ƒ':'fnof','•':'bull','…':'hellip','′':'prime','″':'Prime','‾':'oline','⁄':'frasl','℘':'weierp','ℑ':'image','ℜ':'real','™':'trade','ℵ':'alefsym','←':'larr','↑':'uarr','→':'rarr','↓':'darr','↔':'harr','↵':'crarr','⇐':'lArr','⇑':'uArr','⇒':'rArr','⇓':'dArr','⇔':'hArr','∀':'forall','∂':'part','∃':'exist','∅':'empty','∇':'nabla','∈':'isin','∉':'notin','∋':'ni','∏':'prod','∑':'sum','−':'minus','∗':'lowast','√':'radic','∝':'prop','∞':'infin','∠':'ang','∧':'and','∨':'or','∩':'cap','∪':'cup','∫':'int','∴':'there4','∼':'sim','≅':'cong','≈':'asymp','≠':'ne','≡':'equiv','≤':'le','≥':'ge','⊂':'sub','⊃':'sup','⊄':'nsub','⊆':'sube','⊇':'supe','⊕':'oplus','⊗':'otimes','⊥':'perp','⋅':'sdot','◊':'loz','♠':'spades','♣':'clubs','♥':'hearts','♦':'diams','"':'quot','ˆ':'circ','˜':'tilde',' ':'ensp',' ':'emsp',' ':'thinsp','‌':'zwnj','‍':'zwj','‎':'lrm','‏':'rlm','–':'ndash','—':'mdash','‘':'lsquo','’':'rsquo','‚':'sbquo','“':'ldquo','”':'rdquo','„':'bdquo','†':'dagger','‡':'Dagger','‰':'permil','‹':'lsaquo','›':'rsaquo','€':'euro'};FCKXHtmlEntities.Chars='';for (var e in FCKXHtmlEntities.Entities) FCKXHtmlEntities.Chars+=e;if (FCKConfig.IncludeLatinEntities){var oEntities={'À':'Agrave','Á':'Aacute','Â':'Acirc','Ã':'Atilde','Ä':'Auml','Å':'Aring','Æ':'AElig','Ç':'Ccedil','È':'Egrave','É':'Eacute','Ê':'Ecirc','Ë':'Euml','Ì':'Igrave','Í':'Iacute','Î':'Icirc','Ï':'Iuml','Ð':'ETH','Ñ':'Ntilde','Ò':'Ograve','Ó':'Oacute','Ô':'Ocirc','Õ':'Otilde','Ö':'Ouml','Ø':'Oslash','Ù':'Ugrave','Ú':'Uacute','Û':'Ucirc','Ü':'Uuml','Ý':'Yacute','Þ':'THORN','ß':'szlig','à':'agrave','á':'aacute','â':'acirc','ã':'atilde','ä':'auml','å':'aring','æ':'aelig','ç':'ccedil','è':'egrave','é':'eacute','ê':'ecirc','ë':'euml','ì':'igrave','í':'iacute','î':'icirc','ï':'iuml','ð':'eth','ñ':'ntilde','ò':'ograve','ó':'oacute','ô':'ocirc','õ':'otilde','ö':'ouml','ø':'oslash','ù':'ugrave','ú':'uacute','û':'ucirc','ü':'uuml','ý':'yacute','þ':'thorn','ÿ':'yuml','Œ':'OElig','œ':'oelig','Š':'Scaron','š':'scaron','Ÿ':'Yuml'};for (var e in oEntities){FCKXHtmlEntities.Entities[e]=oEntities[e];FCKXHtmlEntities.Chars+=e;};oEntities=null;};if (FCKConfig.IncludeGreekEntities){var oEntities={'Α':'Alpha','Β':'Beta','Γ':'Gamma','Δ':'Delta','Ε':'Epsilon','Ζ':'Zeta','Η':'Eta','Θ':'Theta','Ι':'Iota','Κ':'Kappa','Λ':'Lambda','Μ':'Mu','Ν':'Nu','Ξ':'Xi','Ο':'Omicron','Π':'Pi','Ρ':'Rho','Σ':'Sigma','Τ':'Tau','Υ':'Upsilon','Φ':'Phi','Χ':'Chi','Ψ':'Psi','Ω':'Omega','α':'alpha','β':'beta','γ':'gamma','δ':'delta','ε':'epsilon','ζ':'zeta','η':'eta','θ':'theta','ι':'iota','κ':'kappa','λ':'lambda','μ':'mu','ν':'nu','ξ':'xi','ο':'omicron','π':'pi','ρ':'rho','ς':'sigmaf','σ':'sigma','τ':'tau','υ':'upsilon','φ':'phi','χ':'chi','ψ':'psi','ω':'omega'};for (var e in oEntities){FCKXHtmlEntities.Entities[e]=oEntities[e];FCKXHtmlEntities.Chars+=e;};oEntities=null;};FCKXHtmlEntities.EntitiesRegex=new RegExp('','');FCKXHtmlEntities.EntitiesRegex.compile('['+FCKXHtmlEntities.Chars+']|[^'+FCKXHtmlEntities.Chars+']+','g');}else{FCKXHtmlEntities.Entities={ ' ':'nbsp' };FCKXHtmlEntities.EntitiesRegex=/[ ]|[^ ]+/g;}
-var FCKXHtml=new Object();FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKXHtml.SpecialBlocks=new Array();this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);var D=this._GetMainXmlString();D=D.substr(7,D.length-15).trim();if (FCKBrowserInfo.IsGecko) D=D.replace(/<br\/>$/,'');D=D.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) D=D.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) D=FCKCodeFormatter.Format(D);for (var i=0;i<FCKXHtml.SpecialBlocks.length;i++){var E=new RegExp('___FCKsi___'+i);D=D.replace(E,FCKXHtml.SpecialBlocks[i]);};this.XML=null;return D};FCKXHtml._AppendAttribute=function(A,B,C){try{var D=this.XML.createAttribute(B);D.value=C?C:'';A.attributes.setNamedItem(D);}catch (e){};};FCKXHtml._AppendChildNodes=function(A,B,C){var D=0;if (B.hasChildNodes()){var E=B.childNodes;for (var i=0;i<E.length;i++){if (this._AppendNode(A,E[i])) D++;};};if (D==0){if (C&&FCKConfig.FillEmptyBlocks){this._AppendEntity(A,'nbsp');return;};if (!FCKRegexLib.EmptyElements.test(B.nodeName)) A.appendChild(this.XML.createTextNode(''));};};FCKXHtml._AppendNode=function(A,B){switch (B.nodeType){case 1:if (B.getAttribute('_fckfakelement')) return FCKXHtml._AppendNode(A,FCK.GetRealElement(B));if (FCKBrowserInfo.IsGecko&&B.hasAttribute('_moz_editor_bogus_node')) return false;if (B.getAttribute('_fckdelete')) return false;var C=B.nodeName;if (!FCKRegexLib.ElementName.test(C)) return false;C=C.toLowerCase();if (FCKBrowserInfo.IsGecko&&C=='br'&&B.hasAttribute('type')&&B.getAttribute('type',2)=='_moz') return false;if (B._fckxhtmljob&&B._fckxhtmljob==FCKXHtml.CurrentJobNum) return false;else B._fckxhtmljob=FCKXHtml.CurrentJobNum;var D=this._CreateNode(C);FCKXHtml._AppendAttributes(A,B,D,C);var E=FCKXHtml.TagProcessors[C];if (E){D=E(D,B);if (!D) break;}else this._AppendChildNodes(D,B,FCKRegexLib.BlockElements.test(C));A.appendChild(D);break;case 3:this._AppendTextNode(A,B.nodeValue.replaceNewLineChars(' '));break;case 8:try { A.appendChild(this.XML.createComment(B.nodeValue));}catch (e) { /* Do nothing... probably this is a wrong format comment. */};break;default:A.appendChild(this.XML.createComment("Element not supported - Type: "+B.nodeType+" Name: "+B.nodeName));break;};return true;};if (FCKConfig.ForceStrongEm){FCKXHtml._CreateNode=function(A){switch (A){case 'b':A='strong';break;case 'i':A='em';break;};return this.XML.createElement(A);};}else{FCKXHtml._CreateNode=function(A){return this.XML.createElement(A);};};FCKXHtml._AppendSpecialItem=function(A){return '___FCKsi___'+FCKXHtml.SpecialBlocks.addItem(A);};FCKXHtml._AppendTextNode=function(A,B){var C=B.match(FCKXHtmlEntities.EntitiesRegex);if (C){for (var i=0;i<C.length;i++){if (C[i].length==1){var D=FCKXHtmlEntities.Entities[C[i]];if (D!=null){this._AppendEntity(A,D);continue;};};A.appendChild(this.XML.createTextNode(C[i]));};};};FCKXHtml.TagProcessors=new Object();FCKXHtml.TagProcessors['img']=function(A){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');return A;};FCKXHtml.TagProcessors['script']=function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;};FCKXHtml.TagProcessors['style']=function(A,B){if (B.getAttribute('_fcktemp')) return null;if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.innerHTML)));return A;};FCKXHtml.TagProcessors['title']=function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;};FCKXHtml.TagProcessors['base']=function(A,B){if (B.getAttribute('_fcktemp')) return null;return A;};FCKXHtml.TagProcessors['link']=function(A,B){if (B.getAttribute('_fcktemp')) return null;return A;};FCKXHtml.TagProcessors['table']=function(A,B){var C=A.attributes.getNamedItem('class');if (C&&FCKRegexLib.TableBorderClass.test(C.nodeValue)){var D=C.nodeValue.replace(FCKRegexLib.TableBorderClass,'');if (D.length==0) A.attributes.removeNamedItem('class');else FCKXHtml._AppendAttribute(A,'class',D);};FCKXHtml._AppendChildNodes(A,B,false);return A;}
-FCKXHtml._GetMainXmlString=function(){return this.MainNode.xml;};FCKXHtml._AppendEntity=function(A,B){A.appendChild(this.XML.createEntityReference(B));};FCKXHtml._AppendAttributes=function(A,B,C,D){var E=B.attributes;for (var n=0;n<E.length;n++){var F=E[n];if (F.specified){var G=F.nodeName.toLowerCase();var H;if (G=='_fckxhtmljob') continue;else if (G=='style') H=B.style.cssText;else if (G=='class'||G.indexOf('on')==0) H=F.nodeValue;else if (D=='body'&&G=='contenteditable') continue;else if (F.nodeValue===true) H=G;else if (!(H=B.getAttribute(G,2))) H=F.nodeValue;if (FCKConfig.ForceSimpleAmpersand&&H.replace) H=H.replace(/&/g,'___FCKAmp___');this._AppendAttribute(C,G,H);};};};FCKXHtml.TagProcessors['meta']=function(A,B){var C=A.attributes.getNamedItem('http-equiv');if (C==null||C.value.length==0){var D=B.outerHTML.match(FCKRegexLib.MetaHttpEquiv);if (D){D=D[1];FCKXHtml._AppendAttribute(A,'http-equiv',D);};};return A;};FCKXHtml.TagProcessors['font']=function(A,B){if (A.attributes.length==0) A=FCKXHtml.XML.createDocumentFragment();FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['input']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);if (B.value&&!A.attributes.getNamedItem('value')) FCKXHtml._AppendAttribute(A,'value',B.value);return A;};FCKXHtml.TagProcessors['option']=function(A,B){if (B.selected&&!A.attributes.getNamedItem('selected')) FCKXHtml._AppendAttribute(A,'selected','selected');FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['abbr']=function(A,B){var C=B.nextSibling;while (true){if (C&&C.nodeName!='/ABBR'){FCKXHtml._AppendNode(A,C);C=C.nextSibling;}else break;};return A;};FCKXHtml.TagProcessors['area']=function(A,B){if (!A.attributes.getNamedItem('coords')){var C=B.getAttribute('coords',2);if (C&&C!='0,0,0') FCKXHtml._AppendAttribute(A,'coords',C);};if (!A.attributes.getNamedItem('shape')){var C=B.getAttribute('shape',2);if (C&&C.length>0) FCKXHtml._AppendAttribute(A,'shape',C);};return A;};FCKXHtml.TagProcessors['label']=function(A,B){if (B.htmlFor.length>0) FCKXHtml._AppendAttribute(A,'for',B.htmlFor);FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['form']=function(A,B){if (B.acceptCharset.length>0&&B.acceptCharset!='UNKNOWN') FCKXHtml._AppendAttribute(A,'accept-charset',B.acceptCharset);if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['textarea']=FCKXHtml.TagProcessors['select']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);FCKXHtml._AppendChildNodes(A,B);return A;} 
-var FCKCodeFormatter;if (!(FCKCodeFormatter=NS.FCKCodeFormatter)){FCKCodeFormatter=NS.FCKCodeFormatter=new Object();FCKCodeFormatter.Regex=new Object();FCKCodeFormatter.Regex.BlocksOpener=/\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|AREA|OPTION)[^\>]*\>/gi;FCKCodeFormatter.Regex.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|AREA|OPTION)[^\>]*\>/gi;FCKCodeFormatter.Regex.NewLineTags=/\<(BR|HR)[^\>]\>/gi;FCKCodeFormatter.Regex.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;FCKCodeFormatter.Regex.LineSplitter=/\s*\n+\s*/g;FCKCodeFormatter.Regex.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/\>]/i;FCKCodeFormatter.Regex.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \>]/i;FCKCodeFormatter.Regex.FormatIndentatorRemove=new RegExp(FCKConfig.FormatIndentator);FCKCodeFormatter.Format=function(A){var B=A.replace(this.Regex.BlocksOpener,'\n$&');;B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;i<D.length;i++){var E=D[i];if (E.length==0) continue;if (this.Regex.DecreaseIndent.test(E)) C=C.replace(this.Regex.FormatIndentatorRemove,'');B+=C+E+'\n';if (this.Regex.IncreaseIndent.test(E)) C+=FCKConfig.FormatIndentator;};return B.trim();};}
-var FCKUndo=new Object();FCKUndo.SavedData=new Array();FCKUndo.CurrentIndex=-1;FCKUndo.TypesCount=FCKUndo.MaxTypes=25;FCKUndo.Typing=false;FCKUndo.SaveUndoStep=function(){FCKUndo.SavedData=FCKUndo.SavedData.slice(0,FCKUndo.CurrentIndex+1);var A=FCK.EditorDocument.body.innerHTML;if (FCKUndo.CurrentIndex>=0&&A==FCKUndo.SavedData[FCKUndo.CurrentIndex][0]) return;if (FCKUndo.CurrentIndex+1>=FCKConfig.MaxUndoLevels) FCKUndo.SavedData.shift();else FCKUndo.CurrentIndex++;var B;if (FCK.EditorDocument.selection.type=='Text') B=FCK.EditorDocument.selection.createRange().getBookmark();FCKUndo.SavedData[FCKUndo.CurrentIndex]=[A,B];FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.CheckUndoState=function(){return (FCKUndo.Typing||FCKUndo.CurrentIndex>0);};FCKUndo.CheckRedoState=function(){return (!FCKUndo.Typing&&FCKUndo.CurrentIndex<(FCKUndo.SavedData.length-1));};FCKUndo.Undo=function(){if (FCKUndo.CheckUndoState()){if (FCKUndo.CurrentIndex==(FCKUndo.SavedData.length-1)){FCKUndo.SaveUndoStep();};FCKUndo._ApplyUndoLevel(--FCKUndo.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");};};FCKUndo.Redo=function(){if (FCKUndo.CheckRedoState()){FCKUndo._ApplyUndoLevel(++FCKUndo.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");};};FCKUndo._ApplyUndoLevel=function(A){var B=FCKUndo.SavedData[A];if (!B) return;FCK.SetInnerHtml(B[0]);if (B[1]){var C=FCK.EditorDocument.selection.createRange();C.moveToBookmark(B[1]);C.select();};FCKUndo.TypesCount=0;FCKUndo.Typing=false;}
-FCK.Events=new FCKEvents(FCK);FCK.Toolbar=null;FCK.TempBaseTag=FCKConfig.BaseHref.length>0?'<base href="'+FCKConfig.BaseHref+'" _fcktemp="true"></base>':'';FCK.StartEditor=function(){this.EditorWindow=window.frames['eEditorArea'];this.EditorDocument=this.EditorWindow.document;this.SetHTML(FCKTools.GetLinkedFieldValue());FCKTools.AttachToLinkedFieldFormSubmit(this.UpdateLinkedField);FCKUndo.SaveUndoStep();this.SetStatus(FCK_STATUS_ACTIVE);};function Window_OnFocus(){FCK.Focus();};FCK.SetStatus=function(A){this.Status=A;if (A==FCK_STATUS_ACTIVE){window.onfocus=window.document.body.onfocus=Window_OnFocus;if (FCKConfig.StartupFocus) FCK.Focus();if (FCKBrowserInfo.IsIE) FCKScriptLoader.AddScript('js/fckeditorcode_ie_2.js');else FCKScriptLoader.AddScript('js/fckeditorcode_gecko_2.js');};this.Events.FireEvent('OnStatusChange',A);};FCK.GetHTML=function(A){var B;if (FCK.EditMode==FCK_EDITMODE_WYSIWYG){if (FCKBrowserInfo.IsIE) B=this.EditorDocument.body.innerHTML.replace(FCKRegexLib.ToReplace,'$1');else B=this.EditorDocument.body.innerHTML;}else B=document.getElementById('eSourceField').value;if (A) return FCKCodeFormatter.Format(B);else return B;};FCK.GetXHTML=function(A){var B=(FCK.EditMode==FCK_EDITMODE_SOURCE);if (B) this.SwitchEditMode();var C;if (FCKConfig.FullPage) C=FCKXHtml.GetXHTML(this.EditorDocument.getElementsByTagName('html')[0],true,A);else{if (FCKConfig.IgnoreEmptyParagraphValue&&this.EditorDocument.body.innerHTML=='<P>&nbsp;</P>') C='';else C=FCKXHtml.GetXHTML(this.EditorDocument.body,false,A);};if (B) this.SwitchEditMode();if (FCKBrowserInfo.IsIE) C=C.replace(FCKRegexLib.ToReplace,'$1');if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) C=FCK.DocTypeDeclaration+'\n'+C;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) C=FCK.XmlDeclaration+'\n'+C;return FCKConfig.ProtectedSource.Revert(C);};FCK.UpdateLinkedField=function(){if (FCKConfig.EnableXHTML) FCK.LinkedField.value=FCK.GetXHTML(FCKConfig.FormatOutput);else FCK.LinkedField.value=FCK.GetHTML(FCKConfig.FormatOutput);FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');};FCK.ShowContextMenu=function(x,y){if (this.Status!=FCK_STATUS_COMPLETE) return;FCKContextMenu.Show(x,y);this.Events.FireEvent("OnContextMenu");};FCK.RegisteredDoubleClickHandlers=new Object();FCK.OnDoubleClick=function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName];if (B) B(A);};FCK.RegisterDoubleClickHandler=function(A,B){FCK.RegisteredDoubleClickHandlers[B.toUpperCase()]=A;};FCK.OnAfterSetHTML=function(){var A,i=0;while((A=FCKDocumentProcessors[i++])) A.ProcessDocument(FCK.EditorDocument);this.Events.FireEvent('OnAfterSetHTML');};var FCKDocumentProcessors=new Array();var FCKDocumentProcessors_CreateFakeImage=function(A,B){var C=FCK.EditorDocument.createElement('IMG');C.className=A;C.src=FCKConfig.FullBasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};var FCKAnchorsProcessor=new Object();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0&&(!C.getAttribute('href')||C.getAttribute('href').length==0)){var D=FCKDocumentProcessors_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);};};};FCKDocumentProcessors.addItem(FCKAnchorsProcessor);var FCKPageBreaksProcessor=new Object();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('CENTER');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.innerHTML.trim().length==0){var D=FCKDocumentProcessors_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);};};};FCKDocumentProcessors.addItem(FCKPageBreaksProcessor);var FCKFlashProcessor=new Object();FCKFlashProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('EMBED');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.src.endsWith('.swf',true)){var D=FCKDocumentProcessors_CreateFakeImage('FCK__Flash',C.cloneNode(true));D.setAttribute('_fckflash','true',0);FCKFlashProcessor.RefreshView(D,C);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);};};};FCKFlashProcessor.RefreshView=function(A,B){if (B.width>0) A.style.width=FCKTools.ConvertHtmlSizeToStyle(B.width);if (B.height>0) A.style.height=FCKTools.ConvertHtmlSizeToStyle(B.height);};FCKDocumentProcessors.addItem(FCKFlashProcessor);FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};
-FCK.Description="FCKeditor for Internet Explorer 5.5+";FCK._BehaviorsStyle='<style type="text/css" _fcktemp="true">\ INPUT { behavior:url(' + FCKConfig.FullBasePath + 'css/behaviors/hiddenfield.htc);} ';if (FCKConfig.ShowBorders) FCK._BehaviorsStyle+='TABLE { behavior: url('+FCKConfig.FullBasePath+'css/behaviors/showtableborders.htc) ; }';var sNoHandlers='INPUT, TEXTAREA, SELECT, .FCK__Anchor, .FCK__PageBreak';if (FCKConfig.DisableImageHandles) sNoHandlers+=', IMG';if (FCKConfig.DisableTableHandles) sNoHandlers+=', TABLE';FCK._BehaviorsStyle+=sNoHandlers+' { behavior: url('+FCKConfig.FullBasePath+'css/behaviors/disablehandles.htc) ; }';FCK._BehaviorsStyle+='</style>';function Doc_OnMouseUp(){if (FCK.EditorWindow.event.srcElement.tagName=='HTML'){FCK.Focus();FCK.EditorWindow.event.cancelBubble=true;FCK.EditorWindow.event.returnValue=false;};};function Doc_OnPaste(){if (FCK.Status==FCK_STATUS_COMPLETE) return FCK.Events.FireEvent("OnPaste");else return false;};function Doc_OnContextMenu(){var e=FCK.EditorWindow.event;FCK.ShowContextMenu(e.screenX,e.screenY);return false;};function Doc_OnKeyDown(){var e=FCK.EditorWindow.event;switch (e.keyCode){case 13:if (FCKConfig.UseBROnCarriageReturn&&!(e.ctrlKey||e.altKey||e.shiftKey)){Doc_OnKeyDownUndo();if (FCK.EditorDocument.queryCommandState('InsertOrderedList')||FCK.EditorDocument.queryCommandState('InsertUnorderedList')) return true;FCK.InsertHtml('<br>&nbsp;');var oRange=FCK.EditorDocument.selection.createRange();oRange.moveStart('character',-1);oRange.select();FCK.EditorDocument.selection.clear();return false;};break;case 9:if (FCKConfig.TabSpaces>0&&!(e.ctrlKey||e.altKey||e.shiftKey)){Doc_OnKeyDownUndo();FCK.InsertHtml(window.FCKTabHTML);return false;};break;case 90:if (e.ctrlKey&&!(e.altKey||e.shiftKey)){FCKUndo.Undo();return false;};break;case 89:if (e.ctrlKey&&!(e.altKey||e.shiftKey)){FCKUndo.Redo();return false;};break;};if (!(e.keyCode>=16&&e.keyCode<=18)) Doc_OnKeyDownUndo();return true;};function Doc_OnKeyDownUndo(){if (!FCKUndo.Typing){FCKUndo.SaveUndoStep();FCKUndo.Typing=true;FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.TypesCount++;if (FCKUndo.TypesCount>FCKUndo.MaxTypes){FCKUndo.TypesCount=0;FCKUndo.SaveUndoStep();};};function Doc_OnDblClick(){FCK.OnDoubleClick(FCK.EditorWindow.event.srcElement);FCK.EditorWindow.event.cancelBubble=true;};function Doc_OnSelectionChange(){FCK.Events.FireEvent("OnSelectionChange");};FCK.InitializeBehaviors=function(A){this.EditorDocument.attachEvent('onmouseup',Doc_OnMouseUp);this.EditorDocument.body.attachEvent('onpaste',Doc_OnPaste);this.EditorDocument.attachEvent('oncontextmenu',Doc_OnContextMenu);if (FCKConfig.TabSpaces>0){window.FCKTabHTML='';for (i=0;i<FCKConfig.TabSpaces;i++) window.FCKTabHTML+="&nbsp;";};this.EditorDocument.attachEvent("onkeydown",Doc_OnKeyDown);this.EditorDocument.attachEvent("ondblclick",Doc_OnDblClick);this.EditorDocument.attachEvent("onselectionchange",Doc_OnSelectionChange);};FCK.Focus=function(){try{if (FCK.EditMode==FCK_EDITMODE_WYSIWYG) FCK.EditorDocument.body.focus();else document.getElementById('eSourceField').focus();}catch(e) {};};FCK.SetHTML=function(A,B){if (B||FCK.EditMode==FCK_EDITMODE_WYSIWYG){A=FCKConfig.ProtectedSource.Protect(A);var C;if (FCKConfig.FullPage){var C=FCK._BehaviorsStyle+'<link href="'+FCKConfig.FullBasePath+'css/fck_internal.css'+'" rel="stylesheet" type="text/css" _fcktemp="true" />';if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) C+=FCK.TempBaseTag;C=A.replace(FCKRegexLib.HeadOpener,'$&'+C);}else{C=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"';if (FCKConfig.IEForceVScroll) C+=' style="overflow-y: scroll"';C+='><head><title></title>'+'<link href="'+FCKConfig.EditorAreaCSS+'" rel="stylesheet" type="text/css" />'+'<link href="'+FCKConfig.FullBasePath+'css/fck_internal.css'+'" rel="stylesheet" type="text/css" _fcktemp="true" />';C+=FCK._BehaviorsStyle;C+=FCK.TempBaseTag;C+='</head><body>'+A+'</body></html>';};this.EditorDocument.open('','_self','',true);this.EditorDocument.write(C);this.EditorDocument.close();this.InitializeBehaviors();this.EditorDocument.body.contentEditable=true;FCK.OnAfterSetHTML();}else document.getElementById('eSourceField').value=A;};FCK.InsertHtml=function(A){FCK.Focus();FCKUndo.SaveUndoStep();var B=FCK.EditorDocument.selection;if (B.type.toLowerCase()!="none") B.clear();B.createRange().pasteHTML(A);};FCK.SetInnerHtml=function(A){var B=FCK.EditorDocument;B.body.innerHTML='<div id="__fakeFCKRemove__">&nbsp;</div>'+A;B.getElementById('__fakeFCKRemove__').removeNode(true);}
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/js/fckeditorcode_ie_2.js 1.4.1.src/fckeditor/editor/js/fckeditorcode_ie_2.js
--- 1.4.0sr5-1.src/fckeditor/editor/js/fckeditorcode_ie_2.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/js/fckeditorcode_ie_2.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,56 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * This file has been compacted for best loading performance.
- */
-FCK.RedirectNamedCommands=new Object();FCK.ExecuteNamedCommand=function(A,B){FCKUndo.SaveUndoStep();if (FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};FCKUndo.SaveUndoStep();};FCK.GetNamedCommandState=function(A){try{if (!FCK.EditorDocument.queryCommandEnabled(A)) return FCK_TRISTATE_DISABLED;else return FCK.EditorDocument.queryCommandState(A)?FCK_TRISTATE_ON:FCK_TRISTATE_OFF;}catch (e){return FCK_TRISTATE_OFF;};};FCK.GetNamedCommandValue=function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==FCK_TRISTATE_DISABLED) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';};FCK.PasteFromWord=function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');};FCK.Preview=function(){var A=FCKConfig.ScreenWidth*0.8;var B=FCKConfig.ScreenHeight*0.7;var C=(FCKConfig.ScreenWidth-A)/2;var D=window.open('',null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+A+',height='+B+',left='+C);var E;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) E=FCK.GetXHTML().replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);else E=FCK.GetXHTML();}else{E=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'">'+'<head><title>'+FCKLang.Preview+'</title>'+'<link href="'+FCKConfig.EditorAreaCSS+'" rel="stylesheet" type="text/css" />'+FCK.TempBaseTag+'</head><body>'+FCK.GetXHTML()+'</body></html>';};D.document.write(E);D.document.close();};FCK.SwitchEditMode=function(){var A=(FCK.EditMode==FCK_EDITMODE_WYSIWYG);document.getElementById('eWysiwyg').style.display=A?'none':'';document.getElementById('eSource').style.display=A?'':'none';if (A){if (FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();document.getElementById('eSourceField').value=(FCKConfig.EnableXHTML&&FCKConfig.EnableSourceXHTML?FCK.GetXHTML(FCKConfig.FormatSource):FCK.GetHTML(FCKConfig.FormatSource));}else FCK.SetHTML(FCK.GetHTML(),true);FCK.EditMode=A?FCK_EDITMODE_SOURCE:FCK_EDITMODE_WYSIWYG;FCKToolbarSet.RefreshModeState();FCK.Focus();};FCK.CreateElement=function(A){var e=FCK.EditorDocument.createElement(A);return FCK.InsertElementAndGetIt(e);};FCK.InsertElementAndGetIt=function(e){e.setAttribute('__FCKTempLabel',1);this.InsertElement(e);var A=FCK.EditorDocument.getElementsByTagName(e.tagName);for (var i=0;i<A.length;i++){if (A[i].getAttribute('__FCKTempLabel')){A[i].removeAttribute('__FCKTempLabel');return A[i];};};return null;};
-FCK.Paste=function(){if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return false;}else if (FCKConfig.AutoDetectPasteFromWord){var A=FCK.GetClipboardHTML();var B=/<\w[^>]* class="?MsoNormal"?/gi;if (B.test(A)){if (confirm(FCKLang["PasteWordConfirm"])){FCK.PasteFromWord();return false;};};}else return true;};FCK.PasteAsPlainText=function(){var A=FCKTools.HTMLEncode(clipboardData.getData("Text"));A=A.replace(/\n/g,'<BR>');this.InsertHtml(A);};FCK.InsertElement=function(A){FCK.InsertHtml(A.outerHTML);};FCK.GetClipboardHTML=function(){var A=document.getElementById('___FCKHiddenDiv');if (!A){var A=document.createElement('DIV');A.id='___FCKHiddenDiv';A.style.visibility='hidden';A.style.overflow='hidden';A.style.position='absolute';A.style.width=1;A.style.height=1;document.body.appendChild(A);};A.innerHTML='';var C=document.body.createTextRange();C.moveToElementText(A);C.execCommand('Paste');var D=A.innerHTML;A.innerHTML='';return D;};FCK.AttachToOnSelectionChange=function(A){this.Events.AttachEvent('OnSelectionChange',A);};FCK.CreateLink=function(A){FCK.ExecuteNamedCommand('Unlink');if (A.length>0){var B='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',B);var C=this.EditorDocument.links;for (i=0;i<C.length;i++){if (C[i].href==B){C[i].href=A;return C[i];};};};};
-var FCKSelection=new Object();FCK.Selection=FCKSelection;
-FCKSelection.GetType=function(){return FCK.EditorDocument.selection.type;};FCKSelection.GetSelectedElement=function(){if (this.GetType()=='Control'){var A=FCK.EditorDocument.selection.createRange();if (A&&A.item) return FCK.EditorDocument.selection.createRange().item(0);};};FCKSelection.GetParentElement=function(){switch (this.GetType()){case 'Control':return FCKSelection.GetSelectedElement().parentElement;case 'None':return;default:return FCK.EditorDocument.selection.createRange().parentElement();};};FCKSelection.SelectNode=function(A){FCK.Focus();FCK.EditorDocument.selection.empty();var B=FCK.EditorDocument.selection.createRange();B.moveToElementText(A);B.select();};FCKSelection.Collapse=function(A){FCK.Focus();var B=FCK.EditorDocument.selection.createRange();B.collapse(A==null||A===true);B.select();};FCKSelection.HasAncestorNode=function(A){var B;if (FCK.EditorDocument.selection.type=="Control"){B=this.GetSelectedElement();}else{var C=FCK.EditorDocument.selection.createRange();B=C.parentElement();};while (B){if (B.tagName==A) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B;if (FCK.EditorDocument.selection.type=="Control"){var C=FCK.EditorDocument.selection.createRange();for (i=0;i<C.length;i++){if (C(i).parentNode){B=C(i).parentNode;break;};};}else{var C=FCK.EditorDocument.selection.createRange();B=C.parentElement();};while (B&&B.nodeName!=A) B=B.parentNode;return B;};FCKSelection.Delete=function(){var A=FCK.EditorDocument.selection;if (A.type.toLowerCase()!="none"){A.clear();};return A;};
-var FCKPanel=function(A){this.Window=A?A:window;};function FCKPanel_OnContextMenu() { return false;};FCKPanel.prototype.Create=function(){this._Popup=this.Window.createPopup();this.Document=this._Popup.document;aCleanupDocs[aCleanupDocs.length]=this.Document;this.Document.oncontextmenu=FCKPanel_OnContextMenu;if (this.StyleSheet) FCKTools.AppendStyleSheet(this.Document,this.StyleSheet);this.PanelDiv=this.Document.body.appendChild(this.Document.createElement('DIV'));this.PanelDiv.className='FCK_Panel';this.Created=true;};FCKPanel.prototype.Show=function(A,B,C,D,E,F){if (!this.Created) this._Create();this._Popup.show(A,B,0,0,C);if (D==null||(F&&D>this.PanelDiv.offsetWidth)) var G=this.PanelDiv.offsetWidth;else var G=D;if (E==null||(F&&E>this.PanelDiv.offsetHeight)) var I=this.PanelDiv.offsetHeight;else var I=E;this.PanelDiv.style.height=I;this._Popup.show(A,B,G,I,C);};FCKPanel.prototype.Hide=function(){if (this._Popup) this._Popup.hide();}
-var FCKTableHandler=new Object();FCKTableHandler.InsertRow=function(){var A=FCKSelection.MoveToAncestorNode("TR");if (!A) return;var B=A.cloneNode(true);A.parentNode.insertBefore(B,A);FCKTableHandler.ClearRow(A);};FCKTableHandler.DeleteRows=function(A){if (!A) A=FCKSelection.MoveToAncestorNode("TR");if (!A) return;var B=FCKTools.GetElementAscensor(A,'TABLE');if (B.rows.length==1){FCKTableHandler.DeleteTable(B);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A) A=FCKSelection.MoveToAncestorNode("TABLE");if (!A) return;A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(){var A=FCKSelection.MoveToAncestorNode("TD");if (!A) A=FCKSelection.MoveToAncestorNode("TH");if (!A) return;var B=FCKTools.GetElementAscensor(A,'TABLE');var C=A.cellIndex+1;for (var i=0;i<B.rows.length;i++){var D=B.rows[i];if (D.cells.length<C) continue;A=D.cells[C-1].cloneNode(false);if (FCKBrowserInfo.IsGecko) A.innerHTML=FCKBrowserInfo.IsGecko?GECKO_BOGUS:'';var E=D.cells[C];if (E) D.insertBefore(A,E);else D.appendChild(A);};};FCKTableHandler.DeleteColumns=function(){var A=FCKSelection.MoveToAncestorNode("TD");if (!A) return;var B=FCKTools.GetElementAscensor(A,'TABLE');var C=A.cellIndex;for (var i=B.rows.length-1;i>=0;i--){var D=B.rows[i];if (C==0&&D.cells.length==1){FCKTableHandler.DeleteRows(D);continue;};if (D.cells[C]) D.removeChild(D.cells[C]);};};FCKTableHandler.InsertCell=function(A){var B=A?A:FCKSelection.MoveToAncestorNode("TD");if (!B) return;var C=FCK.EditorDocument.createElement("TD");if (FCKBrowserInfo.IsGecko) C.innerHTML=GECKO_BOGUS;if (B.cellIndex==B.parentNode.cells.lenght-1){B.parentNode.appendChild(C);}else{B.parentNode.insertBefore(C,B.nextSibling);};return C;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(FCKTools.GetElementAscensor(A,'TR'));return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);};};FCKTableHandler.MergeCells=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<2) return;if (A[0].parentNode!=A[A.length-1].parentNode) return;var B=isNaN(A[0].colSpan)?1:A[0].colSpan;var C='';for (var i=A.length-1;i>0;i--){B+=isNaN(A[i].colSpan)?1:A[i].colSpan;C=A[i].innerHTML+C;FCKTableHandler.DeleteCell(A[i]);};A[0].colSpan=B;A[0].innerHTML+=C;};FCKTableHandler.SplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=this._CreateTableMap(A[0].parentNode.parentNode);var C=FCKTableHandler._GetCellIndexSpan(B,A[0].parentNode.rowIndex,A[0]);var D=this._GetCollumnCells(B,C);for (var i=0;i<D.length;i++){if (D[i]==A[0]){var E=this.InsertCell(A[0]);if (!isNaN(A[0].rowSpan)&&A[0].rowSpan>1) E.rowSpan=A[0].rowSpan;}else{if (isNaN(D[i].colSpan)) D[i].colSpan=2;else D[i].colSpan+=1;};};};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length<B+1) return null;var D=A[B];for (var c=0;c<D.length;c++){if (D[c]==C) return c;};return null;};FCKTableHandler._GetCollumnCells=function(A,B){var C=new Array();for (var r=0;r<A.length;r++){var D=A[r][B];if (D&&(C.length==0||C[C.length-1]!=D)) C[C.length]=D;};return C;};FCKTableHandler._CreateTableMap=function(A){var B=A.rows;var r=-1;var C=new Array();for (var i=0;i<B.length;i++){r++;if (!C[r]) C[r]=new Array();var c=-1;for (var j=0;j<B[i].cells.length;j++){var D=B[i].cells[j];c++;while (C[r][c]) c++;var E=isNaN(D.colSpan)?1:D.colSpan;var F=isNaN(D.rowSpan)?1:D.rowSpan;for (var G=0;G<F;G++){if (!C[r+G]) C[r+G]=new Array();for (var H=0;H<E;H++){C[r+G][c+H]=B[i].cells[j];};};c+=E-1;};};return C;};FCKTableHandler.ClearRow=function(A){var B=A.cells;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsGecko) B[i].innerHTML=GECKO_BOGUS;else B[i].innerHTML='';};}
-FCKTableHandler.GetSelectedCells=function(){var A=new Array();var B=FCK.EditorDocument.selection.createRange();var C=B.parentElement();if (C&&C.tagName=="TD") A[0]=C;else{var C=FCKSelection.MoveToAncestorNode("TABLE");if (C){for (var i=0;i<C.cells.length;i++){var E=FCK.EditorDocument.selection.createRange();E.moveToElementText(C.cells[i]);if (B.inRange(E)||(B.compareEndPoints('StartToStart',E)>=0&&B.compareEndPoints('StartToEnd',E)<=0)||(B.compareEndPoints('EndToStart',E)>=0&&B.compareEndPoints('EndToEnd',E)<=0)){A[A.length]=C.cells[i];};};};};return A;};
-var FCKXml;if (!(FCKXml=NS.FCKXml)){FCKXml=NS.FCKXml=function(){this.Error=false;};FCKXml.prototype.LoadUrl=function(A){this.Error=false;var B=FCKTools.CreateXmlObject('XmlHttp');if (!B){this.Error=true;return;};B.open("GET",A,false);B.send(null);if (B.status==200||B.status==304) this.DOMDocument=B.responseXML;else if (B.status==0&&B.readyState==4){this.DOMDocument=FCKTools.CreateXmlObject('DOMDocument');this.DOMDocument.async=false;this.DOMDocument.resolveExternals=false;this.DOMDocument.loadXML(B.responseText);}else{this.Error=true;alert('Error loading "'+A+'"');};};FCKXml.prototype.SelectNodes=function(A,B){if (this.Error) return new Array();if (B) return B.selectNodes(A);else return this.DOMDocument.selectNodes(A);};FCKXml.prototype.SelectSingleNode=function(A,B){if (this.Error) return;if (B) return B.selectSingleNode(A);else return this.DOMDocument.selectSingleNode(A);};}
-var FCKStyleDef=function(A,B){this.Name=A;this.Element=B.toUpperCase();this.IsObjectElement=FCKRegexLib.ObjectElements.test(this.Element);this.Attributes=new Object();};FCKStyleDef.prototype.AddAttribute=function(A,B){this.Attributes[A]=B;};FCKStyleDef.prototype.GetOpenerTag=function(){var s='<'+this.Element;for (var a in this.Attributes) s+=' '+a+'="'+this.Attributes[a]+'"';return s+'>';};FCKStyleDef.prototype.GetCloserTag=function(){return '</'+this.Element+'>';};FCKStyleDef.prototype.RemoveFromSelection=function(){if (FCKSelection.GetType()=='Control') this._RemoveMe(FCKSelection.GetSelectedElement());else this._RemoveMe(FCKSelection.GetParentElement());}
-FCKStyleDef.prototype.ApplyToSelection=function(){var A=FCK.EditorDocument.selection;if (A.type=='Text'){var B=A.createRange();var e=document.createElement(this.Element);e.innerHTML=B.htmlText;this._AddAttributes(e);this._RemoveDuplicates(e);B.pasteHTML(e.outerHTML);}else if (A.type=='Control'){var C=FCKSelection.GetSelectedElement();if (C.tagName==this.Element) this._AddAttributes(C);};};FCKStyleDef.prototype._AddAttributes=function(A){for (var a in this.Attributes){if (a.toLowerCase()=='style') A.style.cssText=this.Attributes[a];else A.setAttribute(a,this.Attributes[a],0);};};FCKStyleDef.prototype._RemoveDuplicates=function(A){for (var i=0;i<A.children.length;i++){var B=A.children[i];this._RemoveDuplicates(B);if (this.IsEqual(B)){B.insertAdjacentHTML('beforeBegin',B.innerHTML);B.parentElement.removeChild(B);};};};FCKStyleDef.prototype.IsEqual=function(e){if (e.tagName!=this.Element) return false;for (var a in this.Attributes){switch (a.toLowerCase()){case 'style':if (e.style.cssText.toLowerCase()!=this.Attributes[a].toLowerCase()) return false;break;case 'class':if (e.getAttribute('className',0)!=this.Attributes[a]) return false;break;default:if (e.getAttribute(a,0)!=this.Attributes[a]) return false;};};return true;};FCKStyleDef.prototype._RemoveMe=function(A){if (!A) return;var B=A.parentElement;if (this.IsEqual(A)){if (this.IsObjectElement){for (var a in this.Attributes){switch (a.toLowerCase()){case 'class':A.removeAttribute('className',0);break;default:A.removeAttribute(a,0);};};return;}else FCKTools.RemoveOuterTags(A);};this._RemoveMe(B);}
-var FCKStylesLoader=function(){this.Styles=new Object();this.StyleGroups=new Object();this.Loaded=false;this.HasObjectElements=false;};FCKStylesLoader.prototype.Load=function(A){var B=new FCKXml();B.LoadUrl(A);var C=B.SelectNodes('Styles/Style');for (var i=0;i<C.length;i++){var D=C[i].attributes.getNamedItem('element').value.toUpperCase();var E=new FCKStyleDef(C[i].attributes.getNamedItem('name').value,D);if (E.IsObjectElement) this.HasObjectElements=true;var F=B.SelectNodes('Attribute',C[i]);for (var j=0;j<F.length;j++){var G=F[j].attributes.getNamedItem('name').value;var H=F[j].attributes.getNamedItem('value').value;if (G.toLowerCase()=='style'){var I=document.createElement('SPAN');I.style.cssText=H;H=I.style.cssText;};E.AddAttribute(G,H);};this.Styles[E.Name]=E;var J=this.StyleGroups[D];if (J==null){this.StyleGroups[D]=new Array();J=this.StyleGroups[D];};J[J.length]=E;};this.Loaded=true;}
-var FCKNamedCommand=function(A){this.Name=A;};FCKNamedCommand.prototype.Execute=function(){FCK.ExecuteNamedCommand(this.Name);};FCKNamedCommand.prototype.GetState=function(){return FCK.GetNamedCommandState(this.Name);};
-var FCKDialogCommand=function(A,B,C,D,E,F,G){this.Name=A;this.Title=B;this.Url=C;this.Width=D;this.Height=E;this.GetStateFunction=F;this.GetStateParam=G;};FCKDialogCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_'+this.Name,this.Title,this.Url,this.Width,this.Height);};FCKDialogCommand.prototype.GetState=function(){if (this.GetStateFunction) return this.GetStateFunction(this.GetStateParam);else return FCK_TRISTATE_OFF;};var FCKUndefinedCommand=function(){this.Name='Undefined';};FCKUndefinedCommand.prototype.Execute=function(){alert(FCKLang.NotImplemented);};FCKUndefinedCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKFontNameCommand=function(){this.Name='FontName';};FCKFontNameCommand.prototype.Execute=function(A){if (A==null||A==""){}else FCK.ExecuteNamedCommand('FontName',A);};FCKFontNameCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FontName');};var FCKFontSizeCommand=function(){this.Name='FontSize';};FCKFontSizeCommand.prototype.Execute=function(A){if (typeof(A)=='string') A=parseInt(A);if (A==null||A==''){FCK.ExecuteNamedCommand('FontSize',3);}else FCK.ExecuteNamedCommand('FontSize',A);};FCKFontSizeCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FontSize');};var FCKFormatBlockCommand=function(){this.Name='FormatBlock';};FCKFormatBlockCommand.prototype.Execute=function(A){if (A==null||A=='') FCK.ExecuteNamedCommand('FormatBlock','<P>');else FCK.ExecuteNamedCommand('FormatBlock','<'+A+'>');};FCKFormatBlockCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FormatBlock');};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.LinkedField.form;if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};A.submit();};FCKSaveCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetHTML('');FCKUndo.Typing=true;};FCKNewPageCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsGecko){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==FCK_EDITMODE_WYSIWYG?FCK_TRISTATE_OFF:FCK_TRISTATE_ON);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsIE) FCKUndo.Undo();else FCK.ExecuteNamedCommand('Undo');};FCKUndoCommand.prototype.GetState=function(){if (FCKBrowserInfo.IsIE) return (FCKUndo.CheckUndoState()?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED);else return FCK.GetNamedCommandState('Undo');};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsIE) FCKUndo.Redo();else FCK.ExecuteNamedCommand('Redo');};FCKRedoCommand.prototype.GetState=function(){if (FCKBrowserInfo.IsIE) return (FCKUndo.CheckRedoState()?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED);else return FCK.GetNamedCommandState('Redo');};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){var A=FCK.EditorDocument.createElement('CENTER');A.style.pageBreakAfter='always';var B=FCKDocumentProcessors_CreateFakeImage('FCK__PageBreak',A);B=FCK.InsertElement(B);};FCKPageBreakCommand.prototype.GetState=function(){return 0;}
-var FCKSpellCheckCommand=function(){this.Name='SpellCheck';this.IsEnabled=(FCKConfig.SpellChecker=='ieSpell'||FCKConfig.SpellChecker=='SpellerPages');};FCKSpellCheckCommand.prototype.Execute=function(){switch (FCKConfig.SpellChecker){case 'ieSpell':this._RunIeSpell();break;case 'SpellerPages':FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','dialog/fck_spellerpages.html',440,480);break;};};FCKSpellCheckCommand.prototype._RunIeSpell=function(){try{var A=new ActiveXObject("ieSpell.ieSpellExtension");A.CheckAllLinkedDocuments(FCK.EditorDocument);}catch(e){if(e.number==-2146827859){if (confirm(FCKLang.IeSpellDownload)) window.open(FCKConfig.IeSpellDownloadUrl,'IeSpellDownload');}else alert('Error Loading ieSpell: '+e.message+' ('+e.number+')');};};FCKSpellCheckCommand.prototype.GetState=function(){return this.IsEnabled?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;}
-var FCKTextColorCommand=function(A){this.Name=A=='ForeColor'?'TextColor':'BGColor';this.Type=A;this._Panel=new FCKPanel();this._Panel.StyleSheet=FCKConfig.SkinPath+'fck_contextmenu.css';this._Panel.Create();this._CreatePanelBody(this._Panel.Document,this._Panel.PanelDiv);};FCKTextColorCommand.prototype.Execute=function(A,B,C){FCK._ActiveColorPanelType=this.Type;this._Panel.Show(A,B,C);};FCKTextColorCommand.prototype.SetColor=function(A){if (FCK._ActiveColorPanelType=='ForeColor') FCK.ExecuteNamedCommand('ForeColor',A);else if (FCKBrowserInfo.IsGecko) FCK.ExecuteNamedCommand('hilitecolor',A);else FCK.ExecuteNamedCommand('BackColor',A);delete FCK._ActiveColorPanelType;};FCKTextColorCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};function FCKTextColorCommand_OnMouseOver()	{ this.className='ColorSelected';};function FCKTextColorCommand_OnMouseOut()	{ this.className='ColorDeselected';};function FCKTextColorCommand_OnClick(){this.className='ColorDeselected';this.Command.SetColor('#'+this.Color);this.Command._Panel.Hide();};function FCKTextColorCommand_AutoOnClick(){this.className='ColorDeselected';this.Command.SetColor('');this.Command._Panel.Hide();};function FCKTextColorCommand_MoreOnClick(){this.className='ColorDeselected';this.Command._Panel.Hide();FCKDialog.OpenDialog('FCKDialog_Color',FCKLang.DlgColorTitle,'dialog/fck_colorselector.html',400,330,this.Command.SetColor);};FCKTextColorCommand.prototype._CreatePanelBody=function(A,B){function CreateSelectionDiv(){var C=A.createElement("DIV");C.className='ColorDeselected';C.onmouseover=FCKTextColorCommand_OnMouseOver;C.onmouseout=FCKTextColorCommand_OnMouseOut;return C;};var D=B.appendChild(A.createElement("TABLE"));D.style.tableLayout='fixed';D.cellPadding=0;D.cellSpacing=0;D.border=0;D.width=150;var E=D.insertRow(-1).insertCell(-1);E.colSpan=8;var C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table cellspacing="0" cellpadding="0" width="100%" border="0">\<tr>\<td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\<td nowrap width="100%" align="center" unselectable="on">' + FCKLang.ColorAutomatic + '</td>\</tr>\</table>';C.Command=this;C.onclick=FCKTextColorCommand_AutoOnClick;var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H<G.length){var I=D.insertRow(-1);for (var i=0;i<8&&H<G.length;i++,H++){C=I.insertCell(-1).appendChild(CreateSelectionDiv());C.Color=G[H];C.innerHTML='<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #'+G[H]+'"></div></div>';C.Command=this;C.onclick=FCKTextColorCommand_OnClick;};};E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">'+FCKLang.ColorMoreColors+'</td></tr></table>';C.Command=this;C.onclick=FCKTextColorCommand_MoreOnClick;}
-var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){return FCK.GetNamedCommandState('Paste');};
-var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCKConfig.ForcePasteAsPlainText) return FCK_TRISTATE_DISABLED;else return FCK.GetNamedCommandState('Paste');};
-var FCKTableCommand=function(A){this.Name=A;};FCKTableCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();switch (this.Name){case 'TableInsertRow':FCKTableHandler.InsertRow();break;case 'TableDeleteRows':FCKTableHandler.DeleteRows();break;case 'TableInsertColumn':FCKTableHandler.InsertColumn();break;case 'TableDeleteColumns':FCKTableHandler.DeleteColumns();break;case 'TableInsertCell':FCKTableHandler.InsertCell();break;case 'TableDeleteCells':FCKTableHandler.DeleteCells();break;case 'TableMergeCells':FCKTableHandler.MergeCells();break;case 'TableSplitCell':FCKTableHandler.SplitCell();break;default:alert(FCKLang.UnknownCommand.replace(/%1/g,this.Name));};};FCKTableCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;}
-var FCKStyleCommand=function(){this.Name='Style';this.StylesLoader=new FCKStylesLoader();this.StylesLoader.Load(FCKConfig.StylesXmlPath);this.Styles=this.StylesLoader.Styles;};FCKStyleCommand.prototype.Execute=function(A,B){FCKUndo.SaveUndoStep();if (B.Selected) B.Style.RemoveFromSelection();else B.Style.ApplyToSelection();FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent("OnSelectionChange");};FCKStyleCommand.prototype.GetState=function(){var A=FCK.EditorDocument.selection;if (FCKSelection.GetType()=='Control'){var e=FCKSelection.GetSelectedElement();if (e) return this.StylesLoader.StyleGroups[e.tagName]?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;};return FCK_TRISTATE_OFF;};FCKStyleCommand.prototype.GetActiveStyles=function(){var A=new Array();if (FCKSelection.GetType()=='Control') this._CheckStyle(FCKSelection.GetSelectedElement(),A,false);else this._CheckStyle(FCKSelection.GetParentElement(),A,true);return A;};FCKStyleCommand.prototype._CheckStyle=function(A,B,C){if (!A) return;if (A.nodeType==1){var D=this.StylesLoader.StyleGroups[A.tagName];if (D){for (var i=0;i<D.length;i++){if (D[i].IsEqual(A)) B[B.length]=D[i];};};};if (C) this._CheckStyle(A.parentNode,B,C);}
-var FCKCommands=FCK.Commands=new Object();FCKCommands.LoadedCommands=new Object();FCKCommands.RegisterCommand=function(A,B){this.LoadedCommands[A]=B;};FCKCommands.GetCommand=function(A){var B=FCKCommands.LoadedCommands[A];if (B) return B;switch (A){case 'DocProps':B=new FCKDialogCommand('DocProps',FCKLang.DocProps,'dialog/fck_docprops.html',400,390,FCKCommands.GetFullPageState);break;case 'Templates':B=new FCKDialogCommand('Templates',FCKLang.DlgTemplatesTitle,'dialog/fck_template.html',380,450);break;case 'Link':B=new FCKDialogCommand('Link',FCKLang.DlgLnkWindowTitle,'dialog/fck_link.html',400,330,FCK.GetNamedCommandState,'CreateLink');break;case 'Anchor':B=new FCKDialogCommand('Anchor',FCKLang.DlgAnchorTitle,'dialog/fck_anchor.html',370,170);break;case 'BulletedList':B=new FCKDialogCommand('BulletedList',FCKLang.BulletedListProp,'dialog/fck_listprop.html',370,170);break;case 'NumberedList':B=new FCKDialogCommand('NumberedList',FCKLang.NumberedListProp,'dialog/fck_listprop.html',370,170);break;case 'About':B=new FCKDialogCommand('About',FCKLang.About,'dialog/fck_about.html',400,330);break;case 'Find':B=new FCKDialogCommand('Find',FCKLang.DlgFindTitle,'dialog/fck_find.html',340,170);break;case 'Replace':B=new FCKDialogCommand('Replace',FCKLang.DlgReplaceTitle,'dialog/fck_replace.html',340,200);break;case 'Image':B=new FCKDialogCommand('Image',FCKLang.DlgImgTitle,'dialog/fck_image.html',450,400);break;case 'Flash':B=new FCKDialogCommand('Flash',FCKLang.DlgFlashTitle,'dialog/fck_flash.html',450,400);break;case 'SpecialChar':B=new FCKDialogCommand('SpecialChar',FCKLang.DlgSpecialCharTitle,'dialog/fck_specialchar.html',400,300);break;case 'Smiley':B=new FCKDialogCommand('Smiley',FCKLang.DlgSmileyTitle,'dialog/fck_smiley.html',FCKConfig.SmileyWindowWidth,FCKConfig.SmileyWindowHeight);break;case 'Table':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html',400,250);break;case 'TableProp':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html?Parent',400,250);break;case 'TableCellProp':B=new FCKDialogCommand('TableCell',FCKLang.DlgCellTitle,'dialog/fck_tablecell.html',500,250);break;case 'UniversalKey':B=new FCKDialogCommand('UniversalKey',FCKLang.UniversalKeyboard,'dialog/fck_universalkey.html',415,300);break;case 'Style':B=new FCKStyleCommand();break;case 'FontName':B=new FCKFontNameCommand();break;case 'FontSize':B=new FCKFontSizeCommand();break;case 'FontFormat':B=new FCKFormatBlockCommand();break;case 'Source':B=new FCKSourceCommand();break;case 'Preview':B=new FCKPreviewCommand();break;case 'Save':B=new FCKSaveCommand();break;case 'NewPage':B=new FCKNewPageCommand();break;case 'PageBreak':B=new FCKPageBreakCommand();break;case 'TextColor':B=new FCKTextColorCommand('ForeColor');break;case 'BGColor':B=new FCKTextColorCommand('BackColor');break;case 'PasteText':B=new FCKPastePlainTextCommand();break;case 'PasteWord':B=new FCKPasteWordCommand();break;case 'TableInsertRow':B=new FCKTableCommand('TableInsertRow');break;case 'TableDeleteRows':B=new FCKTableCommand('TableDeleteRows');break;case 'TableInsertColumn':B=new FCKTableCommand('TableInsertColumn');break;case 'TableDeleteColumns':B=new FCKTableCommand('TableDeleteColumns');break;case 'TableInsertCell':B=new FCKTableCommand('TableInsertCell');break;case 'TableDeleteCells':B=new FCKTableCommand('TableDeleteCells');break;case 'TableMergeCells':B=new FCKTableCommand('TableMergeCells');break;case 'TableSplitCell':B=new FCKTableCommand('TableSplitCell');break;case 'Form':B=new FCKDialogCommand('Form',FCKLang.Form,'dialog/fck_form.html',380,230);break;case 'Checkbox':B=new FCKDialogCommand('Checkbox',FCKLang.Checkbox,'dialog/fck_checkbox.html',380,230);break;case 'Radio':B=new FCKDialogCommand('Radio',FCKLang.RadioButton,'dialog/fck_radiobutton.html',380,230);break;case 'TextField':B=new FCKDialogCommand('TextField',FCKLang.TextField,'dialog/fck_textfield.html',380,230);break;case 'Textarea':B=new FCKDialogCommand('Textarea',FCKLang.Textarea,'dialog/fck_textarea.html',380,230);break;case 'HiddenField':B=new FCKDialogCommand('HiddenField',FCKLang.HiddenField,'dialog/fck_hiddenfield.html',380,230);break;case 'Button':B=new FCKDialogCommand('Button',FCKLang.Button,'dialog/fck_button.html',380,230);break;case 'Select':B=new FCKDialogCommand('Select',FCKLang.SelectionField,'dialog/fck_select.html',400,380);break;case 'ImageButton':B=new FCKDialogCommand('ImageButton',FCKLang.ImageButton,'dialog/fck_image.html?ImageButton',450,400);break;case 'SpellCheck':B=new FCKSpellCheckCommand();break;case 'Undo':B=new FCKUndoCommand();break;case 'Redo':B=new FCKRedoCommand();break;case 'Undefined':B=new FCKUndefinedCommand();break;default:if (FCKRegexLib.NamedCommands.test(A)) B=new FCKNamedCommand(A);else{alert(FCKLang.UnknownCommand.replace(/%1/g,A));return null;};};FCKCommands.LoadedCommands[A]=B;return B;};FCKCommands.GetFullPageState=function(){return FCKConfig.FullPage?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;};
-var FCKToolbarButton=function(A,B,C,D,E,F){this.Command=FCKCommands.GetCommand(A);this.Label=B?B:A;this.Tooltip=C?C:(B?B:A);this.Style=D?D:FCK_TOOLBARITEM_ONLYICON;this.SourceView=E?true:false;this.ContextSensitive=F?true:false;this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';this.State=FCK_UNKNOWN;};FCKToolbarButton.prototype.CreateInstance=function(A){this.DOMDiv=document.createElement('div');this.DOMDiv.className='TB_Button_Off';this.DOMDiv.FCKToolbarButton=this;var B='<table title="'+this.Tooltip+'" cellspacing="0" cellpadding="0" border="0" unselectable="on">'+'<tr>';if (this.Style!=FCK_TOOLBARITEM_ONLYTEXT) B+='<td class="TB_Icon" unselectable="on"><img src="'+this.IconPath+'" width="21" height="21" unselectable="on"></td>';if (this.Style!=FCK_TOOLBARITEM_ONLYICON) B+='<td class="TB_Text" unselectable="on" nowrap>'+this.Label+'</td>';B+='</tr>'+'</table>';this.DOMDiv.innerHTML=B;var C=A.DOMRow.insertCell(-1);C.appendChild(this.DOMDiv);this.RefreshState();};FCKToolbarButton.prototype.RefreshState=function(){var A=this.Command.GetState();if (A==this.State) return;this.State=A;switch (this.State){case FCK_TRISTATE_ON:this.DOMDiv.className='TB_Button_On';this.DOMDiv.onmouseover=FCKToolbarButton_OnMouseOnOver;this.DOMDiv.onmouseout=FCKToolbarButton_OnMouseOnOut;this.DOMDiv.onclick=FCKToolbarButton_OnClick;break;case FCK_TRISTATE_OFF:this.DOMDiv.className='TB_Button_Off';this.DOMDiv.onmouseover=FCKToolbarButton_OnMouseOffOver;this.DOMDiv.onmouseout=FCKToolbarButton_OnMouseOffOut;this.DOMDiv.onclick=FCKToolbarButton_OnClick;break;default:this.Disable();break;};};function FCKToolbarButton_OnMouseOnOver(){this.className='TB_Button_On TB_Button_On_Over';};function FCKToolbarButton_OnMouseOnOut(){this.className='TB_Button_On';};function FCKToolbarButton_OnMouseOffOver(){this.className='TB_Button_On TB_Button_Off_Over';};function FCKToolbarButton_OnMouseOffOut(){this.className='TB_Button_Off';};function FCKToolbarButton_OnClick(e){this.FCKToolbarButton.Click(e);return false;};FCKToolbarButton.prototype.Click=function(){this.Command.Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this.State=FCK_TRISTATE_DISABLED;this.DOMDiv.className='TB_Button_Disabled';this.DOMDiv.onmouseover=null;this.DOMDiv.onmouseout=null;this.DOMDiv.onclick=null;}
-var FCKSpecialCombo=function(A){this.FieldWidth=80;this.PanelWidth=130;this.PanelMaxHeight=150;this.Label='&nbsp;';this.Caption=A;this.Tooltip=A;this.Style=FCK_TOOLBARITEM_ICONTEXT;this.Enabled=true;this.Items=new Object();this._Panel=new FCKPanel();this._Panel.StyleSheet=FCKConfig.SkinPath+'fck_contextmenu.css';this._Panel.Create();this._Panel.PanelDiv.className+=' SC_Panel';this._Panel.PanelDiv.innerHTML='<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>';this._ItemsHolderEl=this._Panel.PanelDiv.getElementsByTagName('TD')[0];};function FCKSpecialCombo_ItemOnMouseOver(){this.className+=' SC_ItemOver';};function FCKSpecialCombo_ItemOnMouseOut(){this.className=this.originalClass;};function FCKSpecialCombo_ItemOnClick(){this.FCKSpecialCombo._Panel.Hide();this.FCKSpecialCombo.SetLabel(this.FCKItemLabel);if (typeof(this.FCKSpecialCombo.OnSelect)=='function') this.FCKSpecialCombo.OnSelect(this.FCKItemID,this);};FCKSpecialCombo.prototype.AddItem=function(A,B,C){var D=this._ItemsHolderEl.appendChild(this._Panel.Document.createElement('DIV'));D.className=D.originalClass='SC_Item';D.innerHTML=B;D.FCKItemID=A;D.FCKItemLabel=C?C:A;D.FCKSpecialCombo=this;D.Selected=false;D.onmouseover=FCKSpecialCombo_ItemOnMouseOver;D.onmouseout=FCKSpecialCombo_ItemOnMouseOut;D.onclick=FCKSpecialCombo_ItemOnClick;this.Items[A.toString().toLowerCase()]=D;return D;};FCKSpecialCombo.prototype.SelectItem=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];if (B){B.className=B.originalClass='SC_ItemSelected';B.Selected=true;};};FCKSpecialCombo.prototype.DeselectAll=function(){for (var i in this.Items){this.Items[i].className=this.Items[i].originalClass='SC_Item';this.Items[i].Selected=false;};};FCKSpecialCombo.prototype.SetLabelById=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];this.SetLabel(B?B.FCKItemLabel:'');};FCKSpecialCombo.prototype.SetLabel=function(A){this.Label=A.length==0?'&nbsp;':A;if (this._LabelEl) this._LabelEl.innerHTML=this.Label;};FCKSpecialCombo.prototype.SetEnabled=function(A){this.Enabled=A;this._OuterTable.className=A?'':'SC_FieldDisabled';};FCKSpecialCombo.prototype.Create=function(A){this._OuterTable=A.appendChild(document.createElement('TABLE'));this._OuterTable.cellPadding=0;this._OuterTable.cellSpacing=0;this._OuterTable.insertRow(-1);var B;var C;switch (this.Style){case FCK_TOOLBARITEM_ONLYICON:B='TB_ButtonType_Icon';C=false;break;case FCK_TOOLBARITEM_ONLYTEXT:B='TB_ButtonType_Text';C=false;break;case FCK_TOOLBARITEM_ICONTEXT:C=true;break;};if (this.Caption&&this.Caption.length>0&&C){var D=this._OuterTable.rows[0].insertCell(-1);D.unselectable='on';D.innerHTML=this.Caption;D.className='SC_FieldCaption';};var E=this._OuterTable.rows[0].insertCell(-1).appendChild(document.createElement('DIV'));if (C){E.className='SC_Field';E.style.width=this.FieldWidth+'px';E.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;" unselectable="on"><tbody><tr><td class="SC_FieldLabel" unselectable="on"><label unselectable="on">&nbsp;</label></td><td class="SC_FieldButton" unselectable="on">&nbsp;</td></tr></tbody></table>';this._LabelEl=E.getElementsByTagName('label')[0];this._LabelEl.innerHTML=this.Label;}else{E.className='TB_Button_Off';E.innerHTML='<table cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;" unselectable="on"><tbody><tr><td class="SC_FieldButton" style="border-left: none;" unselectable="on">&nbsp;</td></tr></tbody></table>';E.innerHTML='<table title="'+this.Tooltip+'" class="'+B+'" cellspacing="0" cellpadding="0" border="0" unselectable="on">'+'<tr>'+'<td class="TB_Text" unselectable="on">'+this.Caption+'</td>'+'<td class="TB_ButtonArrow" unselectable="on"><img src="'+FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif" width="5" height="3"></td>'+'</tr>'+'</table>';};E.SpecialCombo=this;E.onmouseover=FCKSpecialCombo_OnMouseOver;E.onmouseout=FCKSpecialCombo_OnMouseOut;E.onclick=FCKSpecialCombo_OnClick;};function FCKSpecialCombo_OnMouseOver(){if (this.SpecialCombo.Enabled){switch (this.SpecialCombo.Style){case FCK_TOOLBARITEM_ONLYICON:this.className='TB_Button_On';break;case FCK_TOOLBARITEM_ONLYTEXT:this.className='TB_Button_On';break;case FCK_TOOLBARITEM_ICONTEXT:this.className='SC_Field SC_FieldOver';break;};};};function FCKSpecialCombo_OnMouseOut(){switch (this.SpecialCombo.Style){case FCK_TOOLBARITEM_ONLYICON:this.className='TB_Button_Off';break;case FCK_TOOLBARITEM_ONLYTEXT:this.className='TB_Button_Off';break;case FCK_TOOLBARITEM_ICONTEXT:this.className='SC_Field';break;};};function FCKSpecialCombo_OnClick(e){if (e){e.stopPropagation();FCKPanelEventHandlers.OnDocumentClick(e);};if (this.SpecialCombo.Enabled){var oPanel=this.SpecialCombo._Panel;if (typeof(this.SpecialCombo.OnBeforeClick)=='function') this.SpecialCombo.OnBeforeClick(this.SpecialCombo);if (this.SpecialCombo._ItemsHolderEl.offsetHeight>this.SpecialCombo.PanelMaxHeight) oPanel.PanelDiv.style.height=this.SpecialCombo.PanelMaxHeight+'px';else oPanel.PanelDiv.style.height=this.SpecialCombo._ItemsHolderEl.offsetHeight+'px';oPanel.PanelDiv.style.width=this.SpecialCombo.PanelWidth+'px';if (FCKBrowserInfo.IsGecko) oPanel.PanelDiv.style.overflow='-moz-scrollbars-vertical';oPanel.Show(0,this.offsetHeight,this,null,this.SpecialCombo.PanelMaxHeight,true);};return false;};
-var FCKToolbarSpecialCombo=function(){this.SourceView=false;this.ContextSensitive=true;};function FCKToolbarSpecialCombo_OnSelect(itemId,item){this.Command.Execute(itemId,item);};FCKToolbarSpecialCombo.prototype.CreateInstance=function(A){this._Combo=new FCKSpecialCombo(this.GetLabel());this._Combo.FieldWidth=this.FieldWidth!=null?this.FieldWidth:100;this._Combo.PanelWidth=this.PanelWidth!=null?this.PanelWidth:150;this._Combo.PanelMaxHeight=this.PanelMaxHeight!=null?this.PanelMaxHeight:150;this._Combo.Tooltip=this.Tooltip;this._Combo.Style=this.Style;this.CreateItems(this._Combo);this._Combo.Create(A.DOMRow.insertCell(-1));this._Combo.Command=this.Command;this._Combo.OnSelect=FCKToolbarSpecialCombo_OnSelect;};function FCKToolbarSpecialCombo_RefreshActiveItems(combo,value){combo.DeselectAll();combo.SelectItem(value);combo.SetLabelById(value);};FCKToolbarSpecialCombo.prototype.RefreshState=function(){var A;var B=this.Command.GetState();if (B!=FCK_TRISTATE_DISABLED){A=FCK_TRISTATE_ON;if (this.RefreshActiveItems) this.RefreshActiveItems(this._Combo,B);else FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo,B);}else A=FCK_TRISTATE_DISABLED;if (A==this.State) return;if (A==FCK_TRISTATE_DISABLED){this._Combo.DeselectAll();this._Combo.SetLabel('');};this.State=A;this._Combo.SetEnabled(A!=FCK_TRISTATE_DISABLED);};FCKToolbarSpecialCombo.prototype.Enable=function(){this.RefreshState();};FCKToolbarSpecialCombo.prototype.Disable=function(){this.State=FCK_TRISTATE_DISABLED;this._Combo.DeselectAll();this._Combo.SetLabel('');this._Combo.SetEnabled(false);}
-var FCKToolbarFontsCombo=function(A,B){this.Command=FCKCommands.GetCommand('FontName');this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;};FCKToolbarFontsCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontsCombo.prototype.GetLabel=function(){return FCKLang.Font;};FCKToolbarFontsCombo.prototype.CreateItems=function(A){var B=FCKConfig.FontNames.split(';');for (var i=0;i<B.length;i++) this._Combo.AddItem(B[i],'<span style="font-family: \''+B[i]+'\'; font-size: 12px;">'+B[i]+'</span>');}
-var FCKToolbarFontSizeCombo=function(A,B){this.Command=FCKCommands.GetCommand('FontSize');this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;};FCKToolbarFontSizeCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontSizeCombo.prototype.GetLabel=function(){return FCKLang.FontSize;};FCKToolbarFontSizeCombo.prototype.CreateItems=function(A){A.FieldWidth=70;var B=FCKConfig.FontSizes.split(';');for (var i=0;i<B.length;i++){var C=B[i].split('/');this._Combo.AddItem(C[0],'<font size="'+C[0]+'">'+C[1]+'</font>',C[1]);};}
-var FCKToolbarFontFormatCombo=function(A,B){this.Command=FCKCommands.GetCommand('FontFormat');this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;this.PanelWidth=190;};FCKToolbarFontFormatCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontFormatCombo.prototype.GetLabel=function(){return FCKLang.FontFormat;};FCKToolbarFontFormatCombo.prototype.CreateItems=function(A){var B=FCKLang['FontFormats'].split(';');var C={p:B[0],pre:B[1],address:B[2],h1:B[3],h2:B[4],h3:B[5],h4:B[6],h5:B[7],h6:B[8],div:B[9]};var D=FCKConfig.FontFormats.split(';');for (var i=0;i<D.length;i++){if (D[i]=='div'&&FCKBrowserInfo.IsGecko) continue;this._Combo.AddItem(D[i],'<'+D[i]+'>'+C[D[i]]+'</'+D[i]+'>',C[D[i]]);};}
-var FCKToolbarStyleCombo=function(A,B){this.Command=FCKCommands.GetCommand('Style');this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;};FCKToolbarStyleCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarStyleCombo.prototype.GetLabel=function(){return FCKLang.Style;};FCKToolbarStyleCombo.prototype.CreateItems=function(A){FCKTools.AppendStyleSheet(A._Panel.Document,FCKConfig.EditorAreaCSS);if (!FCKBrowserInfo.IsGecko) A.OnBeforeClick=this.RefreshVisibleItems;for (var s in this.Command.Styles){var B=this.Command.Styles[s];var C;if (B.IsObjectElement) C=A.AddItem(s,s);else C=A.AddItem(s,B.GetOpenerTag()+s+B.GetCloserTag());C.Style=B;};};FCKToolbarStyleCombo.prototype.RefreshActiveItems=function(A){A.DeselectAll();var B=this.Command.GetActiveStyles();if (B.length>0){for (var i=0;i<B.length;i++) A.SelectItem(B[i].Name);A.SetLabelById(B[0].Name);}else A.SetLabel('');};FCKToolbarStyleCombo.prototype.RefreshVisibleItems=function(A){if (FCKSelection.GetType()=='Control') var B=FCKSelection.GetSelectedElement().tagName;for (var i in A.Items){var C=A.Items[i];if ((B&&C.Style.Element==B)||(!B&&!C.Style.IsObjectElement)) C.style.display='';else C.style.display='none';};}
-var FCKToolbarPanelButton=function(A,B,C,D){this.Command=FCKCommands.GetCommand(A);this.Label=B?B:A;this.Tooltip=C?C:(B?B:A);this.Style=D?D:FCK_TOOLBARITEM_ONLYICON;this.State=FCK_UNKNOWN;};FCKToolbarPanelButton.prototype.Click=function(e){if (e){e.stopPropagation();FCKPanelEventHandlers.OnDocumentClick(e);};if (this.State!=FCK_TRISTATE_DISABLED){this.Command.Execute(0,this.DOMDiv.offsetHeight,this.DOMDiv);};return false;};FCKToolbarPanelButton.prototype.CreateInstance=function(A){this.DOMDiv=document.createElement('div');this.DOMDiv.className='TB_Button_Off';this.DOMDiv.FCKToolbarButton=this;var B='<table title="'+this.Tooltip+'" cellspacing="0" cellpadding="0" border="0" unselectable="on">'+'<tr>';if (this.Style!=FCK_TOOLBARITEM_ONLYTEXT) B+='<td class="TB_Icon" unselectable="on"><img src="'+FCKConfig.SkinPath+'toolbar/'+this.Command.Name.toLowerCase()+'.gif" width="21" height="21" unselectable="on"></td>';if (this.Style!=FCK_TOOLBARITEM_ONLYICON) B+='<td class="TB_Text" unselectable="on" nowrap>'+this.Label+'</td>';B+='<td class="TB_ButtonArrow" unselectable="on"><img src="'+FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif" width="5" height="3"></td>'+'</tr>'+'</table>';this.DOMDiv.innerHTML=B;var C=A.DOMRow.insertCell(-1);C.appendChild(this.DOMDiv);this.RefreshState();};FCKToolbarPanelButton.prototype.RefreshState=FCKToolbarButton.prototype.RefreshState;FCKToolbarPanelButton.prototype.Enable=FCKToolbarButton.prototype.Enable;FCKToolbarPanelButton.prototype.Disable=FCKToolbarButton.prototype.Disable;
-var FCKToolbarItems=new Object();FCKToolbarItems.LoadedItems=new Object();FCKToolbarItems.RegisterItem=function(A,B){this.LoadedItems[A]=B;};FCKToolbarItems.GetItem=function(A){var B=FCKToolbarItems.LoadedItems[A];if (B) return B;switch (A){case 'Source':B=new FCKToolbarButton('Source',FCKLang.Source,null,FCK_TOOLBARITEM_ICONTEXT,true,true);break;case 'DocProps':B=new FCKToolbarButton('DocProps',FCKLang.DocProps);break;case 'Templates':B=new FCKToolbarButton('Templates',FCKLang.Templates);break;case 'Save':B=new FCKToolbarButton('Save',FCKLang.Save,null,null,true);break;case 'NewPage':B=new FCKToolbarButton('NewPage',FCKLang.NewPage,null,null,true);break;case 'Preview':B=new FCKToolbarButton('Preview',FCKLang.Preview,null,null,true);break;case 'About':B=new FCKToolbarButton('About',FCKLang.About,null,null,true);break;case 'Cut':B=new FCKToolbarButton('Cut',FCKLang.Cut,null,null,false,true);break;case 'Copy':B=new FCKToolbarButton('Copy',FCKLang.Copy,null,null,false,true);break;case 'Paste':B=new FCKToolbarButton('Paste',FCKLang.Paste,null,null,false,true);break;case 'PasteText':B=new FCKToolbarButton('PasteText',FCKLang.PasteText,null,null,false,true);break;case 'PasteWord':B=new FCKToolbarButton('PasteWord',FCKLang.PasteWord,null,null,false,true);break;case 'Print':B=new FCKToolbarButton('Print',FCKLang.Print,null,null,false,true);break;case 'SpellCheck':B=new FCKToolbarButton('SpellCheck',FCKLang.SpellCheck);break;case 'Undo':B=new FCKToolbarButton('Undo',FCKLang.Undo,null,null,false,true);break;case 'Redo':B=new FCKToolbarButton('Redo',FCKLang.Redo,null,null,false,true);break;case 'SelectAll':B=new FCKToolbarButton('SelectAll',FCKLang.SelectAll);break;case 'RemoveFormat':B=new FCKToolbarButton('RemoveFormat',FCKLang.RemoveFormat,null,null,false,true);break;case 'Bold':B=new FCKToolbarButton('Bold',FCKLang.Bold,null,null,false,true);break;case 'Italic':B=new FCKToolbarButton('Italic',FCKLang.Italic,null,null,false,true);break;case 'Underline':B=new FCKToolbarButton('Underline',FCKLang.Underline,null,null,false,true);break;case 'StrikeThrough':B=new FCKToolbarButton('StrikeThrough',FCKLang.StrikeThrough,null,null,false,true);break;case 'Subscript':B=new FCKToolbarButton('Subscript',FCKLang.Subscript,null,null,false,true);break;case 'Superscript':B=new FCKToolbarButton('Superscript',FCKLang.Superscript,null,null,false,true);break;case 'OrderedList':B=new FCKToolbarButton('InsertOrderedList',FCKLang.NumberedListLbl,FCKLang.NumberedList,null,false,true);break;case 'UnorderedList':B=new FCKToolbarButton('InsertUnorderedList',FCKLang.BulletedListLbl,FCKLang.BulletedList,null,false,true);break;case 'Outdent':B=new FCKToolbarButton('Outdent',FCKLang.DecreaseIndent,null,null,false,true);break;case 'Indent':B=new FCKToolbarButton('Indent',FCKLang.IncreaseIndent,null,null,false,true);break;case 'Link':B=new FCKToolbarButton('Link',FCKLang.InsertLinkLbl,FCKLang.InsertLink,null,false,true);break;case 'Unlink':B=new FCKToolbarButton('Unlink',FCKLang.RemoveLink,null,null,false,true);break;case 'Anchor':B=new FCKToolbarButton('Anchor',FCKLang.Anchor);break;case 'Image':B=new FCKToolbarButton('Image',FCKLang.InsertImageLbl,FCKLang.InsertImage);break;case 'Flash':B=new FCKToolbarButton('Flash',FCKLang.InsertFlashLbl,FCKLang.InsertFlash);break;case 'Table':B=new FCKToolbarButton('Table',FCKLang.InsertTableLbl,FCKLang.InsertTable);break;case 'SpecialChar':B=new FCKToolbarButton('SpecialChar',FCKLang.InsertSpecialCharLbl,FCKLang.InsertSpecialChar);break;case 'Smiley':B=new FCKToolbarButton('Smiley',FCKLang.InsertSmileyLbl,FCKLang.InsertSmiley);break;case 'PageBreak':B=new FCKToolbarButton('PageBreak',FCKLang.PageBreakLbl,FCKLang.PageBreak);break;case 'UniversalKey':B=new FCKToolbarButton('UniversalKey',FCKLang.UniversalKeyboard);break;case 'Rule':B=new FCKToolbarButton('InsertHorizontalRule',FCKLang.InsertLineLbl,FCKLang.InsertLine,null,false,true);break;case 'JustifyLeft':B=new FCKToolbarButton('JustifyLeft',FCKLang.LeftJustify,null,null,false,true);break;case 'JustifyCenter':B=new FCKToolbarButton('JustifyCenter',FCKLang.CenterJustify,null,null,false,true);break;case 'JustifyRight':B=new FCKToolbarButton('JustifyRight',FCKLang.RightJustify,null,null,false,true);break;case 'JustifyFull':B=new FCKToolbarButton('JustifyFull',FCKLang.BlockJustify,null,null,false,true);break;case 'Style':B=new FCKToolbarStyleCombo();break;case 'FontName':B=new FCKToolbarFontsCombo();break;case 'FontSize':B=new FCKToolbarFontSizeCombo();break;case 'FontFormat':B=new FCKToolbarFontFormatCombo();break;case 'TextColor':B=new FCKToolbarPanelButton('TextColor',FCKLang.TextColor);break;case 'BGColor':B=new FCKToolbarPanelButton('BGColor',FCKLang.BGColor);break;case 'Find':B=new FCKToolbarButton('Find',FCKLang.Find);break;case 'Replace':B=new FCKToolbarButton('Replace',FCKLang.Replace);break;case 'Form':B=new FCKToolbarButton('Form',FCKLang.Form);break;case 'Checkbox':B=new FCKToolbarButton('Checkbox',FCKLang.Checkbox);break;case 'Radio':B=new FCKToolbarButton('Radio',FCKLang.RadioButton);break;case 'TextField':B=new FCKToolbarButton('TextField',FCKLang.TextField);break;case 'Textarea':B=new FCKToolbarButton('Textarea',FCKLang.Textarea);break;case 'HiddenField':B=new FCKToolbarButton('HiddenField',FCKLang.HiddenField);break;case 'Button':B=new FCKToolbarButton('Button',FCKLang.Button);break;case 'Select':B=new FCKToolbarButton('Select',FCKLang.SelectionField);break;case 'ImageButton':B=new FCKToolbarButton('ImageButton',FCKLang.ImageButton);break;default:alert(FCKLang.UnknownToolbarItem.replace(/%1/g,A));return null;};FCKToolbarItems.LoadedItems[A]=B;return B;}
-var FCKToolbar=function(){this.Items=new Array();var e=this.DOMTable=document.createElement('table');e.className='TB_Toolbar';e.style.styleFloat=e.style.cssFloat=FCKLang.Dir=='rtl'?'right':'left';e.cellPadding=0;e.cellSpacing=0;e.border=0;this.DOMRow=e.insertRow(-1);var A=this.DOMRow.insertCell(-1);A.className='TB_Start';A.innerHTML='<img src="'+FCKConfig.SkinPath+'images/toolbar.start.gif" width="7" height="21" style="VISIBILITY: hidden" onload="this.style.visibility = \'\';" unselectable="on">';FCKToolbarSet.DOMElement.appendChild(e);};FCKToolbar.prototype.AddItem=function(A){this.Items[this.Items.length]=A;A.CreateInstance(this);};FCKToolbar.prototype.AddSeparator=function(){var A=this.DOMRow.insertCell(-1);A.unselectable='on';A.innerHTML='<img src="'+FCKConfig.SkinPath+'images/toolbar.separator.gif" width="5" height="21" style="VISIBILITY: hidden" onload="this.style.visibility = \'\';" unselectable="on">';};FCKToolbar.prototype.AddTerminator=function(){var A=this.DOMRow.insertCell(-1);A.className='TB_End';A.innerHTML='<img src="'+FCKConfig.SkinPath+'images/toolbar.end.gif" width="12" height="21" style="VISIBILITY: hidden" onload="this.style.visibility = \'\';" unselectable="on">';};
-var FCKToolbarBreak=function(){var A=document.createElement('div');A.className='TB_Break';A.style.clear=FCKLang.Dir=='rtl'?'left':'right';FCKToolbarSet.DOMElement.appendChild(A);}
-var FCKToolbarSet=FCK.ToolbarSet=new Object();document.getElementById('ExpandHandle').title=FCKLang.ToolbarExpand;document.getElementById('CollapseHandle').title=FCKLang.ToolbarCollapse;FCKToolbarSet.Toolbars=new Array();FCKToolbarSet.ItemsWysiwygOnly=new Array();FCKToolbarSet.ItemsContextSensitive=new Array();FCKToolbarSet.Expand=function(){document.getElementById('Collapsed').style.display='none';document.getElementById('Expanded').style.display='';if (!FCKBrowserInfo.IsIE){window.setTimeout("window.onresize()",1);};};FCKToolbarSet.Collapse=function(){document.getElementById('Collapsed').style.display='';document.getElementById('Expanded').style.display='none';if (!FCKBrowserInfo.IsIE){window.setTimeout("window.onresize()",1);};};FCKToolbarSet.Restart=function(){if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();document.getElementById('CollapseHandle').style.display=FCKConfig.ToolbarCanCollapse?'':'none';};FCKToolbarSet.Load=function(A){this.DOMElement=document.getElementById('eToolbar');var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=new Array();for (var x=0;x<B.length;x++){var C=B[x];var D;if (typeof(C)=='string'){if (C=='/') D=new FCKToolbarBreak();}else{D=new FCKToolbar();for (var j=0;j<C.length;j++){var E=C[j];if (E=='-') D.AddSeparator();else{var F=FCKToolbarItems.GetItem(E);if (F){D.AddItem(F);if (!F.SourceView) this.ItemsWysiwygOnly[this.ItemsWysiwygOnly.length]=F;if (F.ContextSensitive) this.ItemsContextSensitive[this.ItemsContextSensitive.length]=F;};};};D.AddTerminator();};this.Toolbars[this.Toolbars.length]=D;};};FCKToolbarSet.RefreshModeState=function(){if (FCK.EditMode==FCK_EDITMODE_WYSIWYG){for (var i=0;i<FCKToolbarSet.ItemsWysiwygOnly.length;i++) FCKToolbarSet.ItemsWysiwygOnly[i].Enable();FCKToolbarSet.RefreshItemsState();}else{FCKToolbarSet.RefreshItemsState();for (var i=0;i<FCKToolbarSet.ItemsWysiwygOnly.length;i++) FCKToolbarSet.ItemsWysiwygOnly[i].Disable();};};FCKToolbarSet.RefreshItemsState=function(){for (var i=0;i<FCKToolbarSet.ItemsContextSensitive.length;i++) FCKToolbarSet.ItemsContextSensitive[i].RefreshState();};
-var FCKDialog=new Object();FCKDialog.OpenDialog=function(A,B,C,D,E,F,G,H){var I=new Object();I.Title=B;I.Page=C;I.Editor=window;I.CustomValue=F;var J=FCKConfig.BasePath+'fckdialog.html';this.Show(I,A,J,D,E,G,H);};
-FCKDialog.Show=function(A,B,C,D,E,F){if (!F) F=window;F.showModalDialog(C,A,"dialogWidth:"+D+"px;dialogHeight:"+E+"px;help:no;scroll:no;status:no");};
-var FCKContextMenuItem=function(A,B,C,D){this.ContextMenu=A;this.Command=FCKCommands.GetCommand(B);this.Label=C?C:B;this.HasIcon=D?true:false;};function FCKContextMenuItem_OnMouseOver(){if (this.className!='CM_Disabled') this.className='CM_Over';};function FCKContextMenuItem_OnMouseOut(){if (this.className!='CM_Disabled') this.className='CM_Option';};function FCKContextMenuItem_OnClick(){if (this.className!='CM_Disabled'){this.FCKContextMenuItem.ContextMenu.Hide();this.FCKContextMenuItem.Command.Execute();};return false;};FCKContextMenuItem.prototype.CreateTableRow=function(A){this._Row=A.insertRow(-1);this._Row.className='CM_Disabled';this._Row.FCKContextMenuItem=this;this._Row.onmouseover=FCKContextMenuItem_OnMouseOver;this._Row.onmouseout=FCKContextMenuItem_OnMouseOut;this._Row.onclick=FCKContextMenuItem_OnClick;var B=this._Row.insertCell(-1);B.className='CM_Icon';if (this.HasIcon) B.innerHTML='<img alt="" src="'+FCKConfig.SkinPath+'toolbar/'+this.Command.Name.toLowerCase()+'.gif" width="21" height="20" unselectable="on">';B=this._Row.insertCell(-1);B.className='CM_Label';B.unselectable='on';B.noWrap=true;B.innerHTML=this.Label;};FCKContextMenuItem.prototype.SetVisible=function(A){this._Row.style.display=A?'':'none';};FCKContextMenuItem.prototype.RefreshState=function(){switch (this.Command.GetState()){case FCK_TRISTATE_ON:case FCK_TRISTATE_OFF:this._Row.className='CM_Option';break;default:this._Row.className='CM_Disabled';break;};};
-var FCKContextMenuSeparator=function(){};FCKContextMenuSeparator.prototype.CreateTableRow=function(A){this._Row=A.insertRow(-1);this._Row.className='CM_Separator';var B=this._Row.insertCell(-1);B.className='CM_Icon';B=this._Row.insertCell(-1);B.className='CM_Label';B.innerHTML='<div></div>';};FCKContextMenuSeparator.prototype.SetVisible=function(A){this._Row.style.display=A?'':'none';};FCKContextMenuSeparator.prototype.RefreshState=function(){};
-var FCKContextMenuGroup=function(A,B,C,D,E){this.IsVisible=true;this.Items=new Array();if (A) this.Add(new FCKContextMenuSeparator());if (B&&C&&D) this.Add(new FCKContextMenuItem(B,C,D,E));this.ValidationFunction=null;};FCKContextMenuGroup.prototype.Add=function(A){this.Items[this.Items.length]=A;};FCKContextMenuGroup.prototype.CreateTableRows=function(A){for (var i=0;i<this.Items.length;i++){this.Items[i].CreateTableRow(A);};};FCKContextMenuGroup.prototype.SetVisible=function(A){for (var i=0;i<this.Items.length;i++){this.Items[i].SetVisible(A);};this.IsVisible=A;};FCKContextMenuGroup.prototype.RefreshState=function(){if (!this.IsVisible) return;for (var i=0;i<this.Items.length;i++){this.Items[i].RefreshState();};}
-var FCKContextMenu=new Object();FCKContextMenu._IsLoaded=false;FCKContextMenu.Reload=function(){this._Div=this._Document.createElement('DIV');this._Div.className='CM_ContextMenu';this._Div.style.position='absolute';this._Div.style.visibility='hidden';this._Document.body.appendChild(this._Div);var A=this._Document.createElement('TABLE');A.cellSpacing=0;A.cellPadding=0;A.border=0;this._Div.appendChild(A);this.Groups=new Object();for (var i=0;i<FCKConfig.ContextMenu.length;i++){var B=FCKConfig.ContextMenu[i];this.Groups[B]=this._GetGroup(B);this.Groups[B].CreateTableRows(A);};this._IsLoaded=true;};FCKContextMenu._GetGroup=function(A){var B;switch (A){case 'Generic':B=new FCKContextMenuGroup();B.Add(new FCKContextMenuItem(this,'Cut',FCKLang.Cut,true));B.Add(new FCKContextMenuItem(this,'Copy',FCKLang.Copy,true));B.Add(new FCKContextMenuItem(this,'Paste',FCKLang.Paste,true));break;case 'Link':B=new FCKContextMenuGroup();B.Add(new FCKContextMenuSeparator());B.Add(new FCKContextMenuItem(this,'Link',FCKLang.EditLink,true));B.Add(new FCKContextMenuItem(this,'Unlink',FCKLang.RemoveLink,true));break;case 'TableCell':B=new FCKContextMenuGroup();B.Add(new FCKContextMenuSeparator());B.Add(new FCKContextMenuItem(this,'TableInsertRow',FCKLang.InsertRow,true));B.Add(new FCKContextMenuItem(this,'TableDeleteRows',FCKLang.DeleteRows,true));B.Add(new FCKContextMenuSeparator());B.Add(new FCKContextMenuItem(this,'TableInsertColumn',FCKLang.InsertColumn,true));B.Add(new FCKContextMenuItem(this,'TableDeleteColumns',FCKLang.DeleteColumns,true));B.Add(new FCKContextMenuSeparator());B.Add(new FCKContextMenuItem(this,'TableInsertCell',FCKLang.InsertCell,true));B.Add(new FCKContextMenuItem(this,'TableDeleteCells',FCKLang.DeleteCells,true));B.Add(new FCKContextMenuItem(this,'TableMergeCells',FCKLang.MergeCells,true));B.Add(new FCKContextMenuItem(this,'TableSplitCell',FCKLang.SplitCell,true));B.Add(new FCKContextMenuSeparator());B.Add(new FCKContextMenuItem(this,'TableCellProp',FCKLang.CellProperties,true));B.Add(new FCKContextMenuItem(this,'TableProp',FCKLang.TableProperties,true));break;case 'Table':return new FCKContextMenuGroup(true,this,'Table',FCKLang.TableProperties,true);case 'Image':return new FCKContextMenuGroup(true,this,'Image',FCKLang.ImageProperties,true);case 'Flash':return new FCKContextMenuGroup(true,this,'Flash',FCKLang.FlashProperties,true);case 'Form':return new FCKContextMenuGroup(true,this,'Form',FCKLang.FormProp,true);case 'Checkbox':return new FCKContextMenuGroup(true,this,'Checkbox',FCKLang.CheckboxProp,true);case 'Radio':return new FCKContextMenuGroup(true,this,'Radio',FCKLang.RadioButtonProp,true);case 'TextField':return new FCKContextMenuGroup(true,this,'TextField',FCKLang.TextFieldProp,true);case 'HiddenField':return new FCKContextMenuGroup(true,this,'HiddenField',FCKLang.HiddenFieldProp,true);case 'ImageButton':return new FCKContextMenuGroup(true,this,'ImageButton',FCKLang.ImageButtonProp,true);case 'Button':return new FCKContextMenuGroup(true,this,'Button',FCKLang.ButtonProp,true);case 'Select':return new FCKContextMenuGroup(true,this,'Select',FCKLang.SelectionFieldProp,true);case 'Textarea':return new FCKContextMenuGroup(true,this,'Textarea',FCKLang.TextareaProp,true);case 'BulletedList':return new FCKContextMenuGroup(true,this,'BulletedList',FCKLang.BulletedListProp,true);case 'NumberedList':return new FCKContextMenuGroup(true,this,'NumberedList',FCKLang.NumberedListProp,true);case 'Anchor':return new FCKContextMenuGroup(true,this,'Anchor',FCKLang.AnchorProp,true);};return B;};FCKContextMenu.RefreshState=function(){var A=FCKSelection.GetSelectedElement();var B;if (A) B=A.tagName;if (this.Groups['Link'])			this.Groups['Link'].SetVisible(FCK.GetNamedCommandState('Unlink')!=FCK_TRISTATE_DISABLED);if (this.Groups['TableCell'])		this.Groups['TableCell'].SetVisible(B!='TABLE'&&FCKSelection.HasAncestorNode('TABLE'));if (this.Groups['Table'])			this.Groups['Table'].SetVisible(B=='TABLE');if (this.Groups['Image'])			this.Groups['Image'].SetVisible(B=='IMG'&&!A.getAttribute('_fckfakelement'));if (this.Groups['Flash'])			this.Groups['Flash'].SetVisible(B=='IMG'&&A.getAttribute('_fckflash'));if (this.Groups['Anchor'])		this.Groups['Anchor'].SetVisible(B=='IMG'&&A.getAttribute('_fckanchor'));if (this.Groups['BulletedList'])	this.Groups['BulletedList'].SetVisible(FCKSelection.HasAncestorNode('UL'));if (this.Groups['NumberedList'])	this.Groups['NumberedList'].SetVisible(FCKSelection.HasAncestorNode('OL'));if (this.Groups['Select'])		this.Groups['Select'].SetVisible(B=='SELECT');if (this.Groups['Textarea'])		this.Groups['Textarea'].SetVisible(B=='TEXTAREA');if (this.Groups['Form'])			this.Groups['Form'].SetVisible(FCKSelection.HasAncestorNode('FORM'));if (this.Groups['Checkbox'])		this.Groups['Checkbox'].SetVisible(B=='INPUT'&&A.type=='checkbox');if (this.Groups['Radio'])			this.Groups['Radio'].SetVisible(B=='INPUT'&&A.type=='radio');if (this.Groups['TextField'])		this.Groups['TextField'].SetVisible(B=='INPUT'&&(A.type=='text'||A.type=='password'));if (this.Groups['HiddenField'])	this.Groups['HiddenField'].SetVisible(B=='INPUT'&&A.type=='hidden');if (this.Groups['ImageButton'])	this.Groups['ImageButton'].SetVisible(B=='INPUT'&&A.type=='image');if (this.Groups['Button'])		this.Groups['Button'].SetVisible(B=='INPUT'&&(A.type=='button'||A.type=='submit'||A.type=='reset'));for (var o in this.Groups){this.Groups[o].RefreshState();};};
-function FCKContextMenu_OnContextMenu() { return false;};FCKContextMenu.Show=function(x,y){if (!this._Popup){this._Popup=window.createPopup();this._Document=this._Popup.document;this._Document.createStyleSheet(FCKConfig.SkinPath+'fck_contextmenu.css');this._Document.oncontextmenu=FCKContextMenu_OnContextMenu;aCleanupDocs[aCleanupDocs.length]=this._Document;};if (!this._IsLoaded){this.Reload();this._Div.style.visibility='';};this.RefreshState();this._Popup.show(x,y,0,0);this._Popup.show(x,y,this._Div.offsetWidth,this._Div.offsetHeight);};FCKContextMenu.Hide=function(){if (this._Popup) this._Popup.hide();}
-if (!FCKConfig.PluginsPath.endsWith('/')) FCKConfig.PluginsPath+='/';var FCKPlugin=function(A,B,C){this.Name=A;this.BasePath=C?C:FCKConfig.PluginsPath;this.Path=this.BasePath+A+'/';if (!B||B.length==0) this.AvailableLangs=new Array();else this.AvailableLangs=B.split(',');};FCKPlugin.prototype.Load=function(){if (this.AvailableLangs.length>0){var A;if (this.AvailableLangs.indexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];FCKScriptLoader.AddScript(this.Path+'lang/'+A+'.js');};FCKScriptLoader.AddScript(this.Path+'fckplugin.js');}
-var FCKPlugins=FCK.Plugins=new Object();FCKPlugins.ItemsCount=0;FCKPlugins.Loaded=false;FCKPlugins.Items=new Object();for (var i=0;i<FCKConfig.Plugins.Items.length;i++){var oItem=FCKConfig.Plugins.Items[i];FCKPlugins.Items[oItem[0]]=new FCKPlugin(oItem[0],oItem[1],oItem[2]);FCKPlugins.ItemsCount++;};FCKPlugins.Load=function(){for (var s in this.Items) this.Items[s].Load();this.Loaded=true;FCKPlugins.Load=null;}
-if (FCKLang&&window.document.dir.toLowerCase()!=FCKLang.Dir.toLowerCase()) window.document.dir=FCKLang.Dir;if (FCKConfig.ForcePasteAsPlainText) FCK.Events.AttachEvent("OnPaste",FCK.Paste);if (FCKPlugins.ItemsCount>0){FCKScriptLoader.OnEmpty=CompleteLoading;FCKPlugins.Load();}else CompleteLoading();function CompleteLoading(){FCKToolbarSet.Name=FCKURLParams['Toolbar']||'Default';FCKToolbarSet.Load(FCKToolbarSet.Name);FCKToolbarSet.Restart();FCK.AttachToOnSelectionChange(FCKToolbarSet.RefreshItemsState);FCK.SetStatus(FCK_STATUS_COMPLETE);if (typeof(window.parent.FCKeditor_OnComplete)=='function') window.parent.FCKeditor_OnComplete(FCK);}
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/js/fckeditorcode_ie.js 1.4.1.src/fckeditor/editor/js/fckeditorcode_ie.js
--- 1.4.0sr5-1.src/fckeditor/editor/js/fckeditorcode_ie.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/js/fckeditorcode_ie.js	2006-09-03 13:05:04.000000000 -0500
@@ -0,0 +1,81 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * This file has been compacted for best loading performance.
+ */
+var FCK_STATUS_NOTLOADED=window.parent.FCK_STATUS_NOTLOADED=0;var FCK_STATUS_ACTIVE=window.parent.FCK_STATUS_ACTIVE=1;var FCK_STATUS_COMPLETE=window.parent.FCK_STATUS_COMPLETE=2;var FCK_TRISTATE_OFF=window.parent.FCK_TRISTATE_OFF=0;var FCK_TRISTATE_ON=window.parent.FCK_TRISTATE_ON=1;var FCK_TRISTATE_DISABLED=window.parent.FCK_TRISTATE_DISABLED=-1;var FCK_UNKNOWN=window.parent.FCK_UNKNOWN=-9;var FCK_TOOLBARITEM_ONLYICON=window.parent.FCK_TOOLBARITEM_ONLYICON=0;var FCK_TOOLBARITEM_ONLYTEXT=window.parent.FCK_TOOLBARITEM_ONLYTEXT=1;var FCK_TOOLBARITEM_ICONTEXT=window.parent.FCK_TOOLBARITEM_ICONTEXT=2;var FCK_EDITMODE_WYSIWYG=window.parent.FCK_EDITMODE_WYSIWYG=0;var FCK_EDITMODE_SOURCE=window.parent.FCK_EDITMODE_SOURCE=1;var FCK_IMAGES_PATH='images/';var FCK_SPACER_PATH='images/spacer.gif';
+String.prototype.Contains=function(A){return (this.indexOf(A)>-1);};String.prototype.Equals=function(){for (var i=0;i<arguments.length;i++) if (this==arguments[i]) return true;return false;};Array.prototype.AddItem=function(A){var i=this.length;this[i]=A;return i;};Array.prototype.indexOf=function(A){for (var i=0;i<this.length;i++){if (this[i]==A) return i;};return-1;};String.prototype.startsWith=function(A){return (this.substr(0,A.length)==A);};String.prototype.endsWith=function(A,B){var C=this.length;var D=A.length;if (D>C) return false;if (B){var E=new RegExp(A+'$','i');return E.test(this);}else return (D==0||this.substr(C-D,D)==A);};String.prototype.remove=function(A,B){var s='';if (A>0) s=this.substring(0,A);if (A+B<this.length) s+=this.substring(A+B,this.length);return s;};String.prototype.trim=function(){return this.replace(/(^\s*)|(\s*$)/g,'');};String.prototype.ltrim=function(){return this.replace(/^\s*/g,'');};String.prototype.rtrim=function(){return this.replace(/\s*$/g,'');};String.prototype.replaceNewLineChars=function(A){return this.replace(/\n/g,A);}
+var	FCKIECleanup=function(A){this.Items=new Array();A._FCKCleanupObj=this;A.attachEvent('onunload',FCKIECleanup_Cleanup);};FCKIECleanup.prototype.AddItem=function(A,B){this.Items.push([A,B]);};function FCKIECleanup_Cleanup(){var aItems=this._FCKCleanupObj.Items;var iLenght=aItems.length;for (var i=0;i<iLenght;i++){var oItem=aItems[i];oItem[1].call(oItem[0]);aItems[i]=null;};this._FCKCleanupObj=null;if (CollectGarbage) CollectGarbage();}
+var s=navigator.userAgent.toLowerCase();var FCKBrowserInfo={IsIE:s.Contains('msie'),IsIE7:s.Contains('msie 7'),IsGecko:s.Contains('gecko/'),IsSafari:s.Contains('safari'),IsOpera:s.Contains('opera')};FCKBrowserInfo.IsGeckoLike=FCKBrowserInfo.IsGecko||FCKBrowserInfo.IsSafari||FCKBrowserInfo.IsOpera;if (FCKBrowserInfo.IsGecko){var sGeckoVersion=s.match(/gecko\/(\d+)/)[1];FCKBrowserInfo.IsGecko10=sGeckoVersion<20051111;}
+var FCKURLParams=new Object();var aParams=document.location.search.substr(1).split('&');for (var i=0;i<aParams.length;i++){var aParam=aParams[i].split('=');var sParamName=aParam[0];var sParamValue=aParam[1];FCKURLParams[sParamName]=sParamValue;}
+var FCK=new Object();FCK.Name=FCKURLParams['InstanceName'];FCK.Status=FCK_STATUS_NOTLOADED;FCK.EditMode=FCK_EDITMODE_WYSIWYG;FCK.LoadLinkedFile=function(){var A=window.parent.document;var B=A.getElementById(FCK.Name);var C=A.getElementsByName(FCK.Name);var i=0;while (B||i==0){if (B&&(B.tagName=='INPUT'||B.tagName=='TEXTAREA')){FCK.LinkedField=B;break;};B=C[i++];}};FCK.LoadLinkedFile();var FCKTempBin=new Object();FCKTempBin.Elements=new Array();FCKTempBin.AddElement=function(A){var B=this.Elements.length;this.Elements[B]=A;return B;};FCKTempBin.RemoveElement=function(A){var e=this.Elements[A];this.Elements[A]=null;return e;};FCKTempBin.Reset=function(){var i=0;while (i<this.Elements.length) this.Elements[i++]==null;this.Elements.length=0;}
+var FCKConfig=FCK.Config=new Object();if (document.location.protocol=='file:'){FCKConfig.BasePath=unescape(document.location.pathname.substr(1));FCKConfig.BasePath=FCKConfig.BasePath.replace(/\\/gi, '/');FCKConfig.BasePath='file://'+FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1);FCKConfig.FullBasePath=FCKConfig.BasePath;}else{FCKConfig.BasePath=document.location.pathname.substring(0,document.location.pathname.lastIndexOf('/')+1);FCKConfig.FullBasePath=document.location.protocol+'//'+document.location.host+FCKConfig.BasePath;};FCKConfig.EditorPath=FCKConfig.BasePath.replace(/editor\/$/,'');try{FCKConfig.ScreenWidth=screen.width;FCKConfig.ScreenHeight=screen.height;}catch (e){FCKConfig.ScreenWidth=800;FCKConfig.ScreenHeight=600;};FCKConfig.ProcessHiddenField=function(){this.PageConfig=new Object();var A=window.parent.document.getElementById(FCK.Name+'___Config');if (!A) return;var B=A.value.split('&');for (var i=0;i<B.length;i++){if (B[i].length==0) continue;var C=B[i].split('=');var D=unescape(C[0]);var E=unescape(C[1]);if (D=='CustomConfigurationsPath') FCKConfig[D]=E;else if (E.toLowerCase()=="true") this.PageConfig[D]=true;else if (E.toLowerCase()=="false") this.PageConfig[D]=false;else if (!isNaN(E)) this.PageConfig[D]=parseInt(E);else this.PageConfig[D]=E;}};function FCKConfig_LoadPageConfig(){var oPageConfig=FCKConfig.PageConfig;for (var sKey in oPageConfig) FCKConfig[sKey]=oPageConfig[sKey];};function FCKConfig_PreProcess(){var oConfig=FCKConfig;if (oConfig.AllowQueryStringDebug&&(/fckdebug=true/i).test(window.top.location.search)) oConfig.Debug=true;if (!oConfig.PluginsPath.endsWith('/')) oConfig.PluginsPath+='/';if (typeof(oConfig.EditorAreaCSS)=='string') oConfig.EditorAreaCSS=[oConfig.EditorAreaCSS];};FCKConfig.ToolbarSets=new Object();FCKConfig.Plugins=new Object();FCKConfig.Plugins.Items=new Array();FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.AddItem([A,B,C]);};FCKConfig.ProtectedSource=new Object();FCKConfig.ProtectedSource.RegexEntries=new Array();FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.AddItem(A);};FCKConfig.ProtectedSource.Protect=function(A){function _Replace(protectedSource){var B=FCKTempBin.AddElement(protectedSource);return '<!--{PS..'+B+'}-->';};for (var i=0;i<this.RegexEntries.length;i++){A=A.replace(this.RegexEntries[i],_Replace);};return A;};FCKConfig.ProtectedSource.Revert=function(A,B){function _Replace(m,opener,index){var C=B?FCKTempBin.RemoveElement(index):FCKTempBin.Elements[index];return FCKConfig.ProtectedSource.Revert(C,B);};return A.replace(/(<|&lt;)!--\{PS..(\d+)\}--(>|&gt;)/g,_Replace);};FCKConfig.ProtectedSource.Add(/<!--[\s\S]*?-->/g);
+var FCKDebug=new Object();FCKDebug.Output=function(A,B,C){if (!FCKConfig.Debug) return;if (!C&&A!=null&&isNaN(A)) A=A.replace(/</g,"&lt;");if (!this.DebugWindow||this.DebugWindow.closed) this.DebugWindow=window.open(FCKConfig.BasePath+'fckdebug.html','FCKeditorDebug','menubar=no,scrollbars=no,resizable=yes,location=no,toolbar=no,width=600,height=500',true);if (this.DebugWindow&&this.DebugWindow.Output){try{this.DebugWindow.Output(A,B);}catch (e) {}}};FCKDebug.OutputObject=function(A,B){if (!FCKConfig.Debug) return;var C;if (A!=null){C='Properties of: '+A+'</b><blockquote>';for (var D in A){try{var E=A[D]?A[D]+'':'[null]';C+='<b>'+D+'</b> : '+E.replace(/</g,'&lt;')+'<br>';}catch (e){try{C+='<b>'+D+'</b> : ['+typeof(A[D])+']<br>';}catch (e){C+='<b>'+D+'</b> : [-error-]<br>';}}};C+='</blockquote><b>';} else C='OutputObject : Object is "null".';FCKDebug.Output(C,B,true);}
+var FCKTools=new Object();FCKTools.GetLinkedFieldValue=function(){return FCK.LinkedField.value;};FCKTools.AttachToLinkedFieldFormSubmit=function(A){var B=FCK.LinkedField.form;if (!B) return;if (FCKBrowserInfo.IsIE) B.attachEvent("onsubmit",A);else B.addEventListener('submit',A,false);if (!B.updateFCKeditor) B.updateFCKeditor=new Array();B.updateFCKeditor[B.updateFCKeditor.length]=A;if (!B.originalSubmit&&(typeof(B.submit)=='function'||(!B.submit.tagName&&!B.submit.length))){B.originalSubmit=B.submit;B.submit=FCKTools_SubmitReplacer;}};function FCKTools_SubmitReplacer(){if (this.updateFCKeditor){for (var i=0;i<this.updateFCKeditor.length;i++) this.updateFCKeditor[i]();};this.originalSubmit();};FCKTools.GetElementWindow=function(A){return this.GetDocumentWindow(this.GetElementDocument(A));};FCKTools.GetDocumentWindow=function(A){if (FCKBrowserInfo.IsSafari&&!A.parentWindow) this.FixDocumentParentWindow(window.top);return A.parentWindow||A.defaultView;};FCKTools.GetElementPosition=function(A,B){var c={ X:0,Y:0 };var C=B||window;while (A){c.X+=A.offsetLeft-A.scrollLeft;c.Y+=A.offsetTop-A.scrollTop;if (A.offsetParent==null){var D=FCKTools.GetElementWindow(A);if (D!=C) A=D.frameElement;else{c.X+=A.scrollLeft;c.Y+=A.scrollTop;break;}}else A=A.offsetParent;};return c;};FCKTools.FixDocumentParentWindow=function(A){A.document.parentWindow=A;for (var i=0;i<A.frames.length;i++) FCKTools.FixDocumentParentWindow(A.frames[i]);};FCKTools.GetParentWindow=function(A){return A.contentWindow?A.contentWindow:A.parentWindow;};FCKTools.HTMLEncode=function(A){if (!A) return '';A=A.replace(/&/g,'&amp;');A=A.replace(/</g,'&lt;');A=A.replace(/>/g,'&gt;');return A;};FCKTools.AddSelectOption=function(A,B,C){var D=FCKTools.GetElementDocument(A).createElement("OPTION");D.text=B;D.value=C;A.options.add(D);return D;};FCKTools.RunFunction=function(A,B,C,D){if (A) this.SetTimeout(A,0,B,C,D);};FCKTools.SetTimeout=function(A,B,C,D,E){return (E||window).setTimeout(function(){if (D) A.apply(C,[].concat(D));else A.apply(C);},B);};FCKTools.SetInterval=function(A,B,C,D,E){return (E||window).setInterval(function(){A.apply(C,D||[]);},B);};FCKTools.ConvertStyleSizeToHtml=function(A){return A.endsWith('%')?A:parseInt(A);};FCKTools.ConvertHtmlSizeToStyle=function(A){return A.endsWith('%')?A:(A+'px');};FCKTools.GetElementAscensor=function(A,B){var e=A;var C=","+B.toUpperCase()+",";while (e){if (C.indexOf(","+e.nodeName.toUpperCase()+",")!=-1) return e;e=e.parentNode;};return null;};FCKTools.CreateEventListener=function(A,B){var f=function(){var C=[];for (var i=0;i<arguments.length;i++) C.push(arguments[i]);A.apply(this,C.concat(B));};return f;};FCKTools.GetElementDocument=function (A){return A.ownerDocument||A.document;}
+FCKTools.CancelEvent=function(e){return false;};FCKTools.AppendStyleSheet=function(A,B){return A.createStyleSheet(B).owningElement;};FCKTools.ClearElementAttributes=function(A){A.clearAttributes();};FCKTools.GetAllChildrenIds=function(A){var B=new Array();for (var i=0;i<A.all.length;i++){var C=A.all[i].id;if (C&&C.length>0) B[B.length]=C;};return B;};FCKTools.RemoveOuterTags=function(e){e.insertAdjacentHTML('beforeBegin',e.innerHTML);e.parentNode.removeChild(e);};FCKTools.CreateXmlObject=function(A){var B;switch (A){case 'XmlHttp':B=['MSXML2.XmlHttp','Microsoft.XmlHttp'];break;case 'DOMDocument':B=['MSXML2.DOMDocument','Microsoft.XmlDom'];break;};for (var i=0;i<2;i++){try { return new ActiveXObject(B[i]);}catch (e){}};if (FCKLang.NoActiveX){alert(FCKLang.NoActiveX);FCKLang.NoActiveX=null;}};FCKTools.DisableSelection=function(A){A.unselectable='on';var e,i=0;while (e=A.all[i++]){switch (e.tagName){case 'IFRAME':case 'TEXTAREA':case 'INPUT':case 'SELECT':/* Ignore the above tags */ break;default:e.unselectable='on';}}};FCKTools.GetScrollPosition=function(A){var B=A.document;var C={ X:B.documentElement.scrollLeft,Y:B.documentElement.scrollTop };if (C.X>0||C.Y>0) return C;return { X:B.body.scrollLeft,Y:B.body.scrollTop };};FCKTools.AddEventListener=function(A,B,C){A.attachEvent('on'+B,C);};FCKTools.RemoveEventListener=function(A,B,C){A.detachEvent('on'+B,C);};FCKTools.AddEventListenerEx=function(A,B,C,D){var o=new Object();o.Source=A;o.Params=D||[];o.Listener=function(ev){return C.apply(o.Source,[ev].concat(o.Params));};if (FCK.IECleanup) FCK.IECleanup.AddItem(null,function() { o.Source=null;o.Params=null;});A.attachEvent('on'+B,o.Listener);A=null;D=null;};FCKTools.GetViewPaneSize=function(A){var B;var C=A.document.documentElement;if (C&&C.clientWidth) B=C;else B=top.document.body;if (B) return { Width:B.clientWidth,Height:B.clientHeight };else return { Width:0,Height:0 };};FCKTools.SaveStyles=function(A){var B=new Object();if (A.className.length>0){B.Class=A.className;A.className='';};var C=A.style.cssText;if (C.length>0){B.Inline=C;A.style.cssText='';};return B;};FCKTools.RestoreStyles=function(A,B){A.className=B.Class||'';A.style.cssText=B.Inline||'';};FCKTools.RegisterDollarFunction=function(A){A.$=A.document.getElementById;};FCKTools.AppendElement=function(A,B){return A.appendChild(this.GetElementDocument(A).createElement(B));}
+var FCKeditorAPI;function InitializeAPI(){if (!(FCKeditorAPI=window.parent.FCKeditorAPI)){var sScript='\ var FCKeditorAPI={\ Version:\'2.3.1\',\ VersionBuild:\'1062\',\ __Instances:new Object(),\ GetInstance:function(instanceName)\{\ return this.__Instances[instanceName];\},\ _FunctionQueue:{\ Functions:new Array(),\ IsRunning:false,\ Add:function(functionToAdd)\{\ this.Functions.push(functionToAdd);\ if (!this.IsRunning)\ this.StartNext();\},\ StartNext:function()\{\ var aQueue=this.Functions;\ if (aQueue.length>0)\{\ this.IsRunning=true;\ aQueue[0].call();\}\ else\ this.IsRunning=false;\},\ Remove:function(func)\{\ var aQueue=this.Functions;\ var i=0,fFunc;\ while(fFunc=aQueue[i])\{\ if (fFunc==func)\ aQueue.splice(i,1);\ i++;\}\ this.StartNext();\}\}\}';if (window.parent.execScript) window.parent.execScript(sScript,'JavaScript');else window.parent.eval(sScript);FCKeditorAPI=window.parent.FCKeditorAPI;};FCKeditorAPI.__Instances[FCK.Name]=FCK;};function FCKeditorAPI_Cleanup(){FCKeditorAPI.__Instances[FCK.Name]=null;};FCKTools.AddEventListener(window,'unload',FCKeditorAPI_Cleanup);
+var FCKRegexLib=new Object();FCKRegexLib.AposEntity=/&apos;/gi;FCKRegexLib.ObjectElements=/^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i;FCKRegexLib.BlockElements=/^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TD|TH)$/i;FCKRegexLib.EmptyElements=/^(?:BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT)$/i;FCKRegexLib.NamedCommands=/^(?:Cut|Copy|Paste|Print|SelectAll|RemoveFormat|Unlink|Undo|Redo|Bold|Italic|Underline|StrikeThrough|Subscript|Superscript|JustifyLeft|JustifyCenter|JustifyRight|JustifyFull|Outdent|Indent|InsertOrderedList|InsertUnorderedList|InsertHorizontalRule)$/i;FCKRegexLib.BodyContents=/([\s\S]*\<body[^\>]*\>)([\s\S]*)(\<\/body\>[\s\S]*)/i;FCKRegexLib.ToReplace=/___fcktoreplace:([\w]+)/ig;FCKRegexLib.MetaHttpEquiv=/http-equiv\s*=\s*["']?([^"' ]+)/i;FCKRegexLib.HasBaseTag=/<base /i;FCKRegexLib.HeadOpener=/<head\s?[^>]*>/i;FCKRegexLib.HeadCloser=/<\/head\s*>/i;FCKRegexLib.TableBorderClass=/\s*FCK__ShowTableBorders\s*/;FCKRegexLib.ElementName=/(^[A-Za-z_:][\w.\-:]*\w$)|(^[A-Za-z_]$)/;FCKRegexLib.ForceSimpleAmpersand=/___FCKAmp___/g;FCKRegexLib.SpaceNoClose=/\/>/g;FCKRegexLib.EmptyParagraph=/^<(p|div)>\s*<\/\1>$/i;FCKRegexLib.TagBody=/></;FCKRegexLib.StrongOpener=/<STRONG([ \>])/gi;FCKRegexLib.StrongCloser=/<\/STRONG>/gi;FCKRegexLib.EmOpener=/<EM([ \>])/gi;FCKRegexLib.EmCloser=/<\/EM>/gi;FCKRegexLib.GeckoEntitiesMarker=/#\?-\:/g;FCKRegexLib.ProtectUrlsAApo=/(<a\s.*?href=)("|')(.+?)\2/gi;FCKRegexLib.ProtectUrlsANoApo=/(<a\s.*?href=)([^"'][^ >]+)/gi;FCKRegexLib.ProtectUrlsImgApo=/(<img\s.*?src=)("|')(.+?)\2/gi;FCKRegexLib.ProtectUrlsImgNoApo=/(<img\s.*?src=)([^"'][^ >]+)/gi;FCKRegexLib.Html4DocType=/HTML 4\.0 Transitional/i;
+var FCKLanguageManager=FCK.Language=new Object();FCKLanguageManager.AvailableLanguages={'ar':'Arabic','bg':'Bulgarian','bn':'Bengali/Bangla','bs':'Bosnian','ca':'Catalan','cs':'Czech','da':'Danish','de':'German','el':'Greek','en':'English','en-au':'English (Australia)','en-ca':'English (Canadian)','en-uk':'English (United Kingdom)','eo':'Esperanto','es':'Spanish','et':'Estonian','eu':'Basque','fa':'Persian','fi':'Finnish','fo':'Faroese','fr':'French','gl':'Galician','he':'Hebrew','hi':'Hindi','hr':'Croatian','hu':'Hungarian','it':'Italian','ja':'Japanese','km':'Khmer','ko':'Korean','lt':'Lithuanian','lv':'Latvian','mn':'Mongolian','ms':'Malay','nl':'Dutch','no':'Norwegian','pl':'Polish','pt':'Portuguese (Portugal)','pt-br':'Portuguese (Brazil)','ro':'Romanian','ru':'Russian','sk':'Slovak','sl':'Slovenian','sr':'Serbian (Cyrillic)','sr-latn':'Serbian (Latin)','sv':'Swedish','th':'Thai','tr':'Turkish','uk':'Ukrainian','vi':'Vietnamese','zh':'Chinese Traditional','zh-cn':'Chinese Simplified'};FCKLanguageManager.GetActiveLanguage=function(){if (FCKConfig.AutoDetectLanguage){var A;if (navigator.userLanguage) A=navigator.userLanguage.toLowerCase();else if (navigator.language) A=navigator.language.toLowerCase();else{return FCKConfig.DefaultLanguage;};if (A.length>=5){A=A.substr(0,5);if (this.AvailableLanguages[A]) return A;};if (A.length>=2){A=A.substr(0,2);if (this.AvailableLanguages[A]) return A;}};return this.DefaultLanguage;};FCKLanguageManager.TranslateElements=function(A,B,C,D){var e=A.getElementsByTagName(B);var E,s;for (var i=0;i<e.length;i++){if (E=e[i].getAttribute('fckLang')){if (s=FCKLang[E]){if (D) s=FCKTools.HTMLEncode(s);eval('e[i].'+C+' = s');}}}};FCKLanguageManager.TranslatePage=function(A){this.TranslateElements(A,'INPUT','value');this.TranslateElements(A,'SPAN','innerHTML');this.TranslateElements(A,'LABEL','innerHTML');this.TranslateElements(A,'OPTION','innerHTML',true);};FCKLanguageManager.Initialize=function(){if (this.AvailableLanguages[FCKConfig.DefaultLanguage]) this.DefaultLanguage=FCKConfig.DefaultLanguage;else this.DefaultLanguage='en';this.ActiveLanguage=new Object();this.ActiveLanguage.Code=this.GetActiveLanguage();this.ActiveLanguage.Name=this.AvailableLanguages[this.ActiveLanguage.Code];}
+var FCKEvents;FCKEvents=function(A){this.Owner=A;this.RegisteredEvents=new Object();};FCKEvents.prototype.AttachEvent=function(A,B){var C;if (!(C=this.RegisteredEvents[A])) this.RegisteredEvents[A]=[B];else C.push(B);};FCKEvents.prototype.FireEvent=function(A,B){var C=true;var D=this.RegisteredEvents[A];if (D){for (var i=0;i<D.length;i++) C=(D[i](this.Owner,B)&&C);};return C;}
+var FCKXHtmlEntities=new Object();FCKXHtmlEntities.Initialize=function(){if (FCKXHtmlEntities.Entities) return;if (FCKConfig.ProcessHTMLEntities){FCKXHtmlEntities.Entities={' ':'nbsp','¡':'iexcl','¢':'cent','£':'pound','¤':'curren','¥':'yen','¦':'brvbar','§':'sect','¨':'uml','©':'copy','ª':'ordf','«':'laquo','¬':'not','­':'shy','®':'reg','¯':'macr','°':'deg','±':'plusmn','²':'sup2','³':'sup3','´':'acute','µ':'micro','¶':'para','·':'middot','¸':'cedil','¹':'sup1','º':'ordm','»':'raquo','¼':'frac14','½':'frac12','¾':'frac34','¿':'iquest','×':'times','÷':'divide','ƒ':'fnof','•':'bull','…':'hellip','′':'prime','″':'Prime','‾':'oline','⁄':'frasl','℘':'weierp','ℑ':'image','ℜ':'real','™':'trade','ℵ':'alefsym','←':'larr','↑':'uarr','→':'rarr','↓':'darr','↔':'harr','↵':'crarr','⇐':'lArr','⇑':'uArr','⇒':'rArr','⇓':'dArr','⇔':'hArr','∀':'forall','∂':'part','∃':'exist','∅':'empty','∇':'nabla','∈':'isin','∉':'notin','∋':'ni','∏':'prod','∑':'sum','−':'minus','∗':'lowast','√':'radic','∝':'prop','∞':'infin','∠':'ang','∧':'and','∨':'or','∩':'cap','∪':'cup','∫':'int','∴':'there4','∼':'sim','≅':'cong','≈':'asymp','≠':'ne','≡':'equiv','≤':'le','≥':'ge','⊂':'sub','⊃':'sup','⊄':'nsub','⊆':'sube','⊇':'supe','⊕':'oplus','⊗':'otimes','⊥':'perp','⋅':'sdot','◊':'loz','♠':'spades','♣':'clubs','♥':'hearts','♦':'diams','"':'quot','ˆ':'circ','˜':'tilde',' ':'ensp',' ':'emsp',' ':'thinsp','‌':'zwnj','‍':'zwj','‎':'lrm','‏':'rlm','–':'ndash','—':'mdash','‘':'lsquo','’':'rsquo','‚':'sbquo','“':'ldquo','”':'rdquo','„':'bdquo','†':'dagger','‡':'Dagger','‰':'permil','‹':'lsaquo','›':'rsaquo','€':'euro'};FCKXHtmlEntities.Chars='';for (var e in FCKXHtmlEntities.Entities) FCKXHtmlEntities.Chars+=e;if (FCKConfig.IncludeLatinEntities){var A={'À':'Agrave','Á':'Aacute','Â':'Acirc','Ã':'Atilde','Ä':'Auml','Å':'Aring','Æ':'AElig','Ç':'Ccedil','È':'Egrave','É':'Eacute','Ê':'Ecirc','Ë':'Euml','Ì':'Igrave','Í':'Iacute','Î':'Icirc','Ï':'Iuml','Ð':'ETH','Ñ':'Ntilde','Ò':'Ograve','Ó':'Oacute','Ô':'Ocirc','Õ':'Otilde','Ö':'Ouml','Ø':'Oslash','Ù':'Ugrave','Ú':'Uacute','Û':'Ucirc','Ü':'Uuml','Ý':'Yacute','Þ':'THORN','ß':'szlig','à':'agrave','á':'aacute','â':'acirc','ã':'atilde','ä':'auml','å':'aring','æ':'aelig','ç':'ccedil','è':'egrave','é':'eacute','ê':'ecirc','ë':'euml','ì':'igrave','í':'iacute','î':'icirc','ï':'iuml','ð':'eth','ñ':'ntilde','ò':'ograve','ó':'oacute','ô':'ocirc','õ':'otilde','ö':'ouml','ø':'oslash','ù':'ugrave','ú':'uacute','û':'ucirc','ü':'uuml','ý':'yacute','þ':'thorn','ÿ':'yuml','Œ':'OElig','œ':'oelig','Š':'Scaron','š':'scaron','Ÿ':'Yuml'};for (var e in A){FCKXHtmlEntities.Entities[e]=A[e];FCKXHtmlEntities.Chars+=e;};A=null;};if (FCKConfig.IncludeGreekEntities){var A={'Α':'Alpha','Β':'Beta','Γ':'Gamma','Δ':'Delta','Ε':'Epsilon','Ζ':'Zeta','Η':'Eta','Θ':'Theta','Ι':'Iota','Κ':'Kappa','Λ':'Lambda','Μ':'Mu','Ν':'Nu','Ξ':'Xi','Ο':'Omicron','Π':'Pi','Ρ':'Rho','Σ':'Sigma','Τ':'Tau','Υ':'Upsilon','Φ':'Phi','Χ':'Chi','Ψ':'Psi','Ω':'Omega','α':'alpha','β':'beta','γ':'gamma','δ':'delta','ε':'epsilon','ζ':'zeta','η':'eta','θ':'theta','ι':'iota','κ':'kappa','λ':'lambda','μ':'mu','ν':'nu','ξ':'xi','ο':'omicron','π':'pi','ρ':'rho','ς':'sigmaf','σ':'sigma','τ':'tau','υ':'upsilon','φ':'phi','χ':'chi','ψ':'psi','ω':'omega'};for (var e in A){FCKXHtmlEntities.Entities[e]=A[e];FCKXHtmlEntities.Chars+=e;};A=null;};FCKXHtmlEntities.EntitiesRegex=new RegExp('['+FCKXHtmlEntities.Chars+']|[^'+FCKXHtmlEntities.Chars+']+','g');}else{FCKXHtmlEntities.Entities={ ' ':'nbsp' };FCKXHtmlEntities.EntitiesRegex=/[ ]|[^ ]+/g;}}
+var FCKXHtml=new Object();FCKXHtml.CurrentJobNum=0;FCKXHtml.GetXHTML=function(A,B,C){FCKXHtmlEntities.Initialize();this._CreateNode=FCKConfig.ForceStrongEm?FCKXHtml_CreateNode_StrongEm:FCKXHtml_CreateNode_Normal;FCKXHtml.SpecialBlocks=new Array();this.XML=FCKTools.CreateXmlObject('DOMDocument');this.MainNode=this.XML.appendChild(this.XML.createElement('xhtml'));FCKXHtml.CurrentJobNum++;if (B) this._AppendNode(this.MainNode,A);else this._AppendChildNodes(this.MainNode,A,false);var D=this._GetMainXmlString();D=D.substr(7,D.length-15).trim();if (FCKBrowserInfo.IsGecko) D=D.replace(/<br\/>$/,'');D=D.replace(FCKRegexLib.SpaceNoClose,' />');if (FCKConfig.ForceSimpleAmpersand) D=D.replace(FCKRegexLib.ForceSimpleAmpersand,'&');if (C) D=FCKCodeFormatter.Format(D);for (var i=0;i<FCKXHtml.SpecialBlocks.length;i++){var E=new RegExp('___FCKsi___'+i);D=D.replace(E,FCKXHtml.SpecialBlocks[i]);};this.XML=null;return D};FCKXHtml._AppendAttribute=function(A,B,C){try{var D=this.XML.createAttribute(B);D.value=C?C:'';A.attributes.setNamedItem(D);}catch (e){}};FCKXHtml._AppendChildNodes=function(A,B,C){var D=0;var E=B.firstChild;while (E){if (this._AppendNode(A,E)) D++;E=E.nextSibling;};if (D==0){if (C&&FCKConfig.FillEmptyBlocks){this._AppendEntity(A,'nbsp');return;};if (!FCKRegexLib.EmptyElements.test(B.nodeName)) A.appendChild(this.XML.createTextNode(''));}};FCKXHtml._AppendNode=function(A,B){if (!B) return;switch (B.nodeType){case 1:if (B.getAttribute('_fckfakelement')) return FCKXHtml._AppendNode(A,FCK.GetRealElement(B));if (FCKBrowserInfo.IsGecko&&B.hasAttribute('_moz_editor_bogus_node')) return false;if (B.getAttribute('_fcktemp')) return false;var C=B.nodeName;if (FCKBrowserInfo.IsIE&&B.scopeName&&B.scopeName!='HTML') C=B.scopeName+':'+C;if (!FCKRegexLib.ElementName.test(C)) return false;C=C.toLowerCase();if (FCKBrowserInfo.IsGecko&&C=='br'&&B.hasAttribute('type')&&B.getAttribute('type',2)=='_moz') return false;if (B._fckxhtmljob&&B._fckxhtmljob==FCKXHtml.CurrentJobNum) return false;var D=this._CreateNode(C);FCKXHtml._AppendAttributes(A,B,D,C);B._fckxhtmljob=FCKXHtml.CurrentJobNum;var E=FCKXHtml.TagProcessors[C];if (E){D=E(D,B,A);if (!D) break;}else this._AppendChildNodes(D,B,FCKRegexLib.BlockElements.test(C));A.appendChild(D);break;case 3:this._AppendTextNode(A,B.nodeValue.replaceNewLineChars(' '));break;case 8:try { A.appendChild(this.XML.createComment(B.nodeValue));}catch (e) { /* Do nothing... probably this is a wrong format comment. */};break;default:A.appendChild(this.XML.createComment("Element not supported - Type: "+B.nodeType+" Name: "+B.nodeName));break;};return true;};function FCKXHtml_CreateNode_StrongEm(nodeName){switch (nodeName){case 'b':nodeName='strong';break;case 'i':nodeName='em';break;};return this.XML.createElement(nodeName);};function FCKXHtml_CreateNode_Normal(nodeName){return this.XML.createElement(nodeName);};FCKXHtml._AppendSpecialItem=function(A){return '___FCKsi___'+FCKXHtml.SpecialBlocks.AddItem(A);};FCKXHtml._AppendTextNode=function(A,B){var C=B.match(FCKXHtmlEntities.EntitiesRegex);if (C){for (var i=0;i<C.length;i++){if (C[i].length==1){var D=FCKXHtmlEntities.Entities[C[i]];if (D!=null){this._AppendEntity(A,D);continue;}};A.appendChild(this.XML.createTextNode(C[i]));}}};FCKXHtml.TagProcessors=new Object();FCKXHtml.TagProcessors['img']=function(A,B){if (!A.attributes.getNamedItem('alt')) FCKXHtml._AppendAttribute(A,'alt','');var C=B.getAttribute('_fcksavedurl');if (C&&C.length>0) FCKXHtml._AppendAttribute(A,'src',C);return A;};FCKXHtml.TagProcessors['a']=function(A,B){var C=B.getAttribute('_fcksavedurl');if (C&&C.length>0) FCKXHtml._AppendAttribute(A,'href',C);FCKXHtml._AppendChildNodes(A,B,false);return A;};FCKXHtml.TagProcessors['script']=function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/javascript');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.text)));return A;};FCKXHtml.TagProcessors['style']=function(A,B){if (!A.attributes.getNamedItem('type')) FCKXHtml._AppendAttribute(A,'type','text/css');A.appendChild(FCKXHtml.XML.createTextNode(FCKXHtml._AppendSpecialItem(B.innerHTML)));return A;};FCKXHtml.TagProcessors['title']=function(A,B){A.appendChild(FCKXHtml.XML.createTextNode(FCK.EditorDocument.title));return A;};FCKXHtml.TagProcessors['table']=function(A,B){var C=A.attributes.getNamedItem('class');if (C&&FCKRegexLib.TableBorderClass.test(C.nodeValue)){var D=C.nodeValue.replace(FCKRegexLib.TableBorderClass,'');if (D.length==0) A.attributes.removeNamedItem('class');else FCKXHtml._AppendAttribute(A,'class',D);};FCKXHtml._AppendChildNodes(A,B,false);return A;};FCKXHtml.TagProcessors['ol']=FCKXHtml.TagProcessors['ul']=function(A,B,C){if (B.innerHTML.trim().length==0) return;var D=C.lastChild;if (D&&D.nodeType==3) D=D.previousSibling;if (D&&D.nodeName.toUpperCase()=='LI'){B._fckxhtmljob=null;FCKXHtml._AppendNode(D,B);return;};FCKXHtml._AppendChildNodes(A,B);return A;}
+FCKXHtml._GetMainXmlString=function(){return this.MainNode.xml;};FCKXHtml._AppendEntity=function(A,B){A.appendChild(this.XML.createEntityReference(B));};FCKXHtml._AppendAttributes=function(A,B,C,D){var E=B.attributes;for (var n=0;n<E.length;n++){var F=E[n];if (F.specified){var G=F.nodeName.toLowerCase();var H;if (G.startsWith('_fck')) continue;else if (G=='style') H=B.style.cssText;else if (G=='class'||G.indexOf('on')==0) H=F.nodeValue;else if (D=='body'&&G=='contenteditable') continue;else if (F.nodeValue===true) H=G;else if (!(H=B.getAttribute(G,2))) H=F.nodeValue;if (FCKConfig.ForceSimpleAmpersand&&H.replace) H=H.replace(/&/g,'___FCKAmp___');this._AppendAttribute(C,G,H);}}};FCKXHtml.TagProcessors['meta']=function(A,B){var C=A.attributes.getNamedItem('http-equiv');if (C==null||C.value.length==0){var D=B.outerHTML.match(FCKRegexLib.MetaHttpEquiv);if (D){D=D[1];FCKXHtml._AppendAttribute(A,'http-equiv',D);}};return A;};FCKXHtml.TagProcessors['font']=function(A,B){if (A.attributes.length==0) A=FCKXHtml.XML.createDocumentFragment();FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['input']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);if (B.value&&!A.attributes.getNamedItem('value')) FCKXHtml._AppendAttribute(A,'value',B.value);return A;};FCKXHtml.TagProcessors['option']=function(A,B){if (B.selected&&!A.attributes.getNamedItem('selected')) FCKXHtml._AppendAttribute(A,'selected','selected');FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['abbr']=function(A,B){var C=B.nextSibling;while (true){if (C&&C.nodeName!='/ABBR'){FCKXHtml._AppendNode(A,C);C=C.nextSibling;}else break;};return A;};FCKXHtml.TagProcessors['area']=function(A,B){if (!A.attributes.getNamedItem('coords')){var C=B.getAttribute('coords',2);if (C&&C!='0,0,0') FCKXHtml._AppendAttribute(A,'coords',C);};if (!A.attributes.getNamedItem('shape')){var C=B.getAttribute('shape',2);if (C&&C.length>0) FCKXHtml._AppendAttribute(A,'shape',C);};return A;};FCKXHtml.TagProcessors['label']=function(A,B){if (B.htmlFor.length>0) FCKXHtml._AppendAttribute(A,'for',B.htmlFor);FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['form']=function(A,B){if (B.acceptCharset&&B.acceptCharset.length>0&&B.acceptCharset!='UNKNOWN') FCKXHtml._AppendAttribute(A,'accept-charset',B.acceptCharset);if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['textarea']=FCKXHtml.TagProcessors['select']=function(A,B){if (B.name) FCKXHtml._AppendAttribute(A,'name',B.name);FCKXHtml._AppendChildNodes(A,B);return A;};FCKXHtml.TagProcessors['div']=function(A,B){if (B.align.length>0) FCKXHtml._AppendAttribute(A,'align',B.align);FCKXHtml._AppendChildNodes(A,B);return A;}
+var FCKCodeFormatter=new Object();FCKCodeFormatter.Init=function(){var A=this.Regex=new Object();A.BlocksOpener=/\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.BlocksCloser=/\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi;A.NewLineTags=/\<(BR|HR)[^\>]*\>/gi;A.MainTags=/\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi;A.LineSplitter=/\s*\n+\s*/g;A.IncreaseIndent=/^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/\>]/i;A.DecreaseIndent=/^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \>]/i;A.FormatIndentatorRemove=new RegExp('^'+FCKConfig.FormatIndentator);A.ProtectedTags=/(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi;};FCKCodeFormatter._ProtectData=function(A,B,C,D){return B+'___FCKpd___'+FCKCodeFormatter.ProtectedData.AddItem(C)+D;};FCKCodeFormatter.Format=function(A){if (!this.Regex) this.Init();FCKCodeFormatter.ProtectedData=new Array();var B=A.replace(this.Regex.ProtectedTags,FCKCodeFormatter._ProtectData);B=B.replace(this.Regex.BlocksOpener,'\n$&');;B=B.replace(this.Regex.BlocksCloser,'$&\n');B=B.replace(this.Regex.NewLineTags,'$&\n');B=B.replace(this.Regex.MainTags,'\n$&\n');var C='';var D=B.split(this.Regex.LineSplitter);B='';for (var i=0;i<D.length;i++){var E=D[i];if (E.length==0) continue;if (this.Regex.DecreaseIndent.test(E)) C=C.replace(this.Regex.FormatIndentatorRemove,'');B+=C+E+'\n';if (this.Regex.IncreaseIndent.test(E)) C+=FCKConfig.FormatIndentator;};for (var i=0;i<FCKCodeFormatter.ProtectedData.length;i++){var F=new RegExp('___FCKpd___'+i);B=B.replace(F,FCKCodeFormatter.ProtectedData[i].replace(/\$/g,'$$$$'));};return B.trim();}
+var FCKUndo=new Object();FCKUndo.SavedData=new Array();FCKUndo.CurrentIndex=-1;FCKUndo.TypesCount=FCKUndo.MaxTypes=25;FCKUndo.Typing=false;FCKUndo.SaveUndoStep=function(){if (FCK.EditMode!=FCK_EDITMODE_WYSIWYG) return;FCKUndo.SavedData=FCKUndo.SavedData.slice(0,FCKUndo.CurrentIndex+1);var A=FCK.EditorDocument.body.innerHTML;if (FCKUndo.CurrentIndex>=0&&A==FCKUndo.SavedData[FCKUndo.CurrentIndex][0]) return;if (FCKUndo.CurrentIndex+1>=FCKConfig.MaxUndoLevels) FCKUndo.SavedData.shift();else FCKUndo.CurrentIndex++;var B;if (FCK.EditorDocument.selection.type=='Text') B=FCK.EditorDocument.selection.createRange().getBookmark();FCKUndo.SavedData[FCKUndo.CurrentIndex]=[A,B];FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.CheckUndoState=function(){return (FCKUndo.Typing||FCKUndo.CurrentIndex>0);};FCKUndo.CheckRedoState=function(){return (!FCKUndo.Typing&&FCKUndo.CurrentIndex<(FCKUndo.SavedData.length-1));};FCKUndo.Undo=function(){if (FCKUndo.CheckUndoState()){if (FCKUndo.CurrentIndex==(FCKUndo.SavedData.length-1)){FCKUndo.SaveUndoStep();};FCKUndo._ApplyUndoLevel(--FCKUndo.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo.Redo=function(){if (FCKUndo.CheckRedoState()){FCKUndo._ApplyUndoLevel(++FCKUndo.CurrentIndex);FCK.Events.FireEvent("OnSelectionChange");}};FCKUndo._ApplyUndoLevel=function(A){var B=FCKUndo.SavedData[A];if (!B) return;FCK.SetInnerHtml(B[0]);if (B[1]){var C=FCK.EditorDocument.selection.createRange();C.moveToBookmark(B[1]);C.select();};FCKUndo.TypesCount=0;FCKUndo.Typing=false;}
+var FCKEditingArea=function(A){this.TargetElement=A;this.Mode=FCK_EDITMODE_WYSIWYG;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKEditingArea_Cleanup);};FCKEditingArea.prototype.Start=function(A,B){var C=this.TargetElement;var D=FCKTools.GetElementDocument(C);while(C.childNodes.length>0) C.removeChild(C.childNodes[0]);if (this.Mode==FCK_EDITMODE_WYSIWYG){if (FCKBrowserInfo.IsGecko) A=A.replace(/(<body[^>]*>)\s*(<\/body>)/i,'$1'+GECKO_BOGUS+'$2');var E=this.IFrame=D.createElement('iframe');E.src='javascript:void(0)';E.frameBorder=0;E.width=E.height='100%';C.appendChild(E);if (FCKBrowserInfo.IsIE) A=A.replace(/(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi,'$1></base>');this.Window=E.contentWindow;var F=this.Document=this.Window.document;F.open();F.write(A);F.close();if (FCKBrowserInfo.IsGecko10&&!B){this.Start(A,true);return;};this.Window._FCKEditingArea=this;if (FCKBrowserInfo.IsGecko10) this.Window.setTimeout(FCKEditingArea_CompleteStart,500);else FCKEditingArea_CompleteStart.call(this.Window);}else{var G=this.Textarea=D.createElement('textarea');G.className='SourceField';G.dir='ltr';G.style.width=G.style.height='100%';G.style.border='none';C.appendChild(G);G.value=A;FCKTools.RunFunction(this.OnLoad);}};function FCKEditingArea_CompleteStart(){if (!this.document.body){this.setTimeout(FCKEditingArea_CompleteStart,50);return;};var oEditorArea=this._FCKEditingArea;oEditorArea.MakeEditable();FCKTools.RunFunction(oEditorArea.OnLoad);};FCKEditingArea.prototype.MakeEditable=function(){var A=this.Document;if (FCKBrowserInfo.IsIE) A.body.contentEditable=true;else{try{A.designMode='on';A.execCommand('useCSS',false,!FCKConfig.GeckoUseSPAN);A.execCommand('enableObjectResizing',false,!FCKConfig.DisableObjectResizing);A.execCommand('enableInlineTableEditing',false,!FCKConfig.DisableFFTableHandles);}catch (e) {}}};FCKEditingArea.prototype.Focus=function(){try{if (this.Mode==FCK_EDITMODE_WYSIWYG){if (FCKBrowserInfo.IsSafari) this.IFrame.focus();else this.Window.focus();}else this.Textarea.focus();}catch(e) {}};function FCKEditingArea_Cleanup(){this.TargetElement=null;this.IFrame=null;this.Document=null;this.Textarea=null;if (this.Window){this.Window._FCKEditingArea=null;this.Window=null;}}
+var FCKDocumentProcessor=new Object();FCKDocumentProcessor._Items=new Array();FCKDocumentProcessor.AppendNew=function(){var A=new Object();this._Items.AddItem(A);return A;};FCKDocumentProcessor.Process=function(A){var B,i=0;while((B=this._Items[i++])) B.ProcessDocument(A);};var FCKDocumentProcessor_CreateFakeImage=function(A,B){var C=FCK.EditorDocument.createElement('IMG');C.className=A;C.src=FCKConfig.FullBasePath+'images/spacer.gif';C.setAttribute('_fckfakelement','true',0);C.setAttribute('_fckrealelement',FCKTempBin.AddElement(B),0);return C;};var FCKAnchorsProcessor=FCKDocumentProcessor.AppendNew();FCKAnchorsProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('A');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.name.length>0&&(!C.getAttribute('href')||C.getAttribute('href').length==0)){var D=FCKDocumentProcessor_CreateFakeImage('FCK__Anchor',C.cloneNode(true));D.setAttribute('_fckanchor','true',0);C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};var FCKPageBreaksProcessor=FCKDocumentProcessor.AppendNew();FCKPageBreaksProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('DIV');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.style.pageBreakAfter=='always'&&C.childNodes.length==1&&C.childNodes[0].style&&C.childNodes[0].style.display=='none'){var D=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',C.cloneNode(true));C.parentNode.insertBefore(D,C);C.parentNode.removeChild(C);}}};var FCKFlashProcessor=FCKDocumentProcessor.AppendNew();FCKFlashProcessor.ProcessDocument=function(A){var B=A.getElementsByTagName('EMBED');var C;var i=B.length-1;while (i>=0&&(C=B[i--])){if (C.src.endsWith('.swf',true)){var D=C.cloneNode(true);if (FCKBrowserInfo.IsIE){var E;if (E=C.getAttribute('scale')) D.setAttribute('scale',E);if (E=C.getAttribute('play')) D.setAttribute('play',E);if (E=C.getAttribute('loop')) D.setAttribute('loop',E);if (E=C.getAttribute('menu')) D.setAttribute('menu',E);if (E=C.getAttribute('wmode')) D.setAttribute('wmode',E);if (E=C.getAttribute('quality')) D.setAttribute('quality',E);};var F=FCKDocumentProcessor_CreateFakeImage('FCK__Flash',D);F.setAttribute('_fckflash','true',0);FCKFlashProcessor.RefreshView(F,C);C.parentNode.insertBefore(F,C);C.parentNode.removeChild(C);}}};FCKFlashProcessor.RefreshView=function(A,B){if (B.width>0) A.style.width=FCKTools.ConvertHtmlSizeToStyle(B.width);if (B.height>0) A.style.height=FCKTools.ConvertHtmlSizeToStyle(B.height);};FCK.GetRealElement=function(A){var e=FCKTempBin.Elements[A.getAttribute('_fckrealelement')];if (A.getAttribute('_fckflash')){if (A.style.width.length>0) e.width=FCKTools.ConvertStyleSizeToHtml(A.style.width);if (A.style.height.length>0) e.height=FCKTools.ConvertStyleSizeToHtml(A.style.height);};return e;};
+var FCK_StartupValue;FCK.Events=new FCKEvents(FCK);FCK.Toolbar=null;FCK.HasFocus=false;FCK.StartEditor=function(){FCK.TempBaseTag=FCKConfig.BaseHref.length>0?'<base href="'+FCKConfig.BaseHref+'" _fcktemp="true"></base>':'';FCK.EditingArea=new FCKEditingArea(document.getElementById('xEditingArea'));this.SetHTML(FCKTools.GetLinkedFieldValue());};FCK.Focus=function(){FCK.EditingArea.Focus();};FCK.SetStatus=function(A){this.Status=A;if (A==FCK_STATUS_ACTIVE){FCKFocusManager.AddWindow(window,true);if (FCKBrowserInfo.IsIE) FCKFocusManager.AddWindow(window.frameElement,true);if (FCKConfig.StartupFocus) FCK.Focus();};this.Events.FireEvent('OnStatusChange',A);};FCK.GetHTML=FCK.GetXHTML=function(A){if (FCK.EditMode==FCK_EDITMODE_SOURCE) return FCK.EditingArea.Textarea.value;var B;if (FCKConfig.FullPage) B=FCKXHtml.GetXHTML(this.EditorDocument.getElementsByTagName('html')[0],true,A);else{if (FCKConfig.IgnoreEmptyParagraphValue&&this.EditorDocument.body.innerHTML=='<P>&nbsp;</P>') B='';else B=FCKXHtml.GetXHTML(this.EditorDocument.body,false,A);};if (FCKBrowserInfo.IsIE) B=B.replace(FCKRegexLib.ToReplace,'$1');if (FCK.DocTypeDeclaration&&FCK.DocTypeDeclaration.length>0) B=FCK.DocTypeDeclaration+'\n'+B;if (FCK.XmlDeclaration&&FCK.XmlDeclaration.length>0) B=FCK.XmlDeclaration+'\n'+B;return FCKConfig.ProtectedSource.Revert(B);};FCK.UpdateLinkedField=function(){FCK.LinkedField.value=FCK.GetXHTML(FCKConfig.FormatOutput);FCK.Events.FireEvent('OnAfterLinkedFieldUpdate');};FCK.RegisteredDoubleClickHandlers=new Object();FCK.OnDoubleClick=function(A){var B=FCK.RegisteredDoubleClickHandlers[A.tagName];if (B) B(A);};FCK.RegisterDoubleClickHandler=function(A,B){FCK.RegisteredDoubleClickHandlers[B.toUpperCase()]=A;};FCK.OnAfterSetHTML=function(){FCKDocumentProcessor.Process(FCK.EditorDocument);FCK.Events.FireEvent('OnAfterSetHTML');};FCK.ProtectUrls=function(A){A=A.replace(FCKRegexLib.ProtectUrlsAApo,'$1$2$3$2 _fcksavedurl=$2$3$2');A=A.replace(FCKRegexLib.ProtectUrlsANoApo,'$1$2 _fcksavedurl="$2"');A=A.replace(FCKRegexLib.ProtectUrlsImgApo,'$1$2$3$2 _fcksavedurl=$2$3$2');A=A.replace(FCKRegexLib.ProtectUrlsImgNoApo,'$1$2 _fcksavedurl="$2"');return A;};FCK.IsDirty=function(){return (FCK_StartupValue!=FCK.EditorDocument.body.innerHTML);};FCK.ResetIsDirty=function(){if (FCK.EditorDocument.body) FCK_StartupValue=FCK.EditorDocument.body.innerHTML;};FCK.SetHTML=function(A){this.EditingArea.Mode=FCK.EditMode;if (FCK.EditMode==FCK_EDITMODE_WYSIWYG){if (FCKBrowserInfo.IsGecko){A=A.replace(FCKRegexLib.StrongOpener,'<b$1');A=A.replace(FCKRegexLib.StrongCloser,'<\/b>');A=A.replace(FCKRegexLib.EmOpener,'<i$1');A=A.replace(FCKRegexLib.EmCloser,'<\/i>');};A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectUrls(A);var B;if (FCKConfig.FullPage){var B;if (FCKBrowserInfo.IsIE) B=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) B='<link href="'+FCKConfig.FullBasePath+'css/fck_showtableborders_gecko.css" rel="stylesheet" type="text/css" _fcktemp="true" />';B+='<link href="'+FCKConfig.FullBasePath+'css/fck_internal.css'+'" rel="stylesheet" type="text/css" _fcktemp="true" />';B=A.replace(FCKRegexLib.HeadCloser,B+'$&');if (FCK.TempBaseTag.length>0&&!FCKRegexLib.HasBaseTag.test(A)) B=B.replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);}else{B=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'"';if (FCKBrowserInfo.IsIE&&!FCKRegexLib.Html4DocType.test(FCKConfig.DocType)) B+=' style="overflow-y: scroll"';B+='><head><title></title>'+this._GetEditorAreaStyleTags()+'<link href="'+FCKConfig.FullBasePath+'css/fck_internal.css'+'" rel="stylesheet" type="text/css" _fcktemp="true" />';if (FCKBrowserInfo.IsIE) B+=FCK._GetBehaviorsStyle();else if (FCKConfig.ShowBorders) B+='<link href="'+FCKConfig.FullBasePath+'css/fck_showtableborders_gecko.css" rel="stylesheet" type="text/css" _fcktemp="true" />';B+=FCK.TempBaseTag;B+='</head><body>';if (FCKBrowserInfo.IsGecko&&(A.length==0||FCKRegexLib.EmptyParagraph.test(A))) B+=GECKO_BOGUS;else B+=A;B+='</body></html>';};this.EditingArea.OnLoad=FCK_EditingArea_OnLoad;this.EditingArea.Start(B);}else{this.EditingArea.OnLoad=null;this.EditingArea.Start(A);this.EditingArea.Textarea._FCKShowContextMenu=true;}};function FCK_EditingArea_OnLoad(){FCK.EditorWindow=FCK.EditingArea.Window;FCK.EditorDocument=FCK.EditingArea.Document;FCK.InitializeBehaviors();FCK.OnAfterSetHTML();if (FCK.Status!=FCK_STATUS_NOTLOADED) return;FCK.ResetIsDirty();FCKTools.AttachToLinkedFieldFormSubmit(FCK.UpdateLinkedField);FCKUndo.SaveUndoStep();FCK.SetStatus(FCK_STATUS_ACTIVE);};FCK._GetEditorAreaStyleTags=function(){var A='';var B=FCKConfig.EditorAreaCSS;for (var i=0;i<B.length;i++) A+='<link href="'+B[i]+'" rel="stylesheet" type="text/css" />';return A;};var FCKFocusManager=FCK.FocusManager=new Object();FCKFocusManager.IsLocked=false;FCK.HasFocus=false;FCKFocusManager.AddWindow=function(A,B){var C;if (FCKBrowserInfo.IsIE) C=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else C=A.document;FCKTools.AddEventListener(C,'blur',FCKFocusManager_Win_OnBlur);FCKTools.AddEventListener(C,'focus',B?FCKFocusManager_Win_OnFocus_Area:FCKFocusManager_Win_OnFocus);};FCKFocusManager.RemoveWindow=function(A){if (FCKBrowserInfo.IsIE) oTarget=A.nodeType==1?A:A.frameElement?A.frameElement:A.document;else oTarget=A.document;FCKTools.RemoveEventListener(oTarget,'blur',FCKFocusManager_Win_OnBlur);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus_Area);FCKTools.RemoveEventListener(oTarget,'focus',FCKFocusManager_Win_OnFocus);};FCKFocusManager.Lock=function(){this.IsLocked=true;};FCKFocusManager.Unlock=function(){if (this._HasPendingBlur) FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);this.IsLocked=false;};FCKFocusManager._ResetTimer=function(){this._HasPendingBlur=false;if (this._Timer){window.clearTimeout(this._Timer);delete this._Timer;}};function FCKFocusManager_Win_OnBlur(){if (FCK&&FCK.HasFocus){FCKFocusManager._ResetTimer();FCKFocusManager._Timer=window.setTimeout(FCKFocusManager_FireOnBlur,100);}};function FCKFocusManager_FireOnBlur(){if (FCKFocusManager.IsLocked) FCKFocusManager._HasPendingBlur=true;else{FCK.HasFocus=false;FCK.Events.FireEvent("OnBlur");}};function FCKFocusManager_Win_OnFocus_Area(){FCKFocusManager_Win_OnFocus();FCK.Focus();};function FCKFocusManager_Win_OnFocus(){FCKFocusManager._ResetTimer();if (!FCK.HasFocus&&!FCKFocusManager.IsLocked){FCK.HasFocus=true;FCK.Events.FireEvent("OnFocus");}}
+FCK.Description="FCKeditor for Internet Explorer 5.5+";FCK._GetBehaviorsStyle=function(){if (!FCK._BehaviorsStyle){var A=FCKConfig.FullBasePath;var B='';var C;C='<style type="text/css" _fcktemp="true">'+'INPUT { behavior: url('+A+'css/behaviors/hiddenfield.htc) ; }';if (FCKConfig.ShowBorders) B='url('+A+'css/behaviors/showtableborders.htc)';C+='INPUT,TEXTAREA,SELECT,.FCK__Anchor,.FCK__PageBreak';if (FCKConfig.DisableObjectResizing){C+=',IMG';B+=' url('+A+'css/behaviors/disablehandles.htc)';};C+=' { behavior: url('+A+'css/behaviors/disablehandles.htc) ; }';if (B.length>0) C+='TABLE { behavior: '+B+' ; }';C+='</style>';FCK._BehaviorsStyle=C;};return FCK._BehaviorsStyle;};function Doc_OnMouseUp(){if (FCK.EditorWindow.event.srcElement.tagName=='HTML'){FCK.Focus();FCK.EditorWindow.event.cancelBubble=true;FCK.EditorWindow.event.returnValue=false;}};function Doc_OnPaste(){if (FCK.Status==FCK_STATUS_COMPLETE) FCK.Events.FireEvent("OnPaste");return false;};function Doc_OnKeyDown(){var e=FCK.EditorWindow.event;switch (e.keyCode){case 13:if (FCKConfig.UseBROnCarriageReturn&&!(e.ctrlKey||e.altKey||e.shiftKey)){Doc_OnKeyDownUndo();if (FCK.EditorDocument.queryCommandState('InsertOrderedList')||FCK.EditorDocument.queryCommandState('InsertUnorderedList')) return true;FCK.InsertHtml('<br>&nbsp;');var oRange=FCK.EditorDocument.selection.createRange();oRange.moveStart('character',-1);oRange.select();FCK.EditorDocument.selection.clear();return false;};break;case 8:if (FCKSelection.GetType()=='Control'){FCKSelection.Delete();return false;};break;case 9:if (FCKConfig.TabSpaces>0&&!(e.ctrlKey||e.altKey||e.shiftKey)){Doc_OnKeyDownUndo();FCK.InsertHtml(window.FCKTabHTML);return false;};break;case 90:if (e.ctrlKey&&!(e.altKey||e.shiftKey)){FCKUndo.Undo();return false;};break;case 89:if (e.ctrlKey&&!(e.altKey||e.shiftKey)){FCKUndo.Redo();return false;};break;};if (!(e.keyCode>=16&&e.keyCode<=18)) Doc_OnKeyDownUndo();return true;};function Doc_OnKeyDownUndo(){if (!FCKUndo.Typing){FCKUndo.SaveUndoStep();FCKUndo.Typing=true;FCK.Events.FireEvent("OnSelectionChange");};FCKUndo.TypesCount++;if (FCKUndo.TypesCount>FCKUndo.MaxTypes){FCKUndo.TypesCount=0;FCKUndo.SaveUndoStep();}};function Doc_OnDblClick(){FCK.OnDoubleClick(FCK.EditorWindow.event.srcElement);FCK.EditorWindow.event.cancelBubble=true;};function Doc_OnSelectionChange(){FCK.Events.FireEvent("OnSelectionChange");};FCK.InitializeBehaviors=function(A){this.EditorDocument.attachEvent('onmouseup',Doc_OnMouseUp);this.EditorDocument.body.attachEvent('onpaste',Doc_OnPaste);FCK.ContextMenu._InnerContextMenu.AttachToElement(FCK.EditorDocument.body);if (FCKConfig.TabSpaces>0){window.FCKTabHTML='';for (i=0;i<FCKConfig.TabSpaces;i++) window.FCKTabHTML+="&nbsp;";};this.EditorDocument.attachEvent("onkeydown",Doc_OnKeyDown);this.EditorDocument.attachEvent("ondblclick",Doc_OnDblClick);this.EditorDocument.attachEvent("onselectionchange",Doc_OnSelectionChange);};FCK.InsertHtml=function(A){A=FCKConfig.ProtectedSource.Protect(A);A=FCK.ProtectUrls(A);FCK.Focus();FCKUndo.SaveUndoStep();var B=FCK.EditorDocument.selection;if (B.type.toLowerCase()=='control') B.clear();B.createRange().pasteHTML(A);};FCK.SetInnerHtml=function(A){var B=FCK.EditorDocument;B.body.innerHTML='<div id="__fakeFCKRemove__">&nbsp;</div>'+A;B.getElementById('__fakeFCKRemove__').removeNode(true);};var FCK_PreloadImages_Count=0;var FCK_PreloadImages_Images=new Array();function FCK_PreloadImages(){var aImages=FCKConfig.PreloadImages||[];if (typeof(aImages)=='string') aImages=aImages.split(';');aImages.push(FCKConfig.SkinPath+'fck_strip.gif');FCK_PreloadImages_Count=aImages.length;var aImageElements=new Array();for (var i=0;i<aImages.length;i++){var eImg=document.createElement('img');eImg.onload=eImg.onerror=FCK_PreloadImages_OnImage;eImg.src=aImages[i];FCK_PreloadImages_Images[i]=eImg;}};function FCK_PreloadImages_OnImage(){if ((--FCK_PreloadImages_Count)==0) FCKTools.RunFunction(LoadToolbarSetup);};function Document_OnContextMenu(){return (event.srcElement._FCKShowContextMenu==true);};document.oncontextmenu=Document_OnContextMenu;function FCK_Cleanup(){this.EditorWindow=null;this.EditorDocument=null;}
+FCK.RedirectNamedCommands=new Object();FCK.ExecuteNamedCommand=function(A,B,C){FCKUndo.SaveUndoStep();if (!C&&FCK.RedirectNamedCommands[A]!=null) FCK.ExecuteRedirectedNamedCommand(A,B);else{FCK.Focus();FCK.EditorDocument.execCommand(A,false,B);FCK.Events.FireEvent('OnSelectionChange');};FCKUndo.SaveUndoStep();};FCK.GetNamedCommandState=function(A){try{if (!FCK.EditorDocument.queryCommandEnabled(A)) return FCK_TRISTATE_DISABLED;else return FCK.EditorDocument.queryCommandState(A)?FCK_TRISTATE_ON:FCK_TRISTATE_OFF;}catch (e){return FCK_TRISTATE_OFF;}};FCK.GetNamedCommandValue=function(A){var B='';var C=FCK.GetNamedCommandState(A);if (C==FCK_TRISTATE_DISABLED) return null;try{B=this.EditorDocument.queryCommandValue(A);}catch(e) {};return B?B:'';};FCK.PasteFromWord=function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');};FCK.Preview=function(){var A=FCKConfig.ScreenWidth*0.8;var B=FCKConfig.ScreenHeight*0.7;var C=(FCKConfig.ScreenWidth-A)/2;var D=window.open('',null,'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='+A+',height='+B+',left='+C);var E;if (FCKConfig.FullPage){if (FCK.TempBaseTag.length>0) E=FCK.GetXHTML().replace(FCKRegexLib.HeadOpener,'$&'+FCK.TempBaseTag);else E=FCK.GetXHTML();}else{E=FCKConfig.DocType+'<html dir="'+FCKConfig.ContentLangDirection+'">'+'<head>'+FCK.TempBaseTag+'<title>'+FCKLang.Preview+'</title>'+FCK._GetEditorAreaStyleTags()+'</head><body>'+FCK.GetXHTML()+'</body></html>';};D.document.write(E);D.document.close();};FCK.SwitchEditMode=function(A){var B=(FCK.EditMode==FCK_EDITMODE_WYSIWYG);var C;if (B){if (!A&&FCKBrowserInfo.IsIE) FCKUndo.SaveUndoStep();C=FCK.GetXHTML(FCKConfig.FormatSource);}else C=this.EditingArea.Textarea.value;FCK.EditMode=B?FCK_EDITMODE_SOURCE:FCK_EDITMODE_WYSIWYG;FCK.SetHTML(C);if (FCKBrowserInfo.IsGecko) window.onresize();FCK.Focus();FCKTools.RunFunction(FCK.ToolbarSet.RefreshModeState,FCK.ToolbarSet);};FCK.CreateElement=function(A){var e=FCK.EditorDocument.createElement(A);return FCK.InsertElementAndGetIt(e);};FCK.InsertElementAndGetIt=function(e){e.setAttribute('FCKTempLabel','true');this.InsertElement(e);var A=FCK.EditorDocument.getElementsByTagName(e.tagName);for (var i=0;i<A.length;i++){if (A[i].getAttribute('FCKTempLabel')){A[i].removeAttribute('FCKTempLabel');return A[i];}};return null;};
+FCK.Paste=function(){if (FCKConfig.ForcePasteAsPlainText){FCK.PasteAsPlainText();return;};var A=FCK.GetClipboardHTML();if (FCKConfig.AutoDetectPasteFromWord){var B=/<\w[^>]*(( class="?MsoNormal"?)|(="mso-))/gi;if (B.test(A)){if (confirm(FCKLang["PasteWordConfirm"])){FCK.PasteFromWord();return;}}};FCK.InsertHtml(A);};FCK.PasteAsPlainText=function(){var A=FCKTools.HTMLEncode(clipboardData.getData("Text"));A=A.replace(/\n/g,'<BR>');this.InsertHtml(A);};FCK.InsertElement=function(A){FCK.InsertHtml(A.outerHTML);};FCK.GetClipboardHTML=function(){var A=document.getElementById('___FCKHiddenDiv');if (!A){var A=document.createElement('DIV');A.id='___FCKHiddenDiv';A.style.visibility='hidden';A.style.overflow='hidden';A.style.position='absolute';A.style.width=1;A.style.height=1;document.body.appendChild(A);};A.innerHTML='';var C=document.body.createTextRange();C.moveToElementText(A);C.execCommand('Paste');var D=A.innerHTML;A.innerHTML='';return D;};FCK.AttachToOnSelectionChange=function(A){this.Events.AttachEvent('OnSelectionChange',A);};FCK.CreateLink=function(A){FCK.ExecuteNamedCommand('Unlink');if (A.length>0){var B='javascript:void(0);/*'+(new Date().getTime())+'*/';FCK.ExecuteNamedCommand('CreateLink',B);var C=this.EditorDocument.links;for (i=0;i<C.length;i++){if (C[i].href==B){C[i].href=A;return C[i];}}}};
+var FCKSelection=FCK.Selection=new Object();
+FCKSelection.GetType=function(){return FCK.EditorDocument.selection.type;};FCKSelection.GetSelectedElement=function(){if (this.GetType()=='Control'){var A=FCK.EditorDocument.selection.createRange();if (A&&A.item) return FCK.EditorDocument.selection.createRange().item(0);}};FCKSelection.GetParentElement=function(){switch (this.GetType()){case 'Control':return FCKSelection.GetSelectedElement().parentElement;case 'None':return;default:return FCK.EditorDocument.selection.createRange().parentElement();}};FCKSelection.SelectNode=function(A){FCK.Focus();FCK.EditorDocument.selection.empty();try{var B=FCK.EditorDocument.body.createControlRange();B.addElement(A);}catch(e){var B=FCK.EditorDocument.selection.createRange();B.moveToElementText(A);};B.select();};FCKSelection.Collapse=function(A){FCK.Focus();if (this.GetType()=='Text'){var B=FCK.EditorDocument.selection.createRange();B.collapse(A==null||A===true);B.select();}};FCKSelection.HasAncestorNode=function(A){var B;if (FCK.EditorDocument.selection.type=="Control"){B=this.GetSelectedElement();}else{var C=FCK.EditorDocument.selection.createRange();B=C.parentElement();};while (B){if (B.tagName==A) return true;B=B.parentNode;};return false;};FCKSelection.MoveToAncestorNode=function(A){var B;if (FCK.EditorDocument.selection.type=="Control"){var C=FCK.EditorDocument.selection.createRange();for (i=0;i<C.length;i++){if (C(i).parentNode){B=C(i).parentNode;break;}}}else{var C=FCK.EditorDocument.selection.createRange();B=C.parentElement();};while (B&&B.nodeName!=A) B=B.parentNode;return B;};FCKSelection.Delete=function(){var A=FCK.EditorDocument.selection;if (A.type.toLowerCase()!="none"){A.clear();};return A;};
+var FCKTableHandler=new Object();FCKTableHandler.InsertRow=function(){var A=FCKSelection.MoveToAncestorNode("TR");if (!A) return;var B=A.cloneNode(true);A.parentNode.insertBefore(B,A);FCKTableHandler.ClearRow(A);};FCKTableHandler.DeleteRows=function(A){if (!A) A=FCKSelection.MoveToAncestorNode("TR");if (!A) return;var B=FCKTools.GetElementAscensor(A,'TABLE');if (B.rows.length==1){FCKTableHandler.DeleteTable(B);return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteTable=function(A){if (!A){var A=FCKSelection.GetSelectedElement();if (!A||A.tagName!='TABLE') A=FCKSelection.MoveToAncestorNode("TABLE");};if (!A) return;FCKSelection.SelectNode(A);FCKSelection.Collapse();A.parentNode.removeChild(A);};FCKTableHandler.InsertColumn=function(){var A=FCKSelection.MoveToAncestorNode("TD");if (!A) A=FCKSelection.MoveToAncestorNode("TH");if (!A) return;var B=FCKTools.GetElementAscensor(A,'TABLE');var C=A.cellIndex+1;for (var i=0;i<B.rows.length;i++){var D=B.rows[i];if (D.cells.length<C) continue;A=D.cells[C-1].cloneNode(false);if (FCKBrowserInfo.IsGecko) A.innerHTML=GECKO_BOGUS;var E=D.cells[C];if (E) D.insertBefore(A,E);else D.appendChild(A);}};FCKTableHandler.DeleteColumns=function(){var A=FCKSelection.MoveToAncestorNode('TD')||FCKSelection.MoveToAncestorNode('TH');if (!A) return;var B=FCKTools.GetElementAscensor(A,'TABLE');var C=A.cellIndex;for (var i=B.rows.length-1;i>=0;i--){var D=B.rows[i];if (C==0&&D.cells.length==1){FCKTableHandler.DeleteRows(D);continue;};if (D.cells[C]) D.removeChild(D.cells[C]);}};FCKTableHandler.InsertCell=function(A){var B=A?A:FCKSelection.MoveToAncestorNode("TD");if (!B) return;var C=FCK.EditorDocument.createElement("TD");if (FCKBrowserInfo.IsGecko) C.innerHTML=GECKO_BOGUS;if (B.cellIndex==B.parentNode.cells.length-1){B.parentNode.appendChild(C);}else{B.parentNode.insertBefore(C,B.nextSibling);};return C;};FCKTableHandler.DeleteCell=function(A){if (A.parentNode.cells.length==1){FCKTableHandler.DeleteRows(FCKTools.GetElementAscensor(A,'TR'));return;};A.parentNode.removeChild(A);};FCKTableHandler.DeleteCells=function(){var A=FCKTableHandler.GetSelectedCells();for (var i=A.length-1;i>=0;i--){FCKTableHandler.DeleteCell(A[i]);}};FCKTableHandler.MergeCells=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length<2) return;if (A[0].parentNode!=A[A.length-1].parentNode) return;var B=isNaN(A[0].colSpan)?1:A[0].colSpan;var C='';var D=FCK.EditorDocument.createDocumentFragment();for (var i=A.length-1;i>=0;i--){var E=A[i];for (var c=E.childNodes.length-1;c>=0;c--){var F=E.removeChild(E.childNodes[c]);if ((F.hasAttribute&&F.hasAttribute('_moz_editor_bogus_node'))||(F.getAttribute&&F.getAttribute('type',2)=='_moz')) continue;D.insertBefore(F,D.firstChild);};if (i>0){B+=isNaN(E.colSpan)?1:E.colSpan;FCKTableHandler.DeleteCell(E);}};A[0].colSpan=B;if (FCKBrowserInfo.IsGecko&&D.childNodes.length==0) A[0].innerHTML=GECKO_BOGUS;else A[0].appendChild(D);};FCKTableHandler.SplitCell=function(){var A=FCKTableHandler.GetSelectedCells();if (A.length!=1) return;var B=this._CreateTableMap(A[0].parentNode.parentNode);var C=FCKTableHandler._GetCellIndexSpan(B,A[0].parentNode.rowIndex,A[0]);var D=this._GetCollumnCells(B,C);for (var i=0;i<D.length;i++){if (D[i]==A[0]){var E=this.InsertCell(A[0]);if (!isNaN(A[0].rowSpan)&&A[0].rowSpan>1) E.rowSpan=A[0].rowSpan;}else{if (isNaN(D[i].colSpan)) D[i].colSpan=2;else D[i].colSpan+=1;}}};FCKTableHandler._GetCellIndexSpan=function(A,B,C){if (A.length<B+1) return null;var D=A[B];for (var c=0;c<D.length;c++){if (D[c]==C) return c;};return null;};FCKTableHandler._GetCollumnCells=function(A,B){var C=new Array();for (var r=0;r<A.length;r++){var D=A[r][B];if (D&&(C.length==0||C[C.length-1]!=D)) C[C.length]=D;};return C;};FCKTableHandler._CreateTableMap=function(A){var B=A.rows;var r=-1;var C=new Array();for (var i=0;i<B.length;i++){r++;if (!C[r]) C[r]=new Array();var c=-1;for (var j=0;j<B[i].cells.length;j++){var D=B[i].cells[j];c++;while (C[r][c]) c++;var E=isNaN(D.colSpan)?1:D.colSpan;var F=isNaN(D.rowSpan)?1:D.rowSpan;for (var G=0;G<F;G++){if (!C[r+G]) C[r+G]=new Array();for (var H=0;H<E;H++){C[r+G][c+H]=B[i].cells[j];}};c+=E-1;}};return C;};FCKTableHandler.ClearRow=function(A){var B=A.cells;for (var i=0;i<B.length;i++){if (FCKBrowserInfo.IsGecko) B[i].innerHTML=GECKO_BOGUS;else B[i].innerHTML='';}};
+FCKTableHandler.GetSelectedCells=function(){var A=new Array();var B=FCK.EditorDocument.selection.createRange();var C=FCKSelection.GetParentElement();if (C&&C.tagName.Equals('TD','TH')) A[0]=C;else{var C=FCKSelection.MoveToAncestorNode("TABLE");if (C){for (var i=0;i<C.cells.length;i++){var E=FCK.EditorDocument.selection.createRange();E.moveToElementText(C.cells[i]);if (B.inRange(E)||(B.compareEndPoints('StartToStart',E)>=0&&B.compareEndPoints('StartToEnd',E)<=0)||(B.compareEndPoints('EndToStart',E)>=0&&B.compareEndPoints('EndToEnd',E)<=0)){A[A.length]=C.cells[i];}}}};return A;};
+var FCKXml=function(){this.Error=false;};FCKXml.prototype.LoadUrl=function(A){this.Error=false;var B=FCKTools.CreateXmlObject('XmlHttp');if (!B){this.Error=true;return;};B.open("GET",A,false);B.send(null);if (B.status==200||B.status==304) this.DOMDocument=B.responseXML;else if (B.status==0&&B.readyState==4){this.DOMDocument=FCKTools.CreateXmlObject('DOMDocument');this.DOMDocument.async=false;this.DOMDocument.resolveExternals=false;this.DOMDocument.loadXML(B.responseText);}else{this.Error=true;alert('Error loading "'+A+'"');}};FCKXml.prototype.SelectNodes=function(A,B){if (this.Error) return new Array();if (B) return B.selectNodes(A);else return this.DOMDocument.selectNodes(A);};FCKXml.prototype.SelectSingleNode=function(A,B){if (this.Error) return;if (B) return B.selectSingleNode(A);else return this.DOMDocument.selectSingleNode(A);}
+var FCKStyleDef=function(A,B){this.Name=A;this.Element=B.toUpperCase();this.IsObjectElement=FCKRegexLib.ObjectElements.test(this.Element);this.Attributes=new Object();};FCKStyleDef.prototype.AddAttribute=function(A,B){this.Attributes[A]=B;};FCKStyleDef.prototype.GetOpenerTag=function(){var s='<'+this.Element;for (var a in this.Attributes) s+=' '+a+'="'+this.Attributes[a]+'"';return s+'>';};FCKStyleDef.prototype.GetCloserTag=function(){return '</'+this.Element+'>';};FCKStyleDef.prototype.RemoveFromSelection=function(){if (FCKSelection.GetType()=='Control') this._RemoveMe(FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement());else this._RemoveMe(FCK.ToolbarSet.CurrentInstance.Selection.GetParentElement());}
+FCKStyleDef.prototype.ApplyToSelection=function(){var A=FCK.ToolbarSet.CurrentInstance.EditorDocument.selection;if (A.type=='Text'){var B=A.createRange();var e=document.createElement(this.Element);e.innerHTML=B.htmlText;this._AddAttributes(e);this._RemoveDuplicates(e);B.pasteHTML(e.outerHTML);}else if (A.type=='Control'){var C=FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement();if (C.tagName==this.Element) this._AddAttributes(C);}};FCKStyleDef.prototype._AddAttributes=function(A){for (var a in this.Attributes){switch (a.toLowerCase()){case 'style':A.style.cssText=this.Attributes[a];break;case 'class':A.setAttribute('className',this.Attributes[a],0);break;case 'src':A.setAttribute('_fcksavedurl',this.Attributes[a],0);default:A.setAttribute(a,this.Attributes[a],0);}}};FCKStyleDef.prototype._RemoveDuplicates=function(A){for (var i=0;i<A.children.length;i++){var B=A.children[i];this._RemoveDuplicates(B);if (this.IsEqual(B)) FCKTools.RemoveOuterTags(B);}};FCKStyleDef.prototype.IsEqual=function(e){if (e.tagName!=this.Element) return false;for (var a in this.Attributes){switch (a.toLowerCase()){case 'style':if (e.style.cssText.toLowerCase()!=this.Attributes[a].toLowerCase()) return false;break;case 'class':if (e.getAttribute('className',0)!=this.Attributes[a]) return false;break;default:if (e.getAttribute(a,0)!=this.Attributes[a]) return false;}};return true;};FCKStyleDef.prototype._RemoveMe=function(A){if (!A) return;var B=A.parentElement;if (this.IsEqual(A)){if (this.IsObjectElement){for (var a in this.Attributes){switch (a.toLowerCase()){case 'class':A.removeAttribute('className',0);break;default:A.removeAttribute(a,0);}};return;}else FCKTools.RemoveOuterTags(A);};this._RemoveMe(B);}
+var FCKStylesLoader=function(){this.Styles=new Object();this.StyleGroups=new Object();this.Loaded=false;this.HasObjectElements=false;};FCKStylesLoader.prototype.Load=function(A){var B=new FCKXml();B.LoadUrl(A);var C=B.SelectNodes('Styles/Style');for (var i=0;i<C.length;i++){var D=C[i].attributes.getNamedItem('element').value.toUpperCase();var E=new FCKStyleDef(C[i].attributes.getNamedItem('name').value,D);if (E.IsObjectElement) this.HasObjectElements=true;var F=B.SelectNodes('Attribute',C[i]);for (var j=0;j<F.length;j++){var G=F[j].attributes.getNamedItem('name').value;var H=F[j].attributes.getNamedItem('value').value;if (G.toLowerCase()=='style'){var I=document.createElement('SPAN');I.style.cssText=H;H=I.style.cssText;};E.AddAttribute(G,H);};this.Styles[E.Name]=E;var J=this.StyleGroups[D];if (J==null){this.StyleGroups[D]=new Array();J=this.StyleGroups[D];};J[J.length]=E;};this.Loaded=true;}
+var FCKNamedCommand=function(A){this.Name=A;};FCKNamedCommand.prototype.Execute=function(){FCK.ExecuteNamedCommand(this.Name);};FCKNamedCommand.prototype.GetState=function(){return FCK.GetNamedCommandState(this.Name);};
+var FCKDialogCommand=function(A,B,C,D,E,F,G){this.Name=A;this.Title=B;this.Url=C;this.Width=D;this.Height=E;this.GetStateFunction=F;this.GetStateParam=G;};FCKDialogCommand.prototype.Execute=function(){FCKDialog.OpenDialog('FCKDialog_'+this.Name,this.Title,this.Url,this.Width,this.Height);};FCKDialogCommand.prototype.GetState=function(){if (this.GetStateFunction) return this.GetStateFunction(this.GetStateParam);else return FCK_TRISTATE_OFF;};var FCKUndefinedCommand=function(){this.Name='Undefined';};FCKUndefinedCommand.prototype.Execute=function(){alert(FCKLang.NotImplemented);};FCKUndefinedCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKFontNameCommand=function(){this.Name='FontName';};FCKFontNameCommand.prototype.Execute=function(A){if (A==null||A==""){}else FCK.ExecuteNamedCommand('FontName',A);};FCKFontNameCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FontName');};var FCKFontSizeCommand=function(){this.Name='FontSize';};FCKFontSizeCommand.prototype.Execute=function(A){if (typeof(A)=='string') A=parseInt(A);if (A==null||A==''){FCK.ExecuteNamedCommand('FontSize',3);}else FCK.ExecuteNamedCommand('FontSize',A);};FCKFontSizeCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FontSize');};var FCKFormatBlockCommand=function(){this.Name='FormatBlock';};FCKFormatBlockCommand.prototype.Execute=function(A){if (A==null||A=='') FCK.ExecuteNamedCommand('FormatBlock','<P>');else if (A=='div'&&FCKBrowserInfo.IsGecko) FCK.ExecuteNamedCommand('FormatBlock','div');else FCK.ExecuteNamedCommand('FormatBlock','<'+A+'>');};FCKFormatBlockCommand.prototype.GetState=function(){return FCK.GetNamedCommandValue('FormatBlock');};var FCKPreviewCommand=function(){this.Name='Preview';};FCKPreviewCommand.prototype.Execute=function(){FCK.Preview();};FCKPreviewCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKSaveCommand=function(){this.Name='Save';};FCKSaveCommand.prototype.Execute=function(){var A=FCK.LinkedField.form;if (typeof(A.onsubmit)=='function'){var B=A.onsubmit();if (B!=null&&B===false) return;};A.submit();};FCKSaveCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKNewPageCommand=function(){this.Name='NewPage';};FCKNewPageCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();FCK.SetHTML('');FCKUndo.Typing=true;};FCKNewPageCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};var FCKSourceCommand=function(){this.Name='Source';};FCKSourceCommand.prototype.Execute=function(){if (FCKConfig.SourcePopup){var A=FCKConfig.ScreenWidth*0.65;var B=FCKConfig.ScreenHeight*0.65;FCKDialog.OpenDialog('FCKDialog_Source',FCKLang.Source,'dialog/fck_source.html',A,B,null,null,true);}else FCK.SwitchEditMode();};FCKSourceCommand.prototype.GetState=function(){return (FCK.EditMode==FCK_EDITMODE_WYSIWYG?FCK_TRISTATE_OFF:FCK_TRISTATE_ON);};var FCKUndoCommand=function(){this.Name='Undo';};FCKUndoCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsIE) FCKUndo.Undo();else FCK.ExecuteNamedCommand('Undo');};FCKUndoCommand.prototype.GetState=function(){if (FCKBrowserInfo.IsIE) return (FCKUndo.CheckUndoState()?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED);else return FCK.GetNamedCommandState('Undo');};var FCKRedoCommand=function(){this.Name='Redo';};FCKRedoCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsIE) FCKUndo.Redo();else FCK.ExecuteNamedCommand('Redo');};FCKRedoCommand.prototype.GetState=function(){if (FCKBrowserInfo.IsIE) return (FCKUndo.CheckRedoState()?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED);else return FCK.GetNamedCommandState('Redo');};var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){var e=FCK.EditorDocument.createElement('DIV');e.style.pageBreakAfter='always';e.innerHTML='<span style="DISPLAY:none">&nbsp;</span>';var A=FCKDocumentProcessor_CreateFakeImage('FCK__PageBreak',e);A=FCK.InsertElement(A);};FCKPageBreakCommand.prototype.GetState=function(){return 0;};var FCKUnlinkCommand=function(){this.Name='Unlink';};FCKUnlinkCommand.prototype.Execute=function(){if (FCKBrowserInfo.IsGecko){var A=FCK.Selection.MoveToAncestorNode('A');if (A) FCK.Selection.SelectNode(A);};FCK.ExecuteNamedCommand(this.Name);if (FCKBrowserInfo.IsGecko) FCK.Selection.Collapse(true);};FCKUnlinkCommand.prototype.GetState=function(){return FCK.GetNamedCommandState(this.Name);}
+var FCKSpellCheckCommand=function(){this.Name='SpellCheck';this.IsEnabled=(FCKConfig.SpellChecker=='ieSpell'||FCKConfig.SpellChecker=='SpellerPages');};FCKSpellCheckCommand.prototype.Execute=function(){switch (FCKConfig.SpellChecker){case 'ieSpell':this._RunIeSpell();break;case 'SpellerPages':FCKDialog.OpenDialog('FCKDialog_SpellCheck','Spell Check','dialog/fck_spellerpages.html',440,480);break;}};FCKSpellCheckCommand.prototype._RunIeSpell=function(){try{var A=new ActiveXObject("ieSpell.ieSpellExtension");A.CheckAllLinkedDocuments(FCK.EditorDocument);}catch(e){if(e.number==-2146827859){if (confirm(FCKLang.IeSpellDownload)) window.open(FCKConfig.IeSpellDownloadUrl,'IeSpellDownload');}else alert('Error Loading ieSpell: '+e.message+' ('+e.number+')');}};FCKSpellCheckCommand.prototype.GetState=function(){return this.IsEnabled?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;}
+var FCKTextColorCommand=function(A){this.Name=A=='ForeColor'?'TextColor':'BGColor';this.Type=A;var B;if (FCKBrowserInfo.IsIE) B=window;else if (FCK.ToolbarSet._IFrame) B=FCKTools.GetElementWindow(FCK.ToolbarSet._IFrame);else B=window.parent;this._Panel=new FCKPanel(B,true);this._Panel.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');this._Panel.MainNode.className='FCK_Panel';this._CreatePanelBody(this._Panel.Document,this._Panel.MainNode);FCKTools.DisableSelection(this._Panel.Document.body);};FCKTextColorCommand.prototype.Execute=function(A,B,C){FCK._ActiveColorPanelType=this.Type;this._Panel.Show(A,B,C);};FCKTextColorCommand.prototype.SetColor=function(A){if (FCK._ActiveColorPanelType=='ForeColor') FCK.ExecuteNamedCommand('ForeColor',A);else if (FCKBrowserInfo.IsGeckoLike){if (FCKBrowserInfo.IsGecko&&!FCKConfig.GeckoUseSPAN) FCK.EditorDocument.execCommand('useCSS',false,false);FCK.ExecuteNamedCommand('hilitecolor',A);if (FCKBrowserInfo.IsGecko&&!FCKConfig.GeckoUseSPAN) FCK.EditorDocument.execCommand('useCSS',false,true);}else FCK.ExecuteNamedCommand('BackColor',A);delete FCK._ActiveColorPanelType;};FCKTextColorCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;};function FCKTextColorCommand_OnMouseOver()	{ this.className='ColorSelected';};function FCKTextColorCommand_OnMouseOut()	{ this.className='ColorDeselected';};function FCKTextColorCommand_OnClick(){this.className='ColorDeselected';this.Command.SetColor('#'+this.Color);this.Command._Panel.Hide();};function FCKTextColorCommand_AutoOnClick(){this.className='ColorDeselected';this.Command.SetColor('');this.Command._Panel.Hide();};function FCKTextColorCommand_MoreOnClick(){this.className='ColorDeselected';this.Command._Panel.Hide();FCKDialog.OpenDialog('FCKDialog_Color',FCKLang.DlgColorTitle,'dialog/fck_colorselector.html',400,330,this.Command.SetColor);};FCKTextColorCommand.prototype._CreatePanelBody=function(A,B){function CreateSelectionDiv(){var C=A.createElement("DIV");C.className='ColorDeselected';C.onmouseover=FCKTextColorCommand_OnMouseOver;C.onmouseout=FCKTextColorCommand_OnMouseOut;return C;};var D=B.appendChild(A.createElement("TABLE"));D.className='ForceBaseFont';D.style.tableLayout='fixed';D.cellPadding=0;D.cellSpacing=0;D.border=0;D.width=150;var E=D.insertRow(-1).insertCell(-1);E.colSpan=8;var C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table cellspacing="0" cellpadding="0" width="100%" border="0">\<tr>\<td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\<td nowrap width="100%" align="center">' + FCKLang.ColorAutomatic + '</td>\</tr>\</table>';C.Command=this;C.onclick=FCKTextColorCommand_AutoOnClick;var G=FCKConfig.FontColors.toString().split(',');var H=0;while (H<G.length){var I=D.insertRow(-1);for (var i=0;i<8&&H<G.length;i++,H++){C=I.insertCell(-1).appendChild(CreateSelectionDiv());C.Color=G[H];C.innerHTML='<div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #'+G[H]+'"></div></div>';C.Command=this;C.onclick=FCKTextColorCommand_OnClick;}};E=D.insertRow(-1).insertCell(-1);E.colSpan=8;C=E.appendChild(CreateSelectionDiv());C.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">'+FCKLang.ColorMoreColors+'</td></tr></table>';C.Command=this;C.onclick=FCKTextColorCommand_MoreOnClick;}
+var FCKPastePlainTextCommand=function(){this.Name='PasteText';};FCKPastePlainTextCommand.prototype.Execute=function(){FCK.PasteAsPlainText();};FCKPastePlainTextCommand.prototype.GetState=function(){return FCK.GetNamedCommandState('Paste');};
+var FCKPasteWordCommand=function(){this.Name='PasteWord';};FCKPasteWordCommand.prototype.Execute=function(){FCK.PasteFromWord();};FCKPasteWordCommand.prototype.GetState=function(){if (FCKConfig.ForcePasteAsPlainText) return FCK_TRISTATE_DISABLED;else return FCK.GetNamedCommandState('Paste');};
+var FCKTableCommand=function(A){this.Name=A;};FCKTableCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();switch (this.Name){case 'TableInsertRow':FCKTableHandler.InsertRow();break;case 'TableDeleteRows':FCKTableHandler.DeleteRows();break;case 'TableInsertColumn':FCKTableHandler.InsertColumn();break;case 'TableDeleteColumns':FCKTableHandler.DeleteColumns();break;case 'TableInsertCell':FCKTableHandler.InsertCell();break;case 'TableDeleteCells':FCKTableHandler.DeleteCells();break;case 'TableMergeCells':FCKTableHandler.MergeCells();break;case 'TableSplitCell':FCKTableHandler.SplitCell();break;case 'TableDelete':FCKTableHandler.DeleteTable();break;default:alert(FCKLang.UnknownCommand.replace(/%1/g,this.Name));}};FCKTableCommand.prototype.GetState=function(){return FCK_TRISTATE_OFF;}
+var FCKStyleCommand=function(){this.Name='Style';this.StylesLoader=new FCKStylesLoader();this.StylesLoader.Load(FCKConfig.StylesXmlPath);this.Styles=this.StylesLoader.Styles;};FCKStyleCommand.prototype.Execute=function(A,B){FCKUndo.SaveUndoStep();if (B.Selected) B.Style.RemoveFromSelection();else B.Style.ApplyToSelection();FCKUndo.SaveUndoStep();FCK.Focus();FCK.Events.FireEvent("OnSelectionChange");};FCKStyleCommand.prototype.GetState=function(){if (!FCK.EditorDocument) return FCK_TRISTATE_DISABLED;var A=FCK.EditorDocument.selection;if (FCKSelection.GetType()=='Control'){var e=FCKSelection.GetSelectedElement();if (e) return this.StylesLoader.StyleGroups[e.tagName]?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;};return FCK_TRISTATE_OFF;};FCKStyleCommand.prototype.GetActiveStyles=function(){var A=new Array();if (FCKSelection.GetType()=='Control') this._CheckStyle(FCKSelection.GetSelectedElement(),A,false);else this._CheckStyle(FCKSelection.GetParentElement(),A,true);return A;};FCKStyleCommand.prototype._CheckStyle=function(A,B,C){if (!A) return;if (A.nodeType==1){var D=this.StylesLoader.StyleGroups[A.tagName];if (D){for (var i=0;i<D.length;i++){if (D[i].IsEqual(A)) B[B.length]=D[i];}}};if (C) this._CheckStyle(A.parentNode,B,C);}
+var FCKFitWindow=function(){this.Name='FitWindow';};FCKFitWindow.prototype.Execute=function(){var A=window.frameElement;var B=A.style;var C=parent;var D=C.document.documentElement;var E=C.document.body;var F=E.style;if (!this.IsMaximized){if(FCKBrowserInfo.IsIE) C.attachEvent('onresize',FCKFitWindow_Resize);else C.addEventListener('resize',FCKFitWindow_Resize,true);this._ScrollPos=FCKTools.GetScrollPosition(C);var G=A;while(G=G.parentNode){if (G.nodeType==1) G._fckSavedStyles=FCKTools.SaveStyles(G);};if (FCKBrowserInfo.IsIE){this.documentElementOverflow=D.style.overflow;D.style.overflow='hidden';F.overflow='hidden';}else{F.overflow='hidden';F.width='0px';F.height='0px';};this._EditorFrameStyles=FCKTools.SaveStyles(A);var H=FCKTools.GetViewPaneSize(C);B.position="absolute";B.zIndex=FCKConfig.FloatingPanelsZIndex-1;B.left="0px";B.top="0px";B.width=H.Width+"px";B.height=H.Height+"px";if (!FCKBrowserInfo.IsIE){B.borderRight=B.borderBottom="9999px solid white";B.backgroundColor="white";};C.scrollTo(0,0);this.IsMaximized=true;}else{if(FCKBrowserInfo.IsIE) C.detachEvent("onresize",FCKFitWindow_Resize);else C.removeEventListener("resize",FCKFitWindow_Resize,true);var G=A;while(G=G.parentNode){if (G._fckSavedStyles){FCKTools.RestoreStyles(G,G._fckSavedStyles);G._fckSavedStyles=null;}};if (FCKBrowserInfo.IsIE) D.style.overflow=this.documentElementOverflow;FCKTools.RestoreStyles(A,this._EditorFrameStyles);C.scrollTo(this._ScrollPos.X,this._ScrollPos.Y);this.IsMaximized=false;};FCKToolbarItems.GetItem('FitWindow').RefreshState();FCK.EditingArea.MakeEditable();FCK.Focus();};FCKFitWindow.prototype.GetState=function(){if (FCKConfig.ToolbarLocation!='In') return FCK_TRISTATE_DISABLED;else return (this.IsMaximized?FCK_TRISTATE_ON:FCK_TRISTATE_OFF);};function FCKFitWindow_Resize(){var oViewPaneSize=FCKTools.GetViewPaneSize(parent);var eEditorFrameStyle=window.frameElement.style;eEditorFrameStyle.width=oViewPaneSize.Width+'px';eEditorFrameStyle.height=oViewPaneSize.Height+'px';};
+var FCKCommands=FCK.Commands=new Object();FCKCommands.LoadedCommands=new Object();FCKCommands.RegisterCommand=function(A,B){this.LoadedCommands[A]=B;};FCKCommands.GetCommand=function(A){var B=FCKCommands.LoadedCommands[A];if (B) return B;switch (A){case 'DocProps':B=new FCKDialogCommand('DocProps',FCKLang.DocProps,'dialog/fck_docprops.html',400,390,FCKCommands.GetFullPageState);break;case 'Templates':B=new FCKDialogCommand('Templates',FCKLang.DlgTemplatesTitle,'dialog/fck_template.html',380,450);break;case 'Link':B=new FCKDialogCommand('Link',FCKLang.DlgLnkWindowTitle,'dialog/fck_link.html',400,330,FCK.GetNamedCommandState,'CreateLink');break;case 'Unlink':B=new FCKUnlinkCommand();break;case 'Anchor':B=new FCKDialogCommand('Anchor',FCKLang.DlgAnchorTitle,'dialog/fck_anchor.html',370,170);break;case 'BulletedList':B=new FCKDialogCommand('BulletedList',FCKLang.BulletedListProp,'dialog/fck_listprop.html',370,170);break;case 'NumberedList':B=new FCKDialogCommand('NumberedList',FCKLang.NumberedListProp,'dialog/fck_listprop.html',370,170);break;case 'About':B=new FCKDialogCommand('About',FCKLang.About,'dialog/fck_about.html',400,330);break;case 'Find':B=new FCKDialogCommand('Find',FCKLang.DlgFindTitle,'dialog/fck_find.html',340,170);break;case 'Replace':B=new FCKDialogCommand('Replace',FCKLang.DlgReplaceTitle,'dialog/fck_replace.html',340,200);break;case 'Image':B=new FCKDialogCommand('Image',FCKLang.DlgImgTitle,'dialog/fck_image.html',450,400);break;case 'Flash':B=new FCKDialogCommand('Flash',FCKLang.DlgFlashTitle,'dialog/fck_flash.html',450,400);break;case 'SpecialChar':B=new FCKDialogCommand('SpecialChar',FCKLang.DlgSpecialCharTitle,'dialog/fck_specialchar.html',400,320);break;case 'Smiley':B=new FCKDialogCommand('Smiley',FCKLang.DlgSmileyTitle,'dialog/fck_smiley.html',FCKConfig.SmileyWindowWidth,FCKConfig.SmileyWindowHeight);break;case 'Table':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html',450,250);break;case 'TableProp':B=new FCKDialogCommand('Table',FCKLang.DlgTableTitle,'dialog/fck_table.html?Parent',400,250);break;case 'TableCellProp':B=new FCKDialogCommand('TableCell',FCKLang.DlgCellTitle,'dialog/fck_tablecell.html',500,250);break;case 'UniversalKey':B=new FCKDialogCommand('UniversalKey',FCKLang.UniversalKeyboard,'dialog/fck_universalkey.html',415,300);break;case 'Style':B=new FCKStyleCommand();break;case 'FontName':B=new FCKFontNameCommand();break;case 'FontSize':B=new FCKFontSizeCommand();break;case 'FontFormat':B=new FCKFormatBlockCommand();break;case 'Source':B=new FCKSourceCommand();break;case 'Preview':B=new FCKPreviewCommand();break;case 'Save':B=new FCKSaveCommand();break;case 'NewPage':B=new FCKNewPageCommand();break;case 'PageBreak':B=new FCKPageBreakCommand();break;case 'TextColor':B=new FCKTextColorCommand('ForeColor');break;case 'BGColor':B=new FCKTextColorCommand('BackColor');break;case 'PasteText':B=new FCKPastePlainTextCommand();break;case 'PasteWord':B=new FCKPasteWordCommand();break;case 'TableInsertRow':B=new FCKTableCommand('TableInsertRow');break;case 'TableDeleteRows':B=new FCKTableCommand('TableDeleteRows');break;case 'TableInsertColumn':B=new FCKTableCommand('TableInsertColumn');break;case 'TableDeleteColumns':B=new FCKTableCommand('TableDeleteColumns');break;case 'TableInsertCell':B=new FCKTableCommand('TableInsertCell');break;case 'TableDeleteCells':B=new FCKTableCommand('TableDeleteCells');break;case 'TableMergeCells':B=new FCKTableCommand('TableMergeCells');break;case 'TableSplitCell':B=new FCKTableCommand('TableSplitCell');break;case 'TableDelete':B=new FCKTableCommand('TableDelete');break;case 'Form':B=new FCKDialogCommand('Form',FCKLang.Form,'dialog/fck_form.html',380,230);break;case 'Checkbox':B=new FCKDialogCommand('Checkbox',FCKLang.Checkbox,'dialog/fck_checkbox.html',380,230);break;case 'Radio':B=new FCKDialogCommand('Radio',FCKLang.RadioButton,'dialog/fck_radiobutton.html',380,230);break;case 'TextField':B=new FCKDialogCommand('TextField',FCKLang.TextField,'dialog/fck_textfield.html',380,230);break;case 'Textarea':B=new FCKDialogCommand('Textarea',FCKLang.Textarea,'dialog/fck_textarea.html',380,230);break;case 'HiddenField':B=new FCKDialogCommand('HiddenField',FCKLang.HiddenField,'dialog/fck_hiddenfield.html',380,230);break;case 'Button':B=new FCKDialogCommand('Button',FCKLang.Button,'dialog/fck_button.html',380,230);break;case 'Select':B=new FCKDialogCommand('Select',FCKLang.SelectionField,'dialog/fck_select.html',400,380);break;case 'ImageButton':B=new FCKDialogCommand('ImageButton',FCKLang.ImageButton,'dialog/fck_image.html?ImageButton',450,400);break;case 'SpellCheck':B=new FCKSpellCheckCommand();break;case 'FitWindow':B=new FCKFitWindow();break;case 'Undo':B=new FCKUndoCommand();break;case 'Redo':B=new FCKRedoCommand();break;case 'Undefined':B=new FCKUndefinedCommand();break;default:if (FCKRegexLib.NamedCommands.test(A)) B=new FCKNamedCommand(A);else{alert(FCKLang.UnknownCommand.replace(/%1/g,A));return null;}};FCKCommands.LoadedCommands[A]=B;return B;};FCKCommands.GetFullPageState=function(){return FCKConfig.FullPage?FCK_TRISTATE_OFF:FCK_TRISTATE_DISABLED;};
+var FCKPanel=function(A){this.IsRTL=(FCKLang.Dir=='rtl');this.IsContextMenu=false;this._LockCounter=0;this._Window=A||window;var B;if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();B=this.Document=this._Popup.document;}else{var C=this._IFrame=this._Window.document.createElement('iframe');C.src='javascript:void(0)';C.allowTransparency=true;C.frameBorder='0';C.scrolling='no';C.style.position='absolute';C.style.zIndex=FCKConfig.FloatingPanelsZIndex;C.width=C.height=0;if (this._Window==window.parent) window.frameElement.parentNode.insertBefore(C,window.frameElement);else this._Window.document.body.appendChild(C);var D=C.contentWindow;B=this.Document=D.document;B.open();B.write('<html><head></head><body style="margin:0px;padding:0px;"><\/body><\/html>');B.close();FCKTools.AddEventListenerEx(D,'focus',FCKPanel_Window_OnFocus,this);FCKTools.AddEventListenerEx(D,'blur',FCKPanel_Window_OnBlur,this);};B.dir=FCKLang.Dir;B.oncontextmenu=FCKTools.CancelEvent;this.MainNode=B.body.appendChild(B.createElement('DIV'));this.MainNode.style.cssFloat=this.IsRTL?'right':'left';if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);};FCKPanel.prototype.AppendStyleSheet=function(A){FCKTools.AppendStyleSheet(this.Document,A);};FCKPanel.prototype.Preload=function(x,y,A){if (this._Popup) this._Popup.show(x,y,0,0,A);};FCKPanel.prototype.Show=function(x,y,A,B,C){if (this._Popup){this._Popup.show(x,y,0,0,A);this.MainNode.style.width=B?B+'px':'';this.MainNode.style.height=C?C+'px':'';var D=this.MainNode.offsetWidth;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=(x*-1)+A.offsetWidth-D;};this._Popup.show(x,y,D,this.MainNode.offsetHeight,A);if (this.OnHide){if (this._Timer) CheckPopupOnHide.call(this,true);this._Timer=FCKTools.SetInterval(CheckPopupOnHide,100,this);}}else{FCKFocusManager.Lock();if (this.ParentPanel) this.ParentPanel.Lock();this.MainNode.style.width=B?B+'px':'';this.MainNode.style.height=C?C+'px':'';var D=this.MainNode.offsetWidth;if (!B)	this._IFrame.width=1;if (!C)	this._IFrame.height=1;D=this.MainNode.offsetWidth;var F=FCKTools.GetElementPosition((A.nodeType==9?A.body:A),this._Window);if (this.IsRTL&&!this.IsContextMenu) x=(x*-1);x+=F.X;y+=F.Y;if (this.IsRTL){if (this.IsContextMenu) x=x-D+1;else if (A) x=x+A.offsetWidth-D;}else{var G=FCKTools.GetViewPaneSize(this._Window);var H=FCKTools.GetScrollPosition(this._Window);var I=G.Height+H.Y;var J=G.Width+H.X;if ((x+D)>J) x-=x+D-J;if ((y+this.MainNode.offsetHeight)>I) y-=y+this.MainNode.offsetHeight-I;};if (x<0) x=0;this._IFrame.style.left=x+'px';this._IFrame.style.top=y+'px';var K=D;var L=this.MainNode.offsetHeight;this._IFrame.width=K;this._IFrame.height=L;this._IFrame.contentWindow.focus();};this._IsOpened=true;FCKTools.RunFunction(this.OnShow,this);};FCKPanel.prototype.Hide=function(A){if (this._Popup) this._Popup.hide();else{if (!this._IsOpened) return;FCKFocusManager.Unlock();this._IFrame.width=this._IFrame.height=0;this._IsOpened=false;if (this.ParentPanel) this.ParentPanel.Unlock();if (!A) FCKTools.RunFunction(this.OnHide,this);}};FCKPanel.prototype.CheckIsOpened=function(){if (this._Popup) return this._Popup.isOpen;else return this._IsOpened;};FCKPanel.prototype.CreateChildPanel=function(){var A=this._Popup?FCKTools.GetParentWindow(this.Document):this._Window;var B=new FCKPanel(A,true);B.ParentPanel=this;return B;};FCKPanel.prototype.Lock=function(){this._LockCounter++;};FCKPanel.prototype.Unlock=function(){if (--this._LockCounter==0&&!this.HasFocus) this.Hide();};/* Events */ function FCKPanel_Window_OnFocus(e,panel){panel.HasFocus=true;};function FCKPanel_Window_OnBlur(e,panel){panel.HasFocus=false;if (panel._LockCounter==0) FCKTools.RunFunction(panel.Hide,panel);};function CheckPopupOnHide(forceHide){if (forceHide||!this._Popup.isOpen){window.clearInterval(this._Timer);this._Timer=null;FCKTools.RunFunction(this.OnHide,this);}};function FCKPanel_Cleanup(){this._Popup=null;this._Window=null;this.Document=null;this.MainNode=null;}
+var FCKIcon=function(A){var B=A?typeof(A):'undefined';switch (B){case 'number':this.Path=FCKConfig.SkinPath+'fck_strip.gif';this.Size=16;this.Position=A;break;case 'undefined':this.Path=FCK_SPACER_PATH;break;case 'string':this.Path=A;break;default:this.Path=A[0];this.Size=A[1];this.Position=A[2];}};FCKIcon.prototype.CreateIconElement=function(A){var B;if (this.Position){var C='-'+((this.Position-1)*this.Size)+'px';if (FCKBrowserInfo.IsIE){B=A.createElement('DIV');var D=B.appendChild(A.createElement('IMG'));D.src=this.Path;D.style.top=C;}else{B=A.createElement('IMG');B.src=FCK_SPACER_PATH;B.style.backgroundPosition='0px '+C;B.style.backgroundImage='url('+this.Path+')';}}else{B=A.createElement('IMG');B.src=this.Path?this.Path:FCK_SPACER_PATH;};B.className='TB_Button_Image';return B;}
+var FCKToolbarButtonUI=function(A,B,C,D,E,F){this.Name=A;this.Label=B||A;this.Tooltip=C||this.Label;this.Style=E||FCK_TOOLBARITEM_ONLYICON;this.State=F||FCK_TRISTATE_OFF;this.Icon=new FCKIcon(D);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarButtonUI_Cleanup);};FCKToolbarButtonUI.prototype._CreatePaddingElement=function(A){var B=A.createElement('IMG');B.className='TB_Button_Padding';B.src=FCK_SPACER_PATH;return B;};FCKToolbarButtonUI.prototype.Create=function(A){var B=this.MainElement;if (B){FCKToolbarButtonUI_Cleanup.call(this);if (B.parentNode) B.parentNode.removeChild(B);B=this.MainElement=null;};var C=FCKTools.GetElementDocument(A);B=this.MainElement=C.createElement('DIV');B._FCKButton=this;B.title=this.Tooltip;if (FCKBrowserInfo.IsGecko) B.onmousedown=FCKTools.CancelEvent;this.ChangeState(this.State,true);if (this.Style==FCK_TOOLBARITEM_ONLYICON&&!this.ShowArrow){B.appendChild(this.Icon.CreateIconElement(C));}else{var D=B.appendChild(C.createElement('TABLE'));D.cellPadding=0;D.cellSpacing=0;var E=D.insertRow(-1);var F=E.insertCell(-1);if (this.Style==FCK_TOOLBARITEM_ONLYICON||this.Style==FCK_TOOLBARITEM_ICONTEXT) F.appendChild(this.Icon.CreateIconElement(C));else F.appendChild(this._CreatePaddingElement(C));if (this.Style==FCK_TOOLBARITEM_ONLYTEXT||this.Style==FCK_TOOLBARITEM_ICONTEXT){F=E.insertCell(-1);F.className='TB_Button_Text';F.noWrap=true;F.appendChild(C.createTextNode(this.Label));};if (this.ShowArrow){if (this.Style!=FCK_TOOLBARITEM_ONLYICON){E.insertCell(-1).appendChild(this._CreatePaddingElement(C));};F=E.insertCell(-1);var G=F.appendChild(C.createElement('IMG'));G.src=FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif';G.width=5;G.height=3;};F=E.insertCell(-1);F.appendChild(this._CreatePaddingElement(C));};A.appendChild(B);};FCKToolbarButtonUI.prototype.ChangeState=function(A,B){if (!B&&this.State==A) return;var e=this.MainElement;switch (parseInt(A)){case FCK_TRISTATE_OFF:e.className='TB_Button_Off';e.onmouseover=FCKToolbarButton_OnMouseOverOff;e.onmouseout=FCKToolbarButton_OnMouseOutOff;e.onclick=FCKToolbarButton_OnClick;break;case FCK_TRISTATE_ON:e.className='TB_Button_On';e.onmouseover=FCKToolbarButton_OnMouseOverOn;e.onmouseout=FCKToolbarButton_OnMouseOutOn;e.onclick=FCKToolbarButton_OnClick;break;case FCK_TRISTATE_DISABLED:e.className='TB_Button_Disabled';e.onmouseover=null;e.onmouseout=null;e.onclick=null;bEnableEvents=false;break;};this.State=A;};function FCKToolbarButtonUI_Cleanup(){if (this.MainElement){this.MainElement._FCKButton=null;this.MainElement=null;}};function FCKToolbarButton_OnMouseOverOn(){this.className='TB_Button_On_Over';};function FCKToolbarButton_OnMouseOutOn(){this.className='TB_Button_On';};function FCKToolbarButton_OnMouseOverOff(){this.className='TB_Button_Off_Over';};function FCKToolbarButton_OnMouseOutOff(){this.className='TB_Button_Off';};function FCKToolbarButton_OnClick(e){if (this._FCKButton.OnClick) this._FCKButton.OnClick(this._FCKButton);};
+var FCKToolbarButton=function(A,B,C,D,E,F,G){this.CommandName=A;this.Label=B;this.Tooltip=C;this.Style=D;this.SourceView=E?true:false;this.ContextSensitive=F?true:false;if (G==null) this.IconPath=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(G)=='number') this.IconPath=[FCKConfig.SkinPath+'fck_strip.gif',16,G];};FCKToolbarButton.prototype.Create=function(A){this._UIButton=new FCKToolbarButtonUI(this.CommandName,this.Label,this.Tooltip,this.IconPath,this.Style);this._UIButton.OnClick=this.Click;this._UIButton._ToolbarButton=this;this._UIButton.Create(A);};FCKToolbarButton.prototype.RefreshState=function(){var A=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (A==this._UIButton.State) return;this._UIButton.ChangeState(A);};FCKToolbarButton.prototype.Click=function(){var A=this._ToolbarButton||this;FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(A.CommandName).Execute();};FCKToolbarButton.prototype.Enable=function(){this.RefreshState();};FCKToolbarButton.prototype.Disable=function(){this._UIButton.ChangeState(FCK_TRISTATE_DISABLED);}
+var FCKSpecialCombo=function(A,B,C,D,E){this.FieldWidth=B||100;this.PanelWidth=C||150;this.PanelMaxHeight=D||150;this.Label='&nbsp;';this.Caption=A;this.Tooltip=A;this.Style=FCK_TOOLBARITEM_ICONTEXT;this.Enabled=true;this.Items=new Object();this._Panel=new FCKPanel(E||window,true);this._Panel.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');this._PanelBox=this._Panel.MainNode.appendChild(this._Panel.Document.createElement('DIV'));this._PanelBox.className='SC_Panel';this._PanelBox.style.width=this.PanelWidth+'px';this._PanelBox.innerHTML='<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>';this._ItemsHolderEl=this._PanelBox.getElementsByTagName('TD')[0];if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKSpecialCombo_Cleanup);};function FCKSpecialCombo_ItemOnMouseOver(){this.className+=' SC_ItemOver';};function FCKSpecialCombo_ItemOnMouseOut(){this.className=this.originalClass;};function FCKSpecialCombo_ItemOnClick(){this.className=this.originalClass;this.FCKSpecialCombo._Panel.Hide();this.FCKSpecialCombo.SetLabel(this.FCKItemLabel);if (typeof(this.FCKSpecialCombo.OnSelect)=='function') this.FCKSpecialCombo.OnSelect(this.FCKItemID,this);};FCKSpecialCombo.prototype.AddItem=function(A,B,C,D){var E=this._ItemsHolderEl.appendChild(this._Panel.Document.createElement('DIV'));E.className=E.originalClass='SC_Item';E.innerHTML=B;E.FCKItemID=A;E.FCKItemLabel=C||A;E.FCKSpecialCombo=this;E.Selected=false;if (FCKBrowserInfo.IsIE) E.style.width='100%';if (D) E.style.backgroundColor=D;E.onmouseover=FCKSpecialCombo_ItemOnMouseOver;E.onmouseout=FCKSpecialCombo_ItemOnMouseOut;E.onclick=FCKSpecialCombo_ItemOnClick;this.Items[A.toString().toLowerCase()]=E;return E;};FCKSpecialCombo.prototype.SelectItem=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];if (B){B.className=B.originalClass='SC_ItemSelected';B.Selected=true;}};FCKSpecialCombo.prototype.SelectItemByLabel=function(A,B){for (var C in this.Items){var D=this.Items[C];if (D.FCKItemLabel==A){D.className=D.originalClass='SC_ItemSelected';D.Selected=true;if (B) this.SetLabel(A);}}};FCKSpecialCombo.prototype.DeselectAll=function(A){for (var i in this.Items){this.Items[i].className=this.Items[i].originalClass='SC_Item';this.Items[i].Selected=false;};if (A) this.SetLabel('');};FCKSpecialCombo.prototype.SetLabelById=function(A){A=A?A.toString().toLowerCase():'';var B=this.Items[A];this.SetLabel(B?B.FCKItemLabel:'');};FCKSpecialCombo.prototype.SetLabel=function(A){this.Label=A.length==0?'&nbsp;':A;if (this._LabelEl) this._LabelEl.innerHTML=this.Label;};FCKSpecialCombo.prototype.SetEnabled=function(A){this.Enabled=A;this._OuterTable.className=A?'':'SC_FieldDisabled';};FCKSpecialCombo.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var C=this._OuterTable=A.appendChild(B.createElement('TABLE'));C.cellPadding=0;C.cellSpacing=0;C.insertRow(-1);var D;var E;switch (this.Style){case FCK_TOOLBARITEM_ONLYICON:D='TB_ButtonType_Icon';E=false;break;case FCK_TOOLBARITEM_ONLYTEXT:D='TB_ButtonType_Text';E=false;break;case FCK_TOOLBARITEM_ICONTEXT:E=true;break;};if (this.Caption&&this.Caption.length>0&&E){var F=C.rows[0].insertCell(-1);F.innerHTML=this.Caption;F.className='SC_FieldCaption';};var G=FCKTools.AppendElement(C.rows[0].insertCell(-1),'div');if (E){G.className='SC_Field';G.style.width=this.FieldWidth+'px';G.innerHTML='<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldLabel"><label>&nbsp;</label></td><td class="SC_FieldButton">&nbsp;</td></tr></tbody></table>';this._LabelEl=G.getElementsByTagName('label')[0];this._LabelEl.innerHTML=this.Label;}else{G.className='TB_Button_Off';G.innerHTML='<table title="'+this.Tooltip+'" class="'+D+'" cellspacing="0" cellpadding="0" border="0">'+'<tr>'+'<td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td>'+'<td class="TB_Text">'+this.Caption+'</td>'+'<td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td>'+'<td class="TB_ButtonArrow"><img src="'+FCKConfig.SkinPath+'images/toolbar.buttonarrow.gif" width="5" height="3"></td>'+'<td><img class="TB_Button_Padding" src="'+FCK_SPACER_PATH+'" /></td>'+'</tr>'+'</table>';};G.SpecialCombo=this;G.onmouseover=FCKSpecialCombo_OnMouseOver;G.onmouseout=FCKSpecialCombo_OnMouseOut;G.onclick=FCKSpecialCombo_OnClick;FCKTools.DisableSelection(this._Panel.Document.body);};function FCKSpecialCombo_Cleanup(){this._LabelEl=null;this._OuterTable=null;this._ItemsHolderEl=null;this._PanelBox=null;if (this.Items){for (var key in this.Items) this.Items[key]=null;}};function FCKSpecialCombo_OnMouseOver(){if (this.SpecialCombo.Enabled){switch (this.SpecialCombo.Style){case FCK_TOOLBARITEM_ONLYICON:this.className='TB_Button_On_Over';break;case FCK_TOOLBARITEM_ONLYTEXT:this.className='TB_Button_On_Over';break;case FCK_TOOLBARITEM_ICONTEXT:this.className='SC_Field SC_FieldOver';break;}}};function FCKSpecialCombo_OnMouseOut(){switch (this.SpecialCombo.Style){case FCK_TOOLBARITEM_ONLYICON:this.className='TB_Button_Off';break;case FCK_TOOLBARITEM_ONLYTEXT:this.className='TB_Button_Off';break;case FCK_TOOLBARITEM_ICONTEXT:this.className='SC_Field';break;}};function FCKSpecialCombo_OnClick(e){var oSpecialCombo=this.SpecialCombo;if (oSpecialCombo.Enabled){var oPanel=oSpecialCombo._Panel;var oPanelBox=oSpecialCombo._PanelBox;var oItemsHolder=oSpecialCombo._ItemsHolderEl;var iMaxHeight=oSpecialCombo.PanelMaxHeight;if (oSpecialCombo.OnBeforeClick) oSpecialCombo.OnBeforeClick(oSpecialCombo);if (FCKBrowserInfo.IsIE) oPanel.Preload(0,this.offsetHeight,this);if (oItemsHolder.offsetHeight>iMaxHeight) oPanelBox.style.height=iMaxHeight+'px';else oPanelBox.style.height='';oPanel.Show(0,this.offsetHeight,this);}};
+var FCKToolbarSpecialCombo=function(){this.SourceView=false;this.ContextSensitive=true;};function FCKToolbarSpecialCombo_OnSelect(itemId,item){FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Execute(itemId,item);};FCKToolbarSpecialCombo.prototype.Create=function(A){this._Combo=new FCKSpecialCombo(this.GetLabel(),this.FieldWidth,this.PanelWidth,this.PanelMaxHeight,FCKBrowserInfo.IsIE?window:FCKTools.GetElementWindow(A).parent);this._Combo.Tooltip=this.Tooltip;this._Combo.Style=this.Style;this.CreateItems(this._Combo);this._Combo.Create(A);this._Combo.CommandName=this.CommandName;this._Combo.OnSelect=FCKToolbarSpecialCombo_OnSelect;};function FCKToolbarSpecialCombo_RefreshActiveItems(combo,value){combo.DeselectAll();combo.SelectItem(value);combo.SetLabelById(value);};FCKToolbarSpecialCombo.prototype.RefreshState=function(){var A;var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetState();if (B!=FCK_TRISTATE_DISABLED){A=FCK_TRISTATE_ON;if (this.RefreshActiveItems) this.RefreshActiveItems(this._Combo,B);else{if (this._LastValue!=B){this._LastValue=B;FCKToolbarSpecialCombo_RefreshActiveItems(this._Combo,B);}}}else A=FCK_TRISTATE_DISABLED;if (A==this.State) return;if (A==FCK_TRISTATE_DISABLED){this._Combo.DeselectAll();this._Combo.SetLabel('');};this.State=A;this._Combo.SetEnabled(A!=FCK_TRISTATE_DISABLED);};FCKToolbarSpecialCombo.prototype.Enable=function(){this.RefreshState();};FCKToolbarSpecialCombo.prototype.Disable=function(){this.State=FCK_TRISTATE_DISABLED;this._Combo.DeselectAll();this._Combo.SetLabel('');this._Combo.SetEnabled(false);}
+var FCKToolbarFontsCombo=function(A,B){this.CommandName='FontName';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;};FCKToolbarFontsCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontsCombo.prototype.GetLabel=function(){return FCKLang.Font;};FCKToolbarFontsCombo.prototype.CreateItems=function(A){var B=FCKConfig.FontNames.split(';');for (var i=0;i<B.length;i++) this._Combo.AddItem(B[i],'<font face="'+B[i]+'" style="font-size: 12px">'+B[i]+'</font>');}
+var FCKToolbarFontSizeCombo=function(A,B){this.CommandName='FontSize';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;};FCKToolbarFontSizeCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontSizeCombo.prototype.GetLabel=function(){return FCKLang.FontSize;};FCKToolbarFontSizeCombo.prototype.CreateItems=function(A){A.FieldWidth=70;var B=FCKConfig.FontSizes.split(';');for (var i=0;i<B.length;i++){var C=B[i].split('/');this._Combo.AddItem(C[0],'<font size="'+C[0]+'">'+C[1]+'</font>',C[1]);}}
+var FCKToolbarFontFormatCombo=function(A,B){this.CommandName='FontFormat';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;this.NormalLabel='Normal';this.PanelWidth=190;};FCKToolbarFontFormatCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarFontFormatCombo.prototype.GetLabel=function(){return FCKLang.FontFormat;};FCKToolbarFontFormatCombo.prototype.CreateItems=function(A){var B=FCKLang['FontFormats'].split(';');var C={p:B[0],pre:B[1],address:B[2],h1:B[3],h2:B[4],h3:B[5],h4:B[6],h5:B[7],h6:B[8],div:B[9]};var D=FCKConfig.FontFormats.split(';');for (var i=0;i<D.length;i++){var E=D[i];var F=C[E];if (E=='p') this.NormalLabel=F;this._Combo.AddItem(E,'<div class="BaseFont"><'+E+'>'+F+'</'+E+'></div>',F);}};if (FCKBrowserInfo.IsIE){FCKToolbarFontFormatCombo.prototype.RefreshActiveItems=function(A,B){if (B==this.NormalLabel){if (A.Label!='&nbsp;') A.DeselectAll(true);}else{if (this._LastValue==B) return;A.SelectItemByLabel(B,true);};this._LastValue=B;}}
+var FCKToolbarStyleCombo=function(A,B){this.CommandName='Style';this.Label=this.GetLabel();this.Tooltip=A?A:this.Label;this.Style=B?B:FCK_TOOLBARITEM_ICONTEXT;};FCKToolbarStyleCombo.prototype=new FCKToolbarSpecialCombo;FCKToolbarStyleCombo.prototype.GetLabel=function(){return FCKLang.Style;};FCKToolbarStyleCombo.prototype.CreateItems=function(A){var B=A._Panel.Document;var C=FCKConfig.EditorAreaCSS;for (var i=0;i<C.length;i++) FCKTools.AppendStyleSheet(B,C[i]);B.body.className+=' ForceBaseFont';if (!FCKBrowserInfo.IsGecko) A.OnBeforeClick=this.RefreshVisibleItems;var D=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).Styles;for (var s in D){var E=D[s];var F;if (E.IsObjectElement) F=A.AddItem(s,s);else F=A.AddItem(s,E.GetOpenerTag()+s+E.GetCloserTag());F.Style=E;}};FCKToolbarStyleCombo.prototype.RefreshActiveItems=function(A){A.DeselectAll();var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName).GetActiveStyles();if (B.length>0){for (var i=0;i<B.length;i++) A.SelectItem(B[i].Name);A.SetLabelById(B[0].Name);}else A.SetLabel('');};FCKToolbarStyleCombo.prototype.RefreshVisibleItems=function(A){if (FCKSelection.GetType()=='Control') var B=FCKSelection.GetSelectedElement().tagName;for (var i in A.Items){var C=A.Items[i];if ((B&&C.Style.Element==B)||(!B&&!C.Style.IsObjectElement)) C.style.display='';else C.style.display='none';}}
+var FCKToolbarPanelButton=function(A,B,C,D,E){this.CommandName=A;var F;if (E==null) F=FCKConfig.SkinPath+'toolbar/'+A.toLowerCase()+'.gif';else if (typeof(E)=='number') F=[FCKConfig.SkinPath+'fck_strip.gif',16,E];var G=this._UIButton=new FCKToolbarButtonUI(A,B,C,F,D);G._FCKToolbarPanelButton=this;G.ShowArrow=true;G.OnClick=FCKToolbarPanelButton_OnButtonClick;};FCKToolbarPanelButton.prototype.TypeName='FCKToolbarPanelButton';FCKToolbarPanelButton.prototype.Create=function(A){A.className+='Menu';this._UIButton.Create(A);var B=FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(this.CommandName)._Panel;B._FCKToolbarPanelButton=this;var C=B.Document.body.appendChild(B.Document.createElement('div'));C.style.position='absolute';C.style.top='0px';var D=this.LineImg=C.appendChild(B.Document.createElement('IMG'));D.className='TB_ConnectionLine';D.src=FCK_SPACER_PATH;B.OnHide=FCKToolbarPanelButton_OnPanelHide;};function FCKToolbarPanelButton_OnButtonClick(toolbarButton){var oButton=this._FCKToolbarPanelButton;var e=oButton._UIButton.MainElement;oButton._UIButton.ChangeState(FCK_TRISTATE_ON);oButton.LineImg.style.width=(e.offsetWidth-2)+'px';FCK.ToolbarSet.CurrentInstance.Commands.GetCommand(oButton.CommandName).Execute(0,e.offsetHeight-1,e);};function FCKToolbarPanelButton_OnPanelHide(){var oMenuButton=this._FCKToolbarPanelButton;oMenuButton._UIButton.ChangeState(FCK_TRISTATE_OFF);};FCKToolbarPanelButton.prototype.RefreshState=FCKToolbarButton.prototype.RefreshState;FCKToolbarPanelButton.prototype.Enable=FCKToolbarButton.prototype.Enable;FCKToolbarPanelButton.prototype.Disable=FCKToolbarButton.prototype.Disable;
+var FCKToolbarItems=new Object();FCKToolbarItems.LoadedItems=new Object();FCKToolbarItems.RegisterItem=function(A,B){this.LoadedItems[A]=B;};FCKToolbarItems.GetItem=function(A){var B=FCKToolbarItems.LoadedItems[A];if (B) return B;switch (A){case 'Source':B=new FCKToolbarButton('Source',FCKLang.Source,null,FCK_TOOLBARITEM_ICONTEXT,true,true,1);break;case 'DocProps':B=new FCKToolbarButton('DocProps',FCKLang.DocProps,null,null,null,null,2);break;case 'Save':B=new FCKToolbarButton('Save',FCKLang.Save,null,null,true,null,3);break;case 'NewPage':B=new FCKToolbarButton('NewPage',FCKLang.NewPage,null,null,true,null,4);break;case 'Preview':B=new FCKToolbarButton('Preview',FCKLang.Preview,null,null,true,null,5);break;case 'Templates':B=new FCKToolbarButton('Templates',FCKLang.Templates,null,null,null,null,6);break;case 'About':B=new FCKToolbarButton('About',FCKLang.About,null,null,true,null,47);break;case 'Cut':B=new FCKToolbarButton('Cut',FCKLang.Cut,null,null,false,true,7);break;case 'Copy':B=new FCKToolbarButton('Copy',FCKLang.Copy,null,null,false,true,8);break;case 'Paste':B=new FCKToolbarButton('Paste',FCKLang.Paste,null,null,false,true,9);break;case 'PasteText':B=new FCKToolbarButton('PasteText',FCKLang.PasteText,null,null,false,true,10);break;case 'PasteWord':B=new FCKToolbarButton('PasteWord',FCKLang.PasteWord,null,null,false,true,11);break;case 'Print':B=new FCKToolbarButton('Print',FCKLang.Print,null,null,false,true,12);break;case 'SpellCheck':B=new FCKToolbarButton('SpellCheck',FCKLang.SpellCheck,null,null,null,null,13);break;case 'Undo':B=new FCKToolbarButton('Undo',FCKLang.Undo,null,null,false,true,14);break;case 'Redo':B=new FCKToolbarButton('Redo',FCKLang.Redo,null,null,false,true,15);break;case 'SelectAll':B=new FCKToolbarButton('SelectAll',FCKLang.SelectAll,null,null,null,null,18);break;case 'RemoveFormat':B=new FCKToolbarButton('RemoveFormat',FCKLang.RemoveFormat,null,null,false,true,19);break;case 'FitWindow':B=new FCKToolbarButton('FitWindow',FCKLang.FitWindow,null,null,true,true,66);break;case 'Bold':B=new FCKToolbarButton('Bold',FCKLang.Bold,null,null,false,true,20);break;case 'Italic':B=new FCKToolbarButton('Italic',FCKLang.Italic,null,null,false,true,21);break;case 'Underline':B=new FCKToolbarButton('Underline',FCKLang.Underline,null,null,false,true,22);break;case 'StrikeThrough':B=new FCKToolbarButton('StrikeThrough',FCKLang.StrikeThrough,null,null,false,true,23);break;case 'Subscript':B=new FCKToolbarButton('Subscript',FCKLang.Subscript,null,null,false,true,24);break;case 'Superscript':B=new FCKToolbarButton('Superscript',FCKLang.Superscript,null,null,false,true,25);break;case 'OrderedList':B=new FCKToolbarButton('InsertOrderedList',FCKLang.NumberedListLbl,FCKLang.NumberedList,null,false,true,26);break;case 'UnorderedList':B=new FCKToolbarButton('InsertUnorderedList',FCKLang.BulletedListLbl,FCKLang.BulletedList,null,false,true,27);break;case 'Outdent':B=new FCKToolbarButton('Outdent',FCKLang.DecreaseIndent,null,null,false,true,28);break;case 'Indent':B=new FCKToolbarButton('Indent',FCKLang.IncreaseIndent,null,null,false,true,29);break;case 'Link':B=new FCKToolbarButton('Link',FCKLang.InsertLinkLbl,FCKLang.InsertLink,null,false,true,34);break;case 'Unlink':B=new FCKToolbarButton('Unlink',FCKLang.RemoveLink,null,null,false,true,35);break;case 'Anchor':B=new FCKToolbarButton('Anchor',FCKLang.Anchor,null,null,null,null,36);break;case 'Image':B=new FCKToolbarButton('Image',FCKLang.InsertImageLbl,FCKLang.InsertImage,null,false,true,37);break;case 'Flash':B=new FCKToolbarButton('Flash',FCKLang.InsertFlashLbl,FCKLang.InsertFlash,null,false,true,38);break;case 'Table':B=new FCKToolbarButton('Table',FCKLang.InsertTableLbl,FCKLang.InsertTable,null,false,true,39);break;case 'SpecialChar':B=new FCKToolbarButton('SpecialChar',FCKLang.InsertSpecialCharLbl,FCKLang.InsertSpecialChar,null,false,true,42);break;case 'Smiley':B=new FCKToolbarButton('Smiley',FCKLang.InsertSmileyLbl,FCKLang.InsertSmiley,null,false,true,41);break;case 'PageBreak':B=new FCKToolbarButton('PageBreak',FCKLang.PageBreakLbl,FCKLang.PageBreak,null,false,true,43);break;case 'UniversalKey':B=new FCKToolbarButton('UniversalKey',FCKLang.UniversalKeyboard,null,null,false,true,44);break;case 'Rule':B=new FCKToolbarButton('InsertHorizontalRule',FCKLang.InsertLineLbl,FCKLang.InsertLine,null,false,true,40);break;case 'JustifyLeft':B=new FCKToolbarButton('JustifyLeft',FCKLang.LeftJustify,null,null,false,true,30);break;case 'JustifyCenter':B=new FCKToolbarButton('JustifyCenter',FCKLang.CenterJustify,null,null,false,true,31);break;case 'JustifyRight':B=new FCKToolbarButton('JustifyRight',FCKLang.RightJustify,null,null,false,true,32);break;case 'JustifyFull':B=new FCKToolbarButton('JustifyFull',FCKLang.BlockJustify,null,null,false,true,33);break;case 'Style':B=new FCKToolbarStyleCombo();break;case 'FontName':B=new FCKToolbarFontsCombo();break;case 'FontSize':B=new FCKToolbarFontSizeCombo();break;case 'FontFormat':B=new FCKToolbarFontFormatCombo();break;case 'TextColor':B=new FCKToolbarPanelButton('TextColor',FCKLang.TextColor,null,null,45);break;case 'BGColor':B=new FCKToolbarPanelButton('BGColor',FCKLang.BGColor,null,null,46);break;case 'Find':B=new FCKToolbarButton('Find',FCKLang.Find,null,null,null,null,16);break;case 'Replace':B=new FCKToolbarButton('Replace',FCKLang.Replace,null,null,null,null,17);break;case 'Form':B=new FCKToolbarButton('Form',FCKLang.Form,null,null,null,null,48);break;case 'Checkbox':B=new FCKToolbarButton('Checkbox',FCKLang.Checkbox,null,null,null,null,49);break;case 'Radio':B=new FCKToolbarButton('Radio',FCKLang.RadioButton,null,null,null,null,50);break;case 'TextField':B=new FCKToolbarButton('TextField',FCKLang.TextField,null,null,null,null,51);break;case 'Textarea':B=new FCKToolbarButton('Textarea',FCKLang.Textarea,null,null,null,null,52);break;case 'HiddenField':B=new FCKToolbarButton('HiddenField',FCKLang.HiddenField,null,null,null,null,56);break;case 'Button':B=new FCKToolbarButton('Button',FCKLang.Button,null,null,null,null,54);break;case 'Select':B=new FCKToolbarButton('Select',FCKLang.SelectionField,null,null,null,null,53);break;case 'ImageButton':B=new FCKToolbarButton('ImageButton',FCKLang.ImageButton,null,null,null,null,55);break;default:alert(FCKLang.UnknownToolbarItem.replace(/%1/g,A));return null;};FCKToolbarItems.LoadedItems[A]=B;return B;}
+var FCKToolbar=function(){this.Items=new Array();if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbar_Cleanup);};FCKToolbar.prototype.AddItem=function(A){return this.Items[this.Items.length]=A;};FCKToolbar.prototype.AddButton=function(A,B,C,D,E,F){if (typeof(D)=='number') D=[this.DefaultIconsStrip,this.DefaultIconSize,D];var G=new FCKToolbarButtonUI(A,B,C,D,E,F);G._FCKToolbar=this;G.OnClick=FCKToolbar_OnItemClick;return this.AddItem(G);};function FCKToolbar_OnItemClick(item){var oToolbar=item._FCKToolbar;if (oToolbar.OnItemClick) oToolbar.OnItemClick(oToolbar,item);};FCKToolbar.prototype.AddSeparator=function(){this.AddItem(new FCKToolbarSeparator());};FCKToolbar.prototype.Create=function(A){if (this.MainElement){if (this.MainElement.parentNode) this.MainElement.parentNode.removeChild(this.MainElement);this.MainElement=null;};var B=FCKTools.GetElementDocument(A);var e=this.MainElement=B.createElement('table');e.className='TB_Toolbar';e.style.styleFloat=e.style.cssFloat=(FCKLang.Dir=='ltr'?'left':'right');e.dir=FCKLang.Dir;e.cellPadding=0;e.cellSpacing=0;this.RowElement=e.insertRow(-1);var C;if (!this.HideStart){C=this.RowElement.insertCell(-1);C.appendChild(B.createElement('div')).className='TB_Start';};for (var i=0;i<this.Items.length;i++){this.Items[i].Create(this.RowElement.insertCell(-1));};if (!this.HideEnd){C=this.RowElement.insertCell(-1);C.appendChild(B.createElement('div')).className='TB_End';};A.appendChild(e);};function FCKToolbar_Cleanup(){this.MainElement=null;this.RowElement=null;};var FCKToolbarSeparator=function(){};FCKToolbarSeparator.prototype.Create=function(A){FCKTools.AppendElement(A,'div').className='TB_Separator';}
+var FCKToolbarBreak=function(){};FCKToolbarBreak.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A).createElement('div');B.className='TB_Break';B.style.clear=FCKLang.Dir=='rtl'?'left':'right';A.appendChild(B);}
+function FCKToolbarSet_Create(overhideLocation){var oToolbarSet;var sLocation=overhideLocation||FCKConfig.ToolbarLocation;switch (sLocation){case 'In':document.getElementById('xToolbarRow').style.display='';oToolbarSet=new FCKToolbarSet(document);break;default:FCK.Events.AttachEvent('OnBlur',FCK_OnBlur);FCK.Events.AttachEvent('OnFocus',FCK_OnFocus);var eToolbarTarget;var oOutMatch=sLocation.match(/^Out:(.+)\((\w+)\)$/);if (oOutMatch){eToolbarTarget=eval('parent.'+oOutMatch[1]).document.getElementById(oOutMatch[2]);}else{oOutMatch=sLocation.match(/^Out:(\w+)$/);if (oOutMatch) eToolbarTarget=parent.document.getElementById(oOutMatch[1]);};if (!eToolbarTarget){alert('Invalid value for "ToolbarLocation"');return this._Init('In');};if (oToolbarSet=eToolbarTarget.__FCKToolbarSet) break;var eToolbarIFrame=FCKTools.GetElementDocument(eToolbarTarget).createElement('iframe');eToolbarIFrame.frameBorder=0;eToolbarIFrame.width='100%';eToolbarIFrame.height='10';eToolbarTarget.appendChild(eToolbarIFrame);eToolbarIFrame.unselectable='on';var eTargetDocument=eToolbarIFrame.contentWindow.document;eTargetDocument.open();eTargetDocument.write('<html><head><script type="text/javascript"> window.onload = window.onresize = function() { window.frameElement.height = document.body.scrollHeight ; } </script></head><body style="overflow: hidden">'+document.getElementById('xToolbarSpace').innerHTML+'</body></html>');eTargetDocument.close();eTargetDocument.oncontextmenu=FCKTools.CancelEvent;FCKTools.AppendStyleSheet(eTargetDocument,FCKConfig.SkinPath+'fck_editor.css');oToolbarSet=eToolbarTarget.__FCKToolbarSet=new FCKToolbarSet(eTargetDocument);oToolbarSet._IFrame=eToolbarIFrame;if (FCK.IECleanup) FCK.IECleanup.AddItem(eToolbarTarget,FCKToolbarSet_Target_Cleanup);};oToolbarSet.CurrentInstance=FCK;FCK.AttachToOnSelectionChange(oToolbarSet.RefreshItemsState);return oToolbarSet;};function FCK_OnBlur(editorInstance){var eToolbarSet=editorInstance.ToolbarSet;if (eToolbarSet.CurrentInstance==editorInstance) eToolbarSet.Disable();};function FCK_OnFocus(editorInstance){var oToolbarset=editorInstance.ToolbarSet;var oInstance=editorInstance||FCK;oToolbarset.CurrentInstance.FocusManager.RemoveWindow(oToolbarset._IFrame.contentWindow);oToolbarset.CurrentInstance=oInstance;oInstance.FocusManager.AddWindow(oToolbarset._IFrame.contentWindow,true);oToolbarset.Enable();};function FCKToolbarSet_Cleanup(){this._TargetElement=null;this._IFrame=null;};function FCKToolbarSet_Target_Cleanup(){this.__FCKToolbarSet=null;};var FCKToolbarSet=function(A){this._Document=A;this._TargetElement=A.getElementById('xToolbar');var B=A.getElementById('xExpandHandle');var C=A.getElementById('xCollapseHandle');B.title=FCKLang.ToolbarExpand;B.onclick=FCKToolbarSet_Expand_OnClick;C.title=FCKLang.ToolbarCollapse;C.onclick=FCKToolbarSet_Collapse_OnClick;if (!FCKConfig.ToolbarCanCollapse||FCKConfig.ToolbarStartExpanded) this.Expand();else this.Collapse();C.style.display=FCKConfig.ToolbarCanCollapse?'':'none';if (FCKConfig.ToolbarCanCollapse) C.style.display='';else A.getElementById('xTBLeftBorder').style.display='';this.Toolbars=new Array();this.IsLoaded=false;if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKToolbarSet_Cleanup);};function FCKToolbarSet_Expand_OnClick(){FCK.ToolbarSet.Expand();};function FCKToolbarSet_Collapse_OnClick(){FCK.ToolbarSet.Collapse();};FCKToolbarSet.prototype.Expand=function(){this._ChangeVisibility(false);};FCKToolbarSet.prototype.Collapse=function(){this._ChangeVisibility(true);};FCKToolbarSet.prototype._ChangeVisibility=function(A){this._Document.getElementById('xCollapsed').style.display=A?'':'none';this._Document.getElementById('xExpanded').style.display=A?'none':'';if (FCKBrowserInfo.IsGecko){FCKTools.RunFunction(window.onresize);}};FCKToolbarSet.prototype.Load=function(A){this.Name=A;this.Items=new Array();this.ItemsWysiwygOnly=new Array();this.ItemsContextSensitive=new Array();this._TargetElement.innerHTML='';var B=FCKConfig.ToolbarSets[A];if (!B){alert(FCKLang.UnknownToolbarSet.replace(/%1/g,A));return;};this.Toolbars=new Array();for (var x=0;x<B.length;x++){var C=B[x];var D;if (typeof(C)=='string'){if (C=='/') D=new FCKToolbarBreak();}else{D=new FCKToolbar();for (var j=0;j<C.length;j++){var E=C[j];if (E=='-') D.AddSeparator();else{var F=FCKToolbarItems.GetItem(E);if (F){D.AddItem(F);this.Items.push(F);if (!F.SourceView) this.ItemsWysiwygOnly.push(F);if (F.ContextSensitive) this.ItemsContextSensitive.push(F);}}}};D.Create(this._TargetElement);this.Toolbars[this.Toolbars.length]=D;};FCKTools.DisableSelection(this._Document.getElementById('xCollapseHandle').parentNode);if (FCK.Status!=FCK_STATUS_COMPLETE) FCK.Events.AttachEvent('OnStatusChange',this.RefreshModeState);else this.RefreshModeState();this.IsLoaded=true;this.IsEnabled=true;FCKTools.RunFunction(this.OnLoad);};FCKToolbarSet.prototype.Enable=function(){if (this.IsEnabled) return;this.IsEnabled=true;var A=this.Items;for (var i=0;i<A.length;i++) A[i].RefreshState();};FCKToolbarSet.prototype.Disable=function(){if (!this.IsEnabled) return;this.IsEnabled=false;var A=this.Items;for (var i=0;i<A.length;i++) A[i].Disable();};FCKToolbarSet.prototype.RefreshModeState=function(A){if (FCK.Status!=FCK_STATUS_COMPLETE) return;var B=A?A.ToolbarSet:this;var C=B.ItemsWysiwygOnly;if (FCK.EditMode==FCK_EDITMODE_WYSIWYG){for (var i=0;i<C.length;i++) C[i].Enable();B.RefreshItemsState(A);}else{B.RefreshItemsState(A);for (var i=0;i<C.length;i++) C[i].Disable();}};FCKToolbarSet.prototype.RefreshItemsState=function(A){var B=(A?A.ToolbarSet:this).ItemsContextSensitive;for (var i=0;i<B.length;i++) B[i].RefreshState();};
+var FCKDialog=new Object();FCKDialog.OpenDialog=function(A,B,C,D,E,F,G,H){var I=new Object();I.Title=B;I.Page=C;I.Editor=window;I.CustomValue=F;var J=FCKConfig.BasePath+'fckdialog.html';this.Show(I,A,J,D,E,G,H);};
+FCKDialog.Show=function(A,B,C,D,E,F){if (!F) F=window;FCKFocusManager.Lock();var G=F.showModalDialog(C,A,"dialogWidth:"+D+"px;dialogHeight:"+E+"px;help:no;scroll:no;status:no");if (!G) alert(FCKLang.DialogBlocked);FCKFocusManager.Unlock();};
+var FCKMenuItem=function(A,B,C,D,E){this.Name=B;this.Label=C||B;this.IsDisabled=E;this.Icon=new FCKIcon(D);this.SubMenu=new FCKMenuBlockPanel();this.SubMenu.Parent=A;this.SubMenu.OnClick=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnClick,this);if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuItem_Cleanup);};FCKMenuItem.prototype.AddItem=function(A,B,C,D){this.HasSubMenu=true;return this.SubMenu.AddItem(A,B,C,D);};FCKMenuItem.prototype.AddSeparator=function(){this.SubMenu.AddSeparator();};FCKMenuItem.prototype.Create=function(A){var B=this.HasSubMenu;var C=FCKTools.GetElementDocument(A);var r=this.MainElement=A.insertRow(-1);r.className=this.IsDisabled?'MN_Item_Disabled':'MN_Item';if (!this.IsDisabled){FCKTools.AddEventListenerEx(r,'mouseover',FCKMenuItem_OnMouseOver,[this]);FCKTools.AddEventListenerEx(r,'click',FCKMenuItem_OnClick,[this]);if (!B) FCKTools.AddEventListenerEx(r,'mouseout',FCKMenuItem_OnMouseOut,[this]);};var D=r.insertCell(-1);D.className='MN_Icon';D.appendChild(this.Icon.CreateIconElement(C));D=r.insertCell(-1);D.className='MN_Label';D.noWrap=true;D.appendChild(C.createTextNode(this.Label));D=r.insertCell(-1);if (B){D.className='MN_Arrow';var E=D.appendChild(C.createElement('IMG'));E.src=FCK_IMAGES_PATH+'arrow_'+FCKLang.Dir+'.gif';E.width=4;E.height=7;this.SubMenu.Create();this.SubMenu.Panel.OnHide=FCKTools.CreateEventListener(FCKMenuItem_SubMenu_OnHide,this);}};FCKMenuItem.prototype.Activate=function(){this.MainElement.className='MN_Item_Over';if (this.HasSubMenu){this.SubMenu.Show(this.MainElement.offsetWidth+2,-2,this.MainElement);};FCKTools.RunFunction(this.OnActivate,this);};FCKMenuItem.prototype.Deactivate=function(){this.MainElement.className='MN_Item';if (this.HasSubMenu) this.SubMenu.Hide();};/* Events */ function FCKMenuItem_SubMenu_OnClick(clickedItem,listeningItem){FCKTools.RunFunction(listeningItem.OnClick,listeningItem,[clickedItem]);};function FCKMenuItem_SubMenu_OnHide(menuItem){menuItem.Deactivate();};function FCKMenuItem_OnClick(ev,menuItem){if (menuItem.HasSubMenu) menuItem.Activate();else{menuItem.Deactivate();FCKTools.RunFunction(menuItem.OnClick,menuItem,[menuItem]);}};function FCKMenuItem_OnMouseOver(ev,menuItem){menuItem.Activate();};function FCKMenuItem_OnMouseOut(ev,menuItem){menuItem.Deactivate();};function FCKMenuItem_Cleanup(){this.MainElement=null;}
+var FCKMenuBlock=function(){this._Items=new Array();};FCKMenuBlock.prototype.AddItem=function(A,B,C,D){var E=new FCKMenuItem(this,A,B,C,D);E.OnClick=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnClick,this);E.OnActivate=FCKTools.CreateEventListener(FCKMenuBlock_Item_OnActivate,this);this._Items.push(E);return E;};FCKMenuBlock.prototype.AddSeparator=function(){this._Items.push(new FCKMenuSeparator());};FCKMenuBlock.prototype.RemoveAllItems=function(){this._Items=new Array();var A=this._ItemsTable;if (A){while (A.rows.length>0) A.deleteRow(0);}};FCKMenuBlock.prototype.Create=function(A){if (!this._ItemsTable){if (FCK.IECleanup) FCK.IECleanup.AddItem(this,FCKMenuBlock_Cleanup);this._Window=FCKTools.GetElementWindow(A);var B=FCKTools.GetElementDocument(A);var C=A.appendChild(B.createElement('table'));C.cellPadding=0;C.cellSpacing=0;FCKTools.DisableSelection(C);var D=C.insertRow(-1).insertCell(-1);D.className='MN_Menu';var E=this._ItemsTable=D.appendChild(B.createElement('table'));E.cellPadding=0;E.cellSpacing=0;};for (var i=0;i<this._Items.length;i++) this._Items[i].Create(this._ItemsTable);};/* Events */ function FCKMenuBlock_Item_OnClick(clickedItem,menuBlock){FCKTools.RunFunction(menuBlock.OnClick,menuBlock,[clickedItem]);};function FCKMenuBlock_Item_OnActivate(menuBlock){var oActiveItem=menuBlock._ActiveItem;if (oActiveItem&&oActiveItem!=this){if (!FCKBrowserInfo.IsIE&&oActiveItem.HasSubMenu&&!this.HasSubMenu) menuBlock._Window.focus();oActiveItem.Deactivate();};menuBlock._ActiveItem=this;};function FCKMenuBlock_Cleanup(){this._Window=null;this._ItemsTable=null;};var FCKMenuSeparator=function(){};FCKMenuSeparator.prototype.Create=function(A){var B=FCKTools.GetElementDocument(A);var r=A.insertRow(-1);var C=r.insertCell(-1);C.className='MN_Separator MN_Icon';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';C=r.insertCell(-1);C.className='MN_Separator';C.appendChild(B.createElement('DIV')).className='MN_Separator_Line';}
+var FCKMenuBlockPanel=function(){FCKMenuBlock.call(this);};FCKMenuBlockPanel.prototype=new FCKMenuBlock();FCKMenuBlockPanel.prototype.Create=function(){var A=this.Panel=(this.Parent&&this.Parent.Panel?this.Parent.Panel.CreateChildPanel():new FCKPanel());A.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');FCKMenuBlock.prototype.Create.call(this,A.MainNode);};FCKMenuBlockPanel.prototype.Show=function(x,y,A){if (!this.Panel.CheckIsOpened()) this.Panel.Show(x,y,A);};FCKMenuBlockPanel.prototype.Hide=function(){if (this.Panel.CheckIsOpened()) this.Panel.Hide();}
+var FCKContextMenu=function(A,B,C){var D=this._Panel=new FCKPanel(A,true);D.AppendStyleSheet(FCKConfig.SkinPath+'fck_editor.css');D.IsContextMenu=true;var E=this._MenuBlock=new FCKMenuBlock();E.Panel=D;E.OnClick=FCKTools.CreateEventListener(FCKContextMenu_MenuBlock_OnClick,this);this._Redraw=true;this.SetMouseClickWindow(B||A);};FCKContextMenu.prototype.SetMouseClickWindow=function(A){if (!FCKBrowserInfo.IsIE){this._Document=A.document;this._Document.addEventListener('contextmenu',FCKContextMenu_Document_OnContextMenu,false);}};FCKContextMenu.prototype.AddItem=function(A,B,C,D){var E=this._MenuBlock.AddItem(A,B,C,D);this._Redraw=true;return E;};FCKContextMenu.prototype.AddSeparator=function(){this._MenuBlock.AddSeparator();this._Redraw=true;};FCKContextMenu.prototype.RemoveAllItems=function(){this._MenuBlock.RemoveAllItems();this._Redraw=true;};FCKContextMenu.prototype.AttachToElement=function(A){if (FCKBrowserInfo.IsIE) FCKTools.AddEventListenerEx(A,'contextmenu',FCKContextMenu_AttachedElement_OnContextMenu,this);else A._FCKContextMenu=this;};function FCKContextMenu_Document_OnContextMenu(e){var el=e.target;while (el){if (el._FCKContextMenu){FCKTools.CancelEvent(e);FCKContextMenu_AttachedElement_OnContextMenu(e,el._FCKContextMenu,el);};el=el.parentNode;}};function FCKContextMenu_AttachedElement_OnContextMenu(ev,fckContextMenu,el){var eTarget=el||this;if (fckContextMenu.OnBeforeOpen) fckContextMenu.OnBeforeOpen.call(fckContextMenu,eTarget);if (fckContextMenu._Redraw){fckContextMenu._MenuBlock.Create(fckContextMenu._Panel.MainNode);fckContextMenu._Redraw=false;};fckContextMenu._Panel.Show(ev.pageX||ev.screenX,ev.pageY||ev.screenY,ev.currentTarget||null);return false;};function FCKContextMenu_MenuBlock_OnClick(menuItem,contextMenu){contextMenu._Panel.Hide();FCKTools.RunFunction(contextMenu.OnItemClick,contextMenu,menuItem);}
+FCK.ContextMenu=new Object();FCK.ContextMenu.Listeners=new Array();FCK.ContextMenu.RegisterListener=function(A){if (A) this.Listeners.push(A);};function FCK_ContextMenu_Init(){var oInnerContextMenu=FCK.ContextMenu._InnerContextMenu=new FCKContextMenu(FCKBrowserInfo.IsIE?window:window.parent,FCK.EditorWindow,FCKLang.Dir);oInnerContextMenu.OnBeforeOpen=FCK_ContextMenu_OnBeforeOpen;oInnerContextMenu.OnItemClick=FCK_ContextMenu_OnItemClick;var oMenu=FCK.ContextMenu;for (var i=0;i<FCKConfig.ContextMenu.length;i++) oMenu.RegisterListener(FCK_ContextMenu_GetListener(FCKConfig.ContextMenu[i]));};function FCK_ContextMenu_GetListener(listenerName){switch (listenerName){case 'Generic':return {AddItems:function(A,B,C){A.AddItem('Cut',FCKLang.Cut,7,FCKCommands.GetCommand('Cut').GetState()==FCK_TRISTATE_DISABLED);A.AddItem('Copy',FCKLang.Copy,8,FCKCommands.GetCommand('Copy').GetState()==FCK_TRISTATE_DISABLED);A.AddItem('Paste',FCKLang.Paste,9,FCKCommands.GetCommand('Paste').GetState()==FCK_TRISTATE_DISABLED);}};case 'Table':return {AddItems:function(A,B,C){var D=(C=='TABLE');var E=(!D&&FCKSelection.HasAncestorNode('TABLE'));if (E){A.AddSeparator();var F=A.AddItem('Cell',FCKLang.CellCM);F.AddItem('TableInsertCell',FCKLang.InsertCell,58);F.AddItem('TableDeleteCells',FCKLang.DeleteCells,59);F.AddItem('TableMergeCells',FCKLang.MergeCells,60);F.AddItem('TableSplitCell',FCKLang.SplitCell,61);F.AddSeparator();F.AddItem('TableCellProp',FCKLang.CellProperties,57);A.AddSeparator();F=A.AddItem('Row',FCKLang.RowCM);F.AddItem('TableInsertRow',FCKLang.InsertRow,62);F.AddItem('TableDeleteRows',FCKLang.DeleteRows,63);A.AddSeparator();F=A.AddItem('Column',FCKLang.ColumnCM);F.AddItem('TableInsertColumn',FCKLang.InsertColumn,64);F.AddItem('TableDeleteColumns',FCKLang.DeleteColumns,65);};if (D||E){A.AddSeparator();A.AddItem('TableDelete',FCKLang.TableDelete);A.AddItem('TableProp',FCKLang.TableProperties,39);}}};case 'Link':return {AddItems:function(A,B,C){if (FCK.GetNamedCommandState('Unlink')!=FCK_TRISTATE_DISABLED){A.AddSeparator();A.AddItem('Link',FCKLang.EditLink,34);A.AddItem('Unlink',FCKLang.RemoveLink,35);}}};case 'Image':return {AddItems:function(A,B,C){if (C=='IMG'&&!B.getAttribute('_fckfakelement')){A.AddSeparator();A.AddItem('Image',FCKLang.ImageProperties,37);}}};case 'Anchor':return {AddItems:function(A,B,C){if (C=='IMG'&&B.getAttribute('_fckanchor')){A.AddSeparator();A.AddItem('Anchor',FCKLang.AnchorProp,36);}}};case 'Flash':return {AddItems:function(A,B,C){if (C=='IMG'&&B.getAttribute('_fckflash')){A.AddSeparator();A.AddItem('Flash',FCKLang.FlashProperties,38);}}};case 'Form':return {AddItems:function(A,B,C){if (FCKSelection.HasAncestorNode('FORM')){A.AddSeparator();A.AddItem('Form',FCKLang.FormProp,48);}}};case 'Checkbox':return {AddItems:function(A,B,C){if (C=='INPUT'&&B.type=='checkbox'){A.AddSeparator();A.AddItem('Checkbox',FCKLang.CheckboxProp,49);}}};case 'Radio':return {AddItems:function(A,B,C){if (C=='INPUT'&&B.type=='radio'){A.AddSeparator();A.AddItem('Radio',FCKLang.RadioButtonProp,50);}}};case 'TextField':return {AddItems:function(A,B,C){if (C=='INPUT'&&(B.type=='text'||B.type=='password')){A.AddSeparator();A.AddItem('TextField',FCKLang.TextFieldProp,51);}}};case 'HiddenField':return {AddItems:function(A,B,C){if (C=='INPUT'&&B.type=='hidden'){A.AddSeparator();A.AddItem('HiddenField',FCKLang.HiddenFieldProp,56);}}};case 'ImageButton':return {AddItems:function(A,B,C){if (C=='INPUT'&&B.type=='image'){A.AddSeparator();A.AddItem('ImageButton',FCKLang.ImageButtonProp,55);}}};case 'Button':return {AddItems:function(A,B,C){if (C=='INPUT'&&(B.type=='button'||B.type=='submit'||B.type=='reset')){A.AddSeparator();A.AddItem('Button',FCKLang.ButtonProp,54);}}};case 'Select':return {AddItems:function(A,B,C){if (C=='SELECT'){A.AddSeparator();A.AddItem('Select',FCKLang.SelectionFieldProp,53);}}};case 'Textarea':return {AddItems:function(A,B,C){if (C=='TEXTAREA'){A.AddSeparator();A.AddItem('Textarea',FCKLang.TextareaProp,52);}}};case 'BulletedList':return {AddItems:function(A,B,C){if (FCKSelection.HasAncestorNode('UL')){A.AddSeparator();A.AddItem('BulletedList',FCKLang.BulletedListProp,27);}}};case 'NumberedList':return {AddItems:function(A,B,C){if (FCKSelection.HasAncestorNode('OL')){A.AddSeparator();A.AddItem('NumberedList',FCKLang.NumberedListProp,26);}}};}};function FCK_ContextMenu_OnBeforeOpen(){FCK.Events.FireEvent("OnSelectionChange");var oTag,sTagName;if (oTag=FCKSelection.GetSelectedElement()) sTagName=oTag.tagName;var oMenu=FCK.ContextMenu._InnerContextMenu;oMenu.RemoveAllItems();var aListeners=FCK.ContextMenu.Listeners;for (var i=0;i<aListeners.length;i++) aListeners[i].AddItems(oMenu,oTag,sTagName);};function FCK_ContextMenu_OnItemClick(item){FCK.Focus();FCKCommands.GetCommand(item.Name).Execute();}
+var FCKPlugin=function(A,B,C){this.Name=A;this.BasePath=C?C:FCKConfig.PluginsPath;this.Path=this.BasePath+A+'/';if (!B||B.length==0) this.AvailableLangs=new Array();else this.AvailableLangs=B.split(',');};FCKPlugin.prototype.Load=function(){if (this.AvailableLangs.length>0){var A;if (this.AvailableLangs.indexOf(FCKLanguageManager.ActiveLanguage.Code)>=0) A=FCKLanguageManager.ActiveLanguage.Code;else A=this.AvailableLangs[0];LoadScript(this.Path+'lang/'+A+'.js');};LoadScript(this.Path+'fckplugin.js');}
+var FCKPlugins=FCK.Plugins=new Object();FCKPlugins.ItemsCount=0;FCKPlugins.Items=new Object();FCKPlugins.Load=function(){var A=FCKPlugins.Items;for (var i=0;i<FCKConfig.Plugins.Items.length;i++){var B=FCKConfig.Plugins.Items[i];var C=A[B[0]]=new FCKPlugin(B[0],B[1],B[2]);FCKPlugins.ItemsCount++;};for (var s in A) A[s].Load();FCKPlugins.Load=null;}
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/js/fck_startup.js 1.4.1.src/fckeditor/editor/js/fck_startup.js
--- 1.4.0sr5-1.src/fckeditor/editor/js/fck_startup.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/js/fck_startup.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,24 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * This file has been compacted for best loading performance.
- */
-var NS;if (!(NS=window.parent.__FCKeditorNS)) NS=window.parent.__FCKeditorNS=new Object();
-Array.prototype.addItem=function(A){var i=this.length;this[i]=A;return i;};Array.prototype.indexOf=function(A){for (var i=0;i<this.length;i++){if (this[i]==A) return i;};return-1;};String.prototype.startsWith=function(A){return (this.substr(0,A.length)==A);};String.prototype.endsWith=function(A,B){var C=this.length;var D=A.length;if (D>C) return false;if (B){var E=new RegExp(A+'$','i');return E.test(this);}else return (D==0||this.substr(C-D,D)==A);};String.prototype.remove=function(A,B){var s='';if (A>0) s=this.substring(0,A);if (A+B<this.length) s+=this.substring(A+B,this.length);return s;};String.prototype.trim=function(){return this.replace(/(^\s*)|(\s*$)/g,'');};String.prototype.ltrim=function(){return this.replace(/^\s*/g,'');};String.prototype.rtrim=function(){return this.replace(/\s*$/g,'');};String.prototype.replaceNewLineChars=function(A){return this.replace(/\n/g,A);}
-var FCK_STATUS_NOTLOADED=window.parent.FCK_STATUS_NOTLOADED=0;var FCK_STATUS_ACTIVE=window.parent.FCK_STATUS_ACTIVE=1;var FCK_STATUS_COMPLETE=window.parent.FCK_STATUS_COMPLETE=2;var FCK_TRISTATE_OFF=window.parent.FCK_TRISTATE_OFF=0;var FCK_TRISTATE_ON=window.parent.FCK_TRISTATE_ON=1;var FCK_TRISTATE_DISABLED=window.parent.FCK_TRISTATE_DISABLED=-1;var FCK_UNKNOWN=window.parent.FCK_UNKNOWN=-1000;var FCK_TOOLBARITEM_ONLYICON=window.parent.FCK_TOOLBARITEM_ONLYICON=0;var FCK_TOOLBARITEM_ONLYTEXT=window.parent.FCK_TOOLBARITEM_ONLYTEXT=1;var FCK_TOOLBARITEM_ICONTEXT=window.parent.FCK_TOOLBARITEM_ICONTEXT=2;var FCK_EDITMODE_WYSIWYG=window.parent.FCK_EDITMODE_WYSIWYG=0;var FCK_EDITMODE_SOURCE=window.parent.FCK_EDITMODE_SOURCE=1;
-var FCKBrowserInfo;if (!(FCKBrowserInfo=NS.FCKBrowserInfo)){FCKBrowserInfo=NS.FCKBrowserInfo=new Object();var sAgent=navigator.userAgent.toLowerCase();FCKBrowserInfo.IsIE=(sAgent.indexOf("msie")!=-1);FCKBrowserInfo.IsGecko=!FCKBrowserInfo.IsIE;FCKBrowserInfo.IsSafari=(sAgent.indexOf("safari")!=-1);FCKBrowserInfo.IsNetscape=(sAgent.indexOf("netscape")!=-1);};
-var FCKScriptLoader=new Object();FCKScriptLoader.IsLoading=false;FCKScriptLoader.Queue=new Array();FCKScriptLoader.AddScript=function(A){FCKScriptLoader.Queue[FCKScriptLoader.Queue.length]=A;if (!this.IsLoading) this.CheckQueue();};FCKScriptLoader.CheckQueue=function(){if (this.Queue.length>0){this.IsLoading=true;var A=this.Queue[0];var B=new Array();for (i=1;i<this.Queue.length;i++) B[i-1]=this.Queue[i];this.Queue=B;this.LoadFile(A);}else{this.IsLoading=false;if (this.OnEmpty) this.OnEmpty();};};if (FCKBrowserInfo.IsSafari){FCKScriptLoader.LoadFile=function(A){if (A.lastIndexOf('.css')>0){this.CheckQueue();return;};var B=new XMLHttpRequest();B.open("GET",A,false);B.send(null);if (B.status==200){try{eval(B.responseText);}catch (e){alert('Error parsing '+A+': '+e.message);};}else alert('Error loading '+A);this.CheckQueue();};}else{FCKScriptLoader.LoadFile=function(A){var e;if (A.lastIndexOf('.css')>0){e=document.createElement('LINK');e.rel='stylesheet';e.type='text/css';}else{e=document.createElement("script");e.type="text/javascript";};document.getElementsByTagName("head")[0].appendChild(e);if (e.tagName=='LINK'){if (FCKBrowserInfo.IsIE) e.onload=FCKScriptLoader_OnLoad;else FCKScriptLoader.CheckQueue();e.href=A;}else{e.onload=e.onreadystatechange=FCKScriptLoader_OnLoad;e.src=A;};};function FCKScriptLoader_OnLoad(){if (this.tagName=='LINK'||!this.readyState||this.readyState=='loaded') FCKScriptLoader.CheckQueue();};}
-var FCKURLParams=new Object();var aParams=document.location.search.substr(1).split('&');for (var i=0;i<aParams.length;i++){var aParam=aParams[i].split('=');var sParamName=aParam[0];var sParamValue=aParam[1];FCKURLParams[sParamName]=sParamValue;}
-var FCK=new Object();FCK.Name=FCKURLParams['InstanceName'];FCK.Status=FCK_STATUS_NOTLOADED;FCK.EditMode=FCK_EDITMODE_WYSIWYG;var aElements=window.parent.document.getElementsByName(FCK.Name);aElements[aElements.length]=window.parent.document.getElementById(FCK.Name);var i=0;while ((FCK.LinkedField=aElements[i++])){if (FCK.LinkedField.tagName=='INPUT'||FCK.LinkedField.tagName=='TEXTAREA') break;};var FCKTempBin=new Object();FCKTempBin.Elements=new Array();FCKTempBin.AddElement=function(A){var B=FCKTempBin.Elements.length;FCKTempBin.Elements[B]=A;return B;};FCKTempBin.RemoveElement=function(A){var e=FCKTempBin.Elements[A];FCKTempBin.Elements[A]=null;return e;};FCKTempBin.Reset=function(){var i=0;while (i<FCKTempBin.Elements.length) FCKTempBin.Elements[i++]==null;FCKTempBin.Elements.length=0;}
-var FCKConfig=FCK.Config=new Object();if (document.location.protocol=='file:'){FCKConfig.BasePath=document.location.pathname.substr(1);FCKConfig.BasePath=FCKConfig.BasePath.replace(/\\/gi, '/');FCKConfig.BasePath='file://'+FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1);}else{FCKConfig.BasePath=document.location.pathname.substring(0,document.location.pathname.lastIndexOf('/')+1);FCKConfig.FullBasePath=document.location.protocol+'//'+document.location.host+FCKConfig.BasePath;};FCKConfig.EditorPath=FCKConfig.BasePath.replace(/editor\/$/,'');try{FCKConfig.ScreenWidth=screen.width;FCKConfig.ScreenHeight=screen.height;}catch (e){FCKConfig.ScreenWidth=800;FCKConfig.ScreenHeight=600;};FCKConfig.ProcessHiddenField=function(){this.PageConfig=new Object();var A=window.parent.document.getElementById(FCK.Name+'___Config');if (!A) return;var B=A.value.split('&');for (var i=0;i<B.length;i++){if (B[i].length==0) continue;var C=B[i].split('=');var D=unescape(C[0]);var E=unescape(C[1]);if (D=='CustomConfigurationsPath') FCKConfig[D]=E;else if (E.toLowerCase()=="true") this.PageConfig[D]=true;else if (E.toLowerCase()=="false") this.PageConfig[D]=false;else if (!isNaN(E)) this.PageConfig[D]=parseInt(E);else this.PageConfig[D]=E;};};FCKConfig.LoadPageConfig=function(){for (var A in this.PageConfig) FCKConfig[A]=this.PageConfig[A];};FCKConfig.ToolbarSets=new Object();FCKConfig.Plugins=new Object();FCKConfig.Plugins.Items=new Array();FCKConfig.Plugins.Add=function(A,B,C){FCKConfig.Plugins.Items.addItem([A,B,C]);};FCKConfig.ProtectedSource=new Object();FCKConfig.ProtectedSource.RegexEntries=new Array();FCKConfig.ProtectedSource.Add=function(A){this.RegexEntries.addItem(A);};FCKConfig.ProtectedSource.Protect=function(A){function _Replace(protectedSource){var B=FCKTempBin.AddElement(protectedSource);return '<!--{PS..'+B+'}-->';};for (var i=0;i<this.RegexEntries.length;i++){A=A.replace(this.RegexEntries[i],_Replace);};return A;};FCKConfig.ProtectedSource.Revert=function(A,B){function _Replace(m,opener,index){var C=B?FCKTempBin.RemoveElement(index):FCKTempBin.Elements[index];return FCKConfig.ProtectedSource.Revert(C,B);};return A.replace(/(<|&lt;)!--\{PS..(\d+)\}--(>|&gt;)/g,_Replace);};FCKConfig.ProtectedSource.Add(/<!--[\s\S]*?-->/g);
-var FCKeditorAPI;function FCKeditorAPI_GetInstance(instanceName){return this.__Instances[instanceName];};if (!window.parent.FCKeditorAPI){FCKeditorAPI=window.parent.FCKeditorAPI=new Object();FCKeditorAPI.__Instances=new Object();FCKeditorAPI.Version='2.1.1';FCKeditorAPI.GetInstance=FCKeditorAPI_GetInstance;}else FCKeditorAPI=window.parent.FCKeditorAPI;FCKeditorAPI.__Instances[FCK.Name]=FCK;
-function Window_OnContextMenu(e){if (e) e.preventDefault();else{if (event.srcElement==document.getElementById('eSourceField')) return true;};return false;};window.document.oncontextmenu=Window_OnContextMenu;if (FCKBrowserInfo.IsGecko){function Window_OnResize(){var oFrame=document.getElementById('eEditorArea');oFrame.height=0;var oCell=document.getElementById(FCK.EditMode==FCK_EDITMODE_WYSIWYG?'eWysiwygCell':'eSource');var iHeight=oCell.offsetHeight;oFrame.height=iHeight-2;};window.onresize=Window_OnResize;};if (FCKBrowserInfo.IsIE){var aCleanupDocs=new Array();aCleanupDocs[0]=document;function Window_OnBeforeUnload(){var d,e;var j=0;while ((d=aCleanupDocs[j++])){var i=0;while ((e=d.getElementsByTagName("DIV").item(i++))){if (e.FCKToolbarButton) e.FCKToolbarButton=null;if (e.FCKSpecialCombo) e.FCKSpecialCombo=null;if (e.Command) e.Command=null;};i=0;while ((e=d.getElementsByTagName("TR").item(i++))){if (e.FCKContextMenuItem) e.FCKContextMenuItem=null;};aCleanupDocs[j]=null;};if (typeof(FCKTempBin)!='undefined') FCKTempBin.Reset();};window.attachEvent("onunload",Window_OnBeforeUnload);};function Window_OnLoad(){if (FCKBrowserInfo.IsNetscape) document.getElementById('eWysiwygCell').style.paddingRight='2px';LoadConfigFile();};window.onload=Window_OnLoad;function LoadConfigFile(){FCKScriptLoader.OnEmpty=ProcessHiddenField;FCKScriptLoader.AddScript('../fckconfig.js');};function ProcessHiddenField(){FCKConfig.ProcessHiddenField();LoadCustomConfigFile();};function LoadCustomConfigFile(){if (FCKConfig.CustomConfigurationsPath.length>0){FCKScriptLoader.OnEmpty=LoadPageConfig;FCKScriptLoader.AddScript(FCKConfig.CustomConfigurationsPath);}else{LoadPageConfig();};};function LoadPageConfig(){FCKConfig.LoadPageConfig();LoadStyles();};function LoadStyles(){FCKScriptLoader.OnEmpty=LoadScripts;FCKScriptLoader.AddScript(FCKConfig.SkinPath+'fck_editor.css');FCKScriptLoader.AddScript(FCKConfig.SkinPath+'fck_contextmenu.css');};function LoadScripts(){FCKScriptLoader.OnEmpty=null;if (FCKBrowserInfo.IsIE) FCKScriptLoader.AddScript('js/fckeditorcode_ie_1.js');else FCKScriptLoader.AddScript('js/fckeditorcode_gecko_1.js');};function LoadLanguageFile(){FCKScriptLoader.OnEmpty=LoadEditor;FCKScriptLoader.AddScript('lang/'+FCKLanguageManager.ActiveLanguage.Code+'.js');};function LoadEditor(){FCKScriptLoader.OnEmpty=null;if (FCKLang) window.document.dir=FCKLang.Dir;FCK.StartEditor();}
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/ar.js 1.4.1.src/fckeditor/editor/lang/ar.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/ar.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/ar.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -15,6 +15,7 @@
  * 
  * File Authors:
  * 		Abdul-Aziz Abdul-Kareem Al-Oraij (http://aziz.oraij.com)
+ * 		Abu Faisal (http://www.24at24.com)
  */
 
 var FCKLang =
@@ -82,12 +83,14 @@
 BGColor				: "لون الخلفية",
 Source				: "شفرة المصدر",
 Find				: "بحث",
-Replace				: "استبدال",
+Replace				: "إستبدال",
 SpellCheck			: "تدقيق إملائي",
 UniversalKeyboard	: "لوحة المفاتيح العالمية",
+PageBreakLbl		: "فصل الصفحة",
+PageBreak			: "إدخال صفحة جديدة",
 
 Form			: "نموذج",
-Checkbox		: "خانة اختيار",
+Checkbox		: "خانة إختيار",
 RadioButton		: "زر خيار",
 TextField		: "مربع نص",
 Textarea		: "ناحية نص",
@@ -96,8 +99,13 @@
 SelectionField	: "قائمة منسدلة",
 ImageButton		: "زر صورة",
 
+FitWindow		: "تكبير حجم المحرر",
+
 // Context Menu
 EditLink			: "تحرير رابط",
+CellCM				: "خلية",
+RowCM				: "صف",
+ColumnCM			: "عمود",
 InsertRow			: "إدراج صف",
 DeleteRows			: "حذف صفوف",
 InsertColumn		: "إدراج عمود",
@@ -106,6 +114,7 @@
 DeleteCells			: "حذف خلايا",
 MergeCells			: "دمج خلايا",
 SplitCell			: "تقسيم خلية",
+TableDelete			: "حذف الجدول",
 CellProperties		: "خصائص الخلية",
 TableProperties		: "خصائص الجدول",
 ImageProperties		: "خصائص الصورة",
@@ -113,7 +122,7 @@
 
 AnchorProp			: "خصائص الإشارة المرجعية",
 ButtonProp			: "خصائص زر الضغط",
-CheckboxProp		: "خصائص خانة الاختيار",
+CheckboxProp		: "خصائص خانة الإختيار",
 HiddenFieldProp		: "خصائص الحقل الخفي",
 RadioButtonProp		: "خصائص زر الخيار",
 ImageButtonProp		: "خصائص زر الصورة",
@@ -125,7 +134,7 @@
 FontFormats			: "عادي;منسّق;دوس;العنوان 1;العنوان  2;العنوان  3;العنوان  4;العنوان  5;العنوان  6",
 
 // Alerts and Messages
-ProcessingXHTML		: "انتظر قليلاً ريثما تتم   معالَجة‏ XHTML. لن يستغرق طويلاً...",
+ProcessingXHTML		: "إنتظر قليلاً ريثما تتم   معالَجة‏ XHTML. لن يستغرق طويلاً...",
 Done				: "تم",
 PasteWordConfirm	: "يبدو أن النص المراد لصقه منسوخ من برنامج وورد. هل تود تنظيفه قبل الشروع في عملية اللصق؟",
 NotCompatiblePaste	: "هذه الميزة تحتاج لمتصفح من النوعInternet Explorer إصدار 5.5 فما فوق. هل تود اللصق دون تنظيف الكود؟",
@@ -133,7 +142,9 @@
 UnknownCommand		: "أمر غير معروف \"%1\"",
 NotImplemented		: "لم يتم دعم هذا الأمر",
 UnknownToolbarSet	: "لم أتمكن من العثور على طقم الأدوات \"%1\" ",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "لتأمين متصفحك يجب أن تحدد بعض مميزات المحرر. يتوجب عليك تمكين الخيار \"Run ActiveX controls and plug-ins\". قد تواجة أخطاء وتلاحظ مميزات مفقودة",
+BrowseServerBlocked : "لايمكن فتح مصدر المتصفح. فضلا يجب التأكد بأن جميع موانع النوافذ المنبثقة معطلة",
+DialogBlocked		: "لايمكن فتح نافذة الحوار . فضلا تأكد من أن  مانع النوافذ المنبثة معطل .",
 
 // Dialogs
 DlgBtnOK			: "موافق",
@@ -141,25 +152,25 @@
 DlgBtnClose			: "إغلاق",
 DlgBtnBrowseServer	: "تصفح الخادم",
 DlgAdvancedTag		: "متقدم",
-DlgOpOther			: "&lt;أخرى&gt;",
+DlgOpOther			: "<أخرى>",
 DlgInfoTab			: "معلومات",
 DlgAlertUrl			: "الرجاء كتابة عنوان الإنترنت",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;بدون تحديد&gt;",
-DlgGenId			: "Id",
-DlgGenLangDir		: "اتجاه النص",
+DlgGenNotSet		: "<بدون تحديد>",
+DlgGenId			: "الرقم",
+DlgGenLangDir		: "إتجاه النص",
 DlgGenLangDirLtr	: "اليسار لليمين (LTR)",
 DlgGenLangDirRtl	: "اليمين لليسار (RTL)",
 DlgGenLangCode		: "رمز اللغة",
-DlgGenAccessKey		: "مفاتيح الاختصار",
+DlgGenAccessKey		: "مفاتيح الإختصار",
 DlgGenName			: "الاسم",
 DlgGenTabIndex		: "الترتيب",
 DlgGenLongDescr		: "عنوان الوصف المفصّل",
 DlgGenClass			: "فئات التنسيق",
 DlgGenTitle			: "تلميح الشاشة",
 DlgGenContType		: "نوع التلميح",
-DlgGenLinkCharset	: "ترميز المادة المرطلوبة",
+DlgGenLinkCharset	: "ترميز المادة المطلوبة",
 DlgGenStyle			: "نمط",
 
 // Image Dialog
@@ -170,9 +181,9 @@
 DlgImgUpload		: "رفع",
 DlgImgAlt			: "الوصف",
 DlgImgWidth			: "العرض",
-DlgImgHeight		: "الارتفاع",
+DlgImgHeight		: "الإرتفاع",
 DlgImgLockRatio		: "تناسق الحجم",
-DlgBtnResetSize		: "استعادة الحجم الأصلي",
+DlgBtnResetSize		: "إستعادة الحجم الأصلي",
 DlgImgBorder		: "سمك الحدود",
 DlgImgHSpace		: "تباعد أفقي",
 DlgImgVSpace		: "تباعد عمودي",
@@ -187,7 +198,7 @@
 DlgImgAlignTextTop	: "أعلى النص",
 DlgImgAlignTop		: "أعلى",
 DlgImgPreview		: "معاينة",
-DlgImgAlertUrl		: "فضلاً اكتب الموقع الذي توجد عليه هذه الصورة.",
+DlgImgAlertUrl		: "فضلاً أكتب الموقع الذي توجد عليه هذه الصورة.",
 DlgImgLinkTab		: "الرابط",
 
 // Flash Dialog
@@ -201,7 +212,7 @@
 DlgFlashScaleFit	: "ضبط تام",
 
 // Link Dialog
-DlgLnkWindowTitle	: "ارتباط تشعبي",
+DlgLnkWindowTitle	: "إرتباط تشعبي",
 DlgLnkInfoTab		: "معلومات الرابط",
 DlgLnkTargetTab		: "الهدف",
 
@@ -210,12 +221,12 @@
 DlgLnkTypeAnchor	: "مكان في هذا المستند",
 DlgLnkTypeEMail		: "بريد إلكتروني",
 DlgLnkProto			: "البروتوكول",
-DlgLnkProtoOther	: "&lt;أخرى&gt;",
+DlgLnkProtoOther	: "<أخرى>",
 DlgLnkURL			: "الموقع",
 DlgLnkAnchorSel		: "اختر علامة مرجعية",
 DlgLnkAnchorByName	: "حسب اسم العلامة",
 DlgLnkAnchorById	: "حسب تعريف العنصر",
-DlgLnkNoAnchors		: "&lt;لا يوجد علامات مرجعية في هذا المستند&gt;",
+DlgLnkNoAnchors		: "<لا يوجد علامات مرجعية في هذا المستند>",
 DlgLnkEMail			: "عنوان بريد إلكتروني",
 DlgLnkEMailSubject	: "موضوع الرسالة",
 DlgLnkEMailBody		: "محتوى الرسالة",
@@ -223,8 +234,8 @@
 DlgLnkBtnUpload		: "أرسلها للخادم",
 
 DlgLnkTarget		: "الهدف",
-DlgLnkTargetFrame	: "&lt;إطار&gt;",
-DlgLnkTargetPopup	: "&lt;نافذة منبثقة&gt;",
+DlgLnkTargetFrame	: "<إطار>",
+DlgLnkTargetPopup	: "<نافذة منبثقة>",
 DlgLnkTargetBlank	: "إطار جديد (_blank)",
 DlgLnkTargetParent	: "الإطار الأصل (_parent)",
 DlgLnkTargetSelf	: "نفس الإطار (_self)",
@@ -241,7 +252,7 @@
 DlgLnkPopFullScrn	: "ملئ الشاشة (IE)",
 DlgLnkPopDependent	: "تابع (Netscape)",
 DlgLnkPopWidth		: "العرض",
-DlgLnkPopHeight		: "الارتفاع",
+DlgLnkPopHeight		: "الإرتفاع",
 DlgLnkPopLeft		: "التمركز لليسار",
 DlgLnkPopTop		: "التمركز للأعلى",
 
@@ -253,10 +264,10 @@
 DlgColorTitle		: "اختر لوناً",
 DlgColorBtnClear	: "مسح",
 DlgColorHighlight	: "تحديد",
-DlgColorSelected	: "اختيار",
+DlgColorSelected	: "إختيار",
 
 // Smiley Dialog
-DlgSmileyTitle		: "إدراج ابتسامات ",
+DlgSmileyTitle		: "إدراج إبتسامات ",
 
 // Special Character Dialog
 DlgSpecialCharTitle	: "إدراج رمز",
@@ -274,17 +285,18 @@
 DlgTableWidth		: "العرض",
 DlgTableWidthPx		: "بكسل",
 DlgTableWidthPc		: "بالمئة",
-DlgTableHeight		: "الارتفاع",
+DlgTableHeight		: "الإرتفاع",
 DlgTableCellSpace	: "تباعد الخلايا",
 DlgTableCellPad		: "المسافة البادئة",
 DlgTableCaption		: "الوصف",
+DlgTableSummary		: "الخلاصة",
 
 // Table Cell Dialog
 DlgCellTitle		: "خصائص الخلية",
 DlgCellWidth		: "العرض",
 DlgCellWidthPx		: "بكسل",
 DlgCellWidthPc		: "بالمئة",
-DlgCellHeight		: "الارتفاع",
+DlgCellHeight		: "الإرتفاع",
 DlgCellWordWrap		: "التفاف النص",
 DlgCellWordWrapNotSet	: "<بدون تحديد>",
 DlgCellWordWrapYes	: "نعم",
@@ -300,8 +312,8 @@
 DlgCellVerAlignMiddle	: "وسط",
 DlgCellVerAlignBottom	: "أسفل",
 DlgCellVerAlignBaseline	: "على السطر",
-DlgCellRowSpan		: "امتداد الصفوف",
-DlgCellCollSpan		: "امتداد الأعمدة",
+DlgCellRowSpan		: "إمتداد الصفوف",
+DlgCellCollSpan		: "إمتداد الأعمدة",
 DlgCellBackColor	: "لون الخلفية",
 DlgCellBorderColor	: "لون الحدود",
 DlgCellBtnSelect	: "حدّد...",
@@ -312,28 +324,27 @@
 DlgFindNotFoundMsg	: "لم يتم العثور على النص المحدد.",
 
 // Replace Dialog
-DlgReplaceTitle			: "استبدال",
+DlgReplaceTitle			: "إستبدال",
 DlgReplaceFindLbl		: "البحث عن:",
-DlgReplaceReplaceLbl	: "استبدال بـ:",
+DlgReplaceReplaceLbl	: "إستبدال بـ:",
 DlgReplaceCaseChk		: "مطابقة حالة الأحرف",
-DlgReplaceReplaceBtn	: "استبدال",
-DlgReplaceReplAllBtn	: "استبدال الكل",
+DlgReplaceReplaceBtn	: "إستبدال",
+DlgReplaceReplAllBtn	: "إستبدال الكل",
 DlgReplaceWordChk		: "الكلمة بالكامل فقط",
 
 // Paste Operations / Dialog
-PasteErrorPaste	: "الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع اللصق التلقائي. فضلاً استخدم لوحة المفاتيح لفعل ذلك (Ctrl+V).",
-PasteErrorCut	: "الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع القص التلقائي. فضلاً استخدم لوحة المفاتيح لفعل ذلك (Ctrl+X).",
-PasteErrorCopy	: "الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع النسخ التلقائي. فضلاً استخدم لوحة المفاتيح لفعل ذلك (Ctrl+C).",
+PasteErrorPaste	: "الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع اللصق التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl+V).",
+PasteErrorCut	: "الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع القص التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl+X).",
+PasteErrorCopy	: "الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع النسخ التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl+C).",
 
 PasteAsText		: "لصق كنص بسيط",
 PasteFromWord	: "لصق من وورد",
 
-DlgPasteMsg2	: "الصق داخل الصندوق باستخدام زرّي (<STRONG>Ctrl+V</STRONG>) في لوحة المفاتيح، ثم اضغط زر  <STRONG>موافق</STRONG>.",
+DlgPasteMsg2	: "الصق داخل الصندوق بإستخدام زرّي (<STRONG>Ctrl+V</STRONG>) في لوحة المفاتيح، ثم اضغط زر  <STRONG>موافق</STRONG>.",
 DlgPasteIgnoreFont		: "تجاهل تعريفات أسماء الخطوط",
 DlgPasteRemoveStyles	: "إزالة تعريفات الأنماط",
 DlgPasteCleanBox		: "نظّف محتوى الصندوق",
 
-
 // Color Picker
 ColorAutomatic	: "تلقائي",
 ColorMoreColors	: "ألوان إضافية...",
@@ -354,7 +365,7 @@
 DlgSpellBtnReplace		: "تغيير",
 DlgSpellBtnReplaceAll	: "تغيير الكل",
 DlgSpellBtnUndo			: "تراجع",
-DlgSpellNoSuggestions	: "- لا توجد اقتراحات -",
+DlgSpellNoSuggestions	: "- لا توجد إقتراحات -",
 DlgSpellProgress		: "جاري التدقيق إملائياً",
 DlgSpellNoMispell		: "تم إكمال التدقيق الإملائي: لم يتم العثور على أي أخطاء إملائية",
 DlgSpellNoChanges		: "تم إكمال التدقيق الإملائي: لم يتم تغيير أي كلمة",
@@ -390,7 +401,7 @@
 DlgSelectBtnModify	: "تعديل",
 DlgSelectBtnUp		: "تحريك لأعلى",
 DlgSelectBtnDown	: "تحريك لأسفل",
-DlgSelectBtnSetValue : "اجعلها محددة",
+DlgSelectBtnSetValue : "إجعلها محددة",
 DlgSelectBtnDelete	: "إزالة",
 
 // Textarea Dialog
@@ -416,7 +427,7 @@
 NumberedListProp	: "خصائص التعداد الرقمي",
 DlgLstType			: "النوع",
 DlgLstTypeCircle	: "دائرة",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "قرص",
 DlgLstTypeSquare	: "مربع",
 DlgLstTypeNumbers	: "أرقام (1، 2، 3)َ",
 DlgLstTypeLCase		: "حروف صغيرة (a, b, c)َ",
@@ -431,7 +442,7 @@
 DlgDocMetaTab		: "المعرّفات الرأسية",
 
 DlgDocPageTitle		: "عنوان الصفحة",
-DlgDocLangDir		: "اتجاه اللغة",
+DlgDocLangDir		: "إتجاه اللغة",
 DlgDocLangDirLTR	: "اليسار لليمين (LTR)",
 DlgDocLangDirRTL	: "اليمين لليسار (RTL)",
 DlgDocLangCode		: "رمز اللغة",
@@ -463,12 +474,13 @@
 Templates			: "القوالب",
 DlgTemplatesTitle	: "قوالب المحتوى",
 DlgTemplatesSelMsg	: "اختر القالب الذي تود وضعه في المحرر <br>(سيتم فقدان المحتوى الحالي):",
-DlgTemplatesLoading	: "جاري تحميل قائمة القوالب، الرجاء الانتظار...",
+DlgTemplatesLoading	: "جاري تحميل قائمة القوالب، الرجاء الإنتظار...",
 DlgTemplatesNoTpl	: "(لم يتم تعريف أي قالب)",
 
 // About Dialog
 DlgAboutAboutTab	: "نبذة",
 DlgAboutBrowserInfoTab	: "معلومات متصفحك",
+DlgAboutLicenseTab	: "الترخيص",
 DlgAboutVersion		: "الإصدار",
 DlgAboutLicense		: "مرخّص بحسب قانون  GNU LGPL",
 DlgAboutInfo		: "لمزيد من المعلومات تفضل بزيارة"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/bg.js 1.4.1.src/fckeditor/editor/lang/bg.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/bg.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/bg.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -85,6 +85,8 @@
 Replace				: "Замести",
 SpellCheck			: "Провери правописа",
 UniversalKeyboard	: "Универсална клавиатура",
+PageBreakLbl		: "Нов ред",
+PageBreak			: "Вмъкни нов ред",
 
 Form			: "Формуляр",
 Checkbox		: "Поле за отметка",
@@ -96,8 +98,13 @@
 SelectionField	: "Падащо меню с опции",
 ImageButton		: "Бутон-изображение",
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "Редактирай връзка",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "Добави ред",
 DeleteRows			: "Изтрий редовете",
 InsertColumn		: "Добави колона",
@@ -106,6 +113,7 @@
 DeleteCells			: "Изтрий клетките",
 MergeCells			: "Обедини клетките",
 SplitCell			: "Раздели клетката",
+TableDelete			: "Изтрий таблицата",
 CellProperties		: "Параметри на клетката",
 TableProperties		: "Параметри на таблицата",
 ImageProperties		: "Параметри на изображението",
@@ -133,7 +141,9 @@
 UnknownCommand		: "Непозната команда \"%1\"",
 NotImplemented		: "Командата не е имплементирана",
 UnknownToolbarSet	: "Панелът \"%1\" не съществува",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "ОК",
@@ -141,12 +151,12 @@
 DlgBtnClose			: "Затвори",
 DlgBtnBrowseServer	: "Разгледай сървъра",
 DlgAdvancedTag		: "Подробности...",
-DlgOpOther			: "&lt;Друго&gt;",
+DlgOpOther			: "<Друго>",
 DlgInfoTab			: "Информация",
 DlgAlertUrl			: "Моля, въведете пълния път (URL)",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;не е настроен&gt;",
+DlgGenNotSet		: "<не е настроен>",
 DlgGenId			: "Идентификатор",
 DlgGenLangDir		: "посока на речта",
 DlgGenLangDirLtr	: "От ляво на дясно",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Котва в текущата страница",
 DlgLnkTypeEMail		: "Е-поща",
 DlgLnkProto			: "Протокол",
-DlgLnkProtoOther	: "&lt;друго&gt;",
+DlgLnkProtoOther	: "<друго>",
 DlgLnkURL			: "Пълен път (URL)",
 DlgLnkAnchorSel		: "Изберете котва",
 DlgLnkAnchorByName	: "По име на котвата",
 DlgLnkAnchorById	: "По идентификатор на елемент",
-DlgLnkNoAnchors		: "&lt;Няма котви в текущия документ&gt;",
+DlgLnkNoAnchors		: "<Няма котви в текущия документ>",
 DlgLnkEMail			: "Адрес за е-поща",
 DlgLnkEMailSubject	: "Тема на писмото",
 DlgLnkEMailBody		: "Текст на писмото",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Прати на сървъра",
 
 DlgLnkTarget		: "Цел",
-DlgLnkTargetFrame	: "&lt;рамка&gt;",
-DlgLnkTargetPopup	: "&lt;дъщерен прозорец&gt;",
+DlgLnkTargetFrame	: "<рамка>",
+DlgLnkTargetPopup	: "<дъщерен прозорец>",
 DlgLnkTargetBlank	: "Нов прозорец (_blank)",
 DlgLnkTargetParent	: "Родителски прозорец (_parent)",
 DlgLnkTargetSelf	: "Активния прозорец (_self)",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "Разстояние между клетките",
 DlgTableCellPad		: "Отстъп на съдържанието в клетките",
 DlgTableCaption		: "Заглавие",
+DlgTableSummary		: "Резюме",
 
 // Table Cell Dialog
 DlgCellTitle		: "Параметри на клетката",
@@ -286,16 +297,16 @@
 DlgCellWidthPc		: "проценти",
 DlgCellHeight		: "Височина",
 DlgCellWordWrap		: "пренасяне на нов ред",
-DlgCellWordWrapNotSet	: "&lt;Не е настроено&gt;",
+DlgCellWordWrapNotSet	: "<Не е настроено>",
 DlgCellWordWrapYes	: "Да",
 DlgCellWordWrapNo	: "не",
 DlgCellHorAlign		: "Хоризонтално подравняване",
-DlgCellHorAlignNotSet	: "&lt;Не е настроено&gt;",
+DlgCellHorAlignNotSet	: "<Не е настроено>",
 DlgCellHorAlignLeft	: "Ляво",
 DlgCellHorAlignCenter	: "Център",
 DlgCellHorAlignRight: "Дясно",
 DlgCellVerAlign		: "Вертикално подравняване",
-DlgCellVerAlignNotSet	: "&lt;Не е настроено&gt;",
+DlgCellVerAlignNotSet	: "<Не е настроено>",
 DlgCellVerAlignTop	: "Горе",
 DlgCellVerAlignMiddle	: "По средата",
 DlgCellVerAlignBottom	: "Долу",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Изтрий стиловите дефиниции",
 DlgPasteCleanBox		: "Изчисти",
 
-
 // Color Picker
 ColorAutomatic	: "По подразбиране",
 ColorMoreColors	: "Други цветове...",
@@ -416,7 +426,7 @@
 NumberedListProp	: "Параметри на нумерирания списък",
 DlgLstType			: "Тип",
 DlgLstTypeCircle	: "Окръжност",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Кръг",
 DlgLstTypeSquare	: "Квадрат",
 DlgLstTypeNumbers	: "Числа (1, 2, 3)",
 DlgLstTypeLCase		: "Малки букви (a, b, c)",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "За",
 DlgAboutBrowserInfoTab	: "Информация за браузъра",
+DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "версия",
 DlgAboutLicense		: "Лиценз по условията на GNU Lesser General Public License",
 DlgAboutInfo		: "За повече информация посетете"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/bn.js 1.4.1.src/fckeditor/editor/lang/bn.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/bn.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/lang/bn.js	2006-06-17 16:25:29.000000000 -0500
@@ -0,0 +1,486 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: bn.js
+ * 	Bengali/Bangla language file.
+ * 
+ * File Authors:
+ * 		Richard Walledge (darkdoctrine@hotmail.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "টূলবার সিমটাযেं",
+ToolbarExpand		: "টূলবার কা ঵িস্তার করেं",
+
+// Toolbar Items and Context Menu
+Save				: "সে঵",
+NewPage				: "নযা পেজ",
+Preview				: "প্রী঵্যূ",
+Cut					: "কট",
+Copy				: "ক৉পী",
+Paste				: "পেস্ট",
+PasteText			: "পেস্ট (সাদা ট৅ক্স্ট)",
+PasteWord			: "পেস্ট (঵র্ড সে)",
+Print				: "প্রিন্ট",
+SelectAll			: "সব স৅ল৅ক্ট করেं",
+RemoveFormat		: "৞৉র্মৈট হটাযেं",
+InsertLinkLbl		: "লিंক",
+InsertLink			: "লিंক ইন্সর্ট/সंপাদন",
+RemoveLink			: "লিंক হটাযেं",
+Anchor				: "ঐंকর ইন্সর্ট/সंপাদন",
+InsertImageLbl		: "তস্঵ীর",
+InsertImage			: "তস্঵ীর ইন্সর্ট/সंপাদন",
+InsertFlashLbl		: "৞্লৈশ",
+InsertFlash			: "৞্লৈশ ইন্সর্ট/সंপাদন",
+InsertTableLbl		: "টেবল",
+InsertTable			: "টেবল ইন্সর্ট/সंপাদন",
+InsertLineLbl		: "রেখা",
+InsertLine			: "হ৉রি৛৉ন্টল রেখা ইন্সর্ট করেं",
+InsertSpecialCharLbl: "঵িশেষ কর৅ক্টর",
+InsertSpecialChar	: "঵িশেষ কর৅ক্টর ইন্সর্ট করেं",
+InsertSmileyLbl		: "স্মাইলী",
+InsertSmiley		: "স্মাইলী ইন্সর্ট করেं",
+About				: "FCKeditor কে বারে মেं",
+Bold				: "বোল্ড",
+Italic				: "ইটৈলিক",
+Underline			: "রেখাंকণ",
+StrikeThrough		: "স্ট্রাইক থ্রূ",
+Subscript			: "অধোলেখ",
+Superscript			: "অভিলেখ",
+LeftJustify			: "বাযীं তরফ",
+CenterJustify		: "বীচ মেं",
+RightJustify		: "দাযীं তরফ",
+BlockJustify		: "ব্ল৉ক জস্টী৞াঈ",
+DecreaseIndent		: "ইন্ড৅ন্ট কম করেं",
+IncreaseIndent		: "ইন্ড৅ন্ট বঢ়াযেं",
+Undo				: "অন্ডূ",
+Redo				: "রীডূ",
+NumberedListLbl		: "অंকীয সূচী",
+NumberedList		: "অंকীয সূচী ইন্সর্ট/সंপাদন",
+BulletedListLbl		: "বুল৅ট সূচী",
+BulletedList		: "বুল৅ট সূচী ইন্সর্ট/সंপাদন",
+ShowTableBorders	: "টেবল ব৉র্ডরযেं দিখাযেं",
+ShowDetails			: "জ্যাদা দিখাযেं",
+Style				: "স্টাইল",
+FontFormat			: "৞৉র্মৈট",
+Font				: "৞৉ন্ট",
+FontSize			: "সাই৛",
+TextColor			: "টেক্স্ট রंগ",
+BGColor				: "বৈক্গ্রাউন্ড রंগ",
+Source				: "সোর্স",
+Find				: "খোজেं",
+Replace				: "রীপ্লেস",
+SpellCheck			: "঵র্তনী (স্পেলিंগ) জাँচ",
+UniversalKeyboard	: "যূনী঵র্সল কীবোর্ড",
+PageBreakLbl		: "পেজ ব্রেক",
+PageBreak			: "পেজ ব্রেক ইন্সর্ট্ করেं",
+
+Form			: "৞৉র্ম",
+Checkbox		: "চ৅ক ব৉ক্স",
+RadioButton		: "রেডিও বটন",
+TextField		: "টেক্স্ট ৞ীল্ড",
+Textarea		: "টেক্স্ট এরিযা",
+HiddenField		: "গুপ্ত ৞ীল্ড",
+Button			: "বটন",
+SelectionField	: "চুনা঵ ৞ীল্ড",
+ImageButton		: "তস্঵ীর বটন",
+
+FitWindow		: "মকসিমিসে সি",
+
+// Context Menu
+EditLink			: "লিंক সंপাদন",
+CellCM				: "স৅ল",
+RowCM				: "পंক্তি",
+ColumnCM			: "ক৉লম",
+InsertRow			: "পंক্তি ইন্সর্ট করেं",
+DeleteRows			: "পंক্তিযাँ ডিলীট করেं",
+InsertColumn		: "ক৉লম ইন্সর্ট করেं",
+DeleteColumns		: "ক৉লম ডিলীট করেं",
+InsertCell			: "স৅ল ইন্সর্ট করেं",
+DeleteCells			: "স৅ল ডিলীট করেं",
+MergeCells			: "স৅ল মিলাযেं",
+SplitCell			: "স৅ল অলগ করেं",
+TableDelete			: "টেবল ডিলীট করেं",
+CellProperties		: "স৅ল প্র৉পর্টী৛",
+TableProperties		: "টেবল প্র৉পর্টী৛",
+ImageProperties		: "তস্঵ীর প্র৉পর্টী৛",
+FlashProperties		: "৞্লৈশ প্র৉পর্টী৛",
+
+AnchorProp			: "ঐंকর প্র৉পর্টী৛",
+ButtonProp			: "বটন প্র৉পর্টী৛",
+CheckboxProp		: "চ৅ক ব৉ক্স প্র৉পর্টী৛",
+HiddenFieldProp		: "গুপ্ত ৞ীল্ড প্র৉পর্টী৛",
+RadioButtonProp		: "রেডিও বটন প্র৉পর্টী৛",
+ImageButtonProp		: "তস্঵ীর বটন প্র৉পর্টী৛",
+TextFieldProp		: "টেক্স্ট ৞ীল্ড প্র৉পর্টী৛",
+SelectionFieldProp	: "চুনা঵ ৞ীল্ড প্র৉পর্টী৛",
+TextareaProp		: "টেক্স্ত এরিযা প্র৉পর্টী৛",
+FormProp			: "৞৉র্ম প্র৉পর্টী৛",
+
+FontFormats			: "সাধারণ;৞৉র্মৈট৅ড;পতা;শীর্ষক 1;শীর্ষক 2;শীর্ষক 3;শীর্ষক4;শীর্ষক 5;শীর্ষক 6;শীর্ষক (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML প্রোস৅স হো রহা হৈ৤ ৛রা  হরেं...",
+Done				: "পূরা হুআ",
+PasteWordConfirm	: "আপ জো টেক্স্ট পেস্ট করনা চাহতে হৈं, ঵হ ঵র্ড সে ক৉পীকিযা হুআ লগ রহা হৈ৤ ক্যা পেস্ট করনে সে পহলে আপ ইসে সা৞ করনা চাহেंগে?",
+NotCompatiblePaste	: "যহ কমাंড ইন্টরন৅ট এক্স্প্লোরর(Internet Explorer)5.5 যা উসকে বাদ কে ঵র্৛ন কে লিএ হী উপলব্ধ হৈ৤ ক্যা আপ বিনা সা৞ কিএপেস্ট করনা চাহেंগে?",
+UnknownToolbarItem	: "অনজান টূলবার আইটম \"%1\"",
+UnknownCommand		: "অনজান কমান্ড \"%1\"",
+NotImplemented		: "কমান্ড ইম্প্লীম৅ন্ট নহীं কিযা গযা হৈ",
+UnknownToolbarSet	: "টূলবার স৅ট \"%1\" উপলব্ধ নহীं হৈ",
+NoActiveX			: "আপকে ব্রাউ৛র্ কী সুরক্শা সেটিंগ্স্ এডিটর কী কুছ্ ৞ীচরোं কোসীমিত কর্ সকতী হৈं৤ ক্রিপযা \"Run ActiveX controls and plug-ins\"঵িকল্প কো এনেবল করেं. আপকো এরর্স্ ঔর গাযব ৞ীচর্স্ কা অনুভ঵ হো সকতাহৈ৤",
+BrowseServerBlocked : "রিসোর্সে৛ ব্রাউ৛র্ নহীं খোলা জা সকা৤ ক্রিপযা সভীপ৉প্-অপ্ ব্ল৉কর্স্ কো ডিসেবল করেं৤",
+DialogBlocked		: "ডাযলগ ঵িন্ডো নহীं খোলা জা সকা৤ ক্রিপযা সভী প৉প্-অপ্ব্ল৉কর্স্ কো ডিসেবল করেं৤",
+
+// Dialogs
+DlgBtnOK			: " ীক হৈ",
+DlgBtnCancel		: "রদ্দ করেं",
+DlgBtnClose			: "বন্দ করেं",
+DlgBtnBrowseServer	: "সর্঵র ব্রাউ৛ করেं",
+DlgAdvancedTag		: "঍ড্঵ান্স্ড",
+DlgOpOther			: "<অন্য>",
+DlgInfoTab			: "সূচনা",
+DlgAlertUrl			: "URL ইন্সর্ট করেं",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<স৅ট নহীं>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "ভাষা লিখনে কী দিশা",
+DlgGenLangDirLtr	: "বাযেं সে দাযেं (LTR)",
+DlgGenLangDirRtl	: "দাযেं সে বাযেं (RTL)",
+DlgGenLangCode		: "ভাষা কোড",
+DlgGenAccessKey		: "঍ক্স৅স কী",
+DlgGenName			: "নাম",
+DlgGenTabIndex		: "টৈব ইন্ড৅ক্স",
+DlgGenLongDescr		: "অধিক ঵ি঵রণ কে লিএ URL",
+DlgGenClass			: "স্টাইল-শীট ক্লাস",
+DlgGenTitle			: "পরামর্শ শীর্শক",
+DlgGenContType		: "পরামর্শ কন্ট৅ন্ট প্রকার",
+DlgGenLinkCharset	: "লিंক রিসোর্স কর৅ক্টর স৅ট",
+DlgGenStyle			: "স্টাইল",
+
+// Image Dialog
+DlgImgTitle			: "তস্঵ীর প্র৉পর্টী৛",
+DlgImgInfoTab		: "তস্঵ীর কী জানকারী",
+DlgImgBtnUpload		: "ইসে সর্঵র কো ভেজেं",
+DlgImgURL			: "URL",
+DlgImgUpload		: "অপলোড",
+DlgImgAlt			: "঵ৈকল্পিক টেক্স্ট",
+DlgImgWidth			: "চৌড়াঈ",
+DlgImgHeight		: "ঊँচাঈ",
+DlgImgLockRatio		: "ল৉ক অনুপাত",
+DlgBtnResetSize		: "রীস৅ট সাই৛",
+DlgImgBorder		: "ব৉র্ডর",
+DlgImgHSpace		: "হ৉রি৛৉ন্টল স্পেস",
+DlgImgVSpace		: "঵র্টিকল স্পেস",
+DlgImgAlign			: "঍লাইন",
+DlgImgAlignLeft		: "দাযেं",
+DlgImgAlignAbsBottom: "Abs নীচে",
+DlgImgAlignAbsMiddle: "Abs ঊপর",
+DlgImgAlignBaseline	: "মূল রেখা",
+DlgImgAlignBottom	: "নীচে",
+DlgImgAlignMiddle	: "মধ্য",
+DlgImgAlignRight	: "দাযেं",
+DlgImgAlignTextTop	: "টেক্স্ট ঊপর",
+DlgImgAlignTop		: "ঊপর",
+DlgImgPreview		: "প্রী঵্যূ",
+DlgImgAlertUrl		: "তস্঵ীর কা URL টাইপ করেं ",
+DlgImgLinkTab		: "লিंক",
+
+// Flash Dialog
+DlgFlashTitle		: "৞্লৈশ প্র৉পর্টী৛",
+DlgFlashChkPlay		: "঑টো প্লে",
+DlgFlashChkLoop		: "লূপ",
+DlgFlashChkMenu		: "৞্লৈশ ম৅ন্যূ কা প্রযোগ করেं",
+DlgFlashScale		: "স্কেল",
+DlgFlashScaleAll	: "সভী দিখাযেं",
+DlgFlashScaleNoBorder	: "কোঈ ব৉র্ডর নহীं",
+DlgFlashScaleFit	: "বিল্কুল ৞িট",
+
+// Link Dialog
+DlgLnkWindowTitle	: "লিंক",
+DlgLnkInfoTab		: "লিंক ",
+DlgLnkTargetTab		: "টার্গেট",
+
+DlgLnkType			: "লিंক প্রকার",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "ইস পেজ কা ঐंকর",
+DlgLnkTypeEMail		: "ঈ-মেল",
+DlgLnkProto			: "প্রোটোক৉ল",
+DlgLnkProtoOther	: "<অন্য>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "ঐंকর চুনেं",
+DlgLnkAnchorByName	: "ঐंকর নাম সে",
+DlgLnkAnchorById	: "঍লীম৅ন্ট Id সে",
+DlgLnkNoAnchors		: "<ড৉ক্যূম৅ন্ট মেं ঐंকর্স কী সंখ্যা>",
+DlgLnkEMail			: "ঈ-মেল পতা",
+DlgLnkEMailSubject	: "সंদেশ ঵িষয",
+DlgLnkEMailBody		: "সंদেশ",
+DlgLnkUpload		: "অপলোড",
+DlgLnkBtnUpload		: "ইসে সর্঵র কো ভেজেं",
+
+DlgLnkTarget		: "টার্গেট",
+DlgLnkTargetFrame	: "<৞্রেম>",
+DlgLnkTargetPopup	: "<প৉প-অপ ঵িন্ডো>",
+DlgLnkTargetBlank	: "নযা ঵িন্ডো (_blank)",
+DlgLnkTargetParent	: "মূল ঵িন্ডো (_parent)",
+DlgLnkTargetSelf	: "ইসী ঵িন্ডো (_self)",
+DlgLnkTargetTop		: "শীর্ষ ঵িন্ডো (_top)",
+DlgLnkTargetFrameName	: "টার্গেট ৞্রেম কা নাম",
+DlgLnkPopWinName	: "প৉প-অপ ঵িন্ডো কা নাম",
+DlgLnkPopWinFeat	: "প৉প-অপ ঵িন্ডো ৞ীচর্স",
+DlgLnkPopResize		: "সাই৛ বদলা জা সকতা হৈ",
+DlgLnkPopLocation	: "লোকেশন বার",
+DlgLnkPopMenu		: "ম৅ন্যূ বার",
+DlgLnkPopScroll		: "স্ক্র৉ল বার",
+DlgLnkPopStatus		: "স্টেটস বার",
+DlgLnkPopToolbar	: "টূল বার",
+DlgLnkPopFullScrn	: "৞ুল স্ক্রীন (IE)",
+DlgLnkPopDependent	: "ডিপেন্ড৅ন্ট (Netscape)",
+DlgLnkPopWidth		: "চৌড়াঈ",
+DlgLnkPopHeight		: "ঊँচাঈ",
+DlgLnkPopLeft		: "বাযীं তরফ",
+DlgLnkPopTop		: "দাযীं তরফ",
+
+DlnLnkMsgNoUrl		: "লিंক URL টাইপ করেं",
+DlnLnkMsgNoEMail	: "ঈ-মেল পতা টাইপ করেं",
+DlnLnkMsgNoAnchor	: "ঐंকর চুনেं",
+
+// Color Dialog
+DlgColorTitle		: "রंগ চুনেं",
+DlgColorBtnClear	: "সা৞ করেं",
+DlgColorHighlight	: "হাইলাইট",
+DlgColorSelected	: "স৅ল৅ক্ট৅ড",
+
+// Smiley Dialog
+DlgSmileyTitle		: "স্মাইলী ইন্সর্ট করেं",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "঵িশেষ কর৅ক্টর চুনেं",
+
+// Table Dialog
+DlgTableTitle		: "টেবল প্র৉পর্টী৛",
+DlgTableRows		: "পंক্তিযাँ",
+DlgTableColumns		: "ক৉লম",
+DlgTableBorder		: "ব৉র্ডর সাই৛",
+DlgTableAlign		: "঍লাইন্ম৅ন্ট",
+DlgTableAlignNotSet	: "<স৅ট নহীं>",
+DlgTableAlignLeft	: "দাযেं",
+DlgTableAlignCenter	: "বীচ মেं",
+DlgTableAlignRight	: "বাযেं",
+DlgTableWidth		: "চৌড়াঈ",
+DlgTableWidthPx		: "পিক্স৅ল",
+DlgTableWidthPc		: "প্রতিশত",
+DlgTableHeight		: "ঊँচাঈ",
+DlgTableCellSpace	: "স৅ল অंতর",
+DlgTableCellPad		: "স৅ল পৈডিंগ",
+DlgTableCaption		: "শীর্ষক",
+DlgTableSummary		: "সারাंশ",
+
+// Table Cell Dialog
+DlgCellTitle		: "স৅ল প্র৉পর্টী৛",
+DlgCellWidth		: "চৌড়াঈ",
+DlgCellWidthPx		: "পিক্স৅ল",
+DlgCellWidthPc		: "প্রতিশত",
+DlgCellHeight		: "ঊँচাঈ",
+DlgCellWordWrap		: "঵র্ড রৈপ",
+DlgCellWordWrapNotSet	: "<স৅ট নহীं>",
+DlgCellWordWrapYes	: "হাँ",
+DlgCellWordWrapNo	: "নহীं",
+DlgCellHorAlign		: "হ৉রি৛৉ন্টল ঍লাইন্ম৅ন্ট",
+DlgCellHorAlignNotSet	: "<স৅ট নহীं>",
+DlgCellHorAlignLeft	: "দাযেं",
+DlgCellHorAlignCenter	: "বীচ মেं",
+DlgCellHorAlignRight: "বাযেं",
+DlgCellVerAlign		: "঵র্টিকল ঍লাইন্ম৅ন্ট",
+DlgCellVerAlignNotSet	: "<স৅ট নহীं>",
+DlgCellVerAlignTop	: "ঊপর",
+DlgCellVerAlignMiddle	: "মধ্য",
+DlgCellVerAlignBottom	: "নীচে",
+DlgCellVerAlignBaseline	: "মূলরেখা",
+DlgCellRowSpan		: "পंক্তি স্পৈন",
+DlgCellCollSpan		: "ক৉লম স্পৈন",
+DlgCellBackColor	: "বৈক্গ্রাউন্ড রंগ",
+DlgCellBorderColor	: "ব৉র্ডর কা রंগ",
+DlgCellBtnSelect	: "চুনেं...",
+
+// Find Dialog
+DlgFindTitle		: "খোজেं",
+DlgFindFindBtn		: "খোজেं",
+DlgFindNotFoundMsg	: "আপকে দ্঵ারা দিযা গযা টেক্স্ট নহীं মিলা",
+
+// Replace Dialog
+DlgReplaceTitle			: "রিপ্লেস",
+DlgReplaceFindLbl		: "যহ খোজেं:",
+DlgReplaceReplaceLbl	: "ইসসে রিপ্লেস করেं:",
+DlgReplaceCaseChk		: "কেস মিলাযেं",
+DlgReplaceReplaceBtn	: "রিপ্লেস",
+DlgReplaceReplAllBtn	: "সভী রিপ্লেস করেं",
+DlgReplaceWordChk		: "পূরা শব্দ মিলাযেं",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "আপকে ব্রা‌উ৛র কী সুরক্ষা স৅টিন্গ্স নে পেস্ট করনে কী অনুমতি নহীं প্রদান কী হৈ৤ (Ctrl+V) কা প্রযোগ করেं৤",
+PasteErrorCut	: "আপকে ব্রাউ৛র কী সুরক্ষা স৅টিন্গ্স নে কট করনে কী অনুমতি নহীं প্রদান কী হৈ৤ (Ctrl+X) কা প্রযোগ করেं৤",
+PasteErrorCopy	: "আপকে ব্রাআউ৛র কী সুরক্ষা স৅টিন্গ্স নে ক৉পী করনে কী অনুমতি নহীं প্রদান কী হৈ৤ (Ctrl+C) কা প্রযোগ করেं৤",
+
+PasteAsText		: "পেস্ট (সাদা ট৅ক্স্ট)",
+PasteFromWord	: "পেস্ট (঵র্ড সে)",
+
+DlgPasteMsg2	: "Ctrl+V কা প্রযোগ করকে পেস্ট করেं ঔর  ীক হৈ করেं.",
+DlgPasteIgnoreFont		: "৞৉ন্ট পরিভাষা নিকালেं",
+DlgPasteRemoveStyles	: "স্টাইল পরিভাষা নিকালেं",
+DlgPasteCleanBox		: "ব৉ক্স সা৞ করেं",
+
+// Color Picker
+ColorAutomatic	: "঑টোমৈটিক",
+ColorMoreColors	: "ঔর রंগ...",
+
+// Document Properties
+DocProps		: "ড৉ক্যূম৅ন্ট প্র৉পর্টী৛",
+
+// Anchor Dialog
+DlgAnchorTitle		: "ঐंকর প্র৉পর্টী৛",
+DlgAnchorName		: "ঐंকর কা নাম",
+DlgAnchorErrorName	: "ঐंকর কা নাম টাইপ করেं",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "শব্দকোশ মেं নহীं",
+DlgSpellChangeTo		: "ইসমেं বদলেं",
+DlgSpellBtnIgnore		: "ইগ্নোর",
+DlgSpellBtnIgnoreAll	: "সভী ইগ্নোর করেं",
+DlgSpellBtnReplace		: "রিপ্লেস",
+DlgSpellBtnReplaceAll	: "সভী রিপ্লেস করেं",
+DlgSpellBtnUndo			: "অন্ডূ",
+DlgSpellNoSuggestions	: "- কোঈ সুঝা঵ নহীं -",
+DlgSpellProgress		: "঵র্তনী কী জাँচ (স্প৅ল-চ৅ক) জারী হৈ...",
+DlgSpellNoMispell		: "঵র্তনী কী জাँচ : কোঈ গলত ঵র্তনী (স্প৅লিंগ) নহীं পাঈ গঈ",
+DlgSpellNoChanges		: "঵র্তনী কী জাँচ :কোঈ শব্দ নহীं বদলা গযা",
+DlgSpellOneChange		: "঵র্তনী কী জাँচ : এক শব্দ বদলা গযা",
+DlgSpellManyChanges		: "঵র্তনী কী জাँচ : %1 শব্দ বদলে গযে",
+
+IeSpellDownload			: "স্প৅ল-চ৅কর ইন্স্টাল নহীं কিযা গযা হৈ৤ ক্যা আপ ইসে ডা‌উনলোড করনা চাহেंগে?",
+
+// Button Dialog
+DlgButtonText	: "টেক্স্ট (঵ৈল্যূ)",
+DlgButtonType	: "প্রকার",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "নাম",
+DlgCheckboxValue	: "঵ৈল্যূ",
+DlgCheckboxSelected	: "স৅ল৅ক্ট৅ড",
+
+// Form Dialog
+DlgFormName		: "নাম",
+DlgFormAction	: "঍ক্শন",
+DlgFormMethod	: "তরীকা",
+
+// Select Field Dialog
+DlgSelectName		: "নাম",
+DlgSelectValue		: "঵ৈল্যূ",
+DlgSelectSize		: "সাই৛",
+DlgSelectLines		: "পंক্তিযাँ",
+DlgSelectChkMulti	: "এক সে জ্যাদা ঵িকল্প চুননে দেं",
+DlgSelectOpAvail	: "উপলব্ধ ঵িকল্প",
+DlgSelectOpText		: "টেক্স্ট",
+DlgSelectOpValue	: "঵ৈল্যূ",
+DlgSelectBtnAdd		: "জোড়েं",
+DlgSelectBtnModify	: "বদলেं",
+DlgSelectBtnUp		: "ঊপর",
+DlgSelectBtnDown	: "নীচে",
+DlgSelectBtnSetValue : "চুনী গঈ ঵ৈল্যূ স৅ট করেं",
+DlgSelectBtnDelete	: "ডিলীট",
+
+// Textarea Dialog
+DlgTextareaName	: "নাম",
+DlgTextareaCols	: "ক৉লম",
+DlgTextareaRows	: "পंক্তিযাं",
+
+// Text Field Dialog
+DlgTextName			: "নাম",
+DlgTextValue		: "঵ৈল্যূ",
+DlgTextCharWidth	: "কর৅ক্টর কী চৌঢ়াঈ",
+DlgTextMaxChars		: "অধিকতম কর৅ক্টর",
+DlgTextType			: "টাইপ",
+DlgTextTypeText		: "টেক্স্ট",
+DlgTextTypePass		: "পাস্঵র্ড",
+
+// Hidden Field Dialog
+DlgHiddenName	: "নাম",
+DlgHiddenValue	: "঵ৈল্যূ",
+
+// Bulleted List Dialog
+BulletedListProp	: "বুল৅ট সূচী প্র৉পর্টী৛",
+NumberedListProp	: "অंকীয সূচী প্র৉পর্টী৛",
+DlgLstType			: "প্রকার",
+DlgLstTypeCircle	: "গোল",
+DlgLstTypeDisc		: "ডিস্ক",
+DlgLstTypeSquare	: "চৌক৊ণ",
+DlgLstTypeNumbers	: "অंক (1, 2, 3)",
+DlgLstTypeLCase		: "ছোটে অক্ষর (a, b, c)",
+DlgLstTypeUCase		: "বড়ে অক্ষর (A, B, C)",
+DlgLstTypeSRoman	: "ছোটে রোমন অंক (i, ii, iii)",
+DlgLstTypeLRoman	: "বড়ে রোমন অंক (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "আম",
+DlgDocBackTab		: "বৈক্গ্রাউন্ড",
+DlgDocColorsTab		: "রंগ ঔর মার্জিন",
+DlgDocMetaTab		: "ম৅টাডেটা",
+
+DlgDocPageTitle		: "পেজ শীর্ষক",
+DlgDocLangDir		: "ভাষা লিখনে কী দিশা",
+DlgDocLangDirLTR	: "বাযেं সে দাযেं (LTR)",
+DlgDocLangDirRTL	: "দাযেं সে বাযেं (RTL)",
+DlgDocLangCode		: "ভাষা কোড",
+DlgDocCharSet		: "করেক্টর স৅ট ঍ন্কোডিंগ",
+DlgDocCharSetOther	: "অন্য করেক্টর স৅ট ঍ন্কোডিंগ",
+
+DlgDocDocType		: "ড৉ক্যূম৅ন্ট প্রকার শীর্ষক",
+DlgDocDocTypeOther	: "অন্য ড৉ক্যূম৅ন্ট প্রকার শীর্ষক",
+DlgDocIncXHTML		: "XHTML সূচনা সম্মিলিত করেं",
+DlgDocBgColor		: "বৈক্গ্রাউন্ড রंগ",
+DlgDocBgImage		: "বৈক্গ্রাউন্ড তস্঵ীর URL",
+DlgDocBgNoScroll	: "স্ক্র৉ল ন করনে ঵ালা বৈক্গ্রাউন্ড",
+DlgDocCText			: "টেক্স্ট",
+DlgDocCLink			: "লিंক",
+DlgDocCVisited		: "঵ি৛িট কিযা গযা লিंক",
+DlgDocCActive		: "সক্রিয লিंক",
+DlgDocMargins		: "পেজ মার্জিন",
+DlgDocMaTop			: "ঊপর",
+DlgDocMaLeft		: "বাযেं",
+DlgDocMaRight		: "দাযেं",
+DlgDocMaBottom		: "নীচে",
+DlgDocMeIndex		: "ড৉ক্যুম৅ন্ট ইন্ডেক্স সंকেতশব্দ (অল্প঵িরাম সে অলগ করেं)",
+DlgDocMeDescr		: "ড৉ক্যূম৅ন্ট কর৅ক্টরন",
+DlgDocMeAuthor		: "লেখক",
+DlgDocMeCopy		: "ক৉পীরাইট",
+DlgDocPreview		: "প্রী঵্যূ",
+
+// Templates Dialog
+Templates			: "ট৅ম্প্লেট",
+DlgTemplatesTitle	: "কন্টেন্ট ট৅ম্প্লেট",
+DlgTemplatesSelMsg	: "঍ডিটর মেं ওপন করনে হেতু ট৅ম্প্লেট চুনেं(঵র্তমান কন্ট৅ন্ট সে঵ নহীं হোंগে):",
+DlgTemplatesLoading	: "ট৅ম্প্লেট সূচী লোড কী জা রহী হৈ৤ ৛রা  হরেं...",
+DlgTemplatesNoTpl	: "(কোঈ ট৅ম্প্লেট ডি৞াইন নহীं কিযা গযা হৈ)",
+
+// About Dialog
+DlgAboutAboutTab	: "FCKEditor কে বারে মেं",
+DlgAboutBrowserInfoTab	: "ব্রাউ৛র কে বারে মেं",
+DlgAboutLicenseTab	: "লিসেণস",
+DlgAboutVersion		: "঵র্৛ন",
+DlgAboutLicense		: "লাইসেंস :GNU LGPL",
+DlgAboutInfo		: "অধিক জানকারী কে লিযে যহাँ জাযেं:"
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/bs.js 1.4.1.src/fckeditor/editor/lang/bs.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/bs.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/bs.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -83,8 +83,10 @@
 Source				: "HTML kôd",
 Find				: "Naði",
 Replace				: "Zamjeni",
-SpellCheck			: "Check Spell",	//MISSING
+SpellCheck			: "Check Spelling",	//MISSING
 UniversalKeyboard	: "Universal Keyboard",	//MISSING
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
 
 Form			: "Form",	//MISSING
 Checkbox		: "Checkbox",	//MISSING
@@ -96,8 +98,13 @@
 SelectionField	: "Selection Field",	//MISSING
 ImageButton		: "Image Button",	//MISSING
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "Izmjeni link",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "Ubaci red",
 DeleteRows			: "Briši redove",
 InsertColumn		: "Ubaci kolonu",
@@ -106,6 +113,7 @@
 DeleteCells			: "Briši æelije",
 MergeCells			: "Spoji æelije",
 SplitCell			: "Razdvoji æeliju",
+TableDelete			: "Delete Table",	//MISSING
 CellProperties		: "Svojstva æelije",
 TableProperties		: "Svojstva tabele",
 ImageProperties		: "Svojstva slike",
@@ -133,7 +141,9 @@
 UnknownCommand		: "Nepoznata komanda \"%1\"",
 NotImplemented		: "Komanda nije implementirana",
 UnknownToolbarSet	: "Traka sa alatima \"%1\" ne postoji",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -141,12 +151,12 @@
 DlgBtnClose			: "Zatvori",
 DlgBtnBrowseServer	: "Browse Server",	//MISSING
 DlgAdvancedTag		: "Naprednije",
-DlgOpOther			: "&lt;Other&gt;",	//MISSING
+DlgOpOther			: "<Other>",	//MISSING
 DlgInfoTab			: "Info",	//MISSING
 DlgAlertUrl			: "Please insert the URL",	//MISSING
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;nije podešeno&gt;",
+DlgGenNotSet		: "<nije podešeno>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Smjer pisanja",
 DlgGenLangDirLtr	: "S lijeva na desno (LTR)",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Sidro na ovoj stranici",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Protokol",
-DlgLnkProtoOther	: "&lt;drugi&gt;",
+DlgLnkProtoOther	: "<drugi>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Izaberi sidro",
 DlgLnkAnchorByName	: "Po nazivu sidra",
 DlgLnkAnchorById	: "Po Id-u elementa",
-DlgLnkNoAnchors		: "&lt;Nema dostupnih sidra na stranici&gt;",
+DlgLnkNoAnchors		: "<Nema dostupnih sidra na stranici>",
 DlgLnkEMail			: "E-Mail Adresa",
 DlgLnkEMailSubject	: "Subjekt poruke",
 DlgLnkEMailBody		: "Poruka",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Šalji na server",
 
 DlgLnkTarget		: "Prozor",
-DlgLnkTargetFrame	: "&lt;frejm&gt;",
-DlgLnkTargetPopup	: "&lt;popup prozor&gt;",
+DlgLnkTargetFrame	: "<frejm>",
+DlgLnkTargetPopup	: "<popup prozor>",
 DlgLnkTargetBlank	: "Novi prozor (_blank)",
 DlgLnkTargetParent	: "Glavni prozor (_parent)",
 DlgLnkTargetSelf	: "Isti prozor (_self)",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "Razmak æelija",
 DlgTableCellPad		: "Uvod æelija",
 DlgTableCaption		: "Naslov",
+DlgTableSummary		: "Summary",	//MISSING
 
 // Table Cell Dialog
 DlgCellTitle		: "Svojstva æelije",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
 DlgPasteCleanBox		: "Clean Up Box",	//MISSING
 
-
 // Color Picker
 ColorAutomatic	: "Automatska",
 ColorMoreColors	: "Više boja...",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "About",	//MISSING
 DlgAboutBrowserInfoTab	: "Browser Info",	//MISSING
+DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "verzija",
 DlgAboutLicense		: "Licencirano pod uslovima GNU Lesser General Public License",
 DlgAboutInfo		: "Za više informacija posjetite"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/ca.js 1.4.1.src/fckeditor/editor/lang/ca.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/ca.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/ca.js	2006-09-03 13:05:04.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -15,6 +15,7 @@
  * 
  * File Authors:
  * 		Jordi Cerdan (nan@myp.ad)
+ * 		Marc Folch (mcus21@gmail.com)
  */
 
 var FCKLang =
@@ -22,123 +23,133 @@
 // Language direction : "ltr" (left to right) or "rtl" (right to left).
 Dir					: "ltr",
 
-ToolbarCollapse		: "Col·lapsar barra",
-ToolbarExpand		: "Expandir barra",
+ToolbarCollapse		: "Col·lapsa la barra",
+ToolbarExpand		: "Amplia la barra",
 
 // Toolbar Items and Context Menu
-Save				: "Guardar",
+Save				: "Desa",
 NewPage				: "Nova Pàgina",
 Preview				: "Vista Prèvia",
-Cut					: "Tallar",
-Copy				: "Copiar",
-Paste				: "Enganxar",
-PasteText			: "Enganxar com text planer",
-PasteWord			: "Enganxar des de Word",
-Print				: "Imprimir",
-SelectAll			: "Seleccionar tot",
-RemoveFormat		: "Eliminar Format",
+Cut					: "Retalla",
+Copy				: "Copia",
+Paste				: "Enganxa",
+PasteText			: "Enganxa com a text no formatat",
+PasteWord			: "Enganxa des del Word",
+Print				: "Imprimeix",
+SelectAll			: "Selecciona-ho tot",
+RemoveFormat		: "Elimina Format",
 InsertLinkLbl		: "Enllaç",
-InsertLink			: "Afegir/Editar Enllaç",
-RemoveLink			: "Eliminar Enllaç",
-Anchor				: "Afegir/Editar Àncora",
+InsertLink			: "Insereix/Edita enllaç",
+RemoveLink			: "Elimina enllaç",
+Anchor				: "Insereix/Edita àncora",
 InsertImageLbl		: "Imatge",
-InsertImage			: "Afegir/Editar Imatge",
+InsertImage			: "Insereix/Edita imatge",
 InsertFlashLbl		: "Flash",
-InsertFlash			: "Afegir/Editar Flash",
+InsertFlash			: "Insereix/Edita Flash",
 InsertTableLbl		: "Taula",
-InsertTable			: "Afegir/Editar Taula",
+InsertTable			: "Insereix/Edita taula",
 InsertLineLbl		: "Línia",
-InsertLine			: "Afegir Línia Horitzontal",
+InsertLine			: "Insereix línia horitzontal",
 InsertSpecialCharLbl: "Caràcter Especial",
-InsertSpecialChar	: "Afegir Caràcter Especial",
+InsertSpecialChar	: "Insereix caràcter especial",
 InsertSmileyLbl		: "Icona",
-InsertSmiley		: "Afegir Icona",
-About				: "Sobre FCKeditor",
+InsertSmiley		: "Insereix icona",
+About				: "Quant a FCKeditor",
 Bold				: "Negreta",
-Italic				: "Itàlica",
+Italic				: "Cursiva",
 Underline			: "Subratllat",
-StrikeThrough		: "Tatxat",
-Subscript			: "Subscript",
-Superscript			: "Superscript",
-LeftJustify			: "Justificar Esquerra",
-CenterJustify		: "Justificar Centrat",
-RightJustify		: "Justificar Dreta",
-BlockJustify		: "Justificar Bloc",
-DecreaseIndent		: "Disminuir Indentació",
-IncreaseIndent		: "Augmentar Indentació",
-Undo				: "Desfer",
-Redo				: "Refer",
-NumberedListLbl		: "Llista Numerada",
-NumberedList		: "Afegir/Eliminar Llista Numerada",
-BulletedListLbl		: "Llista Marcada",
-BulletedList		: "Afegir/Eliminar Llista Marcada",
-ShowTableBorders	: "Mostrar Costats de Taules",
-ShowDetails			: "Mostrar Detalls",
+StrikeThrough		: "Barrat",
+Subscript			: "Subíndex",
+Superscript			: "Superíndex",
+LeftJustify			: "Aliniament esquerra",
+CenterJustify		: "Aliniament centrat",
+RightJustify		: "Aliniament dreta",
+BlockJustify		: "Justifica",
+DecreaseIndent		: "Sagna el text",
+IncreaseIndent		: "Treu el sagnat del text",
+Undo				: "Desfés",
+Redo				: "Refés",
+NumberedListLbl		: "Llista numerada",
+NumberedList		: "Aplica o elimina la llista numerada",
+BulletedListLbl		: "Llista de pics",
+BulletedList		: "Aplica o elimina la llista de pics",
+ShowTableBorders	: "Mostra les vores de les taules",
+ShowDetails			: "Mostra detalls",
 Style				: "Estil",
 FontFormat			: "Format",
-Font				: "Font",
-FontSize			: "Tamany",
+Font				: "Tipus de lletra",
+FontSize			: "Mida",
 TextColor			: "Color de Text",
 BGColor				: "Color de Fons",
-Source				: "Font",
-Find				: "Cercar",
-Replace				: "Remplaçar",
-SpellCheck			: "Verificar sintaxi",
+Source				: "Codi font",
+Find				: "Cerca",
+Replace				: "Reemplaça",
+SpellCheck			: "Revisa l'ortografia",
 UniversalKeyboard	: "Teclat universal",
+PageBreakLbl		: "Salt de pàgina",
+PageBreak			: "Insereix salt de pàgina",
 
 Form			: "Formulari",
 Checkbox		: "Casella de verificació",
-RadioButton		: "Botó ràdio",
+RadioButton		: "Botó d'opció",
 TextField		: "Camp de text",
 Textarea		: "Àrea de text",
 HiddenField		: "Camp ocult",
-Button			: "botó",
+Button			: "Botó",
 SelectionField	: "Camp de selecció",
-ImageButton		: "Botó imatge",
+ImageButton		: "Botó d'imatge",
+
+FitWindow		: "Maximiza la mida de l'editor",
 
 // Context Menu
-EditLink			: "Editar Enllaç",
-InsertRow			: "Afegir Fila",
-DeleteRows			: "Eliminar Files",
-InsertColumn		: "Afegir Columna",
-DeleteColumns		: "Eliminar Columnes",
-InsertCell			: "Afegir Cel·la",
-DeleteCells			: "Eliminar Cel·les",
-MergeCells			: "Fusionar Cel·les",
-SplitCell			: "Separar Cel·les",
-CellProperties		: "Proprietats de Cel·la",
-TableProperties		: "Proprietats de Taula",
-ImageProperties		: "Proprietats d'Image",
-FlashProperties		: "Proprietats Flash",
-
-AnchorProp			: "Proprietats d'àncora",
-ButtonProp			: "Proprietats de botó",
-CheckboxProp		: "Proprietats de casella de verificació",
-HiddenFieldProp		: "Proprietats de camp ocult",
-RadioButtonProp		: "Proprietats de botó ràdio",
-ImageButtonProp		: "Proprietats de botó imatge",
-TextFieldProp		: "Proprietats de camp de text",
-SelectionFieldProp	: "Proprietats de camp de selecció",
-TextareaProp		: "Proprietats de camp de text",
-FormProp			: "Proprietats de formulari",
+EditLink			: "Edita l'enllaç",
+CellCM				: "Cel·la",
+RowCM				: "Fila",
+ColumnCM			: "Columna",
+InsertRow			: "Insereix una fila",
+DeleteRows			: "Suprimeix una fila",
+InsertColumn		: "Afegeix una columna",
+DeleteColumns		: "Suprimeix una columna",
+InsertCell			: "Insereix una cel·la",
+DeleteCells			: "Suprimeix les cel·les",
+MergeCells			: "Fusiona les cel·les",
+SplitCell			: "Separa les cel·les",
+TableDelete			: "Suprimeix la taula",
+CellProperties		: "Propietats de la cel·la",
+TableProperties		: "Propietats de la taula",
+ImageProperties		: "Propietats de la imatge",
+FlashProperties		: "Propietats del Flash",
+
+AnchorProp			: "Propietats de l'àncora",
+ButtonProp			: "Propietats del botó",
+CheckboxProp		: "Propietats de la casella de verificació",
+HiddenFieldProp		: "Propietats del camp ocult",
+RadioButtonProp		: "Propietats del botó d'opció",
+ImageButtonProp		: "Propietats del botó d'imatge",
+TextFieldProp		: "Propietats del camp de text",
+SelectionFieldProp	: "Propietats del camp de selecció",
+TextareaProp		: "Propietats de l'àrea de text",
+FormProp			: "Propietats del formulari",
 
-FontFormats			: "Normal;Formatejat;Adreça;Capçalera 1;Capçalera 2;Capçalera 3;Capçalera 4;Capçalera 5;Capçalera 6",
+FontFormats			: "Normal;Formatejat;Adreça;Encapçalament 1;Encapçalament 2;Encapçalament 3;Encapçalament 4;Encapçalament 5;Encapçalament 6",
 
 // Alerts and Messages
 ProcessingXHTML		: "Processant XHTML. Si us plau esperi...",
 Done				: "Fet",
 PasteWordConfirm	: "El text que voleu enganxar sembla provenir de Word. Voleu netejar aquest text abans que sigui enganxat?",
 NotCompatiblePaste	: "Aquesta funció és disponible per a Internet Explorer versió 5.5 o superior. Voleu enganxar sense netejar?",
-UnknownToolbarItem	: "Element de la Barra d'eines desconegut \"%1\"",
+UnknownToolbarItem	: "Element de la barra d'eines desconegut \"%1\"",
 UnknownCommand		: "Nom de comanda desconegut \"%1\"",
 NotImplemented		: "Mètode no implementat",
 UnknownToolbarSet	: "Conjunt de barra d'eines \"%1\" inexistent",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Les preferències del navegador poden limitar algunes funcions d'aquest editor. Cal habilitar l'opció \"Executa controls ActiveX i plug-ins\". Poden sorgir errors i poden faltar algunes funcions.",
+BrowseServerBlocked : "El visualitzador de recursos no s'ha pogut obrir. Assegura't de que els bloquejos de finestres emergents estan desactivats.",
+DialogBlocked		: "No ha estat possible obrir una finestra de diàleg. Assegura't de que els bloquejos de finestres emergents estan desactivats.",
 
 // Dialogs
-DlgBtnOK			: "OK",
-DlgBtnCancel		: "Cancelar",
-DlgBtnClose			: "Tancar",
+DlgBtnOK			: "D'acord",
+DlgBtnCancel		: "Cancel·la",
+DlgBtnClose			: "Tanca",
 DlgBtnBrowseServer	: "Veure servidor",
 DlgAdvancedTag		: "Avançat",
 DlgOpOther			: "Altres",
@@ -146,126 +157,126 @@
 DlgAlertUrl			: "Si us plau, afegiu la URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;no definit&gt;",
+DlgGenNotSet		: "<no definit>",
 DlgGenId			: "Id",
-DlgGenLangDir		: "Direcció Idioma",
-DlgGenLangDirLtr	: "Esquerra a Dreta (LTR)",
-DlgGenLangDirRtl	: "Dreta a Esquerra (RTL)",
-DlgGenLangCode		: "Codi de Llengua",
+DlgGenLangDir		: "Direcció de l'idioma",
+DlgGenLangDirLtr	: "D'esquerra a dreta (LTR)",
+DlgGenLangDirRtl	: "De dreta a esquerra (RTL)",
+DlgGenLangCode		: "Codi d'idioma",
 DlgGenAccessKey		: "Clau d'accés",
 DlgGenName			: "Nom",
 DlgGenTabIndex		: "Index de Tab",
-DlgGenLongDescr		: "Descripció Llarga URL",
-DlgGenClass			: "Classes del Full d'Estils",
-DlgGenTitle			: "Títol Consultiu",
-DlgGenContType		: "Tipus de Contingut Consultiu",
-DlgGenLinkCharset	: "Conjunt de Caràcters Font Enllaçat",
+DlgGenLongDescr		: "Descripció llarga de la URL",
+DlgGenClass			: "Classes del full d'estil",
+DlgGenTitle			: "Títol consultiu",
+DlgGenContType		: "Tipus de contingut consultiu",
+DlgGenLinkCharset	: "Conjunt de caràcters font enllaçat",
 DlgGenStyle			: "Estil",
 
 // Image Dialog
-DlgImgTitle			: "Proprietats d'Imatge",
-DlgImgInfoTab		: "Informació d'Imatge",
-DlgImgBtnUpload		: "Enviar-la al servidor",
+DlgImgTitle			: "Propietats de la imatge",
+DlgImgInfoTab		: "Informació de la imatge",
+DlgImgBtnUpload		: "Envia-la al servidor",
 DlgImgURL			: "URL",
-DlgImgUpload		: "Pujar",
-DlgImgAlt			: "Text Alternatiu",
+DlgImgUpload		: "Puja",
+DlgImgAlt			: "Text alternatiu",
 DlgImgWidth			: "Amplada",
 DlgImgHeight		: "Alçada",
-DlgImgLockRatio		: "Bloquejar Proporcions",
-DlgBtnResetSize		: "Restaurar Tamany",
-DlgImgBorder		: "Costat",
-DlgImgHSpace		: "HSpace",
-DlgImgVSpace		: "VSpace",
+DlgImgLockRatio		: "Bloqueja les proporcions",
+DlgBtnResetSize		: "Restaura la mida",
+DlgImgBorder		: "Vora",
+DlgImgHSpace		: "Espaiat horit.",
+DlgImgVSpace		: "Espaiat vert.",
 DlgImgAlign			: "Alineació",
-DlgImgAlignLeft		: "Left",
+DlgImgAlignLeft		: "Ajusta a l'esquerra",
 DlgImgAlignAbsBottom: "Abs Bottom",
 DlgImgAlignAbsMiddle: "Abs Middle",
 DlgImgAlignBaseline	: "Baseline",
 DlgImgAlignBottom	: "Bottom",
 DlgImgAlignMiddle	: "Middle",
-DlgImgAlignRight	: "Right",
+DlgImgAlignRight	: "Ajusta a la dreta",
 DlgImgAlignTextTop	: "Text Top",
 DlgImgAlignTop		: "Top",
-DlgImgPreview		: "Vista Prèvia",
+DlgImgPreview		: "Vista prèvia",
 DlgImgAlertUrl		: "Si us plau, escriviu la URL de la imatge",
 DlgImgLinkTab		: "Enllaç",
 
 // Flash Dialog
-DlgFlashTitle		: "Propietats Flash",
-DlgFlashChkPlay		: "Reprodució Automàtica",
+DlgFlashTitle		: "Propietats del Flash",
+DlgFlashChkPlay		: "Reprodució automàtica",
 DlgFlashChkLoop		: "Bucle",
-DlgFlashChkMenu		: "Habilitar Menu Flash",
+DlgFlashChkMenu		: "Habilita menú Flash",
 DlgFlashScale		: "Escala",
-DlgFlashScaleAll	: "Mostrar tot",
-DlgFlashScaleNoBorder	: "Sense Costats",
+DlgFlashScaleAll	: "Mostra-ho tot",
+DlgFlashScaleNoBorder	: "Sense vores",
 DlgFlashScaleFit	: "Mida exacta",
 
 // Link Dialog
 DlgLnkWindowTitle	: "Enllaç",
-DlgLnkInfoTab		: "Informació d'Enllaç",
+DlgLnkInfoTab		: "Informació de l'enllaç",
 DlgLnkTargetTab		: "Destí",
 
-DlgLnkType			: "Tipus de Link",
+DlgLnkType			: "Tipus d'enllaç",
 DlgLnkTypeURL		: "URL",
 DlgLnkTypeAnchor	: "Àncora en aquesta pàgina",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Protocol",
-DlgLnkProtoOther	: "&lt;altra&gt;",
+DlgLnkProtoOther	: "<altra>",
 DlgLnkURL			: "URL",
-DlgLnkAnchorSel		: "Seleccionar una àncora",
+DlgLnkAnchorSel		: "Selecciona una àncora",
 DlgLnkAnchorByName	: "Per nom d'àncora",
 DlgLnkAnchorById	: "Per Id d'element",
-DlgLnkNoAnchors		: "&lt;No hi ha àncores disponibles en aquest document&gt;",
+DlgLnkNoAnchors		: "<No hi ha àncores disponibles en aquest document>",
 DlgLnkEMail			: "Adreça d'E-Mail",
-DlgLnkEMailSubject	: "Subjecte del Missatge",
-DlgLnkEMailBody		: "Cos del Missatge",
-DlgLnkUpload		: "Pujar",
-DlgLnkBtnUpload		: "Enviar al Servidor",
+DlgLnkEMailSubject	: "Assumpte del missatge",
+DlgLnkEMailBody		: "Cos del missatge",
+DlgLnkUpload		: "Puja",
+DlgLnkBtnUpload		: "Envia al servidor",
 
 DlgLnkTarget		: "Destí",
-DlgLnkTargetFrame	: "&lt;marc&gt;",
-DlgLnkTargetPopup	: "&lt;finestra popup&gt;",
-DlgLnkTargetBlank	: "Nova Finestra (_blank)",
-DlgLnkTargetParent	: "Finestra Pare (_parent)",
-DlgLnkTargetSelf	: "Mateixa Finestra (_self)",
+DlgLnkTargetFrame	: "<marc>",
+DlgLnkTargetPopup	: "<finestra popup>",
+DlgLnkTargetBlank	: "Nova finestra (_blank)",
+DlgLnkTargetParent	: "Finestra pare (_parent)",
+DlgLnkTargetSelf	: "Mateixa finestra (_self)",
 DlgLnkTargetTop		: "Finestra Major (_top)",
 DlgLnkTargetFrameName	: "Nom del marc de destí",
-DlgLnkPopWinName	: "Nom Finestra Popup",
-DlgLnkPopWinFeat	: "Característiques Finestra Popup",
+DlgLnkPopWinName	: "Nom finestra popup",
+DlgLnkPopWinFeat	: "Característiques finestra popup",
 DlgLnkPopResize		: "Redimensionable",
-DlgLnkPopLocation	: "Barra d'Adreça",
-DlgLnkPopMenu		: "Barra de Menú",
-DlgLnkPopScroll		: "Barres d'Scroll",
-DlgLnkPopStatus		: "Barra d'Estat",
-DlgLnkPopToolbar	: "Barra d'Eines",
+DlgLnkPopLocation	: "Barra d'adreça",
+DlgLnkPopMenu		: "Barra de menú",
+DlgLnkPopScroll		: "Barres d'scroll",
+DlgLnkPopStatus		: "Barra d'estat",
+DlgLnkPopToolbar	: "Barra d'eines",
 DlgLnkPopFullScrn	: "Pantalla completa (IE)",
 DlgLnkPopDependent	: "Depenent (Netscape)",
 DlgLnkPopWidth		: "Amplada",
 DlgLnkPopHeight		: "Alçada",
-DlgLnkPopLeft		: "Posició Esquerra",
-DlgLnkPopTop		: "Posició Dalt",
+DlgLnkPopLeft		: "Posició esquerra",
+DlgLnkPopTop		: "Posició dalt",
 
 DlnLnkMsgNoUrl		: "Si us plau, escrigui l'enllaç URL",
 DlnLnkMsgNoEMail	: "Si us plau, escrigui l'adreça e-mail",
 DlnLnkMsgNoAnchor	: "Si us plau, escrigui l'àncora",
 
 // Color Dialog
-DlgColorTitle		: "Seleccioni Color",
-DlgColorBtnClear	: "Netejar",
-DlgColorHighlight	: "Realçar",
-DlgColorSelected	: "Seleccionat",
+DlgColorTitle		: "Selecciona el color",
+DlgColorBtnClear	: "Neteja",
+DlgColorHighlight	: "Realça",
+DlgColorSelected	: "Selecciona",
 
 // Smiley Dialog
-DlgSmileyTitle		: "Afegir una Icona",
+DlgSmileyTitle		: "Insereix una icona",
 
 // Special Character Dialog
-DlgSpecialCharTitle	: "Seleccioneu Caràcter Especial",
+DlgSpecialCharTitle	: "Selecciona el caràcter especial",
 
 // Table Dialog
-DlgTableTitle		: "Proprietats de Taula",
+DlgTableTitle		: "Propietats de la taula",
 DlgTableRows		: "Files",
 DlgTableColumns		: "Columnes",
-DlgTableBorder		: "Tamany de Costat",
+DlgTableBorder		: "Tamany vora",
 DlgTableAlign		: "Alineació",
 DlgTableAlignNotSet	: "<No Definit>",
 DlgTableAlignLeft	: "Esquerra",
@@ -275,26 +286,27 @@
 DlgTableWidthPx		: "píxels",
 DlgTableWidthPc		: "percentatge",
 DlgTableHeight		: "Alçada",
-DlgTableCellSpace	: "Cell spacing",
-DlgTableCellPad		: "Cell padding",
-DlgTableCaption		: "Capçalera",
+DlgTableCellSpace	: "Espaiat de cel·les",
+DlgTableCellPad		: "Encoixinament de cel·les",
+DlgTableCaption		: "Títol",
+DlgTableSummary		: "Resum",
 
 // Table Cell Dialog
-DlgCellTitle		: "Proprietats de Cel·la",
+DlgCellTitle		: "Propietats de la cel·la",
 DlgCellWidth		: "Amplada",
 DlgCellWidthPx		: "píxels",
 DlgCellWidthPc		: "percentatge",
 DlgCellHeight		: "Alçada",
-DlgCellWordWrap		: "Word Wrap",
+DlgCellWordWrap		: "Ajust de paraula",
 DlgCellWordWrapNotSet	: "<No Definit>",
 DlgCellWordWrapYes	: "Si",
 DlgCellWordWrapNo	: "No",
-DlgCellHorAlign		: "Alineació Horitzontal",
+DlgCellHorAlign		: "Alineació horitzontal",
 DlgCellHorAlignNotSet	: "<No Definit>",
 DlgCellHorAlignLeft	: "Esquerra",
 DlgCellHorAlignCenter	: "Centre",
 DlgCellHorAlignRight: "Dreta",
-DlgCellVerAlign		: "Alineació Vertical",
+DlgCellVerAlign		: "Alineació vertical",
 DlgCellVerAlignNotSet	: "<No definit>",
 DlgCellVerAlignTop	: "Top",
 DlgCellVerAlignMiddle	: "Middle",
@@ -302,66 +314,65 @@
 DlgCellVerAlignBaseline	: "Baseline",
 DlgCellRowSpan		: "Rows Span",
 DlgCellCollSpan		: "Columns Span",
-DlgCellBackColor	: "Color de Fons",
-DlgCellBorderColor	: "Colr de Costat",
-DlgCellBtnSelect	: "Seleccioni...",
+DlgCellBackColor	: "Color de fons",
+DlgCellBorderColor	: "Color de la vora",
+DlgCellBtnSelect	: "Seleccioneu...",
 
 // Find Dialog
-DlgFindTitle		: "Cercar",
-DlgFindFindBtn		: "Cercar",
-DlgFindNotFoundMsg	: "El text especificat no ha estat trobat.",
+DlgFindTitle		: "Cerca",
+DlgFindFindBtn		: "Cerca",
+DlgFindNotFoundMsg	: "El text especificat no s'ha trobat.",
 
 // Replace Dialog
-DlgReplaceTitle			: "Remplaçar",
-DlgReplaceFindLbl		: "Cercar:",
-DlgReplaceReplaceLbl	: "Remplaçar per:",
-DlgReplaceCaseChk		: "Sensible a Majúscules",
-DlgReplaceReplaceBtn	: "Remplaçar",
-DlgReplaceReplAllBtn	: "Remplaçar Tot",
-DlgReplaceWordChk		: "Cercar Paraula Completa",
+DlgReplaceTitle			: "Reemplaça",
+DlgReplaceFindLbl		: "Cerca:",
+DlgReplaceReplaceLbl	: "Remplaça amb:",
+DlgReplaceCaseChk		: "Sensible a majúscules",
+DlgReplaceReplaceBtn	: "Reemplaça",
+DlgReplaceReplAllBtn	: "Reemplaça'ls tots",
+DlgReplaceWordChk		: "Cerca paraula completa",
 
 // Paste Operations / Dialog
-PasteErrorPaste	: "La seguretat del vostre navigador no permet executar automàticament les operacions d'enganxat. Si us plau, utilitzeu el teclat (Ctrl+V).",
-PasteErrorCut	: "La seguretat del vostre navigador no permet executar automàticament les operacions de tallar. Si us plau, utilitzeu el teclat (Ctrl+X).",
-PasteErrorCopy	: "La seguretat del vostre navigador no permet executar automàticament les operacions de copiar. Si us plau, utilitzeu el teclat (Ctrl+C).",
+PasteErrorPaste	: "La seguretat del vostre navegador no permet executar automàticament les operacions d'enganxat. Si us plau, utilitzeu el teclat (Ctrl+V).",
+PasteErrorCut	: "La seguretat del vostre navegador no permet executar automàticament les operacions de retallar. Si us plau, utilitzeu el teclat (Ctrl+X).",
+PasteErrorCopy	: "La seguretat del vostre navegador no permet executar automàticament les operacions de copiar. Si us plau, utilitzeu el teclat (Ctrl+C).",
 
-PasteAsText		: "Enganxar com Text Planer",
-PasteFromWord	: "Enganxar com Word",
+PasteAsText		: "Enganxa com a text sense format",
+PasteFromWord	: "Enganxa com a Word",
 
 DlgPasteMsg2	: "Si us plau, enganxeu dins del següent camp utilitzant el teclat (<STRONG>Ctrl+V</STRONG>) i premeu <STRONG>OK</STRONG>.",
-DlgPasteIgnoreFont		: "Ignorar definicions de font",
-DlgPasteRemoveStyles	: "Eliminar definicions d'estil",
-DlgPasteCleanBox		: "Netejar camp",
-
+DlgPasteIgnoreFont		: "Ignora definicions de font",
+DlgPasteRemoveStyles	: "Elimina definicions d'estil",
+DlgPasteCleanBox		: "Neteja camp",
 
 // Color Picker
 ColorAutomatic	: "Automàtic",
-ColorMoreColors	: "Més Colors...",
+ColorMoreColors	: "Més colors...",
 
 // Document Properties
-DocProps		: "Proprietats de document",
+DocProps		: "Propietats del document",
 
 // Anchor Dialog
-DlgAnchorTitle		: "Proprietats d'àncora",
-DlgAnchorName		: "Nom d'àncora",
-DlgAnchorErrorName	: "Si us plau, escrigui el nom de l'ancora",
+DlgAnchorTitle		: "Propietats de l'àncora",
+DlgAnchorName		: "Nom de l'àncora",
+DlgAnchorErrorName	: "Si us plau, escriviu el nom de l'ancora",
 
 // Speller Pages Dialog
 DlgSpellNotInDic		: "No és al diccionari",
-DlgSpellChangeTo		: "Canviar a",
-DlgSpellBtnIgnore		: "Ignorar",
-DlgSpellBtnIgnoreAll	: "Ignorar tot",
-DlgSpellBtnReplace		: "Remplaçar",
-DlgSpellBtnReplaceAll	: "Replaçar tot",
-DlgSpellBtnUndo			: "Desfer",
-DlgSpellNoSuggestions	: "Cap suggestió",
-DlgSpellProgress		: "Comprovació de sintaxi en progrés",
-DlgSpellNoMispell		: "Comprovació de sintaxi completada",
-DlgSpellNoChanges		: "Comprovació de sintaxi: cap paraulada canviada",
-DlgSpellOneChange		: "Comprovació de sintaxi: una paraula canviada",
-DlgSpellManyChanges		: "Comprovació de sintaxi %1 paraules canviades",
+DlgSpellChangeTo		: "Canvia a",
+DlgSpellBtnIgnore		: "Ignora",
+DlgSpellBtnIgnoreAll	: "Ignora-les totes",
+DlgSpellBtnReplace		: "Canvia",
+DlgSpellBtnReplaceAll	: "Canvia-les totes",
+DlgSpellBtnUndo			: "Desfés",
+DlgSpellNoSuggestions	: "Cap sugerència",
+DlgSpellProgress		: "Comprovació ortogràfica en progrés",
+DlgSpellNoMispell		: "Comprovació ortogràfica completada",
+DlgSpellNoChanges		: "Comprovació ortogràfica: cap paraulada canviada",
+DlgSpellOneChange		: "Comprovació ortogràfica: una paraula canviada",
+DlgSpellManyChanges		: "Comprovació ortogràfica %1 paraules canviades",
 
-IeSpellDownload			: "Comprovació de sintaxi no instal·lat. Voleu descarregar-ho ara?",
+IeSpellDownload			: "Comprovació ortogràfica no instal·lada. Voleu descarregar-ho ara?",
 
 // Button Dialog
 DlgButtonText	: "Text (Valor)",
@@ -382,16 +393,16 @@
 DlgSelectValue		: "Valor",
 DlgSelectSize		: "Tamany",
 DlgSelectLines		: "Línies",
-DlgSelectChkMulti	: "Permetre múltiples seleccions",
+DlgSelectChkMulti	: "Permet múltiples seleccions",
 DlgSelectOpAvail	: "Opcions disponibles",
 DlgSelectOpText		: "Text",
 DlgSelectOpValue	: "Valor",
-DlgSelectBtnAdd		: "Afegir",
-DlgSelectBtnModify	: "Modificar",
+DlgSelectBtnAdd		: "Afegeix",
+DlgSelectBtnModify	: "Modifica",
 DlgSelectBtnUp		: "Amunt",
 DlgSelectBtnDown	: "Avall",
-DlgSelectBtnSetValue : "Seleccionar per defecte",
-DlgSelectBtnDelete	: "Esborrar",
+DlgSelectBtnSetValue : "Selecciona per defecte",
+DlgSelectBtnDelete	: "Elimina",
 
 // Textarea Dialog
 DlgTextareaName	: "Nom",
@@ -405,15 +416,15 @@
 DlgTextMaxChars		: "Màxim de caràcters",
 DlgTextType			: "Tipus",
 DlgTextTypeText		: "Text",
-DlgTextTypePass		: "Contrassenya",
+DlgTextTypePass		: "Contrasenya",
 
 // Hidden Field Dialog
 DlgHiddenName	: "Nom",
 DlgHiddenValue	: "Valor",
 
 // Bulleted List Dialog
-BulletedListProp	: "Proprietats de llista marcada",
-NumberedListProp	: "Proprietats de llista numerada",
+BulletedListProp	: "Propietats de llista marcada",
+NumberedListProp	: "Propietats de llista numerada",
 DlgLstType			: "Tipus",
 DlgLstTypeCircle	: "Cercle",
 DlgLstTypeDisc		: "Disc",	//MISSING
@@ -461,15 +472,16 @@
 
 // Templates Dialog
 Templates			: "Plantilles",
-DlgTemplatesTitle	: "Contingut Plantilles",
+DlgTemplatesTitle	: "Contingut plantilles",
 DlgTemplatesSelMsg	: "Si us plau, seleccioneu la plantilla per obrir en l'editor<br>(el contingut actual no serà enregistrat):",
-DlgTemplatesLoading	: "Carregant la llista de plantilles. Si us plau, esperi...",
+DlgTemplatesLoading	: "Carregant la llista de plantilles. Si us plau, espereu...",
 DlgTemplatesNoTpl	: "(No hi ha plantilles definides)",
 
 // About Dialog
-DlgAboutAboutTab	: "Sobre",
-DlgAboutBrowserInfoTab	: "Informació del navigador",
+DlgAboutAboutTab	: "Quant a",
+DlgAboutBrowserInfoTab	: "Informació del navegador",
+DlgAboutLicenseTab	: "Llicència",
 DlgAboutVersion		: "versió",
-DlgAboutLicense		: "Sota els termes de la Llicència GNU Lesser General Public License",
+DlgAboutLicense		: "Segons els termes de la Llicència GNU Lesser General Public License",
 DlgAboutInfo		: "Per a més informació aneu a"
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/cs.js 1.4.1.src/fckeditor/editor/lang/cs.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/cs.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/cs.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -16,6 +16,7 @@
  * File Authors:
  * 		David Horák (david.horak@email.cz)
  * 		Petr Plavjaník (plavjanik@gmail.com)
+ * 		Dave MacBlack (davemacblack@users.sourceforge.net)
  */
 
 var FCKLang =
@@ -44,8 +45,8 @@
 Anchor				: "Vložít/změnit záložku",
 InsertImageLbl		: "Obrázek",
 InsertImage			: "Vložit/změnit obrázek",
-InsertFlashLbl		: "Flash",	//MISSING
-InsertFlash			: "Insert/Edit Flash",	//MISSING
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Vložit/Upravit Flash",
 InsertTableLbl		: "Tabulka",
 InsertTable			: "Vložit/změnit tabulku",
 InsertLineLbl		: "Linka",
@@ -73,7 +74,7 @@
 NumberedList		: "Vložit/odstranit číslovaný seznam",
 BulletedListLbl		: "Odrážky",
 BulletedList		: "Vložit/odstranit odrážky",
-ShowTableBorders	: "Zobrzit okraje tabulek",
+ShowTableBorders	: "Zobrazit okraje tabulek",
 ShowDetails			: "Zobrazit podrobnosti",
 Style				: "Styl",
 FontFormat			: "Formát",
@@ -86,6 +87,8 @@
 Replace				: "Nahradit",
 SpellCheck			: "Zkontrolovat pravopis",
 UniversalKeyboard	: "Univerzální klávesnice",
+PageBreakLbl		: "Konec stránky",
+PageBreak			: "Vložit konec stránky",
 
 Form			: "Formulář",
 Checkbox		: "Zaškrtávací políčko",
@@ -97,8 +100,13 @@
 SelectionField	: "Seznam",
 ImageButton		: "Obrázkové tlačítko",
 
+FitWindow		: "Maximalizovat velikost editoru",
+
 // Context Menu
 EditLink			: "Změnit odkaz",
+CellCM				: "Buňka",
+RowCM				: "Řádek",
+ColumnCM			: "Sloupec",
 InsertRow			: "Vložit řádek",
 DeleteRows			: "Smazat řádek",
 InsertColumn		: "Vložit sloupec",
@@ -107,10 +115,11 @@
 DeleteCells			: "Smazat buňky",
 MergeCells			: "Sloučit buňky",
 SplitCell			: "Rozdělit buňku",
+TableDelete			: "Smazat tabulku",
 CellProperties		: "Vlastnosti buňky",
 TableProperties		: "Vlastnosti tabulky",
 ImageProperties		: "Vlastnosti obrázku",
-FlashProperties		: "Flash Properties",	//MISSING
+FlashProperties		: "Vlastnosti Flashe",
 
 AnchorProp			: "Vlastnosti záložky",
 ButtonProp			: "Vlastnosti tlačítka",
@@ -128,13 +137,15 @@
 // Alerts and Messages
 ProcessingXHTML		: "Probíhá zpracování XHTML. Prosím čekejte...",
 Done				: "Hotovo",
-PasteWordConfirm	: "Jak je vidět, vkládaný text je kopírován z Wordu. Chceet jej před vložením vyčistit?",
+PasteWordConfirm	: "Jak je vidět, vkládaný text je kopírován z Wordu. Chcete jej před vložením vyčistit?",
 NotCompatiblePaste	: "Tento příkaz je dostupný pouze v Internet Exploreru verze 5.5 nebo vyšší. Chcete vložit text bez vyčištění?",
 UnknownToolbarItem	: "Neznámá položka panelu nástrojů \"%1\"",
 UnknownCommand		: "Neznámý příkaz \"%1\"",
 NotImplemented		: "Příkaz není implementován",
 UnknownToolbarSet	: "Panel nástrojů \"%1\" neexistuje",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Nastavení bezpečnosti Vašeho prohlížeče omezuje funkčnost některých jeho možností. Je třeba zapnout volbu \"Spouštět ovládáací prvky ActiveX a moduly plug-in\", jinak nebude možné využívat všechny dosputné schopnosti editoru.",
+BrowseServerBlocked : "Průzkumník zdrojů nelze otevřít. Prověřte, zda nemáte aktivováno blokování popup oken.",
+DialogBlocked		: "Nelze otevřít dialogové okno. Prověřte, zda nemáte aktivováno blokování popup oken.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -142,12 +153,12 @@
 DlgBtnClose			: "Zavřít",
 DlgBtnBrowseServer	: "Vybrat na serveru",
 DlgAdvancedTag		: "Rozšířené",
-DlgOpOther			: "&lt;Ostatní&gt;",
-DlgInfoTab			: "Info",	//MISSING
-DlgAlertUrl			: "Please insert the URL",	//MISSING
+DlgOpOther			: "<Ostatní>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Prosím vložte URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;nenastaveno&gt;",
+DlgGenNotSet		: "<nenastaveno>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Orientace jazyka",
 DlgGenLangDirLtr	: "Zleva do prava (LTR)",
@@ -164,7 +175,7 @@
 DlgGenStyle			: "Styl",
 
 // Image Dialog
-DlgImgTitle			: "Vlastosti obrázku",
+DlgImgTitle			: "Vlastnosti obrázku",
 DlgImgInfoTab		: "Informace o obrázku",
 DlgImgBtnUpload		: "Odeslat na server",
 DlgImgURL			: "URL",
@@ -189,17 +200,17 @@
 DlgImgAlignTop		: "Nahoru",
 DlgImgPreview		: "Náhled",
 DlgImgAlertUrl		: "Zadejte prosím URL obrázku",
-DlgImgLinkTab		: "Link",	//MISSING
+DlgImgLinkTab		: "Odkaz",
 
 // Flash Dialog
-DlgFlashTitle		: "Flash Properties",	//MISSING
-DlgFlashChkPlay		: "Auto Play",	//MISSING
-DlgFlashChkLoop		: "Loop",	//MISSING
-DlgFlashChkMenu		: "Enable Flash Menu",	//MISSING
-DlgFlashScale		: "Scale",	//MISSING
-DlgFlashScaleAll	: "Show all",	//MISSING
-DlgFlashScaleNoBorder	: "No Border",	//MISSING
-DlgFlashScaleFit	: "Exact Fit",	//MISSING
+DlgFlashTitle		: "Vlastnosti Flashe",
+DlgFlashChkPlay		: "Automatické spuštění",
+DlgFlashChkLoop		: "Opakování",
+DlgFlashChkMenu		: "Nabídka Flash",
+DlgFlashScale		: "Zobrazit",
+DlgFlashScaleAll	: "Zobrazit vše",
+DlgFlashScaleNoBorder	: "Bez okraje",
+DlgFlashScaleFit	: "Přizpůsobit",
 
 // Link Dialog
 DlgLnkWindowTitle	: "Odkaz",
@@ -211,12 +222,12 @@
 DlgLnkTypeAnchor	: "Kotva v této stránce",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Protokol",
-DlgLnkProtoOther	: "&lt;jiný&gt;",
+DlgLnkProtoOther	: "<jiný>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Vybrat kotvu",
 DlgLnkAnchorByName	: "Podle jména kotvy",
 DlgLnkAnchorById	: "Podle Id objektu",
-DlgLnkNoAnchors		: "&lt;Ve stránce žádná kotva není definována&gt;",
+DlgLnkNoAnchors		: "<Ve stránce žádná kotva není definována>",
 DlgLnkEMail			: "E-Mailová adresa",
 DlgLnkEMailSubject	: "Předmět zprávy",
 DlgLnkEMailBody		: "Tělo zprávy",
@@ -224,8 +235,8 @@
 DlgLnkBtnUpload		: "Odeslat na Server",
 
 DlgLnkTarget		: "Cíl",
-DlgLnkTargetFrame	: "&lt;rámec&gt;",
-DlgLnkTargetPopup	: "&lt;vyskakovací okno&gt;",
+DlgLnkTargetFrame	: "<rámec>",
+DlgLnkTargetPopup	: "<vyskakovací okno>",
 DlgLnkTargetBlank	: "Nové okno (_blank)",
 DlgLnkTargetParent	: "Rodičovské okno (_parent)",
 DlgLnkTargetSelf	: "Stejné okno (_self)",
@@ -279,6 +290,7 @@
 DlgTableCellSpace	: "Vzdálenost buněk",
 DlgTableCellPad		: "Odsazení obsahu",
 DlgTableCaption		: "Popis",
+DlgTableSummary		: "Souhrn",
 
 // Table Cell Dialog
 DlgCellTitle		: "Vlastnosti buňky",
@@ -304,7 +316,7 @@
 DlgCellRowSpan		: "Sloučené řádky",
 DlgCellCollSpan		: "Sloučené sloupce",
 DlgCellBackColor	: "Barva pozadí",
-DlgCellBorderColor	: "Rarva ohraničení",
+DlgCellBorderColor	: "Barva ohraničení",
 DlgCellBtnSelect	: "Výběr...",
 
 // Find Dialog
@@ -329,11 +341,10 @@
 PasteAsText		: "Vložit jako čistý text",
 PasteFromWord	: "Vložit text z Wordu",
 
-DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",	//MISSING
-DlgPasteIgnoreFont		: "Ignore Font Face definitions",	//MISSING
-DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
-DlgPasteCleanBox		: "Clean Up Box",	//MISSING
-
+DlgPasteMsg2	: "Do následujícího pole vložte požadovaný obsah pomocí klávesnice (<STRONG>Ctrl+V</STRONG>) a stiskněte <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignorovat písmo",
+DlgPasteRemoveStyles	: "Odstranit styly",
+DlgPasteCleanBox		: "Vyčistit",
 
 // Color Picker
 ColorAutomatic	: "Automaticky",
@@ -382,7 +393,7 @@
 DlgSelectName		: "Název",
 DlgSelectValue		: "Hodnota",
 DlgSelectSize		: "Velikost",
-DlgSelectLines		: "řádků",
+DlgSelectLines		: "Řádků",
 DlgSelectChkMulti	: "Povolit mnohonásobné výběry",
 DlgSelectOpAvail	: "Dostupná nastavení",
 DlgSelectOpText		: "Text",
@@ -417,7 +428,7 @@
 NumberedListProp	: "Vlastnosti číslovaného seznamu",
 DlgLstType			: "Typ",
 DlgLstTypeCircle	: "Kružnice",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Kruh",
 DlgLstTypeSquare	: "Čtverec",
 DlgLstTypeNumbers	: "Čísla (1, 2, 3)",
 DlgLstTypeLCase		: "Malá písmena (a, b, c)",
@@ -461,16 +472,17 @@
 DlgDocPreview		: "Náhled",
 
 // Templates Dialog
-Templates			: "Templates",	//MISSING
-DlgTemplatesTitle	: "Content Templates",	//MISSING
-DlgTemplatesSelMsg	: "Please select the template to open in the editor<br>(the actual contents will be lost):",	//MISSING
-DlgTemplatesLoading	: "Loading templates list. Please wait...",	//MISSING
-DlgTemplatesNoTpl	: "(No templates defined)",	//MISSING
+Templates			: "Šablony",
+DlgTemplatesTitle	: "Šablony obsahu",
+DlgTemplatesSelMsg	: "Prosím zvolte šablonu pro otevření v editoru<br>(aktuální obsah editoru bude ztracen):",
+DlgTemplatesLoading	: "Nahrávám přeheld šablon. Prosím čekejte...",
+DlgTemplatesNoTpl	: "(Není definována žádná šablona)",
 
 // About Dialog
 DlgAboutAboutTab	: "O aplikaci",
 DlgAboutBrowserInfoTab	: "Informace o prohlížeči",
+DlgAboutLicenseTab	: "Licence",
 DlgAboutVersion		: "verze",
-DlgAboutLicense		: "Licencováno pomocí GNU Lesser General Public License",
+DlgAboutLicense		: "Licencováno pod GNU Lesser General Public License",
 DlgAboutInfo		: "Více informací získáte na"
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/da.js 1.4.1.src/fckeditor/editor/lang/da.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/da.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/da.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -16,6 +16,7 @@
  * File Authors:
  * 		Jørgen Nordstrøm (jn@FirstWeb.dk)
  * 		Jesper Michelsen (jm@i-deVision.dk)
+ * 		Bo Brandt (bbr@dynamicweb.dk)
  */
 
 var FCKLang =
@@ -23,8 +24,8 @@
 // Language direction : "ltr" (left to right) or "rtl" (right to left).
 Dir					: "ltr",
 
-ToolbarCollapse		: "Sammenfold Værktøjskasse",
-ToolbarExpand		: "Udvid Værktøjskasse",
+ToolbarCollapse		: "Skjul værktøjslinier",
+ToolbarExpand		: "Vis værktøjslinier",
 
 // Toolbar Items and Context Menu
 Save				: "Gem",
@@ -33,27 +34,27 @@
 Cut					: "Klip",
 Copy				: "Kopier",
 Paste				: "Indsæt",
-PasteText			: "Indsæt som ren tekst",
+PasteText			: "Indsæt som ikke-formateret tekst",
 PasteWord			: "Indsæt fra Word",
 Print				: "Udskriv",
 SelectAll			: "Vælg alt",
-RemoveFormat		: "Slet formatering",
-InsertLinkLbl		: "Link",
-InsertLink			: "Indsæt/Rediger Link",
-RemoveLink			: "Slet Link",
-Anchor				: "Insert/Rediger Anker",
-InsertImageLbl		: "Indsæt Billed",
-InsertImage			: "Indsæt/Rediger Billed",
+RemoveFormat		: "Fjern formatering",
+InsertLinkLbl		: "Hyperlink",
+InsertLink			: "Indsæt/rediger hyperlink",
+RemoveLink			: "Fjern hyperlink",
+Anchor				: "Indsæt/rediger bogmærke",
+InsertImageLbl		: "Indsæt billede",
+InsertImage			: "Indsæt/rediger billede",
 InsertFlashLbl		: "Flash",
 InsertFlash			: "Indsæt/rediger Flash",
 InsertTableLbl		: "Table",
-InsertTable			: "Indsæt/Rediger Tabel",
+InsertTable			: "Indsæt/rediger tabel",
 InsertLineLbl		: "Linie",
-InsertLine			: "Indsæt horisontal Linie",
-InsertSpecialCharLbl: "Special Karakter",
-InsertSpecialChar	: "Indsæt Special Karakter",
+InsertLine			: "Indsæt vandret linie",
+InsertSpecialCharLbl: "Symbol",
+InsertSpecialChar	: "Indsæt symbol",
 InsertSmileyLbl		: "Smiley",
-InsertSmiley		: "Indsæt Smiley",
+InsertSmiley		: "Indsæt smiley",
 About				: "Om FCKeditor",
 Bold				: "Fed",
 Italic				: "Kursiv",
@@ -65,15 +66,15 @@
 CenterJustify		: "Centreret",
 RightJustify		: "Højrestillet",
 BlockJustify		: "Lige margener",
-DecreaseIndent		: "Forøg indrykning",
-IncreaseIndent		: "Formindsk indrykning",
+DecreaseIndent		: "Formindsk indrykning",
+IncreaseIndent		: "Forøg indrykning",
 Undo				: "Fortryd",
-Redo				: "Anuller fortryd",
-NumberedListLbl		: "Tal opstilling",
-NumberedList		: "Indsæt/Slet Tal opstilling",
-BulletedListLbl		: "Punkttegn opstilling",
-BulletedList		: "Indsæt/Slet Punkttegn opstilling",
-ShowTableBorders	: "Vis tabel kanter",
+Redo				: "Annuller fortryd",
+NumberedListLbl		: "Talopstilling",
+NumberedList		: "Indsæt/fjern talopstilling",
+BulletedListLbl		: "Punktopstilling",
+BulletedList		: "Indsæt/fjern punktopstilling",
+ShowTableBorders	: "Vis tabelkanter",
 ShowDetails			: "Vis detaljer",
 Style				: "Typografi",
 FontFormat			: "Formatering",
@@ -85,77 +86,87 @@
 Find				: "Søg",
 Replace				: "Erstat",
 SpellCheck			: "Stavekontrol",
-UniversalKeyboard	: "Universalt Tastatur",
+UniversalKeyboard	: "Universaltastatur",
+PageBreakLbl		: "Sidskift",
+PageBreak			: "Indsæt sideskift",
+
+Form			: "Indsæt formular",
+Checkbox		: "Indsæt afkrydsningsfelt",
+RadioButton		: "Indsæt alternativknap",
+TextField		: "Indsæt tekstfelt",
+Textarea		: "Indsæt tekstboks",
+HiddenField		: "Indsæt skjult felt",
+Button			: "Indsæt knap",
+SelectionField	: "Indsæt liste",
+ImageButton		: "Indsæt billedknap",
 
-Form			: "Indsæt Form",
-Checkbox		: "Indsæt Afkrydsningsboks",
-RadioButton		: "Indsæt Radioknap",
-TextField		: "Indsæt Tekstfelt",
-Textarea		: "Indsæt Tekstboks",
-HiddenField		: "Indsæt Skjultfelt",
-Button			: "Indsæt Knap",
-SelectionField	: "Indsæt Valgfelt",
-ImageButton		: "Indsæt Billedknap",
+FitWindow		: "Maksimer editor vinduet",
 
 // Context Menu
-EditLink			: "Rediger link",
+EditLink			: "Rediger hyperlink",
+CellCM				: "Celle",
+RowCM				: "Række",
+ColumnCM			: "Kolonne",
 InsertRow			: "Indsæt række",
-DeleteRows			: "Slet rækker",
+DeleteRows			: "Slet række",
 InsertColumn		: "Indsæt kolonne",
-DeleteColumns		: "Slet kolonner",
+DeleteColumns		: "Slet kolonne",
 InsertCell			: "Indsæt celle",
 DeleteCells			: "Slet celle",
 MergeCells			: "Flet celler",
-SplitCell			: "Opdel celler",
-CellProperties		: "Celle egenskaber",
-TableProperties		: "Tabel egenskaber",
-ImageProperties		: "Billed egenskaber",
-FlashProperties		: "Flash egenskaber",
-
-AnchorProp			: "Anker egenskaber",
-ButtonProp			: "Knap egenskaber",
-CheckboxProp		: "Afkrydsningsboks egenskaber",
-HiddenFieldProp		: "Skjultfelt egenskaber",
-RadioButtonProp		: "Radioknap egenskaber",
-ImageButtonProp		: "Billedknap egenskaber",
-TextFieldProp		: "Tekstfelt egenskaber",
-SelectionFieldProp	: "Valgfelt egenskaber",
-TextareaProp		: "Tekstboks egenskaber",
-FormProp			: "Form egenskaber",
+SplitCell			: "Opdel celle",
+TableDelete			: "Slet tabel",
+CellProperties		: "Egenskaber for celle",
+TableProperties		: "Egenskaber for tabel",
+ImageProperties		: "Egenskaber for billede",
+FlashProperties		: "Egenskaber for Flash",
+
+AnchorProp			: "Egenskaber for bogmærke",
+ButtonProp			: "Egenskaber for knap",
+CheckboxProp		: "Egenskaber for afkrydsningsfelt",
+HiddenFieldProp		: "Egenskaber for skjult felt",
+RadioButtonProp		: "Egenskaber for alternativknap",
+ImageButtonProp		: "Egenskaber for billedknap",
+TextFieldProp		: "Egenskaber for tekstfelt",
+SelectionFieldProp	: "Egenskaber for liste",
+TextareaProp		: "Egenskaber for tekstboks",
+FormProp			: "Egenskaber for formular",
 
-FontFormats			: "Normal;Formateret;Adresse;Overskrift 1;Overskrift 2;Overskrift 3;Overskrift 4;Overskrift 5;Overskrift 6",
+FontFormats			: "Normal;Formateret;Adresse;Overskrift 1;Overskrift 2;Overskrift 3;Overskrift 4;Overskrift 5;Overskrift 6;Normal (DIV)",
 
 // Alerts and Messages
-ProcessingXHTML		: "Behandler XHTML. Vent venligst...",
+ProcessingXHTML		: "Behandler XHTML...",
 Done				: "Færdig",
-PasteWordConfirm	: "Den tekst du forsøger at indsætte ser ud til at komme fra Word. Vil du rense teksten før den indsættes ?",
-NotCompatiblePaste	: "Denne kommando er tilgændelig i Internet Explorer 5.5 og senere. Vil du indsætte teksten uden at rense den ?",
-UnknownToolbarItem	: "Ukendt værktøjslinje objekt \"%1\"",
-UnknownCommand		: "Ukendt kommando navn \"%1\"",
-NotImplemented		: "Kommandoen er ikke implementeret",
-UnknownToolbarSet	: "Værktøjslinjen \"%1\" eksisterer ikke",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+PasteWordConfirm	: "Den tekst du forsøger at indsætte ser ud til at komme fra Word.<br>Vil du rense teksten før den indsættes?",
+NotCompatiblePaste	: "Denne kommando er tilgændelig i Internet Explorer 5.5 eller senere.<br>Vil du indsætte teksten uden at rense den ?",
+UnknownToolbarItem	: "Ukendt værktøjslinjeobjekt \"%1\"!",
+UnknownCommand		: "Ukendt kommandonavn \"%1\"!",
+NotImplemented		: "Kommandoen er ikke implementeret!",
+UnknownToolbarSet	: "Værktøjslinjen \"%1\" eksisterer ikke!",
+NoActiveX			: "Din browsers sikkerhedsindstillinger begrænser nogle af editorens muligheder.<br>Slå \"Kør ActiveX-objekter og plug-ins\" til, ellers vil du opleve fejl og manglende muligheder.",
+BrowseServerBlocked : "Browseren kunne ikke åbne de nødvendige ressourcer!<br>Slå pop-up blokering fra.",
+DialogBlocked		: "Dialogvinduet kunne ikke åbnes!<br>Slå pop-up blokering fra.",
 
 // Dialogs
 DlgBtnOK			: "OK",
-DlgBtnCancel		: "Anuller",
+DlgBtnCancel		: "Annuller",
 DlgBtnClose			: "Luk",
-DlgBtnBrowseServer	: "Gennemse Server",
+DlgBtnBrowseServer	: "Gennemse...",
 DlgAdvancedTag		: "Avanceret",
-DlgOpOther			: "&lt;Andet&gt;",
-DlgInfoTab			: "Info",
+DlgOpOther			: "<Andet>",
+DlgInfoTab			: "Generelt",
 DlgAlertUrl			: "Indtast URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;ikke sat&gt;",
+DlgGenNotSet		: "<intet valgt>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Tekstretning",
-DlgGenLangDirLtr	: "Venstre mod højre (LTR)",
-DlgGenLangDirRtl	: "Højre mod venstre (RTL)",
-DlgGenLangCode		: "Sprog kode",
-DlgGenAccessKey		: "Adgangsnøgle",
+DlgGenLangDirLtr	: "Fra venstre mod højre (LTR)",
+DlgGenLangDirRtl	: "Fra højre mod venstre (RTL)",
+DlgGenLangCode		: "Sprogkode",
+DlgGenAccessKey		: "Genvejstast",
 DlgGenName			: "Navn",
-DlgGenTabIndex		: "Tabulator Indeks",
+DlgGenTabIndex		: "Tabulator indeks",
 DlgGenLongDescr		: "Udvidet beskrivelse",
 DlgGenClass			: "Typografiark",
 DlgGenTitle			: "Titel",
@@ -164,9 +175,9 @@
 DlgGenStyle			: "Typografi",
 
 // Image Dialog
-DlgImgTitle			: "Billed egenskaber",
-DlgImgInfoTab		: "Billed info",
-DlgImgBtnUpload		: "Send til serveren",
+DlgImgTitle			: "Egenskaber for billede",
+DlgImgInfoTab		: "Generelt",
+DlgImgBtnUpload		: "Upload",
 DlgImgURL			: "URL",
 DlgImgUpload		: "Upload",
 DlgImgAlt			: "Alternativ tekst",
@@ -175,24 +186,24 @@
 DlgImgLockRatio		: "Lås størrelsesforhold",
 DlgBtnResetSize		: "Nulstil størrelse",
 DlgImgBorder		: "Ramme",
-DlgImgHSpace		: "HMargin",
-DlgImgVSpace		: "VMargin",
+DlgImgHSpace		: "HMargen",
+DlgImgVSpace		: "VMargen",
 DlgImgAlign			: "Justering",
 DlgImgAlignLeft		: "Venstre",
-DlgImgAlignAbsBottom: "Abs bund",
-DlgImgAlignAbsMiddle: "Abs Midte",
-DlgImgAlignBaseline	: "Bundlinje",
-DlgImgAlignBottom	: "Bund",
-DlgImgAlignMiddle	: "Midte",
+DlgImgAlignAbsBottom: "Absolut nederst",
+DlgImgAlignAbsMiddle: "Absolut centreret",
+DlgImgAlignBaseline	: "Grundlinje",
+DlgImgAlignBottom	: "Nederst",
+DlgImgAlignMiddle	: "Centreret",
 DlgImgAlignRight	: "Højre",
-DlgImgAlignTextTop	: "Tekst top",
-DlgImgAlignTop		: "Top",
+DlgImgAlignTextTop	: "Toppen af teksten",
+DlgImgAlignTop		: "Øverst",
 DlgImgPreview		: "Vis eksempel",
 DlgImgAlertUrl		: "Indtast stien til billedet",
-DlgImgLinkTab		: "Link",
+DlgImgLinkTab		: "Hyperlink",
 
 // Flash Dialog
-DlgFlashTitle		: "Flash egenskaber",
+DlgFlashTitle		: "Egenskaber for Flash",
 DlgFlashChkPlay		: "Automatisk afspilning",
 DlgFlashChkLoop		: "Gentagelse",
 DlgFlashChkMenu		: "Vis Flash menu",
@@ -202,73 +213,73 @@
 DlgFlashScaleFit	: "Tilpas størrelse",
 
 // Link Dialog
-DlgLnkWindowTitle	: "Link",
-DlgLnkInfoTab		: "Link info",
+DlgLnkWindowTitle	: "Egenskaber for hyperlink",
+DlgLnkInfoTab		: "Generelt",
 DlgLnkTargetTab		: "Mål",
 
-DlgLnkType			: "Link type",
+DlgLnkType			: "Hyperlink type",
 DlgLnkTypeURL		: "URL",
-DlgLnkTypeAnchor	: "Anker på denne side",
-DlgLnkTypeEMail		: "Email",
+DlgLnkTypeAnchor	: "Bogmærke på denne side",
+DlgLnkTypeEMail		: "E-mail",
 DlgLnkProto			: "Protokol",
-DlgLnkProtoOther	: "&lt;anden&gt;",
+DlgLnkProtoOther	: "<anden>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Vælg et anker",
 DlgLnkAnchorByName	: "Efter anker navn",
 DlgLnkAnchorById	: "Efter element Id",
-DlgLnkNoAnchors		: "&lt;Der er ingen ankre tilgængelige i dette dokument&gt;",
-DlgLnkEMail			: "Email Adresse",
+DlgLnkNoAnchors		: "<Ingen bogmærker dokumentet>",
+DlgLnkEMail			: "E-mailadresse",
 DlgLnkEMailSubject	: "Emne",
-DlgLnkEMailBody		: "Besked",
+DlgLnkEMailBody		: "Brødtekst",
 DlgLnkUpload		: "Upload",
-DlgLnkBtnUpload		: "Send til serveren",
+DlgLnkBtnUpload		: "Upload",
 
 DlgLnkTarget		: "Mål",
-DlgLnkTargetFrame	: "&lt;ramme&gt;",
-DlgLnkTargetPopup	: "&lt;popup vindue&gt;",
+DlgLnkTargetFrame	: "<ramme>",
+DlgLnkTargetPopup	: "<popup vindue>",
 DlgLnkTargetBlank	: "Nyt vindue (_blank)",
-DlgLnkTargetParent	: "Overliggende vindue (_parent)",
+DlgLnkTargetParent	: "Overordnet ramme (_parent)",
 DlgLnkTargetSelf	: "Samme vindue (_self)",
-DlgLnkTargetTop		: "Øverste vindue (_top)",
-DlgLnkTargetFrameName	: "Visnings vinduets navn",
-DlgLnkPopWinName	: "Popup vinduets navn",
-DlgLnkPopWinFeat	: "Popup vinduets egenskaber",
+DlgLnkTargetTop		: "Hele vinduet (_top)",
+DlgLnkTargetFrameName	: "Destinationsvinduets navn",
+DlgLnkPopWinName	: "Pop-up vinduets navn",
+DlgLnkPopWinFeat	: "Egenskaber for pop-up",
 DlgLnkPopResize		: "Skalering",
-DlgLnkPopLocation	: "Lokationslinje",
+DlgLnkPopLocation	: "Adresselinje",
 DlgLnkPopMenu		: "Menulinje",
 DlgLnkPopScroll		: "Scrollbars",
 DlgLnkPopStatus		: "Statuslinje",
 DlgLnkPopToolbar	: "Værktøjslinje",
 DlgLnkPopFullScrn	: "Fuld skærm (IE)",
-DlgLnkPopDependent	: "Afhængig (Netscape)",
+DlgLnkPopDependent	: "Koblet/dependent (Netscape)",
 DlgLnkPopWidth		: "Bredde",
 DlgLnkPopHeight		: "Højde",
 DlgLnkPopLeft		: "Position fra venstre",
 DlgLnkPopTop		: "Position fra toppen",
 
-DlnLnkMsgNoUrl		: "Indtast link URL",
-DlnLnkMsgNoEMail	: "Indtast e-mail addressen",
-DlnLnkMsgNoAnchor	: "Vælg Anker",
+DlnLnkMsgNoUrl		: "Indtast hyperlink URL!",
+DlnLnkMsgNoEMail	: "Indtast e-mailaddresse!",
+DlnLnkMsgNoAnchor	: "Vælg bogmærke!",
 
 // Color Dialog
 DlgColorTitle		: "Vælg farve",
-DlgColorBtnClear	: "Slet alt",
-DlgColorHighlight	: "Marker",
-DlgColorSelected	: "valgt",
+DlgColorBtnClear	: "Nulstil",
+DlgColorHighlight	: "Markeret",
+DlgColorSelected	: "Valgt",
 
 // Smiley Dialog
-DlgSmileyTitle		: "Insæt en smiley",
+DlgSmileyTitle		: "Vælg smiley",
 
 // Special Character Dialog
-DlgSpecialCharTitle	: "Vælg specialkarakter",
+DlgSpecialCharTitle	: "Vælg symbol",
 
 // Table Dialog
-DlgTableTitle		: "Tabel egenskaber",
+DlgTableTitle		: "Egenskaber for tabel",
 DlgTableRows		: "Rækker",
 DlgTableColumns		: "Kolonner",
-DlgTableBorder		: "Ramme størrelse",
+DlgTableBorder		: "Rammebredde",
 DlgTableAlign		: "Justering",
-DlgTableAlignNotSet	: "<Ikke sat>",
+DlgTableAlignNotSet	: "<intet valgt>",
 DlgTableAlignLeft	: "Venstrestillet",
 DlgTableAlignCenter	: "Centreret",
 DlgTableAlignRight	: "Højrestillet",
@@ -276,45 +287,46 @@
 DlgTableWidthPx		: "pixels",
 DlgTableWidthPc		: "procent",
 DlgTableHeight		: "Højde",
-DlgTableCellSpace	: "Afstand mellem celler",
-DlgTableCellPad		: "Celle margin",
+DlgTableCellSpace	: "Celleafstand",
+DlgTableCellPad		: "Cellemargen",
 DlgTableCaption		: "Titel",
+DlgTableSummary		: "Resume",
 
 // Table Cell Dialog
-DlgCellTitle		: "Celle egenskaber",
+DlgCellTitle		: "Egenskaber for celle",
 DlgCellWidth		: "Bredde",
 DlgCellWidthPx		: "pixels",
 DlgCellWidthPc		: "procent",
 DlgCellHeight		: "Højde",
 DlgCellWordWrap		: "Orddeling",
-DlgCellWordWrapNotSet	: "<Ikke sat>",
+DlgCellWordWrapNotSet	: "<intet valgt>",
 DlgCellWordWrapYes	: "Ja",
 DlgCellWordWrapNo	: "Nej",
-DlgCellHorAlign		: "Horisontal justering",
-DlgCellHorAlignNotSet	: "<Ikke sat>",
+DlgCellHorAlign		: "Vandret justering",
+DlgCellHorAlignNotSet	: "<intet valgt>",
 DlgCellHorAlignLeft	: "Venstrestillet",
 DlgCellHorAlignCenter	: "Centreret",
 DlgCellHorAlignRight: "Højrestillet",
-DlgCellVerAlign		: "Vertikal Justering",
-DlgCellVerAlignNotSet	: "<Ikke sat>",
-DlgCellVerAlignTop	: "Top",
-DlgCellVerAlignMiddle	: "Midte",
-DlgCellVerAlignBottom	: "Bund",
-DlgCellVerAlignBaseline	: "Bundlinje",
-DlgCellRowSpan		: "Antal rækker cellen spænder over",
-DlgCellCollSpan		: "Antal kolonner cellen spænder over",
+DlgCellVerAlign		: "Lodret justering",
+DlgCellVerAlignNotSet	: "<intet valgt>",
+DlgCellVerAlignTop	: "Øverst",
+DlgCellVerAlignMiddle	: "Centreret",
+DlgCellVerAlignBottom	: "Nederst",
+DlgCellVerAlignBaseline	: "Grundlinje",
+DlgCellRowSpan		: "Højde i antal rækker",
+DlgCellCollSpan		: "Bredde i antal kolonner",
 DlgCellBackColor	: "Baggrundsfarve",
-DlgCellBorderColor	: "rammefarve",
+DlgCellBorderColor	: "Rammefarve",
 DlgCellBtnSelect	: "Vælg...",
 
 // Find Dialog
 DlgFindTitle		: "Find",
 DlgFindFindBtn		: "Find",
-DlgFindNotFoundMsg	: "Den angivne tekst blev ikke fundet",
+DlgFindNotFoundMsg	: "Søgeteksten blev ikke fundet!",
 
 // Replace Dialog
 DlgReplaceTitle			: "Erstat",
-DlgReplaceFindLbl		: "Find:",
+DlgReplaceFindLbl		: "Søg efter:",
 DlgReplaceReplaceLbl	: "Erstat med:",
 DlgReplaceCaseChk		: "Forskel på store og små bogstaver",
 DlgReplaceReplaceBtn	: "Erstat",
@@ -322,50 +334,49 @@
 DlgReplaceWordChk		: "Kun hele ord",
 
 // Paste Operations / Dialog
-PasteErrorPaste	: "Din browsers sikkerhedsindstillinger tillader ikke editoren at indsætte tekst automatisk. Brug i stedet tastaturet til at indsætte teksten (Ctrl+V).",
-PasteErrorCut	: "Din browsers sikkerhedsindstillinger tillader ikke editoren at klippe tekst automatisk. Brug i stedet tastaturet til at klippe teksten (Ctrl+X).",
-PasteErrorCopy	: "Din browsers sikkerhedsindstillinger tillader ikke editoren at kopiere tekst automatisk. Brug i stedet tastaturet til at kopiere teksten (Ctrl+V).",
+PasteErrorPaste	: "Din browsers sikkerhedsindstillinger tillader ikke editoren at indsætte tekst automatisk!<br>Brug i stedet tastaturet til at indsætte teksten (Ctrl+V).",
+PasteErrorCut	: "Din browsers sikkerhedsindstillinger tillader ikke editoren at klippe tekst automatisk!<br>Brug i stedet tastaturet til at klippe teksten (Ctrl+X).",
+PasteErrorCopy	: "Din browsers sikkerhedsindstillinger tillader ikke editoren at kopiere tekst automatisk!<br>Brug i stedet tastaturet til at kopiere teksten (Ctrl+C).",
 
-PasteAsText		: "Indsæt som ren tekst",
+PasteAsText		: "Indsæt som ikke-formateret tekst",
 PasteFromWord	: "Indsæt fra Word",
 
-DlgPasteMsg2	: "Indsæt i boksen herunder (<STRONG>Ctrl+V</STRONG>) og klik <STRONG>OK</STRONG>.",
+DlgPasteMsg2	: "Indsæt i feltet herunder (<STRONG>Ctrl+V</STRONG>) og klik <STRONG>OK</STRONG>.",
 DlgPasteIgnoreFont		: "Ignorer font definitioner",
-DlgPasteRemoveStyles	: "Fjern typografi definitioner",
+DlgPasteRemoveStyles	: "Ignorer typografi",
 DlgPasteCleanBox		: "Slet indhold",
 
-
 // Color Picker
 ColorAutomatic	: "Automatisk",
 ColorMoreColors	: "Flere farver...",
 
 // Document Properties
-DocProps		: "Dokument egenskaber",
+DocProps		: "Egenskaber for dokument",
 
 // Anchor Dialog
-DlgAnchorTitle		: "Anker egenskaber",
-DlgAnchorName		: "Anker navn",
-DlgAnchorErrorName	: "Indtast Anker navn",
+DlgAnchorTitle		: "Egenskaber for bogmærke",
+DlgAnchorName		: "Bogmærke navn",
+DlgAnchorErrorName	: "Indtast bogmærke navn!",
 
 // Speller Pages Dialog
-DlgSpellNotInDic		: "Findes ikke i ordbogen",
-DlgSpellChangeTo		: "Ændre til",
-DlgSpellBtnIgnore		: "Ignorere",
-DlgSpellBtnIgnoreAll	: "Ignorere alle",
-DlgSpellBtnReplace		: "Udskift",
-DlgSpellBtnReplaceAll	: "Udskift alle",
+DlgSpellNotInDic		: "Ikke i ordbogen",
+DlgSpellChangeTo		: "Forslag",
+DlgSpellBtnIgnore		: "Ignorer",
+DlgSpellBtnIgnoreAll	: "Ignorer alle",
+DlgSpellBtnReplace		: "Erstat",
+DlgSpellBtnReplaceAll	: "Erstat alle",
 DlgSpellBtnUndo			: "Tilbage",
-DlgSpellNoSuggestions	: "- Intet forslag -",
+DlgSpellNoSuggestions	: "- ingen forslag -",
 DlgSpellProgress		: "Stavekontrolen arbejder...",
 DlgSpellNoMispell		: "Stavekontrol færdig: Ingen fejl fundet",
 DlgSpellNoChanges		: "Stavekontrol færdig: Ingen ord ændret",
 DlgSpellOneChange		: "Stavekontrol færdig: Et ord ændret",
 DlgSpellManyChanges		: "Stavekontrol færdig: %1 ord ændret",
 
-IeSpellDownload			: "Stavekontrol ikke installeret. Vil du hente den nu?",
+IeSpellDownload			: "Stavekontrol ikke installeret.<br>Vil du hente den nu?",
 
 // Button Dialog
-DlgButtonText	: "Tekst (Værdi)",
+DlgButtonText	: "Tekst",
 DlgButtonType	: "Type",
 
 // Checkbox and Radio Button Dialogs
@@ -384,77 +395,77 @@
 DlgSelectSize		: "Størrelse",
 DlgSelectLines		: "linier",
 DlgSelectChkMulti	: "Tillad flere valg",
-DlgSelectOpAvail	: "Valgmulighedder",
+DlgSelectOpAvail	: "Valgmuligheder",
 DlgSelectOpText		: "Tekst",
 DlgSelectOpValue	: "Værdi",
 DlgSelectBtnAdd		: "Tilføj",
-DlgSelectBtnModify	: "Ændre",
+DlgSelectBtnModify	: "Rediger",
 DlgSelectBtnUp		: "Op",
 DlgSelectBtnDown	: "Ned",
-DlgSelectBtnSetValue : "Sæt som udvalgt",
+DlgSelectBtnSetValue : "Sæt som valgt",
 DlgSelectBtnDelete	: "Slet",
 
 // Textarea Dialog
 DlgTextareaName	: "Navn",
-DlgTextareaCols	: "Kolonne",
-DlgTextareaRows	: "Række",
+DlgTextareaCols	: "Kolonner",
+DlgTextareaRows	: "Rækker",
 
 // Text Field Dialog
 DlgTextName			: "Navn",
 DlgTextValue		: "Værdi",
-DlgTextCharWidth	: "Synligt antal bogstaver",
-DlgTextMaxChars		: "Maximum antal bogstaver",
+DlgTextCharWidth	: "Bredde (tegn)",
+DlgTextMaxChars		: "Max antal tegn",
 DlgTextType			: "Type",
 DlgTextTypeText		: "Tekst",
-DlgTextTypePass		: "Kodeord",
+DlgTextTypePass		: "Adgangskode",
 
 // Hidden Field Dialog
 DlgHiddenName	: "Navn",
 DlgHiddenValue	: "Værdi",
 
 // Bulleted List Dialog
-BulletedListProp	: "Punkttegnopstilling egenskaber",
-NumberedListProp	: "Talopstilling egenskaber",
+BulletedListProp	: "Egenskaber for punktopstilling",
+NumberedListProp	: "Egenskaber for talopstilling",
 DlgLstType			: "Type",
 DlgLstTypeCircle	: "Cirkel",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Udfyldt cirkel",
 DlgLstTypeSquare	: "Firkant",
 DlgLstTypeNumbers	: "Nummereret (1, 2, 3)",
 DlgLstTypeLCase		: "Små bogstaver (a, b, c)",
 DlgLstTypeUCase		: "Store bogstaver (A, B, C)",
-DlgLstTypeSRoman	: "Små Romertal (i, ii, iii)",
-DlgLstTypeLRoman	: "Store Romertal (I, II, III)",
+DlgLstTypeSRoman	: "Små romertal (i, ii, iii)",
+DlgLstTypeLRoman	: "Store romertal (I, II, III)",
 
 // Document Properties Dialog
 DlgDocGeneralTab	: "Generelt",
 DlgDocBackTab		: "Baggrund",
-DlgDocColorsTab		: "Farver og Margin",
-DlgDocMetaTab		: "Meta Information",
+DlgDocColorsTab		: "Farver og margen",
+DlgDocMetaTab		: "Metadata",
 
-DlgDocPageTitle		: "Side Titel",
+DlgDocPageTitle		: "Sidetitel",
 DlgDocLangDir		: "Sprog",
-DlgDocLangDirLTR	: "Venstre Til Højre (LTR)",
-DlgDocLangDirRTL	: "Højre Til Venstre (RTL)",
+DlgDocLangDirLTR	: "Fra venstre mod højre (LTR)",
+DlgDocLangDirRTL	: "Fra højre mod venstre (RTL)",
 DlgDocLangCode		: "Landekode",
-DlgDocCharSet		: "Karakter sæt kode",
-DlgDocCharSetOther	: "Anden karakter sæt kode",
+DlgDocCharSet		: "Tegnsæt kode",
+DlgDocCharSetOther	: "Anden tegnsæt kode",
 
-DlgDocDocType		: "Dokument type kategori",
-DlgDocDocTypeOther	: "Anden dokument type kategori",
+DlgDocDocType		: "Dokumenttype kategori",
+DlgDocDocTypeOther	: "Anden dokumenttype kategori",
 DlgDocIncXHTML		: "Inkludere XHTML deklartion",
 DlgDocBgColor		: "Baggrundsfarve",
-DlgDocBgImage		: "Baggrundsbilled URL",
-DlgDocBgNoScroll	: "Ikke scrollbar baggrund",
+DlgDocBgImage		: "Baggrundsbillede URL",
+DlgDocBgNoScroll	: "Fastlåst baggrund",
 DlgDocCText			: "Tekst",
-DlgDocCLink			: "Link",
-DlgDocCVisited		: "Besøgt link",
-DlgDocCActive		: "Aktivt link",
-DlgDocMargins		: "Side margin",
-DlgDocMaTop			: "Top",
+DlgDocCLink			: "Hyperlink",
+DlgDocCVisited		: "Besøgt hyperlink",
+DlgDocCActive		: "Aktivt hyperlink",
+DlgDocMargins		: "Sidemargen",
+DlgDocMaTop			: "Øverst",
 DlgDocMaLeft		: "Venstre",
 DlgDocMaRight		: "Højre",
-DlgDocMaBottom		: "Bund",
-DlgDocMeIndex		: "Dokument index nøgleord (komma sepereret)",
+DlgDocMaBottom		: "Nederst",
+DlgDocMeIndex		: "Dokument index nøgleord (kommasepareret)",
 DlgDocMeDescr		: "Dokument beskrivelse",
 DlgDocMeAuthor		: "Forfatter",
 DlgDocMeCopy		: "Copyright",
@@ -463,13 +474,14 @@
 // Templates Dialog
 Templates			: "Skabeloner",
 DlgTemplatesTitle	: "Indholdsskabeloner",
-DlgTemplatesSelMsg	: "Vælg den skabelon, som skal åbnes i editoren<br>(Nuværende indhold vil blive overskrevet):",
-DlgTemplatesLoading	: "Henter liste over skabeloner. Vent venligst...",
-DlgTemplatesNoTpl	: "(Der er ikke defineret nogen skabelon)",
+DlgTemplatesSelMsg	: "Vælg den skabelon, som skal åbnes i editoren.<br>(Nuværende indhold vil blive overskrevet!):",
+DlgTemplatesLoading	: "Henter liste over skabeloner...",
+DlgTemplatesNoTpl	: "(Der er ikke defineret nogen skabelon!)",
 
 // About Dialog
-DlgAboutAboutTab	: "About",
-DlgAboutBrowserInfoTab	: "Browser Info",
+DlgAboutAboutTab	: "Om",
+DlgAboutBrowserInfoTab	: "Generelt",
+DlgAboutLicenseTab	: "Licens",
 DlgAboutVersion		: "version",
 DlgAboutLicense		: "Licens under vilkår for GNU Lesser General Public License",
 DlgAboutInfo		: "For yderlig information gå til"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/de.js 1.4.1.src/fckeditor/editor/lang/de.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/de.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/de.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -23,8 +23,8 @@
 // Language direction : "ltr" (left to right) or "rtl" (right to left).
 Dir					: "ltr",
 
-ToolbarCollapse		: "Toolbar einklappen",
-ToolbarExpand		: "Toolbar ausklappen",
+ToolbarCollapse		: "Symbolleiste einklappen",
+ToolbarExpand		: "Symbolleiste ausklappen",
 
 // Toolbar Items and Context Menu
 Save				: "Speichern",
@@ -34,7 +34,7 @@
 Copy				: "Kopieren",
 Paste				: "Einfügen",
 PasteText			: "aus Textdatei einfügen",
-PasteWord			: "aus Word einfügen",
+PasteWord			: "aus MS-Word einfügen",
 Print				: "Drucken",
 SelectAll			: "Alles auswählen",
 RemoveFormat		: "Formatierungen entfernen",
@@ -77,15 +77,17 @@
 ShowDetails			: "Zeige Details",
 Style				: "Style",
 FontFormat			: "Format",
-Font				: "Font",
+Font				: "Schriftart",
 FontSize			: "Size",
 TextColor			: "Textfarbe",
 BGColor				: "Hintergrundfarbe",
 Source				: "Quellcode",
 Find				: "Finden",
 Replace				: "Ersetzen",
-SpellCheck			: "Rechtschreibprü:fung",
+SpellCheck			: "Rechtschreibprüfung",
 UniversalKeyboard	: "Universal-Tastatur",
+PageBreakLbl		: "Seitenumbruch",
+PageBreak			: "Seitenumbruch einfügen",
 
 Form			: "Formular",
 Checkbox		: "Checkbox",
@@ -97,8 +99,13 @@
 SelectionField	: "Auswahlfeld",
 ImageButton		: "Bildbutton",
 
+FitWindow		: "Editor maximieren",
+
 // Context Menu
 EditLink			: "Link editieren",
+CellCM				: "Zelle",
+RowCM				: "Zeile",
+ColumnCM			: "Spalte",
 InsertRow			: "Zeile einfügen",
 DeleteRows			: "Zeile entfernen",
 InsertColumn		: "Spalte einfügen",
@@ -107,6 +114,7 @@
 DeleteCells			: "Zelle löschen",
 MergeCells			: "Zellen vereinen",
 SplitCell			: "Zelle teilen",
+TableDelete			: "Tabelle löschen",
 CellProperties		: "Zellen Eigenschaften",
 TableProperties		: "Tabellen Eigenschaften",
 ImageProperties		: "Bild Eigenschaften",
@@ -116,11 +124,11 @@
 ButtonProp			: "Button Eigenschaften",
 CheckboxProp		: "Checkbox Eigenschaften",
 HiddenFieldProp		: "Verstecktes Feld Eigenschaften",
-RadioButtonProp		: "Radiobutton Eigenschaften",
+RadioButtonProp		: "Optionsfeld Eigenschaften",
 ImageButtonProp		: "Bildbutton Eigenschaften",
-TextFieldProp		: "Textfeld einzeilig Eigenschaften",
+TextFieldProp		: "Textfeld (einzeilig) Eigenschaften",
 SelectionFieldProp	: "Auswahlfeld Eigenschaften",
-TextareaProp		: "Textfeld mehrzeilig Eigenschaften",
+TextareaProp		: "Textfeld (mehrzeilig) Eigenschaften",
 FormProp			: "Formular Eigenschaften",
 
 FontFormats			: "Normal;Formatiert;Addresse;Überschrift 1;Überschrift 2;Überschrift 3;Überschrift 4;Überschrift 5;Überschrift 6",
@@ -128,13 +136,15 @@
 // Alerts and Messages
 ProcessingXHTML		: "Bearbeite XHTML. Bitte warten...",
 Done				: "Fertig",
-PasteWordConfirm	: "Der Text, den Sie einfügen Möchten, scheint aus Word kopiert zu sein. Möchten Sie ihn zuvor bereinigen lassen?",
+PasteWordConfirm	: "Der Text, den Sie einfügen möchten, scheint aus MS-Word kopiert zu sein. Möchten Sie ihn zuvor bereinigen lassen?",
 NotCompatiblePaste	: "Diese Funktion steht nur im Internet Explorer ab Version 5.5 zur Verfügung. Möchten Sie den Text unbereinigt einfügen?",
 UnknownToolbarItem	: "Unbekanntes Menüleisten-Objekt \"%1\"",
 UnknownCommand		: "Unbekannter Befehl \"%1\"",
 NotImplemented		: "Befehl nicht implementiert",
 UnknownToolbarSet	: "Menüleiste \"%1\" existiert nicht",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Die Sicherheitseinstellungen Ihres Browsers beschränken evtl. einige Funktionen des Editors. Aktivieren Sie die Option \"ActiveX-Steuerelemente und Plugins ausführen\" in den Sicherheitseinstellungen, um diese Funktionen nutzen zu können",
+BrowseServerBlocked : "Ein Auswahlfenster konnte nicht geöffnet werden. Stellen Sie sicher, das alle Popup-Blocker ausgeschaltet sind.",
+DialogBlocked		: "Das Dialog-Fenster konnte nicht geöffnet werden. Stellen Sie sicher, das alle Popup-Blocker ausgeschaltet sind.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -142,12 +152,12 @@
 DlgBtnClose			: "Schließen",
 DlgBtnBrowseServer	: "Server durchsuchen",
 DlgAdvancedTag		: "Erweitert",
-DlgOpOther			: "&lt;andere&gt;",
+DlgOpOther			: "<andere>",
 DlgInfoTab			: "Info",
 DlgAlertUrl			: "Bitte tragen Sie die URL ein",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt; nichts &gt;",
+DlgGenNotSet		: "< nichts >",
 DlgGenId			: "ID",
 DlgGenLangDir		: "Schreibrichtung",
 DlgGenLangDirLtr	: "Links nach Rechts (LTR)",
@@ -172,11 +182,11 @@
 DlgImgAlt			: "Alternativer Text",
 DlgImgWidth			: "Breite",
 DlgImgHeight		: "Höhe",
-DlgImgLockRatio		: "Größenverhaeltniss beibehalten",
-DlgBtnResetSize		: "Größe zuruecksetzen",
+DlgImgLockRatio		: "Größenverhältniss beibehalten",
+DlgBtnResetSize		: "Größe zurücksetzen",
 DlgImgBorder		: "Rahmen",
-DlgImgHSpace		: "H-Freiraum",
-DlgImgVSpace		: "V-Freiraum",
+DlgImgHSpace		: "H-Abstand",
+DlgImgVSpace		: "V-Abstand",
 DlgImgAlign			: "Ausrichtung",
 DlgImgAlignLeft		: "Links",
 DlgImgAlignAbsBottom: "Abs Unten",
@@ -195,7 +205,7 @@
 DlgFlashTitle		: "Flash Eigenschaften",
 DlgFlashChkPlay		: "autom. Abspielen",
 DlgFlashChkLoop		: "Endlosschleife",
-DlgFlashChkMenu		: "Aktiviere Flash Menü",
+DlgFlashChkMenu		: "Flash-Menü aktivieren",
 DlgFlashScale		: "Skalierung",
 DlgFlashScaleAll	: "Alles anzeigen",
 DlgFlashScaleNoBorder	: "ohne Rand",
@@ -211,33 +221,33 @@
 DlgLnkTypeAnchor	: "Anker in dieser Seite",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Protokoll",
-DlgLnkProtoOther	: "&lt;anderes&gt;",
+DlgLnkProtoOther	: "<anderes>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Anker auswählen",
 DlgLnkAnchorByName	: "nach Anker Name",
 DlgLnkAnchorById	: "nach Element Id",
-DlgLnkNoAnchors		: "&lt;keine Anker im Dokument vorhanden&gt;",
+DlgLnkNoAnchors		: "<keine Anker im Dokument vorhanden>",
 DlgLnkEMail			: "E-Mail Addresse",
 DlgLnkEMailSubject	: "Betreffzeile",
 DlgLnkEMailBody		: "Nachrichtentext",
 DlgLnkUpload		: "Upload",
-DlgLnkBtnUpload		: "Uum Server senden",
+DlgLnkBtnUpload		: "Zum Server senden",
 
 DlgLnkTarget		: "Zielseite",
-DlgLnkTargetFrame	: "&lt;Frame&gt;",
-DlgLnkTargetPopup	: "&lt;Pop-up Fenster&gt;",
+DlgLnkTargetFrame	: "<Frame>",
+DlgLnkTargetPopup	: "<Pop-up Fenster>",
 DlgLnkTargetBlank	: "Neues Fenster (_blank)",
 DlgLnkTargetParent	: "Oberes Fenster (_parent)",
 DlgLnkTargetSelf	: "Gleiches Fenster (_self)",
 DlgLnkTargetTop		: "Oberstes Fenster (_top)",
-DlgLnkTargetFrameName	: "Ziel-Frame Name",
+DlgLnkTargetFrameName	: "Ziel-Fenster Name",
 DlgLnkPopWinName	: "Pop-up Fenster Name",
 DlgLnkPopWinFeat	: "Pop-up Fenster Eigenschaften",
 DlgLnkPopResize		: "Vergrößerbar",
 DlgLnkPopLocation	: "Adress-Leiste",
 DlgLnkPopMenu		: "Menü-Leiste",
-DlgLnkPopScroll		: "Scroll-Leisten",
-DlgLnkPopStatus		: "Status-Leiste",
+DlgLnkPopScroll		: "Rollbalken",
+DlgLnkPopStatus		: "Statusleiste",
 DlgLnkPopToolbar	: "Werkzeugleiste",
 DlgLnkPopFullScrn	: "Vollbild (IE)",
 DlgLnkPopDependent	: "Abhängig (Netscape)",
@@ -248,7 +258,7 @@
 
 DlnLnkMsgNoUrl		: "Bitte geben Sie die Link-URL an",
 DlnLnkMsgNoEMail	: "Bitte geben Sie e-Mail Adresse an",
-DlnLnkMsgNoAnchor	: "Bitte waehlen Sie einen Anker aus",
+DlnLnkMsgNoAnchor	: "Bitte wählen Sie einen Anker aus",
 
 // Color Dialog
 DlgColorTitle		: "Farbauswahl",
@@ -278,7 +288,8 @@
 DlgTableHeight		: "Höhe",
 DlgTableCellSpace	: "Zellenabstand außen",
 DlgTableCellPad		: "Zellenabstand innen",
-DlgTableCaption		: "Üeberschrift",
+DlgTableCaption		: "Überschrift",
+DlgTableSummary		: "Inhaltsübersicht",
 
 // Table Cell Dialog
 DlgCellTitle		: "Zellen-Eigenschaften",
@@ -287,20 +298,20 @@
 DlgCellWidthPc		: "%",
 DlgCellHeight		: "Höhe",
 DlgCellWordWrap		: "Umbruch",
-DlgCellWordWrapNotSet	: "&lt;nichts&gt;",
+DlgCellWordWrapNotSet	: "<nichts>",
 DlgCellWordWrapYes	: "Ja",
 DlgCellWordWrapNo	: "Nein",
 DlgCellHorAlign		: "Horizontale Ausrichtung",
-DlgCellHorAlignNotSet	: "&lt;nichts&gt;",
+DlgCellHorAlignNotSet	: "<nichts>",
 DlgCellHorAlignLeft	: "Links",
 DlgCellHorAlignCenter	: "Zentriert",
 DlgCellHorAlignRight: "Rechts",
 DlgCellVerAlign		: "Vertikale Ausrichtung",
-DlgCellVerAlignNotSet	: "&lt;nichts&gt;",
+DlgCellVerAlignNotSet	: "<nichts>",
 DlgCellVerAlignTop	: "Oben",
 DlgCellVerAlignMiddle	: "Mitte",
 DlgCellVerAlignBottom	: "Unten",
-DlgCellVerAlignBaseline	: "Baseline",
+DlgCellVerAlignBaseline	: "Grundlinie",
 DlgCellRowSpan		: "Zeilen zusammenfassen",
 DlgCellCollSpan		: "Spalten zusammenfassen",
 DlgCellBackColor	: "Hintergrundfarbe",
@@ -310,7 +321,7 @@
 // Find Dialog
 DlgFindTitle		: "Finden",
 DlgFindFindBtn		: "Finden",
-DlgFindNotFoundMsg	: "Der Suchtext wurde nicht gefunden.",
+DlgFindNotFoundMsg	: "Der gesuchte Text wurde nicht gefunden.",
 
 // Replace Dialog
 DlgReplaceTitle			: "Ersetzen",
@@ -322,9 +333,9 @@
 DlgReplaceWordChk		: "Nur ganze Worte suchen",
 
 // Paste Operations / Dialog
-PasteErrorPaste	: "Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch einzufügen. Bitte benutzen Sie die System-Zwischenablage ueber STRG-C (kopieren) und STRG-V (einfügen).",
-PasteErrorCut	: "Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage ueber STRG-X (ausschneiden) und STRG-V (einfügen).",
-PasteErrorCopy	: "Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage ueber STRG-C (kopieren).",
+PasteErrorPaste	: "Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch einzufügen. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren) und STRG-V (einfügen).",
+PasteErrorCut	: "Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).",
+PasteErrorCopy	: "Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).",
 
 PasteAsText		: "Als Text einfügen",
 PasteFromWord	: "Aus Word einfügen",
@@ -334,7 +345,6 @@
 DlgPasteRemoveStyles	: "Entferne Style-Definitionen",
 DlgPasteCleanBox		: "Inhalt aufräumen",
 
-
 // Color Picker
 ColorAutomatic	: "Automatisch",
 ColorMoreColors	: "Weitere Farben...",
@@ -349,7 +359,7 @@
 
 // Speller Pages Dialog
 DlgSpellNotInDic		: "Nicht im Wörterbuch",
-DlgSpellChangeTo		: "Äendern in",
+DlgSpellChangeTo		: "Ändern in",
 DlgSpellBtnIgnore		: "Ignorieren",
 DlgSpellBtnIgnoreAll	: "Alle Ignorieren",
 DlgSpellBtnReplace		: "Ersetzen",
@@ -388,7 +398,7 @@
 DlgSelectOpText		: "Text",
 DlgSelectOpValue	: "Wert",
 DlgSelectBtnAdd		: "Hinzufügen",
-DlgSelectBtnModify	: "Äendern",
+DlgSelectBtnModify	: "Ändern",
 DlgSelectBtnUp		: "Hoch",
 DlgSelectBtnDown	: "Runter",
 DlgSelectBtnSetValue : "Setze als Standardwert",
@@ -416,8 +426,8 @@
 BulletedListProp	: "Listen-Eigenschaften",
 NumberedListProp	: "Nummerierte Listen-Eigenschaften",
 DlgLstType			: "Typ",
-DlgLstTypeCircle	: "Kreis",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeCircle	: "Ring",
+DlgLstTypeDisc		: "Kreis",
 DlgLstTypeSquare	: "Quadrat",
 DlgLstTypeNumbers	: "Nummern (1, 2, 3)",
 DlgLstTypeLCase		: "Kleinbuchstaben (a, b, c)",
@@ -444,7 +454,7 @@
 DlgDocIncXHTML		: "Beziehe XHTML Deklarationen ein",
 DlgDocBgColor		: "Hintergrundfarbe",
 DlgDocBgImage		: "Hintergrundbild URL",
-DlgDocBgNoScroll	: "Nicht-Scrollender Hintergrund",
+DlgDocBgNoScroll	: "feststehender Hintergrund",
 DlgDocCText			: "Text",
 DlgDocCLink			: "Link",
 DlgDocCVisited		: "Besuchter Link",
@@ -454,7 +464,7 @@
 DlgDocMaLeft		: "Links",
 DlgDocMaRight		: "Rechts",
 DlgDocMaBottom		: "Unten",
-DlgDocMeIndex		: "Schlüsselwörter (Komma-getrennt)",
+DlgDocMeIndex		: "Schlüsselwörter (durch Komma getrennt)",
 DlgDocMeDescr		: "Dokument-Beschreibung",
 DlgDocMeAuthor		: "Autor",
 DlgDocMeCopy		: "Copyright",
@@ -463,13 +473,14 @@
 // Templates Dialog
 Templates			: "Vorlagen",
 DlgTemplatesTitle	: "Vorlagen",
-DlgTemplatesSelMsg	: "Klicken Sie auf eine Vorlage, um sie im Editor zu öffnen(der aktuelle Inhalt wird dabei gelöscht!):",
+DlgTemplatesSelMsg	: "Klicken Sie auf eine Vorlage, um sie im Editor zu öffnen (der aktuelle Inhalt wird dabei gelöscht!):",
 DlgTemplatesLoading	: "Liste der Vorlagen wird geladen. Bitte warten...",
 DlgTemplatesNoTpl	: "(keine Vorlagen definiert)",
 
 // About Dialog
 DlgAboutAboutTab	: "Über",
 DlgAboutBrowserInfoTab	: "Browser-Info",
+DlgAboutLicenseTab	: "Lizenz",
 DlgAboutVersion		: "Version",
 DlgAboutLicense		: "Lizensiert unter den Richtlinien der GNU Lesser General Public License",
 DlgAboutInfo		: "Für weitere Informationen siehe"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/el.js 1.4.1.src/fckeditor/editor/lang/el.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/el.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/el.js	2006-09-03 13:05:04.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -14,6 +14,7 @@
  * 	Greek language file.
  * 
  * File Authors:
+ * 		Vangelis Bibakis (bibakisv[-a-t-]yahoo.com)
  * 		Spyros Barbatos (sbarbatos{at}users.sourceforge.net)
  */
 
@@ -40,11 +41,11 @@
 InsertLinkLbl		: "Σύνδεσμος (Link)",
 InsertLink			: "Εισαγωγή/Μεταβολή Συνδέσμου (Link)",
 RemoveLink			: "Αφαίρεση Συνδέσμου (Link)",
-Anchor				: "Insert/Edit Anchor",	//MISSING
+Anchor				: "Εισαγωγή/επεξεργασία Anchor",
 InsertImageLbl		: "Εικόνα",
 InsertImage			: "Εισαγωγή/Μεταβολή Εικόνας",
-InsertFlashLbl		: "Flash",	//MISSING
-InsertFlash			: "Insert/Edit Flash",	//MISSING
+InsertFlashLbl		: "Εισαγωγή Flash",
+InsertFlash			: "Εισαγωγή/επεξεργασία Flash",
 InsertTableLbl		: "Πίνακας",
 InsertTable			: "Εισαγωγή/Μεταβολή Πίνακα",
 InsertLineLbl		: "Γραμμή",
@@ -66,15 +67,15 @@
 BlockJustify		: "Πλήρης Στοίχιση (Block)",
 DecreaseIndent		: "Μείωση Εσοχής",
 IncreaseIndent		: "Αύξηση Εσοχής",
-Undo				: "Undo",
-Redo				: "Redo",
+Undo				: "Αναίρεση",
+Redo				: "Επαναφορά",
 NumberedListLbl		: "Λίστα με Αριθμούς",
 NumberedList		: "Εισαγωγή/Διαγραφή Λίστας με Αριθμούς",
 BulletedListLbl		: "Λίστα με Bullets",
 BulletedList		: "Εισαγωγή/Διαγραφή Λίστας με Bullets",
 ShowTableBorders	: "Προβολή Ορίων Πίνακα",
 ShowDetails			: "Προβολή Λεπτομερειών",
-Style				: "Style",
+Style				: "Στυλ",
 FontFormat			: "Μορφή Γραμματοσειράς",
 Font				: "Γραμματοσειρά",
 FontSize			: "Μέγεθος",
@@ -83,21 +84,28 @@
 Source				: "HTML κώδικας",
 Find				: "Αναζήτηση",
 Replace				: "Αντικατάσταση",
-SpellCheck			: "Check Spell",	//MISSING
-UniversalKeyboard	: "Universal Keyboard",	//MISSING
+SpellCheck			: "Ορθογραφικός έλεγχος",
+UniversalKeyboard	: "Διεθνής πληκτρολόγιο",
+PageBreakLbl		: "Τέλος σελίδας",
+PageBreak			: "Εισαγωγή τέλους σελίδας",
+
+Form			: "Φόρμα",
+Checkbox		: "Κουτί επιλογής",
+RadioButton		: "Κουμπί Radio",
+TextField		: "Πεδίο κειμένου",
+Textarea		: "Περιοχή κειμένου",
+HiddenField		: "Κρυφό πεδίο",
+Button			: "Κουμπί",
+SelectionField	: "Πεδίο επιλογής",
+ImageButton		: "Κουμπί εικόνας",
 
-Form			: "Form",	//MISSING
-Checkbox		: "Checkbox",	//MISSING
-RadioButton		: "Radio Button",	//MISSING
-TextField		: "Text Field",	//MISSING
-Textarea		: "Textarea",	//MISSING
-HiddenField		: "Hidden Field",	//MISSING
-Button			: "Button",	//MISSING
-SelectionField	: "Selection Field",	//MISSING
-ImageButton		: "Image Button",	//MISSING
+FitWindow		: "Μεγιστοποίηση προγράμματος",
 
 // Context Menu
 EditLink			: "Μεταβολή Συνδέσμου (Link)",
+CellCM				: "Κελί",
+RowCM				: "Σειρά",
+ColumnCM			: "Στήλη",
 InsertRow			: "Εισαγωγή Γραμμής",
 DeleteRows			: "Διαγραφή Γραμμών",
 InsertColumn		: "Εισαγωγή Κολώνας",
@@ -106,23 +114,24 @@
 DeleteCells			: "Διαγραφή Κελιών",
 MergeCells			: "Ενοποίηση Κελιών",
 SplitCell			: "Διαχωρισμός Κελιού",
+TableDelete			: "Διαγραφή πίνακα",
 CellProperties		: "Ιδιότητες Κελιού",
 TableProperties		: "Ιδιότητες Πίνακα",
 ImageProperties		: "Ιδιότητες Εικόνας",
-FlashProperties		: "Flash Properties",	//MISSING
+FlashProperties		: "Ιδιότητες Flash",
 
-AnchorProp			: "Anchor Properties",	//MISSING
-ButtonProp			: "Button Properties",	//MISSING
-CheckboxProp		: "Checkbox Properties",	//MISSING
-HiddenFieldProp		: "Hidden Field Properties",	//MISSING
-RadioButtonProp		: "Radio Button Properties",	//MISSING
-ImageButtonProp		: "Image Button Properties",	//MISSING
-TextFieldProp		: "Text Field Properties",	//MISSING
-SelectionFieldProp	: "Selection Field Properties",	//MISSING
-TextareaProp		: "Textarea Properties",	//MISSING
-FormProp			: "Form Properties",	//MISSING
+AnchorProp			: "Ιδιότητες άγκυρας",
+ButtonProp			: "Ιδιότητες κουμπιού",
+CheckboxProp		: "Ιδιότητες κουμπιού επιλογής",
+HiddenFieldProp		: "Ιδιότητες κρυφού πεδίου",
+RadioButtonProp		: "Ιδιότητες κουμπιού radio",
+ImageButtonProp		: "Ιδιότητες κουμπιού εικόνας",
+TextFieldProp		: "Ιδιότητες πεδίου κειμένου",
+SelectionFieldProp	: "Ιδιότητες πεδίου επιλογής",
+TextareaProp		: "Ιδιότητες περιοχής κειμένου",
+FormProp			: "Ιδιότητες φόρμας",
 
-FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6",
+FontFormats			: "Κανονικό;Μορφοποιημένο;Διεύθυνση;Επικεφαλίδα 1;Επικεφαλίδα 2;Επικεφαλίδα 3;Επικεφαλίδα 4;Επικεφαλίδα 5;Επικεφαλίδα 6",
 
 // Alerts and Messages
 ProcessingXHTML		: "Επεξεργασία XHTML. Παρακαλώ περιμένετε...",
@@ -133,34 +142,36 @@
 UnknownCommand		: "Άγνωστή εντολή \"%1\"",
 NotImplemented		: "Η εντολή δεν έχει ενεργοποιηθεί",
 UnknownToolbarSet	: "Η μπάρα εργαλείων \"%1\" δεν υπάρχει",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Οι ρυθμίσεις ασφαλείας του browser σας μπορεί να περιορίσουν κάποιες ρυθμίσεις του προγράμματος. Χρειάζεται να ενεργοποιήσετε την επιλογή \"Run ActiveX controls and plug-ins\". Ίσως παρουσιαστούν λάθη και παρατηρήσετε ελειπείς λειτουργίες.",
+BrowseServerBlocked : "Οι πόροι του browser σας δεν είναι προσπελάσιμοι. Σιγουρευτείτε ότι δεν υπάρχουν ενεργοί popup blockers.",
+DialogBlocked		: "Δεν ήταν δυνατό να ανοίξει το παράθυρο διαλόγου. Σιγουρευτείτε ότι δεν υπάρχουν ενεργοί popup blockers.",
 
 // Dialogs
 DlgBtnOK			: "OK",
 DlgBtnCancel		: "Ακύρωση",
 DlgBtnClose			: "Κλείσιμο",
-DlgBtnBrowseServer	: "Browse Server",	//MISSING
+DlgBtnBrowseServer	: "Εξερεύνηση διακομιστή",
 DlgAdvancedTag		: "Για προχωρημένους",
-DlgOpOther			: "&lt;Other&gt;",	//MISSING
-DlgInfoTab			: "Info",	//MISSING
-DlgAlertUrl			: "Please insert the URL",	//MISSING
+DlgOpOther			: "<Άλλα>",
+DlgInfoTab			: "Πληροφορίες",
+DlgAlertUrl			: "Παρακαλώ εισάγετε URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;χωρίς&gt;",
+DlgGenNotSet		: "<χωρίς>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Κατεύθυνση κειμένου",
 DlgGenLangDirLtr	: "Αριστερά προς Δεξιά (LTR)",
 DlgGenLangDirRtl	: "Δεξιά προς Αριστερά (RTL)",
 DlgGenLangCode		: "Κωδικός Γλώσσας",
 DlgGenAccessKey		: "Συντόμευση (Access Key)",
-DlgGenName			: "Name",
+DlgGenName			: "Όνομα",
 DlgGenTabIndex		: "Tab Index",
-DlgGenLongDescr		: "Long Description URL",
+DlgGenLongDescr		: "Αναλυτική περιγραφή URL",
 DlgGenClass			: "Stylesheet Classes",
-DlgGenTitle			: "Advisory Title",
-DlgGenContType		: "Advisory Content Type",
+DlgGenTitle			: "Συμβουλευτικός τίτλος",
+DlgGenContType		: "Συμβουλευτικός τίτλος περιεχομένου",
 DlgGenLinkCharset	: "Linked Resource Charset",
-DlgGenStyle			: "Style",
+DlgGenStyle			: "Στύλ",
 
 // Image Dialog
 DlgImgTitle			: "Ιδιότητες Εικόνας",
@@ -188,34 +199,34 @@
 DlgImgAlignTop		: "Πάνω (Top)",
 DlgImgPreview		: "Προεπισκόπιση",
 DlgImgAlertUrl		: "Εισάγετε την τοποθεσία (URL) της εικόνας",
-DlgImgLinkTab		: "Link",	//MISSING
+DlgImgLinkTab		: "Σύνδεσμος",
 
 // Flash Dialog
-DlgFlashTitle		: "Flash Properties",	//MISSING
-DlgFlashChkPlay		: "Auto Play",	//MISSING
-DlgFlashChkLoop		: "Loop",	//MISSING
-DlgFlashChkMenu		: "Enable Flash Menu",	//MISSING
-DlgFlashScale		: "Scale",	//MISSING
-DlgFlashScaleAll	: "Show all",	//MISSING
-DlgFlashScaleNoBorder	: "No Border",	//MISSING
-DlgFlashScaleFit	: "Exact Fit",	//MISSING
+DlgFlashTitle		: "Ιδιότητες flash",
+DlgFlashChkPlay		: "Αυτόματη έναρξη",
+DlgFlashChkLoop		: "Επανάληψη",
+DlgFlashChkMenu		: "Ενεργοποίηση Flash Menu",
+DlgFlashScale		: "Κλίμακα",
+DlgFlashScaleAll	: "Εμφάνιση όλων",
+DlgFlashScaleNoBorder	: "Χωρίς όρια",
+DlgFlashScaleFit	: "Ακριβής εφαρμογή",
 
 // Link Dialog
-DlgLnkWindowTitle	: "Υπερσύνδεσμος (Link)",
+DlgLnkWindowTitle	: "Σύνδεσμος (Link)",
 DlgLnkInfoTab		: "Link",
 DlgLnkTargetTab		: "Παράθυρο Στόχος (Target)",
 
-DlgLnkType			: "Τύπος Υπερσυνδέσμου (Link)",
+DlgLnkType			: "Τύπος συνδέσμου (Link)",
 DlgLnkTypeURL		: "URL",
-DlgLnkTypeAnchor	: "Anchor in this page",
+DlgLnkTypeAnchor	: "Άγκυρα σε αυτή τη σελίδα",
 DlgLnkTypeEMail		: "E-Mail",
-DlgLnkProto			: "Protocol",
-DlgLnkProtoOther	: "&lt;άλλο&gt;",
+DlgLnkProto			: "Προτόκολο",
+DlgLnkProtoOther	: "<άλλο>",
 DlgLnkURL			: "URL",
-DlgLnkAnchorSel		: "Επιλέξτε ένα Anchor",
-DlgLnkAnchorByName	: "Βάσει του Ονόματος (Name)του Anchor",
+DlgLnkAnchorSel		: "Επιλέξτε μια άγκυρα",
+DlgLnkAnchorByName	: "Βάσει του Ονόματος (Name) της άγκυρας",
 DlgLnkAnchorById	: "Βάσει του Element Id",
-DlgLnkNoAnchors		: "&lt;Δεν υπάρχουν Anchors στο κείμενο&gt;",
+DlgLnkNoAnchors		: "<Δεν υπάρχουν άγκυρες στο κείμενο>",
 DlgLnkEMail			: "Διεύθυνση Ηλεκτρονικού Ταχυδρομείου",
 DlgLnkEMailSubject	: "Θέμα Μηνύματος",
 DlgLnkEMailBody		: "Κείμενο Μηνύματος",
@@ -223,13 +234,13 @@
 DlgLnkBtnUpload		: "Αποστολή στον Διακομιστή",
 
 DlgLnkTarget		: "Παράθυρο Στόχος (Target)",
-DlgLnkTargetFrame	: "&lt;frame&gt;",
-DlgLnkTargetPopup	: "&lt;popup window&gt;",
+DlgLnkTargetFrame	: "<πλαίσιο>",
+DlgLnkTargetPopup	: "<παράθυρο popup>",
 DlgLnkTargetBlank	: "Νέο Παράθυρο (_blank)",
 DlgLnkTargetParent	: "Γονικό Παράθυρο (_parent)",
 DlgLnkTargetSelf	: "Ίδιο Παράθυρο (_self)",
 DlgLnkTargetTop		: "Ανώτατο Παράθυρο (_top)",
-DlgLnkTargetFrameName	: "Target Frame Name",	//MISSING
+DlgLnkTargetFrameName	: "Όνομα πλαισίου στόχου",
 DlgLnkPopWinName	: "Όνομα Popup Window",
 DlgLnkPopWinFeat	: "Επιλογές Popup Window",
 DlgLnkPopResize		: "Με αλλαγή Μεγέθους",
@@ -275,9 +286,10 @@
 DlgTableWidthPx		: "pixels",
 DlgTableWidthPc		: "\%",
 DlgTableHeight		: "Ύψος",
-DlgTableCellSpace	: "Cell spacing",
-DlgTableCellPad		: "Cell padding",
+DlgTableCellSpace	: "Απόσταση κελιών",
+DlgTableCellPad		: "Γέμισμα κελιών",
 DlgTableCaption		: "Υπέρτιτλος",
+DlgTableSummary		: "Περίληψη",
 
 // Table Cell Dialog
 DlgCellTitle		: "Ιδιότητες Κελιού",
@@ -328,147 +340,147 @@
 PasteAsText		: "Επικόλληση ως Απλό Κείμενο",
 PasteFromWord	: "Επικόλληση από το Word",
 
-DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",	//MISSING
-DlgPasteIgnoreFont		: "Ignore Font Face definitions",	//MISSING
-DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
-DlgPasteCleanBox		: "Clean Up Box",	//MISSING
-
+DlgPasteMsg2	: "Παρακαλώ επικολήστε στο ακόλουθο κουτί χρησιμοποιόντας το πληκτρολόγιο (<STRONG>Ctrl+V</STRONG>) και πατήστε <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Αγνόηση προδιαγραφών γραμματοσειράς",
+DlgPasteRemoveStyles	: "Αφαίρεση προδιαγραφών στύλ",
+DlgPasteCleanBox		: "Κουτί εκαθάρισης",
 
 // Color Picker
 ColorAutomatic	: "Αυτόματο",
 ColorMoreColors	: "Περισσότερα χρώματα...",
 
 // Document Properties
-DocProps		: "Document Properties",	//MISSING
+DocProps		: "Ιδιότητες εγγράφου",
 
 // Anchor Dialog
-DlgAnchorTitle		: "Anchor Properties",	//MISSING
-DlgAnchorName		: "Anchor Name",	//MISSING
-DlgAnchorErrorName	: "Please type the anchor name",	//MISSING
+DlgAnchorTitle		: "Ιδιότητες άγκυρας",
+DlgAnchorName		: "Όνομα άγκυρας",
+DlgAnchorErrorName	: "Παρακαλούμε εισάγετε όνομα άγκυρας",
 
 // Speller Pages Dialog
-DlgSpellNotInDic		: "Not in dictionary",	//MISSING
-DlgSpellChangeTo		: "Change to",	//MISSING
-DlgSpellBtnIgnore		: "Ignore",	//MISSING
-DlgSpellBtnIgnoreAll	: "Ignore All",	//MISSING
-DlgSpellBtnReplace		: "Replace",	//MISSING
-DlgSpellBtnReplaceAll	: "Replace All",	//MISSING
-DlgSpellBtnUndo			: "Undo",	//MISSING
-DlgSpellNoSuggestions	: "- No suggestions -",	//MISSING
-DlgSpellProgress		: "Spell check in progress...",	//MISSING
-DlgSpellNoMispell		: "Spell check complete: No misspellings found",	//MISSING
-DlgSpellNoChanges		: "Spell check complete: No words changed",	//MISSING
-DlgSpellOneChange		: "Spell check complete: One word changed",	//MISSING
-DlgSpellManyChanges		: "Spell check complete: %1 words changed",	//MISSING
+DlgSpellNotInDic		: "Δεν υπάρχει στο λεξικό",
+DlgSpellChangeTo		: "Αλλαγή σε",
+DlgSpellBtnIgnore		: "Αγνόηση",
+DlgSpellBtnIgnoreAll	: "Αγνόηση όλων",
+DlgSpellBtnReplace		: "Αντικατάσταση",
+DlgSpellBtnReplaceAll	: "Αντικατάσταση όλων",
+DlgSpellBtnUndo			: "Αναίρεση",
+DlgSpellNoSuggestions	: "- Δεν υπάρχουν προτάσεις -",
+DlgSpellProgress		: "Ορθογραφικός έλεγχος σε εξέλιξη...",
+DlgSpellNoMispell		: "Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν βρέθηκαν λάθη",
+DlgSpellNoChanges		: "Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν άλλαξαν λέξεις",
+DlgSpellOneChange		: "Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Μια λέξη άλλαξε",
+DlgSpellManyChanges		: "Ο ορθογραφικός έλεγχος ολοκληρώθηκε: %1 λέξεις άλλαξαν",
 
-IeSpellDownload			: "Spell checker not installed. Do you want to download it now?",	//MISSING
+IeSpellDownload			: "Δεν υπάρχει εγκατεστημένος ορθογράφος. Θέλετε να τον κατεβάσετε τώρα;",
 
 // Button Dialog
-DlgButtonText	: "Text (Value)",	//MISSING
-DlgButtonType	: "Type",	//MISSING
+DlgButtonText	: "Κείμενο (Τιμή)",
+DlgButtonType	: "Τύπος",
 
 // Checkbox and Radio Button Dialogs
-DlgCheckboxName		: "Name",	//MISSING
-DlgCheckboxValue	: "Value",	//MISSING
-DlgCheckboxSelected	: "Selected",	//MISSING
+DlgCheckboxName		: "Όνομα",
+DlgCheckboxValue	: "Τιμή",
+DlgCheckboxSelected	: "Επιλεγμένο",
 
 // Form Dialog
-DlgFormName		: "Name",	//MISSING
-DlgFormAction	: "Action",	//MISSING
-DlgFormMethod	: "Method",	//MISSING
+DlgFormName		: "Όνομα",
+DlgFormAction	: "Δράση",
+DlgFormMethod	: "Μάθοδος",
 
 // Select Field Dialog
-DlgSelectName		: "Name",	//MISSING
-DlgSelectValue		: "Value",	//MISSING
-DlgSelectSize		: "Size",	//MISSING
-DlgSelectLines		: "lines",	//MISSING
-DlgSelectChkMulti	: "Allow multiple selections",	//MISSING
-DlgSelectOpAvail	: "Available Options",	//MISSING
-DlgSelectOpText		: "Text",	//MISSING
-DlgSelectOpValue	: "Value",	//MISSING
-DlgSelectBtnAdd		: "Add",	//MISSING
-DlgSelectBtnModify	: "Modify",	//MISSING
-DlgSelectBtnUp		: "Up",	//MISSING
-DlgSelectBtnDown	: "Down",	//MISSING
-DlgSelectBtnSetValue : "Set as selected value",	//MISSING
-DlgSelectBtnDelete	: "Delete",	//MISSING
+DlgSelectName		: "Όνομα",
+DlgSelectValue		: "Τιμή",
+DlgSelectSize		: "Μέγεθος",
+DlgSelectLines		: "γραμμές",
+DlgSelectChkMulti	: "Πολλαπλές επιλογές",
+DlgSelectOpAvail	: "Διαθέσιμες επιλογές",
+DlgSelectOpText		: "Κείμενο",
+DlgSelectOpValue	: "Τιμή",
+DlgSelectBtnAdd		: "Προσθήκη",
+DlgSelectBtnModify	: "Αλλαγή",
+DlgSelectBtnUp		: "Πάνω",
+DlgSelectBtnDown	: "Κάτω",
+DlgSelectBtnSetValue : "Προεπιλεγμένη επιλογή",
+DlgSelectBtnDelete	: "Διαγραφή",
 
 // Textarea Dialog
-DlgTextareaName	: "Name",	//MISSING
-DlgTextareaCols	: "Columns",	//MISSING
-DlgTextareaRows	: "Rows",	//MISSING
+DlgTextareaName	: "Όνομα",
+DlgTextareaCols	: "Στήλες",
+DlgTextareaRows	: "Σειρές",
 
 // Text Field Dialog
-DlgTextName			: "Name",	//MISSING
-DlgTextValue		: "Value",	//MISSING
-DlgTextCharWidth	: "Character Width",	//MISSING
-DlgTextMaxChars		: "Maximum Characters",	//MISSING
-DlgTextType			: "Type",	//MISSING
-DlgTextTypeText		: "Text",	//MISSING
-DlgTextTypePass		: "Password",	//MISSING
+DlgTextName			: "Όνομα",
+DlgTextValue		: "Τιμή",
+DlgTextCharWidth	: "Μήκος χαρακτήρων",
+DlgTextMaxChars		: "Μέγιστοι χαρακτήρες",
+DlgTextType			: "Τύπος",
+DlgTextTypeText		: "Κείμενο",
+DlgTextTypePass		: "Κωδικός",
 
 // Hidden Field Dialog
-DlgHiddenName	: "Name",	//MISSING
-DlgHiddenValue	: "Value",	//MISSING
+DlgHiddenName	: "Όνομα",
+DlgHiddenValue	: "Τιμή",
 
 // Bulleted List Dialog
-BulletedListProp	: "Bulleted List Properties",	//MISSING
-NumberedListProp	: "Numbered List Properties",	//MISSING
-DlgLstType			: "Type",	//MISSING
-DlgLstTypeCircle	: "Circle",	//MISSING
-DlgLstTypeDisc		: "Disc",	//MISSING
-DlgLstTypeSquare	: "Square",	//MISSING
-DlgLstTypeNumbers	: "Numbers (1, 2, 3)",	//MISSING
-DlgLstTypeLCase		: "Lowercase Letters (a, b, c)",	//MISSING
-DlgLstTypeUCase		: "Uppercase Letters (A, B, C)",	//MISSING
-DlgLstTypeSRoman	: "Small Roman Numerals (i, ii, iii)",	//MISSING
-DlgLstTypeLRoman	: "Large Roman Numerals (I, II, III)",	//MISSING
+BulletedListProp	: "Ιδιότητες λίστας Bulleted",
+NumberedListProp	: "Ιδιότητες αριθμημένης λίστας ",
+DlgLstType			: "Τύπος",
+DlgLstTypeCircle	: "Κύκλος",
+DlgLstTypeDisc		: "Δίσκος",
+DlgLstTypeSquare	: "Τετράγωνο",
+DlgLstTypeNumbers	: "Αριθμοί (1, 2, 3)",
+DlgLstTypeLCase		: "Πεζά γράμματα (a, b, c)",
+DlgLstTypeUCase		: "Κεφαλαία γράμματα (A, B, C)",
+DlgLstTypeSRoman	: "Μικρά λατινικά αριθμητικά (i, ii, iii)",
+DlgLstTypeLRoman	: "Μεγάλα λατινικά αριθμητικά (I, II, III)",
 
 // Document Properties Dialog
-DlgDocGeneralTab	: "General",	//MISSING
-DlgDocBackTab		: "Background",	//MISSING
-DlgDocColorsTab		: "Colors and Margins",	//MISSING
-DlgDocMetaTab		: "Meta Data",	//MISSING
-
-DlgDocPageTitle		: "Page Title",	//MISSING
-DlgDocLangDir		: "Language Direction",	//MISSING
-DlgDocLangDirLTR	: "Left to Right (LTR)",	//MISSING
-DlgDocLangDirRTL	: "Right to Left (RTL)",	//MISSING
-DlgDocLangCode		: "Language Code",	//MISSING
-DlgDocCharSet		: "Character Set Encoding",	//MISSING
-DlgDocCharSetOther	: "Other Character Set Encoding",	//MISSING
-
-DlgDocDocType		: "Document Type Heading",	//MISSING
-DlgDocDocTypeOther	: "Other Document Type Heading",	//MISSING
-DlgDocIncXHTML		: "Include XHTML Declarations",	//MISSING
-DlgDocBgColor		: "Background Color",	//MISSING
-DlgDocBgImage		: "Background Image URL",	//MISSING
-DlgDocBgNoScroll	: "Nonscrolling Background",	//MISSING
-DlgDocCText			: "Text",	//MISSING
-DlgDocCLink			: "Link",	//MISSING
-DlgDocCVisited		: "Visited Link",	//MISSING
-DlgDocCActive		: "Active Link",	//MISSING
-DlgDocMargins		: "Page Margins",	//MISSING
-DlgDocMaTop			: "Top",	//MISSING
-DlgDocMaLeft		: "Left",	//MISSING
-DlgDocMaRight		: "Right",	//MISSING
-DlgDocMaBottom		: "Bottom",	//MISSING
-DlgDocMeIndex		: "Document Indexing Keywords (comma separated)",	//MISSING
-DlgDocMeDescr		: "Document Description",	//MISSING
-DlgDocMeAuthor		: "Author",	//MISSING
-DlgDocMeCopy		: "Copyright",	//MISSING
-DlgDocPreview		: "Preview",	//MISSING
+DlgDocGeneralTab	: "Γενικά",
+DlgDocBackTab		: "Φόντο",
+DlgDocColorsTab		: "Χρώματα και περιθώρια",
+DlgDocMetaTab		: "Δεδομένα Meta",
+
+DlgDocPageTitle		: "Τίτλος σελίδας",
+DlgDocLangDir		: "Κατεύθυνση γραφής",
+DlgDocLangDirLTR	: "αριστερά προς δεξιά (LTR)",
+DlgDocLangDirRTL	: "δεξιά προς αριστερά (RTL)",
+DlgDocLangCode		: "Κωδικός γλώσσας",
+DlgDocCharSet		: "Κωδικοποίηση χαρακτήρων",
+DlgDocCharSetOther	: "Άλλη κωδικοποίηση χαρακτήρων",
+
+DlgDocDocType		: "Επικεφαλίδα τύπου εγγράφου",
+DlgDocDocTypeOther	: "Άλλη επικεφαλίδα τύπου εγγράφου",
+DlgDocIncXHTML		: "Να συμπεριληφθούν οι δηλώσεις XHTML",
+DlgDocBgColor		: "Χρώμα φόντου",
+DlgDocBgImage		: "Διεύθυνση εικόνας φόντου",
+DlgDocBgNoScroll	: "Φόντο χωρίς κύλιση",
+DlgDocCText			: "Κείμενο",
+DlgDocCLink			: "Σύνδεσμος",
+DlgDocCVisited		: "Σύνδεσμος που έχει επισκευθεί",
+DlgDocCActive		: "Ενεργός σύνδεσμος",
+DlgDocMargins		: "Περιθώρια σελίδας",
+DlgDocMaTop			: "Κορυφή",
+DlgDocMaLeft		: "Αριστερά",
+DlgDocMaRight		: "Δεξιά",
+DlgDocMaBottom		: "Κάτω",
+DlgDocMeIndex		: "Λέξεις κλειδιά δείκτες εγγράφου (διαχωρισμός με κόμμα)",
+DlgDocMeDescr		: "Περιγραφή εγγράφου",
+DlgDocMeAuthor		: "Συγγραφέας",
+DlgDocMeCopy		: "Πνευματικά δικαιώματα",
+DlgDocPreview		: "Προεπισκόπηση",
 
 // Templates Dialog
-Templates			: "Templates",	//MISSING
-DlgTemplatesTitle	: "Content Templates",	//MISSING
-DlgTemplatesSelMsg	: "Please select the template to open in the editor<br>(the actual contents will be lost):",	//MISSING
-DlgTemplatesLoading	: "Loading templates list. Please wait...",	//MISSING
-DlgTemplatesNoTpl	: "(No templates defined)",	//MISSING
+Templates			: "Πρότυπα",
+DlgTemplatesTitle	: "Πρότυπα περιεχομένου",
+DlgTemplatesSelMsg	: "Παρακαλώ επιλέξτε πρότυπο για εισαγωγή στο πρόγραμμα<br>(τα υπάρχοντα περιεχόμενα θα χαθούν):",
+DlgTemplatesLoading	: "Φόρτωση καταλόγου προτύπων. Παρακαλώ περιμένετε...",
+DlgTemplatesNoTpl	: "(Δεν έχουν καθοριστεί πρότυπα)",
 
 // About Dialog
-DlgAboutAboutTab	: "About",	//MISSING
-DlgAboutBrowserInfoTab	: "Browser Info",	//MISSING
+DlgAboutAboutTab	: "Σχετικά",
+DlgAboutBrowserInfoTab	: "Πληροφορίες Browser",
+DlgAboutLicenseTab	: "Άδεια",
 DlgAboutVersion		: "έκδοση",
 DlgAboutLicense		: "Άδεια χρήσης υπό τους όρους της GNU Lesser General Public License",
 DlgAboutInfo		: "Για περισσότερες πληροφορίες"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/en-au.js 1.4.1.src/fckeditor/editor/lang/en-au.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/en-au.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/en-au.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -50,7 +50,7 @@
 InsertTable			: "Insert/Edit Table",
 InsertLineLbl		: "Line",
 InsertLine			: "Insert Horizontal Line",
-InsertSpecialCharLbl: "Special Char",
+InsertSpecialCharLbl: "Special Character",
 InsertSpecialChar	: "Insert Special Character",
 InsertSmileyLbl		: "Smiley",
 InsertSmiley		: "Insert Smiley",
@@ -62,7 +62,7 @@
 Subscript			: "Subscript",
 Superscript			: "Superscript",
 LeftJustify			: "Left Justify",
-CenterJustify		: "Center Justify",
+CenterJustify		: "Centre Justify",
 RightJustify		: "Right Justify",
 BlockJustify		: "Block Justify",
 DecreaseIndent		: "Decrease Indent",
@@ -79,13 +79,15 @@
 FontFormat			: "Format",
 Font				: "Font",
 FontSize			: "Size",
-TextColor			: "Text Color",
-BGColor				: "Background Color",
+TextColor			: "Text Colour",
+BGColor				: "Background Colour",
 Source				: "Source",
 Find				: "Find",
 Replace				: "Replace",
-SpellCheck			: "Check Spell",
+SpellCheck			: "Check Spelling",
 UniversalKeyboard	: "Universal Keyboard",
+PageBreakLbl		: "Page Break",
+PageBreak			: "Insert Page Break",
 
 Form			: "Form",
 Checkbox		: "Checkbox",
@@ -97,8 +99,13 @@
 SelectionField	: "Selection Field",
 ImageButton		: "Image Button",
 
+FitWindow		: "Maximize the editor size",
+
 // Context Menu
 EditLink			: "Edit Link",
+CellCM				: "Cell",
+RowCM				: "Row",
+ColumnCM			: "Column",
 InsertRow			: "Insert Row",
 DeleteRows			: "Delete Rows",
 InsertColumn		: "Insert Column",
@@ -107,6 +114,7 @@
 DeleteCells			: "Delete Cells",
 MergeCells			: "Merge Cells",
 SplitCell			: "Split Cell",
+TableDelete			: "Delete Table",
 CellProperties		: "Cell Properties",
 TableProperties		: "Table Properties",
 ImageProperties		: "Image Properties",
@@ -123,7 +131,7 @@
 TextareaProp		: "Textarea Properties",
 FormProp			: "Form Properties",
 
-FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Paragraph (DIV)",
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
 
 // Alerts and Messages
 ProcessingXHTML		: "Processing XHTML. Please wait...",
@@ -134,7 +142,9 @@
 UnknownCommand		: "Unknown command name \"%1\"",
 NotImplemented		: "Command not implemented",
 UnknownToolbarSet	: "Toolbar set \"%1\" doesn't exist",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -142,12 +152,12 @@
 DlgBtnClose			: "Close",
 DlgBtnBrowseServer	: "Browse Server",
 DlgAdvancedTag		: "Advanced",
-DlgOpOther			: "&lt;Other&gt;",
+DlgOpOther			: "<Other>",
 DlgInfoTab			: "Info",
 DlgAlertUrl			: "Please insert the URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;not set&gt;",
+DlgGenNotSet		: "<not set>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Language Direction",
 DlgGenLangDirLtr	: "Left to Right (LTR)",
@@ -211,12 +221,12 @@
 DlgLnkTypeAnchor	: "Anchor in this page",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Protocol",
-DlgLnkProtoOther	: "&lt;other&gt;",
+DlgLnkProtoOther	: "<other>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Select an Anchor",
 DlgLnkAnchorByName	: "By Anchor Name",
 DlgLnkAnchorById	: "By Element Id",
-DlgLnkNoAnchors		: "&lt;No anchors available in the document&gt;",
+DlgLnkNoAnchors		: "<No anchors available in the document>",
 DlgLnkEMail			: "E-Mail Address",
 DlgLnkEMailSubject	: "Message Subject",
 DlgLnkEMailBody		: "Message Body",
@@ -224,8 +234,8 @@
 DlgLnkBtnUpload		: "Send it to the Server",
 
 DlgLnkTarget		: "Target",
-DlgLnkTargetFrame	: "&lt;frame&gt;",
-DlgLnkTargetPopup	: "&lt;popup window&gt;",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<popup window>",
 DlgLnkTargetBlank	: "New Window (_blank)",
 DlgLnkTargetParent	: "Parent Window (_parent)",
 DlgLnkTargetSelf	: "Same Window (_self)",
@@ -251,7 +261,7 @@
 DlnLnkMsgNoAnchor	: "Please select an anchor",
 
 // Color Dialog
-DlgColorTitle		: "Select Color",
+DlgColorTitle		: "Select Colour",
 DlgColorBtnClear	: "Clear",
 DlgColorHighlight	: "Highlight",
 DlgColorSelected	: "Selected",
@@ -279,6 +289,7 @@
 DlgTableCellSpace	: "Cell spacing",
 DlgTableCellPad		: "Cell padding",
 DlgTableCaption		: "Caption",
+DlgTableSummary		: "Summary",
 
 // Table Cell Dialog
 DlgCellTitle		: "Cell Properties",
@@ -287,24 +298,24 @@
 DlgCellWidthPc		: "percent",
 DlgCellHeight		: "Height",
 DlgCellWordWrap		: "Word Wrap",
-DlgCellWordWrapNotSet	: "&lt;Not set&gt;",
+DlgCellWordWrapNotSet	: "<Not set>",
 DlgCellWordWrapYes	: "Yes",
 DlgCellWordWrapNo	: "No",
 DlgCellHorAlign		: "Horizontal Alignment",
-DlgCellHorAlignNotSet	: "&lt;Not set&gt;",
+DlgCellHorAlignNotSet	: "<Not set>",
 DlgCellHorAlignLeft	: "Left",
 DlgCellHorAlignCenter	: "Centre",
 DlgCellHorAlignRight: "Right",
 DlgCellVerAlign		: "Vertical Alignment",
-DlgCellVerAlignNotSet	: "&lt;Not set&gt;",
+DlgCellVerAlignNotSet	: "<Not set>",
 DlgCellVerAlignTop	: "Top",
 DlgCellVerAlignMiddle	: "Middle",
 DlgCellVerAlignBottom	: "Bottom",
 DlgCellVerAlignBaseline	: "Baseline",
 DlgCellRowSpan		: "Rows Span",
 DlgCellCollSpan		: "Columns Span",
-DlgCellBackColor	: "Background Color",
-DlgCellBorderColor	: "Border Color",
+DlgCellBackColor	: "Background Colour",
+DlgCellBorderColor	: "Border Colour",
 DlgCellBtnSelect	: "Select...",
 
 // Find Dialog
@@ -322,9 +333,9 @@
 DlgReplaceWordChk		: "Match whole word",
 
 // Paste Operations / Dialog
-PasteErrorPaste	: "Your browser security settings don't permit the editor to automaticaly execute pasting operations. Please use the keyboard for that (Ctrl+V).",
-PasteErrorCut	: "Your browser security settings don't permit the editor to automaticaly execute cutting operations. Please use the keyboard for that (Ctrl+X).",
-PasteErrorCopy	: "Your browser security settings don't permit the editor to automaticaly execute copying operations. Please use the keyboard for that (Ctrl+C).",
+PasteErrorPaste	: "Your browser security settings don't permit the editor to automatically execute pasting operations. Please use the keyboard for that (Ctrl+V).",
+PasteErrorCut	: "Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).",
+PasteErrorCopy	: "Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).",
 
 PasteAsText		: "Paste as Plain Text",
 PasteFromWord	: "Paste from Word",
@@ -334,10 +345,9 @@
 DlgPasteRemoveStyles	: "Remove Styles definitions",
 DlgPasteCleanBox		: "Clean Up Box",
 
-
 // Color Picker
 ColorAutomatic	: "Automatic",
-ColorMoreColors	: "More Colors...",
+ColorMoreColors	: "More Colours...",
 
 // Document Properties
 DocProps		: "Document Properties",
@@ -417,7 +427,7 @@
 NumberedListProp	: "Numbered List Properties",
 DlgLstType			: "Type",
 DlgLstTypeCircle	: "Circle",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Disc",
 DlgLstTypeSquare	: "Square",
 DlgLstTypeNumbers	: "Numbers (1, 2, 3)",
 DlgLstTypeLCase		: "Lowercase Letters (a, b, c)",
@@ -428,7 +438,7 @@
 // Document Properties Dialog
 DlgDocGeneralTab	: "General",
 DlgDocBackTab		: "Background",
-DlgDocColorsTab		: "Colors and Margins",
+DlgDocColorsTab		: "Colours and Margins",
 DlgDocMetaTab		: "Meta Data",
 
 DlgDocPageTitle		: "Page Title",
@@ -442,7 +452,7 @@
 DlgDocDocType		: "Document Type Heading",
 DlgDocDocTypeOther	: "Other Document Type Heading",
 DlgDocIncXHTML		: "Include XHTML Declarations",
-DlgDocBgColor		: "Background Color",
+DlgDocBgColor		: "Background Colour",
 DlgDocBgImage		: "Background Image URL",
 DlgDocBgNoScroll	: "Nonscrolling Background",
 DlgDocCText			: "Text",
@@ -470,6 +480,7 @@
 // About Dialog
 DlgAboutAboutTab	: "About",
 DlgAboutBrowserInfoTab	: "Browser Info",
+DlgAboutLicenseTab	: "License",
 DlgAboutVersion		: "version",
 DlgAboutLicense		: "Licensed under the terms of the GNU Lesser General Public License",
 DlgAboutInfo		: "For further information go to"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/en-ca.js 1.4.1.src/fckeditor/editor/lang/en-ca.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/en-ca.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/lang/en-ca.js	2006-06-17 16:25:29.000000000 -0500
@@ -0,0 +1,487 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: en-ca.js
+ * 	English (Canadian) language file.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ * 		Kevin Bennett
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Collapse Toolbar",
+ToolbarExpand		: "Expand Toolbar",
+
+// Toolbar Items and Context Menu
+Save				: "Save",
+NewPage				: "New Page",
+Preview				: "Preview",
+Cut					: "Cut",
+Copy				: "Copy",
+Paste				: "Paste",
+PasteText			: "Paste as plain text",
+PasteWord			: "Paste from Word",
+Print				: "Print",
+SelectAll			: "Select All",
+RemoveFormat		: "Remove Format",
+InsertLinkLbl		: "Link",
+InsertLink			: "Insert/Edit Link",
+RemoveLink			: "Remove Link",
+Anchor				: "Insert/Edit Anchor",
+InsertImageLbl		: "Image",
+InsertImage			: "Insert/Edit Image",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Insert/Edit Flash",
+InsertTableLbl		: "Table",
+InsertTable			: "Insert/Edit Table",
+InsertLineLbl		: "Line",
+InsertLine			: "Insert Horizontal Line",
+InsertSpecialCharLbl: "Special Character",
+InsertSpecialChar	: "Insert Special Character",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Insert Smiley",
+About				: "About FCKeditor",
+Bold				: "Bold",
+Italic				: "Italic",
+Underline			: "Underline",
+StrikeThrough		: "Strike Through",
+Subscript			: "Subscript",
+Superscript			: "Superscript",
+LeftJustify			: "Left Justify",
+CenterJustify		: "Centre Justify",
+RightJustify		: "Right Justify",
+BlockJustify		: "Block Justify",
+DecreaseIndent		: "Decrease Indent",
+IncreaseIndent		: "Increase Indent",
+Undo				: "Undo",
+Redo				: "Redo",
+NumberedListLbl		: "Numbered List",
+NumberedList		: "Insert/Remove Numbered List",
+BulletedListLbl		: "Bulleted List",
+BulletedList		: "Insert/Remove Bulleted List",
+ShowTableBorders	: "Show Table Borders",
+ShowDetails			: "Show Details",
+Style				: "Style",
+FontFormat			: "Format",
+Font				: "Font",
+FontSize			: "Size",
+TextColor			: "Text Colour",
+BGColor				: "Background Colour",
+Source				: "Source",
+Find				: "Find",
+Replace				: "Replace",
+SpellCheck			: "Check Spelling",
+UniversalKeyboard	: "Universal Keyboard",
+PageBreakLbl		: "Page Break",
+PageBreak			: "Insert Page Break",
+
+Form			: "Form",
+Checkbox		: "Checkbox",
+RadioButton		: "Radio Button",
+TextField		: "Text Field",
+Textarea		: "Textarea",
+HiddenField		: "Hidden Field",
+Button			: "Button",
+SelectionField	: "Selection Field",
+ImageButton		: "Image Button",
+
+FitWindow		: "Maximize the editor size",
+
+// Context Menu
+EditLink			: "Edit Link",
+CellCM				: "Cell",
+RowCM				: "Row",
+ColumnCM			: "Column",
+InsertRow			: "Insert Row",
+DeleteRows			: "Delete Rows",
+InsertColumn		: "Insert Column",
+DeleteColumns		: "Delete Columns",
+InsertCell			: "Insert Cell",
+DeleteCells			: "Delete Cells",
+MergeCells			: "Merge Cells",
+SplitCell			: "Split Cell",
+TableDelete			: "Delete Table",
+CellProperties		: "Cell Properties",
+TableProperties		: "Table Properties",
+ImageProperties		: "Image Properties",
+FlashProperties		: "Flash Properties",
+
+AnchorProp			: "Anchor Properties",
+ButtonProp			: "Button Properties",
+CheckboxProp		: "Checkbox Properties",
+HiddenFieldProp		: "Hidden Field Properties",
+RadioButtonProp		: "Radio Button Properties",
+ImageButtonProp		: "Image Button Properties",
+TextFieldProp		: "Text Field Properties",
+SelectionFieldProp	: "Selection Field Properties",
+TextareaProp		: "Textarea Properties",
+FormProp			: "Form Properties",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Processing XHTML. Please wait...",
+Done				: "Done",
+PasteWordConfirm	: "The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?",
+NotCompatiblePaste	: "This command is available for Internet Explorer version 5.5 or more. Do you want to paste without cleaning?",
+UnknownToolbarItem	: "Unknown toolbar item \"%1\"",
+UnknownCommand		: "Unknown command name \"%1\"",
+NotImplemented		: "Command not implemented",
+UnknownToolbarSet	: "Toolbar set \"%1\" doesn't exist",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
+
+// Dialogs
+DlgBtnOK			: "OK",
+DlgBtnCancel		: "Cancel",
+DlgBtnClose			: "Close",
+DlgBtnBrowseServer	: "Browse Server",
+DlgAdvancedTag		: "Advanced",
+DlgOpOther			: "<Other>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Please insert the URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<not set>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Language Direction",
+DlgGenLangDirLtr	: "Left to Right (LTR)",
+DlgGenLangDirRtl	: "Right to Left (RTL)",
+DlgGenLangCode		: "Language Code",
+DlgGenAccessKey		: "Access Key",
+DlgGenName			: "Name",
+DlgGenTabIndex		: "Tab Index",
+DlgGenLongDescr		: "Long Description URL",
+DlgGenClass			: "Stylesheet Classes",
+DlgGenTitle			: "Advisory Title",
+DlgGenContType		: "Advisory Content Type",
+DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenStyle			: "Style",
+
+// Image Dialog
+DlgImgTitle			: "Image Properties",
+DlgImgInfoTab		: "Image Info",
+DlgImgBtnUpload		: "Send it to the Server",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Upload",
+DlgImgAlt			: "Alternative Text",
+DlgImgWidth			: "Width",
+DlgImgHeight		: "Height",
+DlgImgLockRatio		: "Lock Ratio",
+DlgBtnResetSize		: "Reset Size",
+DlgImgBorder		: "Border",
+DlgImgHSpace		: "HSpace",
+DlgImgVSpace		: "VSpace",
+DlgImgAlign			: "Align",
+DlgImgAlignLeft		: "Left",
+DlgImgAlignAbsBottom: "Abs Bottom",
+DlgImgAlignAbsMiddle: "Abs Middle",
+DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBottom	: "Bottom",
+DlgImgAlignMiddle	: "Middle",
+DlgImgAlignRight	: "Right",
+DlgImgAlignTextTop	: "Text Top",
+DlgImgAlignTop		: "Top",
+DlgImgPreview		: "Preview",
+DlgImgAlertUrl		: "Please type the image URL",
+DlgImgLinkTab		: "Link",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash Properties",
+DlgFlashChkPlay		: "Auto Play",
+DlgFlashChkLoop		: "Loop",
+DlgFlashChkMenu		: "Enable Flash Menu",
+DlgFlashScale		: "Scale",
+DlgFlashScaleAll	: "Show all",
+DlgFlashScaleNoBorder	: "No Border",
+DlgFlashScaleFit	: "Exact Fit",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Link",
+DlgLnkInfoTab		: "Link Info",
+DlgLnkTargetTab		: "Target",
+
+DlgLnkType			: "Link Type",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Anchor in this page",
+DlgLnkTypeEMail		: "E-Mail",
+DlgLnkProto			: "Protocol",
+DlgLnkProtoOther	: "<other>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Select an Anchor",
+DlgLnkAnchorByName	: "By Anchor Name",
+DlgLnkAnchorById	: "By Element Id",
+DlgLnkNoAnchors		: "<No anchors available in the document>",
+DlgLnkEMail			: "E-Mail Address",
+DlgLnkEMailSubject	: "Message Subject",
+DlgLnkEMailBody		: "Message Body",
+DlgLnkUpload		: "Upload",
+DlgLnkBtnUpload		: "Send it to the Server",
+
+DlgLnkTarget		: "Target",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<popup window>",
+DlgLnkTargetBlank	: "New Window (_blank)",
+DlgLnkTargetParent	: "Parent Window (_parent)",
+DlgLnkTargetSelf	: "Same Window (_self)",
+DlgLnkTargetTop		: "Topmost Window (_top)",
+DlgLnkTargetFrameName	: "Target Frame Name",
+DlgLnkPopWinName	: "Popup Window Name",
+DlgLnkPopWinFeat	: "Popup Window Features",
+DlgLnkPopResize		: "Resizable",
+DlgLnkPopLocation	: "Location Bar",
+DlgLnkPopMenu		: "Menu Bar",
+DlgLnkPopScroll		: "Scroll Bars",
+DlgLnkPopStatus		: "Status Bar",
+DlgLnkPopToolbar	: "Toolbar",
+DlgLnkPopFullScrn	: "Full Screen (IE)",
+DlgLnkPopDependent	: "Dependent (Netscape)",
+DlgLnkPopWidth		: "Width",
+DlgLnkPopHeight		: "Height",
+DlgLnkPopLeft		: "Left Position",
+DlgLnkPopTop		: "Top Position",
+
+DlnLnkMsgNoUrl		: "Please type the link URL",
+DlnLnkMsgNoEMail	: "Please type the e-mail address",
+DlnLnkMsgNoAnchor	: "Please select an anchor",
+
+// Color Dialog
+DlgColorTitle		: "Select Colour",
+DlgColorBtnClear	: "Clear",
+DlgColorHighlight	: "Highlight",
+DlgColorSelected	: "Selected",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Insert a Smiley",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Select Special Character",
+
+// Table Dialog
+DlgTableTitle		: "Table Properties",
+DlgTableRows		: "Rows",
+DlgTableColumns		: "Columns",
+DlgTableBorder		: "Border size",
+DlgTableAlign		: "Alignment",
+DlgTableAlignNotSet	: "<Not set>",
+DlgTableAlignLeft	: "Left",
+DlgTableAlignCenter	: "Centre",
+DlgTableAlignRight	: "Right",
+DlgTableWidth		: "Width",
+DlgTableWidthPx		: "pixels",
+DlgTableWidthPc		: "percent",
+DlgTableHeight		: "Height",
+DlgTableCellSpace	: "Cell spacing",
+DlgTableCellPad		: "Cell padding",
+DlgTableCaption		: "Caption",
+DlgTableSummary		: "Summary",
+
+// Table Cell Dialog
+DlgCellTitle		: "Cell Properties",
+DlgCellWidth		: "Width",
+DlgCellWidthPx		: "pixels",
+DlgCellWidthPc		: "percent",
+DlgCellHeight		: "Height",
+DlgCellWordWrap		: "Word Wrap",
+DlgCellWordWrapNotSet	: "<Not set>",
+DlgCellWordWrapYes	: "Yes",
+DlgCellWordWrapNo	: "No",
+DlgCellHorAlign		: "Horizontal Alignment",
+DlgCellHorAlignNotSet	: "<Not set>",
+DlgCellHorAlignLeft	: "Left",
+DlgCellHorAlignCenter	: "Centre",
+DlgCellHorAlignRight: "Right",
+DlgCellVerAlign		: "Vertical Alignment",
+DlgCellVerAlignNotSet	: "<Not set>",
+DlgCellVerAlignTop	: "Top",
+DlgCellVerAlignMiddle	: "Middle",
+DlgCellVerAlignBottom	: "Bottom",
+DlgCellVerAlignBaseline	: "Baseline",
+DlgCellRowSpan		: "Rows Span",
+DlgCellCollSpan		: "Columns Span",
+DlgCellBackColor	: "Background Colour",
+DlgCellBorderColor	: "Border Colour",
+DlgCellBtnSelect	: "Select...",
+
+// Find Dialog
+DlgFindTitle		: "Find",
+DlgFindFindBtn		: "Find",
+DlgFindNotFoundMsg	: "The specified text was not found.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Replace",
+DlgReplaceFindLbl		: "Find what:",
+DlgReplaceReplaceLbl	: "Replace with:",
+DlgReplaceCaseChk		: "Match case",
+DlgReplaceReplaceBtn	: "Replace",
+DlgReplaceReplAllBtn	: "Replace All",
+DlgReplaceWordChk		: "Match whole word",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Your browser security settings don't permit the editor to automatically execute pasting operations. Please use the keyboard for that (Ctrl+V).",
+PasteErrorCut	: "Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).",
+PasteErrorCopy	: "Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).",
+
+PasteAsText		: "Paste as Plain Text",
+PasteFromWord	: "Paste from Word",
+
+DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignore Font Face definitions",
+DlgPasteRemoveStyles	: "Remove Styles definitions",
+DlgPasteCleanBox		: "Clean Up Box",
+
+// Color Picker
+ColorAutomatic	: "Automatic",
+ColorMoreColors	: "More Colours...",
+
+// Document Properties
+DocProps		: "Document Properties",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Anchor Properties",
+DlgAnchorName		: "Anchor Name",
+DlgAnchorErrorName	: "Please type the anchor name",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Not in dictionary",
+DlgSpellChangeTo		: "Change to",
+DlgSpellBtnIgnore		: "Ignore",
+DlgSpellBtnIgnoreAll	: "Ignore All",
+DlgSpellBtnReplace		: "Replace",
+DlgSpellBtnReplaceAll	: "Replace All",
+DlgSpellBtnUndo			: "Undo",
+DlgSpellNoSuggestions	: "- No suggestions -",
+DlgSpellProgress		: "Spell check in progress...",
+DlgSpellNoMispell		: "Spell check complete: No misspellings found",
+DlgSpellNoChanges		: "Spell check complete: No words changed",
+DlgSpellOneChange		: "Spell check complete: One word changed",
+DlgSpellManyChanges		: "Spell check complete: %1 words changed",
+
+IeSpellDownload			: "Spell checker not installed. Do you want to download it now?",
+
+// Button Dialog
+DlgButtonText	: "Text (Value)",
+DlgButtonType	: "Type",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Name",
+DlgCheckboxValue	: "Value",
+DlgCheckboxSelected	: "Selected",
+
+// Form Dialog
+DlgFormName		: "Name",
+DlgFormAction	: "Action",
+DlgFormMethod	: "Method",
+
+// Select Field Dialog
+DlgSelectName		: "Name",
+DlgSelectValue		: "Value",
+DlgSelectSize		: "Size",
+DlgSelectLines		: "lines",
+DlgSelectChkMulti	: "Allow multiple selections",
+DlgSelectOpAvail	: "Available Options",
+DlgSelectOpText		: "Text",
+DlgSelectOpValue	: "Value",
+DlgSelectBtnAdd		: "Add",
+DlgSelectBtnModify	: "Modify",
+DlgSelectBtnUp		: "Up",
+DlgSelectBtnDown	: "Down",
+DlgSelectBtnSetValue : "Set as selected value",
+DlgSelectBtnDelete	: "Delete",
+
+// Textarea Dialog
+DlgTextareaName	: "Name",
+DlgTextareaCols	: "Columns",
+DlgTextareaRows	: "Rows",
+
+// Text Field Dialog
+DlgTextName			: "Name",
+DlgTextValue		: "Value",
+DlgTextCharWidth	: "Character Width",
+DlgTextMaxChars		: "Maximum Characters",
+DlgTextType			: "Type",
+DlgTextTypeText		: "Text",
+DlgTextTypePass		: "Password",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Name",
+DlgHiddenValue	: "Value",
+
+// Bulleted List Dialog
+BulletedListProp	: "Bulleted List Properties",
+NumberedListProp	: "Numbered List Properties",
+DlgLstType			: "Type",
+DlgLstTypeCircle	: "Circle",
+DlgLstTypeDisc		: "Disc",
+DlgLstTypeSquare	: "Square",
+DlgLstTypeNumbers	: "Numbers (1, 2, 3)",
+DlgLstTypeLCase		: "Lowercase Letters (a, b, c)",
+DlgLstTypeUCase		: "Uppercase Letters (A, B, C)",
+DlgLstTypeSRoman	: "Small Roman Numerals (i, ii, iii)",
+DlgLstTypeLRoman	: "Large Roman Numerals (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "General",
+DlgDocBackTab		: "Background",
+DlgDocColorsTab		: "Colours and Margins",
+DlgDocMetaTab		: "Meta Data",
+
+DlgDocPageTitle		: "Page Title",
+DlgDocLangDir		: "Language Direction",
+DlgDocLangDirLTR	: "Left to Right (LTR)",
+DlgDocLangDirRTL	: "Right to Left (RTL)",
+DlgDocLangCode		: "Language Code",
+DlgDocCharSet		: "Character Set Encoding",
+DlgDocCharSetOther	: "Other Character Set Encoding",
+
+DlgDocDocType		: "Document Type Heading",
+DlgDocDocTypeOther	: "Other Document Type Heading",
+DlgDocIncXHTML		: "Include XHTML Declarations",
+DlgDocBgColor		: "Background Colour",
+DlgDocBgImage		: "Background Image URL",
+DlgDocBgNoScroll	: "Nonscrolling Background",
+DlgDocCText			: "Text",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Visited Link",
+DlgDocCActive		: "Active Link",
+DlgDocMargins		: "Page Margins",
+DlgDocMaTop			: "Top",
+DlgDocMaLeft		: "Left",
+DlgDocMaRight		: "Right",
+DlgDocMaBottom		: "Bottom",
+DlgDocMeIndex		: "Document Indexing Keywords (comma separated)",
+DlgDocMeDescr		: "Document Description",
+DlgDocMeAuthor		: "Author",
+DlgDocMeCopy		: "Copyright",
+DlgDocPreview		: "Preview",
+
+// Templates Dialog
+Templates			: "Templates",
+DlgTemplatesTitle	: "Content Templates",
+DlgTemplatesSelMsg	: "Please select the template to open in the editor<br>(the actual contents will be lost):",
+DlgTemplatesLoading	: "Loading templates list. Please wait...",
+DlgTemplatesNoTpl	: "(No templates defined)",
+
+// About Dialog
+DlgAboutAboutTab	: "About",
+DlgAboutBrowserInfoTab	: "Browser Info",
+DlgAboutLicenseTab	: "License",
+DlgAboutVersion		: "version",
+DlgAboutLicense		: "Licensed under the terms of the GNU Lesser General Public License",
+DlgAboutInfo		: "For further information go to"
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/en.js 1.4.1.src/fckeditor/editor/lang/en.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/en.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/en.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -49,7 +49,7 @@
 InsertTable			: "Insert/Edit Table",
 InsertLineLbl		: "Line",
 InsertLine			: "Insert Horizontal Line",
-InsertSpecialCharLbl: "Special Char",
+InsertSpecialCharLbl: "Special Character",
 InsertSpecialChar	: "Insert Special Character",
 InsertSmileyLbl		: "Smiley",
 InsertSmiley		: "Insert Smiley",
@@ -83,7 +83,7 @@
 Source				: "Source",
 Find				: "Find",
 Replace				: "Replace",
-SpellCheck			: "Check Spell",
+SpellCheck			: "Check Spelling",
 UniversalKeyboard	: "Universal Keyboard",
 PageBreakLbl		: "Page Break",
 PageBreak			: "Insert Page Break",
@@ -98,8 +98,13 @@
 SelectionField	: "Selection Field",
 ImageButton		: "Image Button",
 
+FitWindow		: "Maximize the editor size",
+
 // Context Menu
 EditLink			: "Edit Link",
+CellCM				: "Cell",
+RowCM				: "Row",
+ColumnCM			: "Column",
 InsertRow			: "Insert Row",
 DeleteRows			: "Delete Rows",
 InsertColumn		: "Insert Column",
@@ -108,6 +113,7 @@
 DeleteCells			: "Delete Cells",
 MergeCells			: "Merge Cells",
 SplitCell			: "Split Cell",
+TableDelete			: "Delete Table",
 CellProperties		: "Cell Properties",
 TableProperties		: "Table Properties",
 ImageProperties		: "Image Properties",
@@ -124,7 +130,7 @@
 TextareaProp		: "Textarea Properties",
 FormProp			: "Form Properties",
 
-FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Paragraph (DIV)",
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
 
 // Alerts and Messages
 ProcessingXHTML		: "Processing XHTML. Please wait...",
@@ -135,7 +141,9 @@
 UnknownCommand		: "Unknown command name \"%1\"",
 NotImplemented		: "Command not implemented",
 UnknownToolbarSet	: "Toolbar set \"%1\" doesn't exist",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -143,12 +151,12 @@
 DlgBtnClose			: "Close",
 DlgBtnBrowseServer	: "Browse Server",
 DlgAdvancedTag		: "Advanced",
-DlgOpOther			: "&lt;Other&gt;",
+DlgOpOther			: "<Other>",
 DlgInfoTab			: "Info",
 DlgAlertUrl			: "Please insert the URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;not set&gt;",
+DlgGenNotSet		: "<not set>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Language Direction",
 DlgGenLangDirLtr	: "Left to Right (LTR)",
@@ -212,12 +220,12 @@
 DlgLnkTypeAnchor	: "Anchor in this page",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Protocol",
-DlgLnkProtoOther	: "&lt;other&gt;",
+DlgLnkProtoOther	: "<other>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Select an Anchor",
 DlgLnkAnchorByName	: "By Anchor Name",
 DlgLnkAnchorById	: "By Element Id",
-DlgLnkNoAnchors		: "&lt;No anchors available in the document&gt;",
+DlgLnkNoAnchors		: "<No anchors available in the document>",
 DlgLnkEMail			: "E-Mail Address",
 DlgLnkEMailSubject	: "Message Subject",
 DlgLnkEMailBody		: "Message Body",
@@ -225,8 +233,8 @@
 DlgLnkBtnUpload		: "Send it to the Server",
 
 DlgLnkTarget		: "Target",
-DlgLnkTargetFrame	: "&lt;frame&gt;",
-DlgLnkTargetPopup	: "&lt;popup window&gt;",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<popup window>",
 DlgLnkTargetBlank	: "New Window (_blank)",
 DlgLnkTargetParent	: "Parent Window (_parent)",
 DlgLnkTargetSelf	: "Same Window (_self)",
@@ -280,6 +288,7 @@
 DlgTableCellSpace	: "Cell spacing",
 DlgTableCellPad		: "Cell padding",
 DlgTableCaption		: "Caption",
+DlgTableSummary		: "Summary",
 
 // Table Cell Dialog
 DlgCellTitle		: "Cell Properties",
@@ -288,16 +297,16 @@
 DlgCellWidthPc		: "percent",
 DlgCellHeight		: "Height",
 DlgCellWordWrap		: "Word Wrap",
-DlgCellWordWrapNotSet	: "&lt;Not set&gt;",
+DlgCellWordWrapNotSet	: "<Not set>",
 DlgCellWordWrapYes	: "Yes",
 DlgCellWordWrapNo	: "No",
 DlgCellHorAlign		: "Horizontal Alignment",
-DlgCellHorAlignNotSet	: "&lt;Not set&gt;",
+DlgCellHorAlignNotSet	: "<Not set>",
 DlgCellHorAlignLeft	: "Left",
 DlgCellHorAlignCenter	: "Center",
 DlgCellHorAlignRight: "Right",
 DlgCellVerAlign		: "Vertical Alignment",
-DlgCellVerAlignNotSet	: "&lt;Not set&gt;",
+DlgCellVerAlignNotSet	: "<Not set>",
 DlgCellVerAlignTop	: "Top",
 DlgCellVerAlignMiddle	: "Middle",
 DlgCellVerAlignBottom	: "Bottom",
@@ -335,7 +344,6 @@
 DlgPasteRemoveStyles	: "Remove Styles definitions",
 DlgPasteCleanBox		: "Clean Up Box",
 
-
 // Color Picker
 ColorAutomatic	: "Automatic",
 ColorMoreColors	: "More Colors...",
@@ -471,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "About",
 DlgAboutBrowserInfoTab	: "Browser Info",
+DlgAboutLicenseTab	: "License",
 DlgAboutVersion		: "version",
 DlgAboutLicense		: "Licensed under the terms of the GNU Lesser General Public License",
 DlgAboutInfo		: "For further information go to"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/en-uk.js 1.4.1.src/fckeditor/editor/lang/en-uk.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/en-uk.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/en-uk.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -50,7 +50,7 @@
 InsertTable			: "Insert/Edit Table",
 InsertLineLbl		: "Line",
 InsertLine			: "Insert Horizontal Line",
-InsertSpecialCharLbl: "Special Char",
+InsertSpecialCharLbl: "Special Character",
 InsertSpecialChar	: "Insert Special Character",
 InsertSmileyLbl		: "Smiley",
 InsertSmiley		: "Insert Smiley",
@@ -62,7 +62,7 @@
 Subscript			: "Subscript",
 Superscript			: "Superscript",
 LeftJustify			: "Left Justify",
-CenterJustify		: "Center Justify",
+CenterJustify		: "Centre Justify",
 RightJustify		: "Right Justify",
 BlockJustify		: "Block Justify",
 DecreaseIndent		: "Decrease Indent",
@@ -79,13 +79,15 @@
 FontFormat			: "Format",
 Font				: "Font",
 FontSize			: "Size",
-TextColor			: "Text Color",
-BGColor				: "Background Color",
+TextColor			: "Text Colour",
+BGColor				: "Background Colour",
 Source				: "Source",
 Find				: "Find",
 Replace				: "Replace",
-SpellCheck			: "Check Spell",
+SpellCheck			: "Check Spelling",
 UniversalKeyboard	: "Universal Keyboard",
+PageBreakLbl		: "Page Break",
+PageBreak			: "Insert Page Break",
 
 Form			: "Form",
 Checkbox		: "Checkbox",
@@ -97,8 +99,13 @@
 SelectionField	: "Selection Field",
 ImageButton		: "Image Button",
 
+FitWindow		: "Maximize the editor size",
+
 // Context Menu
 EditLink			: "Edit Link",
+CellCM				: "Cell",
+RowCM				: "Row",
+ColumnCM			: "Column",
 InsertRow			: "Insert Row",
 DeleteRows			: "Delete Rows",
 InsertColumn		: "Insert Column",
@@ -107,6 +114,7 @@
 DeleteCells			: "Delete Cells",
 MergeCells			: "Merge Cells",
 SplitCell			: "Split Cell",
+TableDelete			: "Delete Table",
 CellProperties		: "Cell Properties",
 TableProperties		: "Table Properties",
 ImageProperties		: "Image Properties",
@@ -123,7 +131,7 @@
 TextareaProp		: "Textarea Properties",
 FormProp			: "Form Properties",
 
-FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Paragraph (DIV)",
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
 
 // Alerts and Messages
 ProcessingXHTML		: "Processing XHTML. Please wait...",
@@ -134,7 +142,9 @@
 UnknownCommand		: "Unknown command name \"%1\"",
 NotImplemented		: "Command not implemented",
 UnknownToolbarSet	: "Toolbar set \"%1\" doesn't exist",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -142,12 +152,12 @@
 DlgBtnClose			: "Close",
 DlgBtnBrowseServer	: "Browse Server",
 DlgAdvancedTag		: "Advanced",
-DlgOpOther			: "&lt;Other&gt;",
+DlgOpOther			: "<Other>",
 DlgInfoTab			: "Info",
 DlgAlertUrl			: "Please insert the URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;not set&gt;",
+DlgGenNotSet		: "<not set>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Language Direction",
 DlgGenLangDirLtr	: "Left to Right (LTR)",
@@ -211,12 +221,12 @@
 DlgLnkTypeAnchor	: "Anchor in this page",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Protocol",
-DlgLnkProtoOther	: "&lt;other&gt;",
+DlgLnkProtoOther	: "<other>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Select an Anchor",
 DlgLnkAnchorByName	: "By Anchor Name",
 DlgLnkAnchorById	: "By Element Id",
-DlgLnkNoAnchors		: "&lt;No anchors available in the document&gt;",
+DlgLnkNoAnchors		: "<No anchors available in the document>",
 DlgLnkEMail			: "E-Mail Address",
 DlgLnkEMailSubject	: "Message Subject",
 DlgLnkEMailBody		: "Message Body",
@@ -224,8 +234,8 @@
 DlgLnkBtnUpload		: "Send it to the Server",
 
 DlgLnkTarget		: "Target",
-DlgLnkTargetFrame	: "&lt;frame&gt;",
-DlgLnkTargetPopup	: "&lt;popup window&gt;",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<popup window>",
 DlgLnkTargetBlank	: "New Window (_blank)",
 DlgLnkTargetParent	: "Parent Window (_parent)",
 DlgLnkTargetSelf	: "Same Window (_self)",
@@ -251,7 +261,7 @@
 DlnLnkMsgNoAnchor	: "Please select an anchor",
 
 // Color Dialog
-DlgColorTitle		: "Select Color",
+DlgColorTitle		: "Select Colour",
 DlgColorBtnClear	: "Clear",
 DlgColorHighlight	: "Highlight",
 DlgColorSelected	: "Selected",
@@ -279,6 +289,7 @@
 DlgTableCellSpace	: "Cell spacing",
 DlgTableCellPad		: "Cell padding",
 DlgTableCaption		: "Caption",
+DlgTableSummary		: "Summary",
 
 // Table Cell Dialog
 DlgCellTitle		: "Cell Properties",
@@ -287,24 +298,24 @@
 DlgCellWidthPc		: "percent",
 DlgCellHeight		: "Height",
 DlgCellWordWrap		: "Word Wrap",
-DlgCellWordWrapNotSet	: "&lt;Not set&gt;",
+DlgCellWordWrapNotSet	: "<Not set>",
 DlgCellWordWrapYes	: "Yes",
 DlgCellWordWrapNo	: "No",
 DlgCellHorAlign		: "Horizontal Alignment",
-DlgCellHorAlignNotSet	: "&lt;Not set&gt;",
+DlgCellHorAlignNotSet	: "<Not set>",
 DlgCellHorAlignLeft	: "Left",
 DlgCellHorAlignCenter	: "Centre",
 DlgCellHorAlignRight: "Right",
 DlgCellVerAlign		: "Vertical Alignment",
-DlgCellVerAlignNotSet	: "&lt;Not set&gt;",
+DlgCellVerAlignNotSet	: "<Not set>",
 DlgCellVerAlignTop	: "Top",
 DlgCellVerAlignMiddle	: "Middle",
 DlgCellVerAlignBottom	: "Bottom",
 DlgCellVerAlignBaseline	: "Baseline",
 DlgCellRowSpan		: "Rows Span",
 DlgCellCollSpan		: "Columns Span",
-DlgCellBackColor	: "Background Color",
-DlgCellBorderColor	: "Border Color",
+DlgCellBackColor	: "Background Colour",
+DlgCellBorderColor	: "Border Colour",
 DlgCellBtnSelect	: "Select...",
 
 // Find Dialog
@@ -322,9 +333,9 @@
 DlgReplaceWordChk		: "Match whole word",
 
 // Paste Operations / Dialog
-PasteErrorPaste	: "Your browser security settings don't permit the editor to automaticaly execute pasting operations. Please use the keyboard for that (Ctrl+V).",
-PasteErrorCut	: "Your browser security settings don't permit the editor to automaticaly execute cutting operations. Please use the keyboard for that (Ctrl+X).",
-PasteErrorCopy	: "Your browser security settings don't permit the editor to automaticaly execute copying operations. Please use the keyboard for that (Ctrl+C).",
+PasteErrorPaste	: "Your browser security settings don't permit the editor to automatically execute pasting operations. Please use the keyboard for that (Ctrl+V).",
+PasteErrorCut	: "Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).",
+PasteErrorCopy	: "Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).",
 
 PasteAsText		: "Paste as Plain Text",
 PasteFromWord	: "Paste from Word",
@@ -334,10 +345,9 @@
 DlgPasteRemoveStyles	: "Remove Styles definitions",
 DlgPasteCleanBox		: "Clean Up Box",
 
-
 // Color Picker
 ColorAutomatic	: "Automatic",
-ColorMoreColors	: "More Colors...",
+ColorMoreColors	: "More Colours...",
 
 // Document Properties
 DocProps		: "Document Properties",
@@ -417,7 +427,7 @@
 NumberedListProp	: "Numbered List Properties",
 DlgLstType			: "Type",
 DlgLstTypeCircle	: "Circle",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Disc",
 DlgLstTypeSquare	: "Square",
 DlgLstTypeNumbers	: "Numbers (1, 2, 3)",
 DlgLstTypeLCase		: "Lowercase Letters (a, b, c)",
@@ -428,7 +438,7 @@
 // Document Properties Dialog
 DlgDocGeneralTab	: "General",
 DlgDocBackTab		: "Background",
-DlgDocColorsTab		: "Colors and Margins",
+DlgDocColorsTab		: "Colours and Margins",
 DlgDocMetaTab		: "Meta Data",
 
 DlgDocPageTitle		: "Page Title",
@@ -442,7 +452,7 @@
 DlgDocDocType		: "Document Type Heading",
 DlgDocDocTypeOther	: "Other Document Type Heading",
 DlgDocIncXHTML		: "Include XHTML Declarations",
-DlgDocBgColor		: "Background Color",
+DlgDocBgColor		: "Background Colour",
 DlgDocBgImage		: "Background Image URL",
 DlgDocBgNoScroll	: "Nonscrolling Background",
 DlgDocCText			: "Text",
@@ -470,6 +480,7 @@
 // About Dialog
 DlgAboutAboutTab	: "About",
 DlgAboutBrowserInfoTab	: "Browser Info",
+DlgAboutLicenseTab	: "License",
 DlgAboutVersion		: "version",
 DlgAboutLicense		: "Licensed under the terms of the GNU Lesser General Public License",
 DlgAboutInfo		: "For further information go to"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/eo.js 1.4.1.src/fckeditor/editor/lang/eo.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/eo.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/eo.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -85,6 +85,8 @@
 Replace				: "Anstataŭigi",
 SpellCheck			: "Literumada Kontrolilo",
 UniversalKeyboard	: "Universala Klavaro",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
 
 Form			: "Formularo",
 Checkbox		: "Markobutono",
@@ -96,8 +98,13 @@
 SelectionField	: "Elekta Kampo",
 ImageButton		: "Bildbutono",
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "Modifier Ligilon",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "Enmeti Linion",
 DeleteRows			: "Forigi Liniojn",
 InsertColumn		: "Enmeti Kolumnon",
@@ -106,6 +113,7 @@
 DeleteCells			: "Forigi Ĉelojn",
 MergeCells			: "Kunfandi Ĉelojn",
 SplitCell			: "Dividi Ĉelojn",
+TableDelete			: "Delete Table",	//MISSING
 CellProperties		: "Atributoj de Ĉelo",
 TableProperties		: "Atributoj de Tabelo",
 ImageProperties		: "Atributoj de Bildo",
@@ -133,7 +141,9 @@
 UnknownCommand		: "Komandonomo nekonata \"%1\"",
 NotImplemented		: "Komando ne ankoraŭ realigita",
 UnknownToolbarSet	: "La ilobreto \"%1\" ne ekzistas",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "Akcepti",
@@ -141,12 +151,12 @@
 DlgBtnClose			: "Fermi",
 DlgBtnBrowseServer	: "Foliumi en la Servilo",
 DlgAdvancedTag		: "Speciala",
-DlgOpOther			: "&lt;Alia&gt;",
+DlgOpOther			: "<Alia>",
 DlgInfoTab			: "Info",	//MISSING
 DlgAlertUrl			: "Please insert the URL",	//MISSING
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;Defaŭlta&gt;",
+DlgGenNotSet		: "<Defaŭlta>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Skribdirekto",
 DlgGenLangDirLtr	: "De maldekstro dekstren (LTR)",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Ankri en tiu ĉi paĝo",
 DlgLnkTypeEMail		: "Retpoŝto",
 DlgLnkProto			: "Protokolo",
-DlgLnkProtoOther	: "&lt;alia&gt;",
+DlgLnkProtoOther	: "<alia>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Elekti Ankron",
 DlgLnkAnchorByName	: "Per Ankronomo",
 DlgLnkAnchorById	: "Per Elementidentigilo",
-DlgLnkNoAnchors		: "&lt;Ne disponeblas ankroj en la dokumento&gt;",
+DlgLnkNoAnchors		: "<Ne disponeblas ankroj en la dokumento>",
 DlgLnkEMail			: "Retadreso",
 DlgLnkEMailSubject	: "Temlinio",
 DlgLnkEMailBody		: "Mesaĝa korpo",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Sendi al Servilo",
 
 DlgLnkTarget		: "Celo",
-DlgLnkTargetFrame	: "&lt;kadro&gt;",
-DlgLnkTargetPopup	: "&lt;ŝprucfenestro&gt;",
+DlgLnkTargetFrame	: "<kadro>",
+DlgLnkTargetPopup	: "<ŝprucfenestro>",
 DlgLnkTargetBlank	: "Nova Fenestro (_blank)",
 DlgLnkTargetParent	: "Gepatra Fenestro (_parent)",
 DlgLnkTargetSelf	: "Sama Fenestro (_self)",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "Interspacigo de Ĉeloj",
 DlgTableCellPad		: "Ĉirkaŭenhava Plenigado",
 DlgTableCaption		: "Titolo",
+DlgTableSummary		: "Summary",	//MISSING
 
 // Table Cell Dialog
 DlgCellTitle		: "Atributoj de Celo",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
 DlgPasteCleanBox		: "Clean Up Box",	//MISSING
 
-
 // Color Picker
 ColorAutomatic	: "Aŭtomata",
 ColorMoreColors	: "Pli da Koloroj...",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "Pri",
 DlgAboutBrowserInfoTab	: "Informoj pri TTT-legilo",
+DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "versio",
 DlgAboutLicense		: "Disdonata laŭ la GNU Lesser General Public License",
 DlgAboutInfo		: "Por pli da informoj, vizitu"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/es.js 1.4.1.src/fckeditor/editor/lang/es.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/es.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/es.js	2006-09-03 13:05:04.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -85,6 +85,8 @@
 Replace				: "Reemplazar",
 SpellCheck			: "Ortografía",
 UniversalKeyboard	: "Teclado Universal",
+PageBreakLbl		: "Salto de Página",
+PageBreak			: "Insertar Salto de Página",
 
 Form			: "Formulario",
 Checkbox		: "Casilla de Verificación",
@@ -96,8 +98,13 @@
 SelectionField	: "Campo de Selección",
 ImageButton		: "Botón Imagen",
 
+FitWindow		: "Maximizar el tamaño del editor",
+
 // Context Menu
 EditLink			: "Editar Vínculo",
+CellCM				: "Celda",
+RowCM				: "Fila",
+ColumnCM			: "Columna",
 InsertRow			: "Insertar Fila",
 DeleteRows			: "Eliminar Filas",
 InsertColumn		: "Insertar Columna",
@@ -106,6 +113,7 @@
 DeleteCells			: "Eliminar Celdas",
 MergeCells			: "Combinar Celdas",
 SplitCell			: "Dividir Celda",
+TableDelete			: "Eliminar Tabla",
 CellProperties		: "Propiedades de Celda",
 TableProperties		: "Propiedades de Tabla",
 ImageProperties		: "Propiedades de Imagen",
@@ -122,7 +130,7 @@
 TextareaProp		: "Propiedades de Area de Texto",
 FormProp			: "Propiedades de Formulario",
 
-FontFormats			: "Normal;Formateado;Direccion;Encabezado 1;Encabezado 2;Encabezado 3;Encabezado 4;Encabezado 5;Encabezado 6",
+FontFormats			: "Normal;Con formato;Dirección;Encabezado 1;Encabezado 2;Encabezado 3;Encabezado 4;Encabezado 5;Encabezado 6;Normal (DIV)",
 
 // Alerts and Messages
 ProcessingXHTML		: "Procesando XHTML. Por favor, espere...",
@@ -133,7 +141,9 @@
 UnknownCommand		: "Nombre de comando desconocido \"%1\"",
 NotImplemented		: "Comando no implementado",
 UnknownToolbarSet	: "Nombre de barra \"%1\" no definido",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "La configuración de las opciones de seguridad de su navegador puede estar limitando algunas características del editor. Por favor active la opción \"Ejecutar controles y complementos de ActiveX \", de lo contrario puede experimentar errores o ausencia de funcionalidades.",
+BrowseServerBlocked : "La ventana de visualización del servidor no pudo ser abierta. Verifique que su navegador no esté bloqueando las ventanas emergentes (pop up).",
+DialogBlocked		: "No se ha podido abrir la ventana de diálogo. Verifique que su navegador no esté bloqueando las ventanas emergentes (pop up).",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -141,12 +151,12 @@
 DlgBtnClose			: "Cerrar",
 DlgBtnBrowseServer	: "Ver Servidor",
 DlgAdvancedTag		: "Avanzado",
-DlgOpOther			: "&lt;Otro&gt;",
+DlgOpOther			: "<Otro>",
 DlgInfoTab			: "Información",
 DlgAlertUrl			: "Inserte el URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;No definido&gt;",
+DlgGenNotSet		: "<No definido>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Orientación de idioma",
 DlgGenLangDirLtr	: "Izquierda a Derecha (LTR)",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Referencia en esta página",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Protocolo",
-DlgLnkProtoOther	: "&lt;otro&gt;",
+DlgLnkProtoOther	: "<otro>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Seleccionar una referencia",
 DlgLnkAnchorByName	: "Por Nombre de Referencia",
 DlgLnkAnchorById	: "Por ID de elemento",
-DlgLnkNoAnchors		: "&lt;No hay referencias disponibles en el documento&gt;",
+DlgLnkNoAnchors		: "<No hay referencias disponibles en el documento>",
 DlgLnkEMail			: "Dirección de E-Mail",
 DlgLnkEMailSubject	: "Título del Mensaje",
 DlgLnkEMailBody		: "Cuerpo del Mensaje",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Enviar al Servidor",
 
 DlgLnkTarget		: "Destino",
-DlgLnkTargetFrame	: "&lt;marco&gt;",
-DlgLnkTargetPopup	: "&lt;ventana emergente&gt;",
+DlgLnkTargetFrame	: "<marco>",
+DlgLnkTargetPopup	: "<ventana emergente>",
 DlgLnkTargetBlank	: "Nueva Ventana(_blank)",
 DlgLnkTargetParent	: "Ventana Padre (_parent)",
 DlgLnkTargetSelf	: "Misma Ventana (_self)",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "Esp. e/celdas",
 DlgTableCellPad		: "Esp. interior",
 DlgTableCaption		: "Título",
+DlgTableSummary		: "Síntesis",
 
 // Table Cell Dialog
 DlgCellTitle		: "Propiedades de Celda",
@@ -331,8 +342,7 @@
 DlgPasteMsg2	: "Por favor pegue dentro del cuadro utilizando el teclado (<STRONG>Ctrl+V</STRONG>); luego presione <STRONG>OK</STRONG>.",
 DlgPasteIgnoreFont		: "Ignorar definiciones de fuentes",
 DlgPasteRemoveStyles	: "Remover definiciones de estilo",
-DlgPasteCleanBox		: "Clean Up Box",
-
+DlgPasteCleanBox		: "Borrar el contenido del cuadro",
 
 // Color Picker
 ColorAutomatic	: "Automático",
@@ -416,7 +426,7 @@
 NumberedListProp	: "Propiedades de Numeraciones",
 DlgLstType			: "Tipo",
 DlgLstTypeCircle	: "Círculo",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Disco",
 DlgLstTypeSquare	: "Cuadrado",
 DlgLstTypeNumbers	: "Números (1, 2, 3)",
 DlgLstTypeLCase		: "letras en minúsculas (a, b, c)",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "Acerca de",
 DlgAboutBrowserInfoTab	: "Información de Navegador",
+DlgAboutLicenseTab	: "Licencia",
 DlgAboutVersion		: "versión",
 DlgAboutLicense		: "Licenciado bajo los términos de GNU Lesser General Public License",
 DlgAboutInfo		: "Para mayor información por favor dirigirse a"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/et.js 1.4.1.src/fckeditor/editor/lang/et.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/et.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/et.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -15,6 +15,7 @@
  * 
  * File Authors:
  * 		Kristjan Kivikangur (kristjan@ttrk.ee)
+ * 		Gustav Kaskema
  */
 
 var FCKLang =
@@ -40,24 +41,24 @@
 InsertLinkLbl		: "Link",
 InsertLink			: "Sisesta/Muuda link",
 RemoveLink			: "Eemalda link",
-Anchor				: "Insert/Edit Anchor",	//MISSING
+Anchor				: "Sisesta/Muuda ankur",
 InsertImageLbl		: "Pilt",
 InsertImage			: "Sisesta/Muuda pilt",
-InsertFlashLbl		: "Flash",	//MISSING
-InsertFlash			: "Insert/Edit Flash",	//MISSING
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Sisesta/Muuda flash",
 InsertTableLbl		: "Tabel",
 InsertTable			: "Sisesta/Muuda tabel",
 InsertLineLbl		: "Joon",
 InsertLine			: "Sisesta horisontaaljoon",
 InsertSpecialCharLbl: "Erimärgid",
 InsertSpecialChar	: "Sisesta erimärk",
-InsertSmileyLbl		: "Smiley",
-InsertSmiley		: "Sisesta Smiley",
-About				: "FCKeditor kohta",
-Bold				: "Paks",
-Italic				: "Kursiiv",
-Underline			: "Allajoonitud",
-StrikeThrough		: "Läbijoonitud",
+InsertSmileyLbl		: "Emotikon",
+InsertSmiley		: "Sisesta emotikon",
+About				: "FCKeditor teave",
+Bold				: "Rasvane kiri",
+Italic				: "Kursiiv kiri",
+Underline			: "Allajoonitud kiri",
+StrikeThrough		: "Läbijoonitud kiri",
 Subscript			: "Allindeks",
 Superscript			: "Ülaindeks",
 LeftJustify			: "Vasakjoondus",
@@ -67,37 +68,44 @@
 DecreaseIndent		: "Vähenda taanet",
 IncreaseIndent		: "Suurenda taanet",
 Undo				: "Võta tagasi",
-Redo				: "Tee uuesti",
+Redo				: "Korda toimingut",
 NumberedListLbl		: "Nummerdatud loetelu",
 NumberedList		: "Sisesta/Eemalda nummerdatud loetelu",
-BulletedListLbl		: "Täpitud loetelu",
-BulletedList		: "Sisesta/Eemalda täpitud loetelu",
-ShowTableBorders	: "Nöita tabeli jooni",
+BulletedListLbl		: "Punktiseeritud loetelu",
+BulletedList		: "Sisesta/Eemalda punktiseeritud loetelu",
+ShowTableBorders	: "Näita tabeli jooni",
 ShowDetails			: "Näita üksikasju",
 Style				: "Laad",
 FontFormat			: "Vorming",
-Font				: "Font",
+Font				: "Kiri",
 FontSize			: "Suurus",
 TextColor			: "Teksti värv",
 BGColor				: "Tausta värv",
 Source				: "Lähtekood",
 Find				: "Otsi",
 Replace				: "Asenda",
-SpellCheck			: "Check Spell",	//MISSING
-UniversalKeyboard	: "Universal Keyboard",	//MISSING
+SpellCheck			: "Kontrolli õigekirja",
+UniversalKeyboard	: "Universaalne klaviatuur",
+PageBreakLbl		: "Lehepiir",
+PageBreak			: "Sisesta lehevahetus koht",
+
+Form			: "Vorm",
+Checkbox		: "Märkeruut",
+RadioButton		: "Raadionupp",
+TextField		: "Tekstilahter",
+Textarea		: "Tekstiala",
+HiddenField		: "Varjatud lahter",
+Button			: "Nupp",
+SelectionField	: "Valiklahter",
+ImageButton		: "Piltnupp",
 
-Form			: "Form",	//MISSING
-Checkbox		: "Checkbox",	//MISSING
-RadioButton		: "Radio Button",	//MISSING
-TextField		: "Text Field",	//MISSING
-Textarea		: "Textarea",	//MISSING
-HiddenField		: "Hidden Field",	//MISSING
-Button			: "Button",	//MISSING
-SelectionField	: "Selection Field",	//MISSING
-ImageButton		: "Image Button",	//MISSING
+FitWindow		: "Maksimeeri redaktori mõõtmed",
 
 // Context Menu
 EditLink			: "Muuda linki",
+CellCM				: "Lahter",
+RowCM				: "Rida",
+ColumnCM			: "Veerg",
 InsertRow			: "Lisa rida",
 DeleteRows			: "Eemalda ridu",
 InsertColumn		: "Lisa veerg",
@@ -106,21 +114,22 @@
 DeleteCells			: "Eemalda lahtrid",
 MergeCells			: "Ühenda lahtrid",
 SplitCell			: "Lahuta lahtrid",
+TableDelete			: "Kustuta tabel",
 CellProperties		: "Lahtri atribuudid",
 TableProperties		: "Tabeli atribuudid",
 ImageProperties		: "Pildi  atribuudid",
-FlashProperties		: "Flash Properties",	//MISSING
+FlashProperties		: "Flash omadused",
 
-AnchorProp			: "Anchor Properties",	//MISSING
-ButtonProp			: "Button Properties",	//MISSING
-CheckboxProp		: "Checkbox Properties",	//MISSING
-HiddenFieldProp		: "Hidden Field Properties",	//MISSING
-RadioButtonProp		: "Radio Button Properties",	//MISSING
-ImageButtonProp		: "Image Button Properties",	//MISSING
-TextFieldProp		: "Text Field Properties",	//MISSING
-SelectionFieldProp	: "Selection Field Properties",	//MISSING
-TextareaProp		: "Textarea Properties",	//MISSING
-FormProp			: "Form Properties",	//MISSING
+AnchorProp			: "Ankru omadused",
+ButtonProp			: "Nupu omadused",
+CheckboxProp		: "Märkeruudu omadused",
+HiddenFieldProp		: "Varjatud lahtri omadused",
+RadioButtonProp		: "Raadionupu omadused",
+ImageButtonProp		: "Piltnupu omadused",
+TextFieldProp		: "Tekstilahtri omadused",
+SelectionFieldProp	: "Valiklahtri omadused",
+TextareaProp		: "Tekstiala omadused",
+FormProp			: "Vormi omadused",
 
 FontFormats			: "Tavaline;Vormindatud;Aadress;Pealkiri 1;Pealkiri 2;Pealkiri 3;Pealkiri 4;Pealkiri 5;Pealkiri 6",
 
@@ -128,25 +137,27 @@
 ProcessingXHTML		: "Töötlen XHTML. Palun oota...",
 Done				: "Tehtud",
 PasteWordConfirm	: "Tekst, mida soovid lisada paistab pärinevat Wordist. Kas soovid seda enne kleepimist puhastada?",
-NotCompatiblePaste	: "See käsk on saadaval ainult Internet Explorer versioon 5.5 või rohkem puhul. Kas soovid kleepida ilma puhastamata?",
+NotCompatiblePaste	: "See käsk on saadaval ainult Internet Explorer versioon 5.5 või uuema puhul. Kas soovid kleepida ilma puhastamata?",
 UnknownToolbarItem	: "Tundmatu tööriistariba üksus \"%1\"",
 UnknownCommand		: "Tundmatu käsunimi \"%1\"",
 NotImplemented		: "Käsku ei täidetud",
 UnknownToolbarSet	: "Tööriistariba \"%1\" ei eksisteeri",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Sinu interneti sirvija turvalisuse seaded võivad limiteerida mõningaid tekstirdaktori kasutus võimalusi. Sa peaksid võimaldama valiku \"Run ActiveX controls and plug-ins\" oma sirvija seadetes. Muidu võid sa täheldada vigu tekstiredaktori töös ja märgata puuduvaid funktsioone.",
+BrowseServerBlocked : "Ressursside sirvija avamine ebaõnnestus. Võimalda pop-up akende avanemine.",
+DialogBlocked		: "Ei olenud võimalik avada dialoogi akent. Võimalda pop-up akende avanemine.",
 
 // Dialogs
 DlgBtnOK			: "OK",
 DlgBtnCancel		: "Loobu",
-DlgBtnClose			: "Sule",
-DlgBtnBrowseServer	: "Browse Server",	//MISSING
+DlgBtnClose			: "Sulge",
+DlgBtnBrowseServer	: "Sirvi serverit",
 DlgAdvancedTag		: "Täpsemalt",
-DlgOpOther			: "&lt;Other&gt;",	//MISSING
-DlgInfoTab			: "Info",	//MISSING
-DlgAlertUrl			: "Please insert the URL",	//MISSING
+DlgOpOther			: "<Teine>",
+DlgInfoTab			: "Info",
+DlgAlertUrl			: "Palun sisesta URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;määramata&gt;",
+DlgGenNotSet		: "<määramata>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Keele suund",
 DlgGenLangDirLtr	: "Vasakult paremale (LTR)",
@@ -154,18 +165,18 @@
 DlgGenLangCode		: "Keele kood",
 DlgGenAccessKey		: "Juurdepääsu võti",
 DlgGenName			: "Nimi",
-DlgGenTabIndex		: "Tab Index",
+DlgGenTabIndex		: "Tab indeks",
 DlgGenLongDescr		: "Pikk kirjeldus URL",
 DlgGenClass			: "Stiilistiku klassid",
-DlgGenTitle			: "Advisory Title",
-DlgGenContType		: "Advisory Content Type",
-DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenTitle			: "Juhendav tiitel",
+DlgGenContType		: "Juhendava sisu tüüp",
+DlgGenLinkCharset	: "Lingitud ressurssi märgistik",
 DlgGenStyle			: "Laad",
 
 // Image Dialog
 DlgImgTitle			: "Pildi atribuudid",
 DlgImgInfoTab		: "Pildi info",
-DlgImgBtnUpload		: "Saada serverile",
+DlgImgBtnUpload		: "Saada serverissee",
 DlgImgURL			: "URL",
 DlgImgUpload		: "Lae üles",
 DlgImgAlt			: "Alternatiivne tekst",
@@ -174,8 +185,8 @@
 DlgImgLockRatio		: "Lukusta kuvasuhe",
 DlgBtnResetSize		: "Lähtesta suurus",
 DlgImgBorder		: "Joon",
-DlgImgHSpace		: "HSpace",
-DlgImgVSpace		: "VSpace",
+DlgImgHSpace		: "H. vaheruum",
+DlgImgVSpace		: "V. vaheruum",
 DlgImgAlign			: "Joondus",
 DlgImgAlignLeft		: "Vasak",
 DlgImgAlignAbsBottom: "Abs alla",
@@ -184,21 +195,21 @@
 DlgImgAlignBottom	: "Alla",
 DlgImgAlignMiddle	: "Keskele",
 DlgImgAlignRight	: "Paremale",
-DlgImgAlignTextTop	: "Teksti üles",
+DlgImgAlignTextTop	: "Tekstit üles",
 DlgImgAlignTop		: "Üles",
 DlgImgPreview		: "Eelvaade",
 DlgImgAlertUrl		: "Palun kirjuta pildi URL",
-DlgImgLinkTab		: "Link",	//MISSING
+DlgImgLinkTab		: "Link",
 
 // Flash Dialog
-DlgFlashTitle		: "Flash Properties",	//MISSING
-DlgFlashChkPlay		: "Auto Play",	//MISSING
-DlgFlashChkLoop		: "Loop",	//MISSING
-DlgFlashChkMenu		: "Enable Flash Menu",	//MISSING
-DlgFlashScale		: "Scale",	//MISSING
-DlgFlashScaleAll	: "Show all",	//MISSING
-DlgFlashScaleNoBorder	: "No Border",	//MISSING
-DlgFlashScaleFit	: "Exact Fit",	//MISSING
+DlgFlashTitle		: "Flash omadused",
+DlgFlashChkPlay		: "Automaatne start ",
+DlgFlashChkLoop		: "Korduv",
+DlgFlashChkMenu		: "Võimalda flash menüü",
+DlgFlashScale		: "Mastaap",
+DlgFlashScaleAll	: "Näita kõike",
+DlgFlashScaleNoBorder	: "Äärist ei ole",
+DlgFlashScaleFit	: "Täpne sobivus",
 
 // Link Dialog
 DlgLnkWindowTitle	: "Link",
@@ -208,28 +219,28 @@
 DlgLnkType			: "Lingi tüüp",
 DlgLnkTypeURL		: "URL",
 DlgLnkTypeAnchor	: "Ankur sellel lehel",
-DlgLnkTypeEMail		: "E-Post",
+DlgLnkTypeEMail		: "E-post",
 DlgLnkProto			: "Protokoll",
-DlgLnkProtoOther	: "&lt;muu&gt;",
+DlgLnkProtoOther	: "<muu>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Vali ankur",
 DlgLnkAnchorByName	: "Ankru nime järgi",
-DlgLnkAnchorById	: "Elemendi Id järgi",
-DlgLnkNoAnchors		: "&lt;Selles dokumendis ei ole ankruid&gt;",
-DlgLnkEMail			: "E-Posti aadress",
+DlgLnkAnchorById	: "Elemendi id järgi",
+DlgLnkNoAnchors		: "<Selles dokumendis ei ole ankruid>",
+DlgLnkEMail			: "E-posti aadress",
 DlgLnkEMailSubject	: "Sõnumi teema",
 DlgLnkEMailBody		: "Sõnumi tekst",
 DlgLnkUpload		: "Lae üles",
-DlgLnkBtnUpload		: "Saada serverile",
+DlgLnkBtnUpload		: "Saada serverisse",
 
 DlgLnkTarget		: "Sihtkoht",
-DlgLnkTargetFrame	: "&lt;raam&gt;",
-DlgLnkTargetPopup	: "&lt;hüpikaken&gt;",
+DlgLnkTargetFrame	: "<raam>",
+DlgLnkTargetPopup	: "<hüpikaken>",
 DlgLnkTargetBlank	: "Uus aken (_blank)",
 DlgLnkTargetParent	: "Vanem aken (_parent)",
 DlgLnkTargetSelf	: "Sama aken (_self)",
 DlgLnkTargetTop		: "Pealmine aken (_top)",
-DlgLnkTargetFrameName	: "Target Frame Name",	//MISSING
+DlgLnkTargetFrameName	: "Sihtmärk raami nimi",
 DlgLnkPopWinName	: "Hüpikakna nimi",
 DlgLnkPopWinFeat	: "Hüpikakna omadused",
 DlgLnkPopResize		: "Suurendatav",
@@ -256,7 +267,7 @@
 DlgColorSelected	: "Valitud",
 
 // Smiley Dialog
-DlgSmileyTitle		: "Sisesta Smiley",
+DlgSmileyTitle		: "Sisesta emotikon",
 
 // Special Character Dialog
 DlgSpecialCharTitle	: "Vali erimärk",
@@ -277,7 +288,8 @@
 DlgTableHeight		: "Kõrgus",
 DlgTableCellSpace	: "Lahtri vahe",
 DlgTableCellPad		: "Lahtri täidis",
-DlgTableCaption		: "Seletiitel",
+DlgTableCaption		: "Tabeli tiitel",
+DlgTableSummary		: "Kokkuvõte",
 
 // Table Cell Dialog
 DlgCellTitle		: "Lahtri atribuudid",
@@ -285,7 +297,7 @@
 DlgCellWidthPx		: "pikslit",
 DlgCellWidthPc		: "protsenti",
 DlgCellHeight		: "Kõrgus",
-DlgCellWordWrap		: "Murra ridu",
+DlgCellWordWrap		: "Sõna ülekanne",
 DlgCellWordWrapNotSet	: "<Määramata>",
 DlgCellWordWrapYes	: "Jah",
 DlgCellWordWrapNo	: "Ei",
@@ -315,160 +327,160 @@
 DlgReplaceTitle			: "Asenda",
 DlgReplaceFindLbl		: "Leia mida:",
 DlgReplaceReplaceLbl	: "Asenda millega:",
-DlgReplaceCaseChk		: "Erista suurtähti",
+DlgReplaceCaseChk		: "Erista suur- ja väiketähti",
 DlgReplaceReplaceBtn	: "Asenda",
 DlgReplaceReplAllBtn	: "Asenda kõik",
-DlgReplaceWordChk		: "Otsi terveid sõnu",
+DlgReplaceWordChk		: "Otsi terviklike sõnu",
 
 // Paste Operations / Dialog
-PasteErrorPaste	: "Sinu brauseri turvaseaded ei luba redaktoril automaatselt kleepida. Palun kasutage selleks klaviatuuri (Ctrl+V).",
-PasteErrorCut	: "Sinu brauseri turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri (Ctrl+X).",
-PasteErrorCopy	: "Sinu brauseri turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri (Ctrl+C).",
+PasteErrorPaste	: "Sinu interneti sirvija turvaseaded ei luba redaktoril automaatselt kleepida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+V).",
+PasteErrorCut	: "Sinu interneti sirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+X).",
+PasteErrorCopy	: "Sinu interneti sirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+C).",
 
 PasteAsText		: "Kleebi tavalise tekstina",
 PasteFromWord	: "Kleebi Wordist",
 
-DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",	//MISSING
-DlgPasteIgnoreFont		: "Ignore Font Face definitions",	//MISSING
-DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
-DlgPasteCleanBox		: "Clean Up Box",	//MISSING
-
+DlgPasteMsg2	: "Palun kleebi järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (<STRONG>Ctrl+V</STRONG>) ja vajuta seejärel <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignoreeri kirja definitsioone",
+DlgPasteRemoveStyles	: "Eemalda stiilide definitsioonid",
+DlgPasteCleanBox		: "Puhasta ära kast",
 
 // Color Picker
 ColorAutomatic	: "Automaatne",
 ColorMoreColors	: "Rohkem värve...",
 
 // Document Properties
-DocProps		: "Document Properties",	//MISSING
+DocProps		: "Dokumendi omadused",
 
 // Anchor Dialog
-DlgAnchorTitle		: "Anchor Properties",	//MISSING
-DlgAnchorName		: "Anchor Name",	//MISSING
-DlgAnchorErrorName	: "Please type the anchor name",	//MISSING
+DlgAnchorTitle		: "Ankru omadused",
+DlgAnchorName		: "Ankru nimi",
+DlgAnchorErrorName	: "Palun sisest ankru nimi",
 
 // Speller Pages Dialog
-DlgSpellNotInDic		: "Not in dictionary",	//MISSING
-DlgSpellChangeTo		: "Change to",	//MISSING
-DlgSpellBtnIgnore		: "Ignore",	//MISSING
-DlgSpellBtnIgnoreAll	: "Ignore All",	//MISSING
-DlgSpellBtnReplace		: "Replace",	//MISSING
-DlgSpellBtnReplaceAll	: "Replace All",	//MISSING
-DlgSpellBtnUndo			: "Undo",	//MISSING
-DlgSpellNoSuggestions	: "- No suggestions -",	//MISSING
-DlgSpellProgress		: "Spell check in progress...",	//MISSING
-DlgSpellNoMispell		: "Spell check complete: No misspellings found",	//MISSING
-DlgSpellNoChanges		: "Spell check complete: No words changed",	//MISSING
-DlgSpellOneChange		: "Spell check complete: One word changed",	//MISSING
-DlgSpellManyChanges		: "Spell check complete: %1 words changed",	//MISSING
+DlgSpellNotInDic		: "Puudub sõnastikust",
+DlgSpellChangeTo		: "Muuda",
+DlgSpellBtnIgnore		: "Ignoreeri",
+DlgSpellBtnIgnoreAll	: "Ignoreeri kõiki",
+DlgSpellBtnReplace		: "Asenda",
+DlgSpellBtnReplaceAll	: "Asenda kõik",
+DlgSpellBtnUndo			: "Võta tagasi",
+DlgSpellNoSuggestions	: "- Soovitused puuduvad -",
+DlgSpellProgress		: "Toimub õigekirja kontroll...",
+DlgSpellNoMispell		: "Õigekirja kontroll sooritatud: õigekirjuvigu ei leitud",
+DlgSpellNoChanges		: "Õigekirja kontroll sooritatud: ühtegi sõna ei muudetud",
+DlgSpellOneChange		: "Õigekirja kontroll sooritatud: üks sõna muudeti",
+DlgSpellManyChanges		: "Õigekirja kontroll sooritatud: %1 sõna muudetud",
 
-IeSpellDownload			: "Spell checker not installed. Do you want to download it now?",	//MISSING
+IeSpellDownload			: "Õigekirja kontrollija ei ole installeeritud. Soovid sa selle alla laadida?",
 
 // Button Dialog
-DlgButtonText	: "Text (Value)",	//MISSING
-DlgButtonType	: "Type",	//MISSING
+DlgButtonText	: "Tekst (väärtus)",
+DlgButtonType	: "Tüüp",
 
 // Checkbox and Radio Button Dialogs
-DlgCheckboxName		: "Name",	//MISSING
-DlgCheckboxValue	: "Value",	//MISSING
-DlgCheckboxSelected	: "Selected",	//MISSING
+DlgCheckboxName		: "Nimi",
+DlgCheckboxValue	: "Väärtus",
+DlgCheckboxSelected	: "Valitud",
 
 // Form Dialog
-DlgFormName		: "Name",	//MISSING
-DlgFormAction	: "Action",	//MISSING
-DlgFormMethod	: "Method",	//MISSING
+DlgFormName		: "Nimi",
+DlgFormAction	: "Toiming",
+DlgFormMethod	: "Meetod",
 
 // Select Field Dialog
-DlgSelectName		: "Name",	//MISSING
-DlgSelectValue		: "Value",	//MISSING
-DlgSelectSize		: "Size",	//MISSING
-DlgSelectLines		: "lines",	//MISSING
-DlgSelectChkMulti	: "Allow multiple selections",	//MISSING
-DlgSelectOpAvail	: "Available Options",	//MISSING
-DlgSelectOpText		: "Text",	//MISSING
-DlgSelectOpValue	: "Value",	//MISSING
-DlgSelectBtnAdd		: "Add",	//MISSING
-DlgSelectBtnModify	: "Modify",	//MISSING
-DlgSelectBtnUp		: "Up",	//MISSING
-DlgSelectBtnDown	: "Down",	//MISSING
-DlgSelectBtnSetValue : "Set as selected value",	//MISSING
-DlgSelectBtnDelete	: "Delete",	//MISSING
+DlgSelectName		: "Nimi",
+DlgSelectValue		: "Väärtus",
+DlgSelectSize		: "Suurus",
+DlgSelectLines		: "ridu",
+DlgSelectChkMulti	: "Võimalda mitu valikut",
+DlgSelectOpAvail	: "Võimalikud valikud",
+DlgSelectOpText		: "Tekst",
+DlgSelectOpValue	: "Väärtus",
+DlgSelectBtnAdd		: "Lisa",
+DlgSelectBtnModify	: "Muuda",
+DlgSelectBtnUp		: "Üles",
+DlgSelectBtnDown	: "Alla",
+DlgSelectBtnSetValue : "Sea valitud olekuna",
+DlgSelectBtnDelete	: "Kustuta",
 
 // Textarea Dialog
-DlgTextareaName	: "Name",	//MISSING
-DlgTextareaCols	: "Columns",	//MISSING
-DlgTextareaRows	: "Rows",	//MISSING
+DlgTextareaName	: "Nimi",
+DlgTextareaCols	: "Veerge",
+DlgTextareaRows	: "Ridu",
 
 // Text Field Dialog
-DlgTextName			: "Name",	//MISSING
-DlgTextValue		: "Value",	//MISSING
-DlgTextCharWidth	: "Character Width",	//MISSING
-DlgTextMaxChars		: "Maximum Characters",	//MISSING
-DlgTextType			: "Type",	//MISSING
-DlgTextTypeText		: "Text",	//MISSING
-DlgTextTypePass		: "Password",	//MISSING
+DlgTextName			: "Nimi",
+DlgTextValue		: "Väärtus",
+DlgTextCharWidth	: "Laius (tähemärkides)",
+DlgTextMaxChars		: "Maksimaalselt tähemärke",
+DlgTextType			: "Tüüp",
+DlgTextTypeText		: "Tekst",
+DlgTextTypePass		: "Parool",
 
 // Hidden Field Dialog
-DlgHiddenName	: "Name",	//MISSING
-DlgHiddenValue	: "Value",	//MISSING
+DlgHiddenName	: "Nimi",
+DlgHiddenValue	: "Väärtus",
 
 // Bulleted List Dialog
-BulletedListProp	: "Bulleted List Properties",	//MISSING
-NumberedListProp	: "Numbered List Properties",	//MISSING
-DlgLstType			: "Type",	//MISSING
-DlgLstTypeCircle	: "Circle",	//MISSING
-DlgLstTypeDisc		: "Disc",	//MISSING
-DlgLstTypeSquare	: "Square",	//MISSING
-DlgLstTypeNumbers	: "Numbers (1, 2, 3)",	//MISSING
-DlgLstTypeLCase		: "Lowercase Letters (a, b, c)",	//MISSING
-DlgLstTypeUCase		: "Uppercase Letters (A, B, C)",	//MISSING
-DlgLstTypeSRoman	: "Small Roman Numerals (i, ii, iii)",	//MISSING
-DlgLstTypeLRoman	: "Large Roman Numerals (I, II, III)",	//MISSING
+BulletedListProp	: "Täpitud loetelu omadused",
+NumberedListProp	: "Nummerdatud loetelu omadused",
+DlgLstType			: "Tüüp",
+DlgLstTypeCircle	: "Ring",
+DlgLstTypeDisc		: "Ketas",
+DlgLstTypeSquare	: "Ruut",
+DlgLstTypeNumbers	: "Numbrid (1, 2, 3)",
+DlgLstTypeLCase		: "Väiketähed (a, b, c)",
+DlgLstTypeUCase		: "Suurtähed (A, B, C)",
+DlgLstTypeSRoman	: "Väiksed Rooma numbrid (i, ii, iii)",
+DlgLstTypeLRoman	: "Suured Rooma numbrid (I, II, III)",
 
 // Document Properties Dialog
-DlgDocGeneralTab	: "General",	//MISSING
-DlgDocBackTab		: "Background",	//MISSING
-DlgDocColorsTab		: "Colors and Margins",	//MISSING
-DlgDocMetaTab		: "Meta Data",	//MISSING
-
-DlgDocPageTitle		: "Page Title",	//MISSING
-DlgDocLangDir		: "Language Direction",	//MISSING
-DlgDocLangDirLTR	: "Left to Right (LTR)",	//MISSING
-DlgDocLangDirRTL	: "Right to Left (RTL)",	//MISSING
-DlgDocLangCode		: "Language Code",	//MISSING
-DlgDocCharSet		: "Character Set Encoding",	//MISSING
-DlgDocCharSetOther	: "Other Character Set Encoding",	//MISSING
-
-DlgDocDocType		: "Document Type Heading",	//MISSING
-DlgDocDocTypeOther	: "Other Document Type Heading",	//MISSING
-DlgDocIncXHTML		: "Include XHTML Declarations",	//MISSING
-DlgDocBgColor		: "Background Color",	//MISSING
-DlgDocBgImage		: "Background Image URL",	//MISSING
-DlgDocBgNoScroll	: "Nonscrolling Background",	//MISSING
-DlgDocCText			: "Text",	//MISSING
-DlgDocCLink			: "Link",	//MISSING
-DlgDocCVisited		: "Visited Link",	//MISSING
-DlgDocCActive		: "Active Link",	//MISSING
-DlgDocMargins		: "Page Margins",	//MISSING
-DlgDocMaTop			: "Top",	//MISSING
-DlgDocMaLeft		: "Left",	//MISSING
-DlgDocMaRight		: "Right",	//MISSING
-DlgDocMaBottom		: "Bottom",	//MISSING
-DlgDocMeIndex		: "Document Indexing Keywords (comma separated)",	//MISSING
-DlgDocMeDescr		: "Document Description",	//MISSING
-DlgDocMeAuthor		: "Author",	//MISSING
-DlgDocMeCopy		: "Copyright",	//MISSING
-DlgDocPreview		: "Preview",	//MISSING
+DlgDocGeneralTab	: "Üldine",
+DlgDocBackTab		: "Taust",
+DlgDocColorsTab		: "Värvid ja veerised",
+DlgDocMetaTab		: "Meta andmed",
+
+DlgDocPageTitle		: "Lehekülje tiitel",
+DlgDocLangDir		: "Kirja suund",
+DlgDocLangDirLTR	: "Vasakult paremale (LTR)",
+DlgDocLangDirRTL	: "Paremalt vasakule (RTL)",
+DlgDocLangCode		: "Keele kood",
+DlgDocCharSet		: "Märgistiku kodeering",
+DlgDocCharSetOther	: "Ülejäänud märgistike kodeeringud",
+
+DlgDocDocType		: "Dokumendi tüüppäis",
+DlgDocDocTypeOther	: "Teised dokumendi tüüppäised",
+DlgDocIncXHTML		: "Arva kaasa XHTML deklaratsioonid",
+DlgDocBgColor		: "Taustavärv",
+DlgDocBgImage		: "Taustapildi URL",
+DlgDocBgNoScroll	: "Mittekeritav tagataust",
+DlgDocCText			: "Tekst",
+DlgDocCLink			: "Link",
+DlgDocCVisited		: "Külastatud link",
+DlgDocCActive		: "Aktiivne link",
+DlgDocMargins		: "Lehekülje äärised",
+DlgDocMaTop			: "Ülaserv",
+DlgDocMaLeft		: "Vasakserv",
+DlgDocMaRight		: "Paremserv",
+DlgDocMaBottom		: "Alaserv",
+DlgDocMeIndex		: "Dokumendi võtmesõnad (eraldatud komadega)",
+DlgDocMeDescr		: "Dokumendi kirjeldus",
+DlgDocMeAuthor		: "Autor",
+DlgDocMeCopy		: "Autoriõigus",
+DlgDocPreview		: "Eelvaade",
 
 // Templates Dialog
-Templates			: "Templates",	//MISSING
-DlgTemplatesTitle	: "Content Templates",	//MISSING
-DlgTemplatesSelMsg	: "Please select the template to open in the editor<br>(the actual contents will be lost):",	//MISSING
-DlgTemplatesLoading	: "Loading templates list. Please wait...",	//MISSING
-DlgTemplatesNoTpl	: "(No templates defined)",	//MISSING
+Templates			: "Šabloon",
+DlgTemplatesTitle	: "Sisu šabloonid",
+DlgTemplatesSelMsg	: "Palun vali šabloon, et avada see redaktoris<br />(praegune sisu läheb kaotsi):",
+DlgTemplatesLoading	: "Laen šabloonide nimekirja. Palun oota...",
+DlgTemplatesNoTpl	: "(Ühtegi šablooni ei ole defineeritud)",
 
 // About Dialog
-DlgAboutAboutTab	: "About",	//MISSING
-DlgAboutBrowserInfoTab	: "Browser Info",	//MISSING
+DlgAboutAboutTab	: "Teave",
+DlgAboutBrowserInfoTab	: "Interneti sirvija info",
+DlgAboutLicenseTab	: "Litsents",
 DlgAboutVersion		: "versioon",
 DlgAboutLicense		: "Litsenseeritud GNU Lesser General Public License litsentsiga",
 DlgAboutInfo		: "Täpsema info saamiseks mine"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/eu.js 1.4.1.src/fckeditor/editor/lang/eu.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/eu.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/eu.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -86,6 +86,8 @@
 Replace				: "Ordezkatu",
 SpellCheck			: "Ortografia",
 UniversalKeyboard	: "Teklatu Unibertsala",
+PageBreakLbl		: "Orrialde-jauzia",
+PageBreak			: "Txertatu Orrialde-jauzia",
 
 Form			: "Formularioa",
 Checkbox		: "Kontrol-laukia",
@@ -97,8 +99,13 @@
 SelectionField	: "Hautespen Eremua",
 ImageButton		: "Irudi Botoia",
 
+FitWindow		: "Maximizatu editorearen tamaina",
+
 // Context Menu
 EditLink			: "Aldatu Esteka",
+CellCM				: "Gelaxka",
+RowCM				: "Errenkada",
+ColumnCM			: "Zutabea",
 InsertRow			: "Txertatu Errenkada",
 DeleteRows			: "Ezabatu Errenkadak",
 InsertColumn		: "Txertatu Zutabea",
@@ -107,6 +114,7 @@
 DeleteCells			: "Kendu Gelaxkak",
 MergeCells			: "Batu Gelaxkak",
 SplitCell			: "Zatitu Gelaxka",
+TableDelete			: "Ezabatu Taula",
 CellProperties		: "Gelaxkaren Ezaugarriak",
 TableProperties		: "Taularen Ezaugarriak",
 ImageProperties		: "Irudiaren Ezaugarriak",
@@ -134,7 +142,9 @@
 UnknownCommand		: "Komando izen ezezaguna \"%1\"",
 NotImplemented		: "Komando ez inplementatua",
 UnknownToolbarSet	: "Ataza barra \"%1\" taldea ez da existitzen",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Zure nabigatzailearen segustasun hobespenak editore honen zenbait ezaugarri mugatu ditzake. \"ActiveX kontrolak eta plug-inak\" aktibatu beharko zenituzke, bestela erroreak eta ezaugarrietan mugak egon daitezke.",
+BrowseServerBlocked : "Baliabideen arakatzailea ezin da ireki. Ziurtatu popup blokeatzaileak desgaituta dituzula.",
+DialogBlocked		: "Ezin da elkarrizketa-leihoa ireki. Ziurtatu popup blokeatzaileak desgaituta dituzula.",
 
 // Dialogs
 DlgBtnOK			: "Ados",
@@ -142,12 +152,12 @@
 DlgBtnClose			: "Itxi",
 DlgBtnBrowseServer	: "Zerbitzaria arakatu",
 DlgAdvancedTag		: "Aurreratua",
-DlgOpOther			: "&lt;Bestelakoak&gt;",
+DlgOpOther			: "<Bestelakoak>",
 DlgInfoTab			: "Informazioa",
 DlgAlertUrl			: "Mesedez URLa idatzi ezazu",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;Ezarri gabe&gt;",
+DlgGenNotSet		: "<Ezarri gabe>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Hizkuntzaren Norabidea",
 DlgGenLangDirLtr	: "Ezkerretik Eskumara(LTR)",
@@ -211,12 +221,12 @@
 DlgLnkTypeAnchor	: "Aingura horrialde honentan",
 DlgLnkTypeEMail		: "ePosta",
 DlgLnkProto			: "Protokoloa",
-DlgLnkProtoOther	: "&lt;Beste batzuk&gt;",
+DlgLnkProtoOther	: "<Beste batzuk>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Aingura bat hautatu",
 DlgLnkAnchorByName	: "Aingura izenagatik",
 DlgLnkAnchorById	: "Elementuaren ID-gatik",
-DlgLnkNoAnchors		: "&lt;Ez daude aingurak eskuragarri dokumentuan&gt;",
+DlgLnkNoAnchors		: "<Ez daude aingurak eskuragarri dokumentuan>",
 DlgLnkEMail			: "ePosta Helbidea",
 DlgLnkEMailSubject	: "Mezuaren Gaia",
 DlgLnkEMailBody		: "Mezuaren Gorputza",
@@ -224,8 +234,8 @@
 DlgLnkBtnUpload		: "Zerbitzarira bidali",
 
 DlgLnkTarget		: "Target (Helburua)",
-DlgLnkTargetFrame	: "&lt;marko&gt;",
-DlgLnkTargetPopup	: "&lt;popup lehioa&gt;",
+DlgLnkTargetFrame	: "<marko>",
+DlgLnkTargetPopup	: "<popup lehioa>",
 DlgLnkTargetBlank	: "Lehio Berria (_blank)",
 DlgLnkTargetParent	: "Lehio Gurasoa (_parent)",
 DlgLnkTargetSelf	: "Lehio Berdina (_self)",
@@ -279,6 +289,7 @@
 DlgTableCellSpace	: "Gelaxka arteko tartea",
 DlgTableCellPad		: "Gelaxken betegarria",
 DlgTableCaption		: "Epigrafea",
+DlgTableSummary		: "Laburpena",
 
 // Table Cell Dialog
 DlgCellTitle		: "Gelaxken Ezaugarriak",
@@ -287,16 +298,16 @@
 DlgCellWidthPc		: "ehuneko",
 DlgCellHeight		: "Altuera",
 DlgCellWordWrap		: "Itzulbira",
-DlgCellWordWrapNotSet	: "&lt;Ezarri gabe&gt;",
+DlgCellWordWrapNotSet	: "<Ezarri gabe>",
 DlgCellWordWrapYes	: "Bai",
 DlgCellWordWrapNo	: "Ez",
 DlgCellHorAlign		: "Horizontal Alignment",
-DlgCellHorAlignNotSet	: "&lt;Ezarri gabe&gt;",
+DlgCellHorAlignNotSet	: "<Ezarri gabe>",
 DlgCellHorAlignLeft	: "Ezkerrean",
 DlgCellHorAlignCenter	: "Erdian",
 DlgCellHorAlignRight: "Eskuman",
 DlgCellVerAlign		: "Lerrokatu Bertikalki",
-DlgCellVerAlignNotSet	: "&lt;Ezarri gabe&gt;",
+DlgCellVerAlignNotSet	: "<Ezarri gabe>",
 DlgCellVerAlignTop	: "Goian",
 DlgCellVerAlignMiddle	: "Erdian",
 DlgCellVerAlignBottom	: "Behean",
@@ -334,7 +345,6 @@
 DlgPasteRemoveStyles	: "Estilo definizioak kendu",
 DlgPasteCleanBox		: "Testu-eremua Garbitu",
 
-
 // Color Picker
 ColorAutomatic	: "Automatikoa",
 ColorMoreColors	: "Kolore gehiago...",
@@ -417,7 +427,7 @@
 NumberedListProp	: "Zenbakidun Zerrendaren Ezarpenak",
 DlgLstType			: "Mota",
 DlgLstTypeCircle	: "Zirkulua",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Diskoa",
 DlgLstTypeSquare	: "Karratua",
 DlgLstTypeNumbers	: "Zenbakiak (1, 2, 3)",
 DlgLstTypeLCase		: "Letra xeheak (a, b, c)",
@@ -470,6 +480,7 @@
 // About Dialog
 DlgAboutAboutTab	: "Honi buruz",
 DlgAboutBrowserInfoTab	: "Nabigatzailearen Informazioa",
+DlgAboutLicenseTab	: "Lizentzia",
 DlgAboutVersion		: "bertsioa",
 DlgAboutLicense		: "GNU Lesser General Public License Lizentziapean",
 DlgAboutInfo		: "Informazio gehiago eskuratzeko hona joan"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/fa.js 1.4.1.src/fckeditor/editor/lang/fa.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/fa.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/fa.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -85,6 +85,8 @@
 Replace				: "جايگزينی",
 SpellCheck			: "کنترل املا",
 UniversalKeyboard	: "صفحه کليد جهانی",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
 
 Form			: "فرم",
 Checkbox		: "دکمه گزينه ای",
@@ -96,8 +98,13 @@
 SelectionField	: "فيلد انتخابی",
 ImageButton		: "دکمه تصويری",
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "ويرايش لينک",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "درج سطر",
 DeleteRows			: "حذف سطرها",
 InsertColumn		: "درج ستون",
@@ -106,6 +113,7 @@
 DeleteCells			: "حذف سلولها",
 MergeCells			: "ادغام سلولها",
 SplitCell			: "تفکيک سلول",
+TableDelete			: "Delete Table",	//MISSING
 CellProperties		: "ويژگيهای سلول",
 TableProperties		: "ويژگيهای جدول",
 ImageProperties		: "ويژگيهای تصوير",
@@ -133,7 +141,9 @@
 UnknownCommand		: "نام دستور ناشناخته \"%1\"",
 NotImplemented		: "دستور اجرا نشد",
 UnknownToolbarSet	: "مجموعه منوابزار \"%1\" وجود ندارد",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "تائيد",
@@ -141,12 +151,12 @@
 DlgBtnClose			: "بستن",
 DlgBtnBrowseServer	: "فهرست نمايی سرور",
 DlgAdvancedTag		: "پيشرفته",
-DlgOpOther			: "&lt;غيره&gt;",
+DlgOpOther			: "<غيره>",
 DlgInfoTab			: "Info",	//MISSING
 DlgAlertUrl			: "Please insert the URL",	//MISSING
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;تعين نشده&gt;",
+DlgGenNotSet		: "<تعين نشده>",
 DlgGenId			: "کد",
 DlgGenLangDir		: "جهت نمای زبان",
 DlgGenLangDirLtr	: "چپ به راست (LTR)",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "پيوند در صفحه جاری",
 DlgLnkTypeEMail		: "پست الکترونيکی",
 DlgLnkProto			: "پروتکل",
-DlgLnkProtoOther	: "&lt;غيره&gt;",
+DlgLnkProtoOther	: "<غيره>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "يک پيوند انتخاب کنيد",
 DlgLnkAnchorByName	: "با نام پيوند",
 DlgLnkAnchorById	: "با کد المان",
-DlgLnkNoAnchors		: "&lt;در اين سند پيوندی موجود نيست&gt;",
+DlgLnkNoAnchors		: "<در اين سند پيوندی موجود نيست>",
 DlgLnkEMail			: "آدرس پست الکترونيکی",
 DlgLnkEMailSubject	: "موضوع پيام",
 DlgLnkEMailBody		: "متن پيام",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "به سرور ارسال کن",
 
 DlgLnkTarget		: "مقصد",
-DlgLnkTargetFrame	: "&lt;فريم&gt;",
-DlgLnkTargetPopup	: "&lt;پنجره پاپاپ&gt;",
+DlgLnkTargetFrame	: "<فريم>",
+DlgLnkTargetPopup	: "<پنجره پاپاپ>",
 DlgLnkTargetBlank	: "پنجره جديد (_blank)",
 DlgLnkTargetParent	: "پنجره والد (_parent)",
 DlgLnkTargetSelf	: "همان پنجره (_self)",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "فاصله ميان سلولها",
 DlgTableCellPad		: "فاصله پرشده در سلول",
 DlgTableCaption		: "عنوان",
+DlgTableSummary		: "Summary",	//MISSING
 
 // Table Cell Dialog
 DlgCellTitle		: "ويژگيهای سلول",
@@ -286,16 +297,16 @@
 DlgCellWidthPc		: "درصد",
 DlgCellHeight		: "درازا",
 DlgCellWordWrap		: "شکستن کلمات",
-DlgCellWordWrapNotSet	: "&lt;تعين نشده&gt;",
+DlgCellWordWrapNotSet	: "<تعين نشده>",
 DlgCellWordWrapYes	: "بله",
 DlgCellWordWrapNo	: "خير",
 DlgCellHorAlign		: "چينش افقی",
-DlgCellHorAlignNotSet	: "&lt;تعين نشده&gt;",
+DlgCellHorAlignNotSet	: "<تعين نشده>",
 DlgCellHorAlignLeft	: "چپ",
 DlgCellHorAlignCenter	: "وسط",
 DlgCellHorAlignRight: "راست",
 DlgCellVerAlign		: "چينش عمودی",
-DlgCellVerAlignNotSet	: "&lt;تعين نشده&gt;",
+DlgCellVerAlignNotSet	: "<تعين نشده>",
 DlgCellVerAlignTop	: "بالا",
 DlgCellVerAlignMiddle	: "ميان",
 DlgCellVerAlignBottom	: "پائين",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
 DlgPasteCleanBox		: "Clean Up Box",	//MISSING
 
-
 // Color Picker
 ColorAutomatic	: "خودکار",
 ColorMoreColors	: "رنگهای بيشتر...",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "درباره",
 DlgAboutBrowserInfoTab	: "اطلاعات مرورگر",
+DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "نگارش",
 DlgAboutLicense		: "ليسانس تحت توافقنامه GNU Lesser General Public License",
 DlgAboutInfo		: "برای اطلاعات بيشتر به آدرس زير برويد"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/fcklanguagemanager.js 1.4.1.src/fckeditor/editor/lang/fcklanguagemanager.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/fcklanguagemanager.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/fcklanguagemanager.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,71 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fcklanguagemanager.js
- * 	This file list all available languages in the editor.
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-var FCKLanguageManager = new Object() ;
-
-FCKLanguageManager.AvailableLanguages = 
-{
-	'ar'		: 'Arabic',
-	'bg'		: 'Bulgarian',
-	'bs'		: 'Bosnian',
-	'ca'		: 'Catalan',
-	'cs'		: 'Czech',
-	'da'		: 'Danish',
-	'de'		: 'German',
-	'el'		: 'Greek',
-	'en'		: 'English',
-	'en-au'		: 'English (Australia)',
-	'en-uk'		: 'English (United Kingdom)',
-	'eo'		: 'Esperanto',
-	'es'		: 'Spanish',
-	'et'		: 'Estonian',
-	'eu'		: 'Basque',
-	'fa'		: 'Persian',
-	'fi'		: 'Finnish',
-	'fo'		: 'Faroese',
-	'fr'		: 'French',
-	'gl'		: 'Galician',
-	'he'		: 'Hebrew',
-	'hr'		: 'Croatian',
-	'hu'		: 'Hungarian',
-	'it'		: 'Italian',
-	'ja'		: 'Japanese',
-	'ko'		: 'Korean',
-	'lt'		: 'Lithuanian',
-	'mn'		: 'Mongolian',
-	'ms'		: 'Malay',
-	'nl'		: 'Dutch',
-	'no'		: 'Norwegian',
-	'pl'		: 'Polish',
-	'pt'		: 'Portuguese (Portugal)',
-	'pt-br'		: 'Portuguese (Brazil)',
-	'ro'		: 'Romanian',
-	'ru'		: 'Russian',
-	'sk'		: 'Slovak',
-	'sl'		: 'Slovenian',
-	'sr'		: 'Serbian (Cyrillic)',
-	'sr-latn'	: 'Serbian (Latin)',
-	'sv'		: 'Swedish',
-	'th'		: 'Thai',
-	'tr'		: 'Turkish',
-	'uk'		: 'Ukrainian',
-	'vi'		: 'Vietnamese',
-	'zh'		: 'Chinese Traditional',
-	'zh-cn'		: 'Chinese Simplified'
-}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/fi.js 1.4.1.src/fckeditor/editor/lang/fi.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/fi.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/fi.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -85,6 +85,8 @@
 Replace				: "Korvaa",
 SpellCheck			: "Tarkista oikeinkirjoitus",
 UniversalKeyboard	: "Universaali näppäimistö",
+PageBreakLbl		: "Sivun vaihto",
+PageBreak			: "Lisää sivun vaihto",
 
 Form			: "Lomake",
 Checkbox		: "Valintaruutu",
@@ -96,8 +98,13 @@
 SelectionField	: "Valintakenttä",
 ImageButton		: "Kuvapainike",
 
+FitWindow		: "Suurenna editori koko ikkunaan",
+
 // Context Menu
 EditLink			: "Muokkaa linkkiä",
+CellCM				: "Solu",
+RowCM				: "Rivi",
+ColumnCM			: "Sarake",
 InsertRow			: "Lisää rivi",
 DeleteRows			: "Poista rivit",
 InsertColumn		: "Lisää sarake",
@@ -106,6 +113,7 @@
 DeleteCells			: "Poista solut",
 MergeCells			: "Yhdistä solut",
 SplitCell			: "Jaa solu",
+TableDelete			: "Poista taulu",
 CellProperties		: "Solun ominaisuudet",
 TableProperties		: "Taulun ominaisuudet",
 ImageProperties		: "Kuvan ominaisuudet",
@@ -133,7 +141,9 @@
 UnknownCommand		: "Tuntematon komento \"%1\"",
 NotImplemented		: "Komentoa ei ole liitetty sovellukseen",
 UnknownToolbarSet	: "Työkalukokonaisuus \"%1\" ei ole olemassa",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Selaimesi turvallisuusasetukset voivat rajoittaa joitain editorin ominaisuuksia. Sinun pitää ottaa käyttöön asetuksista \"Suorita ActiveX komponentit ja -plugin-laajennukset\". Saatat kohdata virheitä ja huomata puuttuvia ominaisuuksia.",
+BrowseServerBlocked : "Resurssiselainta ei voitu avata. Varmista, että ponnahdusikkunoiden estäjät eivät ole päällä.",
+DialogBlocked		: "Apuikkunaa ei voitu avaata. Varmista, että ponnahdusikkunoiden estäjät eivät ole päällä.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -146,7 +156,7 @@
 DlgAlertUrl			: "Lisää URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;ei asetettu&gt;",
+DlgGenNotSet		: "<ei asetettu>",
 DlgGenId			: "Tunniste",
 DlgGenLangDir		: "Kielen suunta",
 DlgGenLangDirLtr	: "Vasemmalta oikealle (LTR)",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Ankkuri tässä sivussa",
 DlgLnkTypeEMail		: "Sähköposti",
 DlgLnkProto			: "Protokolla",
-DlgLnkProtoOther	: "&lt;muu&gt;",
+DlgLnkProtoOther	: "<muu>",
 DlgLnkURL			: "Osoite",
 DlgLnkAnchorSel		: "Valitse ankkuri",
 DlgLnkAnchorByName	: "Ankkurin nimen mukaan",
 DlgLnkAnchorById	: "Ankkurin ID:n mukaan",
-DlgLnkNoAnchors		: "&lt;Ei ankkureita tässä dokumentissa&gt;",
+DlgLnkNoAnchors		: "<Ei ankkureita tässä dokumentissa>",
 DlgLnkEMail			: "Sähköpostiosoite",
 DlgLnkEMailSubject	: "Aihe",
 DlgLnkEMailBody		: "Viesti",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Lähetä palvelimelle",
 
 DlgLnkTarget		: "Kohde",
-DlgLnkTargetFrame	: "&lt;kehys&gt;",
-DlgLnkTargetPopup	: "&lt;popup ikkuna&gt;",
+DlgLnkTargetFrame	: "<kehys>",
+DlgLnkTargetPopup	: "<popup ikkuna>",
 DlgLnkTargetBlank	: "Uusi ikkuna (_blank)",
 DlgLnkTargetParent	: "Emoikkuna (_parent)",
 DlgLnkTargetSelf	: "Sama ikkuna (_self)",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "Solujen väli",
 DlgTableCellPad		: "Solujen sisennys",
 DlgTableCaption		: "Otsikko",
+DlgTableSummary		: "Yhteenveto",
 
 // Table Cell Dialog
 DlgCellTitle		: "Solun ominaisuudet",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Poista tyylimääritykset",
 DlgPasteCleanBox		: "Tyhjennä",
 
-
 // Color Picker
 ColorAutomatic	: "Automaattinen",
 ColorMoreColors	: "Lisää värejä...",
@@ -416,7 +426,7 @@
 NumberedListProp	: "Numeroinnin ominaisuudet",
 DlgLstType			: "Tyyppi",
 DlgLstTypeCircle	: "Kehä",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Ympyrä",
 DlgLstTypeSquare	: "Neliö",
 DlgLstTypeNumbers	: "Numerot (1, 2, 3)",
 DlgLstTypeLCase		: "Pienet kirjaimet (a, b, c)",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "Editorista",
 DlgAboutBrowserInfoTab	: "Selaimen tiedot",
+DlgAboutLicenseTab	: "Lisenssi",
 DlgAboutVersion		: "versio",
 DlgAboutLicense		: "Lisenssi: GNU Lesser General Public License",
 DlgAboutInfo		: "Lisää tietoa osoitteesta"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/fo.js 1.4.1.src/fckeditor/editor/lang/fo.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/fo.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/fo.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -86,6 +86,8 @@
 Replace				: "Set í staðin",
 SpellCheck			: "Stavseting",
 UniversalKeyboard	: "Universalt Tastatur",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
 
 Form			: "Seta inn Form",
 Checkbox		: "Seta inn Avmerkingarboks",
@@ -97,8 +99,13 @@
 SelectionField	: "Seta inn Valteig",
 ImageButton		: "Seta inn Myndaknapp",
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "Broyt leinkju",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "Seta inn rekkju",
 DeleteRows			: "Sletta rekkjur",
 InsertColumn		: "Seta inn søjlur",
@@ -107,6 +114,7 @@
 DeleteCells			: "Sletta sellu",
 MergeCells			: "Flætta sellur",
 SplitCell			: "Deila sellur",
+TableDelete			: "Delete Table",	//MISSING
 CellProperties		: "Eginleikar fyri sellu",
 TableProperties		: "Eginleikar fyri talvu",
 ImageProperties		: "Eginleikar fyri mynd",
@@ -134,7 +142,9 @@
 UnknownCommand		: "Kenni ikki ordra \"%1\"",
 NotImplemented		: "Ordrin er ikki gjørdur virkin",
 UnknownToolbarSet	: "Amboðalinjan \"%1\" finst ikki",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -142,12 +152,12 @@
 DlgBtnClose			: "Lukka",
 DlgBtnBrowseServer	: "Hyggja á servara",
 DlgAdvancedTag		: "Útvíðka",
-DlgOpOther			: "&lt;Annað&gt;",
+DlgOpOther			: "<Annað>",
 DlgInfoTab			: "Info",	//MISSING
 DlgAlertUrl			: "Please insert the URL",	//MISSING
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;ikki sett&gt;",
+DlgGenNotSet		: "<ikki sett>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Tekstakós",
 DlgGenLangDirLtr	: "Vinstri móti høgri (LTR)",
@@ -211,12 +221,12 @@
 DlgLnkTypeAnchor	: "Akker á hesari síðuni",
 DlgLnkTypeEMail		: "Teldupostur",
 DlgLnkProto			: "Protokoll",
-DlgLnkProtoOther	: "&lt;onnur&gt;",
+DlgLnkProtoOther	: "<onnur>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "VEl eitt akker",
 DlgLnkAnchorByName	: "Eftir akker navni",
 DlgLnkAnchorById	: "Eftir element Id",
-DlgLnkNoAnchors		: "&lt;Tað eru ongi akker tøk í hesum dokumentinum;",
+DlgLnkNoAnchors		: "<Tað eru ongi akker tøk í hesum dokumentinum;",
 DlgLnkEMail			: "Teldupost Adresse",
 DlgLnkEMailSubject	: "Evni",
 DlgLnkEMailBody		: "Boð",
@@ -224,8 +234,8 @@
 DlgLnkBtnUpload		: "Send til servaran",
 
 DlgLnkTarget		: "Mál",
-DlgLnkTargetFrame	: "&lt;ramma&gt;",
-DlgLnkTargetPopup	: "&lt;popup vindeyga&gt;",
+DlgLnkTargetFrame	: "<ramma>",
+DlgLnkTargetPopup	: "<popup vindeyga>",
 DlgLnkTargetBlank	: "Nytt vindeyga (_blank)",
 DlgLnkTargetParent	: "Omaná liggjandi vindeyga (_parent)",
 DlgLnkTargetSelf	: "Sama vindeyga (_self)",
@@ -279,6 +289,7 @@
 DlgTableCellSpace	: "Fjarstøða millum sellur",
 DlgTableCellPad		: "Sellu breddi",
 DlgTableCaption		: "Heiti",
+DlgTableSummary		: "Summary",	//MISSING
 
 // Table Cell Dialog
 DlgCellTitle		: "Sellu eginleikar",
@@ -334,7 +345,6 @@
 DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
 DlgPasteCleanBox		: "Clean Up Box",	//MISSING
 
-
 // Color Picker
 ColorAutomatic	: "Automatisk",
 ColorMoreColors	: "Fleiri farvur...",
@@ -470,6 +480,7 @@
 // About Dialog
 DlgAboutAboutTab	: "Um",
 DlgAboutBrowserInfoTab	: "Browsara upplýsingar",
+DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "versión",
 DlgAboutLicense		: "Loyvi undir treytum fyri GNU Lesser General Public License",
 DlgAboutInfo		: "Fleiri upplýsingar, far til"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/fr.js 1.4.1.src/fckeditor/editor/lang/fr.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/fr.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/fr.js	2006-09-03 13:05:04.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -27,7 +27,7 @@
 
 // Toolbar Items and Context Menu
 Save				: "Enregistrer",
-NewPage				: "Nouvelle Page",
+NewPage				: "Nouvelle page",
 Preview				: "Prévisualisation",
 Cut					: "Couper",
 Copy				: "Copier",
@@ -36,23 +36,23 @@
 PasteWord			: "Coller de Word",
 Print				: "Imprimer",
 SelectAll			: "Tout sélectionner",
-RemoveFormat		: "Supprimer Format",
+RemoveFormat		: "Supprimer le format",
 InsertLinkLbl		: "Lien",
-InsertLink			: "Insérer/Modifier Lien",
-RemoveLink			: "Supprimer Lien",
-Anchor				: "Insérer/Modifier Ancre",
+InsertLink			: "Insérer/modifier le lien",
+RemoveLink			: "Supprimer le lien",
+Anchor				: "Insérer/modifier l'ancre",
 InsertImageLbl		: "Image",
-InsertImage			: "Insérer/Modifier Image",
+InsertImage			: "Insérer/modifier l'image",
 InsertFlashLbl		: "Animation Flash",
-InsertFlash			: "Insérer/Modifier Animation Flash",
+InsertFlash			: "Insérer/modifier l'animation Flash",
 InsertTableLbl		: "Tableau",
-InsertTable			: "Insérer/Modifier Tableau",
+InsertTable			: "Insérer/modifier le tableau",
 InsertLineLbl		: "Séparateur",
-InsertLine			: "Insérer Séparateur",
-InsertSpecialCharLbl: "Caractère Spécial",
-InsertSpecialChar	: "Insérer Caractère Spécial",
+InsertLine			: "Insérer un séparateur",
+InsertSpecialCharLbl: "Caractères spéciaux",
+InsertSpecialChar	: "Insérer un caractère spécial",
 InsertSmileyLbl		: "Smiley",
-InsertSmiley		: "Insérer Smiley",
+InsertSmiley		: "Insérer un Smiley",
 About				: "A propos de FCKeditor",
 Bold				: "Gras",
 Italic				: "Italique",
@@ -60,69 +60,77 @@
 StrikeThrough		: "Barré",
 Subscript			: "Indice",
 Superscript			: "Exposant",
-LeftJustify			: "Aligné à Gauche",
+LeftJustify			: "Aligné à gauche",
 CenterJustify		: "Centré",
 RightJustify		: "Aligné à Droite",
-BlockJustify		: "Texte Justifié",
-DecreaseIndent		: "Diminuer le Retrait",
-IncreaseIndent		: "Augmenter le Retrait",
+BlockJustify		: "Texte justifié",
+DecreaseIndent		: "Diminuer le retrait",
+IncreaseIndent		: "Augmenter le retrait",
 Undo				: "Annuler",
 Redo				: "Refaire",
-NumberedListLbl		: "Liste Numérotée",
-NumberedList		: "Insérer/Supprimer Liste Numérotée",
+NumberedListLbl		: "Liste numérotée",
+NumberedList		: "Insérer/supprimer la  liste numérotée",
 BulletedListLbl		: "Liste à puces",
-BulletedList		: "Insérer/Supprimer Liste à puces",
-ShowTableBorders	: "Afficher Bordures de Tableau",
-ShowDetails			: "Afficher Caractères Invisibles",
+BulletedList		: "Insérer/supprimer la liste à puces",
+ShowTableBorders	: "Afficher les bordures du tableau",
+ShowDetails			: "Afficher les caractères invisibles",
 Style				: "Style",
 FontFormat			: "Format",
 Font				: "Police",
 FontSize			: "Taille",
-TextColor			: "Couleur de Caractère",
-BGColor				: "Couleur de Fond",
+TextColor			: "Couleur de caractère",
+BGColor				: "Couleur de fond",
 Source				: "Source",
 Find				: "Chercher",
 Replace				: "Remplacer",
 SpellCheck			: "Orthographe",
-UniversalKeyboard	: "Clavier Universel",
+UniversalKeyboard	: "Clavier universel",
+PageBreakLbl		: "Saut de page",
+PageBreak			: "Insérer un saut de page",
 
 Form			: "Formulaire",
 Checkbox		: "Case à cocher",
-RadioButton		: "Bouton Radio",
-TextField		: "Champ Texte",
-Textarea		: "Zone Texte",
+RadioButton		: "Bouton radio",
+TextField		: "Champ texte",
+Textarea		: "Zone de texte",
 HiddenField		: "Champ caché",
 Button			: "Bouton",
-SelectionField	: "Liste/Menu",
-ImageButton		: "Bouton Image",
+SelectionField	: "Liste/menu",
+ImageButton		: "Bouton image",
+
+FitWindow		: "Edition pleine page",
 
 // Context Menu
-EditLink			: "Modifier Lien",
-InsertRow			: "Insérer une Ligne",
-DeleteRows			: "Supprimer des Lignes",
-InsertColumn		: "Insérer une Colonne",
-DeleteColumns		: "Supprimer des Colonnes",
-InsertCell			: "Insérer une Cellule",
-DeleteCells			: "Supprimer des Cellules",
-MergeCells			: "Fusionner les Cellules",
-SplitCell			: "Scinder les Cellules",
-CellProperties		: "Propriétés de Cellule",
-TableProperties		: "Propriétés de Tableau",
-ImageProperties		: "Propriétés d'Image",
-FlashProperties		: "Propriétés d'Animation Flash",
-
-AnchorProp			: "Propriétés d'Ancre",
-ButtonProp			: "Propriétés de Bouton",
-CheckboxProp		: "Propriétés de Case à Cocher",
-HiddenFieldProp		: "Propriétés de Champ Caché",
-RadioButtonProp		: "Propriétés de Bouton Radio",
-ImageButtonProp		: "Propriétés de Bouton Image",
-TextFieldProp		: "Propriétés de Champ Texte",
-SelectionFieldProp	: "Propriétés de Liste/Menu",
-TextareaProp		: "Propriétés de Zone Texte",
-FormProp			: "Propriétés de Formulaire",
+EditLink			: "Modifier le lien",
+CellCM				: "Cellule",
+RowCM				: "Ligne",
+ColumnCM			: "Colonne",
+InsertRow			: "Insérer une ligne",
+DeleteRows			: "Supprimer des lignes",
+InsertColumn		: "Insérer une colonne",
+DeleteColumns		: "Supprimer des colonnes",
+InsertCell			: "Insérer une cellule",
+DeleteCells			: "Supprimer des cellules",
+MergeCells			: "Fusionner les cellules",
+SplitCell			: "Scinder les cellules",
+TableDelete			: "Supprimer le tableau",
+CellProperties		: "Propriétés de cellule",
+TableProperties		: "Propriétés du tableau",
+ImageProperties		: "Propriétés de l'image",
+FlashProperties		: "Propriétés de l'animation Flash",
+
+AnchorProp			: "Propriétés de l'ancre",
+ButtonProp			: "Propriétés du bouton",
+CheckboxProp		: "Propriétés de la case à cocher",
+HiddenFieldProp		: "Propriétés du champ caché",
+RadioButtonProp		: "Propriétés du bouton radio",
+ImageButtonProp		: "Propriétés du bouton image",
+TextFieldProp		: "Propriétés du champ texte",
+SelectionFieldProp	: "Propriétés de la liste/du menu",
+TextareaProp		: "Propriétés de la zone de texte",
+FormProp			: "Propriétés du formulaire",
 
-FontFormats			: "Normal;Formatted;Address;Titre 1;Titre 2;Titre 3;Titre 4;Titre 5;Titre 6",
+FontFormats			: "Normal;Formaté;Adresse;Titre 1;Titre 2;Titre 3;Titre 4;Titre 5;Titre 6",
 
 // Alerts and Messages
 ProcessingXHTML		: "Calcul XHTML. Veuillez patienter...",
@@ -133,49 +141,51 @@
 UnknownCommand		: "Nom de commande inconnu \"%1\"",
 NotImplemented		: "Commande non encore écrite",
 UnknownToolbarSet	: "La barre d'outils \"%1\" n'existe pas",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Les paramètres de sécurité de votre navigateur peuvent limiter quelques fonctionnalités de l'éditeur. Veuillez activer l'option \"Exécuter les contrôles ActiveX et les plug-ins\". Il se peut que vous rencontriez des erreurs et remarquiez quelques limitations.",
+BrowseServerBlocked : "Le navigateur n'a pas pu être ouvert. Assurez-vous que les bloqueurs de popups soient désactivés.",
+DialogBlocked		: "La fenêtre de dialogue n'a pas pu s'ouvrir. Assurez-vous que les bloqueurs de popups soient désactivés.",
 
 // Dialogs
 DlgBtnOK			: "OK",
 DlgBtnCancel		: "Annuler",
 DlgBtnClose			: "Fermer",
-DlgBtnBrowseServer	: "Parcourir le Serveur",
+DlgBtnBrowseServer	: "Parcourir le serveur",
 DlgAdvancedTag		: "Avancé",
-DlgOpOther			: "&lt;Autre&gt;",
+DlgOpOther			: "<Autre>",
 DlgInfoTab			: "Info",
 DlgAlertUrl			: "Veuillez saisir l'URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;Par Défaut&gt;",
+DlgGenNotSet		: "<Par défaut>",
 DlgGenId			: "Id",
-DlgGenLangDir		: "Sens d'Ecriture",
-DlgGenLangDirLtr	: "Gauche vers Droite (LTR)",
-DlgGenLangDirRtl	: "Droite vers Gauche (RTL)",
-DlgGenLangCode		: "Code Langue",
-DlgGenAccessKey		: "Equivalent Clavier",
+DlgGenLangDir		: "Sens d'écriture",
+DlgGenLangDirLtr	: "De la gauche vers la droite (LTR)",
+DlgGenLangDirRtl	: "De la roite vers la gauche (RTL)",
+DlgGenLangCode		: "Code langue",
+DlgGenAccessKey		: "Equivalent clavier",
 DlgGenName			: "Nom",
-DlgGenTabIndex		: "Ordre de Tabulation",
-DlgGenLongDescr		: "URL de Description Longue",
-DlgGenClass			: "Classes de Feuilles de Style",
-DlgGenTitle			: "Titre Indicatif",
-DlgGenContType		: "Type de Contenu Indicatif",
-DlgGenLinkCharset	: "Encodage de Caractère de la cible",
+DlgGenTabIndex		: "Ordre de tabulation",
+DlgGenLongDescr		: "URL de description longue",
+DlgGenClass			: "Classes de feuilles de style",
+DlgGenTitle			: "Titre indicatif",
+DlgGenContType		: "Type de contenu indicatif",
+DlgGenLinkCharset	: "Encodage de caractère de la cible",
 DlgGenStyle			: "Style",
 
 // Image Dialog
-DlgImgTitle			: "Propriétés d'Image",
-DlgImgInfoTab		: "Informations sur l'Image",
-DlgImgBtnUpload		: "Envoyer au Serveur",
+DlgImgTitle			: "Propriétés de l'image",
+DlgImgInfoTab		: "Informations sur l'image",
+DlgImgBtnUpload		: "Envoyer sur le serveur",
 DlgImgURL			: "URL",
-DlgImgUpload		: "Upload",
-DlgImgAlt			: "Texte de Remplacement",
+DlgImgUpload		: "Télécharger",
+DlgImgAlt			: "Texte de remplacement",
 DlgImgWidth			: "Largeur",
 DlgImgHeight		: "Hauteur",
-DlgImgLockRatio		: "Garder proportions",
-DlgBtnResetSize		: "Taille Originale",
+DlgImgLockRatio		: "Garder les proportions",
+DlgBtnResetSize		: "Taille originale",
 DlgImgBorder		: "Bordure",
-DlgImgHSpace		: "HSpace",
-DlgImgVSpace		: "VSpace",
+DlgImgHSpace		: "Espacement horizontal",
+DlgImgVSpace		: "Espacement vertical",
 DlgImgAlign			: "Alignement",
 DlgImgAlignLeft		: "Gauche",
 DlgImgAlignAbsBottom: "Abs Bas",
@@ -191,59 +201,59 @@
 DlgImgLinkTab		: "Lien",
 
 // Flash Dialog
-DlgFlashTitle		: "Propriétés d'animation Flash",
+DlgFlashTitle		: "Propriétés de l'animation Flash",
 DlgFlashChkPlay		: "Lecture automatique",
 DlgFlashChkLoop		: "Boucle",
-DlgFlashChkMenu		: "Activer menu Flash",
+DlgFlashChkMenu		: "Activer le menu Flash",
 DlgFlashScale		: "Affichage",
-DlgFlashScaleAll	: "Par défault (tout montrer)",
-DlgFlashScaleNoBorder	: "Sans Bordure",
-DlgFlashScaleFit	: "Ajuster aux Dimensions",
+DlgFlashScaleAll	: "Par défaut (tout montrer)",
+DlgFlashScaleNoBorder	: "Sans bordure",
+DlgFlashScaleFit	: "Ajuster aux dimensions",
 
 // Link Dialog
-DlgLnkWindowTitle	: "Propriétés de Lien",
-DlgLnkInfoTab		: "Informations sur le Lien",
+DlgLnkWindowTitle	: "Propriétés du lien",
+DlgLnkInfoTab		: "Informations sur le lien",
 DlgLnkTargetTab		: "Destination",
 
-DlgLnkType			: "Type de Lien",
+DlgLnkType			: "Type de lien",
 DlgLnkTypeURL		: "URL",
 DlgLnkTypeAnchor	: "Ancre dans cette page",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Protocole",
-DlgLnkProtoOther	: "&lt;autre&gt;",
+DlgLnkProtoOther	: "<autre>",
 DlgLnkURL			: "URL",
-DlgLnkAnchorSel		: "Sélectionner une Ancre",
-DlgLnkAnchorByName	: "Par Nom d'Ancre",
-DlgLnkAnchorById	: "Par Id d'Elément",
-DlgLnkNoAnchors		: "&lt;Pas d'ancre disponible dans le document&gt;",
+DlgLnkAnchorSel		: "Sélectionner une ancre",
+DlgLnkAnchorByName	: "Par nom d'ancre",
+DlgLnkAnchorById	: "Par Id d'élément",
+DlgLnkNoAnchors		: "<Pas d'ancre disponible dans le document>",
 DlgLnkEMail			: "Adresse E-Mail",
-DlgLnkEMailSubject	: "Sujet du Message",
-DlgLnkEMailBody		: "Corps du Message",
-DlgLnkUpload		: "Upload",
-DlgLnkBtnUpload		: "Envoyer au Serveur",
+DlgLnkEMailSubject	: "Sujet du message",
+DlgLnkEMailBody		: "Corps du message",
+DlgLnkUpload		: "Télécharger",
+DlgLnkBtnUpload		: "Envoyer sur le serveur",
 
 DlgLnkTarget		: "Destination",
-DlgLnkTargetFrame	: "&lt;cadre&gt;",
-DlgLnkTargetPopup	: "&lt;fenêtre popup&gt;",
-DlgLnkTargetBlank	: "Nouvelle Fenêtre (_blank)",
-DlgLnkTargetParent	: "Fenêtre Mère (_parent)",
-DlgLnkTargetSelf	: "Même Fenêtre (_self)",
-DlgLnkTargetTop		: "Fenêtre Supérieure (_top)",
-DlgLnkTargetFrameName	: "Nom du Cadre de Destination",
-DlgLnkPopWinName	: "Nom de la Fenêtre Popup",
-DlgLnkPopWinFeat	: "Caractéristiques de la Fenêtre Popup",
-DlgLnkPopResize		: "Taille Modifiable",
-DlgLnkPopLocation	: "Barre d'Adresses",
-DlgLnkPopMenu		: "Barre de Menu",
-DlgLnkPopScroll		: "Barres de Défilement",
-DlgLnkPopStatus		: "Barre d'Etat",
-DlgLnkPopToolbar	: "Barre d'Outils",
-DlgLnkPopFullScrn	: "Plein Ecran (IE)",
+DlgLnkTargetFrame	: "<cadre>",
+DlgLnkTargetPopup	: "<fenêtre popup>",
+DlgLnkTargetBlank	: "Nouvelle fenêtre (_blank)",
+DlgLnkTargetParent	: "Fenêtre mère (_parent)",
+DlgLnkTargetSelf	: "Même fenêtre (_self)",
+DlgLnkTargetTop		: "Fenêtre supérieure (_top)",
+DlgLnkTargetFrameName	: "Nom du cadre de destination",
+DlgLnkPopWinName	: "Nom de la fenêtre popup",
+DlgLnkPopWinFeat	: "Caractéristiques de la fenêtre popup",
+DlgLnkPopResize		: "Taille modifiable",
+DlgLnkPopLocation	: "Barre d'adresses",
+DlgLnkPopMenu		: "Barre de menu",
+DlgLnkPopScroll		: "Barres de défilement",
+DlgLnkPopStatus		: "Barre d'état",
+DlgLnkPopToolbar	: "Barre d'outils",
+DlgLnkPopFullScrn	: "Plein écran (IE)",
 DlgLnkPopDependent	: "Dépendante (Netscape)",
 DlgLnkPopWidth		: "Largeur",
 DlgLnkPopHeight		: "Hauteur",
-DlgLnkPopLeft		: "Position Gauche",
-DlgLnkPopTop		: "Position Haut",
+DlgLnkPopLeft		: "Position à partir de la gauche",
+DlgLnkPopTop		: "Position à partir du haut",
 
 DlnLnkMsgNoUrl		: "Veuillez saisir l'URL",
 DlnLnkMsgNoEMail	: "Veuillez saisir l'adresse e-mail",
@@ -252,22 +262,22 @@
 // Color Dialog
 DlgColorTitle		: "Sélectionner",
 DlgColorBtnClear	: "Effacer",
-DlgColorHighlight	: "Highlight",
+DlgColorHighlight	: "Mettre en exergue",
 DlgColorSelected	: "Sélectionné",
 
 // Smiley Dialog
-DlgSmileyTitle		: "Insérer Smiley",
+DlgSmileyTitle		: "Insérer un Smiley",
 
 // Special Character Dialog
-DlgSpecialCharTitle	: "Insérer Caractère Spécial",
+DlgSpecialCharTitle	: "Insérer un caractère spécial",
 
 // Table Dialog
-DlgTableTitle		: "Propriétés de Tableau",
+DlgTableTitle		: "Propriétés du tableau",
 DlgTableRows		: "Lignes",
 DlgTableColumns		: "Colonnes",
 DlgTableBorder		: "Bordure",
 DlgTableAlign		: "Alignement",
-DlgTableAlignNotSet	: "<Par Défaut>",
+DlgTableAlignNotSet	: "<Par défaut>",
 DlgTableAlignLeft	: "Gauche",
 DlgTableAlignCenter	: "Centré",
 DlgTableAlignRight	: "Droite",
@@ -278,30 +288,31 @@
 DlgTableCellSpace	: "Espacement",
 DlgTableCellPad		: "Contour",
 DlgTableCaption		: "Titre",
+DlgTableSummary		: "Résumé",
 
 // Table Cell Dialog
-DlgCellTitle		: "Propriétés de cellule",
+DlgCellTitle		: "Propriétés de la cellule",
 DlgCellWidth		: "Largeur",
 DlgCellWidthPx		: "pixels",
 DlgCellWidthPc		: "pourcentage",
 DlgCellHeight		: "Hauteur",
 DlgCellWordWrap		: "Retour à la ligne",
-DlgCellWordWrapNotSet	: "<Par Défaut>",
+DlgCellWordWrapNotSet	: "<Par défaut>",
 DlgCellWordWrapYes	: "Oui",
 DlgCellWordWrapNo	: "Non",
-DlgCellHorAlign		: "Alignement Horizontal",
-DlgCellHorAlignNotSet	: "<Par Défaut>",
+DlgCellHorAlign		: "Alignement horizontal",
+DlgCellHorAlignNotSet	: "<Par défaut>",
 DlgCellHorAlignLeft	: "Gauche",
 DlgCellHorAlignCenter	: "Centré",
 DlgCellHorAlignRight: "Droite",
-DlgCellVerAlign		: "Alignement Vertical",
-DlgCellVerAlignNotSet	: "<Par Défaut>",
+DlgCellVerAlign		: "Alignement vertical",
+DlgCellVerAlignNotSet	: "<Par défaut>",
 DlgCellVerAlignTop	: "Haut",
 DlgCellVerAlignMiddle	: "Milieu",
 DlgCellVerAlignBottom	: "Bas",
 DlgCellVerAlignBaseline	: "Bas du texte",
-DlgCellRowSpan		: "Lignes Fusionnées",
-DlgCellCollSpan		: "Colonnes Fusionnées",
+DlgCellRowSpan		: "Lignes fusionnées",
+DlgCellCollSpan		: "Colonnes fusionnées",
 DlgCellBackColor	: "Fond",
 DlgCellBorderColor	: "Bordure",
 DlgCellBtnSelect	: "Choisir...",
@@ -329,30 +340,29 @@
 PasteFromWord	: "Coller à partir de Word",
 
 DlgPasteMsg2	: "Veuillez coller dans la zone ci-dessous en utilisant le clavier (<STRONG>Ctrl+V</STRONG>) et cliquez sur <STRONG>OK</STRONG>.",
-DlgPasteIgnoreFont		: "Ignorer les Polices de Caractères",
-DlgPasteRemoveStyles	: "Supprimer les Styles",
+DlgPasteIgnoreFont		: "Ignorer les polices de caractères",
+DlgPasteRemoveStyles	: "Supprimer les styles",
 DlgPasteCleanBox		: "Effacer le contenu",
 
-
 // Color Picker
 ColorAutomatic	: "Automatique",
-ColorMoreColors	: "Plus de Couleurs...",
+ColorMoreColors	: "Plus de couleurs...",
 
 // Document Properties
-DocProps		: "Propriétés du Document",
+DocProps		: "Propriétés du document",
 
 // Anchor Dialog
-DlgAnchorTitle		: "Propriétés de l'Ancre",
-DlgAnchorName		: "Nom de l'Ancre",
+DlgAnchorTitle		: "Propriétés de l'ancre",
+DlgAnchorName		: "Nom de l'ancre",
 DlgAnchorErrorName	: "Veuillez saisir le nom de l'ancre",
 
 // Speller Pages Dialog
 DlgSpellNotInDic		: "Pas dans le dictionnaire",
 DlgSpellChangeTo		: "Changer en",
 DlgSpellBtnIgnore		: "Ignorer",
-DlgSpellBtnIgnoreAll	: "Ignorer Tout",
+DlgSpellBtnIgnoreAll	: "Ignorer tout",
 DlgSpellBtnReplace		: "Remplacer",
-DlgSpellBtnReplaceAll	: "Remplacer Tout",
+DlgSpellBtnReplaceAll	: "Remplacer tout",
 DlgSpellBtnUndo			: "Annuler",
 DlgSpellNoSuggestions	: "- Aucune suggestion -",
 DlgSpellProgress		: "Vérification d'orthographe en cours...",
@@ -364,7 +374,7 @@
 IeSpellDownload			: "Le Correcteur n'est pas installé. Souhaitez-vous le télécharger maintenant?",
 
 // Button Dialog
-DlgButtonText	: "Texte (Valeur)",
+DlgButtonText	: "Texte (valeur)",
 DlgButtonType	: "Type",
 
 // Checkbox and Radio Button Dialogs
@@ -383,7 +393,7 @@
 DlgSelectSize		: "Taille",
 DlgSelectLines		: "lignes",
 DlgSelectChkMulti	: "Sélection multiple",
-DlgSelectOpAvail	: "Options Disponibles",
+DlgSelectOpAvail	: "Options disponibles",
 DlgSelectOpText		: "Texte",
 DlgSelectOpValue	: "Valeur",
 DlgSelectBtnAdd		: "Ajouter",
@@ -401,59 +411,59 @@
 // Text Field Dialog
 DlgTextName			: "Nom",
 DlgTextValue		: "Valeur",
-DlgTextCharWidth	: "Largeur en Caractères",
-DlgTextMaxChars		: "Nombre Maximum de Caractères",
+DlgTextCharWidth	: "Largeur en caractères",
+DlgTextMaxChars		: "Nombre maximum de caractères",
 DlgTextType			: "Type",
 DlgTextTypeText		: "Texte",
-DlgTextTypePass		: "Mot de Passe",
+DlgTextTypePass		: "Mot de passe",
 
 // Hidden Field Dialog
 DlgHiddenName	: "Nom",
 DlgHiddenValue	: "Valeur",
 
 // Bulleted List Dialog
-BulletedListProp	: "Propriétés de Liste à puces",
-NumberedListProp	: "Propriétés de Numérotée",
+BulletedListProp	: "Propriétés de liste à puces",
+NumberedListProp	: "Propriétés de numérotée",
 DlgLstType			: "Type",
 DlgLstTypeCircle	: "Cercle",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Disque",
 DlgLstTypeSquare	: "Carré",
 DlgLstTypeNumbers	: "Nombres (1, 2, 3)",
-DlgLstTypeLCase		: "Lettres Minuscules (a, b, c)",
-DlgLstTypeUCase		: "Lettres Majuscules (A, B, C)",
-DlgLstTypeSRoman	: "Chiffres Romains Minuscules (i, ii, iii)",
-DlgLstTypeLRoman	: "Chiffres Romains Majuscules (I, II, III)",
+DlgLstTypeLCase		: "Lettres minuscules (a, b, c)",
+DlgLstTypeUCase		: "Lettres majuscules (A, B, C)",
+DlgLstTypeSRoman	: "Chiffres romains minuscules (i, ii, iii)",
+DlgLstTypeLRoman	: "Chiffres romains majuscules (I, II, III)",
 
 // Document Properties Dialog
 DlgDocGeneralTab	: "Général",
 DlgDocBackTab		: "Fond",
-DlgDocColorsTab		: "Couleurs et Marges",
+DlgDocColorsTab		: "Couleurs et marges",
 DlgDocMetaTab		: "Métadonnées",
 
-DlgDocPageTitle		: "Titre de la Page",
-DlgDocLangDir		: "Sens d'Ecriture",
-DlgDocLangDirLTR	: "Gauche vers Droite (LTR)",
-DlgDocLangDirRTL	: "Droite vers Gauche (RTL)",
-DlgDocLangCode		: "Code Langue",
-DlgDocCharSet		: "Encodage de Caractère",
-DlgDocCharSetOther	: "Autre Encodage de Caractère",
+DlgDocPageTitle		: "Titre de la page",
+DlgDocLangDir		: "Sens d'écriture",
+DlgDocLangDirLTR	: "De la gauche vers la droite (LTR)",
+DlgDocLangDirRTL	: "De la droite vers la gauche (RTL)",
+DlgDocLangCode		: "Code langue",
+DlgDocCharSet		: "Encodage de caractère",
+DlgDocCharSetOther	: "Autre encodage de caractère",
 
-DlgDocDocType		: "Type de Document",
-DlgDocDocTypeOther	: "Autre Type de Document",
+DlgDocDocType		: "Type de document",
+DlgDocDocTypeOther	: "Autre type de document",
 DlgDocIncXHTML		: "Inclure les déclarations XHTML",
-DlgDocBgColor		: "Couleur de Fond",
-DlgDocBgImage		: "Image de Fond",
+DlgDocBgColor		: "Couleur de fond",
+DlgDocBgImage		: "Image de fond",
 DlgDocBgNoScroll	: "Image fixe sans défilement",
 DlgDocCText			: "Texte",
 DlgDocCLink			: "Lien",
-DlgDocCVisited		: "Lien Visité",
-DlgDocCActive		: "Lien Activé",
+DlgDocCVisited		: "Lien visité",
+DlgDocCActive		: "Lien activé",
 DlgDocMargins		: "Marges",
 DlgDocMaTop			: "Haut",
 DlgDocMaLeft		: "Gauche",
 DlgDocMaRight		: "Droite",
 DlgDocMaBottom		: "Bas",
-DlgDocMeIndex		: "Mots Clés (séparés par des virgules)",
+DlgDocMeIndex		: "Mots-clés (séparés par des virgules)",
 DlgDocMeDescr		: "Description",
 DlgDocMeAuthor		: "Auteur",
 DlgDocMeCopy		: "Copyright",
@@ -461,7 +471,7 @@
 
 // Templates Dialog
 Templates			: "Modèles",
-DlgTemplatesTitle	: "Modèles de Contenu",
+DlgTemplatesTitle	: "Modèles de contenu",
 DlgTemplatesSelMsg	: "Veuillez sélectionner le modèle à ouvrir dans l'éditeur<br>(le contenu actuel sera remplacé):",
 DlgTemplatesLoading	: "Chargement de la liste des modèles. Veuillez patienter...",
 DlgTemplatesNoTpl	: "(Aucun modèle disponible)",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "A propos de",
 DlgAboutBrowserInfoTab	: "Navigateur",
+DlgAboutLicenseTab	: "License",
 DlgAboutVersion		: "version",
 DlgAboutLicense		: "License selon les termes de GNU Lesser General Public License",
 DlgAboutInfo		: "Pour plus d'informations, aller à"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/_getfontformat.html 1.4.1.src/fckeditor/editor/lang/_getfontformat.html
--- 1.4.0sr5-1.src/fckeditor/editor/lang/_getfontformat.html	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/lang/_getfontformat.html	2006-06-17 16:25:29.000000000 -0500
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+	<head>
+		<title></title>
+		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
+	</head>
+	<script language="javascript">
+
+window.onload = function()
+{
+	var oRange = document.selection.createRange() ;
+	
+	var sNormal ;
+	var sFormats = '' ;
+	for ( var i = 1 ; i <= 9 ; i++ )
+	{
+		oRange.moveToElementText( document.getElementById( 'x' + i ) ) ;
+		sFormats += oRange.queryCommandValue( 'FormatBlock' ) ;
+		if ( i == 1 )
+			sNormal = sFormats ;
+		sFormats += ';' ;
+	}
+	
+	document.getElementById('xFontFormats').innerHTML = sFormats + sNormal + ' (DIV)' ;
+}
+	</script>
+	<body>
+		<table width="70%" align="center">
+			<tr>
+				<td>
+					<h3>FontFormats Localization</h3>
+					<p>
+						IE has some limits when handling the "Font Format". It actually uses localized 
+						strings to retrieve the current format value. This makes it very difficult to 
+						make a system that works on every single computer in the world.
+					</p>
+					<p>
+						With FCKeditor, this problem impacts in the "Format" toolbar command that 
+						doesn't reflects the format of the current cursor position.
+					</p>
+					<p>
+						There is only one way to make it work. We must localize FCKeditor using the 
+						strings used by IE. In this way, we will have the expected behavior at least 
+						when using FCKeditor in the same language as the browser. So, when localizing 
+						FCKeditor, go to a computer with IE in the target language, open this page and 
+						use the following string to the "FontFormats" value:
+					</p>
+					<div style="white-space: nowrap">
+						FontFormats : "<span id="xFontFormats" style="COLOR: #000099"></span>",
+					</div>
+				</td>
+			</tr>
+		</table>
+		<div style="DISPLAY: none">
+			<p id="x1">&nbsp;</p>
+			<pre id="x2">&nbsp;</pre>
+			<address id="x3">&nbsp;</address>
+			<h1 id="x4">&nbsp;</h1>
+			<h2 id="x5">&nbsp;</h2>
+			<h3 id="x6">&nbsp;</h3>
+			<h4 id="x7">&nbsp;</h4>
+			<h5 id="x8">&nbsp;</h5>
+			<h6 id="x9">&nbsp;</h6>
+		</div>
+	</body>
+</html>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/gl.js 1.4.1.src/fckeditor/editor/lang/gl.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/gl.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/gl.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -85,6 +85,8 @@
 Replace				: "Substituir",
 SpellCheck			: "Corrección Ortográfica",
 UniversalKeyboard	: "Teclado Universal",
+PageBreakLbl		: "Salto de Páxina",
+PageBreak			: "Inserir Salto de Páxina",
 
 Form			: "Formulario",
 Checkbox		: "Cadro de Verificación",
@@ -96,8 +98,13 @@
 SelectionField	: "Campo de Selección",
 ImageButton		: "Botón de Imaxe",
 
+FitWindow		: "Maximizar o tamaño do editor",
+
 // Context Menu
 EditLink			: "Editar Ligazón",
+CellCM				: "Cela",
+RowCM				: "Fila",
+ColumnCM			: "Columna",
 InsertRow			: "Inserir Fila",
 DeleteRows			: "Borrar Filas",
 InsertColumn		: "Inserir Columna",
@@ -106,6 +113,7 @@
 DeleteCells			: "Borrar Cela",
 MergeCells			: "Unir Celas",
 SplitCell			: "Partir Celas",
+TableDelete			: "Borrar Taboa",
 CellProperties		: "Propriedades da Cela",
 TableProperties		: "Propriedades da Taboa",
 ImageProperties		: "Propriedades Imaxe",
@@ -133,7 +141,9 @@
 UnknownCommand		: "Nome de comando descoñecido \"%1\"",
 NotImplemented		: "Comando non implementado",
 UnknownToolbarSet	: "O conxunto de ferramentas \"%1\" non existe",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "As opcións de seguridade do seu navegador poderían limitar algunha das características de editor. Debe activar a opción \"Executar controis ActiveX e plug-ins\". Pode notar que faltan características e experimentar erros",
+BrowseServerBlocked : "Non se poido abrir o navegador de recursos. Asegúrese de que están desactivados os bloqueadores de xanelas emerxentes",
+DialogBlocked		: "Non foi posible abrir a xanela de diálogo. Asegúrese de que están desactivados os bloqueadores de xanelas emerxentes",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -141,12 +151,12 @@
 DlgBtnClose			: "Pechar",
 DlgBtnBrowseServer	: "Navegar no Servidor",
 DlgAdvancedTag		: "Advanzado",
-DlgOpOther			: "&lt;Outro&gt;",
+DlgOpOther			: "<Outro>",
 DlgInfoTab			: "Info",
 DlgAlertUrl			: "Por favor, insira a URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;non definido&gt;",
+DlgGenNotSet		: "<non definido>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Orientación do Idioma",
 DlgGenLangDirLtr	: "Esquerda a Dereita (LTR)",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Referencia nesta páxina",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Protocolo",
-DlgLnkProtoOther	: "&lt;outro&gt;",
+DlgLnkProtoOther	: "<outro>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Seleccionar unha Referencia",
 DlgLnkAnchorByName	: "Por Nome de Referencia",
 DlgLnkAnchorById	: "Por Element Id",
-DlgLnkNoAnchors		: "&lt;Non hai referencias disponibles no documento&gt;",
+DlgLnkNoAnchors		: "<Non hai referencias disponibles no documento>",
 DlgLnkEMail			: "Enderezo de E-Mail",
 DlgLnkEMailSubject	: "Asunto do Mensaxe",
 DlgLnkEMailBody		: "Corpo do Mensaxe",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Enviar ó servidor",
 
 DlgLnkTarget		: "Destino",
-DlgLnkTargetFrame	: "&lt;frame&gt;",
-DlgLnkTargetPopup	: "&lt;Xanela Emerxente&gt;",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<Xanela Emerxente>",
 DlgLnkTargetBlank	: "Nova Xanela (_blank)",
 DlgLnkTargetParent	: "Xanela Pai (_parent)",
 DlgLnkTargetSelf	: "Mesma Xanela (_self)",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "Marxe entre Celas",
 DlgTableCellPad		: "Marxe interior",
 DlgTableCaption		: "Título",
+DlgTableSummary		: "Sumario",
 
 // Table Cell Dialog
 DlgCellTitle		: "Propriedades da Cela",
@@ -286,16 +297,16 @@
 DlgCellWidthPc		: "percent",
 DlgCellHeight		: "Altura",
 DlgCellWordWrap		: "Axustar Liñas",
-DlgCellWordWrapNotSet	: "&lt;Non Definido&gt;",
+DlgCellWordWrapNotSet	: "<Non Definido>",
 DlgCellWordWrapYes	: "Si",
 DlgCellWordWrapNo	: "Non",
 DlgCellHorAlign		: "Aliñamento Horizontal",
-DlgCellHorAlignNotSet	: "&lt;Non definido&gt;",
+DlgCellHorAlignNotSet	: "<Non definido>",
 DlgCellHorAlignLeft	: "Esquerda",
 DlgCellHorAlignCenter	: "Centro",
 DlgCellHorAlignRight: "Dereita",
 DlgCellVerAlign		: "Aliñamento Vertical",
-DlgCellVerAlignNotSet	: "&lt;Non definido&gt;",
+DlgCellVerAlignNotSet	: "<Non definido>",
 DlgCellVerAlignTop	: "Arriba",
 DlgCellVerAlignMiddle	: "Medio",
 DlgCellVerAlignBottom	: "Abaixo",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Eliminar as definicións de Estilos",
 DlgPasteCleanBox		: "Limpar o Cadro",
 
-
 // Color Picker
 ColorAutomatic	: "Automático",
 ColorMoreColors	: "Máis Cores...",
@@ -416,7 +426,7 @@
 NumberedListProp	: "Propriedades da Lista de Numeración",
 DlgLstType			: "Tipo",
 DlgLstTypeCircle	: "Círculo",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Disco",
 DlgLstTypeSquare	: "Cuadrado",
 DlgLstTypeNumbers	: "Números (1, 2, 3)",
 DlgLstTypeLCase		: "Letras Minúsculas (a, b, c)",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "Acerca de",
 DlgAboutBrowserInfoTab	: "Información do Navegador",
+DlgAboutLicenseTab	: "Licencia",
 DlgAboutVersion		: "versión",
 DlgAboutLicense		: "Licencia concedida baixo os termos da GNU Lesser General Public License",
 DlgAboutInfo		: "Para máis información visitar:"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/he.js 1.4.1.src/fckeditor/editor/lang/he.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/he.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/he.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -34,7 +34,7 @@
 Copy				: "העתקה",
 Paste				: "הדבקה",
 PasteText			: "הדבקה כטקסט פשוט",
-PasteWord			: "הדבקה מ-Word",
+PasteWord			: "הדבקה מ-וורד",
 Print				: "הדפסה",
 SelectAll			: "בחירת הכל",
 RemoveFormat		: "הסרת העיצוב",
@@ -86,6 +86,8 @@
 Replace				: "החלפה",
 SpellCheck			: "בדיקת איות",
 UniversalKeyboard	: "מקלדת אוניברסלית",
+PageBreakLbl		: "שבירת דף",
+PageBreak			: "הוסף שבירת דף",
 
 Form			: "טופס",
 Checkbox		: "תיבת סימון",
@@ -97,8 +99,13 @@
 SelectionField	: "שדה בחירה",
 ImageButton		: "כפתור תמונה",
 
+FitWindow		: "הגדל את גודל העורך",
+
 // Context Menu
 EditLink			: "עריכת קישור",
+CellCM				: "תא",
+RowCM				: "שורה",
+ColumnCM			: "עמודה",
 InsertRow			: "הוספת שורה",
 DeleteRows			: "מחיקת שורות",
 InsertColumn		: "הוספת עמודה",
@@ -107,6 +114,7 @@
 DeleteCells			: "מחיקת תאים",
 MergeCells			: "מיזוג תאים",
 SplitCell			: "פיצול תאים",
+TableDelete			: "מחק טבלה",
 CellProperties		: "תכונות התא",
 TableProperties		: "תכונות הטבלה",
 ImageProperties		: "תכונות התמונה",
@@ -128,13 +136,15 @@
 // Alerts and Messages
 ProcessingXHTML		: "מעבד XHTML, נא להמתין...",
 Done				: "המשימה הושלמה",
-PasteWordConfirm	: "נראה הטקסט שבכוונתך להדביק מקורו בקובץ Word. האם ברצונך לנקות אותו טרם ההדבקה?",
-NotCompatiblePaste	: "פעולה זו זמינה לדפדפן Internet Explorer מגירסא 5.5 ומעלה. האם להמשיך בהדבקה ללא הניקוי?",
+PasteWordConfirm	: "נראה הטקסט שבכוונתך להדביק מקורו בקובץ וורד. האם ברצונך לנקות אותו טרם ההדבקה?",
+NotCompatiblePaste	: "פעולה זו זמינה לדפדפן אינטרנט אקספלורר מגירסא 5.5 ומעלה. האם להמשיך בהדבקה ללא הניקוי?",
 UnknownToolbarItem	: "פריט לא ידוע בסרגל הכלים \"%1\"",
 UnknownCommand		: "שם פעולה לא ידוע \"%1\"",
 NotImplemented		: "הפקודה לא מיושמת",
 UnknownToolbarSet	: "ערכת סרגל הכלים \"%1\" לא קיימת",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "הגדרות אבטחה של הדפדפן עלולות לגביל את אפשרויות העריכה.יש לאפשר את האופציה \"הרץ פקדים פעילים ותוספות\". תוכל לחוות טעויות וחיווים של אפשרויות שחסרים.",
+BrowseServerBlocked : "לא ניתן לגשת לדפדפן משאבים.אנא וודא שחוסם חלונות הקופצים לא פעיל.",
+DialogBlocked		: "לא היה ניתן לפתוח חלון דיאלוג. אנא וודא שחוסם חלונות קופצים לא פעיל.",
 
 // Dialogs
 DlgBtnOK			: "אישור",
@@ -142,12 +152,12 @@
 DlgBtnClose			: "סגירה",
 DlgBtnBrowseServer	: "סייר השרת",
 DlgAdvancedTag		: "אפשרויות מתקדמות",
-DlgOpOther			: "&lt;אחר&gt;",
+DlgOpOther			: "<אחר>",
 DlgInfoTab			: "מידע",
 DlgAlertUrl			: "אנה הזן URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;לא נקבע&gt;",
+DlgGenNotSet		: "<לא נקבע>",
 DlgGenId			: "זיהוי (Id)",
 DlgGenLangDir		: "כיוון שפה",
 DlgGenLangDirLtr	: "שמאל לימין (LTR)",
@@ -211,12 +221,12 @@
 DlgLnkTypeAnchor	: "עוגן בעמוד זה",
 DlgLnkTypeEMail		: "דוא''ל",
 DlgLnkProto			: "פרוטוקול",
-DlgLnkProtoOther	: "&lt;אחר&gt;",
+DlgLnkProtoOther	: "<אחר>",
 DlgLnkURL			: "כתובת (URL)",
 DlgLnkAnchorSel		: "בחירת עוגן",
 DlgLnkAnchorByName	: "עפ''י שם העוגן",
 DlgLnkAnchorById	: "עפ''י זיהוי (Id) הרכיב",
-DlgLnkNoAnchors		: "&lt;אין עוגנים זמינים בדף&gt;",
+DlgLnkNoAnchors		: "<אין עוגנים זמינים בדף>",
 DlgLnkEMail			: "כתובת הדוא''ל",
 DlgLnkEMailSubject	: "נושא ההודעה",
 DlgLnkEMailBody		: "גוף ההודעה",
@@ -224,13 +234,13 @@
 DlgLnkBtnUpload		: "שליחה לשרת",
 
 DlgLnkTarget		: "מטרה",
-DlgLnkTargetFrame	: "&lt;frame&gt;",
-DlgLnkTargetPopup	: "&lt;חלון קופץ&gt;",
+DlgLnkTargetFrame	: "<מסגרת>",
+DlgLnkTargetPopup	: "<חלון קופץ>",
 DlgLnkTargetBlank	: "חלון חדש (_blank)",
 DlgLnkTargetParent	: "חלון האב (_parent)",
 DlgLnkTargetSelf	: "באותו החלון (_self)",
 DlgLnkTargetTop		: "חלון ראשי (_top)",
-DlgLnkTargetFrameName	: "שם frame היעד",
+DlgLnkTargetFrameName	: "שם מסגרת היעד",
 DlgLnkPopWinName	: "שם החלון הקופץ",
 DlgLnkPopWinFeat	: "תכונות החלון הקופץ",
 DlgLnkPopResize		: "בעל גודל ניתן לשינוי",
@@ -279,6 +289,7 @@
 DlgTableCellSpace	: "מרווח תא",
 DlgTableCellPad		: "ריפוד תא",
 DlgTableCaption		: "כיתוב",
+DlgTableSummary		: "סיכום",
 
 // Table Cell Dialog
 DlgCellTitle		: "תכונות תא",
@@ -327,13 +338,12 @@
 PasteErrorCopy	: "הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות העתקה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl+C).",
 
 PasteAsText		: "הדבקה כטקסט פשוט",
-PasteFromWord	: "הדבקה מ-Word",
+PasteFromWord	: "הדבקה מ-וורד",
 
-DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",
+DlgPasteMsg2	: "אנא הדבק בתוך הקופסה באמצעות  (<STRONG>Ctrl+V</STRONG>) ולחץ על  <STRONG>אישור</STRONG>.",
 DlgPasteIgnoreFont		: "התעלם מהגדרות סוג פונט",
 DlgPasteRemoveStyles	: "הסר הגדרות סגנון",
-DlgPasteCleanBox		: "קופסת ניקוי",
-
+DlgPasteCleanBox		: "ניקוי קופסה",
 
 // Color Picker
 ColorAutomatic	: "אוטומטי",
@@ -354,7 +364,7 @@
 DlgSpellBtnIgnoreAll	: "התעלם מהכל",
 DlgSpellBtnReplace		: "החלף",
 DlgSpellBtnReplaceAll	: "החלף הכל",
-DlgSpellBtnUndo			: "Undo",
+DlgSpellBtnUndo			: "החזר",
 DlgSpellNoSuggestions	: "- אין הצעות -",
 DlgSpellProgress		: "בדיקות איות בתהליך ....",
 DlgSpellNoMispell		: "בדיקות איות הסתיימה: לא נמצאו שגיעות כתיב",
@@ -417,7 +427,7 @@
 NumberedListProp	: "מאפייני רשימה ממוספרת",
 DlgLstType			: "סוג",
 DlgLstTypeCircle	: "עיגול",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "דיסק",
 DlgLstTypeSquare	: "מרובע",
 DlgLstTypeNumbers	: "מספרים (1, 2, 3)",
 DlgLstTypeLCase		: "אותיות קטנות (a, b, c)",
@@ -470,6 +480,7 @@
 // About Dialog
 DlgAboutAboutTab	: "אודות",
 DlgAboutBrowserInfoTab	: "גירסת דפדפן",
+DlgAboutLicenseTab	: "רשיון",
 DlgAboutVersion		: "גירסא",
 DlgAboutLicense		: "ברשיון תחת תנאי GNU Lesser General Public License",
 DlgAboutInfo		: "מידע נוסף ניתן למצוא כאן:"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/hi.js 1.4.1.src/fckeditor/editor/lang/hi.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/hi.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/lang/hi.js	2006-06-17 16:25:29.000000000 -0500
@@ -0,0 +1,486 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: hi.js
+ * 	Hindi language file.
+ * 
+ * File Authors:
+ * 		Utkarshraj Atmaram (utcursch@gmail.com)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "टूलबार सिमटायें",
+ToolbarExpand		: "टूलबार का विस्तार करें",
+
+// Toolbar Items and Context Menu
+Save				: "सेव",
+NewPage				: "नया पेज",
+Preview				: "प्रीव्यू",
+Cut					: "कट",
+Copy				: "कॉपी",
+Paste				: "पेस्ट",
+PasteText			: "पेस्ट (सादा टॅक्स्ट)",
+PasteWord			: "पेस्ट (वर्ड से)",
+Print				: "प्रिन्ट",
+SelectAll			: "सब सॅलॅक्ट करें",
+RemoveFormat		: "फ़ॉर्मैट हटायें",
+InsertLinkLbl		: "लिंक",
+InsertLink			: "लिंक इन्सर्ट/संपादन",
+RemoveLink			: "लिंक हटायें",
+Anchor				: "ऐंकर इन्सर्ट/संपादन",
+InsertImageLbl		: "तस्वीर",
+InsertImage			: "तस्वीर इन्सर्ट/संपादन",
+InsertFlashLbl		: "फ़्लैश",
+InsertFlash			: "फ़्लैश इन्सर्ट/संपादन",
+InsertTableLbl		: "टेबल",
+InsertTable			: "टेबल इन्सर्ट/संपादन",
+InsertLineLbl		: "रेखा",
+InsertLine			: "हॉरिज़ॉन्टल रेखा इन्सर्ट करें",
+InsertSpecialCharLbl: "विशेष करॅक्टर",
+InsertSpecialChar	: "विशेष करॅक्टर इन्सर्ट करें",
+InsertSmileyLbl		: "स्माइली",
+InsertSmiley		: "स्माइली इन्सर्ट करें",
+About				: "FCKeditor के बारे में",
+Bold				: "बोल्ड",
+Italic				: "इटैलिक",
+Underline			: "रेखांकण",
+StrikeThrough		: "स्ट्राइक थ्रू",
+Subscript			: "अधोलेख",
+Superscript			: "अभिलेख",
+LeftJustify			: "बायीं तरफ",
+CenterJustify		: "बीच में",
+RightJustify		: "दायीं तरफ",
+BlockJustify		: "ब्लॉक जस्टीफ़ाई",
+DecreaseIndent		: "इन्डॅन्ट कम करें",
+IncreaseIndent		: "इन्डॅन्ट बढ़ायें",
+Undo				: "अन्डू",
+Redo				: "रीडू",
+NumberedListLbl		: "अंकीय सूची",
+NumberedList		: "अंकीय सूची इन्सर्ट/संपादन",
+BulletedListLbl		: "बुलॅट सूची",
+BulletedList		: "बुलॅट सूची इन्सर्ट/संपादन",
+ShowTableBorders	: "टेबल बॉर्डरयें दिखायें",
+ShowDetails			: "ज्यादा   दिखायें",
+Style				: "स्टाइल",
+FontFormat			: "फ़ॉर्मैट",
+Font				: "फ़ॉन्ट",
+FontSize			: "साइज़",
+TextColor			: "टेक्स्ट रंग",
+BGColor				: "बैक्ग्राउन्ड रंग",
+Source				: "सोर्स",
+Find				: "खोजें",
+Replace				: "रीप्लेस",
+SpellCheck			: "वर्तनी (स्पेलिंग) जाँच",
+UniversalKeyboard	: "यूनीवर्सल कीबोर्ड",
+PageBreakLbl		: "पेज ब्रेक",
+PageBreak			: "पेज ब्रेक इन्सर्ट् करें",
+
+Form			: "फ़ॉर्म",
+Checkbox		: "चॅक बॉक्स",
+RadioButton		: "रेडिओ बटन",
+TextField		: "टेक्स्ट फ़ील्ड",
+Textarea		: "टेक्स्ट एरिया",
+HiddenField		: "गुप्त फ़ील्ड",
+Button			: "बटन",
+SelectionField	: "चुनाव फ़ील्ड",
+ImageButton		: "तस्वीर बटन",
+
+FitWindow		: "एडिटर साइज़ को चरम सीमा तक बढ़ायें",
+
+// Context Menu
+EditLink			: "लिंक संपादन",
+CellCM				: "खाना",
+RowCM				: "पंक्ति",
+ColumnCM			: "कालम",
+InsertRow			: "पंक्ति इन्सर्ट करें",
+DeleteRows			: "पंक्तियाँ डिलीट करें",
+InsertColumn		: "कॉलम इन्सर्ट करें",
+DeleteColumns		: "कॉलम डिलीट करें",
+InsertCell			: "सॅल इन्सर्ट करें",
+DeleteCells			: "सॅल डिलीट करें",
+MergeCells			: "सॅल मिलायें",
+SplitCell			: "सॅल अलग करें",
+TableDelete			: "टेबल डिलीट करें",
+CellProperties		: "सॅल प्रॉपर्टीज़",
+TableProperties		: "टेबल प्रॉपर्टीज़",
+ImageProperties		: "तस्वीर प्रॉपर्टीज़",
+FlashProperties		: "फ़्लैश प्रॉपर्टीज़",
+
+AnchorProp			: "ऐंकर प्रॉपर्टीज़",
+ButtonProp			: "बटन प्रॉपर्टीज़",
+CheckboxProp		: "चॅक बॉक्स प्रॉपर्टीज़",
+HiddenFieldProp		: "गुप्त फ़ील्ड प्रॉपर्टीज़",
+RadioButtonProp		: "रेडिओ बटन प्रॉपर्टीज़",
+ImageButtonProp		: "तस्वीर बटन प्रॉपर्टीज़",
+TextFieldProp		: "टेक्स्ट फ़ील्ड प्रॉपर्टीज़",
+SelectionFieldProp	: "चुनाव फ़ील्ड प्रॉपर्टीज़",
+TextareaProp		: "टेक्स्त एरिया प्रॉपर्टीज़",
+FormProp			: "फ़ॉर्म प्रॉपर्टीज़",
+
+FontFormats			: "साधारण;फ़ॉर्मैटॅड;पता;शीर्षक 1;शीर्षक 2;शीर्षक 3;शीर्षक 4;शीर्षक 5;शीर्षक 6;शीर्षक (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "XHTML प्रोसॅस हो रहा है। ज़रा ठहरें...",
+Done				: "पूरा हुआ",
+PasteWordConfirm	: "आप जो टेक्स्ट पेस्ट करना चाहते हैं, वह वर्ड से कॉपी किया हुआ लग रहा है। क्या पेस्ट करने से पहले आप इसे साफ़ करना चाहेंगे?",
+NotCompatiblePaste	: "यह कमांड इन्टरनॅट एक्स्प्लोरर(Internet Explorer) 5.5 या उसके बाद के वर्ज़न के लिए ही उपलब्ध है। क्या आप बिना साफ़ किए पेस्ट करना चाहेंगे?",
+UnknownToolbarItem	: "अनजान टूलबार आइटम \"%1\"",
+UnknownCommand		: "अनजान कमान्ड \"%1\"",
+NotImplemented		: "कमान्ड इम्प्लीमॅन्ट नहीं किया गया है",
+UnknownToolbarSet	: "टूलबार सॅट \"%1\" उपलब्ध नहीं है",
+NoActiveX			: "आपके ब्राउज़र् की सुरक्शा सेटिंग्स् एडिटर की कुछ् फ़ीचरों को सीमित कर् सकती हैं। क्रिपया \"Run ActiveX controls and plug-ins\" विकल्प को एनेबल करें. आपको एरर्स् और गायब फ़ीचर्स् का अनुभव हो सकता है।",
+BrowseServerBlocked : "रिसोर्सेज़ ब्राउज़र् नहीं खोला जा सका। क्रिपया सभी पॉप्-अप् ब्लॉकर्स् को डिसेबल करें।",
+DialogBlocked		: "डायलग विन्डो नहीं खोला जा सका। क्रिपया सभी पॉप्-अप् ब्लॉकर्स् को डिसेबल करें।",
+
+// Dialogs
+DlgBtnOK			: "ठीक है",
+DlgBtnCancel		: "रद्द करें",
+DlgBtnClose			: "बन्द करें",
+DlgBtnBrowseServer	: "सर्वर ब्राउज़ करें",
+DlgAdvancedTag		: "ऍड्वान्स्ड",
+DlgOpOther			: "<अन्य>",
+DlgInfoTab			: "सूचना",
+DlgAlertUrl			: "URL इन्सर्ट करें",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<सॅट नहीं>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "भाषा लिखने की दिशा",
+DlgGenLangDirLtr	: "बायें से दायें (LTR)",
+DlgGenLangDirRtl	: "दायें से बायें (RTL)",
+DlgGenLangCode		: "भाषा कोड",
+DlgGenAccessKey		: "ऍक्सॅस की",
+DlgGenName			: "नाम",
+DlgGenTabIndex		: "टैब इन्डॅक्स",
+DlgGenLongDescr		: "अधिक विवरण के लिए URL",
+DlgGenClass			: "स्टाइल-शीट क्लास",
+DlgGenTitle			: "परामर्श शीर्शक",
+DlgGenContType		: "परामर्श कन्टॅन्ट प्रकार",
+DlgGenLinkCharset	: "लिंक रिसोर्स करॅक्टर सॅट",
+DlgGenStyle			: "स्टाइल",
+
+// Image Dialog
+DlgImgTitle			: "तस्वीर प्रॉपर्टीज़",
+DlgImgInfoTab		: "तस्वीर की जानकारी",
+DlgImgBtnUpload		: "इसे सर्वर को भेजें",
+DlgImgURL			: "URL",
+DlgImgUpload		: "अपलोड",
+DlgImgAlt			: "वैकल्पिक टेक्स्ट",
+DlgImgWidth			: "चौड़ाई",
+DlgImgHeight		: "ऊँचाई",
+DlgImgLockRatio		: "लॉक अनुपात",
+DlgBtnResetSize		: "रीसॅट साइज़",
+DlgImgBorder		: "बॉर्डर",
+DlgImgHSpace		: "हॉरिज़ॉन्टल स्पेस",
+DlgImgVSpace		: "वर्टिकल स्पेस",
+DlgImgAlign			: "ऍलाइन",
+DlgImgAlignLeft		: "दायें",
+DlgImgAlignAbsBottom: "Abs नीचे",
+DlgImgAlignAbsMiddle: "Abs ऊपर",
+DlgImgAlignBaseline	: "मूल रेखा",
+DlgImgAlignBottom	: "नीचे",
+DlgImgAlignMiddle	: "मध्य",
+DlgImgAlignRight	: "दायें",
+DlgImgAlignTextTop	: "टेक्स्ट ऊपर",
+DlgImgAlignTop		: "ऊपर",
+DlgImgPreview		: "प्रीव्यू",
+DlgImgAlertUrl		: "तस्वीर का URL टाइप करें ",
+DlgImgLinkTab		: "लिंक",
+
+// Flash Dialog
+DlgFlashTitle		: "फ़्लैश प्रॉपर्टीज़",
+DlgFlashChkPlay		: "ऑटो प्ले",
+DlgFlashChkLoop		: "लूप",
+DlgFlashChkMenu		: "फ़्लैश मॅन्यू का प्रयोग करें",
+DlgFlashScale		: "स्केल",
+DlgFlashScaleAll	: "सभी दिखायें",
+DlgFlashScaleNoBorder	: "कोई बॉर्डर नहीं",
+DlgFlashScaleFit	: "बिल्कुल फ़िट",
+
+// Link Dialog
+DlgLnkWindowTitle	: "लिंक",
+DlgLnkInfoTab		: "लिंक  ",
+DlgLnkTargetTab		: "टार्गेट",
+
+DlgLnkType			: "लिंक प्रकार",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "इस पेज का ऐंकर",
+DlgLnkTypeEMail		: "ई-मेल",
+DlgLnkProto			: "प्रोटोकॉल",
+DlgLnkProtoOther	: "<अन्य>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "ऐंकर चुनें",
+DlgLnkAnchorByName	: "ऐंकर नाम से",
+DlgLnkAnchorById	: "ऍलीमॅन्ट Id से",
+DlgLnkNoAnchors		: "<डॉक्यूमॅन्ट में ऐंकर्स की संख्या>",
+DlgLnkEMail			: "ई-मेल पता",
+DlgLnkEMailSubject	: "संदेश विषय",
+DlgLnkEMailBody		: "संदेश",
+DlgLnkUpload		: "अपलोड",
+DlgLnkBtnUpload		: "इसे सर्वर को भेजें",
+
+DlgLnkTarget		: "टार्गेट",
+DlgLnkTargetFrame	: "<फ़्रेम>",
+DlgLnkTargetPopup	: "<पॉप-अप विन्डो>",
+DlgLnkTargetBlank	: "नया विन्डो (_blank)",
+DlgLnkTargetParent	: "मूल विन्डो (_parent)",
+DlgLnkTargetSelf	: "इसी विन्डो (_self)",
+DlgLnkTargetTop		: "शीर्ष विन्डो (_top)",
+DlgLnkTargetFrameName	: "टार्गेट फ़्रेम का नाम",
+DlgLnkPopWinName	: "पॉप-अप विन्डो का नाम",
+DlgLnkPopWinFeat	: "पॉप-अप विन्डो फ़ीचर्स",
+DlgLnkPopResize		: "साइज़ बदला जा सकता है",
+DlgLnkPopLocation	: "लोकेशन बार",
+DlgLnkPopMenu		: "मॅन्यू बार",
+DlgLnkPopScroll		: "स्क्रॉल बार",
+DlgLnkPopStatus		: "स्टेटस बार",
+DlgLnkPopToolbar	: "टूल बार",
+DlgLnkPopFullScrn	: "फ़ुल स्क्रीन (IE)",
+DlgLnkPopDependent	: "डिपेन्डॅन्ट (Netscape)",
+DlgLnkPopWidth		: "चौड़ाई",
+DlgLnkPopHeight		: "ऊँचाई",
+DlgLnkPopLeft		: "बायीं तरफ",
+DlgLnkPopTop		: "दायीं तरफ",
+
+DlnLnkMsgNoUrl		: "लिंक URL टाइप करें",
+DlnLnkMsgNoEMail	: "ई-मेल पता टाइप करें",
+DlnLnkMsgNoAnchor	: "ऐंकर चुनें",
+
+// Color Dialog
+DlgColorTitle		: "रंग चुनें",
+DlgColorBtnClear	: "साफ़ करें",
+DlgColorHighlight	: "हाइलाइट",
+DlgColorSelected	: "सॅलॅक्टॅड",
+
+// Smiley Dialog
+DlgSmileyTitle		: "स्माइली इन्सर्ट करें",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "विशेष करॅक्टर चुनें",
+
+// Table Dialog
+DlgTableTitle		: "टेबल प्रॉपर्टीज़",
+DlgTableRows		: "पंक्तियाँ",
+DlgTableColumns		: "कॉलम",
+DlgTableBorder		: "बॉर्डर साइज़",
+DlgTableAlign		: "ऍलाइन्मॅन्ट",
+DlgTableAlignNotSet	: "<सॅट नहीं>",
+DlgTableAlignLeft	: "दायें",
+DlgTableAlignCenter	: "बीच में",
+DlgTableAlignRight	: "बायें",
+DlgTableWidth		: "चौड़ाई",
+DlgTableWidthPx		: "पिक्सॅल",
+DlgTableWidthPc		: "प्रतिशत",
+DlgTableHeight		: "ऊँचाई",
+DlgTableCellSpace	: "सॅल अंतर",
+DlgTableCellPad		: "सॅल पैडिंग",
+DlgTableCaption		: "शीर्षक",
+DlgTableSummary		: "सारांश",
+
+// Table Cell Dialog
+DlgCellTitle		: "सॅल प्रॉपर्टीज़",
+DlgCellWidth		: "चौड़ाई",
+DlgCellWidthPx		: "पिक्सॅल",
+DlgCellWidthPc		: "प्रतिशत",
+DlgCellHeight		: "ऊँचाई",
+DlgCellWordWrap		: "वर्ड रैप",
+DlgCellWordWrapNotSet	: "<सॅट नहीं>",
+DlgCellWordWrapYes	: "हाँ",
+DlgCellWordWrapNo	: "नहीं",
+DlgCellHorAlign		: "हॉरिज़ॉन्टल ऍलाइन्मॅन्ट",
+DlgCellHorAlignNotSet	: "<सॅट नहीं>",
+DlgCellHorAlignLeft	: "दायें",
+DlgCellHorAlignCenter	: "बीच में",
+DlgCellHorAlignRight: "बायें",
+DlgCellVerAlign		: "वर्टिकल ऍलाइन्मॅन्ट",
+DlgCellVerAlignNotSet	: "<सॅट नहीं>",
+DlgCellVerAlignTop	: "ऊपर",
+DlgCellVerAlignMiddle	: "मध्य",
+DlgCellVerAlignBottom	: "नीचे",
+DlgCellVerAlignBaseline	: "मूलरेखा",
+DlgCellRowSpan		: "पंक्ति स्पैन",
+DlgCellCollSpan		: "कॉलम स्पैन",
+DlgCellBackColor	: "बैक्ग्राउन्ड रंग",
+DlgCellBorderColor	: "बॉर्डर का रंग",
+DlgCellBtnSelect	: "चुनें...",
+
+// Find Dialog
+DlgFindTitle		: "खोजें",
+DlgFindFindBtn		: "खोजें",
+DlgFindNotFoundMsg	: "आपके द्वारा दिया गया टेक्स्ट नहीं मिला",
+
+// Replace Dialog
+DlgReplaceTitle			: "रिप्लेस",
+DlgReplaceFindLbl		: "यह खोजें:",
+DlgReplaceReplaceLbl	: "इससे रिप्लेस करें:",
+DlgReplaceCaseChk		: "केस मिलायें",
+DlgReplaceReplaceBtn	: "रिप्लेस",
+DlgReplaceReplAllBtn	: "सभी रिप्लेस करें",
+DlgReplaceWordChk		: "पूरा शब्द मिलायें",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "आपके ब्रा‌उज़र की सुरक्षा सॅटिन्ग्स ने पेस्ट करने की अनुमति नहीं प्रदान की है। (Ctrl+V) का प्रयोग करें।",
+PasteErrorCut	: "आपके ब्राउज़र की सुरक्षा सॅटिन्ग्स ने कट करने की अनुमति नहीं प्रदान की है। (Ctrl+X) का प्रयोग करें।",
+PasteErrorCopy	: "आपके ब्राआउज़र की सुरक्षा सॅटिन्ग्स ने कॉपी करने की अनुमति नहीं प्रदान की है। (Ctrl+C) का प्रयोग करें।",
+
+PasteAsText		: "पेस्ट (सादा टॅक्स्ट)",
+PasteFromWord	: "पेस्ट (वर्ड से)",
+
+DlgPasteMsg2	: "Ctrl+V का प्रयोग करके पेस्ट करें और ठीक है करें.",
+DlgPasteIgnoreFont		: "फ़ॉन्ट परिभाषा निकालें",
+DlgPasteRemoveStyles	: "स्टाइल परिभाषा निकालें",
+DlgPasteCleanBox		: "बॉक्स साफ़ करें",
+
+// Color Picker
+ColorAutomatic	: "ऑटोमैटिक",
+ColorMoreColors	: "और रंग...",
+
+// Document Properties
+DocProps		: "डॉक्यूमॅन्ट प्रॉपर्टीज़",
+
+// Anchor Dialog
+DlgAnchorTitle		: "ऐंकर प्रॉपर्टीज़",
+DlgAnchorName		: "ऐंकर का नाम",
+DlgAnchorErrorName	: "ऐंकर का नाम टाइप करें",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "शब्दकोश में नहीं",
+DlgSpellChangeTo		: "इसमें बदलें",
+DlgSpellBtnIgnore		: "इग्नोर",
+DlgSpellBtnIgnoreAll	: "सभी इग्नोर करें",
+DlgSpellBtnReplace		: "रिप्लेस",
+DlgSpellBtnReplaceAll	: "सभी रिप्लेस करें",
+DlgSpellBtnUndo			: "अन्डू",
+DlgSpellNoSuggestions	: "- कोई सुझाव नहीं -",
+DlgSpellProgress		: "वर्तनी की जाँच (स्पॅल-चॅक) जारी है...",
+DlgSpellNoMispell		: "वर्तनी की जाँच : कोई गलत वर्तनी (स्पॅलिंग) नहीं पाई गई",
+DlgSpellNoChanges		: "वर्तनी की जाँच :कोई शब्द नहीं बदला गया",
+DlgSpellOneChange		: "वर्तनी की जाँच : एक शब्द बदला गया",
+DlgSpellManyChanges		: "वर्तनी की जाँच : %1 शब्द बदले गये",
+
+IeSpellDownload			: "स्पॅल-चॅकर इन्स्टाल नहीं किया गया है। क्या आप इसे डा‌उनलोड करना चाहेंगे?",
+
+// Button Dialog
+DlgButtonText	: "टेक्स्ट (वैल्यू)",
+DlgButtonType	: "प्रकार",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "नाम",
+DlgCheckboxValue	: "वैल्यू",
+DlgCheckboxSelected	: "सॅलॅक्टॅड",
+
+// Form Dialog
+DlgFormName		: "नाम",
+DlgFormAction	: "ऍक्शन",
+DlgFormMethod	: "तरीका",
+
+// Select Field Dialog
+DlgSelectName		: "नाम",
+DlgSelectValue		: "वैल्यू",
+DlgSelectSize		: "साइज़",
+DlgSelectLines		: "पंक्तियाँ",
+DlgSelectChkMulti	: "एक से ज्यादा विकल्प चुनने दें",
+DlgSelectOpAvail	: "उपलब्ध विकल्प",
+DlgSelectOpText		: "टेक्स्ट",
+DlgSelectOpValue	: "वैल्यू",
+DlgSelectBtnAdd		: "जोड़ें",
+DlgSelectBtnModify	: "बदलें",
+DlgSelectBtnUp		: "ऊपर",
+DlgSelectBtnDown	: "नीचे",
+DlgSelectBtnSetValue : "चुनी गई वैल्यू सॅट करें",
+DlgSelectBtnDelete	: "डिलीट",
+
+// Textarea Dialog
+DlgTextareaName	: "नाम",
+DlgTextareaCols	: "कॉलम",
+DlgTextareaRows	: "पंक्तियां",
+
+// Text Field Dialog
+DlgTextName			: "नाम",
+DlgTextValue		: "वैल्यू",
+DlgTextCharWidth	: "करॅक्टर की चौढ़ाई",
+DlgTextMaxChars		: "अधिकतम करॅक्टर",
+DlgTextType			: "टाइप",
+DlgTextTypeText		: "टेक्स्ट",
+DlgTextTypePass		: "पास्वर्ड",
+
+// Hidden Field Dialog
+DlgHiddenName	: "नाम",
+DlgHiddenValue	: "वैल्यू",
+
+// Bulleted List Dialog
+BulletedListProp	: "बुलॅट सूची प्रॉपर्टीज़",
+NumberedListProp	: "अंकीय सूची प्रॉपर्टीज़",
+DlgLstType			: "प्रकार",
+DlgLstTypeCircle	: "गोल",
+DlgLstTypeDisc		: "डिस्क",
+DlgLstTypeSquare	: "चौकॊण",
+DlgLstTypeNumbers	: "अंक (1, 2, 3)",
+DlgLstTypeLCase		: "छोटे अक्षर (a, b, c)",
+DlgLstTypeUCase		: "बड़े अक्षर (A, B, C)",
+DlgLstTypeSRoman	: "छोटे रोमन अंक (i, ii, iii)",
+DlgLstTypeLRoman	: "बड़े रोमन अंक (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "आम",
+DlgDocBackTab		: "बैक्ग्राउन्ड",
+DlgDocColorsTab		: "रंग और मार्जिन",
+DlgDocMetaTab		: "मॅटाडेटा",
+
+DlgDocPageTitle		: "पेज शीर्षक",
+DlgDocLangDir		: "भाषा लिखने की दिशा",
+DlgDocLangDirLTR	: "बायें से दायें (LTR)",
+DlgDocLangDirRTL	: "दायें से बायें (RTL)",
+DlgDocLangCode		: "भाषा कोड",
+DlgDocCharSet		: "करेक्टर सॅट ऍन्कोडिंग",
+DlgDocCharSetOther	: "अन्य करेक्टर सॅट ऍन्कोडिंग",
+
+DlgDocDocType		: "डॉक्यूमॅन्ट प्रकार शीर्षक",
+DlgDocDocTypeOther	: "अन्य डॉक्यूमॅन्ट प्रकार शीर्षक",
+DlgDocIncXHTML		: "XHTML सूचना सम्मिलित करें",
+DlgDocBgColor		: "बैक्ग्राउन्ड रंग",
+DlgDocBgImage		: "बैक्ग्राउन्ड तस्वीर URL",
+DlgDocBgNoScroll	: "स्क्रॉल न करने वाला बैक्ग्राउन्ड",
+DlgDocCText			: "टेक्स्ट",
+DlgDocCLink			: "लिंक",
+DlgDocCVisited		: "विज़िट किया गया लिंक",
+DlgDocCActive		: "सक्रिय लिंक",
+DlgDocMargins		: "पेज मार्जिन",
+DlgDocMaTop			: "ऊपर",
+DlgDocMaLeft		: "बायें",
+DlgDocMaRight		: "दायें",
+DlgDocMaBottom		: "नीचे",
+DlgDocMeIndex		: "डॉक्युमॅन्ट इन्डेक्स संकेतशब्द (अल्पविराम से अलग करें)",
+DlgDocMeDescr		: "डॉक्यूमॅन्ट करॅक्टरन",
+DlgDocMeAuthor		: "लेखक",
+DlgDocMeCopy		: "कॉपीराइट",
+DlgDocPreview		: "प्रीव्यू",
+
+// Templates Dialog
+Templates			: "टॅम्प्लेट",
+DlgTemplatesTitle	: "कन्टेन्ट टॅम्प्लेट",
+DlgTemplatesSelMsg	: "ऍडिटर में ओपन करने हेतु टॅम्प्लेट चुनें(वर्तमान कन्टॅन्ट सेव नहीं होंगे):",
+DlgTemplatesLoading	: "टॅम्प्लेट सूची लोड की जा रही है। ज़रा ठहरें...",
+DlgTemplatesNoTpl	: "(कोई टॅम्प्लेट डिफ़ाइन नहीं किया गया है)",
+
+// About Dialog
+DlgAboutAboutTab	: "FCKEditor के बारे में",
+DlgAboutBrowserInfoTab	: "ब्राउज़र के बारे में",
+DlgAboutLicenseTab	: "लाइसैन्स",
+DlgAboutVersion		: "वर्ज़न",
+DlgAboutLicense		: "लाइसेंस :GNU LGPL",
+DlgAboutInfo		: "अधिक जानकारी के लिये यहाँ जायें:"
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/hr.js 1.4.1.src/fckeditor/editor/lang/hr.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/hr.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/hr.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -80,11 +80,13 @@
 FontSize			: "Veličina",
 TextColor			: "Boja teksta",
 BGColor				: "Boja pozadine",
-Source				: "K&ocirc;d",
+Source				: "Kôd",
 Find				: "Pronađi",
 Replace				: "Zamijeni",
 SpellCheck			: "Provjeri pravopis",
 UniversalKeyboard	: "Univerzalna tipkovnica",
+PageBreakLbl		: "Prijelom stranice",
+PageBreak			: "Ubaci prijelom stranice",
 
 Form			: "Form",
 Checkbox		: "Checkbox",
@@ -96,8 +98,13 @@
 SelectionField	: "Selection Field",
 ImageButton		: "Image Button",
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "Promijeni link",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "Ubaci red",
 DeleteRows			: "Izbriši redove",
 InsertColumn		: "Ubaci kolonu",
@@ -106,6 +113,7 @@
 DeleteCells			: "Izbriši ćelije",
 MergeCells			: "Spoji ćelije",
 SplitCell			: "Razdvoji ćelije",
+TableDelete			: "Izbriši tablicu",
 CellProperties		: "Svojstva ćelije",
 TableProperties		: "Svojstva tablice",
 ImageProperties		: "Svojstva slike",
@@ -133,7 +141,9 @@
 UnknownCommand		: "Nepoznata naredba \"%1\"",
 NotImplemented		: "Naredba nije implementirana",
 UnknownToolbarSet	: "Traka s alatima \"%1\" ne postoji",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Vaše postavke pretraživača mogle bi ograničiti neke od mogućnosti editora. Morate uključiti opciju \"Run ActiveX controls and plug-ins\" u postavkama. Ukoliko to ne učinite, moguće su razliite greške tijekom rada.",
+BrowseServerBlocked : "Pretraivač nije moguće otvoriti. Provjerite da li je uključeno blokiranje pop-up prozora.",
+DialogBlocked		: "Nije moguće otvoriti novi prozor. Provjerite da li je uključeno blokiranje pop-up prozora.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -141,17 +151,17 @@
 DlgBtnClose			: "Zatvori",
 DlgBtnBrowseServer	: "Pretraži server",
 DlgAdvancedTag		: "Napredno",
-DlgOpOther			: "&lt;Drugo&gt;",
+DlgOpOther			: "<Drugo>",
 DlgInfoTab			: "Info",
 DlgAlertUrl			: "Molimo unesite URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;nije postavljeno&gt;",
+DlgGenNotSet		: "<nije postavljeno>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Smjer jezika",
 DlgGenLangDirLtr	: "S lijeva na desno (LTR)",
 DlgGenLangDirRtl	: "S desna na lijevo (RTL)",
-DlgGenLangCode		: "K&ocirc;d jezika",
+DlgGenLangCode		: "Kôd jezika",
 DlgGenAccessKey		: "Pristupna tipka",
 DlgGenName			: "Naziv",
 DlgGenTabIndex		: "Tab Indeks",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Sidro na ovoj stranici",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Protokol",
-DlgLnkProtoOther	: "&lt;drugo&gt;",
+DlgLnkProtoOther	: "<drugo>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Odaberi sidro",
 DlgLnkAnchorByName	: "Po nazivu sidra",
 DlgLnkAnchorById	: "Po Id elementa",
-DlgLnkNoAnchors		: "&lt;Nema dostupnih sidra&gt;",
+DlgLnkNoAnchors		: "<Nema dostupnih sidra>",
 DlgLnkEMail			: "E-Mail adresa",
 DlgLnkEMailSubject	: "Naslov",
 DlgLnkEMailBody		: "Sadržaj poruke",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Pošalji na server",
 
 DlgLnkTarget		: "Meta",
-DlgLnkTargetFrame	: "&lt;okvir&gt;",
-DlgLnkTargetPopup	: "&lt;popup prozor&gt;",
+DlgLnkTargetFrame	: "<okvir>",
+DlgLnkTargetPopup	: "<popup prozor>",
 DlgLnkTargetBlank	: "Novi prozor (_blank)",
 DlgLnkTargetParent	: "Roditeljski prozor (_parent)",
 DlgLnkTargetSelf	: "Isti prozor (_self)",
@@ -267,7 +277,7 @@
 DlgTableColumns		: "Kolona",
 DlgTableBorder		: "Veličina okvira",
 DlgTableAlign		: "Poravnanje",
-DlgTableAlignNotSet	: "&lt;nije postavljeno&gt;",
+DlgTableAlignNotSet	: "<nije postavljeno>",
 DlgTableAlignLeft	: "Lijevo",
 DlgTableAlignCenter	: "Središnje",
 DlgTableAlignRight	: "Desno",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "Prostornost ćelija",
 DlgTableCellPad		: "Razmak ćelija",
 DlgTableCaption		: "Naslov",
+DlgTableSummary		: "Sažetak",
 
 // Table Cell Dialog
 DlgCellTitle		: "Svojstva ćelije",
@@ -286,16 +297,16 @@
 DlgCellWidthPc		: "postotaka",
 DlgCellHeight		: "Visina",
 DlgCellWordWrap		: "Word Wrap",
-DlgCellWordWrapNotSet	: "&lt;nije postavljeno&gt;",
+DlgCellWordWrapNotSet	: "<nije postavljeno>",
 DlgCellWordWrapYes	: "Da",
 DlgCellWordWrapNo	: "Ne",
 DlgCellHorAlign		: "Vodoravno poravnanje",
-DlgCellHorAlignNotSet	: "&lt;nije postavljeno&gt;",
+DlgCellHorAlignNotSet	: "<nije postavljeno>",
 DlgCellHorAlignLeft	: "Lijevo",
 DlgCellHorAlignCenter	: "Središnje",
 DlgCellHorAlignRight: "Desno",
 DlgCellVerAlign		: "Okomito poravnanje",
-DlgCellVerAlignNotSet	: "&lt;nije postavljeno&gt;",
+DlgCellVerAlignNotSet	: "<nije postavljeno>",
 DlgCellVerAlignTop	: "Gornje",
 DlgCellVerAlignMiddle	: "Srednišnje",
 DlgCellVerAlignBottom	: "Donje",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Ukloni definicije stilova",
 DlgPasteCleanBox		: "Očisti okvir",
 
-
 // Color Picker
 ColorAutomatic	: "Automatski",
 ColorMoreColors	: "Više boja...",
@@ -416,7 +426,7 @@
 NumberedListProp	: "Svojstva brojčane liste",
 DlgLstType			: "Vrsta",
 DlgLstTypeCircle	: "Krug",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Disk",
 DlgLstTypeSquare	: "Kvadrat",
 DlgLstTypeNumbers	: "Brojevi (1, 2, 3)",
 DlgLstTypeLCase		: "Mala slova (a, b, c)",
@@ -434,7 +444,7 @@
 DlgDocLangDir		: "Smjer jezika",
 DlgDocLangDirLTR	: "S lijeva na desno",
 DlgDocLangDirRTL	: "S desna na lijevo",
-DlgDocLangCode		: "K&ocirc;d jezika",
+DlgDocLangCode		: "Kôd jezika",
 DlgDocCharSet		: "Enkodiranje znakova",
 DlgDocCharSetOther	: "Ostalo enkodiranje znakova",
 
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "O FCKEditoru",
 DlgAboutBrowserInfoTab	: "Podaci o pretraživaču",
+DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "inačica",
 DlgAboutLicense		: "Licencirano pod uvjetima GNU Lesser General Public License",
 DlgAboutInfo		: "Za više informacija posjetite"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/hu.js 1.4.1.src/fckeditor/editor/lang/hu.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/hu.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/hu.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -15,6 +15,7 @@
  * 
  * File Authors:
  * 		Varga Zsolt (meridian@netteszt.hu)
+ * 		Géza Szűcs (flextor@flextor.hu)
  */
 
 var FCKLang =
@@ -22,21 +23,21 @@
 // Language direction : "ltr" (left to right) or "rtl" (right to left).
 Dir					: "ltr",
 
-ToolbarCollapse		: "Egyszerû eszköztár",
-ToolbarExpand		: "Bõvített eszköztár",
+ToolbarCollapse		: "Eszköztár elrejtése",
+ToolbarExpand		: "Eszköztár megjelenítése",
 
 // Toolbar Items and Context Menu
 Save				: "Mentés",
 NewPage				: "Új oldal",
-Preview				: "Elõnézet",
+Preview				: "Előnézet",
 Cut					: "Kivágás",
 Copy				: "Másolás",
 Paste				: "Beillesztés",
-PasteText			: "Beillesztés formázatlan szövegként",
-PasteWord			: "Beillesztés Wordbõl",
+PasteText			: "Beillesztés formázás nélkül",
+PasteWord			: "Beillesztés Word-ből",
 Print				: "Nyomtatás",
-SelectAll			: "Minden kijelölése",
-RemoveFormat		: "Formázás törlése",
+SelectAll			: "Mindent kijelöl",
+RemoveFormat		: "Formázás eltávolítása",
 InsertLinkLbl		: "Hivatkozás",
 InsertLink			: "Hivatkozás beillesztése/módosítása",
 RemoveLink			: "Hivatkozás törlése",
@@ -55,11 +56,11 @@
 InsertSmiley		: "Hangulatjelek beillesztése",
 About				: "FCKeditor névjegy",
 Bold				: "Félkövér",
-Italic				: "Dõlt",
+Italic				: "Dőlt",
 Underline			: "Aláhúzott",
 StrikeThrough		: "Áthúzott",
 Subscript			: "Alsó index",
-Superscript			: "Felsõ index",
+Superscript			: "Felső index",
 LeftJustify			: "Balra",
 CenterJustify		: "Középre",
 RightJustify		: "Jobbra",
@@ -76,15 +77,17 @@
 ShowDetails			: "Részletek mutatása",
 Style				: "Stílus",
 FontFormat			: "Formátum",
-Font				: "Betûtipus",
+Font				: "Betűtípus",
 FontSize			: "Méret",
-TextColor			: "Betûszín",
+TextColor			: "Betűszín",
 BGColor				: "Háttérszín",
 Source				: "Forráskód",
 Find				: "Keresés",
 Replace				: "Csere",
-SpellCheck			: "Helyesírásellenőrzés",
-UniversalKeyboard	: "Általános billentyűzet",
+SpellCheck			: "Helyesírás-ellenőrzés",
+UniversalKeyboard	: "Univerzális billentyűzet",
+PageBreakLbl		: "Oldaltörés",
+PageBreak			: "Oldaltörés beillesztése",
 
 Form			: "Űrlap",
 Checkbox		: "Jelölőnégyzet",
@@ -93,80 +96,88 @@
 Textarea		: "Szövegterület",
 HiddenField		: "Rejtettmező",
 Button			: "Gomb",
-SelectionField	: "Választómező",
+SelectionField	: "Legördülő lista",
 ImageButton		: "Képgomb",
 
+FitWindow		: "Maximalizálás",
+
 // Context Menu
 EditLink			: "Hivatkozás módosítása",
+CellCM				: "Cella",
+RowCM				: "Sor",
+ColumnCM			: "Oszlop",
 InsertRow			: "Sor beszúrása",
-DeleteRows			: "Sor(ok) törlése",
+DeleteRows			: "Sorok törlése",
 InsertColumn		: "Oszlop beszúrása",
-DeleteColumns		: "Oszlop(ok) törlése",
+DeleteColumns		: "Oszlopok törlése",
 InsertCell			: "Cella beszúrása",
 DeleteCells			: "Cellák törlése",
 MergeCells			: "Cellák egyesítése",
-SplitCell			: "Cellák szétválasztása",
-CellProperties		: "Cellák tulajdonsága",
-TableProperties		: "Táblázat tulajdonsága",
-ImageProperties		: "Kép tulajdonsága",
-FlashProperties		: "Flash tulajdonsága",
-
-AnchorProp			: "Horgony(ok) tulajdonsága(i)",
-ButtonProp			: "Gomb(ok) tulajdonsága(i) ",
-CheckboxProp		: "Jelölőnégyzet(ek) tulajdonsága(i)",
-HiddenFieldProp		: "Rejtettmező(k) tulajdonsága(i)",
-RadioButtonProp		: "Választógomb(ok) tulajdonsága(i)",
-ImageButtonProp		: "Képgomb(ok) tulajdonsága(i)",
-TextFieldProp		: "Szövegmező(k) tulajdonsága(i)",
-SelectionFieldProp	: "Választómező(k) tulajdonsága(i)",
-TextareaProp		: "Szövegterület(ek) tulajdonsága(i)",
-FormProp			: "Űrlap(ok) tulajdonsága(i)",
+SplitCell			: "Cella szétválasztása",
+TableDelete			: "Táblázat törlése",
+CellProperties		: "Cella tulajdonságai",
+TableProperties		: "Táblázat tulajdonságai",
+ImageProperties		: "Kép tulajdonságai",
+FlashProperties		: "Flash tulajdonságai",
+
+AnchorProp			: "Horgony tulajdonságai",
+ButtonProp			: "Gomb tulajdonságai",
+CheckboxProp		: "Jelölőnégyzet tulajdonságai",
+HiddenFieldProp		: "Rejtett mező tulajdonságai",
+RadioButtonProp		: "Választógomb tulajdonságai",
+ImageButtonProp		: "Képgomb tulajdonságai",
+TextFieldProp		: "Szövegmező tulajdonságai",
+SelectionFieldProp	: "Legördülő lista tulajdonságai",
+TextareaProp		: "Szövegterület tulajdonságai",
+FormProp			: "Űrlap tulajdonságai",
 
 FontFormats			: "Normál;Formázott;Címsor;Fejléc 1;Fejléc 2;Fejléc 3;Fejléc 4;Fejléc 5;Fejléc 6;Bekezdés (DIV)",
 
 // Alerts and Messages
 ProcessingXHTML		: "XHTML feldolgozása. Kérem várjon...",
 Done				: "Kész",
-PasteWordConfirm	: "A szöveg amit be szeretnél illeszteni úgy néz ki Word-bõl van másolva. Do you want to clean it before pasting?",
-NotCompatiblePaste	: "Ez a parancs csak Internet Explorer 5.5 verziótól használható (Firefox rulez). Do you want to paste without cleaning?",
+PasteWordConfirm	: "A beilleszteni kívánt szöveg Word-ből van másolva. El kívánja távolítani a formázást a beillesztés előtt?",
+NotCompatiblePaste	: "Ez a parancs csak Internet Explorer 5.5 verziótól használható. Megpróbálja beilleszteni a szöveget az eredeti formázással?",
 UnknownToolbarItem	: "Ismeretlen eszköztár elem \"%1\"",
 UnknownCommand		: "Ismeretlen parancs \"%1\"",
-NotImplemented		: "A parancs nincs beágyazva",
-UnknownToolbarSet	: "Eszközkészlet beállítás \"%1\" nem létezik",
-NoActiveX			: "A böngésződ biztonsági beállításai limitálják a szerkesztő lehetőségeit. Engedélyezned kell ezt az opciót: \"Run ActiveX controls and plug-ins\". Kitapasztalhatod a hibákat és feljegyezheted a hiányzó képességeket.",
+NotImplemented		: "A parancs nem hajtható végre",
+UnknownToolbarSet	: "Az eszközkészlet \"%1\" nem létezik",
+NoActiveX			: "A böngésző biztonsági beállításai korlátozzák a szerkesztő lehetőségeit. Engedélyezni kell ezt az opciót: \"Run ActiveX controls and plug-ins\". Ettől függetlenül előfordulhatnak hibaüzenetek ill. bizonyos funkciók hiányozhatnak.",
+BrowseServerBlocked : "Nem lehet megnyitni a fájlböngészőt. Bizonyosodjon meg róla, hogy a felbukkanó ablakok engedélyezve vannak.",
+DialogBlocked		: "Nem lehet megnyitni a párbeszédablakot. Bizonyosodjon meg róla, hogy a felbukkanó ablakok engedélyezve vannak.",
 
 // Dialogs
-DlgBtnOK			: "OK",
+DlgBtnOK			: "Rendben",
 DlgBtnCancel		: "Mégsem",
 DlgBtnClose			: "Bezárás",
-DlgBtnBrowseServer	: "Szerver tallózása",
-DlgAdvancedTag		: "Haladó",
+DlgBtnBrowseServer	: "Böngészés a szerveren",
+DlgAdvancedTag		: "További opciók",
 DlgOpOther			: "Egyéb",
-DlgInfoTab			: "Információ",
-DlgAlertUrl			: "Illeszd be a hivatkozást",
+DlgInfoTab			: "Alaptulajdonságok",
+DlgAlertUrl			: "Illessze be a webcímet",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;nincs beállítva&gt;",
+DlgGenNotSet		: "<nincs beállítva>",
 DlgGenId			: "Azonosító",
-DlgGenLangDir		: "Nyelv útmutató",
+DlgGenLangDir		: "Írás iránya",
 DlgGenLangDirLtr	: "Balról jobbra",
 DlgGenLangDirRtl	: "Jobbról balra",
-DlgGenLangCode		: "Nyelv kód",
-DlgGenAccessKey		: "Elérési kulcs",
+DlgGenLangCode		: "Nyelv kódja",
+DlgGenAccessKey		: "Billentyűkombináció",
 DlgGenName			: "Név",
 DlgGenTabIndex		: "Tabulátor index",
-DlgGenLongDescr		: "Hosszú URL",
+DlgGenLongDescr		: "Részletes leírás webcíme",
 DlgGenClass			: "Stíluskészlet",
-DlgGenTitle			: "Advisory Title",
-DlgGenContType		: "Advisory Content Type",
-DlgGenLinkCharset	: "Hivatkozott kódlap készlet",
+DlgGenTitle			: "Súgócimke",
+DlgGenContType		: "Súgó tartalomtípusa",
+DlgGenLinkCharset	: "Hivatkozott tartalom kódlapja",
 DlgGenStyle			: "Stílus",
 
 // Image Dialog
-DlgImgTitle			: "Kép tulajdonsága",
-DlgImgInfoTab		: "Kép információ",
-DlgImgBtnUpload		: "Küldés a szervernek",
-DlgImgURL			: "URL",
+DlgImgTitle			: "Kép tulajdonságai",
+DlgImgInfoTab		: "Alaptulajdonságok",
+DlgImgBtnUpload		: "Küldés a szerverre",
+DlgImgURL			: "Hivatkozás",
 DlgImgUpload		: "Feltöltés",
 DlgImgAlt			: "Buborék szöveg",
 DlgImgWidth			: "Szélesség",
@@ -180,18 +191,18 @@
 DlgImgAlignLeft		: "Bal",
 DlgImgAlignAbsBottom: "Legaljára",
 DlgImgAlignAbsMiddle: "Közepére",
-DlgImgAlignBaseline	: "Baseline",
+DlgImgAlignBaseline	: "Alapvonalhoz",
 DlgImgAlignBottom	: "Aljára",
 DlgImgAlignMiddle	: "Középre",
 DlgImgAlignRight	: "Jobbra",
-DlgImgAlignTextTop	: "Szöveg tetjére",
+DlgImgAlignTextTop	: "Szöveg tetejére",
 DlgImgAlignTop		: "Tetejére",
-DlgImgPreview		: "Elõnézet",
-DlgImgAlertUrl		: "Töltse ki a kép URL-ét",
+DlgImgPreview		: "Előnézet",
+DlgImgAlertUrl		: "Töltse ki a kép webcímét",
 DlgImgLinkTab		: "Hivatkozás",
 
 // Flash Dialog
-DlgFlashTitle		: "Flash tulajdonsága",
+DlgFlashTitle		: "Flash tulajdonságai",
 DlgFlashChkPlay		: "Automata lejátszás",
 DlgFlashChkLoop		: "Folyamatosan",
 DlgFlashChkMenu		: "Flash menü engedélyezése",
@@ -201,59 +212,59 @@
 DlgFlashScaleFit	: "Teljes kitöltés",
 
 // Link Dialog
-DlgLnkWindowTitle	: "Hivatkozás",
-DlgLnkInfoTab		: "Hivatkozás információ",
-DlgLnkTargetTab		: "Cél",
+DlgLnkWindowTitle	: "Hivatkozás tulajdonságai",
+DlgLnkInfoTab		: "Alaptulajdonságok",
+DlgLnkTargetTab		: "Megjelenítés",
 
-DlgLnkType			: "Hivatkozás tipusa",
-DlgLnkTypeURL		: "URL",
+DlgLnkType			: "Hivatkozás típusa",
+DlgLnkTypeURL		: "Webcím",
 DlgLnkTypeAnchor	: "Horgony az oldalon",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Protokoll",
-DlgLnkProtoOther	: "&lt;más&gt;",
-DlgLnkURL			: "URL",
+DlgLnkProtoOther	: "<más>",
+DlgLnkURL			: "Webcím",
 DlgLnkAnchorSel		: "Horgony választása",
 DlgLnkAnchorByName	: "Horgony név szerint",
-DlgLnkAnchorById	: "Azonosító szerint elõsorban ",
-DlgLnkNoAnchors		: "&lt;Nincs horgony a dokumentumban&gt;",
+DlgLnkAnchorById	: "Azonosító szerint",
+DlgLnkNoAnchors		: "<Nincs horgony a dokumentumban>",
 DlgLnkEMail			: "E-Mail cím",
 DlgLnkEMailSubject	: "Üzenet tárgya",
 DlgLnkEMailBody		: "Üzenet",
 DlgLnkUpload		: "Feltöltés",
-DlgLnkBtnUpload		: "Küldés a szerverhez",
+DlgLnkBtnUpload		: "Küldés a szerverre",
 
-DlgLnkTarget		: "Cél",
-DlgLnkTargetFrame	: "&lt;keret&gt;",
-DlgLnkTargetPopup	: "&lt;felugró ablak&gt;",
-DlgLnkTargetBlank	: "Új ablak (_blank)",
-DlgLnkTargetParent	: "Szülõ ablak (_parent)",
-DlgLnkTargetSelf	: "Azonos ablak (_self)",
-DlgLnkTargetTop		: "Legfelsõ ablak (_top)",
-DlgLnkTargetFrameName	: "Cél frame neve",
+DlgLnkTarget		: "Tartalom megjelenítése",
+DlgLnkTargetFrame	: "<keretben>",
+DlgLnkTargetPopup	: "<felugró ablakban>",
+DlgLnkTargetBlank	: "Új ablakban (_blank)",
+DlgLnkTargetParent	: "Szülő ablakban (_parent)",
+DlgLnkTargetSelf	: "Azonos ablakban (_self)",
+DlgLnkTargetTop		: "Legfelső ablakban (_top)",
+DlgLnkTargetFrameName	: "Keret neve",
 DlgLnkPopWinName	: "Felugró ablak neve",
-DlgLnkPopWinFeat	: "Felugró ablak jellemzõi",
-DlgLnkPopResize		: "Méretezhetõ",
-DlgLnkPopLocation	: "Location Bar",
+DlgLnkPopWinFeat	: "Felugró ablak jellemzői",
+DlgLnkPopResize		: "Méretezhető",
+DlgLnkPopLocation	: "Címsor",
 DlgLnkPopMenu		: "Menü sor",
-DlgLnkPopScroll		: "Gördítõsáv",
+DlgLnkPopScroll		: "Gördítősáv",
 DlgLnkPopStatus		: "Állapotsor",
 DlgLnkPopToolbar	: "Eszköztár",
-DlgLnkPopFullScrn	: "Teljes képernyõ (IE)",
-DlgLnkPopDependent	: "Netscape sajátosság",
+DlgLnkPopFullScrn	: "Teljes képernyő (csak IE)",
+DlgLnkPopDependent	: "Szülőhöz kapcsolt (csak Netscape)",
 DlgLnkPopWidth		: "Szélesség",
 DlgLnkPopHeight		: "Magasság",
 DlgLnkPopLeft		: "Bal pozíció",
-DlgLnkPopTop		: "Felsõ pozíció",
+DlgLnkPopTop		: "Felső pozíció",
 
-DlnLnkMsgNoUrl		: "Adja meg a hivatkozás URL-ét",
-DlnLnkMsgNoEMail	: "Adja meg az e-mail címet",
+DlnLnkMsgNoUrl		: "Adja meg a hivatkozás webcímét",
+DlnLnkMsgNoEMail	: "Adja meg az E-Mail címet",
 DlnLnkMsgNoAnchor	: "Válasszon egy horgonyt",
 
 // Color Dialog
-DlgColorTitle		: "Szinválasztás",
+DlgColorTitle		: "Színválasztás",
 DlgColorBtnClear	: "Törlés",
-DlgColorHighlight	: "Világos rész",
-DlgColorSelected	: "Választott",
+DlgColorHighlight	: "Előnézet",
+DlgColorSelected	: "Kiválasztott",
 
 // Smiley Dialog
 DlgSmileyTitle		: "Hangulatjel beszúrása",
@@ -268,34 +279,35 @@
 DlgTableBorder		: "Szegélyméret",
 DlgTableAlign		: "Igazítás",
 DlgTableAlignNotSet	: "<Nincs beállítva>",
-DlgTableAlignLeft	: "Bal",
-DlgTableAlignCenter	: "Közép",
-DlgTableAlignRight	: "Jobb",
+DlgTableAlignLeft	: "Balra",
+DlgTableAlignCenter	: "Középre",
+DlgTableAlignRight	: "Jobbra",
 DlgTableWidth		: "Szélesség",
-DlgTableWidthPx		: "képpontok",
+DlgTableWidthPx		: "képpont",
 DlgTableWidthPc		: "százalék",
 DlgTableHeight		: "Magasság",
-DlgTableCellSpace	: "Cell spacing",
-DlgTableCellPad		: "Cell padding",
+DlgTableCellSpace	: "Cella térköz",
+DlgTableCellPad		: "Cella belső margó",
 DlgTableCaption		: "Felirat",
+DlgTableSummary		: "Leírás",
 
 // Table Cell Dialog
 DlgCellTitle		: "Cella tulajdonságai",
 DlgCellWidth		: "Szélesség",
-DlgCellWidthPx		: "képpontok",
+DlgCellWidthPx		: "képpont",
 DlgCellWidthPc		: "százalék",
-DlgCellHeight		: "Height",
+DlgCellHeight		: "Magasság",
 DlgCellWordWrap		: "Sortörés",
-DlgCellWordWrapNotSet	: "&lt;Nincs beállítva&gt;",
+DlgCellWordWrapNotSet	: "<Nincs beállítva>",
 DlgCellWordWrapYes	: "Igen",
 DlgCellWordWrapNo	: "Nem",
-DlgCellHorAlign		: "Vízszintes igazítás",
-DlgCellHorAlignNotSet	: "&lt;Nincs beállítva&gt;",
-DlgCellHorAlignLeft	: "Bal",
-DlgCellHorAlignCenter	: "Közép",
-DlgCellHorAlignRight: "Jobb",
-DlgCellVerAlign		: "Függõleges igazítás",
-DlgCellVerAlignNotSet	: "&lt;Nincs beállítva&gt;",
+DlgCellHorAlign		: "Vízsz. igazítás",
+DlgCellHorAlignNotSet	: "<Nincs beállítva>",
+DlgCellHorAlignLeft	: "Balra",
+DlgCellHorAlignCenter	: "Középre",
+DlgCellHorAlignRight: "Jobbra",
+DlgCellVerAlign		: "Függ. igazítás",
+DlgCellVerAlignNotSet	: "<Nincs beállítva>",
 DlgCellVerAlignTop	: "Tetejére",
 DlgCellVerAlignMiddle	: "Középre",
 DlgCellVerAlignBottom	: "Aljára",
@@ -313,55 +325,54 @@
 
 // Replace Dialog
 DlgReplaceTitle			: "Csere",
-DlgReplaceFindLbl		: "Keresendõ:",
-DlgReplaceReplaceLbl	: "Cserélendõ:",
-DlgReplaceCaseChk		: "Találatok",
+DlgReplaceFindLbl		: "Keresett szöveg:",
+DlgReplaceReplaceLbl	: "Csere erre:",
+DlgReplaceCaseChk		: "kis- és nagybetű megkülönböztetése",
 DlgReplaceReplaceBtn	: "Csere",
-DlgReplaceReplAllBtn	: "Összes cseréje",
-DlgReplaceWordChk		: "Egész dokumentumban",
+DlgReplaceReplAllBtn	: "Az összes cseréje",
+DlgReplaceWordChk		: "csak ha ez a teljes szó",
 
 // Paste Operations / Dialog
-PasteErrorPaste	: "A böngészõ biztonsági beállításai nem engedélyezik a szerkesztõnek, hogy végrehatjsa a beillesztés mûveletet.Használja az alábbi billentyûzetkombinációt (Ctrl+V).",
-PasteErrorCut	: "A böngészõ biztonsági beállításai nem engedélyezik a szerkesztõnek, hogy végrehatjsa a kivágás mûveletet.Használja az alábbi billentyûzetkombinációt (Ctrl+X).",
-PasteErrorCopy	: "A böngészõ biztonsági beállításai nem engedélyezik a szerkesztõnek, hogy végrehatjsa a másolás mûveletet.Használja az alábbi billentyûzetkombinációt (Ctrl+X).",
+PasteErrorPaste	: "A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a beillesztés műveletet. Használja az alábbi billentyűkombinációt (Ctrl+V).",
+PasteErrorCut	: "A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a kivágás műveletet. Használja az alábbi billentyűkombinációt (Ctrl+X).",
+PasteErrorCopy	: "A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a másolás műveletet. Használja az alábbi billentyűkombinációt (Ctrl+X).",
 
 PasteAsText		: "Beillesztés formázatlan szövegként",
-PasteFromWord	: "Beillesztés Wordbõl",
+PasteFromWord	: "Beillesztés Word-ből",
 
-DlgPasteMsg2	: "Másold be az alábbi mezőbe a következő billentyűk használatával (<STRONG>Ctrl+V</STRONG>) és nyomj <STRONG>OK</STRONG>.",
+DlgPasteMsg2	: "Másolja be az alábbi mezőbe a <STRONG>Ctrl+V</STRONG> billentyűk lenyomásával, majd nyomjon <STRONG>Rendben</STRONG>-t.",
 DlgPasteIgnoreFont		: "Betű formázások megszüntetése",
-DlgPasteRemoveStyles	: "Stíluslapok eltávolítása",
-DlgPasteCleanBox		: "Mező tartalmának törlése",
-
+DlgPasteRemoveStyles	: "Stílusok eltávolítása",
+DlgPasteCleanBox		: "Törlés",
 
 // Color Picker
 ColorAutomatic	: "Automatikus",
-ColorMoreColors	: "Több szín...",
+ColorMoreColors	: "További színek...",
 
 // Document Properties
-DocProps		: "Dokumentum tulajdonsága",
+DocProps		: "Dokumentum tulajdonságai",
 
 // Anchor Dialog
-DlgAnchorTitle		: "Horgony tulajdonsága",
+DlgAnchorTitle		: "Horgony tulajdonságai",
 DlgAnchorName		: "Horgony neve",
 DlgAnchorErrorName	: "Kérem adja meg a horgony nevét",
 
 // Speller Pages Dialog
-DlgSpellNotInDic		: "Nincs a könyvtárban",
-DlgSpellChangeTo		: "Átváltás",
+DlgSpellNotInDic		: "Nincs a szótárban",
+DlgSpellChangeTo		: "Módosítás",
 DlgSpellBtnIgnore		: "Kihagyja",
-DlgSpellBtnIgnoreAll	: "Összeset kihagyja",
+DlgSpellBtnIgnoreAll	: "Mindet kihagyja",
 DlgSpellBtnReplace		: "Csere",
 DlgSpellBtnReplaceAll	: "Összes cseréje",
 DlgSpellBtnUndo			: "Visszavonás",
-DlgSpellNoSuggestions	: "Nincs feltevés",
-DlgSpellProgress		: "Helyesírásellenőrzés folyamatban...",
-DlgSpellNoMispell		: "Helyesírásellenőrzés kész: Nem találtam hibát",
-DlgSpellNoChanges		: "Helyesírásellenőrzés kész: Nincs változtatott szó",
-DlgSpellOneChange		: "Helyesírásellenőrzés kész: Egy szó cserélve",
-DlgSpellManyChanges		: "Helyesírásellenőrzés kész: %1 szó cserélve",
+DlgSpellNoSuggestions	: "Nincs javaslat",
+DlgSpellProgress		: "Helyesírás-ellenőrzés folyamatban...",
+DlgSpellNoMispell		: "Helyesírás-ellenőrzés kész: Nem találtam hibát",
+DlgSpellNoChanges		: "Helyesírás-ellenőrzés kész: Nincs változtatott szó",
+DlgSpellOneChange		: "Helyesírás-ellenőrzés kész: Egy szó cserélve",
+DlgSpellManyChanges		: "Helyesírás-ellenőrzés kész: %1 szó cserélve",
 
-IeSpellDownload			: "A helyesírásellenőrző nincs telepítve. Szeretné letölteni most?",
+IeSpellDownload			: "A helyesírás-ellenőrző nincs telepítve. Szeretné letölteni most?",
 
 // Button Dialog
 DlgButtonText	: "Szöveg (Érték)",
@@ -370,39 +381,39 @@
 // Checkbox and Radio Button Dialogs
 DlgCheckboxName		: "Név",
 DlgCheckboxValue	: "Érték",
-DlgCheckboxSelected	: "Választott",
+DlgCheckboxSelected	: "Kiválasztott",
 
 // Form Dialog
 DlgFormName		: "Név",
-DlgFormAction	: "Esemény",
-DlgFormMethod	: "Metódus",
+DlgFormAction	: "Adatfeldolgozást végző hivatkozás",
+DlgFormMethod	: "Adatküldés módja",
 
 // Select Field Dialog
 DlgSelectName		: "Név",
 DlgSelectValue		: "Érték",
 DlgSelectSize		: "Méret",
-DlgSelectLines		: "sorok",
-DlgSelectChkMulti	: "Engedi a többszörös kiválasztást",
+DlgSelectLines		: "sor",
+DlgSelectChkMulti	: "több sor is kiválasztható",
 DlgSelectOpAvail	: "Elérhető opciók",
 DlgSelectOpText		: "Szöveg",
 DlgSelectOpValue	: "Érték",
-DlgSelectBtnAdd		: "Bővít",
+DlgSelectBtnAdd		: "Hozzáad",
 DlgSelectBtnModify	: "Módosít",
 DlgSelectBtnUp		: "Fel",
 DlgSelectBtnDown	: "Le",
-DlgSelectBtnSetValue : "Beállítja a kiválasztott értéket",
+DlgSelectBtnSetValue : "Legyen az alapértelmezett érték",
 DlgSelectBtnDelete	: "Töröl",
 
 // Textarea Dialog
 DlgTextareaName	: "Név",
-DlgTextareaCols	: "Oszlopok",
-DlgTextareaRows	: "Sorok",
+DlgTextareaCols	: "Karakterek száma egy sorban",
+DlgTextareaRows	: "Sorok száma",
 
 // Text Field Dialog
 DlgTextName			: "Név",
 DlgTextValue		: "Érték",
-DlgTextCharWidth	: "Karakter szélesség",
-DlgTextMaxChars		: "Maximum karakterek",
+DlgTextCharWidth	: "Megjelenített karakterek száma",
+DlgTextMaxChars		: "Maximális karakterszám",
 DlgTextType			: "Típus",
 DlgTextTypeText		: "Szöveg",
 DlgTextTypePass		: "Jelszó",
@@ -414,13 +425,13 @@
 // Bulleted List Dialog
 BulletedListProp	: "Felsorolás tulajdonságai",
 NumberedListProp	: "Számozás tulajdonságai",
-DlgLstType			: "Típus",
-DlgLstTypeCircle	: "Ciklus",
+DlgLstType			: "Formátum",
+DlgLstTypeCircle	: "Kör",
 DlgLstTypeDisc		: "Lemez",
 DlgLstTypeSquare	: "Négyzet",
 DlgLstTypeNumbers	: "Számok (1, 2, 3)",
-DlgLstTypeLCase		: "Kisbetűs (a, b, c)",
-DlgLstTypeUCase		: "Nagybetűs (a, b, c)",
+DlgLstTypeLCase		: "Kisbetűk (a, b, c)",
+DlgLstTypeUCase		: "Nagybetűk (A, B, C)",
 DlgLstTypeSRoman	: "Kis római számok (i, ii, iii)",
 DlgLstTypeLRoman	: "Nagy római számok (I, II, III)",
 
@@ -431,16 +442,16 @@
 DlgDocMetaTab		: "Meta adatok",
 
 DlgDocPageTitle		: "Oldalcím",
-DlgDocLangDir		: "Nyelv utasítás",
-DlgDocLangDirLTR	: "Balról jobbra (LTR)",
-DlgDocLangDirRTL	: "Jobbról balra (RTL)",
+DlgDocLangDir		: "Írás iránya",
+DlgDocLangDirLTR	: "Balról jobbra",
+DlgDocLangDirRTL	: "Jobbról balra",
 DlgDocLangCode		: "Nyelv kód",
 DlgDocCharSet		: "Karakterkódolás",
 DlgDocCharSetOther	: "Más karakterkódolás",
 
-DlgDocDocType		: "Dokumentum címsor típus",
-DlgDocDocTypeOther	: "Más dokumentum címsor típus",
-DlgDocIncXHTML		: "XHTML elemeket tartalmaz",
+DlgDocDocType		: "Dokumentum típus fejléc",
+DlgDocDocTypeOther	: "Más dokumentum típus fejléc",
+DlgDocIncXHTML		: "XHTML deklarációk beillesztése",
 DlgDocBgColor		: "Háttérszín",
 DlgDocBgImage		: "Háttérkép cím",
 DlgDocBgNoScroll	: "Nem gördíthető háttér",
@@ -452,7 +463,7 @@
 DlgDocMaTop			: "Felső",
 DlgDocMaLeft		: "Bal",
 DlgDocMaRight		: "Jobb",
-DlgDocMaBottom		: "Felül",
+DlgDocMaBottom		: "Alsó",
 DlgDocMeIndex		: "Dokumentum keresőszavak (vesszővel elválasztva)",
 DlgDocMeDescr		: "Dokumentum leírás",
 DlgDocMeAuthor		: "Szerző",
@@ -462,14 +473,15 @@
 // Templates Dialog
 Templates			: "Sablonok",
 DlgTemplatesTitle	: "Elérhető sablonok",
-DlgTemplatesSelMsg	: "Válaszd ki melyik sablon nyíljon meg a szerkesztőben<br>(a jelenlegi tartalom elveszik):",
+DlgTemplatesSelMsg	: "Válassza ki melyik sablon nyíljon meg a szerkesztőben<br>(a jelenlegi tartalom elveszik):",
 DlgTemplatesLoading	: "Sablon lista betöltése. Kis türelmet...",
 DlgTemplatesNoTpl	: "(Nincs sablon megadva)",
 
 // About Dialog
-DlgAboutAboutTab	: "About",
+DlgAboutAboutTab	: "Névjegy",
 DlgAboutBrowserInfoTab	: "Böngésző információ",
+DlgAboutLicenseTab	: "Licensz",
 DlgAboutVersion		: "verzió",
 DlgAboutLicense		: "GNU Lesser General Public License szabadalom alá tartozik",
-DlgAboutInfo		: "További információkért menjen"
+DlgAboutInfo		: "További információkért látogasson el ide:"
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/it.js 1.4.1.src/fckeditor/editor/lang/it.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/it.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/it.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -22,7 +22,7 @@
 // Language direction : "ltr" (left to right) or "rtl" (right to left).
 Dir					: "ltr",
 
-ToolbarCollapse		: "Nasconti la barra degli strumenti",
+ToolbarCollapse		: "Nascondi la barra degli strumenti",
 ToolbarExpand		: "Mostra la barra degli strumenti",
 
 // Toolbar Items and Context Menu
@@ -84,7 +84,9 @@
 Find				: "Trova",
 Replace				: "Sostituisci",
 SpellCheck			: "Correttore ortografico",
-UniversalKeyboard	: "Tastiera univerale",
+UniversalKeyboard	: "Tastiera universale",
+PageBreakLbl		: "Interruzione di pagina",
+PageBreak			: "Inserisci interruzione di pagina",
 
 Form			: "Modulo",
 Checkbox		: "Checkbox",
@@ -96,8 +98,13 @@
 SelectionField	: "Menu di selezione",
 ImageButton		: "Bottone immagine",
 
+FitWindow		: "Massimizza l'area dell'editor",
+
 // Context Menu
 EditLink			: "Modifica collegamento",
+CellCM				: "Cella",
+RowCM				: "Riga",
+ColumnCM			: "Colonna",
 InsertRow			: "Inserisci riga",
 DeleteRows			: "Elimina righe",
 InsertColumn		: "Inserisci colonna",
@@ -106,6 +113,7 @@
 DeleteCells			: "Elimina celle",
 MergeCells			: "Unisce celle",
 SplitCell			: "Dividi celle",
+TableDelete			: "Cancella Tabella",
 CellProperties		: "Proprietà cella",
 TableProperties		: "Proprietà tabella",
 ImageProperties		: "Proprietà immagine",
@@ -131,9 +139,11 @@
 NotCompatiblePaste	: "Questa funzione è disponibile solo per Internet Explorer 5.5 o superiore. Desideri incollare il testo senza pulirlo?",
 UnknownToolbarItem	: "Elemento della barra strumenti sconosciuto \"%1\"",
 UnknownCommand		: "Comando sconosciuto \"%1\"",
-NotImplemented		: "Commando non implementato",
+NotImplemented		: "Comando non implementato",
 UnknownToolbarSet	: "La barra di strumenti \"%1\" non esiste",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Le impostazioni di sicurezza del tuo browser potrebbero limitare alcune funzionalità dell'editor. Devi abilitare l'opzione \"Esegui controlli e plug-in ActiveX\". Potresti avere errori e notare funzionalità mancanti.",
+BrowseServerBlocked : "Non è possibile aprire la finestra di espolorazione risorse. Verifica che tutti i blocca popup siano bloccati.",
+DialogBlocked		: "Non è possibile aprire la finestra di dialogo. Verifica che tutti i blocca popup siano bloccati.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -141,18 +151,18 @@
 DlgBtnClose			: "Chiudi",
 DlgBtnBrowseServer	: "Cerca sul server",
 DlgAdvancedTag		: "Avanzate",
-DlgOpOther			: "&lt;Altro&gt;",
+DlgOpOther			: "<Altro>",
 DlgInfoTab			: "Info",
 DlgAlertUrl			: "Devi inserire l'URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;non impostato&gt;",
+DlgGenNotSet		: "<non impostato>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Direzione scrittura",
 DlgGenLangDirLtr	: "Da Sinistra a Destra (LTR)",
 DlgGenLangDirRtl	: "Da Destra a Sinistra (RTL)",
 DlgGenLangCode		: "Codice Lingua",
-DlgGenAccessKey		: "Scorciatoria<br>da tastiera",
+DlgGenAccessKey		: "Scorciatoia<br />da tastiera",
 DlgGenName			: "Nome",
 DlgGenTabIndex		: "Ordine di tabulazione",
 DlgGenLongDescr		: "URL descrizione estesa",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Ancora nella pagina",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Protocollo",
-DlgLnkProtoOther	: "&lt;altro&gt;",
+DlgLnkProtoOther	: "<altro>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Scegli Ancora",
 DlgLnkAnchorByName	: "Per Nome",
 DlgLnkAnchorById	: "Per id elemento",
-DlgLnkNoAnchors		: "&lt;Nessuna ancora disponibile nel documento&gt;",
+DlgLnkNoAnchors		: "<Nessuna ancora disponibile nel documento>",
 DlgLnkEMail			: "Indirizzo E-Mail",
 DlgLnkEMailSubject	: "Oggetto del messaggio",
 DlgLnkEMailBody		: "Corpo del messaggio",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Invia al Server",
 
 DlgLnkTarget		: "Destinazione",
-DlgLnkTargetFrame	: "&lt;riquadro&gt;",
-DlgLnkTargetPopup	: "&lt;finestra popup&gt;",
+DlgLnkTargetFrame	: "<riquadro>",
+DlgLnkTargetPopup	: "<finestra popup>",
 DlgLnkTargetBlank	: "Nuova finestra (_blank)",
 DlgLnkTargetParent	: "Finestra padre (_parent)",
 DlgLnkTargetSelf	: "Stessa finestra (_self)",
@@ -267,7 +277,7 @@
 DlgTableColumns		: "Colonne",
 DlgTableBorder		: "Dimensione bordo",
 DlgTableAlign		: "Allineamento",
-DlgTableAlignNotSet	: "&lt;non impostato&gt;",
+DlgTableAlignNotSet	: "<non impostato>",
 DlgTableAlignLeft	: "Sinistra",
 DlgTableAlignCenter	: "Centrato",
 DlgTableAlignRight	: "Destra",
@@ -278,24 +288,25 @@
 DlgTableCellSpace	: "Spaziatura celle",
 DlgTableCellPad		: "Padding celle",
 DlgTableCaption		: "Intestazione",
+DlgTableSummary		: "Indice",
 
 // Table Cell Dialog
-DlgCellTitle		: "Propriet cella",
+DlgCellTitle		: "Proprietà cella",
 DlgCellWidth		: "Larghezza",
 DlgCellWidthPx		: "pixel",
 DlgCellWidthPc		: "percento",
 DlgCellHeight		: "Altezza",
 DlgCellWordWrap		: "A capo automatico",
-DlgCellWordWrapNotSet	: "&lt;non impostato&gt;",
+DlgCellWordWrapNotSet	: "<non impostato>",
 DlgCellWordWrapYes	: "Si",
 DlgCellWordWrapNo	: "No",
 DlgCellHorAlign		: "Allineamento orizzontale",
-DlgCellHorAlignNotSet	: "&lt;non impostato&gt;",
+DlgCellHorAlignNotSet	: "<non impostato>",
 DlgCellHorAlignLeft	: "Sinistra",
 DlgCellHorAlignCenter	: "Centrato",
 DlgCellHorAlignRight: "Destra",
 DlgCellVerAlign		: "Allineamento verticale",
-DlgCellVerAlignNotSet	: "&lt;non impostato&gt;",
+DlgCellVerAlignNotSet	: "<non impostato>",
 DlgCellVerAlignTop	: "In Alto",
 DlgCellVerAlignMiddle	: "Centrato",
 DlgCellVerAlignBottom	: "In Basso",
@@ -309,7 +320,7 @@
 // Find Dialog
 DlgFindTitle		: "Trova",
 DlgFindFindBtn		: "Trova",
-DlgFindNotFoundMsg	: "L'elemento cercato non  stato trovato.",
+DlgFindNotFoundMsg	: "L'elemento cercato non è stato trovato.",
 
 // Replace Dialog
 DlgReplaceTitle			: "Sostituisci",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Rimuovi le definizioni di Stile",
 DlgPasteCleanBox		: "Svuota area di testo",
 
-
 // Color Picker
 ColorAutomatic	: "Automatico",
 ColorMoreColors	: "Altri colori...",
@@ -416,7 +426,7 @@
 NumberedListProp	: "Proprietà lista numerata",
 DlgLstType			: "Tipo",
 DlgLstTypeCircle	: "Tondo",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Disco",
 DlgLstTypeSquare	: "Quadrato",
 DlgLstTypeNumbers	: "Numeri (1, 2, 3)",
 DlgLstTypeLCase		: "Caratteri minuscoli (a, b, c)",
@@ -462,13 +472,14 @@
 // Templates Dialog
 Templates			: "Modelli",
 DlgTemplatesTitle	: "Contenuto dei modelli",
-DlgTemplatesSelMsg	: "Seleziona il modello da aprire nell'editor<br>(il contenuto attuale verrà eliminato):",
+DlgTemplatesSelMsg	: "Seleziona il modello da aprire nell'editor<br />(il contenuto attuale verrà eliminato):",
 DlgTemplatesLoading	: "Caricamento modelli in corso. Attendere prego...",
 DlgTemplatesNoTpl	: "(Nessun modello definito)",
 
 // About Dialog
 DlgAboutAboutTab	: "Informazioni",
 DlgAboutBrowserInfoTab	: "Informazioni Browser",
+DlgAboutLicenseTab	: "Licenza",
 DlgAboutVersion		: "versione",
 DlgAboutLicense		: "Rilasciato sotto la licensa GNU Lesser General Public License",
 DlgAboutInfo		: "Localizzazione in Italiano realizzata da Simone Chiaretta<br /><a target=\"_blank\" href=\"http://www.piyosailing.com/S/\">www.piyosailing.com</a><br /><br />Per maggiori informazioni visitare"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/ja.js 1.4.1.src/fckeditor/editor/lang/ja.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/ja.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/ja.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -85,6 +85,8 @@
 Replace				: "置き換え",
 SpellCheck			: "スペルチェック",
 UniversalKeyboard	: "ユニバーサル・キーボード",
+PageBreakLbl		: "改ページ",
+PageBreak			: "改ページ挿入",
 
 Form			: "フォーム",
 Checkbox		: "チェックボックス",
@@ -96,8 +98,13 @@
 SelectionField	: "選択フィールド",
 ImageButton		: "画像ボタン",
 
+FitWindow		: "エディタサイズを最大にします",
+
 // Context Menu
 EditLink			: "リンク編集",
+CellCM				: "セル",
+RowCM				: "行",
+ColumnCM			: "カラム",
 InsertRow			: "行挿入",
 DeleteRows			: "行削除",
 InsertColumn		: "列挿入",
@@ -106,6 +113,7 @@
 DeleteCells			: "セル削除",
 MergeCells			: "セル結合",
 SplitCell			: "セル分割",
+TableDelete			: "テーブル削除",
 CellProperties		: "セル プロパティ",
 TableProperties		: "テーブル プロパティ",
 ImageProperties		: "イメージ プロパティ",
@@ -133,7 +141,9 @@
 UnknownCommand		: "未知のコマンド名 \"%1\"",
 NotImplemented		: "コマンドはインプリメントされませんでした。",
 UnknownToolbarSet	: "ツールバー設定 \"%1\" 存在しません。",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "エラー、警告メッセージなどが発生した場合、ブラウザーのセキュリティ設定によりエディタのいくつかの機能が制限されている可能性があります。セキュリティ設定のオプションで\"ActiveXコントロールとプラグインの実行\"を有効にするにしてください。",
+BrowseServerBlocked : "サーバーブラウザーを開くことができませんでした。ポップアップ・ブロック機能が無効になっているか確認してください。",
+DialogBlocked		: "ダイアログウィンドウを開くことができませんでした。ポップアップ・ブロック機能が無効になっているか確認してください。",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -141,12 +151,12 @@
 DlgBtnClose			: "閉じる",
 DlgBtnBrowseServer	: "サーバーブラウザー",
 DlgAdvancedTag		: "高度な設定",
-DlgOpOther			: "&lt;その他&gt;",
+DlgOpOther			: "<その他>",
 DlgInfoTab			: "情報",
 DlgAlertUrl			: "URLを挿入してください",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;なし&gt;",
+DlgGenNotSet		: "<なし>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "文字表記の方向",
 DlgGenLangDirLtr	: "左から右 (LTR)",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "このページのアンカー",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "プロトコル",
-DlgLnkProtoOther	: "&lt;その他&gt;",
+DlgLnkProtoOther	: "<その他>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "アンカーを選択",
 DlgLnkAnchorByName	: "アンカー名",
 DlgLnkAnchorById	: "エレメントID",
-DlgLnkNoAnchors		: "&lt;ドキュメントにおいて利用可能なアンカーはありません。&gt;",
+DlgLnkNoAnchors		: "<ドキュメントにおいて利用可能なアンカーはありません。>",
 DlgLnkEMail			: "E-Mail アドレス",
 DlgLnkEMailSubject	: "件名",
 DlgLnkEMailBody		: "本文",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "サーバーに送信",
 
 DlgLnkTarget		: "ターゲット",
-DlgLnkTargetFrame	: "&lt;フレーム&gt;",
-DlgLnkTargetPopup	: "&lt;ポップアップウィンドウ&gt;",
+DlgLnkTargetFrame	: "<フレーム>",
+DlgLnkTargetPopup	: "<ポップアップウィンドウ>",
 DlgLnkTargetBlank	: "新しいウィンドウ (_blank)",
 DlgLnkTargetParent	: "親ウィンドウ (_parent)",
 DlgLnkTargetSelf	: "同じウィンドウ (_self)",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "セル内余白",
 DlgTableCellPad		: "セル内間隔",
 DlgTableCaption		: "ｷｬﾌﾟｼｮﾝ",
+DlgTableSummary		: "テーブル目的/構造",
 
 // Table Cell Dialog
 DlgCellTitle		: "セル プロパティ",
@@ -286,16 +297,16 @@
 DlgCellWidthPc		: "パーセント",
 DlgCellHeight		: "高さ",
 DlgCellWordWrap		: "折り返し",
-DlgCellWordWrapNotSet	: "&lt;なし&gt;",
+DlgCellWordWrapNotSet	: "<なし>",
 DlgCellWordWrapYes	: "Yes",
 DlgCellWordWrapNo	: "No",
 DlgCellHorAlign		: "セル横の整列",
-DlgCellHorAlignNotSet	: "&lt;なし&gt;",
+DlgCellHorAlignNotSet	: "<なし>",
 DlgCellHorAlignLeft	: "左",
 DlgCellHorAlignCenter	: "中央",
 DlgCellHorAlignRight: "右",
 DlgCellVerAlign		: "セル縦の整列",
-DlgCellVerAlignNotSet	: "&lt;なし&gt;",
+DlgCellVerAlignNotSet	: "<なし>",
 DlgCellVerAlignTop	: "上",
 DlgCellVerAlignMiddle	: "中央",
 DlgCellVerAlignBottom	: "下",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "スタイル定義を削除します。",
 DlgPasteCleanBox		: "入力エリアクリア",
 
-
 // Color Picker
 ColorAutomatic	: "自動",
 ColorMoreColors	: "その他の色...",
@@ -416,7 +426,7 @@
 NumberedListProp	: "段落番号 プロパティ",
 DlgLstType			: "タイプ",
 DlgLstTypeCircle	: "白丸",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "黒丸",
 DlgLstTypeSquare	: "四角",
 DlgLstTypeNumbers	: "アラビア数字 (1, 2, 3)",
 DlgLstTypeLCase		: "英字小文字 (a, b, c)",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "バージョン情報",
 DlgAboutBrowserInfoTab	: "ブラウザ情報",
+DlgAboutLicenseTab	: "ライセンス",
 DlgAboutVersion		: "バージョン",
 DlgAboutLicense		: "Licensed under the terms of the GNU Lesser General Public License",
 DlgAboutInfo		: "より詳しい情報はこちらで"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/km.js 1.4.1.src/fckeditor/editor/lang/km.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/km.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/lang/km.js	2006-06-17 16:25:29.000000000 -0500
@@ -0,0 +1,486 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: km.js
+ * 	Khmer language file.
+ * 
+ * File Authors:
+ * 		Chay Sengtha (sengtha@e-khmer.com - http://translate.e-khmer.net)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "បង្រួមរបាឧបរកណ៍",
+ToolbarExpand		: "ពង្រីករបាឧបរណ៍",
+
+// Toolbar Items and Context Menu
+Save				: "រក្សាទុក",
+NewPage				: "ទំព័រថ្មី",
+Preview				: "មើលសាកល្បង",
+Cut					: "កាត់យក",
+Copy				: "ចំលងយក",
+Paste				: "ចំលងដាក់",
+PasteText			: "ចំលងដាក់ជាអត្ថបទធម្មតា",
+PasteWord			: "ចំលងដាក់ពី Word",
+Print				: "បោះពុម្ភ",
+SelectAll			: "ជ្រើសរើសទាំងអស់",
+RemoveFormat		: "លប់ចោល ការរចនា",
+InsertLinkLbl		: "ឈ្នាប់",
+InsertLink			: "បន្ថែម/កែប្រែ ឈ្នាប់",
+RemoveLink			: "លប់ឈ្នាប់",
+Anchor				: "បន្ថែម/កែប្រែ យុថ្កា",
+InsertImageLbl		: "រូបភាព",
+InsertImage			: "បន្ថែម/កែប្រែ រូបភាព",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "បន្ថែម/កែប្រែ Flash",
+InsertTableLbl		: "តារាង",
+InsertTable			: "បន្ថែម/កែប្រែ តារាង",
+InsertLineLbl		: "បន្ទាត់",
+InsertLine			: "បន្ថែមបន្ទាត់ផ្តេក",
+InsertSpecialCharLbl: "អក្សរពិសេស",
+InsertSpecialChar	: "បន្ថែមអក្សរពិសេស",
+InsertSmileyLbl		: "រូបភាព",
+InsertSmiley		: "បន្ថែម រូបភាព",
+About				: "អំពី FCKeditor",
+Bold				: "អក្សរដិតធំ",
+Italic				: "អក្សរផ្តេក",
+Underline			: "ដិតបន្ទាត់ពីក្រោមអក្សរ",
+StrikeThrough		: "ដិតបន្ទាត់ពាក់កណ្តាលអក្សរ",
+Subscript			: "អក្សរតូចក្រោម",
+Superscript			: "អក្សរតូចលើ",
+LeftJustify			: "តំរឹមឆ្វេង",
+CenterJustify		: "តំរឹមកណ្តាល",
+RightJustify		: "តំរឹមស្តាំ",
+BlockJustify		: "តំរឹមសងខាង",
+DecreaseIndent		: "បន្ថយការចូលបន្ទាត់",
+IncreaseIndent		: "បន្ថែមការចូលបន្ទាត់",
+Undo				: "សារឡើងវិញ",
+Redo				: "ធ្វើឡើងវិញ",
+NumberedListLbl		: "បញ្ជីជាអក្សរ",
+NumberedList		: "បន្ថែម/លប់ បញ្ជីជាអក្សរ",
+BulletedListLbl		: "បញ្ជីជារង្វង់មូល",
+BulletedList		: "បន្ថែម/លប់ បញ្ជីជារង្វង់មូល",
+ShowTableBorders	: "បង្ហាញស៊ុមតារាង",
+ShowDetails			: "បង្ហាញពិស្តារ",
+Style				: "ម៉ូត",
+FontFormat			: "រចនា",
+Font				: "ហ្វុង",
+FontSize			: "ទំហំ",
+TextColor			: "ពណ៌អក្សរ",
+BGColor				: "ពណ៌ផ្ទៃខាងក្រោយ",
+Source				: "កូត",
+Find				: "ស្វែងរក",
+Replace				: "ជំនួស",
+SpellCheck			: "ពិនិត្យអក្ខរាវិរុទ្ធ",
+UniversalKeyboard	: "ក្តារពុម្ភអក្សរសកល",
+PageBreakLbl		: "ការផ្តាច់ទំព័រ",
+PageBreak			: "បន្ថែម ការផ្តាច់ទំព័រ",
+
+Form			: "បែបបទ",
+Checkbox		: "ប្រអប់ជ្រើសរើស",
+RadioButton		: "ប៉ូតុនរង្វង់មូល",
+TextField		: "ជួរសរសេរអត្ថបទ",
+Textarea		: "តំបន់សរសេរអត្ថបទ",
+HiddenField		: "ជួរលាក់",
+Button			: "ប៉ូតុន",
+SelectionField	: "ជួរជ្រើសរើស",
+ImageButton		: "ប៉ូតុនរូបភាព",
+
+FitWindow		: "Maximize the editor size",	//MISSING
+
+// Context Menu
+EditLink			: "កែប្រែឈ្នាប់",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
+InsertRow			: "បន្ថែមជួរផ្តេក",
+DeleteRows			: "លប់ជួរផ្តេក",
+InsertColumn		: "បន្ថែមជួរឈរ",
+DeleteColumns		: "លប់ជួរឈរ",
+InsertCell			: "បន្ថែម សែល",
+DeleteCells			: "លប់សែល",
+MergeCells			: "បញ្ជូលសែល",
+SplitCell			: "ផ្តាច់សែល",
+TableDelete			: "លប់តារាង",
+CellProperties		: "ការកំណត់សែល",
+TableProperties		: "ការកំណត់តារាង",
+ImageProperties		: "ការកំណត់រូបភាព",
+FlashProperties		: "ការកំណត់ Flash",
+
+AnchorProp			: "ការកំណត់យុថ្កា",
+ButtonProp			: "ការកំណត់ ប៉ូតុន",
+CheckboxProp		: "ការកំណត់ប្រអប់ជ្រើសរើស",
+HiddenFieldProp		: "ការកំណត់ជួរលាក់",
+RadioButtonProp		: "ការកំណត់ប៉ូតុនរង្វង់",
+ImageButtonProp		: "ការកំណត់ប៉ូតុនរូបភាព",
+TextFieldProp		: "ការកំណត់ជួរអត្ថបទ",
+SelectionFieldProp	: "ការកំណត់ជួរជ្រើសរើស",
+TextareaProp		: "ការកំណត់កន្លែងសរសេរអត្ថបទ",
+FormProp			: "ការកំណត់បែបបទ",
+
+FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Normal (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "កំពុងដំណើរការ XHTML ។ សូមរងចាំ...",
+Done				: "ចប់រួចរាល់",
+PasteWordConfirm	: "អត្ថបទដែលលោកអ្នកបំរុងចំលងដាក់ ហាក់បីដូចជាត្រូវចំលងមកពីកម្មវិធី​Word​។ តើលោកអ្នកចង់សំអាតមុនចំលងអត្ថបទដាក់ទេ?",
+NotCompatiblePaste	: "ពាក្យបញ្ជានេះប្រើបានតែជាមួយ Internet Explorer កំរិត 5.5 រឺ លើសនេះ ។ តើលោកអ្នកចង់ចំលងដាក់ដោយមិនចាំបាច់សំអាតទេ?",
+UnknownToolbarItem	: "វត្ថុលើរបាឧបរកណ៍ មិនស្គាល់ \"%1\"",
+UnknownCommand		: "ឈ្មោះពាក្យបញ្ជា មិនស្គាល់ \"%1\"",
+NotImplemented		: "ពាក្យបញ្ជា មិនបានអនុវត្ត",
+UnknownToolbarSet	: "របាឧបរកណ៍ \"%1\" ពុំមាន ។",
+NoActiveX			: "ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​អាចធ្វើអោយលោកអ្នកមិនអាចប្រើមុខងារខ្លះរបស់កម្មវិធីតាក់តែងអត្ថបទនេះ ។ លោកអ្នកត្រូវកំណត់អោយ \"ActiveX និង​កម្មវិធីជំនួយក្នុង (plug-ins)\" អោយដំណើរការ ។ លោកអ្នកអាចជួបប្រទះនឹង បញ្ហា ព្រមជាមួយនឹងការបាត់បង់មុខងារណាមួយរបស់កម្មវិធីតាក់តែងអត្ថបទនេះ ។",
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "វីនដូវមិនអាចបើកបានទេ ។ សូមពិនិត្យចំពោះកម្មវិធីបិទ វីនដូវលោត (popup) ថាតើវាដំណើរការរឺទេ ។",
+
+// Dialogs
+DlgBtnOK			: "យល់ព្រម",
+DlgBtnCancel		: "មិនយល់ព្រម",
+DlgBtnClose			: "បិទ",
+DlgBtnBrowseServer	: "មើល",
+DlgAdvancedTag		: "កំរិតខ្ពស់",
+DlgOpOther			: "<ផ្សេងទៅត>",
+DlgInfoTab			: "ពត៌មាន",
+DlgAlertUrl			: "សូមសរសេរ URL",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<មិនមែន>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "ទិសដៅភាសា",
+DlgGenLangDirLtr	: "ពីឆ្វេងទៅស្តាំ(LTR)",
+DlgGenLangDirRtl	: "ពីស្តាំទៅឆ្វេង(RTL)",
+DlgGenLangCode		: "លេខកូតភាសា",
+DlgGenAccessKey		: "ឃី សំរាប់ចូល",
+DlgGenName			: "ឈ្មោះ",
+DlgGenTabIndex		: "លេខ Tab",
+DlgGenLongDescr		: "អធិប្បាយ URL វែង",
+DlgGenClass			: "Stylesheet Classes",
+DlgGenTitle			: "ចំណងជើង ប្រឹក្សា",
+DlgGenContType		: "ប្រភេទអត្ថបទ ប្រឹក្សា",
+DlgGenLinkCharset	: "លេខកូតអក្សររបស់ឈ្នាប់",
+DlgGenStyle			: "ម៉ូត",
+
+// Image Dialog
+DlgImgTitle			: "ការកំណត់រូបភាព",
+DlgImgInfoTab		: "ពត៌មានអំពីរូបភាព",
+DlgImgBtnUpload		: "បញ្ជូនទៅកាន់ម៉ាស៊ីនផ្តល់សេវា",
+DlgImgURL			: "URL",
+DlgImgUpload		: "ទាញយក",
+DlgImgAlt			: "អត្ថបទជំនួស",
+DlgImgWidth			: "ទទឹង",
+DlgImgHeight		: "កំពស់",
+DlgImgLockRatio		: "អត្រាឡុក",
+DlgBtnResetSize		: "កំណត់ទំហំឡើងវិញ",
+DlgImgBorder		: "ស៊ុម",
+DlgImgHSpace		: "គំលាតទទឹង",
+DlgImgVSpace		: "គំលាតបណ្តោយ",
+DlgImgAlign			: "កំណត់ទីតាំង",
+DlgImgAlignLeft		: "ខាងឆ្វង",
+DlgImgAlignAbsBottom: "Abs Bottom",	//MISSING
+DlgImgAlignAbsMiddle: "Abs Middle",	//MISSING
+DlgImgAlignBaseline	: "បន្ទាត់ជាមូលដ្ឋាន",
+DlgImgAlignBottom	: "ខាងក្រោម",
+DlgImgAlignMiddle	: "កណ្តាល",
+DlgImgAlignRight	: "ខាងស្តាំ",
+DlgImgAlignTextTop	: "លើអត្ថបទ",
+DlgImgAlignTop		: "ខាងលើ",
+DlgImgPreview		: "មើលសាកល្បង",
+DlgImgAlertUrl		: "សូមសរសេរងាស័យដ្ឋានរបស់រូបភាព",
+DlgImgLinkTab		: "ឈ្នាប់",
+
+// Flash Dialog
+DlgFlashTitle		: "ការកំណត់ Flash",
+DlgFlashChkPlay		: "លេងដោយស្វ័យប្រវត្ត",
+DlgFlashChkLoop		: "ចំនួនដង",
+DlgFlashChkMenu		: "បង្ហាញ មឺនុយរបស់ Flash",
+DlgFlashScale		: "ទំហំ",
+DlgFlashScaleAll	: "បង្ហាញទាំងអស់",
+DlgFlashScaleNoBorder	: "មិនបង្ហាញស៊ុម",
+DlgFlashScaleFit	: "ត្រូវល្មម",
+
+// Link Dialog
+DlgLnkWindowTitle	: "ឈ្នាប់",
+DlgLnkInfoTab		: "ពត៌មានអំពីឈ្នាប់",
+DlgLnkTargetTab		: "គោលដៅ",
+
+DlgLnkType			: "ប្រភេទឈ្នាប់",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "យុថ្កានៅក្នុងទំព័រនេះ",
+DlgLnkTypeEMail		: "អ៊ីមែល",
+DlgLnkProto			: "ប្រូតូកូល",
+DlgLnkProtoOther	: "<ផ្សេងទៀត>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "ជ្រើសរើសយុថ្កា",
+DlgLnkAnchorByName	: "តាមឈ្មោះរបស់យុថ្កា",
+DlgLnkAnchorById	: "តាម Id",
+DlgLnkNoAnchors		: "<ពុំមានយុថ្កានៅក្នុងឯកសារនេះទេ>",
+DlgLnkEMail			: "អ៊ីមែល",
+DlgLnkEMailSubject	: "ចំណងជើងអត្ថបទ",
+DlgLnkEMailBody		: "អត្ថបទ",
+DlgLnkUpload		: "ទាញយក",
+DlgLnkBtnUpload		: "ទាញយក",
+
+DlgLnkTarget		: "គោលដៅ",
+DlgLnkTargetFrame	: "<ហ្វ្រេម>",
+DlgLnkTargetPopup	: "<វីនដូវ លោត>",
+DlgLnkTargetBlank	: "វីនដូវថ្មី (_blank)",
+DlgLnkTargetParent	: "វីនដូវមេ (_parent)",
+DlgLnkTargetSelf	: "វីនដូវដដែល (_self)",
+DlgLnkTargetTop		: "វីនដូវនៅលើគេ(_top)",
+DlgLnkTargetFrameName	: "ឈ្មោះហ្រ្វេមដែលជាគោលដៅ",
+DlgLnkPopWinName	: "ឈ្មោះវីនដូវលោត",
+DlgLnkPopWinFeat	: "លក្ខណះរបស់វីនដូលលោត",
+DlgLnkPopResize		: "ទំហំអាចផ្លាស់ប្តូរ",
+DlgLnkPopLocation	: "របា ទីតាំង",
+DlgLnkPopMenu		: "របា មឺនុយ",
+DlgLnkPopScroll		: "របា ទាញ",
+DlgLnkPopStatus		: "របា ពត៌មាន",
+DlgLnkPopToolbar	: "របា ឩបករណ៍",
+DlgLnkPopFullScrn	: "អេក្រុងពេញ(IE)",
+DlgLnkPopDependent	: "អាស្រ័យលើ (Netscape)",
+DlgLnkPopWidth		: "ទទឹង",
+DlgLnkPopHeight		: "កំពស់",
+DlgLnkPopLeft		: "ទីតាំងខាងឆ្វេង",
+DlgLnkPopTop		: "ទីតាំងខាងលើ",
+
+DlnLnkMsgNoUrl		: "សូមសរសេរ អាស័យដ្ឋាន URL",
+DlnLnkMsgNoEMail	: "សូមសរសេរ អាស័យដ្ឋាន អ៊ីមែល",
+DlnLnkMsgNoAnchor	: "សូមជ្រើសរើស យុថ្កា",
+
+// Color Dialog
+DlgColorTitle		: "ជ្រើសរើស ពណ៌",
+DlgColorBtnClear	: "លប់",
+DlgColorHighlight	: "ផាត់ពណ៌",
+DlgColorSelected	: "បានជ្រើសរើស",
+
+// Smiley Dialog
+DlgSmileyTitle		: "បញ្ជូលរូបភាព",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "តូអក្សរពិសេស",
+
+// Table Dialog
+DlgTableTitle		: "ការកំណត់ តារាង",
+DlgTableRows		: "ជួរផ្តេក",
+DlgTableColumns		: "ជួរឈរ",
+DlgTableBorder		: "ទំហំស៊ុម",
+DlgTableAlign		: "ការកំណត់ទីតាំង",
+DlgTableAlignNotSet	: "<មិនកំណត់>",
+DlgTableAlignLeft	: "ខាងឆ្វេង",
+DlgTableAlignCenter	: "កណ្តាល",
+DlgTableAlignRight	: "ខាងស្តាំ",
+DlgTableWidth		: "ទទឹង",
+DlgTableWidthPx		: "ភីកសែល",
+DlgTableWidthPc		: "ភាគរយ",
+DlgTableHeight		: "កំពស់",
+DlgTableCellSpace	: "គំលាតសែល",
+DlgTableCellPad		: "គែមសែល",
+DlgTableCaption		: "ចំណងជើង",
+DlgTableSummary		: "សេចក្តីសង្ខេប",
+
+// Table Cell Dialog
+DlgCellTitle		: "ការកំណត់ សែល",
+DlgCellWidth		: "ទទឹង",
+DlgCellWidthPx		: "ភីកសែល",
+DlgCellWidthPc		: "ភាគរយ",
+DlgCellHeight		: "កំពស់",
+DlgCellWordWrap		: "បង្ហាញអត្ថបទទាំងអស់",
+DlgCellWordWrapNotSet	: "<មិនកំណត់>",
+DlgCellWordWrapYes	: "បាទ(ចា)",
+DlgCellWordWrapNo	: "ទេ",
+DlgCellHorAlign		: "តំរឹមផ្តេក",
+DlgCellHorAlignNotSet	: "<មិនកំណត់>",
+DlgCellHorAlignLeft	: "ខាងឆ្វេង",
+DlgCellHorAlignCenter	: "កណ្តាល",
+DlgCellHorAlignRight: "Right",	//MISSING
+DlgCellVerAlign		: "តំរឹមឈរ",
+DlgCellVerAlignNotSet	: "<មិនកណត់>",
+DlgCellVerAlignTop	: "ខាងលើ",
+DlgCellVerAlignMiddle	: "កណ្តាល",
+DlgCellVerAlignBottom	: "ខាងក្រោម",
+DlgCellVerAlignBaseline	: "បន្ទាត់ជាមូលដ្ឋាន",
+DlgCellRowSpan		: "បញ្ជូលជួរផ្តេក",
+DlgCellCollSpan		: "បញ្ជូលជួរឈរ",
+DlgCellBackColor	: "ពណ៌ផ្នែកខាងក្រោម",
+DlgCellBorderColor	: "ពណ៌ស៊ុម",
+DlgCellBtnSelect	: "ជ្រើសរើស...",
+
+// Find Dialog
+DlgFindTitle		: "ស្វែងរក",
+DlgFindFindBtn		: "ស្វែងរក",
+DlgFindNotFoundMsg	: "ពាក្យនេះ រកមិនឃើញទេ ។",
+
+// Replace Dialog
+DlgReplaceTitle			: "ជំនួស",
+DlgReplaceFindLbl		: "ស្វែងរកអ្វី:",
+DlgReplaceReplaceLbl	: "ជំនួសជាមួយ:",
+DlgReplaceCaseChk		: "ករណ៉ត្រូវរក",
+DlgReplaceReplaceBtn	: "ជំនួស",
+DlgReplaceReplAllBtn	: "ជំនួសទាំងអស់",
+DlgReplaceWordChk		: "ត្រូវពាក្យទាំងអស់",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Your browser security settings don't permit the editor to automatically execute pasting operations. Please use the keyboard for that (Ctrl+V).",	//MISSING
+PasteErrorCut	: "ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​មិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ កាត់អត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ  (Ctrl+X) ។",
+PasteErrorCopy	: "ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​មិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ ចំលងអត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl+C)។",
+
+PasteAsText		: "ចំលងដាក់អត្ថបទធម្មតា",
+PasteFromWord	: "ចំលងពាក្យពីកម្មវិធី Word",
+
+DlgPasteMsg2	: "សូមចំលងអត្ថបទទៅដាក់ក្នុងប្រអប់ដូចខាងក្រោមដោយប្រើប្រាស់ ឃី ​(<STRONG>Ctrl+V</STRONG>) ហើយចុច <STRONG>OK</STRONG> ។",
+DlgPasteIgnoreFont		: "មិនគិតអំពីប្រភេទពុម្ភអក្សរ",
+DlgPasteRemoveStyles	: "លប់ម៉ូត",
+DlgPasteCleanBox		: "លប់អត្ថបទចេញពីប្រអប់",
+
+// Color Picker
+ColorAutomatic	: "ស្វ័យប្រវត្ត",
+ColorMoreColors	: "ពណ៌ផ្សេងទៀត..",
+
+// Document Properties
+DocProps		: "ការកំណត់ ឯកសារ",
+
+// Anchor Dialog
+DlgAnchorTitle		: "ការកំណត់ចំណងជើងយុទ្ធថ្កា",
+DlgAnchorName		: "ឈ្មោះយុទ្ធថ្កា",
+DlgAnchorErrorName	: "សូមសរសេរ ឈ្មោះយុទ្ធថ្កា",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "គ្មានក្នុងវចនានុក្រម",
+DlgSpellChangeTo		: "ផ្លាស់ប្តូរទៅ",
+DlgSpellBtnIgnore		: "មិនផ្លាស់ប្តូរ",
+DlgSpellBtnIgnoreAll	: "មិនផ្លាស់ប្តូរ ទាំងអស់",
+DlgSpellBtnReplace		: "ជំនួស",
+DlgSpellBtnReplaceAll	: "ជំនួសទាំងអស់",
+DlgSpellBtnUndo			: "សារឡើងវិញ",
+DlgSpellNoSuggestions	: "- គ្មានសំណើរ -",
+DlgSpellProgress		: "កំពុងពិនិត្យអក្ខរាវិរុទ្ធ...",
+DlgSpellNoMispell		: "ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: គ្មានកំហុស",
+DlgSpellNoChanges		: "ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពុំមានផ្លាស់ប្តូរ",
+DlgSpellOneChange		: "ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពាក្យមួយត្រូចបានផ្លាស់ប្តូរ",
+DlgSpellManyChanges		: "ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: %1 ពាក្យបានផ្លាស់ប្តូរ",
+
+IeSpellDownload			: "ពុំមានកម្មវិធីពិនិត្យអក្ខរាវិរុទ្ធ ។ តើចង់ទាញយកពីណា?",
+
+// Button Dialog
+DlgButtonText	: "អត្ថបទ(តំលៃ)",
+DlgButtonType	: "ប្រភេទ",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "ឈ្មោះ",
+DlgCheckboxValue	: "តំលៃ",
+DlgCheckboxSelected	: "បានជ្រើសរើស",
+
+// Form Dialog
+DlgFormName		: "ឈ្មោះ",
+DlgFormAction	: "សកម្មភាព",
+DlgFormMethod	: "វិធី",
+
+// Select Field Dialog
+DlgSelectName		: "ឈ្មោះ",
+DlgSelectValue		: "តំលៃ",
+DlgSelectSize		: "ទំហំ",
+DlgSelectLines		: "បន្ទាត់",
+DlgSelectChkMulti	: "អនុញ្ញាតអោយជ្រើសរើសច្រើន",
+DlgSelectOpAvail	: "ការកំណត់ជ្រើសរើស ដែលអាចកំណត់បាន",
+DlgSelectOpText		: "ពាក្យ",
+DlgSelectOpValue	: "តំលៃ",
+DlgSelectBtnAdd		: "បន្ថែម",
+DlgSelectBtnModify	: "ផ្លាស់ប្តូរ",
+DlgSelectBtnUp		: "លើ",
+DlgSelectBtnDown	: "ក្រោម",
+DlgSelectBtnSetValue : "Set as selected value",	//MISSING
+DlgSelectBtnDelete	: "លប់",
+
+// Textarea Dialog
+DlgTextareaName	: "ឈ្មោះ",
+DlgTextareaCols	: "ជូរឈរ",
+DlgTextareaRows	: "ជូរផ្តេក",
+
+// Text Field Dialog
+DlgTextName			: "ឈ្មោះ",
+DlgTextValue		: "តំលៃ",
+DlgTextCharWidth	: "ទទឹង អក្សរ",
+DlgTextMaxChars		: "អក្សរអតិបរិមា",
+DlgTextType			: "ប្រភេទ",
+DlgTextTypeText		: "ពាក្យ",
+DlgTextTypePass		: "ពាក្យសំងាត់",
+
+// Hidden Field Dialog
+DlgHiddenName	: "ឈ្មោះ",
+DlgHiddenValue	: "តំលៃ",
+
+// Bulleted List Dialog
+BulletedListProp	: "កំណត់បញ្ជីរង្វង់",
+NumberedListProp	: "កំណត់បញ្េជីលេខ",
+DlgLstType			: "ប្រភេទ",
+DlgLstTypeCircle	: "រង្វង់",
+DlgLstTypeDisc		: "Disc",
+DlgLstTypeSquare	: "ការេ",
+DlgLstTypeNumbers	: "លេខ(1, 2, 3)",
+DlgLstTypeLCase		: "អក្សរតូច(a, b, c)",
+DlgLstTypeUCase		: "អក្សរធំ(A, B, C)",
+DlgLstTypeSRoman	: "អក្សរឡាតាំងតូច(i, ii, iii)",
+DlgLstTypeLRoman	: "អក្សរឡាតាំងធំ(I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "ទូទៅ",
+DlgDocBackTab		: "ផ្នែកខាងក្រោយ",
+DlgDocColorsTab		: "ទំព័រ​និង ស៊ុម",
+DlgDocMetaTab		: "ទិន្នន័យមេ",
+
+DlgDocPageTitle		: "ចំណងជើងទំព័រ",
+DlgDocLangDir		: "ទិសដៅសរសេរភាសា",
+DlgDocLangDirLTR	: "ពីឆ្វេងទៅស្ដាំ(LTR)",
+DlgDocLangDirRTL	: "ពីស្ដាំទៅឆ្វេង(RTL)",
+DlgDocLangCode		: "លេខកូតភាសា",
+DlgDocCharSet		: "កំណត់លេខកូតភាសា",
+DlgDocCharSetOther	: "កំណត់លេខកូតភាសាផ្សេងទៀត",
+
+DlgDocDocType		: "ប្រភេទក្បាលទំព័រ",
+DlgDocDocTypeOther	: "ប្រភេទក្បាលទំព័រផ្សេងទៀត",
+DlgDocIncXHTML		: "បញ្ជូល XHTML",
+DlgDocBgColor		: "ពណ៌ខាងក្រោម",
+DlgDocBgImage		: "URL របស់រូបភាពខាងក្រោម",
+DlgDocBgNoScroll	: "ទំព័រក្រោមមិនប្តូរ",
+DlgDocCText			: "អត្តបទ",
+DlgDocCLink			: "ឈ្នាប់",
+DlgDocCVisited		: "ឈ្នាប់មើលហើយ",
+DlgDocCActive		: "ឈ្នាប់កំពុងមើល",
+DlgDocMargins		: "ស៊ុមទំព័រ",
+DlgDocMaTop			: "លើ",
+DlgDocMaLeft		: "ឆ្វេង",
+DlgDocMaRight		: "ស្ដាំ",
+DlgDocMaBottom		: "ក្រោម",
+DlgDocMeIndex		: "ពាក្យនៅក្នុងឯកសារ (ផ្តាច់ពីគ្នាដោយក្បៀស)",
+DlgDocMeDescr		: "សេចក្តីអត្ថាធិប្បាយអំពីឯកសារ",
+DlgDocMeAuthor		: "អ្នកនិពន្ធ",
+DlgDocMeCopy		: "រក្សាសិទ្ធិ៏",
+DlgDocPreview		: "មើលសាកល្បង",
+
+// Templates Dialog
+Templates			: "ឯកសារគំរូ",
+DlgTemplatesTitle	: "ឯកសារគំរូ របស់អត្ថន័យ",
+DlgTemplatesSelMsg	: "សូមជ្រើសរើសឯកសារគំរូ ដើម្បីបើកនៅក្នុងកម្មវិធីតាក់តែងអត្ថបទ<br>(អត្ថបទនឹងបាត់បង់):",
+DlgTemplatesLoading	: "កំពុងអានបញ្ជីឯកសារគំរូ ។ សូមរងចាំ...",
+DlgTemplatesNoTpl	: "(ពុំមានឯកសារគំរូត្រូវបានកំណត់)",
+
+// About Dialog
+DlgAboutAboutTab	: "អំពី",
+DlgAboutBrowserInfoTab	: "ព៌តមានកម្មវិធីរុករក",
+DlgAboutLicenseTab	: "License",	//MISSING
+DlgAboutVersion		: "ជំនាន់",
+DlgAboutLicense		: "Licensed under the terms of the GNU Lesser General Public License",
+DlgAboutInfo		: "សំរាប់ព៌តមានផ្សេងទៀត សូមទាក់ទង"
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/ko.js 1.4.1.src/fckeditor/editor/lang/ko.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/ko.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/ko.js	2006-06-17 16:25:28.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -86,6 +86,8 @@
 Replace				: "바꾸기",
 SpellCheck			: "철자검사",
 UniversalKeyboard	: "다국어 입력기",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
 
 Form			: "폼",
 Checkbox		: "체크박스",
@@ -97,8 +99,13 @@
 SelectionField	: "펼침목록",
 ImageButton		: "이미지버튼",
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "링크 수정",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "가로줄 삽입",
 DeleteRows			: "가로줄 삭제",
 InsertColumn		: "세로줄 삽입",
@@ -107,6 +114,7 @@
 DeleteCells			: "셀 삭제",
 MergeCells			: "셀 합치기",
 SplitCell			: "셀 나누기",
+TableDelete			: "Delete Table",	//MISSING
 CellProperties		: "셀 속성",
 TableProperties		: "표 속성",
 ImageProperties		: "이미지 속성",
@@ -134,7 +142,9 @@
 UnknownCommand		: "알수없는 기능입니다. : \"%1\"",
 NotImplemented		: "기능이 실행되지 않았습니다.",
 UnknownToolbarSet	: "툴바 설정이 없습니다. : \"%1\"",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "예",
@@ -142,12 +152,12 @@
 DlgBtnClose			: "닫기",
 DlgBtnBrowseServer	: "서버 보기",
 DlgAdvancedTag		: "자세히",
-DlgOpOther			: "&lt;기타&gt;",
+DlgOpOther			: "<기타>",
 DlgInfoTab			: "정보",
 DlgAlertUrl			: "URL을 입력하십시요",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;설정되지 않음&gt;",
+DlgGenNotSet		: "<설정되지 않음>",
 DlgGenId			: "ID",
 DlgGenLangDir		: "쓰기 방향",
 DlgGenLangDirLtr	: "왼쪽에서 오른쪽 (LTR)",
@@ -211,12 +221,12 @@
 DlgLnkTypeAnchor	: "책갈피",
 DlgLnkTypeEMail		: "이메일",
 DlgLnkProto			: "프로토콜",
-DlgLnkProtoOther	: "&lt;기타&gt;",
+DlgLnkProtoOther	: "<기타>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "책갈피 선택",
 DlgLnkAnchorByName	: "책갈피 이름",
 DlgLnkAnchorById	: "책갈피 ID",
-DlgLnkNoAnchors		: "&lt;문서에 책갈피가 없습니다.&gt;",
+DlgLnkNoAnchors		: "<문서에 책갈피가 없습니다.>",
 DlgLnkEMail			: "이메일 주소",
 DlgLnkEMailSubject	: "제목",
 DlgLnkEMailBody		: "내용",
@@ -224,8 +234,8 @@
 DlgLnkBtnUpload		: "서버로 전송",
 
 DlgLnkTarget		: "타겟",
-DlgLnkTargetFrame	: "&lt;프레임&gt;",
-DlgLnkTargetPopup	: "&lt;팝업창&gt;",
+DlgLnkTargetFrame	: "<프레임>",
+DlgLnkTargetPopup	: "<팝업창>",
 DlgLnkTargetBlank	: "새 창 (_blank)",
 DlgLnkTargetParent	: "부모 창 (_parent)",
 DlgLnkTargetSelf	: "현재 창 (_self)",
@@ -279,6 +289,7 @@
 DlgTableCellSpace	: "셀 간격",
 DlgTableCellPad		: "셀 여백",
 DlgTableCaption		: "캡션",
+DlgTableSummary		: "Summary",	//MISSING
 
 // Table Cell Dialog
 DlgCellTitle		: "셀 설정",
@@ -334,7 +345,6 @@
 DlgPasteRemoveStyles	: "스타일 정의 제거",
 DlgPasteCleanBox		: "글상자 제거",
 
-
 // Color Picker
 ColorAutomatic	: "기본색상",
 ColorMoreColors	: "색상선택...",
@@ -470,6 +480,7 @@
 // About Dialog
 DlgAboutAboutTab	: "About",
 DlgAboutBrowserInfoTab	: "브라우저 정보",
+DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "버전",
 DlgAboutLicense		: "Licensed under the terms of the GNU Lesser General Public License",
 DlgAboutInfo		: "For further information go to"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/lt.js 1.4.1.src/fckeditor/editor/lang/lt.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/lt.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/lt.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -85,6 +85,8 @@
 Replace				: "Pakeisti",
 SpellCheck			: "Rašybos tikrinimas",
 UniversalKeyboard	: "Universali klaviatūra",
+PageBreakLbl		: "Puslapių skirtukas",
+PageBreak			: "Įterpti puslapių skirtuką",
 
 Form			: "Forma",
 Checkbox		: "Žymimasis langelis",
@@ -96,8 +98,13 @@
 SelectionField	: "Atrankos laukas",
 ImageButton		: "Vaizdinis mygtukas",
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "Taisyti nuorodą",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "Įterpti eilutę",
 DeleteRows			: "Šalinti eilutes",
 InsertColumn		: "Įterpti stulpelį",
@@ -106,6 +113,7 @@
 DeleteCells			: "Šalinti langelius",
 MergeCells			: "Sujungti langelius",
 SplitCell			: "Skaidyti langelius",
+TableDelete			: "Šalinti lentelę",
 CellProperties		: "Langelio savybės",
 TableProperties		: "Lentelės savybės",
 ImageProperties		: "Vaizdo savybės",
@@ -133,7 +141,9 @@
 UnknownCommand		: "Nežinomas komandos vardas \"%1\"",
 NotImplemented		: "Komanda nėra įgyvendinta",
 UnknownToolbarSet	: "Mygtukų juostos rinkinys \"%1\" neegzistuoja",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Jūsų naršyklės saugumo nuostatos gali riboti kai kurias redaktoriaus savybes. Jūs turite aktyvuoti opciją \"Run ActiveX controls and plug-ins\". Kitu atveju Jums bus pranešama apie klaidas ir trūkstamas savybes.",
+BrowseServerBlocked : "Neįmanoma atidaryti naujo naršyklės lango. Įsitikinkite, kad iškylančių langų blokavimo programos neveiksnios.",
+DialogBlocked		: "Neįmanoma atidaryti dialogo lango. Įsitikinkite, kad iškylančių langų blokavimo programos neveiksnios.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -141,12 +151,12 @@
 DlgBtnClose			: "Uždaryti",
 DlgBtnBrowseServer	: "Naršyti po serverį",
 DlgAdvancedTag		: "Papildomas",
-DlgOpOther			: "&lt;Kita&gt;",
+DlgOpOther			: "<Kita>",
 DlgInfoTab			: "Informacija",
 DlgAlertUrl			: "Prašome įrašyti URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;nėra nustatyta&gt;",
+DlgGenNotSet		: "<nėra nustatyta>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Teksto kryptis",
 DlgGenLangDirLtr	: "Iš kairės į dešinę (LTR)",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Žymė šiame puslapyje",
 DlgLnkTypeEMail		: "El.paštas",
 DlgLnkProto			: "Protokolas",
-DlgLnkProtoOther	: "&lt;kitas&gt;",
+DlgLnkProtoOther	: "<kitas>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Pasirinkite žymę",
 DlgLnkAnchorByName	: "Pagal žymės vardą",
 DlgLnkAnchorById	: "Pagal žymės Id",
-DlgLnkNoAnchors		: "&lt;Šiame dokumente žymių nėra&gt;",
+DlgLnkNoAnchors		: "<Šiame dokumente žymių nėra>",
 DlgLnkEMail			: "El.pašto adresas",
 DlgLnkEMailSubject	: "Žinutės tema",
 DlgLnkEMailBody		: "Žinutės turinys",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Siųsti į serverį",
 
 DlgLnkTarget		: "Paskirties vieta",
-DlgLnkTargetFrame	: "&lt;kadras&gt;",
-DlgLnkTargetPopup	: "&lt;išskleidžiamas langas&gt;",
+DlgLnkTargetFrame	: "<kadras>",
+DlgLnkTargetPopup	: "<išskleidžiamas langas>",
 DlgLnkTargetBlank	: "Naujas langas (_blank)",
 DlgLnkTargetParent	: "Pirminis langas (_parent)",
 DlgLnkTargetSelf	: "Tas pats langas (_self)",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "Tarpas tarp langelių",
 DlgTableCellPad		: "Trapas nuo langelio rėmo iki teksto",
 DlgTableCaption		: "Antraštė",
+DlgTableSummary		: "Santrauka",
 
 // Table Cell Dialog
 DlgCellTitle		: "Langelio savybės",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Pašalinti stilių nustatymus",
 DlgPasteCleanBox		: "Trinti įvedimo lauką",
 
-
 // Color Picker
 ColorAutomatic	: "Automatinis",
 ColorMoreColors	: "Daugiau spalvų...",
@@ -416,7 +426,7 @@
 NumberedListProp	: "Numeruoto sąrašo savybės",
 DlgLstType			: "Tipas",
 DlgLstTypeCircle	: "Apskritimas",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Diskas",
 DlgLstTypeSquare	: "Kvadratas",
 DlgLstTypeNumbers	: "Skaičiai (1, 2, 3)",
 DlgLstTypeLCase		: "Mažosios raidės (a, b, c)",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "Apie",
 DlgAboutBrowserInfoTab	: "Naršyklės informacija",
+DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "versija",
 DlgAboutLicense		: "Licencijuota pagal GNU mažesnės atsakomybės pagrindinės viešos licencijos sąlygas",
 DlgAboutInfo		: "Papildomą informaciją galima gauti"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/lv.js 1.4.1.src/fckeditor/editor/lang/lv.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/lv.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/lang/lv.js	2006-06-17 16:25:29.000000000 -0500
@@ -0,0 +1,487 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: lv.js
+ * 	Latvian language file.
+ * 
+ * File Authors:
+ * 		Jānis Kļaviņš (janis@4id.lv)
+ * 		Slowmo (slowmo@inbox.lv)
+ */
+
+var FCKLang =
+{
+// Language direction : "ltr" (left to right) or "rtl" (right to left).
+Dir					: "ltr",
+
+ToolbarCollapse		: "Samazināt rīku joslu",
+ToolbarExpand		: "Paplašināt rīku joslu",
+
+// Toolbar Items and Context Menu
+Save				: "Saglabāt",
+NewPage				: "Jauna lapa",
+Preview				: "Pārskatīt",
+Cut					: "Izgriezt",
+Copy				: "Kopēt",
+Paste				: "Ievietot",
+PasteText			: "Ievietot kā vienkāršu tekstu",
+PasteWord			: "Ievietot no Worda",
+Print				: "Drukāt",
+SelectAll			: "Iezīmēt visu",
+RemoveFormat		: "Noņemt stilus",
+InsertLinkLbl		: "Hipersaite",
+InsertLink			: "Ievietot/Labot hipersaiti",
+RemoveLink			: "Noņemt hipersaiti",
+Anchor				: "Ievietot/Labot iezīmi",
+InsertImageLbl		: "Attēls",
+InsertImage			: "Ievietot/Labot Attēlu",
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Ievietot/Labot Flash",
+InsertTableLbl		: "Tabula",
+InsertTable			: "Ievietot/Labot Tabulu",
+InsertLineLbl		: "Atdalītājsvītra",
+InsertLine			: "Ievietot horizontālu Atdalītājsvītru",
+InsertSpecialCharLbl: "Īpašs simbols",
+InsertSpecialChar	: "Ievietot speciālo simbolu",
+InsertSmileyLbl		: "Smaidiņi",
+InsertSmiley		: "Ievietot smaidiņu",
+About				: "Īsumā par FCKeditor",
+Bold				: "Treknu šriftu",
+Italic				: "Slīprakstā",
+Underline			: "Apakšsvītra",
+StrikeThrough		: "Pārsvītrots",
+Subscript			: "Zemrakstā",
+Superscript			: "Augšrakstā",
+LeftJustify			: "Izlīdzināt pa kreisi",
+CenterJustify		: "Izlīdzināt pret centru",
+RightJustify		: "Izlīdzināt pa labi",
+BlockJustify		: "Izlīdzināt malas",
+DecreaseIndent		: "Samazināt atkāpi",
+IncreaseIndent		: "Palielināt atkāpi",
+Undo				: "Atcelt",
+Redo				: "Atkārtot",
+NumberedListLbl		: "Numurēts saraksts",
+NumberedList		: "Ievietot/Noņemt numerēto sarakstu",
+BulletedListLbl		: "Izcelts saraksts",
+BulletedList		: "Ievietot/Noņemt izceltu sarakstu",
+ShowTableBorders	: "Parādīt tabulas robežas",
+ShowDetails			: "Parādīt sīkāku informāciju",
+Style				: "Stils",
+FontFormat			: "Formāts",
+Font				: "Šrifts",
+FontSize			: "Izmērs",
+TextColor			: "Teksta krāsa",
+BGColor				: "Fona krāsa",
+Source				: "HTML kods",
+Find				: "Meklēt",
+Replace				: "Nomainīt",
+SpellCheck			: "Pareizrakstības pārbaude",
+UniversalKeyboard	: "Universāla klaviatūra",
+PageBreakLbl		: "Lapas pārtraukums",
+PageBreak			: "Ievietot lapas pārtraukumu",
+
+Form			: "Forma",
+Checkbox		: "Atzīmēšanas kastīte",
+RadioButton		: "Izvēles poga",
+TextField		: "Teksta rinda",
+Textarea		: "Teksta laukums",
+HiddenField		: "Paslēpta teksta rinda",
+Button			: "Poga",
+SelectionField	: "Iezīmēšanas lauks",
+ImageButton		: "Attēlpoga",
+
+FitWindow		: "Maksimizēt redaktora izmēru",
+
+// Context Menu
+EditLink			: "Labot hipersaiti",
+CellCM				: "Šūna",
+RowCM				: "Rinda",
+ColumnCM			: "Kolonna",
+InsertRow			: "Ievietot rindu",
+DeleteRows			: "Dzēst rindas",
+InsertColumn		: "Ievietot kolonnu",
+DeleteColumns		: "Dzēst kolonnas",
+InsertCell			: "Ievietot rūtiņu",
+DeleteCells			: "Dzēst rūtiņas",
+MergeCells			: "Apvienot rūtiņas",
+SplitCell			: "Sadalīt rūtiņu",
+TableDelete			: "Dzēst tabulu",
+CellProperties		: "Rūtiņas īpašības",
+TableProperties		: "Tabulas īpašības",
+ImageProperties		: "Attēla īpašības",
+FlashProperties		: "Flash īpašības",
+
+AnchorProp			: "Iezīmes īpašības",
+ButtonProp			: "Pogas īpašības",
+CheckboxProp		: "Atzīmēšanas kastītes īpašības",
+HiddenFieldProp		: "Paslēptās teksta rindas īpašības",
+RadioButtonProp		: "Izvēles poga īpašības",
+ImageButtonProp		: "Attēlpogas īpašības",
+TextFieldProp		: "Teksta rindas  īpašības",
+SelectionFieldProp	: "Iezīmēšanas lauka īpašības",
+TextareaProp		: "Teksta laukuma īpašības",
+FormProp			: "Formas īpašības",
+
+FontFormats			: "Normāls teksts;Formatēts teksts;Adrese;Virsraksts 1;Virsraksts 2;Virsraksts 3;Virsraksts 4;Virsraksts 5;Virsraksts 6;Rindkopa (DIV)",
+
+// Alerts and Messages
+ProcessingXHTML		: "Tiek apstrādāts XHTML. Lūdzu uzgaidiet...",
+Done				: "Darīts",
+PasteWordConfirm	: "Teksta fragments, kas tiek ievietots, izskatās, ka būtu sagatavots Word'ā. Vai vēlaties to apstrādāt pirms ievietošanas?",
+NotCompatiblePaste	: "Šī darbība ir pieejama Internet Explorer'ī, kas jaunāks par 5.5 versiju. Vai vēlaties ievietot bez apstrādes?",
+UnknownToolbarItem	: "Nezināms rīku joslas objekts \"%1\"",
+UnknownCommand		: "Nezināmas darbības nosaukums \"%1\"",
+NotImplemented		: "Darbība netika paveikta",
+UnknownToolbarSet	: "Rīku joslas komplekts \"%1\" neeksistē",
+NoActiveX			: "Interneta pārlūkprogrammas drošības uzstādījumi varētu ietekmēt dažas no redaktora īpašībām. Jābūt aktivizētai sadaļai \"Run ActiveX controls and plug-ins\". Savādāk ir iespējamas kļūdas darbībā un kļūdu paziņojumu parādīšanās.",
+BrowseServerBlocked : "Resursu pārlūks nevar tikt atvērts. Pārliecinieties, ka uznirstošo logu bloķētāji ir atslēgti.",
+DialogBlocked		: "Nav iespējams atvērt dialoglogu. Pārliecinieties, ka uznirstošo logu bloķētāji ir atslēgti.",
+
+// Dialogs
+DlgBtnOK			: "Darīts!",
+DlgBtnCancel		: "Atcelt",
+DlgBtnClose			: "Aizvērt",
+DlgBtnBrowseServer	: "Skatīt servera saturu",
+DlgAdvancedTag		: "Izvērstais",
+DlgOpOther			: "<Cits>",
+DlgInfoTab			: "Informācija",
+DlgAlertUrl			: "Lūdzu, ievietojiet hipersaiti",
+
+// General Dialogs Labels
+DlgGenNotSet		: "<nav iestatīts>",
+DlgGenId			: "Id",
+DlgGenLangDir		: "Valodas lasīšanas virziens",
+DlgGenLangDirLtr	: "No kreisās uz labo (LTR)",
+DlgGenLangDirRtl	: "No labās uz kreiso (RTL)",
+DlgGenLangCode		: "Valodas kods",
+DlgGenAccessKey		: "Pieejas kods",
+DlgGenName			: "Nosaukums",
+DlgGenTabIndex		: "Ciļņu indekss",
+DlgGenLongDescr		: "Gara apraksta Hipersaite",
+DlgGenClass			: "Stilu saraksta klases",
+DlgGenTitle			: "Konsultatīvs virsraksts",
+DlgGenContType		: "Konsultatīvs satura tips",
+DlgGenLinkCharset	: "Pievienotā resursa kodu tabula",
+DlgGenStyle			: "Stils",
+
+// Image Dialog
+DlgImgTitle			: "Attēla īpašības",
+DlgImgInfoTab		: "Informācija par attēlu",
+DlgImgBtnUpload		: "Nosūtīt serverim",
+DlgImgURL			: "URL",
+DlgImgUpload		: "Augšupielādēt",
+DlgImgAlt			: "Alternatīvais teksts",
+DlgImgWidth			: "Platums",
+DlgImgHeight		: "Augstums",
+DlgImgLockRatio		: "Nemainīga Augstuma/Platuma attiecība",
+DlgBtnResetSize		: "Atjaunot sākotnējo izmēru",
+DlgImgBorder		: "Rāmis",
+DlgImgHSpace		: "Horizontālā telpa",
+DlgImgVSpace		: "Vertikālā telpa",
+DlgImgAlign			: "Nolīdzināt",
+DlgImgAlignLeft		: "Pa kreisi",
+DlgImgAlignAbsBottom: "Absolūti apakšā",
+DlgImgAlignAbsMiddle: "Absolūti vertikāli centrēts",
+DlgImgAlignBaseline	: "Pamatrindā",
+DlgImgAlignBottom	: "Apakšā",
+DlgImgAlignMiddle	: "Vertikāli centrēts",
+DlgImgAlignRight	: "Pa labi",
+DlgImgAlignTextTop	: "Teksta augšā",
+DlgImgAlignTop		: "Augšā",
+DlgImgPreview		: "Pārskats",
+DlgImgAlertUrl		: "Lūdzu norādīt attēla hipersaiti",
+DlgImgLinkTab		: "Hipersaite",
+
+// Flash Dialog
+DlgFlashTitle		: "Flash īpašības",
+DlgFlashChkPlay		: "Automātiska atskaņošana",
+DlgFlashChkLoop		: "Nepārtraukti",
+DlgFlashChkMenu		: "Atļaut Flash izvēlni",
+DlgFlashScale		: "Mainīt izmēru",
+DlgFlashScaleAll	: "Rādīt visu",
+DlgFlashScaleNoBorder	: "Bez rāmja",
+DlgFlashScaleFit	: "Precīzs izmērs",
+
+// Link Dialog
+DlgLnkWindowTitle	: "Hipersaite",
+DlgLnkInfoTab		: "Hipersaites informācija",
+DlgLnkTargetTab		: "Mērķis",
+
+DlgLnkType			: "Hipersaites tips",
+DlgLnkTypeURL		: "URL",
+DlgLnkTypeAnchor	: "Iezīme šajā lapā",
+DlgLnkTypeEMail		: "E-pasts",
+DlgLnkProto			: "Protokols",
+DlgLnkProtoOther	: "<cits>",
+DlgLnkURL			: "URL",
+DlgLnkAnchorSel		: "Izvēlēties iezīmi",
+DlgLnkAnchorByName	: "Pēc iezīmes nosaukuma",
+DlgLnkAnchorById	: "Pēc elementa ID",
+DlgLnkNoAnchors		: "<Šajā dokumentā nav iezīmju>",
+DlgLnkEMail			: "E-pasta adrese",
+DlgLnkEMailSubject	: "Ziņas tēma",
+DlgLnkEMailBody		: "Ziņas saturs",
+DlgLnkUpload		: "Augšupielādēt",
+DlgLnkBtnUpload		: "Nosūtīt serverim",
+
+DlgLnkTarget		: "Mērķis",
+DlgLnkTargetFrame	: "<ietvars>",
+DlgLnkTargetPopup	: "<uznirstošā logā>",
+DlgLnkTargetBlank	: "Jaunā logā (_blank)",
+DlgLnkTargetParent	: "Esošajā logā (_parent)",
+DlgLnkTargetSelf	: "Tajā pašā logā (_self)",
+DlgLnkTargetTop		: "Visredzamākajā logā (_top)",
+DlgLnkTargetFrameName	: "Mērķa ietvara nosaukums",
+DlgLnkPopWinName	: "Uznirstošā loga nosaukums",
+DlgLnkPopWinFeat	: "Uznirstošā loga nosaukums īpašības",
+DlgLnkPopResize		: "Ar maināmu izmēru",
+DlgLnkPopLocation	: "Atrašanās vietas josla",
+DlgLnkPopMenu		: "Izvēlnes josla",
+DlgLnkPopScroll		: "Ritjoslas",
+DlgLnkPopStatus		: "Statusa josla",
+DlgLnkPopToolbar	: "Rīku josla",
+DlgLnkPopFullScrn	: "Pilnā ekrānā (IE)",
+DlgLnkPopDependent	: "Atkarīgs (Netscape)",
+DlgLnkPopWidth		: "Platums",
+DlgLnkPopHeight		: "Augstums",
+DlgLnkPopLeft		: "Kreisā koordināte",
+DlgLnkPopTop		: "Augšējā koordināte",
+
+DlnLnkMsgNoUrl		: "Lūdzu norādi hipersaiti",
+DlnLnkMsgNoEMail	: "Lūdzu norādi e-pasta adresi",
+DlnLnkMsgNoAnchor	: "Lūdzu norādi iezīmi",
+
+// Color Dialog
+DlgColorTitle		: "Izvēlies krāsu",
+DlgColorBtnClear	: "Dzēst",
+DlgColorHighlight	: "Izcelt",
+DlgColorSelected	: "Iezīmētais",
+
+// Smiley Dialog
+DlgSmileyTitle		: "Ievietot smaidiņu",
+
+// Special Character Dialog
+DlgSpecialCharTitle	: "Ievietot īpašu simbolu",
+
+// Table Dialog
+DlgTableTitle		: "Tabulas īpašības",
+DlgTableRows		: "Rindas",
+DlgTableColumns		: "Kolonnas",
+DlgTableBorder		: "Rāmja izmērs",
+DlgTableAlign		: "Novietojums",
+DlgTableAlignNotSet	: "<nav norādīts>",
+DlgTableAlignLeft	: "Pa kreisi",
+DlgTableAlignCenter	: "Centrēti",
+DlgTableAlignRight	: "Pa labi",
+DlgTableWidth		: "Platums",
+DlgTableWidthPx		: "pikseļos",
+DlgTableWidthPc		: "procentuāli",
+DlgTableHeight		: "Augstums",
+DlgTableCellSpace	: "Rūtiņu atstatums",
+DlgTableCellPad		: "Rūtiņu nobīde",
+DlgTableCaption		: "Leģenda",
+DlgTableSummary		: "Anotācija",
+
+// Table Cell Dialog
+DlgCellTitle		: "Rūtiņas īpašības",
+DlgCellWidth		: "Platums",
+DlgCellWidthPx		: "pikseļi",
+DlgCellWidthPc		: "procentos",
+DlgCellHeight		: "Augstums",
+DlgCellWordWrap		: "Teksta pārnese",
+DlgCellWordWrapNotSet	: "<nav norādīta>",
+DlgCellWordWrapYes	: "Jā",
+DlgCellWordWrapNo	: "Nē",
+DlgCellHorAlign		: "Horizontāla novietojums",
+DlgCellHorAlignNotSet	: "<Nav norādīts>",
+DlgCellHorAlignLeft	: "Pa kreisi",
+DlgCellHorAlignCenter	: "Centrēti",
+DlgCellHorAlignRight: "Pa labi",
+DlgCellVerAlign		: "Vertikālais novietojums",
+DlgCellVerAlignNotSet	: "<nav norādīts>",
+DlgCellVerAlignTop	: "Augša",
+DlgCellVerAlignMiddle	: "Vidus",
+DlgCellVerAlignBottom	: "Apakša",
+DlgCellVerAlignBaseline	: "Pamatrindā",
+DlgCellRowSpan		: "Rindu pārnese",
+DlgCellCollSpan		: "Kolonnu pārnese",
+DlgCellBackColor	: "Fona krāsa",
+DlgCellBorderColor	: "Rāmja krāsa",
+DlgCellBtnSelect	: "Iezīmē...",
+
+// Find Dialog
+DlgFindTitle		: "Meklētājs",
+DlgFindFindBtn		: "Meklēt",
+DlgFindNotFoundMsg	: "Norādītā frāze netika atrasta.",
+
+// Replace Dialog
+DlgReplaceTitle			: "Aizvietošana",
+DlgReplaceFindLbl		: "Meklēt:",
+DlgReplaceReplaceLbl	: "Nomainīt uz:",
+DlgReplaceCaseChk		: "Reģistrjūtīgs",
+DlgReplaceReplaceBtn	: "Aizvietot",
+DlgReplaceReplAllBtn	: "Aizvietot visu",
+DlgReplaceWordChk		: "Jāsakrīt pilnībā",
+
+// Paste Operations / Dialog
+PasteErrorPaste	: "Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt ievietošanas darbību. Lūdzu, izmantojiet (Ctrl+V), lai veiktu šo darbību.",
+PasteErrorCut	: "Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt izgriešanas darbību.  Lūdzu, izmantojiet (Ctrl+X, lai veiktu šo darbību.",
+PasteErrorCopy	: "Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt kopēšanas darbību.  Lūdzu, izmantojiet (Ctrl+C), lai veiktu šo darbību.",
+
+PasteAsText		: "Ievietot kā vienkāršu tekstu",
+PasteFromWord	: "Ievietot no Worda",
+
+DlgPasteMsg2	: "Lūdzu, ievietojiet tekstu šajā laukumā, izmantojot klaviatūru (<STRONG>Ctrl+V</STRONG>) un apstipriniet ar <STRONG>Darīts!</STRONG>.",
+DlgPasteIgnoreFont		: "Ignorēt iepriekš norādītos fontus",
+DlgPasteRemoveStyles	: "Noņemt norādītos stilus",
+DlgPasteCleanBox		: "Apstrādāt laukuma saturu",
+
+// Color Picker
+ColorAutomatic	: "Automātiska",
+ColorMoreColors	: "Plašāka palete...",
+
+// Document Properties
+DocProps		: "Dokumenta īpašības",
+
+// Anchor Dialog
+DlgAnchorTitle		: "Iezīmes īpašības",
+DlgAnchorName		: "Iezīmes nosaukums",
+DlgAnchorErrorName	: "Lūdzu norādiet iezīmes nosaukumu",
+
+// Speller Pages Dialog
+DlgSpellNotInDic		: "Netika atrasts vārdnīcā",
+DlgSpellChangeTo		: "Nomainīt uz",
+DlgSpellBtnIgnore		: "Ignorēt",
+DlgSpellBtnIgnoreAll	: "Ignorēt visu",
+DlgSpellBtnReplace		: "Aizvietot",
+DlgSpellBtnReplaceAll	: "Aizvietot visu",
+DlgSpellBtnUndo			: "Atcelt",
+DlgSpellNoSuggestions	: "- Nav ieteikumu -",
+DlgSpellProgress		: "Notiek pareizrakstības pārbaude...",
+DlgSpellNoMispell		: "Pareizrakstības pārbaude pabeigta: kļūdas netika atrastas",
+DlgSpellNoChanges		: "Pareizrakstības pārbaude pabeigta: nekas netika labots",
+DlgSpellOneChange		: "Pareizrakstības pārbaude pabeigta: 1 vārds izmainīts",
+DlgSpellManyChanges		: "Pareizrakstības pārbaude pabeigta: %1 vārdi tika mainīti",
+
+IeSpellDownload			: "Pareizrakstības pārbaudītājs nav pievienots. Vai vēlaties to lejupielādēt tagad?",
+
+// Button Dialog
+DlgButtonText	: "Teksts (vērtība)",
+DlgButtonType	: "Tips",
+
+// Checkbox and Radio Button Dialogs
+DlgCheckboxName		: "Nosaukums",
+DlgCheckboxValue	: "Vērtība",
+DlgCheckboxSelected	: "Iezīmēts",
+
+// Form Dialog
+DlgFormName		: "Nosaukums",
+DlgFormAction	: "Darbība",
+DlgFormMethod	: "Metode",
+
+// Select Field Dialog
+DlgSelectName		: "Nosaukums",
+DlgSelectValue		: "Vērtība",
+DlgSelectSize		: "Izmērs",
+DlgSelectLines		: "rindas",
+DlgSelectChkMulti	: "Atļaut vairākus iezīmējumus",
+DlgSelectOpAvail	: "Pieejamās iespējas",
+DlgSelectOpText		: "Teksts",
+DlgSelectOpValue	: "Vērtība",
+DlgSelectBtnAdd		: "Pievienot",
+DlgSelectBtnModify	: "Veikt izmaiņas",
+DlgSelectBtnUp		: "Augšup",
+DlgSelectBtnDown	: "Lejup",
+DlgSelectBtnSetValue : "Noteikt kā iezīmēto vērtību",
+DlgSelectBtnDelete	: "Dzēst",
+
+// Textarea Dialog
+DlgTextareaName	: "Nosaukums",
+DlgTextareaCols	: "Kolonnas",
+DlgTextareaRows	: "Rindas",
+
+// Text Field Dialog
+DlgTextName			: "Nosaukums",
+DlgTextValue		: "Vērtība",
+DlgTextCharWidth	: "Simbolu platums",
+DlgTextMaxChars		: "Simbolu maksimālais daudzums",
+DlgTextType			: "Tips",
+DlgTextTypeText		: "Teksts",
+DlgTextTypePass		: "Parole",
+
+// Hidden Field Dialog
+DlgHiddenName	: "Nosaukums",
+DlgHiddenValue	: "Vērtība",
+
+// Bulleted List Dialog
+BulletedListProp	: "Aizzīmju saraksta īpašības",
+NumberedListProp	: "Numerētā saraksta īpašības",
+DlgLstType			: "Tips",
+DlgLstTypeCircle	: "Aplis",
+DlgLstTypeDisc		: "Disks",
+DlgLstTypeSquare	: "Kvadrāts",
+DlgLstTypeNumbers	: "Skaitļi (1, 2, 3)",
+DlgLstTypeLCase		: "Maziem burtiem (a, b, c)",
+DlgLstTypeUCase		: "Lieliem burtiem (A, B, C)",
+DlgLstTypeSRoman	: "Maziem romiešu cipariem (i, ii, iii)",
+DlgLstTypeLRoman	: "Lieliem romiešu cipariem (I, II, III)",
+
+// Document Properties Dialog
+DlgDocGeneralTab	: "Vispārīga informācija",
+DlgDocBackTab		: "Fons",
+DlgDocColorsTab		: "Krāsas un robežu nobīdes",
+DlgDocMetaTab		: "META dati",
+
+DlgDocPageTitle		: "Dokumenta virsraksts <Title>",
+DlgDocLangDir		: "Valodas lasīšanas virziens",
+DlgDocLangDirLTR	: "No kreisās uz labo (LTR)",
+DlgDocLangDirRTL	: "No labās uz kreiso (RTL)",
+DlgDocLangCode		: "Valodas kods",
+DlgDocCharSet		: "Simbolu kodējums",
+DlgDocCharSetOther	: "Cits simbolu kodējums",
+
+DlgDocDocType		: "Dokumenta tips",
+DlgDocDocTypeOther	: "Cits dokumenta tips",
+DlgDocIncXHTML		: "Ietvert XHTML deklarācijas",
+DlgDocBgColor		: "Fona krāsa",
+DlgDocBgImage		: "Fona attēla hipersaite",
+DlgDocBgNoScroll	: "Fona attēls ir fiksēts",
+DlgDocCText			: "Teksts",
+DlgDocCLink			: "Hipersaite",
+DlgDocCVisited		: "Apmeklēta hipersaite",
+DlgDocCActive		: "Aktīva hipersaite",
+DlgDocMargins		: "Lapas robežas",
+DlgDocMaTop			: "Augšā",
+DlgDocMaLeft		: "Pa kreisi",
+DlgDocMaRight		: "Pa labi",
+DlgDocMaBottom		: "Apakšā",
+DlgDocMeIndex		: "Dokumentu aprakstoši atslēgvārdi (atdalīti ar komatu)",
+DlgDocMeDescr		: "Dokumenta apraksts",
+DlgDocMeAuthor		: "Autors",
+DlgDocMeCopy		: "Autortiesības",
+DlgDocPreview		: "Priekšskats",
+
+// Templates Dialog
+Templates			: "Sagataves",
+DlgTemplatesTitle	: "Satura sagataves",
+DlgTemplatesSelMsg	: "Lūdzu, norādiet sagatavi, ko atvērt editorā<br>(patreizējie dati tiks zaudēti):",
+DlgTemplatesLoading	: "Notiek sagatavju saraksta ielāde. Lūdzu, uzgaidiet...",
+DlgTemplatesNoTpl	: "(Nav norādītas sagataves)",
+
+// About Dialog
+DlgAboutAboutTab	: "Par",
+DlgAboutBrowserInfoTab	: "Informācija par pārlūkprogrammu",
+DlgAboutLicenseTab	: "Licence",
+DlgAboutVersion		: "versija",
+DlgAboutLicense		: "Programmatūra lietojama saskaņā ar GNU Lesser General Public License",
+DlgAboutInfo		: "Papildus informācija ir pieejama"
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/mn.js 1.4.1.src/fckeditor/editor/lang/mn.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/mn.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/mn.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -83,8 +83,10 @@
 Source				: "Код",
 Find				: "Хайх",
 Replace				: "Солих",
-SpellCheck			: "Check Spell",	//MISSING
+SpellCheck			: "Check Spelling",	//MISSING
 UniversalKeyboard	: "Universal Keyboard",	//MISSING
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
 
 Form			: "Form",	//MISSING
 Checkbox		: "Checkbox",	//MISSING
@@ -96,8 +98,13 @@
 SelectionField	: "Selection Field",	//MISSING
 ImageButton		: "Image Button",	//MISSING
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "Холбоос засварлах",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "Мөр оруулах",
 DeleteRows			: "Мөр устгах",
 InsertColumn		: "Багана оруулах",
@@ -106,6 +113,7 @@
 DeleteCells			: "Нүх устгах",
 MergeCells			: "Нүх нэгтэх",
 SplitCell			: "Нүх тусгайрлах",
+TableDelete			: "Delete Table",	//MISSING
 CellProperties		: "Хоосон зайн шинж чанар",
 TableProperties		: "Хүснэгт",
 ImageProperties		: "Зураг",
@@ -133,7 +141,9 @@
 UnknownCommand		: "\"%1\" комманд нэр мэдагдэхгүй байна",
 NotImplemented		: "Зөвшөөрөгдөхгүй комманд",
 UnknownToolbarSet	: "Багажны хэсэгт \"%1\" оноох, үүсээгүй байна",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -141,12 +151,12 @@
 DlgBtnClose			: "Хаах",
 DlgBtnBrowseServer	: "Browse Server",	//MISSING
 DlgAdvancedTag		: "Нэмэлт",
-DlgOpOther			: "&lt;Other&gt;",	//MISSING
+DlgOpOther			: "<Other>",	//MISSING
 DlgInfoTab			: "Info",	//MISSING
 DlgAlertUrl			: "Please insert the URL",	//MISSING
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;Оноохгүй&gt;",
+DlgGenNotSet		: "<Оноохгүй>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Хэлний чиглэл",
 DlgGenLangDirLtr	: "Зүүнээс баруун (LTR)",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Энэ хуудасандах холбоос",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Протокол",
-DlgLnkProtoOther	: "&lt;бусад&gt;",
+DlgLnkProtoOther	: "<бусад>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Холбоос сонгох",
 DlgLnkAnchorByName	: "Холбоосын нэрээр",
 DlgLnkAnchorById	: "Элемэнт Id-гаар",
-DlgLnkNoAnchors		: "&lt;Баримт бичиг холбоосгүй байна&gt;",
+DlgLnkNoAnchors		: "<Баримт бичиг холбоосгүй байна>",
 DlgLnkEMail			: "E-Mail Хаяг",
 DlgLnkEMailSubject	: "Message Subject",
 DlgLnkEMailBody		: "Message-ийн агуулга",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Үүнийг серверрүү илгээ",
 
 DlgLnkTarget		: "Байрлал",
-DlgLnkTargetFrame	: "&lt;Агуулах хүрээ&gt;",
-DlgLnkTargetPopup	: "&lt;popup цонх&gt;",
+DlgLnkTargetFrame	: "<Агуулах хүрээ>",
+DlgLnkTargetPopup	: "<popup цонх>",
 DlgLnkTargetBlank	: "Шинэ цонх (_blank)",
 DlgLnkTargetParent	: "Эцэг цонх (_parent)",
 DlgLnkTargetSelf	: "Төстэй цонх (_self)",
@@ -267,7 +277,7 @@
 DlgTableColumns		: "Багана",
 DlgTableBorder		: "Хүрээний хэмжээ",
 DlgTableAlign		: "Эгнээ",
-DlgTableAlignNotSet	: "&lt;Оноохгүй&gt;",
+DlgTableAlignNotSet	: "<Оноохгүй>",
 DlgTableAlignLeft	: "Зүүн талд",
 DlgTableAlignCenter	: "Төвд",
 DlgTableAlignRight	: "Баруун талд",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "Нүх хоорондын зай",
 DlgTableCellPad		: "Нүх доторлох",
 DlgTableCaption		: "Тайлбар",
+DlgTableSummary		: "Summary",	//MISSING
 
 // Table Cell Dialog
 DlgCellTitle		: "Хоосон зайн шинж чанар",
@@ -286,16 +297,16 @@
 DlgCellWidthPc		: "хувь",
 DlgCellHeight		: "Өндөр",
 DlgCellWordWrap		: "Үг таслах",
-DlgCellWordWrapNotSet	: "&lt;Оноохгүй&gt;",
+DlgCellWordWrapNotSet	: "<Оноохгүй>",
 DlgCellWordWrapYes	: "Тийм",
 DlgCellWordWrapNo	: "Үгүй",
 DlgCellHorAlign		: "Босоо эгнээ",
-DlgCellHorAlignNotSet	: "&lt;Оноохгүй&gt;",
+DlgCellHorAlignNotSet	: "<Оноохгүй>",
 DlgCellHorAlignLeft	: "Зүүн",
 DlgCellHorAlignCenter	: "Төв",
 DlgCellHorAlignRight: "Баруун",
 DlgCellVerAlign		: "Хөндлөн эгнээ",
-DlgCellVerAlignNotSet	: "&lt;Оноохгүй&gt;",
+DlgCellVerAlignNotSet	: "<Оноохгүй>",
 DlgCellVerAlignTop	: "Дээд тал",
 DlgCellVerAlignMiddle	: "Дунд",
 DlgCellVerAlignBottom	: "Доод тал",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
 DlgPasteCleanBox		: "Clean Up Box",	//MISSING
 
-
 // Color Picker
 ColorAutomatic	: "Автоматаар",
 ColorMoreColors	: "Нэмэлт өнгөнүүд...",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "About",	//MISSING
 DlgAboutBrowserInfoTab	: "Browser Info",	//MISSING
+DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "Хувилбар",
 DlgAboutLicense		: "GNU цөөн ерөнхий нийтийн лицензийн ангилалд багтсан зөвшөөрөлтэй",
 DlgAboutInfo		: "Мэдээллээр туслах"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/ms.js 1.4.1.src/fckeditor/editor/lang/ms.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/ms.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/ms.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -85,6 +85,8 @@
 Replace				: "Ganti",
 SpellCheck			: "Semak Ejaan",
 UniversalKeyboard	: "Papan Kekunci Universal",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
 
 Form			: "Borang",
 Checkbox		: "Checkbox",
@@ -96,8 +98,13 @@
 SelectionField	: "Field Pilihan",
 ImageButton		: "Butang Bergambar",
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "Sunting Sambungan",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "Masukkan Baris",
 DeleteRows			: "Buangkan Baris",
 InsertColumn		: "Masukkan Lajur",
@@ -106,6 +113,7 @@
 DeleteCells			: "Buangkan Sel-sel",
 MergeCells			: "Cantumkan Sel-sel",
 SplitCell			: "Bahagikan Sel",
+TableDelete			: "Delete Table",	//MISSING
 CellProperties		: "Ciri-ciri Sel",
 TableProperties		: "Ciri-ciri Jadual",
 ImageProperties		: "Ciri-ciri Gambar",
@@ -133,7 +141,9 @@
 UnknownCommand		: "Arahan tidak diketahui \"%1\"",
 NotImplemented		: "Arahan tidak terdapat didalam sistem",
 UnknownToolbarSet	: "Set toolbar \"%1\" tidak wujud",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -141,12 +151,12 @@
 DlgBtnClose			: "Tutup",
 DlgBtnBrowseServer	: "Browse Server",
 DlgAdvancedTag		: "Advanced",
-DlgOpOther			: "&lt;Lain-lain&gt;",
+DlgOpOther			: "<Lain-lain>",
 DlgInfoTab			: "Info",	//MISSING
 DlgAlertUrl			: "Please insert the URL",	//MISSING
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;tidak di set&gt;",
+DlgGenNotSet		: "<tidak di set>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Arah Tulisan",
 DlgGenLangDirLtr	: "Kiri ke Kanan (LTR)",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Pautan dalam muka surat ini",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Protokol",
-DlgLnkProtoOther	: "&lt;lain-lain&gt;",
+DlgLnkProtoOther	: "<lain-lain>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Sila pilih pautan",
 DlgLnkAnchorByName	: "dengan menggunakan nama pautan",
 DlgLnkAnchorById	: "dengan menggunakan ID elemen",
-DlgLnkNoAnchors		: "&lt;Tiada pautan terdapat dalam dokumen ini&gt;",
+DlgLnkNoAnchors		: "<Tiada pautan terdapat dalam dokumen ini>",
 DlgLnkEMail			: "Alamat E-Mail",
 DlgLnkEMailSubject	: "Subjek Mesej",
 DlgLnkEMailBody		: "Isi Kandungan Mesej",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Hantar ke Server",
 
 DlgLnkTarget		: "Sasaran",
-DlgLnkTargetFrame	: "&lt;bingkai&gt;",
-DlgLnkTargetPopup	: "&lt;tetingkap popup&gt;",
+DlgLnkTargetFrame	: "<bingkai>",
+DlgLnkTargetPopup	: "<tetingkap popup>",
 DlgLnkTargetBlank	: "Tetingkap Baru (_blank)",
 DlgLnkTargetParent	: "Tetingkap Parent (_parent)",
 DlgLnkTargetSelf	: "Tetingkap yang Sama (_self)",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "Ruangan Antara Sel",
 DlgTableCellPad		: "Tambahan Ruang Sel",
 DlgTableCaption		: "Keterangan",
+DlgTableSummary		: "Summary",	//MISSING
 
 // Table Cell Dialog
 DlgCellTitle		: "Ciri-ciri Sel",
@@ -286,16 +297,16 @@
 DlgCellWidthPc		: "peratus",
 DlgCellHeight		: "Tinggi",
 DlgCellWordWrap		: "Mengulung Perkataan",
-DlgCellWordWrapNotSet	: "&lt;Tidak diset&gt;",
+DlgCellWordWrapNotSet	: "<Tidak diset>",
 DlgCellWordWrapYes	: "Ya",
 DlgCellWordWrapNo	: "Tidak",
 DlgCellHorAlign		: "Jajaran Membujur",
-DlgCellHorAlignNotSet	: "&lt;Tidak diset&gt;",
+DlgCellHorAlignNotSet	: "<Tidak diset>",
 DlgCellHorAlignLeft	: "Kiri",
 DlgCellHorAlignCenter	: "Tengah",
 DlgCellHorAlignRight: "Kanan",
 DlgCellVerAlign		: "Jajaran Menegak",
-DlgCellVerAlignNotSet	: "&lt;Tidak diset&gt;",
+DlgCellVerAlignNotSet	: "<Tidak diset>",
 DlgCellVerAlignTop	: "Atas",
 DlgCellVerAlignMiddle	: "Tengah",
 DlgCellVerAlignBottom	: "Bawah",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
 DlgPasteCleanBox		: "Clean Up Box",	//MISSING
 
-
 // Color Picker
 ColorAutomatic	: "Otomatik",
 ColorMoreColors	: "Warna lain-lain...",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "Tentang",
 DlgAboutBrowserInfoTab	: "Maklumat Perisian Browser",
+DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "versi",
 DlgAboutLicense		: "Perlesenan dibawah terma GNU Lesser General Public License",
 DlgAboutInfo		: "Untuk maklumat lanjut sila pergi ke"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/nl.js 1.4.1.src/fckeditor/editor/lang/nl.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/nl.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/nl.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -15,6 +15,7 @@
  * 
  * File Authors:
  * 		Bram Crins (bcrins@realdesign.nl)
+ * 		Aaron van Geffen (aaron@aaronweb.net)
  */
 
 var FCKLang =
@@ -32,11 +33,11 @@
 Cut					: "Knippen",
 Copy				: "Kopiëren",
 Paste				: "Plakken",
-PasteText			: "Plakken als pure tekst",
-PasteWord			: "Plakken Word-gegevens",
+PasteText			: "Plakken als platte tekst",
+PasteWord			: "Plakken als Word-gegevens",
 Print				: "Printen",
 SelectAll			: "Alles selecteren",
-RemoveFormat		: "Verwijderen opmaak",
+RemoveFormat		: "Opmaak verwijderen",
 InsertLinkLbl		: "Link",
 InsertLink			: "Invoegen/Wijzigen link",
 RemoveLink			: "Verwijderen link",
@@ -51,8 +52,8 @@
 InsertLine			: "Invoegen horizontale lijn",
 InsertSpecialCharLbl: "Speciale tekens",
 InsertSpecialChar	: "Speciaal teken invoegen",
-InsertSmileyLbl		: "Emoticon",
-InsertSmiley		: "Emoticon invoegen",
+InsertSmileyLbl		: "Smiley",
+InsertSmiley		: "Smiley invoegen",
 About				: "Over FCKeditor",
 Bold				: "Vet",
 Italic				: "Schuingedrukt",
@@ -78,26 +79,33 @@
 FontFormat			: "Opmaak",
 Font				: "Lettertype",
 FontSize			: "Grootte",
-TextColor			: "Tekst kleur",
-BGColor				: "Achtergrond kleur",
+TextColor			: "Tekstkleur",
+BGColor				: "Achtergrondkleur",
 Source				: "Code",
 Find				: "Zoeken",
 Replace				: "Vervangen",
-SpellCheck			: "Spellings controle",
+SpellCheck			: "Spellingscontrole",
 UniversalKeyboard	: "Universeel toetsenbord",
+PageBreakLbl		: "Pagina-einde",
+PageBreak			: "Pagina-einde invoegen",
 
 Form			: "Formulier",
-Checkbox		: "Aanvink vakje",
-RadioButton		: "Selectie vakje",
+Checkbox		: "Aanvinkvakje",
+RadioButton		: "Selectievakje",
 TextField		: "Tekstveld",
-Textarea		: "Tekstveld (groot)",
+Textarea		: "Tekstvak",
 HiddenField		: "Verborgen veld",
 Button			: "Knop",
 SelectionField	: "Selectieveld",
-ImageButton		: "Grafische knop",
+ImageButton		: "Afbeeldingsknop",
+
+FitWindow		: "De editor maximaliseren",
 
 // Context Menu
 EditLink			: "Link wijzigen",
+CellCM				: "Cel",
+RowCM				: "Rij",
+ColumnCM			: "Kolom",
 InsertRow			: "Rij invoegen",
 DeleteRows			: "Rijen verwijderen",
 InsertColumn		: "Kolom invoegen",
@@ -106,6 +114,7 @@
 DeleteCells			: "Cellen verwijderen",
 MergeCells			: "Cellen samenvoegen",
 SplitCell			: "Cellen splitsen",
+TableDelete			: "Tabel verwijderen",
 CellProperties		: "Eigenschappen cel",
 TableProperties		: "Eigenschappen tabel",
 ImageProperties		: "Eigenschappen afbeelding",
@@ -113,27 +122,29 @@
 
 AnchorProp			: "Eigenschappen interne link",
 ButtonProp			: "Eigenschappen knop",
-CheckboxProp		: "Eigenschappen aanvink vakje",
+CheckboxProp		: "Eigenschappen aanvinkvakje",
 HiddenFieldProp		: "Eigenschappen verborgen veld",
-RadioButtonProp		: "Eigenschappen selectie vakje",
-ImageButtonProp		: "Eigenschappen grafische knop",
+RadioButtonProp		: "Eigenschappen selectievakje",
+ImageButtonProp		: "Eigenschappen afbeeldingsknop",
 TextFieldProp		: "Eigenschappen tekstveld",
 SelectionFieldProp	: "Eigenschappen selectieveld",
-TextareaProp		: "Eigenschappen tekstveld (groot)",
+TextareaProp		: "Eigenschappen tekstvak",
 FormProp			: "Eigenschappen formulier",
 
-FontFormats			: "Normaal;Met opmaak;Adres;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6",
+FontFormats			: "Normaal;Met opmaak;Adres;Kop 1;Kop 2;Kop 3;Kop 4;Kop 5;Kop 6",
 
 // Alerts and Messages
 ProcessingXHTML		: "Verwerken XHTML. Even geduld aub...",
 Done				: "Klaar",
-PasteWordConfirm	: "De tekst die je plakt lijkt gekopiëerd uit Word. Wil je de tekst opschonen voordat er geplakt wordt?",
-NotCompatiblePaste	: "Deze opdracht is beschikbaar voor Internet Explorer versie 5.5 of hoger. Wil je plakken zonder opschonen?",
-UnknownToolbarItem	: "Onbekende item op menubalk \"%1\"",
-UnknownCommand		: "Onbekende opdracht naam \"%1\"",
+PasteWordConfirm	: "De tekst die je plakte lijkt gekopieerd uit te zijn Word. Wil je de tekst opschonen voordat deze geplakt wordt?",
+NotCompatiblePaste	: "Deze opdracht is beschikbaar voor Internet Explorer versie 5.5 of hoger. Wil je plakken zonder op te schonen?",
+UnknownToolbarItem	: "Onbekend item op menubalk \"%1\"",
+UnknownCommand		: "Onbekende opdrachtnaam: \"%1\"",
 NotImplemented		: "Opdracht niet geïmplementeerd.",
 UnknownToolbarSet	: "Menubalk \"%1\" bestaat niet.",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "De beveilingsinstellingen van je browser zouden sommige functies van de editor kunnen beperken. De optie \"Activeer ActiveX-elementen en plug-ins\" dient ingeschakeld te worden. Het kan zijn dat er nu functies ontbreken of niet werken.",
+BrowseServerBlocked : "De bestandsbrowser kon niet geopend worden. Zorg ervoor dat pop-up-blokkeerders uit staan.",
+DialogBlocked		: "Kan het dialoogvenster niet weergeven. Zorg ervoor dat pop-up-blokkeerders uit staan.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -141,25 +152,25 @@
 DlgBtnClose			: "Afsluiten",
 DlgBtnBrowseServer	: "Bladeren op server",
 DlgAdvancedTag		: "Geavanceerd",
-DlgOpOther			: "&lt;Anders&gt;",
+DlgOpOther			: "<Anders>",
 DlgInfoTab			: "Informatie",
 DlgAlertUrl			: "Geef URL op",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;niet ingevuld&gt;",
+DlgGenNotSet		: "<niet ingevuld>",
 DlgGenId			: "Kenmerk",
-DlgGenLangDir		: "Richting taal",
-DlgGenLangDirLtr	: "Links naar Rechts (LTR)",
-DlgGenLangDirRtl	: "Rechts naar Links (RTL)",
-DlgGenLangCode		: "Code taal",
-DlgGenAccessKey		: "Toegangs toets",
+DlgGenLangDir		: "Schrijfrichting",
+DlgGenLangDirLtr	: "Links naar rechts (LTR)",
+DlgGenLangDirRtl	: "Rechts naar links (RTL)",
+DlgGenLangCode		: "Codetaal",
+DlgGenAccessKey		: "Toegangstoets",
 DlgGenName			: "Naam",
-DlgGenTabIndex		: "Tab Index",
-DlgGenLongDescr		: "Lange omschrijving URL",
-DlgGenClass			: "Stylesheet Klassen",
-DlgGenTitle			: "Advisory titel",
-DlgGenContType		: "Advisory Content type",
-DlgGenLinkCharset	: "Gelinkte bron karakterset",
+DlgGenTabIndex		: "Tabvolgorde",
+DlgGenLongDescr		: "Lange URL-omschrijving",
+DlgGenClass			: "Stylesheet-klassen",
+DlgGenTitle			: "Aanbevolen titel",
+DlgGenContType		: "Aanbevolen content-type",
+DlgGenLinkCharset	: "Karakterset van gelinkte bron",
 DlgGenStyle			: "Stijl",
 
 // Image Dialog
@@ -178,63 +189,63 @@
 DlgImgVSpace		: "VSpace",
 DlgImgAlign			: "Uitlijning",
 DlgImgAlignLeft		: "Links",
-DlgImgAlignAbsBottom: "Abs beneden",
-DlgImgAlignAbsMiddle: "Abs midden",
+DlgImgAlignAbsBottom: "Absoluut-onder",
+DlgImgAlignAbsMiddle: "Absoluut-midden",
 DlgImgAlignBaseline	: "Basislijn",
 DlgImgAlignBottom	: "Beneden",
 DlgImgAlignMiddle	: "Midden",
 DlgImgAlignRight	: "Rechts",
-DlgImgAlignTextTop	: "Tekst boven",
+DlgImgAlignTextTop	: "Boven tekst",
 DlgImgAlignTop		: "Boven",
 DlgImgPreview		: "Voorbeeld",
-DlgImgAlertUrl		: "Geeft de URL van de afbeelding",
+DlgImgAlertUrl		: "Geef de URL van de afbeelding",
 DlgImgLinkTab		: "Link",
 
 // Flash Dialog
 DlgFlashTitle		: "Eigenschappen Flash",
 DlgFlashChkPlay		: "Automatisch afspelen",
 DlgFlashChkLoop		: "Herhalen",
-DlgFlashChkMenu		: "Flaschmenu\'s inschakelen",
-DlgFlashScale		: "Verschalen",
+DlgFlashChkMenu		: "Flashmenu\'s inschakelen",
+DlgFlashScale		: "Schaal",
 DlgFlashScaleAll	: "Alles tonen",
 DlgFlashScaleNoBorder	: "Geen rand",
-DlgFlashScaleFit	: "Precies passen",
+DlgFlashScaleFit	: "Precies passend",
 
 // Link Dialog
 DlgLnkWindowTitle	: "Link",
-DlgLnkInfoTab		: "Informatie link",
+DlgLnkInfoTab		: "Linkomschrijving",
 DlgLnkTargetTab		: "Doel",
 
-DlgLnkType			: "Type link",
+DlgLnkType			: "Linktype",
 DlgLnkTypeURL		: "URL",
 DlgLnkTypeAnchor	: "Interne link in pagina",
-DlgLnkTypeEMail		: "E-Mail",
+DlgLnkTypeEMail		: "E-mail",
 DlgLnkProto			: "Protocol",
-DlgLnkProtoOther	: "&lt;anders&gt;",
+DlgLnkProtoOther	: "<anders>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Kies een interne link",
 DlgLnkAnchorByName	: "Op naam interne link",
 DlgLnkAnchorById	: "Op kenmerk interne link",
-DlgLnkNoAnchors		: "&lt;Geen interne links in document gevonden.&gt;",
-DlgLnkEMail			: "E-Mail adres",
+DlgLnkNoAnchors		: "<Geen interne links in document gevonden.>",
+DlgLnkEMail			: "E-mailadres",
 DlgLnkEMailSubject	: "Onderwerp bericht",
 DlgLnkEMailBody		: "Inhoud bericht",
 DlgLnkUpload		: "Upload",
-DlgLnkBtnUpload		: "Naar de server versturen.",
+DlgLnkBtnUpload		: "Naar de server versturen",
 
 DlgLnkTarget		: "Doel",
-DlgLnkTargetFrame	: "&lt;frame&gt;",
-DlgLnkTargetPopup	: "&lt;popup window&gt;",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<popup window>",
 DlgLnkTargetBlank	: "Nieuw venster (_blank)",
-DlgLnkTargetParent	: "Ouder venster (_parent)",
+DlgLnkTargetParent	: "Origineel venster (_parent)",
 DlgLnkTargetSelf	: "Zelfde venster (_self)",
-DlgLnkTargetTop		: "Browser venster (_top)",
+DlgLnkTargetTop		: "Hele venster (_top)",
 DlgLnkTargetFrameName	: "Naam doelframe",
-DlgLnkPopWinName	: "Naam popup venster",
-DlgLnkPopWinFeat	: "Instellingen popup venster",
+DlgLnkPopWinName	: "Naam popupvenster",
+DlgLnkPopWinFeat	: "Instellingen popupvenster",
 DlgLnkPopResize		: "Grootte wijzigen",
-DlgLnkPopLocation	: "Locatie menu",
-DlgLnkPopMenu		: "Menu balk",
+DlgLnkPopLocation	: "Locatiemenu",
+DlgLnkPopMenu		: "Menubalk",
 DlgLnkPopScroll		: "Schuifbalken",
 DlgLnkPopStatus		: "Statusbalk",
 DlgLnkPopToolbar	: "Menubalk",
@@ -243,10 +254,10 @@
 DlgLnkPopWidth		: "Breedte",
 DlgLnkPopHeight		: "Hoogte",
 DlgLnkPopLeft		: "Positie links",
-DlgLnkPopTop		: "Positie top",
+DlgLnkPopTop		: "Positie boven",
 
-DlnLnkMsgNoUrl		: "Geeft de link van de URL",
-DlnLnkMsgNoEMail	: "Geef een e-mail adres",
+DlnLnkMsgNoUrl		: "Geef de link van de URL",
+DlnLnkMsgNoEMail	: "Geef een e-mailadres",
 DlnLnkMsgNoAnchor	: "Selecteer een interne link",
 
 // Color Dialog
@@ -256,10 +267,10 @@
 DlgColorSelected	: "Geselecteerd",
 
 // Smiley Dialog
-DlgSmileyTitle		: "Invoegen smiley",
+DlgSmileyTitle		: "Smiley invoegen",
 
 // Special Character Dialog
-DlgSpecialCharTitle	: "Selecteer speciaal karakter",
+DlgSpecialCharTitle	: "Selecteer speciaal teken",
 
 // Table Dialog
 DlgTableTitle		: "Eigenschappen tabel",
@@ -267,7 +278,7 @@
 DlgTableColumns		: "Kolommen",
 DlgTableBorder		: "Breedte rand",
 DlgTableAlign		: "Uitlijning",
-DlgTableAlignNotSet	: "<Niet ingegven>",
+DlgTableAlignNotSet	: "<Niet ingevoerd>",
 DlgTableAlignLeft	: "Links",
 DlgTableAlignCenter	: "Centreren",
 DlgTableAlignRight	: "Rechts",
@@ -278,6 +289,7 @@
 DlgTableCellSpace	: "Afstand tussen cellen",
 DlgTableCellPad		: "Afstand vanaf rand cel",
 DlgTableCaption		: "Naam",
+DlgTableSummary		: "Samenvatting",
 
 // Table Cell Dialog
 DlgCellTitle		: "Eigenschappen cel",
@@ -286,29 +298,29 @@
 DlgCellWidthPc		: "procent",
 DlgCellHeight		: "Hoogte",
 DlgCellWordWrap		: "Afbreken woorden",
-DlgCellWordWrapNotSet	: "<Niet ingegeven>",
+DlgCellWordWrapNotSet	: "<Niet ingevoerd>",
 DlgCellWordWrapYes	: "Ja",
 DlgCellWordWrapNo	: "Nee",
 DlgCellHorAlign		: "Horizontale uitlijning",
-DlgCellHorAlignNotSet	: "<Niet ingegeven>",
+DlgCellHorAlignNotSet	: "<Niet ingevoerd>",
 DlgCellHorAlignLeft	: "Links",
 DlgCellHorAlignCenter	: "Centreren",
 DlgCellHorAlignRight: "Rechts",
 DlgCellVerAlign		: "Verticale uitlijning",
-DlgCellVerAlignNotSet	: "<Niet ingegeven>",
+DlgCellVerAlignNotSet	: "<Niet ingevoerd>",
 DlgCellVerAlignTop	: "Boven",
 DlgCellVerAlignMiddle	: "Midden",
 DlgCellVerAlignBottom	: "Beneden",
 DlgCellVerAlignBaseline	: "Basislijn",
 DlgCellRowSpan		: "Overkoepeling rijen",
 DlgCellCollSpan		: "Overkoepeling kolommen",
-DlgCellBackColor	: "Kleur achterrond",
-DlgCellBorderColor	: "Kleur rand",
+DlgCellBackColor	: "Achtergrondkleur",
+DlgCellBorderColor	: "Randkleur",
 DlgCellBtnSelect	: "Selecteren...",
 
 // Find Dialog
-DlgFindTitle		: "Vinden",
-DlgFindFindBtn		: "Vinden",
+DlgFindTitle		: "Zoeken",
+DlgFindFindBtn		: "Zoeken",
 DlgFindNotFoundMsg	: "De opgegeven tekst is niet gevonden.",
 
 // Replace Dialog
@@ -321,18 +333,17 @@
 DlgReplaceWordChk		: "Hele woord moet voorkomen",
 
 // Paste Operations / Dialog
-PasteErrorPaste	: "De beveiligingsinstelling van de browser verhinderen het automatisch plakken. Gebruik Ctrl+V op het toetsenbord.",
-PasteErrorCut	: "De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik Ctrl+X op het toetsenbord.",
-PasteErrorCopy	: "De beveiligingsinstelling van de browser verhinderen het automatisch kopieëren. Gebruik Ctrl+C op het toetsenbord.",
+PasteErrorPaste	: "De beveiligingsinstelling van de browser verhinderen het automatisch plakken. Gebruik de sneltoets Ctrl+V van het toetsenbord.",
+PasteErrorCut	: "De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl+X van het toetsenbord.",
+PasteErrorCopy	: "De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl+C van het toetsenbord.",
 
 PasteAsText		: "Plakken als platte tekst",
-PasteFromWord	: "Plakken van Word-gegevens",
-
-DlgPasteMsg2	: "Plak de tekst in de volgende box gebruikmakend van je toetstenbord (<STRONG>Ctrl+V</STRONG>) en kies <STRONG>OK</STRONG>.",
-DlgPasteIgnoreFont		: "Negeer Font Face definities",
-DlgPasteRemoveStyles	: "Verwijder Styles definities",
-DlgPasteCleanBox		: "Box opschonen",
+PasteFromWord	: "Plakken als Word-gegevens",
 
+DlgPasteMsg2	: "Plak de tekst in het volgende vak gebruik makend van je toetstenbord (<STRONG>Ctrl+V</STRONG>) en klik op <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Negeer \"Font Face\"-definities",
+DlgPasteRemoveStyles	: "Verwijder \"Style\"-definities",
+DlgPasteCleanBox		: "Vak opschonen",
 
 // Color Picker
 ColorAutomatic	: "Automatisch",
@@ -356,12 +367,12 @@
 DlgSpellBtnUndo			: "Ongedaan maken",
 DlgSpellNoSuggestions	: "-Geen suggesties-",
 DlgSpellProgress		: "Bezig met spellingscontrole...",
-DlgSpellNoMispell		: "Klaar met spellingscontrole: Geen fouten gevonden",
-DlgSpellNoChanges		: "Klaar met spellingscontrole: Geen woorden aangepast",
-DlgSpellOneChange		: "Klaar met spellingscontrole: 1 woord aangepast",
+DlgSpellNoMispell		: "Klaar met spellingscontrole: geen fouten gevonden",
+DlgSpellNoChanges		: "Klaar met spellingscontrole: geen woorden aangepast",
+DlgSpellOneChange		: "Klaar met spellingscontrole: één woord aangepast",
 DlgSpellManyChanges		: "Klaar met spellingscontrole: %1 woorden aangepast",
 
-IeSpellDownload			: "Spellingscontrole niet geïnstalleerd. Wil je deze nu downloaden?",
+IeSpellDownload			: "De spellingscontrole niet geïnstalleerd. Wil je deze nu downloaden?",
 
 // Button Dialog
 DlgButtonText	: "Tekst (waarde)",
@@ -401,8 +412,8 @@
 // Text Field Dialog
 DlgTextName			: "Naam",
 DlgTextValue		: "Waarde",
-DlgTextCharWidth	: "Breedte karakter",
-DlgTextMaxChars		: "Maximum aantal karakters",
+DlgTextCharWidth	: "Breedte (tekens)",
+DlgTextMaxChars		: "Maximum aantal tekens",
 DlgTextType			: "Soort",
 DlgTextTypeText		: "Tekst",
 DlgTextTypePass		: "Wachtwoord",
@@ -416,44 +427,44 @@
 NumberedListProp	: "Eigenschappen genummerde opsommingslijst",
 DlgLstType			: "Soort",
 DlgLstTypeCircle	: "Cirkel",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Schijf",
 DlgLstTypeSquare	: "Vierkant",
-DlgLstTypeNumbers	: "Nummerks (1, 2, 3)",
+DlgLstTypeNumbers	: "Nummers (1, 2, 3)",
 DlgLstTypeLCase		: "Kleine letters (a, b, c)",
 DlgLstTypeUCase		: "Hoofdletters (A, B, C)",
-DlgLstTypeSRoman	: "Klein romeins (i, ii, iii)",
-DlgLstTypeLRoman	: "Groot romeins (I, II, III)",
+DlgLstTypeSRoman	: "Klein Romeins (i, ii, iii)",
+DlgLstTypeLRoman	: "Groot Romeins (I, II, III)",
 
 // Document Properties Dialog
 DlgDocGeneralTab	: "Algemeen",
 DlgDocBackTab		: "Achtergrond",
 DlgDocColorsTab		: "Kleuring en marges",
-DlgDocMetaTab		: "Meta data",
+DlgDocMetaTab		: "META-data",
 
-DlgDocPageTitle		: "Titel pagina",
-DlgDocLangDir		: "Richting taal",
+DlgDocPageTitle		: "Paginatitel",
+DlgDocLangDir		: "Schrijfrichting",
 DlgDocLangDirLTR	: "Links naar rechts",
 DlgDocLangDirRTL	: "Rechts naar links",
 DlgDocLangCode		: "Taalcode",
 DlgDocCharSet		: "Karakterset-encoding",
 DlgDocCharSetOther	: "Andere karakterset-encoding",
 
-DlgDocDocType		: "Opschrift document soort",
-DlgDocDocTypeOther	: "Ander opschrift document soort",
-DlgDocIncXHTML		: "XHTML declaraties meenemen",
-DlgDocBgColor		: "Achtergrond kleur",
+DlgDocDocType		: "Opschrift documentsoort",
+DlgDocDocTypeOther	: "Ander opschrift documentsoort",
+DlgDocIncXHTML		: "XHTML-declaraties meenemen",
+DlgDocBgColor		: "Achtergrondkleur",
 DlgDocBgImage		: "URL achtergrondplaatje",
-DlgDocBgNoScroll	: "Gefixeerde achtergrond",
+DlgDocBgNoScroll	: "Vaste achtergrond",
 DlgDocCText			: "Tekst",
 DlgDocCLink			: "Link",
 DlgDocCVisited		: "Bezochte link",
 DlgDocCActive		: "Active link",
 DlgDocMargins		: "Afstandsinstellingen document",
-DlgDocMaTop			: "Top",
+DlgDocMaTop			: "Boven",
 DlgDocMaLeft		: "Links",
 DlgDocMaRight		: "Rechts",
-DlgDocMaBottom		: "Bodem",
-DlgDocMeIndex		: "Trefwoorden betreffende document (komma gescheiden)",
+DlgDocMaBottom		: "Onder",
+DlgDocMeIndex		: "Trefwoorden betreffende document (kommagescheiden)",
 DlgDocMeDescr		: "Beschrijving document",
 DlgDocMeAuthor		: "Auteur",
 DlgDocMeCopy		: "Copyright",
@@ -462,14 +473,15 @@
 // Templates Dialog
 Templates			: "Sjablonen",
 DlgTemplatesTitle	: "Inhoud sjabonen",
-DlgTemplatesSelMsg	: "Selecteer een sjabloon die in de editor geopend moet worden. (De actuele inhoud gaat verloren.):",
-DlgTemplatesLoading	: "Bezig met laden sjabonen. Even geduld aub...",
-DlgTemplatesNoTpl	: "(Geen sjablonen gedefiniëerd)",
+DlgTemplatesSelMsg	: "Selecteer het sjabloon dat in de editor geopend moet worden (de actuele inhoud gaat verloren):",
+DlgTemplatesLoading	: "Bezig met laden sjabonen. Even geduld alstublieft...",
+DlgTemplatesNoTpl	: "(Geen sjablonen gedefinieerd)",
 
 // About Dialog
 DlgAboutAboutTab	: "Over",
-DlgAboutBrowserInfoTab	: "Browser informatie",
+DlgAboutBrowserInfoTab	: "Browserinformatie",
+DlgAboutLicenseTab	: "Licentie",
 DlgAboutVersion		: "Versie",
-DlgAboutLicense		: "Gelicenceerd onder de condities van de GNU Lesser General Public License",
+DlgAboutLicense		: "Gelicenceerd onder de condities van het GNU Lesser General Public License",
 DlgAboutInfo		: "Voor meer informatie ga naar "
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/no.js 1.4.1.src/fckeditor/editor/lang/no.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/no.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/no.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -14,7 +14,7 @@
  * 	Norwegian language file.
  * 
  * File Authors:
- * 		Martin Kronstad (www.siteman.no) (martin.kronstad@broadpark.no)
+ * 		Martin Kronstad (www.siteman.no) (martin.kronstad@gmail.com)
  */
 
 var FCKLang =
@@ -85,6 +85,8 @@
 Replace				: "Erstatt",
 SpellCheck			: "Stavekontroll",
 UniversalKeyboard	: "Universelt tastatur",
+PageBreakLbl		: "Sideskift",
+PageBreak			: "Sett inn sideskift",
 
 Form			: "Skjema",
 Checkbox		: "Sjekkboks",
@@ -96,8 +98,13 @@
 SelectionField	: "Dropdown meny",
 ImageButton		: "Bildeknapp",
 
+FitWindow		: "Maksimer størrelsen på redigeringsverktøyet",
+
 // Context Menu
 EditLink			: "Rediger lenke",
+CellCM				: "Celle",
+RowCM				: "Rader",
+ColumnCM			: "Kolonne",
 InsertRow			: "Sett inn rad",
 DeleteRows			: "Slett rader",
 InsertColumn		: "Sett inn kolonne",
@@ -106,6 +113,7 @@
 DeleteCells			: "Slett celler",
 MergeCells			: "Slå sammen celler",
 SplitCell			: "Splitt celler",
+TableDelete			: "Slett tabell",
 CellProperties		: "Celleegenskaper",
 TableProperties		: "Tabellegenskaper",
 ImageProperties		: "Bildeegenskaper",
@@ -133,7 +141,9 @@
 UnknownCommand		: "Ukjent kommando \"%1\"",
 NotImplemented		: "Kommando ikke ennå implimentert",
 UnknownToolbarSet	: "Verktøylinjesett \"%1\" finnes ikke",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Din nettleser's sikkerhetsinstillinger kan begrense noen av funksjonene i redigeringsverktøyet. Du må aktivere \"Kjør ActiveXkontroller og plugins\". Du kan oppleve feil og advarsler om manglende funksjoner",
+BrowseServerBlocked : "Kunne ikke åpne dialogboksen for filarkiv. Pass på at du har slått av popupstoppere.",
+DialogBlocked		: "Kunne ikke åpne dialogboksen. Pass på at du har slått av popupstoppere.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -141,12 +151,12 @@
 DlgBtnClose			: "Lukk",
 DlgBtnBrowseServer	: "Bla igjennom server",
 DlgAdvancedTag		: "Avansert",
-DlgOpOther			: "&lt;Annet&gt;",
+DlgOpOther			: "<Annet>",
 DlgInfoTab			: "Info",
 DlgAlertUrl			: "Vennligst skriv inn URL'en",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;ikke satt&gt;",
+DlgGenNotSet		: "<ikke satt>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Språkretning",
 DlgGenLangDirLtr	: "Venstre til høyre (VTH)",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Bokmerk denne siden",
 DlgLnkTypeEMail		: "E-Post",
 DlgLnkProto			: "Protokoll",
-DlgLnkProtoOther	: "&lt;annet&gt;",
+DlgLnkProtoOther	: "<annet>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Velg ett anker",
 DlgLnkAnchorByName	: "Anker etter navn",
 DlgLnkAnchorById	: "Element etter ID",
-DlgLnkNoAnchors		: "&lt;Ingen anker i dokumentet&gt;",
+DlgLnkNoAnchors		: "<Ingen anker i dokumentet>",
 DlgLnkEMail			: "E-Post Addresse",
 DlgLnkEMailSubject	: "Meldingsemne",
 DlgLnkEMailBody		: "Melding",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Send til server",
 
 DlgLnkTarget		: "Mål",
-DlgLnkTargetFrame	: "&lt;ramme&gt;",
-DlgLnkTargetPopup	: "&lt;popup vindu&gt;",
+DlgLnkTargetFrame	: "<ramme>",
+DlgLnkTargetPopup	: "<popup vindu>",
 DlgLnkTargetBlank	: "Nytt vindu (_blank)",
 DlgLnkTargetParent	: "Foreldre vindu (_parent)",
 DlgLnkTargetSelf	: "Samme vindu (_self)",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "Celle marg",
 DlgTableCellPad		: "Celle polstring",
 DlgTableCaption		: "Tittel",
+DlgTableSummary		: "Sammendrag",
 
 // Table Cell Dialog
 DlgCellTitle		: "Celle egenskaper",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Fjern stildefinisjoner",
 DlgPasteCleanBox		: "Tøm boksen",
 
-
 // Color Picker
 ColorAutomatic	: "Automatisk",
 ColorMoreColors	: "Flere farger...",
@@ -416,7 +426,7 @@
 NumberedListProp	: "Ordnet listeegenskaper",
 DlgLstType			: "Type",
 DlgLstTypeCircle	: "Sirkel",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Hel sirkel",
 DlgLstTypeSquare	: "Firkant",
 DlgLstTypeNumbers	: "Numre(1, 2, 3)",
 DlgLstTypeLCase		: "Små bokstaver (a, b, c)",
@@ -469,7 +479,8 @@
 // About Dialog
 DlgAboutAboutTab	: "Om",
 DlgAboutBrowserInfoTab	: "Nettleserinfo",
+DlgAboutLicenseTab	: "Lisens",
 DlgAboutVersion		: "versjon",
 DlgAboutLicense		: "Lisensiert under GNU Lesser General Public License",
-DlgAboutInfo		: "Oversatt av Siteman DA<br /><a target=\"_blank\" href=\"http://www.siteman.no\">www.siteman.no</a><br /><br />For mer informasjon gå til"
+DlgAboutInfo		: "Oversatt av Siteman AS<br /><a target=\"_blank\" href=\"http://www.siteman.no\">www.siteman.no</a><br /><br />For mer informasjon gå til"
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/pl.js 1.4.1.src/fckeditor/editor/lang/pl.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/pl.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/pl.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -44,8 +44,8 @@
 Anchor				: "Wstaw/edytuj kotwicę",
 InsertImageLbl		: "Obrazek",
 InsertImage			: "Wstaw/edytuj obrazek",
-InsertFlashLbl		: "Flash",	//MISSING
-InsertFlash			: "Insert/Edit Flash",	//MISSING
+InsertFlashLbl		: "Flash",
+InsertFlash			: "Dodaj/Edytuj element Flash",
 InsertTableLbl		: "Tabela",
 InsertTable			: "Wstaw/edytuj tabelę",
 InsertLineLbl		: "Linia pozioma",
@@ -86,6 +86,8 @@
 Replace				: "Zamień",
 SpellCheck			: "Sprawdź pisownię",
 UniversalKeyboard	: "Klawiatura Uniwersalna",
+PageBreakLbl		: "Odstęp",
+PageBreak			: "Wstaw odstęp",
 
 Form			: "Formularz",
 Checkbox		: "Checkbox",
@@ -97,8 +99,13 @@
 SelectionField	: "Lista wyboru",
 ImageButton		: "Przycisk obrazek",
 
+FitWindow		: "Maksymalizuj rozmiar edytora",
+
 // Context Menu
 EditLink			: "Edytuj hiperłącze",
+CellCM				: "Komórka",
+RowCM				: "Wiersz",
+ColumnCM			: "Kolumna",
 InsertRow			: "Wstaw wiersz",
 DeleteRows			: "Usuń wiersze",
 InsertColumn		: "Wstaw kolumnę",
@@ -107,10 +114,11 @@
 DeleteCells			: "Usuń komórki",
 MergeCells			: "Połącz komórki",
 SplitCell			: "Podziel komórkę",
+TableDelete			: "Usuń tabelę",
 CellProperties		: "Właściwości komórki",
 TableProperties		: "Właściwości tabeli",
 ImageProperties		: "Właściwości obrazka",
-FlashProperties		: "Flash Properties",	//MISSING
+FlashProperties		: "Właściwości elementu Flash",
 
 AnchorProp			: "Właściwości kotwicy",
 ButtonProp			: "Właściwości przycisku",
@@ -134,7 +142,9 @@
 UnknownCommand		: "Nieznana komenda \"%1\"",
 NotImplemented		: "Komenda niezaimplementowana",
 UnknownToolbarSet	: "Pasek narzędzi \"%1\" nie istnieje",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Ustawienia zabezpieczeń twojej przeglądarki mogą ograniczyć niektóre funkcje edytora. Musisz włączyć opcję \"Uruchamianie formantów Activex i dodatków plugin\". W przeciwnym wypadku mogą pojawiać się błędy.",
+BrowseServerBlocked : "Okno menadżera plików nie może zostać otwarte. Upewnij się, że wszystkie blokady popup są wyłączone.",
+DialogBlocked		: "Nie można otworzyć okna dialogowego. Upewnij się, że wszystkie blokady popup są wyłączone.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -142,12 +152,12 @@
 DlgBtnClose			: "Zamknij",
 DlgBtnBrowseServer	: "Przeglądaj",
 DlgAdvancedTag		: "Zaawansowane",
-DlgOpOther			: "&lt;Inny&gt;",
-DlgInfoTab			: "Info",	//MISSING
-DlgAlertUrl			: "Please insert the URL",	//MISSING
+DlgOpOther			: "<Inny>",
+DlgInfoTab			: "Informacje",
+DlgAlertUrl			: "Proszę podać URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;nieustawione&gt;",
+DlgGenNotSet		: "<nieustawione>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Kierunek tekstu",
 DlgGenLangDirLtr	: "Od lewej do prawej (LTR)",
@@ -189,17 +199,17 @@
 DlgImgAlignTop		: "Do góry",
 DlgImgPreview		: "Podgląd",
 DlgImgAlertUrl		: "Podaj adres obrazka.",
-DlgImgLinkTab		: "Link",	//MISSING
+DlgImgLinkTab		: "Link",
 
 // Flash Dialog
-DlgFlashTitle		: "Flash Properties",	//MISSING
-DlgFlashChkPlay		: "Auto Play",	//MISSING
-DlgFlashChkLoop		: "Loop",	//MISSING
-DlgFlashChkMenu		: "Enable Flash Menu",	//MISSING
-DlgFlashScale		: "Scale",	//MISSING
-DlgFlashScaleAll	: "Show all",	//MISSING
-DlgFlashScaleNoBorder	: "No Border",	//MISSING
-DlgFlashScaleFit	: "Exact Fit",	//MISSING
+DlgFlashTitle		: "Właściwości elementu Flash",
+DlgFlashChkPlay		: "Auto Odtwarzanie",
+DlgFlashChkLoop		: "Pętla",
+DlgFlashChkMenu		: "Włącz menu",
+DlgFlashScale		: "Skaluj",
+DlgFlashScaleAll	: "Pokaż wszystko",
+DlgFlashScaleNoBorder	: "Bez Ramki",
+DlgFlashScaleFit	: "Dokładne dopasowanie",
 
 // Link Dialog
 DlgLnkWindowTitle	: "Hiperłącze",
@@ -211,12 +221,12 @@
 DlgLnkTypeAnchor	: "Odnośnik wewnątrz strony",
 DlgLnkTypeEMail		: "Adres e-mail",
 DlgLnkProto			: "Protokół",
-DlgLnkProtoOther	: "&lt;inny&gt;",
+DlgLnkProtoOther	: "<inny>",
 DlgLnkURL			: "Adres URL",
 DlgLnkAnchorSel		: "Wybierz etykietę",
 DlgLnkAnchorByName	: "Wg etykiety",
 DlgLnkAnchorById	: "Wg identyfikatora elementu",
-DlgLnkNoAnchors		: "&lt;W dokumencie nie zdefiniowano żadnych etykiet&gt;",
+DlgLnkNoAnchors		: "<W dokumencie nie zdefiniowano żadnych etykiet>",
 DlgLnkEMail			: "Adres e-mail",
 DlgLnkEMailSubject	: "Temat",
 DlgLnkEMailBody		: "Treść",
@@ -224,8 +234,8 @@
 DlgLnkBtnUpload		: "Wyślij",
 
 DlgLnkTarget		: "Cel",
-DlgLnkTargetFrame	: "&lt;ramka&gt;",
-DlgLnkTargetPopup	: "&lt;wyskakujące okno&gt;",
+DlgLnkTargetFrame	: "<ramka>",
+DlgLnkTargetPopup	: "<wyskakujące okno>",
 DlgLnkTargetBlank	: "Nowe okno (_blank)",
 DlgLnkTargetParent	: "Okno nadrzędne (_parent)",
 DlgLnkTargetSelf	: "To samo okno (_self)",
@@ -279,6 +289,7 @@
 DlgTableCellSpace	: "Odstęp pomiędzy komórkami",
 DlgTableCellPad		: "Margines wewnętrzny komórek",
 DlgTableCaption		: "Tytuł",
+DlgTableSummary		: "Podsumowanie",
 
 // Table Cell Dialog
 DlgCellTitle		: "Właściwości komórki",
@@ -329,11 +340,10 @@
 PasteAsText		: "Wklej jako czysty tekst",
 PasteFromWord	: "Wklej z Worda",
 
-DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",	//MISSING
-DlgPasteIgnoreFont		: "Ignore Font Face definitions",	//MISSING
-DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
-DlgPasteCleanBox		: "Clean Up Box",	//MISSING
-
+DlgPasteMsg2	: "Proszę wkleić w poniższym polu używając klawiaturowego skrótu (<STRONG>Ctrl+V</STRONG>) i kliknąć <STRONG>OK</STRONG>.",
+DlgPasteIgnoreFont		: "Ignoruj definicje 'Font Face'",
+DlgPasteRemoveStyles	: "Usuń definicje Stylów",
+DlgPasteCleanBox		: "Wyczyść",
 
 // Color Picker
 ColorAutomatic	: "Automatycznie",
@@ -417,7 +427,7 @@
 NumberedListProp	: "Właściwości listy numerowanej",
 DlgLstType			: "Typ",
 DlgLstTypeCircle	: "Koło",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Dysk",
 DlgLstTypeSquare	: "Kwadrat",
 DlgLstTypeNumbers	: "Cyfry (1, 2, 3)",
 DlgLstTypeLCase		: "Małe litery (a, b, c)",
@@ -461,15 +471,16 @@
 DlgDocPreview		: "Podgląd",
 
 // Templates Dialog
-Templates			: "Templates",	//MISSING
-DlgTemplatesTitle	: "Content Templates",	//MISSING
-DlgTemplatesSelMsg	: "Please select the template to open in the editor<br>(the actual contents will be lost):",	//MISSING
-DlgTemplatesLoading	: "Loading templates list. Please wait...",	//MISSING
-DlgTemplatesNoTpl	: "(No templates defined)",	//MISSING
+Templates			: "Sablony",
+DlgTemplatesTitle	: "Szablony zawartości",
+DlgTemplatesSelMsg	: "Wybierz szablon do otwarcia w edytorze<br>(obecna zawartość okna edytora zostanie utracona):",
+DlgTemplatesLoading	: "Ładowanie listy szablonów. Proszę czekać...",
+DlgTemplatesNoTpl	: "(Brak zdefiniowanych szablonów)",
 
 // About Dialog
 DlgAboutAboutTab	: "O ...",
 DlgAboutBrowserInfoTab	: "O przeglądarce",
+DlgAboutLicenseTab	: "Licencja",
 DlgAboutVersion		: "wersja",
 DlgAboutLicense		: "na licencji GNU Lesser General Public License",
 DlgAboutInfo		: "Więcej informacji uzyskasz pod adresem"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/pt-br.js 1.4.1.src/fckeditor/editor/lang/pt-br.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/pt-br.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/pt-br.js	2006-09-03 13:05:04.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -15,7 +15,7 @@
  * 
  * File Authors:
  * 		Carlos Alberto Tomatis Loth (carlos.loth@conectait.com.br)
- * 		GibaPhp (www.xoopstotal.com.br)
+ * 		GibaPhp (http://www.xoopstotal.com.br)
  */
 
 var FCKLang =
@@ -86,6 +86,8 @@
 Replace				: "Substituir",
 SpellCheck			: "Verificar Ortografia",
 UniversalKeyboard	: "Teclado Universal",
+PageBreakLbl		: "Quebra de Página",
+PageBreak			: "Inserir Quebra de Página",
 
 Form			: "Formulário",
 Checkbox		: "Caixa de Seleção",
@@ -97,8 +99,13 @@
 SelectionField	: "Caixa de Listagem",
 ImageButton		: "Botão de Imagem",
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "Editar Hiperlink",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "Inserir Linha",
 DeleteRows			: "Remover Linhas",
 InsertColumn		: "Inserir Coluna",
@@ -107,6 +114,7 @@
 DeleteCells			: "Remover Células",
 MergeCells			: "Mesclar Células",
 SplitCell			: "Dividir Célular",
+TableDelete			: "Apagar Tabela",
 CellProperties		: "Formatar Célula",
 TableProperties		: "Formatar Tabela",
 ImageProperties		: "Formatar Figura",
@@ -134,7 +142,9 @@
 UnknownCommand		: "O comando \"%1\" não é reconhecido",
 NotImplemented		: "O comando não foi implementado",
 UnknownToolbarSet	: "A barra de ferramentas \"%1\" não existe",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "As configurações de segurança do seu browser podem limitar algumas características do editor. Você precisa habilitar a opção \"Executar controles e plug-ins ActiveX\". Você pode experimentar erros e alertas de características faltantes.",
+BrowseServerBlocked : "Os recursos do browser não puderam ser abertos. Tenha certeza que todos os bloqueadores de popup estão desabilitados.",
+DialogBlocked		: "Não foi possível abrir a janela de diálogo. Tenha certeza que todos os bloqueadores de popup estão desabilitados.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -142,12 +152,12 @@
 DlgBtnClose			: "Fechar",
 DlgBtnBrowseServer	: "Localizar no Servidor",
 DlgAdvancedTag		: "Avançado",
-DlgOpOther			: "&lt;Outros&gt;",
+DlgOpOther			: "<Outros>",
 DlgInfoTab			: "Info",
 DlgAlertUrl			: "Inserir a URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;não ajustado&gt;",
+DlgGenNotSet		: "<não ajustado>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Direção do idioma",
 DlgGenLangDirLtr	: "Esquerda para Direita (LTR)",
@@ -211,21 +221,21 @@
 DlgLnkTypeAnchor	: "Âncora nesta página",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Protocolo",
-DlgLnkProtoOther	: "&lt;outro&gt;",
+DlgLnkProtoOther	: "<outro>",
 DlgLnkURL			: "URL do hiperlink",
 DlgLnkAnchorSel		: "Selecione uma âncora",
 DlgLnkAnchorByName	: "Pelo Nome da âncora",
 DlgLnkAnchorById	: "Pelo Id do Elemento",
-DlgLnkNoAnchors		: "&lt;Não há âncoras disponíveis neste documento&gt;",
+DlgLnkNoAnchors		: "<Não há âncoras disponíveis neste documento>",
 DlgLnkEMail			: "Endereço E-Mail",
 DlgLnkEMailSubject	: "Assunto da Mensagem",
-DlgLnkEMailBody		: "Corpo da Mesagem",
+DlgLnkEMailBody		: "Corpo da Mensagem",
 DlgLnkUpload		: "Enviar ao Servidor",
 DlgLnkBtnUpload		: "Enviar ao Servidor",
 
 DlgLnkTarget		: "Destino",
-DlgLnkTargetFrame	: "&lt;quadro&gt;",
-DlgLnkTargetPopup	: "&lt;janela popup&gt;",
+DlgLnkTargetFrame	: "<quadro>",
+DlgLnkTargetPopup	: "<janela popup>",
 DlgLnkTargetBlank	: "Nova Janela (_blank)",
 DlgLnkTargetParent	: "Janela Pai (_parent)",
 DlgLnkTargetSelf	: "Mesma Janela (_self)",
@@ -279,6 +289,7 @@
 DlgTableCellSpace	: "Espaçamento",
 DlgTableCellPad		: "Enchimento",
 DlgTableCaption		: "Legenda",
+DlgTableSummary		: "Resumo",
 
 // Table Cell Dialog
 DlgCellTitle		: "Formatar célula",
@@ -322,9 +333,9 @@
 DlgReplaceWordChk		: "Coincidir a palavra inteira",
 
 // Paste Operations / Dialog
-PasteErrorPaste	: "As configurações de segurança do seu navegador não permitem que o editor excute operações de colar automaticamente. Por favor, utilize o teclado para colar (Ctrl+V).",
-PasteErrorCut	: "As configurações de segurança do seu navegador não permitem que o editor excute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl+X).",
-PasteErrorCopy	: "As configurações de segurança do seu navegador não permitem que o editor excute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl+C).",
+PasteErrorPaste	: "As configurações de segurança do seu navegador não permitem que o editor execute operações de colar automaticamente. Por favor, utilize o teclado para colar (Ctrl+V).",
+PasteErrorCut	: "As configurações de segurança do seu navegador não permitem que o editor execute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl+X).",
+PasteErrorCopy	: "As configurações de segurança do seu navegador não permitem que o editor execute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl+C).",
 
 PasteAsText		: "Colar como Texto sem Formatação",
 PasteFromWord	: "Colar do Word",
@@ -334,7 +345,6 @@
 DlgPasteRemoveStyles	: "Remove definições de estilo",
 DlgPasteCleanBox		: "Limpar Box",
 
-
 // Color Picker
 ColorAutomatic	: "Automático",
 ColorMoreColors	: "Mais Cores...",
@@ -417,7 +427,7 @@
 NumberedListProp	: "Formatar Numeração",
 DlgLstType			: "Tipo",
 DlgLstTypeCircle	: "Círculo",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Disco",
 DlgLstTypeSquare	: "Quadrado",
 DlgLstTypeNumbers	: "Números (1, 2, 3)",
 DlgLstTypeLCase		: "Letras Minúsculas (a, b, c)",
@@ -470,7 +480,8 @@
 // About Dialog
 DlgAboutAboutTab	: "Sobre",
 DlgAboutBrowserInfoTab	: "Informações do Navegador",
+DlgAboutLicenseTab	: "Licença",
 DlgAboutVersion		: "versão",
-DlgAboutLicense		: "Licenciado sobre os termos da GNU Lesser General Public License",
+DlgAboutLicense		: "Licenciado sob os termos da GNU Lesser General Public License",
 DlgAboutInfo		: "Para maiores informações visite"
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/pt.js 1.4.1.src/fckeditor/editor/lang/pt.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/pt.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/pt.js	2006-09-03 13:05:04.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -85,6 +85,8 @@
 Replace				: "Substituir",
 SpellCheck			: "Verificação Ortográfica",
 UniversalKeyboard	: "Teclado Universal",
+PageBreakLbl		: "Quebra de Página",
+PageBreak			: "Inserir Quebra de Página",
 
 Form			: "Formulário",
 Checkbox		: "Caixa de Verificação",
@@ -96,8 +98,13 @@
 SelectionField	: "Caixa de Combinação",
 ImageButton		: "Botão de Imagem",
 
+FitWindow		: "Maximizar o tamanho do editor",
+
 // Context Menu
 EditLink			: "Editar Hiperligação",
+CellCM				: "Célula",
+RowCM				: "Linha",
+ColumnCM			: "Coluna",
 InsertRow			: "Inserir Linha",
 DeleteRows			: "Eliminar Linhas",
 InsertColumn		: "Inserir Coluna",
@@ -106,6 +113,7 @@
 DeleteCells			: "Eliminar Célula",
 MergeCells			: "Unir Células",
 SplitCell			: "Dividir Célula",
+TableDelete			: "Eliminar Tabela",
 CellProperties		: "Propriedades da Célula",
 TableProperties		: "Propriedades da Tabela",
 ImageProperties		: "Propriedades da Imagem",
@@ -133,7 +141,9 @@
 UnknownCommand		: "Nome de comando desconhecido \"%1\"",
 NotImplemented		: "Comando não implementado",
 UnknownToolbarSet	: "Nome de barra \"%1\" não definido",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "As definições de segurança do navegador podem limitar algumas potencalidades do editr. Deve activar a opção \"Executar controlos e extensões ActiveX\". Pode ocorrer erros ou verificar que faltam potencialidades.",
+BrowseServerBlocked : "Não foi possível abrir o navegador de recursos. Certifique-se que todos os bloqueadores de popup estão desactivados.",
+DialogBlocked		: "Não foi possível abrir a janela de diálogo. Certifique-se que todos os bloqueadores de popup estão desactivados.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -141,12 +151,12 @@
 DlgBtnClose			: "Fechar",
 DlgBtnBrowseServer	: "Navegar no Servidor",
 DlgAdvancedTag		: "Avançado",
-DlgOpOther			: "&lt;Outro&gt;",
+DlgOpOther			: "<Outro>",
 DlgInfoTab			: "Informação",
 DlgAlertUrl			: "Por favor introduza o URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;Não definido&gt;",
+DlgGenNotSet		: "<Não definido>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Orientação de idioma",
 DlgGenLangDirLtr	: "Esquerda à Direita (LTR)",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Referência a esta página",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Protocolo",
-DlgLnkProtoOther	: "&lt;outro&gt;",
+DlgLnkProtoOther	: "<outro>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Seleccionar una referência",
 DlgLnkAnchorByName	: "Por Nome de Referência",
 DlgLnkAnchorById	: "Por ID de elemento",
-DlgLnkNoAnchors		: "&lt;Não há referências disponíveis no documento&gt;",
+DlgLnkNoAnchors		: "<Não há referências disponíveis no documento>",
 DlgLnkEMail			: "Endereço de E-Mail",
 DlgLnkEMailSubject	: "Título de Mensagem",
 DlgLnkEMailBody		: "Corpo da Mensagem",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Enviar ao Servidor",
 
 DlgLnkTarget		: "Destino",
-DlgLnkTargetFrame	: "&lt;Frame&gt;",
-DlgLnkTargetPopup	: "&lt;Janela de popup&gt;",
+DlgLnkTargetFrame	: "<Frame>",
+DlgLnkTargetPopup	: "<Janela de popup>",
 DlgLnkTargetBlank	: "Nova Janela(_blank)",
 DlgLnkTargetParent	: "Janela Pai (_parent)",
 DlgLnkTargetSelf	: "Mesma janela (_self)",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "Esp. e/células",
 DlgTableCellPad		: "Esp. interior",
 DlgTableCaption		: "Título",
+DlgTableSummary		: "Sumário",
 
 // Table Cell Dialog
 DlgCellTitle		: "Propriedades da Célula",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Remover as definições de Estilos",
 DlgPasteCleanBox		: "Caixa de Limpeza",
 
-
 // Color Picker
 ColorAutomatic	: "Automático",
 ColorMoreColors	: "Mais Cores...",
@@ -416,7 +426,7 @@
 NumberedListProp	: "Propriedades da Numeração",
 DlgLstType			: "Tipo",
 DlgLstTypeCircle	: "Circulo",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Disco",
 DlgLstTypeSquare	: "Quadrado",
 DlgLstTypeNumbers	: "Números (1, 2, 3)",
 DlgLstTypeLCase		: "Letras Minúsculas (a, b, c)",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "Acerca",
 DlgAboutBrowserInfoTab	: "Informação do Nevegador",
+DlgAboutLicenseTab	: "Licença",
 DlgAboutVersion		: "versão",
 DlgAboutLicense		: "Licenciado segundo os términos de GNU Lesser General Public License",
 DlgAboutInfo		: "Para mais informações por favor dirija-se a"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/ro.js 1.4.1.src/fckeditor/editor/lang/ro.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/ro.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/ro.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -86,6 +86,8 @@
 Replace				: "Înlocuieşte",
 SpellCheck			: "Verifică text",
 UniversalKeyboard	: "Tastatură universală",
+PageBreakLbl		: "Separator de pagină (Page Break)",
+PageBreak			: "Inserează separator de pagină (Page Break)",
 
 Form			: "Formular (Form)",
 Checkbox		: "Bifă (Checkbox)",
@@ -97,16 +99,22 @@
 SelectionField	: "Câmp selecţie (SelectionField)",
 ImageButton		: "Buton imagine (ImageButton)",
 
+FitWindow		: "Maximizează mărimea editorului",
+
 // Context Menu
 EditLink			: "Editează Link",
-InsertRow			: "Inserează Row",
-DeleteRows			: "Şterge Rows",
-InsertColumn		: "Inserează Column",
-DeleteColumns		: "Şterge Columns",
-InsertCell			: "Inserează Cell",
+CellCM				: "Celulă",
+RowCM				: "Linie",
+ColumnCM			: "Coloană",
+InsertRow			: "Inserează linie",
+DeleteRows			: "Şterge linii",
+InsertColumn		: "Inserează coloană",
+DeleteColumns		: "Şterge celule",
+InsertCell			: "Inserează celulă",
 DeleteCells			: "Şterge celule",
 MergeCells			: "Uneşte celule",
 SplitCell			: "Împarte celulă",
+TableDelete			: "Şterge tabel",
 CellProperties		: "Proprietăţile celulei",
 TableProperties		: "Proprietăţile tabelului",
 ImageProperties		: "Proprietăţile imaginii",
@@ -134,7 +142,9 @@
 UnknownCommand		: "Comanda \"%1\" necunoscută",
 NotImplemented		: "Comandă neimplementată",
 UnknownToolbarSet	: "Grupul din bara cu opţiuni \"%1\" nu există",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Setările de securitate ale programului dvs. cu care navigaţi pe internet (browser) pot limita anumite funcţionalităţi ale editorului. Pentru a evita asta, trebuie să activaţi opţiunea \"Run ActiveX controls and plug-ins\". Poate veţi întâlni erori sau veţi observa funcţionalităţi lipsă.",
+BrowseServerBlocked : "The resources browser could not be opened. Asiguraţi-vă că nu e activ niciun \"popup blocker\" (funcţionalitate a programului de navigat (browser) sau a unui plug-in al acestuia de a bloca deschiderea unui noi ferestre).",
+DialogBlocked		: "Nu a fost posibilă deschiderea unei ferestre de dialog. Asiguraţi-vă că nu e activ niciun \"popup blocker\" (funcţionalitate a programului de navigat (browser) sau a unui plug-in al acestuia de a bloca deschiderea unui noi ferestre).",
 
 // Dialogs
 DlgBtnOK			: "Bine",
@@ -142,12 +152,12 @@
 DlgBtnClose			: "Închidere",
 DlgBtnBrowseServer	: "Răsfoieşte server",
 DlgAdvancedTag		: "Avansat",
-DlgOpOther			: "&lt;Altul&gt;",
+DlgOpOther			: "<Altul>",
 DlgInfoTab			: "Informaţii",
 DlgAlertUrl			: "Vă rugăm să scrieţi URL-ul",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;nesetat&gt;",
+DlgGenNotSet		: "<nesetat>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Direcţia cuvintelor",
 DlgGenLangDirLtr	: "stânga-dreapta (LTR)",
@@ -211,12 +221,12 @@
 DlgLnkTypeAnchor	: "Ancoră în această pagină",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Protocol",
-DlgLnkProtoOther	: "&lt;altul&gt;",
+DlgLnkProtoOther	: "<altul>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Selectaţi o ancoră",
 DlgLnkAnchorByName	: "după numele ancorei",
 DlgLnkAnchorById	: "după Id-ul elementului",
-DlgLnkNoAnchors		: "&lt;Nici o ancoră disponibilă în document&gt;",
+DlgLnkNoAnchors		: "<Nicio ancoră disponibilă în document>",
 DlgLnkEMail			: "Adresă de e-mail",
 DlgLnkEMailSubject	: "Subiectul mesajului",
 DlgLnkEMailBody		: "Conţinutul mesajului",
@@ -224,8 +234,8 @@
 DlgLnkBtnUpload		: "Trimite la server",
 
 DlgLnkTarget		: "Ţintă (Target)",
-DlgLnkTargetFrame	: "&lt;frame&gt;",
-DlgLnkTargetPopup	: "&lt;fereastra popup&gt;",
+DlgLnkTargetFrame	: "<frame>",
+DlgLnkTargetPopup	: "<fereastra popup>",
 DlgLnkTargetBlank	: "Fereastră nouă (_blank)",
 DlgLnkTargetParent	: "Fereastra părinte (_parent)",
 DlgLnkTargetSelf	: "Aceeaşi fereastră (_self)",
@@ -279,6 +289,7 @@
 DlgTableCellSpace	: "Spaţiu între celule",
 DlgTableCellPad		: "Spaţiu în cadrul celulei",
 DlgTableCaption		: "Titlu (Caption)",
+DlgTableSummary		: "Rezumat",
 
 // Table Cell Dialog
 DlgCellTitle		: "Proprietăţile celulei",
@@ -287,16 +298,16 @@
 DlgCellWidthPc		: "procente",
 DlgCellHeight		: "Înălţime",
 DlgCellWordWrap		: "Desparte cuvintele (Wrap)",
-DlgCellWordWrapNotSet	: "&lt;Nesetat&gt;",
+DlgCellWordWrapNotSet	: "<Nesetat>",
 DlgCellWordWrapYes	: "Da",
 DlgCellWordWrapNo	: "Nu",
 DlgCellHorAlign		: "Aliniament orizontal",
-DlgCellHorAlignNotSet	: "&lt;Nesetat&gt;",
+DlgCellHorAlignNotSet	: "<Nesetat>",
 DlgCellHorAlignLeft	: "Stânga",
 DlgCellHorAlignCenter	: "Centru",
 DlgCellHorAlignRight: "Dreapta",
 DlgCellVerAlign		: "Aliniament vertical",
-DlgCellVerAlignNotSet	: "&lt;Nesetat&gt;",
+DlgCellVerAlignNotSet	: "<Nesetat>",
 DlgCellVerAlignTop	: "Sus",
 DlgCellVerAlignMiddle	: "Mijloc",
 DlgCellVerAlignBottom	: "Jos",
@@ -334,7 +345,6 @@
 DlgPasteRemoveStyles	: "Şterge definiţiile stilurilor",
 DlgPasteCleanBox		: "Şterge căsuţa",
 
-
 // Color Picker
 ColorAutomatic	: "Automatic",
 ColorMoreColors	: "Mai multe culori...",
@@ -357,8 +367,8 @@
 DlgSpellBtnUndo			: "Starea anterioară (undo)",
 DlgSpellNoSuggestions	: "- Fără sugestii -",
 DlgSpellProgress		: "Verificarea textului în desfăşurare...",
-DlgSpellNoMispell		: "Verificarea textului terminată: Nici o greşeală găsită",
-DlgSpellNoChanges		: "Verificarea textului terminată: Nici un cuvânt modificat",
+DlgSpellNoMispell		: "Verificarea textului terminată: Nicio greşeală găsită",
+DlgSpellNoChanges		: "Verificarea textului terminată: Niciun cuvânt modificat",
 DlgSpellOneChange		: "Verificarea textului terminată: Un cuvânt modificat",
 DlgSpellManyChanges		: "Verificarea textului terminată: 1% cuvinte modificate",
 
@@ -417,7 +427,7 @@
 NumberedListProp	: "Proprietăţile listei numerotate (Numbered List)",
 DlgLstType			: "Tip",
 DlgLstTypeCircle	: "Cerc",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Disc",
 DlgLstTypeSquare	: "Pătrat",
 DlgLstTypeNumbers	: "Numere (1, 2, 3)",
 DlgLstTypeLCase		: "Minuscule-litere mici (a, b, c)",
@@ -465,11 +475,12 @@
 DlgTemplatesTitle	: "Template-uri (şabloane) de conţinut",
 DlgTemplatesSelMsg	: "Vă rugăm selectaţi template-ul (şablonul) ce se va deschide în editor<br>(conţinutul actual va fi pierdut):",
 DlgTemplatesLoading	: "Se încarcă lista cu template-uri (şabloane). Vă rugăm aşteptaţi...",
-DlgTemplatesNoTpl	: "(Nici un template (şablon) definit)",
+DlgTemplatesNoTpl	: "(Niciun template (şablon) definit)",
 
 // About Dialog
 DlgAboutAboutTab	: "Despre",
 DlgAboutBrowserInfoTab	: "Informaţii browser",
+DlgAboutLicenseTab	: "Licenţă",
 DlgAboutVersion		: "versiune",
 DlgAboutLicense		: "Licenţiat sub termenii GNU Lesser General Public License",
 DlgAboutInfo		: "Pentru informaţii amănunţite, vizitaţi"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/ru.js 1.4.1.src/fckeditor/editor/lang/ru.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/ru.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/ru.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -85,6 +85,8 @@
 Replace				: "Заменить",
 SpellCheck			: "Проверить орфографию",
 UniversalKeyboard	: "Универсальная клавиатура",
+PageBreakLbl		: "Разрыв страницы",
+PageBreak			: "Вставить разрыв страницы",
 
 Form			: "Форма",
 Checkbox		: "Флаговая кнопка",
@@ -96,8 +98,13 @@
 SelectionField	: "Список",
 ImageButton		: "Кнопка с изображением",
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "Вставить ссылку",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "Вставить строку",
 DeleteRows			: "Удалить строки",
 InsertColumn		: "Вставить колонку",
@@ -106,6 +113,7 @@
 DeleteCells			: "Удалить ячейки",
 MergeCells			: "Соединить ячейки",
 SplitCell			: "Разбить ячейку",
+TableDelete			: "Удалить таблицу",
 CellProperties		: "Свойства ячейки",
 TableProperties		: "Свойства таблицы",
 ImageProperties		: "Свойства изображения",
@@ -122,7 +130,7 @@
 TextareaProp		: "Свойства текстовой области",
 FormProp			: "Свойства формы",
 
-FontFormats			: "Нормальный;Форматированный;Адрес;Заголовок 1;Заголовок 2;Заголовок 3;Заголовок 4;Заголовок 5;Заголовок 6",
+FontFormats			: "Нормальный;Форматированный;Адрес;Заголовок 1;Заголовок 2;Заголовок 3;Заголовок 4;Заголовок 5;Заголовок 6;Нормальный (DIV)",
 
 // Alerts and Messages
 ProcessingXHTML		: "Обработка XHTML. Пожалуйста подождите...",
@@ -133,7 +141,9 @@
 UnknownCommand		: "Не известное имя команды \"%1\"",
 NotImplemented		: "Команда не реализована",
 UnknownToolbarSet	: "Панель инструментов \"%1\" не существует",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Настройки безопасности вашего браузера могут ограничивать некоторые свойства редактора. Вы должны включить опцию \"Запускать элементы управления ActiveX и плугины\". Вы можете видеть ошибки и замечать отсутствие возможностей.",
+BrowseServerBlocked : "Ресурсы браузера не могут быть открыты. Проверьте что блокировки всплывающих окон выключены.",
+DialogBlocked		: "Не возможно открыть окно диалога. Проверьте что блокировки всплывающих окон выключены.",
 
 // Dialogs
 DlgBtnOK			: "ОК",
@@ -141,12 +151,12 @@
 DlgBtnClose			: "Закрыть",
 DlgBtnBrowseServer	: "Просмотреть на сервере",
 DlgAdvancedTag		: "Расширенный",
-DlgOpOther			: "&lt;Другое&gt;",
+DlgOpOther			: "<Другое>",
 DlgInfoTab			: "Информация",
 DlgAlertUrl			: "Пожалуйста вставьте URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;не определено&gt;",
+DlgGenNotSet		: "<не определено>",
 DlgGenId			: "Идентификатор",
 DlgGenLangDir		: "Направление языка",
 DlgGenLangDirLtr	: "Слева на право (LTR)",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Якорь на эту страницу",
 DlgLnkTypeEMail		: "Эл. почта",
 DlgLnkProto			: "Протокол",
-DlgLnkProtoOther	: "&lt;другое&gt;",
+DlgLnkProtoOther	: "<другое>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Выберите якорь",
 DlgLnkAnchorByName	: "По имени якоря",
 DlgLnkAnchorById	: "По идентификатору элемента",
-DlgLnkNoAnchors		: "&lt;Нет якорей доступных в этом документе&gt;",
+DlgLnkNoAnchors		: "<Нет якорей доступных в этом документе>",
 DlgLnkEMail			: "Адрес эл. почты",
 DlgLnkEMailSubject	: "Заголовок сообщения",
 DlgLnkEMailBody		: "Тело сообщения",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Послать на сервер",
 
 DlgLnkTarget		: "Цель",
-DlgLnkTargetFrame	: "&lt;фрейм&gt;",
-DlgLnkTargetPopup	: "&lt;всплывающее окно&gt;",
+DlgLnkTargetFrame	: "<фрейм>",
+DlgLnkTargetPopup	: "<всплывающее окно>",
 DlgLnkTargetBlank	: "Новое окно (_blank)",
 DlgLnkTargetParent	: "Родительское окно (_parent)",
 DlgLnkTargetSelf	: "Тоже окно (_self)",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "Промежуток (spacing)",
 DlgTableCellPad		: "Отступ (padding)",
 DlgTableCaption		: "Заголовок",
+DlgTableSummary		: "Резюме",
 
 // Table Cell Dialog
 DlgCellTitle		: "Свойства ячейки",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Убрать определения стилей",
 DlgPasteCleanBox		: "Очистить",
 
-
 // Color Picker
 ColorAutomatic	: "Автоматический",
 ColorMoreColors	: "Цвета...",
@@ -416,7 +426,7 @@
 NumberedListProp	: "Свойства нумерованного списка",
 DlgLstType			: "Тип",
 DlgLstTypeCircle	: "Круг",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Диск",
 DlgLstTypeSquare	: "Квадрат",
 DlgLstTypeNumbers	: "Номера (1, 2, 3)",
 DlgLstTypeLCase		: "Буквы нижнего регистра (a, b, c)",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "О программе",
 DlgAboutBrowserInfoTab	: "Информация браузера",
+DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "Версия",
 DlgAboutLicense		: "Лицензировано в соответствии с условиями GNU Lesser General Public License",
 DlgAboutInfo		: "Для большей информации, посетите"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/sk.js 1.4.1.src/fckeditor/editor/lang/sk.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/sk.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/sk.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -46,7 +46,7 @@
 InsertFlashLbl		: "Flash",
 InsertFlash			: "Vložiť/zmeniť Flash",
 InsertTableLbl		: "Tabuľka",
-InsertTable			: "Vložiť/zmeniť tabulku",
+InsertTable			: "Vložiť/zmeniť tabuľku",
 InsertLineLbl		: "Čiara",
 InsertLine			: "Vložiť vodorovnú čiara",
 InsertSpecialCharLbl: "Speciálne znaky",
@@ -85,6 +85,8 @@
 Replace				: "Nahradiť",
 SpellCheck			: "Kontrola pravopisu",
 UniversalKeyboard	: "Univerzálna klávesnica",
+PageBreakLbl		: "Oddeľovač stránky",
+PageBreak			: "Vložiť oddeľovač stránky",
 
 Form			: "Formulár",
 Checkbox		: "Zaškrtávacie políčko",
@@ -96,8 +98,13 @@
 SelectionField	: "Rozbaľovací zoznam",
 ImageButton		: "Obrázkové tlačítko",
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "Zmeniť odkaz",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "Vložiť riadok",
 DeleteRows			: "Zmazať riadok",
 InsertColumn		: "Vložiť stĺpec",
@@ -106,9 +113,10 @@
 DeleteCells			: "Zmazať bunky",
 MergeCells			: "Zlúčiť bunky",
 SplitCell			: "Rozdeliť bunku",
+TableDelete			: "Zmazať tabuľku",
 CellProperties		: "Vlastnosti bunky",
-TableProperties		: "Vlastnosti tabulky",
-ImageProperties		: "Vlastnosti obrázka",
+TableProperties		: "Vlastnosti tabuľky",
+ImageProperties		: "Vlastnosti obrázku",
 FlashProperties		: "Vlastnosti Flashu",
 
 AnchorProp			: "Vlastnosti kotvy",
@@ -122,10 +130,10 @@
 TextareaProp		: "Vlastnosti textové oblasti",
 FormProp			: "Vlastnosti formulára",
 
-FontFormats			: "Normálny;Formátovaný;Adresa;Nadpis 1;Nadpis 2;Nadpis 3;Nadpis 4;Nadpis 5;Nadpis 6",
+FontFormats			: "Normálny;Formátovaný;Adresa;Nadpis 1;Nadpis 2;Nadpis 3;Nadpis 4;Nadpis 5;Nadpis 6;Odsek (DIV)",
 
 // Alerts and Messages
-ProcessingXHTML		: "Prebieha spracovanie XHTML. Prosím čakejte...",
+ProcessingXHTML		: "Prebieha spracovanie XHTML. Čakejte prosím...",
 Done				: "Dokončené.",
 PasteWordConfirm	: "Vyzerá to tak, že vkladaný text je kopírovaný z Wordu. Chcete ho pred vložením vyčistiť?",
 NotCompatiblePaste	: "Tento príkaz je dostupný len v prehliadači Internet Explorer verzie 5.5 alebo vyššej. Chcete vložiť text bez vyčistenia?",
@@ -133,7 +141,9 @@
 UnknownCommand		: "Neznámy príkaz \"%1\"",
 NotImplemented		: "Príkaz nie je implementovaný",
 UnknownToolbarSet	: "Panel nástrojov \"%1\" neexistuje",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Bezpečnostné nastavenia Vašeho prehliadača môžu obmedzovať niektoré funkcie editora. Pre ich plnú funkčnosť musíte zapnúť voľbu \"Spúšťať ActiveX moduly a zásuvné moduly\", inak sa môžete stretnúť s chybami a nefunkčnosťou niektorých funkcií.",
+BrowseServerBlocked : "Prehliadač zdrojových prvkov nebolo možné otvoriť. Uistite sa, že máte vypnuté všetky blokovače vyskakujúcich okien.",
+DialogBlocked		: "Dialógové okno nebolo možné otvoriť. Uistite sa, že máte vypnuté všetky blokovače vyskakujúcich okien.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -141,12 +151,12 @@
 DlgBtnClose			: "Zavrieť",
 DlgBtnBrowseServer	: "Prechádzať server",
 DlgAdvancedTag		: "Rozšírené",
-DlgOpOther			: "&lt;Ďalšie&gt;",
+DlgOpOther			: "<Ďalšie>",
 DlgInfoTab			: "Info",
 DlgAlertUrl			: "Prosím vložte URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;nenastavené&gt;",
+DlgGenNotSet		: "<nenastavené>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Orientácia jazyka",
 DlgGenLangDirLtr	: "Zľava doprava (LTR)",
@@ -177,7 +187,7 @@
 DlgImgHSpace		: "H-medzera",
 DlgImgVSpace		: "V-medzera",
 DlgImgAlign			: "Zarovnanie",
-DlgImgAlignLeft		: "Vľevo",
+DlgImgAlignLeft		: "Vľavo",
 DlgImgAlignAbsBottom: "Úplne dole",
 DlgImgAlignAbsMiddle: "Do stredu",
 DlgImgAlignBaseline	: "Na základňu",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Kotva v tejto stránke",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Protokol",
-DlgLnkProtoOther	: "&lt;iný&gt;",
+DlgLnkProtoOther	: "<iný>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Vybrať kotvu",
 DlgLnkAnchorByName	: "Podľa mena kotvy",
 DlgLnkAnchorById	: "Podľa Id objektu",
-DlgLnkNoAnchors		: "&lt;V stránke žiadna kotva nie je definovaná&gt;",
+DlgLnkNoAnchors		: "<V stránke nie je definovaná žiadna kotva>",
 DlgLnkEMail			: "E-Mailová adresa",
 DlgLnkEMailSubject	: "Predmet správy",
 DlgLnkEMailBody		: "Telo správy",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Odoslať na server",
 
 DlgLnkTarget		: "Cieľ",
-DlgLnkTargetFrame	: "&lt;rámec&gt;",
-DlgLnkTargetPopup	: "&lt;vyskakovacie okno&gt;",
+DlgLnkTargetFrame	: "<rámec>",
+DlgLnkTargetPopup	: "<vyskakovacie okno>",
 DlgLnkTargetBlank	: "Nové okno (_blank)",
 DlgLnkTargetParent	: "Rodičovské okno (_parent)",
 DlgLnkTargetSelf	: "Rovnaké okno (_self)",
@@ -232,8 +242,8 @@
 DlgLnkTargetFrameName	: "Meno rámu cieľa",
 DlgLnkPopWinName	: "Názov vyskakovacieho okna",
 DlgLnkPopWinFeat	: "Vlastnosti vyskakovacieho okna",
-DlgLnkPopResize		: "Měnitelná velikost",
-DlgLnkPopLocation	: "Panel umístění",
+DlgLnkPopResize		: "Meniteľná veľkosť",
+DlgLnkPopLocation	: "Panel umiestnenia",
 DlgLnkPopMenu		: "Panel ponuky",
 DlgLnkPopScroll		: "Posuvníky",
 DlgLnkPopStatus		: "Stavový riadok",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "Vzdialenosť buniek",
 DlgTableCellPad		: "Odsadenie obsahu",
 DlgTableCaption		: "Popis",
+DlgTableSummary		: "Prehľad",
 
 // Table Cell Dialog
 DlgCellTitle		: "Vlastnosti bunky",
@@ -286,7 +297,7 @@
 DlgCellWidthPc		: "percent",
 DlgCellHeight		: "Výška",
 DlgCellWordWrap		: "Zalamovannie",
-DlgCellWordWrapNotSet	: "<nenanstavené>",
+DlgCellWordWrapNotSet	: "<nenastavené>",
 DlgCellWordWrapYes	: "Áno",
 DlgCellWordWrapNo	: "Nie",
 DlgCellHorAlign		: "Vodorovné zarovnanie",
@@ -328,12 +339,11 @@
 PasteAsText		: "Vložiť ako čistý text",
 PasteFromWord	: "Vložiť text z Wordu",
 
-DlgPasteMsg2	: "Please paste inside the following box using the keyboard (<STRONG>Ctrl+V</STRONG>) and hit <STRONG>OK</STRONG>.",
+DlgPasteMsg2	: "Do nasledujúceho boxu vložte obsah schránky použitím klávesnice (<STRONG>Ctrl+V</STRONG>) a stlačte <STRONG>OK</STRONG>.",
 DlgPasteIgnoreFont		: "Ignorovať nastavenia typu písma",
 DlgPasteRemoveStyles	: "Odstrániť formátovanie",
 DlgPasteCleanBox		: "Vyčistiť schránku",
 
-
 // Color Picker
 ColorAutomatic	: "Automaticky",
 ColorMoreColors	: "Viac farieb...",
@@ -416,7 +426,7 @@
 NumberedListProp	: "Vlastnosti číslovania",
 DlgLstType			: "Typ",
 DlgLstTypeCircle	: "Krúžok",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Disk",
 DlgLstTypeSquare	: "Štvorec",
 DlgLstTypeNumbers	: "Číslovanie (1, 2, 3)",
 DlgLstTypeLCase		: "Malé písmená (a, b, c)",
@@ -432,7 +442,7 @@
 
 DlgDocPageTitle		: "Titulok",
 DlgDocLangDir		: "Orientácie jazyka",
-DlgDocLangDirLTR	: "Zľeva doprava (LTR)",
+DlgDocLangDirLTR	: "Zľava doprava (LTR)",
 DlgDocLangDirRTL	: "Zprava doľava (RTL)",
 DlgDocLangCode		: "Kód jazyka",
 DlgDocCharSet		: "Kódová stránka",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "O aplikáci",
 DlgAboutBrowserInfoTab	: "Informácie o prehliadači",
+DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "verzie",
 DlgAboutLicense		: "Licencované pod pravidlami GNU Lesser General Public License",
 DlgAboutInfo		: "Viac informácií získate na"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/sl.js 1.4.1.src/fckeditor/editor/lang/sl.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/sl.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/sl.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -85,6 +85,8 @@
 Replace				: "Zamenjaj",
 SpellCheck			: "Preveri črkovanje",
 UniversalKeyboard	: "Večjezična tipkovnica",
+PageBreakLbl		: "Prelom strani",
+PageBreak			: "Vstavi prelom strani",
 
 Form			: "Obrazec",
 Checkbox		: "Potrditveno polje",
@@ -96,8 +98,13 @@
 SelectionField	: "Spustni seznam",
 ImageButton		: "Gumb s sliko",
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "Uredi povezavo",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "Vstavi vrstico",
 DeleteRows			: "Izbriši vrstice",
 InsertColumn		: "Vstavi stolpec",
@@ -106,6 +113,7 @@
 DeleteCells			: "Izbriši celice",
 MergeCells			: "Združi celice",
 SplitCell			: "Razdeli celico",
+TableDelete			: "Izbriši tabelo",
 CellProperties		: "Lastnosti celice",
 TableProperties		: "Lastnosti tabele",
 ImageProperties		: "Lastnosti slike",
@@ -133,7 +141,9 @@
 UnknownCommand		: "Neznano ime ukaza \"%1\"",
 NotImplemented		: "Ukaz ni izdelan",
 UnknownToolbarSet	: "Skupina orodnih vrstic \"%1\" ne obstoja",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "V redu",
@@ -141,12 +151,12 @@
 DlgBtnClose			: "Zapri",
 DlgBtnBrowseServer	: "Prebrskaj na strežniku",
 DlgAdvancedTag		: "Napredno",
-DlgOpOther			: "&lt;Ostalo&gt;",
+DlgOpOther			: "<Ostalo>",
 DlgInfoTab			: "Podatki",
 DlgAlertUrl			: "Prosim vpiši spletni naslov",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;ni postavljen&gt;",
+DlgGenNotSet		: "<ni postavljen>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Smer jezika",
 DlgGenLangDirLtr	: "Od leve proti desni (LTR)",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Zaznamek na tej strani",
 DlgLnkTypeEMail		: "Elektronski naslov",
 DlgLnkProto			: "Protokol",
-DlgLnkProtoOther	: "&lt;drugo&gt;",
+DlgLnkProtoOther	: "<drugo>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Izberi zaznamek",
 DlgLnkAnchorByName	: "Po imenu zaznamka",
 DlgLnkAnchorById	: "Po ID-ju elementa",
-DlgLnkNoAnchors		: "&lt;V tem dokumentu ni zaznamkov&gt;",
+DlgLnkNoAnchors		: "<V tem dokumentu ni zaznamkov>",
 DlgLnkEMail			: "Elektronski naslov",
 DlgLnkEMailSubject	: "Predmet sporočila",
 DlgLnkEMailBody		: "Vsebina sporočila",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Pošlji na strežnik",
 
 DlgLnkTarget		: "Cilj",
-DlgLnkTargetFrame	: "&lt;okvir&gt;",
-DlgLnkTargetPopup	: "&lt;pojavno okno&gt;",
+DlgLnkTargetFrame	: "<okvir>",
+DlgLnkTargetPopup	: "<pojavno okno>",
 DlgLnkTargetBlank	: "Novo okno (_blank)",
 DlgLnkTargetParent	: "Starševsko okno (_parent)",
 DlgLnkTargetSelf	: "Isto okno (_self)",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "Razmik med celicami",
 DlgTableCellPad		: "Polnilo med celicami",
 DlgTableCaption		: "Naslov",
+DlgTableSummary		: "Povzetek",
 
 // Table Cell Dialog
 DlgCellTitle		: "Lastnosti celice",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Odstrani nastavitve stila",
 DlgPasteCleanBox		: "Počisti okvir",
 
-
 // Color Picker
 ColorAutomatic	: "Samodejno",
 ColorMoreColors	: "Več barv...",
@@ -416,7 +426,7 @@
 NumberedListProp	: "Lastnosti oštevilčenega seznama",
 DlgLstType			: "Tip",
 DlgLstTypeCircle	: "Pikica",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Kroglica",
 DlgLstTypeSquare	: "Kvadratek",
 DlgLstTypeNumbers	: "Številke (1, 2, 3)",
 DlgLstTypeLCase		: "Male črke (a, b, c)",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "Vizitka",
 DlgAboutBrowserInfoTab	: "Informacije o brskalniku",
+DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "različica",
 DlgAboutLicense		: "Pravica za uporabo pod pogoji GNU Lesser General Public License",
 DlgAboutInfo		: "Za več informacij obiščite"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/sr.js 1.4.1.src/fckeditor/editor/lang/sr.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/sr.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/sr.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -80,11 +80,13 @@
 FontSize			: "Величина фонта",
 TextColor			: "Боја текста",
 BGColor				: "Боја позадине",
-Source				: "K&ocirc;д",
+Source				: "Kôд",
 Find				: "Претрага",
 Replace				: "Замена",
 SpellCheck			: "Провери спеловање",
 UniversalKeyboard	: "Универзална тастатура",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
 
 Form			: "Форма",
 Checkbox		: "Поље за потврду",
@@ -96,8 +98,13 @@
 SelectionField	: "Изборно поље",
 ImageButton		: "Дугме са сликом",
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "Промени линк",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "Унеси ред",
 DeleteRows			: "Обриши редове",
 InsertColumn		: "Унеси колону",
@@ -106,6 +113,7 @@
 DeleteCells			: "Обриши ћелије",
 MergeCells			: "Спој ћелије",
 SplitCell			: "Раздвоји ћелије",
+TableDelete			: "Delete Table",	//MISSING
 CellProperties		: "Особине ћелије",
 TableProperties		: "Особине табеле",
 ImageProperties		: "Особине слике",
@@ -133,7 +141,9 @@
 UnknownCommand		: "Непозната наредба \"%1\"",
 NotImplemented		: "Наредба није имплементирана",
 UnknownToolbarSet	: "Toolbar \"%1\" не постоји",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -141,17 +151,17 @@
 DlgBtnClose			: "Затвори",
 DlgBtnBrowseServer	: "Претражи сервер",
 DlgAdvancedTag		: "Напредни тагови",
-DlgOpOther			: "&lt;Остали&gt;",
+DlgOpOther			: "<Остали>",
 DlgInfoTab			: "Инфо",
 DlgAlertUrl			: "Молимо Вас, унесите УРЛ",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;није постављено&gt;",
+DlgGenNotSet		: "<није постављено>",
 DlgGenId			: "Ид",
 DlgGenLangDir		: "Смер језика",
 DlgGenLangDirLtr	: "С лева на десно (LTR)",
 DlgGenLangDirRtl	: "С десна на лево (RTL)",
-DlgGenLangCode		: "K&ocirc;д језика",
+DlgGenLangCode		: "Kôд језика",
 DlgGenAccessKey		: "Приступни тастер",
 DlgGenName			: "Назив",
 DlgGenTabIndex		: "Таб индекс",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Сидро на овој страници",
 DlgLnkTypeEMail		: "Eлектронска пошта",
 DlgLnkProto			: "Протокол",
-DlgLnkProtoOther	: "&lt;друго&gt;",
+DlgLnkProtoOther	: "<друго>",
 DlgLnkURL			: "УРЛ",
 DlgLnkAnchorSel		: "Одабери сидро",
 DlgLnkAnchorByName	: "По називу сидра",
 DlgLnkAnchorById	: "Пo Ид-jу елемента",
-DlgLnkNoAnchors		: "&lt;Нема доступних сидра&gt;",
+DlgLnkNoAnchors		: "<Нема доступних сидра>",
 DlgLnkEMail			: "Адреса електронске поште",
 DlgLnkEMailSubject	: "Наслов",
 DlgLnkEMailBody		: "Садржај поруке",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Пошаљи на сервер",
 
 DlgLnkTarget		: "Meтa",
-DlgLnkTargetFrame	: "&lt;оквир&gt;",
-DlgLnkTargetPopup	: "&lt;искачући прозор&gt;",
+DlgLnkTargetFrame	: "<оквир>",
+DlgLnkTargetPopup	: "<искачући прозор>",
 DlgLnkTargetBlank	: "Нови прозор (_blank)",
 DlgLnkTargetParent	: "Родитељски прозор (_parent)",
 DlgLnkTargetSelf	: "Исти прозор (_self)",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "Ћелијски простор",
 DlgTableCellPad		: "Размак ћелија",
 DlgTableCaption		: "Наслов табеле",
+DlgTableSummary		: "Summary",	//MISSING
 
 // Table Cell Dialog
 DlgCellTitle		: "Особине ћелије",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Уклони дефиниције стилова",
 DlgPasteCleanBox		: "Обриши све",
 
-
 // Color Picker
 ColorAutomatic	: "Аутоматски",
 ColorMoreColors	: "Више боја...",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "О едитору",
 DlgAboutBrowserInfoTab	: "Информације о претраживачу",
+DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "верзија",
 DlgAboutLicense		: "Лиценцирано под условима GNU Lesser General Public License",
 DlgAboutInfo		: "За више информација посетите"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/sr-latn.js 1.4.1.src/fckeditor/editor/lang/sr-latn.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/sr-latn.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/sr-latn.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -80,11 +80,13 @@
 FontSize			: "Veličina fonta",
 TextColor			: "Boja teksta",
 BGColor				: "Boja pozadine",
-Source				: "K&ocirc;d",
+Source				: "Kôd",
 Find				: "Pretraga",
 Replace				: "Zamena",
 SpellCheck			: "Proveri spelovanje",
 UniversalKeyboard	: "Univerzalna tastatura",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
 
 Form			: "Forma",
 Checkbox		: "Polje za potvrdu",
@@ -96,8 +98,13 @@
 SelectionField	: "Izborno polje",
 ImageButton		: "Dugme sa slikom",
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "Izmeni link",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "Unesi red",
 DeleteRows			: "Obriši redove",
 InsertColumn		: "Unesi kolonu",
@@ -106,6 +113,7 @@
 DeleteCells			: "Obriši ćelije",
 MergeCells			: "Spoj celije",
 SplitCell			: "Razdvoji celije",
+TableDelete			: "Delete Table",	//MISSING
 CellProperties		: "Osobine celije",
 TableProperties		: "Osobine tabele",
 ImageProperties		: "Osobine slike",
@@ -133,7 +141,9 @@
 UnknownCommand		: "Nepoznata naredba \"%1\"",
 NotImplemented		: "Naredba nije implementirana",
 UnknownToolbarSet	: "Toolbar \"%1\" ne postoji",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -141,17 +151,17 @@
 DlgBtnClose			: "Zatvori",
 DlgBtnBrowseServer	: "Pretraži server",
 DlgAdvancedTag		: "Napredni tagovi",
-DlgOpOther			: "&lt;Ostali&gt;",
+DlgOpOther			: "<Ostali>",
 DlgInfoTab			: "Info",
 DlgAlertUrl			: "Molimo Vas, unesite URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;nije postavljeno&gt;",
+DlgGenNotSet		: "<nije postavljeno>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Smer jezika",
 DlgGenLangDirLtr	: "S leva na desno (LTR)",
 DlgGenLangDirRtl	: "S desna na levo (RTL)",
-DlgGenLangCode		: "K&ocirc;d jezika",
+DlgGenLangCode		: "Kôd jezika",
 DlgGenAccessKey		: "Pristupni taster",
 DlgGenName			: "Naziv",
 DlgGenTabIndex		: "Tab indeks",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Sidro na ovoj stranici",
 DlgLnkTypeEMail		: "E-Mail",
 DlgLnkProto			: "Protokol",
-DlgLnkProtoOther	: "&lt;drugo&gt;",
+DlgLnkProtoOther	: "<drugo>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Odaberi sidro",
 DlgLnkAnchorByName	: "Po nazivu sidra",
 DlgLnkAnchorById	: "Po Id-ju elementa",
-DlgLnkNoAnchors		: "&lt;Nema dostupnih sidra&gt;",
+DlgLnkNoAnchors		: "<Nema dostupnih sidra>",
 DlgLnkEMail			: "E-Mail adresa",
 DlgLnkEMailSubject	: "Naslov",
 DlgLnkEMailBody		: "Sadržaj poruke",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Pošalji na server",
 
 DlgLnkTarget		: "Meta",
-DlgLnkTargetFrame	: "&lt;okvir&gt;",
-DlgLnkTargetPopup	: "&lt;popup prozor&gt;",
+DlgLnkTargetFrame	: "<okvir>",
+DlgLnkTargetPopup	: "<popup prozor>",
 DlgLnkTargetBlank	: "Novi prozor (_blank)",
 DlgLnkTargetParent	: "Roditeljski prozor (_parent)",
 DlgLnkTargetSelf	: "Isti prozor (_self)",
@@ -267,7 +277,7 @@
 DlgTableColumns		: "Kolona",
 DlgTableBorder		: "Veličina okvira",
 DlgTableAlign		: "Ravnanje",
-DlgTableAlignNotSet	: "&lt;nije postavljeno&gt;",
+DlgTableAlignNotSet	: "<nije postavljeno>",
 DlgTableAlignLeft	: "Levo",
 DlgTableAlignCenter	: "Sredina",
 DlgTableAlignRight	: "Desno",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "Ćelijski prostor",
 DlgTableCellPad		: "Razmak ćelija",
 DlgTableCaption		: "Naslov tabele",
+DlgTableSummary		: "Summary",	//MISSING
 
 // Table Cell Dialog
 DlgCellTitle		: "Osobine ćelije",
@@ -286,16 +297,16 @@
 DlgCellWidthPc		: "procenata",
 DlgCellHeight		: "Visina",
 DlgCellWordWrap		: "Deljenje reči",
-DlgCellWordWrapNotSet	: "&lt;nije postavljeno&gt;",
+DlgCellWordWrapNotSet	: "<nije postavljeno>",
 DlgCellWordWrapYes	: "Da",
 DlgCellWordWrapNo	: "Ne",
 DlgCellHorAlign		: "Vodoravno ravnanje",
-DlgCellHorAlignNotSet	: "&lt;nije postavljeno&gt;",
+DlgCellHorAlignNotSet	: "<nije postavljeno>",
 DlgCellHorAlignLeft	: "Levo",
 DlgCellHorAlignCenter	: "Sredina",
 DlgCellHorAlignRight: "Desno",
 DlgCellVerAlign		: "Vertikalno ravnanje",
-DlgCellVerAlignNotSet	: "&lt;nije postavljeno&gt;",
+DlgCellVerAlignNotSet	: "<nije postavljeno>",
 DlgCellVerAlignTop	: "Gornje",
 DlgCellVerAlignMiddle	: "Sredina",
 DlgCellVerAlignBottom	: "Donje",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Ukloni definicije stilova",
 DlgPasteCleanBox		: "Obriši sve",
 
-
 // Color Picker
 ColorAutomatic	: "Automatski",
 ColorMoreColors	: "Više boja...",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "O editoru",
 DlgAboutBrowserInfoTab	: "Informacije o pretraživacu",
+DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "verzija",
 DlgAboutLicense		: "Licencirano pod uslovima GNU Lesser General Public License",
 DlgAboutInfo		: "Za više informacija posetite"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/sv.js 1.4.1.src/fckeditor/editor/lang/sv.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/sv.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/sv.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -85,6 +85,8 @@
 Replace				: "Ersätt",
 SpellCheck			: "Stavningskontroll",
 UniversalKeyboard	: "Universellt tangentbord",
+PageBreakLbl		: "Sidbrytning",
+PageBreak			: "Infoga sidbrytning",
 
 Form			: "Formulär",
 Checkbox		: "Kryssruta",
@@ -96,8 +98,13 @@
 SelectionField	: "Flervalslista",
 ImageButton		: "Bildknapp",
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "Redigera länk",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "Infoga rad",
 DeleteRows			: "Radera rad",
 InsertColumn		: "Infoga kolumn",
@@ -106,6 +113,7 @@
 DeleteCells			: "Radera celler",
 MergeCells			: "Sammanfoga celler",
 SplitCell			: "Separera celler",
+TableDelete			: "Radera tabell",
 CellProperties		: "Cellegenskaper",
 TableProperties		: "Tabellegenskaper",
 ImageProperties		: "Bildegenskaper",
@@ -133,7 +141,9 @@
 UnknownCommand		: "Okänt kommando \"%1\"",
 NotImplemented		: "Kommandot finns ej",
 UnknownToolbarSet	: "Verktygsfält \"%1\" finns ej",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Din webläsares säkerhetsinställningar kan begränsa funktionaliteten. Du bör aktivera \"Kör ActiveX kontroller och plug-ins\". Fel och avsaknad av funktioner kan annars uppstå.",
+BrowseServerBlocked : "Kunde Ej öppna resursfönstret. Var god och avaktivera alla popup-blockerare.",
+DialogBlocked		: "Kunde Ej öppna dialogfönstret. Var god och avaktivera alla popup-blockerare.",
 
 // Dialogs
 DlgBtnOK			: "OK",
@@ -146,7 +156,7 @@
 DlgAlertUrl			: "Var god och ange en URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;ej angivet&gt;",
+DlgGenNotSet		: "<ej angivet>",
 DlgGenId			: "Id",
 DlgGenLangDir		: "Språkriktning",
 DlgGenLangDirLtr	: "Vänster till Höger (VTH)",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Ankare i sidan",
 DlgLnkTypeEMail		: "E-post",
 DlgLnkProto			: "Protokoll",
-DlgLnkProtoOther	: "&lt;övrigt&gt;",
+DlgLnkProtoOther	: "<övrigt>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Välj ett ankare",
 DlgLnkAnchorByName	: "efter ankarnamn",
 DlgLnkAnchorById	: "efter objektid",
-DlgLnkNoAnchors		: "&lt;Inga ankare kunde hittas&gt;",
+DlgLnkNoAnchors		: "<Inga ankare kunde hittas>",
 DlgLnkEMail			: "E-postadress",
 DlgLnkEMailSubject	: "Ämne",
 DlgLnkEMailBody		: "Innehåll",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Skicka till servern",
 
 DlgLnkTarget		: "Mål",
-DlgLnkTargetFrame	: "&lt;ram&gt;",
-DlgLnkTargetPopup	: "&lt;popup-fönster&gt;",
+DlgLnkTargetFrame	: "<ram>",
+DlgLnkTargetPopup	: "<popup-fönster>",
 DlgLnkTargetBlank	: "Nytt fönster (_blank)",
 DlgLnkTargetParent	: "Föregående Window (_parent)",
 DlgLnkTargetSelf	: "Detta fönstret (_self)",
@@ -256,7 +266,7 @@
 DlgColorSelected	: "Vald",
 
 // Smiley Dialog
-DlgSmileyTitle		: "Infoga en smiley",
+DlgSmileyTitle		: "Infoga smiley",
 
 // Special Character Dialog
 DlgSpecialCharTitle	: "Välj utökat tecken",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "Cellavstånd",
 DlgTableCellPad		: "Cellutfyllnad",
 DlgTableCaption		: "Rubrik",
+DlgTableSummary		: "Sammanfattning",
 
 // Table Cell Dialog
 DlgCellTitle		: "Cellegenskaper",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Radera Stildefinitioner",
 DlgPasteCleanBox		: "Töm rutans innehåll",
 
-
 // Color Picker
 ColorAutomatic	: "Automatisk",
 ColorMoreColors	: "Fler färger...",
@@ -416,7 +426,7 @@
 NumberedListProp	: "Egenskaper för numrerad lista",
 DlgLstType			: "Typ",
 DlgLstTypeCircle	: "Cirkel",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "Punkt",
 DlgLstTypeSquare	: "Ruta",
 DlgLstTypeNumbers	: "Nummer (1, 2, 3)",
 DlgLstTypeLCase		: "Gemener (a, b, c)",
@@ -468,7 +478,8 @@
 
 // About Dialog
 DlgAboutAboutTab	: "Om",
-DlgAboutBrowserInfoTab	: "Webläsarinfo",
+DlgAboutBrowserInfoTab	: "Webläsare",
+DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "version",
 DlgAboutLicense		: "Licensierad under villkoren av GNU Lesser General Public License",
 DlgAboutInfo		: "För mer information se"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/th.js 1.4.1.src/fckeditor/editor/lang/th.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/th.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/th.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -86,6 +86,8 @@
 Replace				: "ค้นหาและแทนที่",
 SpellCheck			: "ตรวจการสะกดคำ",
 UniversalKeyboard	: "คีย์บอร์ดหลากภาษา",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
 
 Form			: "แบบฟอร์ม",
 Checkbox		: "เช็คบ๊อก",
@@ -97,8 +99,13 @@
 SelectionField	: "แถบตัวเลือก",
 ImageButton		: "ปุ่มแบบรูปภาพ",
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "แก้ไข ลิงค์",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "แทรกแถว",
 DeleteRows			: "ลบแถว",
 InsertColumn		: "แทรกสดมน์",
@@ -107,6 +114,7 @@
 DeleteCells			: "ลบช่อง",
 MergeCells			: "ผสานช่อง",
 SplitCell			: "แยกช่อง",
+TableDelete			: "Delete Table",	//MISSING
 CellProperties		: "คุณสมบัติของช่อง",
 TableProperties		: "คุณสมบัติของตาราง",
 ImageProperties		: "คุณสมบัติของรูปภาพ",
@@ -134,7 +142,9 @@
 UnknownCommand		: "ไม่สามารถระบุชื่อคำสั่งได้ \"%1\"",
 NotImplemented		: "ไม่สามารถใช้งานคำสั่งได้",
 UnknownToolbarSet	: "ไม่มีการติดตั้งชุดคำสั่งในแถบเครื่องมือ \"%1\" กรุณาติดต่อผู้ดูแลระบบ",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "ตกลง",
@@ -142,12 +152,12 @@
 DlgBtnClose			: "ปิด",
 DlgBtnBrowseServer	: "เปิดหน้าต่างจัดการไฟล์อัพโหลด",
 DlgAdvancedTag		: "ขั้นสูง",
-DlgOpOther			: "&lt;อื่นๆ&gt;",
+DlgOpOther			: "<อื่นๆ>",
 DlgInfoTab			: "Info",	//MISSING
 DlgAlertUrl			: "Please insert the URL",	//MISSING
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;ไม่ระบุ&gt;",
+DlgGenNotSet		: "<ไม่ระบุ>",
 DlgGenId			: "ไอดี",
 DlgGenLangDir		: "การเขียน-อ่านภาษา",
 DlgGenLangDirLtr	: "จากซ้ายไปขวา (LTR)",
@@ -211,12 +221,12 @@
 DlgLnkTypeAnchor	: "จุดเชื่อมโยง (Anchor)",
 DlgLnkTypeEMail		: "ส่งอีเมล์ (E-Mail)",
 DlgLnkProto			: "โปรโตคอล",
-DlgLnkProtoOther	: "&lt;อื่นๆ&gt;",
+DlgLnkProtoOther	: "<อื่นๆ>",
 DlgLnkURL			: "ที่อยู่อ้างอิงออนไลน์ (URL)",
 DlgLnkAnchorSel		: "ระบุข้อมูลของจุดเชื่อมโยง (Anchor)",
 DlgLnkAnchorByName	: "ชื่อ",
 DlgLnkAnchorById	: "ไอดี",
-DlgLnkNoAnchors		: "&lt;ยังไม่มีจุดเชื่อมโยงภายในหน้าเอกสารนี้&gt;",
+DlgLnkNoAnchors		: "<ยังไม่มีจุดเชื่อมโยงภายในหน้าเอกสารนี้>",
 DlgLnkEMail			: "อีเมล์ (E-Mail)",
 DlgLnkEMailSubject	: "หัวเรื่อง",
 DlgLnkEMailBody		: "ข้อความ",
@@ -224,8 +234,8 @@
 DlgLnkBtnUpload		: "บันทึกไฟล์ไว้บนเซิร์ฟเวอร์",
 
 DlgLnkTarget		: "การเปิดหน้าลิงค์",
-DlgLnkTargetFrame	: "&lt;เปิดในเฟรม&gt;",
-DlgLnkTargetPopup	: "&lt;เปิดหน้าจอเล็ก (Pop-up)&gt;",
+DlgLnkTargetFrame	: "<เปิดในเฟรม>",
+DlgLnkTargetPopup	: "<เปิดหน้าจอเล็ก (Pop-up)>",
 DlgLnkTargetBlank	: "เปิดหน้าจอใหม่ (_blank)",
 DlgLnkTargetParent	: "เปิดในหน้าหลัก (_parent)",
 DlgLnkTargetSelf	: "เปิดในหน้าปัจจุบัน (_self)",
@@ -279,6 +289,7 @@
 DlgTableCellSpace	: "ระยะแนวนอนน",
 DlgTableCellPad		: "ระยะแนวตั้ง",
 DlgTableCaption		: "หัวเรื่องของตาราง",
+DlgTableSummary		: "Summary",	//MISSING
 
 // Table Cell Dialog
 DlgCellTitle		: "คุณสมบัติของ ช่อง",
@@ -287,16 +298,16 @@
 DlgCellWidthPc		: "เปอร์เซ็น",
 DlgCellHeight		: "สูง",
 DlgCellWordWrap		: "ตัดบรรทัดอัตโนมัติ",
-DlgCellWordWrapNotSet	: "&lt;ไม่ระบุ&gt;",
+DlgCellWordWrapNotSet	: "<ไม่ระบุ>",
 DlgCellWordWrapYes	: "ใ่ช่",
 DlgCellWordWrapNo	: "ไม่",
 DlgCellHorAlign		: "การจัดวางแนวนอน",
-DlgCellHorAlignNotSet	: "&lt;ไม่ระบุ&gt;",
+DlgCellHorAlignNotSet	: "<ไม่ระบุ>",
 DlgCellHorAlignLeft	: "ชิดซ้าย",
 DlgCellHorAlignCenter	: "กึ่งกลาง",
 DlgCellHorAlignRight: "ชิดขวา",
 DlgCellVerAlign		: "การจัดวางแนวตั้ง",
-DlgCellVerAlignNotSet	: "&lt;ไม่ระบุ&gt;",
+DlgCellVerAlignNotSet	: "<ไม่ระบุ>",
 DlgCellVerAlignTop	: "บนสุด",
 DlgCellVerAlignMiddle	: "กึ่งกลาง",
 DlgCellVerAlignBottom	: "ล่างสุด",
@@ -334,7 +345,6 @@
 DlgPasteRemoveStyles	: "Remove Styles definitions",	//MISSING
 DlgPasteCleanBox		: "Clean Up Box",	//MISSING
 
-
 // Color Picker
 ColorAutomatic	: "สีอัตโนมัติ",
 ColorMoreColors	: "เลือกสีอื่นๆ...",
@@ -470,6 +480,7 @@
 // About Dialog
 DlgAboutAboutTab	: "เกี่ยวกับโปรแกรม",
 DlgAboutBrowserInfoTab	: "โปรแกรมท่องเว็บที่ท่านใช้",
+DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "รุ่น",
 DlgAboutLicense		: "สงวนลิขสิทธิ์ โดยนโยบายลิขสิทธิ์แบบ GNU Lesser General Public License",
 DlgAboutInfo		: "ข้อมูลเพิ่มเติมภาษาไทยติดต่อ</BR>นาย ชรินทร์ อาษากิจ (อู้ด)</BR><A HREF='mailto:arsakit@gmail.com'>arsakit@gmail.com</A> tel. (+66) 06-9241924</BR>หรือดาวน์โหลดรุ่นภาษาไทยได้ที่เว็บไซต์</BR><A HREF='http://www.thaimall4u.com'>www.Thaimall4u.com</A></BR>ข้อมูลเพิ่มเติมภาษาอังกฤษ กรุณาไปที่นี่"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/_translationstatus.txt 1.4.1.src/fckeditor/editor/lang/_translationstatus.txt
--- 1.4.0sr5-1.src/fckeditor/editor/lang/_translationstatus.txt	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/_translationstatus.txt	2006-09-03 13:05:04.000000000 -0500
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -11,57 +11,60 @@
  * "Support Open Source software. What about a donation today?"
  * 
  * File Name: _translationstatus.txt
- * 	Translation Status.
- * 	A useful site with languages information:
- * 	http://www.omniglot.com/
+ * 	Translations Status.
  * 
  * File Authors:
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
  */
 
-PROCESSING: ar.js      Found: 375   Missing: 2
-PROCESSING: bg.js      Found: 375   Missing: 2
-PROCESSING: bs.js      Found: 232   Missing: 145
-PROCESSING: ca.js      Found: 375   Missing: 2
-PROCESSING: cs.js      Found: 352   Missing: 25
-PROCESSING: da.js      Found: 375   Missing: 2
-PROCESSING: de.js      Found: 375   Missing: 2
-PROCESSING: el.js      Found: 232   Missing: 145
-PROCESSING: en-au.js   Found: 375   Missing: 2
-PROCESSING: en-uk.js   Found: 375   Missing: 2
-PROCESSING: eo.js      Found: 352   Missing: 25
-PROCESSING: es.js      Found: 375   Missing: 2
-PROCESSING: et.js      Found: 232   Missing: 145
-PROCESSING: eu.js      Found: 375   Missing: 2
-PROCESSING: fa.js      Found: 358   Missing: 19
-PROCESSING: fi.js      Found: 375   Missing: 2
-PROCESSING: fo.js      Found: 358   Missing: 19
-PROCESSING: fr.js      Found: 375   Missing: 2
-PROCESSING: gl.js      Found: 375   Missing: 2
-PROCESSING: he.js      Found: 375   Missing: 2
-PROCESSING: hr.js      Found: 375   Missing: 2
-PROCESSING: hu.js      Found: 377   Missing: 0
-PROCESSING: it.js      Found: 375   Missing: 2
-PROCESSING: ja.js      Found: 375   Missing: 2
-PROCESSING: ko.js      Found: 375   Missing: 2
-PROCESSING: lt.js      Found: 375   Missing: 2
-PROCESSING: mn.js      Found: 232   Missing: 145
-PROCESSING: ms.js      Found: 358   Missing: 19
-PROCESSING: nl.js      Found: 375   Missing: 2
-PROCESSING: no.js      Found: 375   Missing: 2
-PROCESSING: pl.js      Found: 352   Missing: 25
-PROCESSING: pt-br.js   Found: 375   Missing: 2
-PROCESSING: pt.js      Found: 375   Missing: 2
-PROCESSING: ro.js      Found: 375   Missing: 2
-PROCESSING: ru.js      Found: 375   Missing: 2
-PROCESSING: sk.js      Found: 375   Missing: 2
-PROCESSING: sl.js      Found: 375   Missing: 2
-PROCESSING: sr-latn.js Found: 375   Missing: 2
-PROCESSING: sr.js      Found: 375   Missing: 2
-PROCESSING: sv.js      Found: 375   Missing: 2
-PROCESSING: th.js      Found: 352   Missing: 25
-PROCESSING: tr.js      Found: 374   Missing: 3
-PROCESSING: uk.js      Found: 375   Missing: 2
-PROCESSING: vi.js      Found: 374   Missing: 3
-PROCESSING: zh-cn.js   Found: 375   Missing: 2
-PROCESSING: zh.js      Found: 375   Missing: 2
\ No newline at end of file
+ar.js      Found: 388   Missing: 0
+bg.js      Found: 380   Missing: 8
+bn.js      Found: 388   Missing: 0
+bs.js      Found: 232   Missing: 156
+ca.js      Found: 387   Missing: 1
+cs.js      Found: 388   Missing: 0
+da.js      Found: 388   Missing: 0
+de.js      Found: 388   Missing: 0
+el.js      Found: 388   Missing: 0
+en-au.js   Found: 388   Missing: 0
+en-ca.js   Found: 388   Missing: 0
+en-uk.js   Found: 388   Missing: 0
+eo.js      Found: 352   Missing: 36
+es.js      Found: 388   Missing: 0
+et.js      Found: 388   Missing: 0
+eu.js      Found: 388   Missing: 0
+fa.js      Found: 358   Missing: 30
+fi.js      Found: 388   Missing: 0
+fo.js      Found: 358   Missing: 30
+fr.js      Found: 388   Missing: 0
+gl.js      Found: 388   Missing: 0
+he.js      Found: 388   Missing: 0
+hi.js      Found: 388   Missing: 0
+hr.js      Found: 383   Missing: 5
+hu.js      Found: 388   Missing: 0
+it.js      Found: 388   Missing: 0
+ja.js      Found: 388   Missing: 0
+km.js      Found: 377   Missing: 11
+ko.js      Found: 375   Missing: 13
+lt.js      Found: 383   Missing: 5
+lv.js      Found: 388   Missing: 0
+mn.js      Found: 232   Missing: 156
+ms.js      Found: 358   Missing: 30
+nl.js      Found: 388   Missing: 0
+no.js      Found: 388   Missing: 0
+pl.js      Found: 388   Missing: 0
+pt-br.js   Found: 384   Missing: 4
+pt.js      Found: 388   Missing: 0
+ro.js      Found: 388   Missing: 0
+ru.js      Found: 383   Missing: 5
+sk.js      Found: 383   Missing: 5
+sl.js      Found: 380   Missing: 8
+sr-latn.js Found: 375   Missing: 13
+sr.js      Found: 375   Missing: 13
+sv.js      Found: 383   Missing: 5
+th.js      Found: 352   Missing: 36
+tr.js      Found: 374   Missing: 14
+uk.js      Found: 375   Missing: 13
+vi.js      Found: 388   Missing: 0
+zh-cn.js   Found: 388   Missing: 0
+zh.js      Found: 388   Missing: 0
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/tr.js 1.4.1.src/fckeditor/editor/lang/tr.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/tr.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/tr.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -85,6 +85,8 @@
 Replace				: "Degistir",
 SpellCheck			: "Yazim Denetimi",
 UniversalKeyboard	: "Evrensel Klavye",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
 
 Form			: "Form",
 Checkbox		: "Onay Kutusu",
@@ -96,8 +98,13 @@
 SelectionField	: "Seçim Mönüsü",
 ImageButton		: "Resimli Dügme",
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "Köprü Düzenle",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "Satir Ekle",
 DeleteRows			: "Satir Sil",
 InsertColumn		: "Sütun Ekle",
@@ -106,6 +113,7 @@
 DeleteCells			: "Hücre Sil",
 MergeCells			: "Hücreleri Birlestir",
 SplitCell			: "Hücre Böl",
+TableDelete			: "Delete Table",	//MISSING
 CellProperties		: "Hücre Özellikleri",
 TableProperties		: "Tablo Özellikleri",
 ImageProperties		: "Resim Özellikleri",
@@ -133,7 +141,9 @@
 UnknownCommand		: "Bilinmeyen komut \"%1\"",
 NotImplemented		: "Komut uyarlanamadi",
 UnknownToolbarSet	: "\"%1\" araç çubugu ögesi mevcut degil",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "Tamam",
@@ -141,12 +151,12 @@
 DlgBtnClose			: "Kapat",
 DlgBtnBrowseServer	: "Sunucuyu Gez",
 DlgAdvancedTag		: "Gelismis",
-DlgOpOther			: "&lt;Diger&gt;",
+DlgOpOther			: "<Diger>",
 DlgInfoTab			: "Bilgi",
 DlgAlertUrl			: "Lütfen URL girin",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;tanimlanmamis&gt;",
+DlgGenNotSet		: "<tanimlanmamis>",
 DlgGenId			: "Kimlik",
 DlgGenLangDir		: "Lisan Yönü",
 DlgGenLangDirLtr	: "Soldan Saga (LTR)",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Bu sayfada çapa",
 DlgLnkTypeEMail		: "E-Posta",
 DlgLnkProto			: "Protokol",
-DlgLnkProtoOther	: "&lt;diger&gt;",
+DlgLnkProtoOther	: "<diger>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Çapa Seç",
 DlgLnkAnchorByName	: "Çapa Ismi ile",
 DlgLnkAnchorById	: "Eleman Id ile",
-DlgLnkNoAnchors		: "&lt;Bu dokümanda hiç çapa yok&gt;",
+DlgLnkNoAnchors		: "<Bu dokümanda hiç çapa yok>",
 DlgLnkEMail			: "E-Posta Adresi",
 DlgLnkEMailSubject	: "Mesaj Konusu",
 DlgLnkEMailBody		: "Mesaj Vücudu",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Sunucuya Gönder",
 
 DlgLnkTarget		: "Hedef",
-DlgLnkTargetFrame	: "&lt;çerçeve&gt;",
-DlgLnkTargetPopup	: "&lt;yeni açilan pencere&gt;",
+DlgLnkTargetFrame	: "<çerçeve>",
+DlgLnkTargetPopup	: "<yeni açilan pencere>",
 DlgLnkTargetBlank	: "Yeni Pencere(_blank)",
 DlgLnkTargetParent	: "Anne Pencere (_parent)",
 DlgLnkTargetSelf	: "Kendi Penceresi (_self)",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "Izgara kalinligi",
 DlgTableCellPad		: "Izgara yazi arasi",
 DlgTableCaption		: "Baslik",
+DlgTableSummary		: "Summary",	//MISSING
 
 // Table Cell Dialog
 DlgCellTitle		: "Hücre Özellikleri",
@@ -286,16 +297,16 @@
 DlgCellWidthPc		: "yüzde",
 DlgCellHeight		: "Yükseklik",
 DlgCellWordWrap		: "Sözcük Kaydir",
-DlgCellWordWrapNotSet	: "&lt;Tanimlanmamis&gt;",
+DlgCellWordWrapNotSet	: "<Tanimlanmamis>",
 DlgCellWordWrapYes	: "Evet",
 DlgCellWordWrapNo	: "Hayir",
 DlgCellHorAlign		: "Yatay Hizalama",
-DlgCellHorAlignNotSet	: "&lt;Tanimlanmamis&gt;",
+DlgCellHorAlignNotSet	: "<Tanimlanmamis>",
 DlgCellHorAlignLeft	: "Sol",
 DlgCellHorAlignCenter	: "Merkez",
 DlgCellHorAlignRight: "Sag",
 DlgCellVerAlign		: "Dikey Hizalama",
-DlgCellVerAlignNotSet	: "&lt;Tanimlanmamis&gt;",
+DlgCellVerAlignNotSet	: "<Tanimlanmamis>",
 DlgCellVerAlignTop	: "Tepe",
 DlgCellVerAlignMiddle	: "Orta",
 DlgCellVerAlignBottom	: "Alt",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Sitil Tanımlarını çıkar",
 DlgPasteCleanBox		: "Temizlik Kutusu",
 
-
 // Color Picker
 ColorAutomatic	: "Otomatik",
 ColorMoreColors	: "Diger renkler...",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "Hakkinda",
 DlgAboutBrowserInfoTab	: "Gezgin Bilgisi",
+DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "versiyon",
 DlgAboutLicense		: "GNU Kisitli Kamu Lisansi (LGPL) kosullari altinda lisanslanmistir",
 DlgAboutInfo		: "Daha fazla bilgi için:"
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/uk.js 1.4.1.src/fckeditor/editor/lang/uk.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/uk.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/uk.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -85,6 +85,8 @@
 Replace				: "Заміна",
 SpellCheck			: "Перевірити орфографію",
 UniversalKeyboard	: "Універсальна клавіатура",
+PageBreakLbl		: "Page Break",	//MISSING
+PageBreak			: "Insert Page Break",	//MISSING
 
 Form			: "Форма",
 Checkbox		: "Флагова кнопка",
@@ -96,8 +98,13 @@
 SelectionField	: "Список",
 ImageButton		: "Кнопка із зображенням",
 
+FitWindow		: "Maximize the editor size",	//MISSING
+
 // Context Menu
 EditLink			: "Вставити посилання",
+CellCM				: "Cell",	//MISSING
+RowCM				: "Row",	//MISSING
+ColumnCM			: "Column",	//MISSING
 InsertRow			: "Вставити строку",
 DeleteRows			: "Видалити строки",
 InsertColumn		: "Вставити колонку",
@@ -106,6 +113,7 @@
 DeleteCells			: "Видалити комірки",
 MergeCells			: "Об'єднати комірки",
 SplitCell			: "Роз'єднати комірку",
+TableDelete			: "Delete Table",	//MISSING
 CellProperties		: "Властивості комірки",
 TableProperties		: "Властивості таблиці",
 ImageProperties		: "Властивості зображення",
@@ -133,7 +141,9 @@
 UnknownCommand		: "Невідоме ім'я команди \"%1\"",
 NotImplemented		: "Команда не реалізована",
 UnknownToolbarSet	: "Панель інструментів \"%1\" не існує",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Your browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+BrowseServerBlocked : "The resources browser could not be opened. Make sure that all popup blockers are disabled.",	//MISSING
+DialogBlocked		: "It was not possible to open the dialog window. Make sure all popup blockers are disabled.",	//MISSING
 
 // Dialogs
 DlgBtnOK			: "ОК",
@@ -141,12 +151,12 @@
 DlgBtnClose			: "Зачинити",
 DlgBtnBrowseServer	: "Передивитися на сервері",
 DlgAdvancedTag		: "Розширений",
-DlgOpOther			: "&lt;Інше&gt;",
+DlgOpOther			: "<Інше>",
 DlgInfoTab			: "Інфо",
 DlgAlertUrl			: "Вставте, будь-ласка, URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;не визначено&gt;",
+DlgGenNotSet		: "<не визначено>",
 DlgGenId			: "Ідентифікатор",
 DlgGenLangDir		: "Напрямок мови",
 DlgGenLangDirLtr	: "Зліва на право (LTR)",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "Якір на цю сторінку",
 DlgLnkTypeEMail		: "Эл. пошта",
 DlgLnkProto			: "Протокол",
-DlgLnkProtoOther	: "&lt;інше&gt;",
+DlgLnkProtoOther	: "<інше>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Оберіть якір",
 DlgLnkAnchorByName	: "За ім'ям якоря",
 DlgLnkAnchorById	: "За ідентифікатором елемента",
-DlgLnkNoAnchors		: "&lt;Немає якорів доступних в цьому документі&gt;",
+DlgLnkNoAnchors		: "<Немає якорів доступних в цьому документі>",
 DlgLnkEMail			: "Адреса ел. пошти",
 DlgLnkEMailSubject	: "Тема листа",
 DlgLnkEMailBody		: "Тіло повідомлення",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "Переслати на сервер",
 
 DlgLnkTarget		: "Ціль",
-DlgLnkTargetFrame	: "&lt;фрейм&gt;",
-DlgLnkTargetPopup	: "&lt;спливаюче вікно&gt;",
+DlgLnkTargetFrame	: "<фрейм>",
+DlgLnkTargetPopup	: "<спливаюче вікно>",
 DlgLnkTargetBlank	: "Нове вікно (_blank)",
 DlgLnkTargetParent	: "Батьківське вікно (_parent)",
 DlgLnkTargetSelf	: "Теж вікно (_self)",
@@ -277,7 +287,8 @@
 DlgTableHeight		: "Висота",
 DlgTableCellSpace	: "Проміжок (spacing)",
 DlgTableCellPad		: "Відступ (padding)",
-DlgTableCaption		: "Заголовок",
+DlgTableCaption		: "Заголовок (Caption)",
+DlgTableSummary		: "Summary",	//MISSING
 
 // Table Cell Dialog
 DlgCellTitle		: "Властивості комірки",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "Видалити налаштування стилів",
 DlgPasteCleanBox		: "Очистити область",
 
-
 // Color Picker
 ColorAutomatic	: "Автоматичний",
 ColorMoreColors	: "Кольори...",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "Про програму",
 DlgAboutBrowserInfoTab	: "Інформація браузера",
+DlgAboutLicenseTab	: "License",	//MISSING
 DlgAboutVersion		: "Версія",
 DlgAboutLicense		: "Ліцензовано згідно умовам GNU Lesser General Public License",
 DlgAboutInfo		: "Додаткову інформацію дивіться на "
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/vi.js 1.4.1.src/fckeditor/editor/lang/vi.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/vi.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/vi.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -11,10 +11,11 @@
  * "Support Open Source software. What about a donation today?"
  * 
  * File Name: vi.js
- * 	Vietnamese language file.
+ * 	Chinese Traditional language file.
  * 
  * File Authors:
  * 		Phan Binh Giang (bbbgiang@yahoo.com)
+ * 		Hà Thanh Hải (thanhhai.ha@gmail.com)
  */
 
 var FCKLang =
@@ -22,17 +23,17 @@
 // Language direction : "ltr" (left to right) or "rtl" (right to left).
 Dir					: "ltr",
 
-ToolbarCollapse		: "Collapse Toolbar",
-ToolbarExpand		: "Expand Toolbar",
+ToolbarCollapse		: "Thu gọn Thanh công cụ",
+ToolbarExpand		: "Mở rộng Thanh công cụ",
 
 // Toolbar Items and Context Menu
-Save				: "Ghi",
-NewPage				: "Trang Mới",
+Save				: "Lưu",
+NewPage				: "Trang mới",
 Preview				: "Xem trước",
 Cut					: "Cắt",
-Copy				: "Sao",
+Copy				: "Sao chép",
 Paste				: "Dán",
-PasteText			: "Dán Ký tự đơn thuần",
+PasteText			: "Dán theo dạng văn bản thuần",
 PasteWord			: "Dán với định dạng Word",
 Print				: "In",
 SelectAll			: "Chọn Tất cả",
@@ -46,94 +47,104 @@
 InsertFlashLbl		: "Flash",
 InsertFlash			: "Chèn/Sửa Flash",
 InsertTableLbl		: "Bảng",
-InsertTable			: "Chèn/Sửa bảng",
-InsertLineLbl		: "Đường phân cách",
-InsertLine			: "Chèn đường phân cách ngang",
-InsertSpecialCharLbl: "Ký tự đặt biệt",
+InsertTable			: "Chèn/Sửa Bảng",
+InsertLineLbl		: "Đường phân cách ngang",
+InsertLine			: "Chèn Đường phân cách ngang",
+InsertSpecialCharLbl: "Ký tự đặc biệt",
 InsertSpecialChar	: "Chèn Ký tự đặc biệt",
-InsertSmileyLbl		: "Hình cảm xúc",
-InsertSmiley		: "Chèn Hình cảm xúc",
+InsertSmileyLbl		: "Hình biểu lộ cảm xúc (mặt cười)",
+InsertSmiley		: "Chèn Hình biểu lộ cảm xúc (mặt cười)",
 About				: "Giới thiệu về FCKeditor",
 Bold				: "Đậm",
 Italic				: "Nghiêng",
 Underline			: "Gạch chân",
-StrikeThrough		: "Gạch ngang",
+StrikeThrough		: "Gạch xuyên ngang",
 Subscript			: "Chỉ số dưới",
 Superscript			: "Chỉ số trên",
-LeftJustify			: "Canh bên Trái",
-CenterJustify		: "Canh Giữa",
-RightJustify		: "Canh bên Phải",
-BlockJustify		: "Canh Hai bên",
-DecreaseIndent		: "Dịch sang Trái",
-IncreaseIndent		: "Dịch sang Phải",
-Undo				: "Phục hồi Lùi",
-Redo				: "Phục hồi Tiến",
-NumberedListLbl		: "Số thứ tự",
-NumberedList		: "Chèn/Xoá Số thứ tự",
-BulletedListLbl		: "Danh sách Bulleted",
-BulletedList		: "Chèn/Xoá Danh sách Bulleted",
-ShowTableBorders	: "Hiện thị Đường viền bảng",
-ShowDetails			: "Hiện thị Chi tiết",
+LeftJustify			: "Canh trái",
+CenterJustify		: "Canh giữa",
+RightJustify		: "Canh phải",
+BlockJustify		: "Canh đều",
+DecreaseIndent		: "Dịch ra ngoài",
+IncreaseIndent		: "Dịch vào trong",
+Undo				: "Khôi phục thao tác",
+Redo				: "Làm lại thao tác",
+NumberedListLbl		: "Danh sách có thứ tự",
+NumberedList		: "Chèn/Xoá Danh sách có thứ tự",
+BulletedListLbl		: "Danh sách không thứ tự",
+BulletedList		: "Chèn/Xoá Danh sách không thứ tự",
+ShowTableBorders	: "Hiển thị Đường viền bảng",
+ShowDetails			: "Hiển thị Chi tiết",
 Style				: "Mẫu",
 FontFormat			: "Định dạng",
-Font				: "Font",
-FontSize			: "Cỡ Chữ",
-TextColor			: "Màu Chữ",
-BGColor				: "Màu Nền",
-Source				: "Mã nguồn",
-Find				: "Tìm",
+Font				: "Phông",
+FontSize			: "Cỡ chữ",
+TextColor			: "Màu chữ",
+BGColor				: "Màu nền",
+Source				: "Mã HTML",
+Find				: "Tìm kiếm",
 Replace				: "Thay thế",
 SpellCheck			: "Kiểm tra Chính tả",
-UniversalKeyboard	: "Bàn phím quốc tế",
+UniversalKeyboard	: "Bàn phím Quốc tế",
+PageBreakLbl		: "Ngắt trang",
+PageBreak			: "Chèn Ngắt trang",
+
+Form			: "Biểu mẫu",
+Checkbox		: "Nút kiểm",
+RadioButton		: "Nút radio",
+TextField		: "Trường văn bản",
+Textarea		: "Vùng văn bản",
+HiddenField		: "Trường ẩn",
+Button			: "Nút",
+SelectionField	: "Ô chọn",
+ImageButton		: "Nút hình ảnh",
 
-Form			: "Form",
-Checkbox		: "Nốt Kiểm",
-RadioButton		: "Nốt Đài",
-TextField		: "Text Field",
-Textarea		: "Textarea",
-HiddenField		: "Hidden Field",
-Button			: "Button",
-SelectionField	: "Selection Field",
-ImageButton		: "Image Button",
+FitWindow		: "Mở rộng tối đa kích thước trình biên tập",
 
 // Context Menu
 EditLink			: "Sửa Liên kết",
-InsertRow			: "Chèn Dòng",
-DeleteRows			: "Xoá Dòng",
+CellCM				: "Ô",
+RowCM				: "Hàng",
+ColumnCM			: "Cột",
+InsertRow			: "Chèn Hàng",
+DeleteRows			: "Xoá Hàng",
 InsertColumn		: "Chèn Cột",
 DeleteColumns		: "Xoá Cột",
 InsertCell			: "Chèn Ô",
 DeleteCells			: "Xoá Ô",
 MergeCells			: "Trộn Ô",
 SplitCell			: "Chia Ô",
+TableDelete			: "Xóa Bảng",
 CellProperties		: "Thuộc tính Ô",
 TableProperties		: "Thuộc tính Bảng",
 ImageProperties		: "Thuộc tính Hình ảnh",
 FlashProperties		: "Thuộc tính Flash",
 
 AnchorProp			: "Thuộc tính Neo",
-ButtonProp			: "Thuộc tính Button",
-CheckboxProp		: "Thuộc tính Nốt kiểm",
-HiddenFieldProp		: "Thuộc tính Hidden Field",
-RadioButtonProp		: "Thuộc tính Nốt đài",
-ImageButtonProp		: "Thuộc tính Image Button",
-TextFieldProp		: "Thuộc tính Text Field",
-SelectionFieldProp	: "Thuộc tính Selection Field",
-TextareaProp		: "Thuộc tính Textarea",
-FormProp			: "Thuộc tính Form",
+ButtonProp			: "Thuộc tính Nút",
+CheckboxProp		: "Thuộc tính Nút kiểm",
+HiddenFieldProp		: "Thuộc tính Trường ẩn",
+RadioButtonProp		: "Thuộc tính Nút radio",
+ImageButtonProp		: "Thuộc tính Nút hình ảnh",
+TextFieldProp		: "Thuộc tính Trường văn bản",
+SelectionFieldProp	: "Thuộc tính Ô chọn",
+TextareaProp		: "Thuộc tính Vùng văn bản",
+FormProp			: "Thuộc tính Biểu mẫu",
 
 FontFormats			: "Normal;Formatted;Address;Heading 1;Heading 2;Heading 3;Heading 4;Heading 5;Heading 6;Paragraph (DIV)",
 
 // Alerts and Messages
-ProcessingXHTML		: "Đang xử lý XHTML. Xin hãy đợi...",
+ProcessingXHTML		: "Đang xử lý XHTML. Vui lòng đợi trong giây lát...",
 Done				: "Đã hoàn thành",
 PasteWordConfirm	: "Văn bản bạn muốn dán có kèm định dạng của Word. Bạn có muốn loại bỏ định dạng Word trước khi dán?",
 NotCompatiblePaste	: "Lệnh này chỉ được hỗ trợ từ trình duyệt Internet Explorer phiên bản 5.5 hoặc mới hơn. Bạn có muốn dán nguyên mẫu?",
-UnknownToolbarItem	: "Không rõ Nốt \"%1\"",
+UnknownToolbarItem	: "Không rõ mục trên thanh công cụ \"%1\"",
 UnknownCommand		: "Không rõ lệnh \"%1\"",
-NotImplemented		: "Lệnh không được thi hành",
+NotImplemented		: "Lệnh không được thực hiện",
 UnknownToolbarSet	: "Thanh công cụ \"%1\" không tồn tại",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "Các thiết lập bảo mật của trình duyệt có thể giới hạn một số chức năng của trình biên tập. Bạn phải bật tùy chọn \"Run ActiveX controls and plug-ins\". Bạn có thể gặp một số lỗi và thấy thiếu đi một số chức năng.",
+BrowseServerBlocked : "Không thể mở được bộ duyệt tài nguyên. Hãy đảm bảo chức năng chặn popup đã bị vô hiệu hóa.",
+DialogBlocked		: "Không thể mở được cửa sổ hộp thoại. Hãy đảm bảo chức năng chặn popup đã bị vô hiệu hóa.",
 
 // Dialogs
 DlgBtnOK			: "Đồng ý",
@@ -141,31 +152,31 @@
 DlgBtnClose			: "Đóng",
 DlgBtnBrowseServer	: "Duyệt trên máy chủ",
 DlgAdvancedTag		: "Mở rộng",
-DlgOpOther			: "&lt;Khác&gt;",
+DlgOpOther			: "<Khác>",
 DlgInfoTab			: "Thông tin",
-DlgAlertUrl			: "Hãy đưa vào một URL",
+DlgAlertUrl			: "Hãy nhập vào một URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;không thiết lập&gt;",
+DlgGenNotSet		: "<không thiết lập>",
 DlgGenId			: "Định danh",
 DlgGenLangDir		: "Đường dẫn Ngôn ngữ",
 DlgGenLangDirLtr	: "Trái sang Phải (LTR)",
 DlgGenLangDirRtl	: "Phải sang Trái (RTL)",
 DlgGenLangCode		: "Mã Ngôn ngữ",
-DlgGenAccessKey		: "Phím Truy cập",
+DlgGenAccessKey		: "Phím Hỗ trợ truy cập",
 DlgGenName			: "Tên",
-DlgGenTabIndex		: "Tab Index",
+DlgGenTabIndex		: "Chỉ số của Tab",
 DlgGenLongDescr		: "Mô tả URL",
-DlgGenClass			: "Stylesheet Classes",
+DlgGenClass			: "Lớp Stylesheet",
 DlgGenTitle			: "Advisory Title",
 DlgGenContType		: "Advisory Content Type",
-DlgGenLinkCharset	: "Linked Resource Charset",
+DlgGenLinkCharset	: "Bảng mã của tài nguyên được liên kết đến",
 DlgGenStyle			: "Mẫu",
 
 // Image Dialog
 DlgImgTitle			: "Thuộc tính Hình ảnh",
 DlgImgInfoTab		: "Thông tin Hình ảnh",
-DlgImgBtnUpload		: "Gửi lên Máy chủ",
+DlgImgBtnUpload		: "Tải lên Máy chủ",
 DlgImgURL			: "URL",
 DlgImgUpload		: "Tải lên",
 DlgImgAlt			: "Chú thích Hình ảnh",
@@ -178,13 +189,13 @@
 DlgImgVSpace		: "VSpace",
 DlgImgAlign			: "Vị trí",
 DlgImgAlignLeft		: "Trái",
-DlgImgAlignAbsBottom: "Abs Bottom",
-DlgImgAlignAbsMiddle: "Abs Middle",
+DlgImgAlignAbsBottom: "Dưới tuyệt đối",
+DlgImgAlignAbsMiddle: "Giữa tuyệt đối",
 DlgImgAlignBaseline	: "Baseline",
 DlgImgAlignBottom	: "Dưới",
 DlgImgAlignMiddle	: "Giữa",
 DlgImgAlignRight	: "Phải",
-DlgImgAlignTextTop	: "Text Top",
+DlgImgAlignTextTop	: "Phía trên chữ",
 DlgImgAlignTop		: "Trên",
 DlgImgPreview		: "Xem trước",
 DlgImgAlertUrl		: "Hãy đưa vào URL của hình ảnh",
@@ -192,189 +203,189 @@
 
 // Flash Dialog
 DlgFlashTitle		: "Thuộc tính Flash",
-DlgFlashChkPlay		: "Tự động Chạy",
+DlgFlashChkPlay		: "Tự động chạy",
 DlgFlashChkLoop		: "Lặp",
-DlgFlashChkMenu		: "Kích hoạt Menu Flash ",
-DlgFlashScale		: "Scale",
+DlgFlashChkMenu		: "Cho phép bật Menu của Flash",
+DlgFlashScale		: "Tỷ lệ",
 DlgFlashScaleAll	: "Hiển thị tất cả",
 DlgFlashScaleNoBorder	: "Không đường viền",
-DlgFlashScaleFit	: "Exact Fit",
+DlgFlashScaleFit	: "Vừa vặn",
 
 // Link Dialog
 DlgLnkWindowTitle	: "Liên kết",
 DlgLnkInfoTab		: "Thông tin Liên kết",
-DlgLnkTargetTab		: "Hướng tới",
+DlgLnkTargetTab		: "Đích",
 
 DlgLnkType			: "Kiểu Liên kết",
 DlgLnkTypeURL		: "URL",
 DlgLnkTypeAnchor	: "Neo trong trang này",
-DlgLnkTypeEMail		: "E-Mail",
+DlgLnkTypeEMail		: "Thư điện tử",
 DlgLnkProto			: "Giao thức",
-DlgLnkProtoOther	: "&lt;khác&gt;",
+DlgLnkProtoOther	: "<khác>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "Chọn một Neo",
 DlgLnkAnchorByName	: "Theo Tên Neo",
 DlgLnkAnchorById	: "Theo Định danh Element",
-DlgLnkNoAnchors		: "&lt;Không có Neo nào trong tài liệu&gt;",
-DlgLnkEMail			: "E-Mail",
-DlgLnkEMailSubject	: "Tựa đề Thông điệp",
+DlgLnkNoAnchors		: "<Không có Neo nào trong tài liệu>",
+DlgLnkEMail			: "Thư điện tử",
+DlgLnkEMailSubject	: "Tiêu đề Thông điệp",
 DlgLnkEMailBody		: "Nội dung Thông điệp",
 DlgLnkUpload		: "Tải lên",
-DlgLnkBtnUpload		: "Gửi lên Máy chủ",
+DlgLnkBtnUpload		: "Tải lên Máy chủ",
 
-DlgLnkTarget		: "Hướng tới",
-DlgLnkTargetFrame	: "&lt;frame&gt;",
-DlgLnkTargetPopup	: "&lt;cửa sổ popup&gt;",
+DlgLnkTarget		: "Đích",
+DlgLnkTargetFrame	: "<khung>",
+DlgLnkTargetPopup	: "<cửa sổ popup>",
 DlgLnkTargetBlank	: "Cửa sổ mới (_blank)",
 DlgLnkTargetParent	: "Cửa sổ cha (_parent)",
 DlgLnkTargetSelf	: "Cùng cửa sổ (_self)",
 DlgLnkTargetTop		: "Cửa sổ trên cùng(_top)",
-DlgLnkTargetFrameName	: "Tên Frame hướng tới",
+DlgLnkTargetFrameName	: "Tên Khung đích",
 DlgLnkPopWinName	: "Tên Cửa sổ Popup",
-DlgLnkPopWinFeat	: "Cửa sổ Popup Đặc trưng",
+DlgLnkPopWinFeat	: "Đặc điểm của Cửa sổ Popup",
 DlgLnkPopResize		: "Kích thước thay đổi",
-DlgLnkPopLocation	: "Location Bar",	//MISSING
+DlgLnkPopLocation	: "Thanh vị trí",
 DlgLnkPopMenu		: "Thanh Menu",
 DlgLnkPopScroll		: "Thanh cuộn",
 DlgLnkPopStatus		: "Thanh trạng thái",
 DlgLnkPopToolbar	: "Thanh công cụ",
 DlgLnkPopFullScrn	: "Toàn màn hình (IE)",
-DlgLnkPopDependent	: "Dependent (Netscape)",
+DlgLnkPopDependent	: "Phụ thuộc (Netscape)",
 DlgLnkPopWidth		: "Rộng",
 DlgLnkPopHeight		: "Cao",
 DlgLnkPopLeft		: "Vị trí Trái",
 DlgLnkPopTop		: "Vị trí Trên",
 
 DlnLnkMsgNoUrl		: "Hãy đưa vào Liên kết URL",
-DlnLnkMsgNoEMail	: "Hãy đưa vào địa chỉ e-mail",
+DlnLnkMsgNoEMail	: "Hãy đưa vào địa chỉ thư điện tử",
 DlnLnkMsgNoAnchor	: "Hãy chọn một Neo",
 
 // Color Dialog
 DlgColorTitle		: "Chọn màu",
 DlgColorBtnClear	: "Xoá",
-DlgColorHighlight	: "Điểm sáng",
+DlgColorHighlight	: "Tô sáng",
 DlgColorSelected	: "Đã chọn",
 
 // Smiley Dialog
-DlgSmileyTitle		: "Chèn một hình cảm xúc",
+DlgSmileyTitle		: "Chèn Hình biểu lộ cảm xúc (mặt cười)",
 
 // Special Character Dialog
-DlgSpecialCharTitle	: "Chọn ký tự đặc biệt",
+DlgSpecialCharTitle	: "Hãy chọn Ký tự đặc biệt",
 
 // Table Dialog
 DlgTableTitle		: "Thuộc tính bảng",
-DlgTableRows		: "Dòng",
+DlgTableRows		: "Hàng",
 DlgTableColumns		: "Cột",
 DlgTableBorder		: "Cỡ Đường viền",
-DlgTableAlign		: "Alignment",
-DlgTableAlignNotSet	: "<Không thiết lập>",
+DlgTableAlign		: "Canh lề",
+DlgTableAlignNotSet	: "<Chưa thiết lập>",
 DlgTableAlignLeft	: "Trái",
 DlgTableAlignCenter	: "Giữa",
 DlgTableAlignRight	: "Phải",
 DlgTableWidth		: "Rộng",
-DlgTableWidthPx		: "điểm",
+DlgTableWidthPx		: "điểm (px)",
 DlgTableWidthPc		: "%",
 DlgTableHeight		: "Cao",
 DlgTableCellSpace	: "Khoảng cách Ô",
 DlgTableCellPad		: "Đệm Ô",
 DlgTableCaption		: "Đầu đề",
+DlgTableSummary		: "Tóm lược",
 
 // Table Cell Dialog
 DlgCellTitle		: "Thuộc tính Ô",
 DlgCellWidth		: "Rộng",
-DlgCellWidthPx		: "điểm",
+DlgCellWidthPx		: "điểm (px)",
 DlgCellWidthPc		: "%",
 DlgCellHeight		: "Cao",
-DlgCellWordWrap		: "Dàn từ",
-DlgCellWordWrapNotSet	: "&lt;Không thiết lập&gt;",
+DlgCellWordWrap		: "Bọc từ",
+DlgCellWordWrapNotSet	: "<Chưa thiết lập>",
 DlgCellWordWrapYes	: "Đồng ý",
 DlgCellWordWrapNo	: "Không",
-DlgCellHorAlign		: "Sắp xếp Ngang",
-DlgCellHorAlignNotSet	: "&lt;Không thiết lập&gt;",
+DlgCellHorAlign		: "Canh theo Chiều ngang",
+DlgCellHorAlignNotSet	: "<Chưa thiết lập>",
 DlgCellHorAlignLeft	: "Trái",
 DlgCellHorAlignCenter	: "Giữa",
 DlgCellHorAlignRight: "Phải",
-DlgCellVerAlign		: "Sắp xếp Dọc",
-DlgCellVerAlignNotSet	: "&lt;Không thiết lập&gt;",
+DlgCellVerAlign		: "Canh theo Chiều dọc",
+DlgCellVerAlignNotSet	: "<Chưa thiết lập>",
 DlgCellVerAlignTop	: "Trên",
 DlgCellVerAlignMiddle	: "Giữa",
 DlgCellVerAlignBottom	: "Dưới",
 DlgCellVerAlignBaseline	: "Baseline",
-DlgCellRowSpan		: "Rows Span",
-DlgCellCollSpan		: "Columns Span",
+DlgCellRowSpan		: "Nối Hàng",
+DlgCellCollSpan		: "Nối Cột",
 DlgCellBackColor	: "Màu nền",
 DlgCellBorderColor	: "Màu viền",
 DlgCellBtnSelect	: "Chọn...",
 
 // Find Dialog
-DlgFindTitle		: "Tìm",
-DlgFindFindBtn		: "Tìm",
-DlgFindNotFoundMsg	: "Chuỗi cần tìm không thấy.",
+DlgFindTitle		: "Tìm kiếm",
+DlgFindFindBtn		: "Tìm kiếm",
+DlgFindNotFoundMsg	: "Không tìm thấy chuỗi cần tìm.",
 
 // Replace Dialog
 DlgReplaceTitle			: "Thay thế",
-DlgReplaceFindLbl		: "Tìm gì:",
+DlgReplaceFindLbl		: "Tìm chuỗi:",
 DlgReplaceReplaceLbl	: "Thay bằng:",
-DlgReplaceCaseChk		: "Đúng chứ HOA/thường",
+DlgReplaceCaseChk		: "Phân biệt chữ HOA/thường",
 DlgReplaceReplaceBtn	: "Thay thế",
 DlgReplaceReplAllBtn	: "Thay thế Tất cả",
-DlgReplaceWordChk		: "Đúng từ",
+DlgReplaceWordChk		: "Đúng toàn bộ từ",
 
 // Paste Operations / Dialog
-PasteErrorPaste	: "An ninh trình duyệt của bạn được thiết lập không cho phép trình soạn thảo tự động thực thi lệnh dán. Hãy sử dụng bàn phím cho lệnh này (Ctrl+V).",
-PasteErrorCut	: "An ninh trình duyệt của bạn được thiết lập không cho phép trình soạn thảo tự động thực thi lệnh cắt. Hãy sử dụng bàn phím cho lệnh này (Ctrl+X).",
-PasteErrorCopy	: "An ninh trình duyệt của bạn được thiết lập không cho phép trình soạn thảo tự động thực thi lệnh sao chép. Hãy sử dụng bàn phím cho lệnh này (Ctrl+C).",
+PasteErrorPaste	: "Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh dán. Hãy sử dụng bàn phím cho lệnh này (Ctrl+V).",
+PasteErrorCut	: "Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh cắt. Hãy sử dụng bàn phím cho lệnh này (Ctrl+X).",
+PasteErrorCopy	: "Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh sao chép. Hãy sử dụng bàn phím cho lệnh này (Ctrl+C).",
 
-PasteAsText		: "Dán ký tự đơn thuần",
+PasteAsText		: "Dán theo định dạng văn bản thuần",
 PasteFromWord	: "Dán với định dạng Word",
 
-DlgPasteMsg2	: "Hãy dán vào trong khung bên dưới, sử dụng tổ hợp phím (<STRONG>Ctrl+V</STRONG>) và nhấn vào nốt <STRONG>Đồng ý</STRONG>.",
-DlgPasteIgnoreFont		: "Chấp nhận các định dạng Font",
-DlgPasteRemoveStyles	: "Xoá tất cả các định dạng Styles",
-DlgPasteCleanBox		: "Xoá sạch",
-
+DlgPasteMsg2	: "Hãy dán nội dung vào trong khung bên dưới, sử dụng tổ hợp phím (<STRONG>Ctrl+V</STRONG>) và nhấn vào nút <STRONG>Đồng ý</STRONG>.",
+DlgPasteIgnoreFont		: "Chấp nhận các định dạng phông",
+DlgPasteRemoveStyles	: "Gỡ bỏ các định dạng Styles",
+DlgPasteCleanBox		: "Xóa nội dung",
 
 // Color Picker
 ColorAutomatic	: "Tự động",
 ColorMoreColors	: "Màu khác...",
 
 // Document Properties
-DocProps		: "Thuộc tính tài liệu",
+DocProps		: "Thuộc tính Tài liệu",
 
 // Anchor Dialog
 DlgAnchorTitle		: "Thuộc tính Neo",
-DlgAnchorName		: "Tên Neo",
-DlgAnchorErrorName	: "Hãy đưa vào tên Neo",
+DlgAnchorName		: "Tên của Neo",
+DlgAnchorErrorName	: "Hãy đưa vào tên của Neo",
 
 // Speller Pages Dialog
-DlgSpellNotInDic		: "Không trong từ điển",
-DlgSpellChangeTo		: "Change to",
+DlgSpellNotInDic		: "Không có trong từ điển",
+DlgSpellChangeTo		: "Chuyển thành",
 DlgSpellBtnIgnore		: "Bỏ qua",
 DlgSpellBtnIgnoreAll	: "Bỏ qua Tất cả",
 DlgSpellBtnReplace		: "Thay thế",
 DlgSpellBtnReplaceAll	: "Thay thế Tất cả",
 DlgSpellBtnUndo			: "Phục hồi lại",
-DlgSpellNoSuggestions	: "- Không đề xuất -",
+DlgSpellNoSuggestions	: "- Không đưa ra gợi ý về từ -",
 DlgSpellProgress		: "Đang tiến hành kiểm tra chính tả...",
 DlgSpellNoMispell		: "Hoàn tất kiểm tra chính tả: Không có lỗi chính tả",
 DlgSpellNoChanges		: "Hoàn tất kiểm tra chính tả: Không từ nào được thay đổi",
 DlgSpellOneChange		: "Hoàn tất kiểm tra chính tả: Một từ đã được thay đổi",
 DlgSpellManyChanges		: "Hoàn tất kiểm tra chính tả: %1 từ đã được thay đổi",
 
-IeSpellDownload			: "Chức năng kiểm tra chính tả chưa được cài đặt. Bạn có tải về ngay bây giờ?",
+IeSpellDownload			: "Chức năng kiểm tra chính tả chưa được cài đặt. Bạn có muốn tải về ngay bây giờ?",
 
 // Button Dialog
-DlgButtonText	: "Text (Value)",
+DlgButtonText	: "Chuỗi hiển thị (Giá trị)",
 DlgButtonType	: "Kiểu",
 
 // Checkbox and Radio Button Dialogs
 DlgCheckboxName		: "Tên",
 DlgCheckboxValue	: "Giá trị",
-DlgCheckboxSelected	: "Đã chọn",
+DlgCheckboxSelected	: "Được chọn",
 
 // Form Dialog
 DlgFormName		: "Tên",
-DlgFormAction	: "Action",
+DlgFormAction	: "Hành động",
 DlgFormMethod	: "Phương thức",
 
 // Select Field Dialog
@@ -382,9 +393,9 @@
 DlgSelectValue		: "Giá trị",
 DlgSelectSize		: "Kích cỡ",
 DlgSelectLines		: "dòng",
-DlgSelectChkMulti	: "Chấp nhận chọn nhiều",
-DlgSelectOpAvail	: "Available Options",
-DlgSelectOpText		: "Text",
+DlgSelectChkMulti	: "Cho phép chọn nhiều",
+DlgSelectOpAvail	: "Các tùy chọn có thể sử dụng",
+DlgSelectOpText		: "Văn bản",
 DlgSelectOpValue	: "Giá trị",
 DlgSelectBtnAdd		: "Thêm",
 DlgSelectBtnModify	: "Thay đổi",
@@ -396,7 +407,7 @@
 // Textarea Dialog
 DlgTextareaName	: "Tên",
 DlgTextareaCols	: "Cột",
-DlgTextareaRows	: "Dòng",
+DlgTextareaRows	: "Hàng",
 
 // Text Field Dialog
 DlgTextName			: "Tên",
@@ -412,48 +423,48 @@
 DlgHiddenValue	: "Giá trị",
 
 // Bulleted List Dialog
-BulletedListProp	: "Thuộc tính Danh sách Bulleted",
-NumberedListProp	: "Thuộc tính Danh sách Số",
+BulletedListProp	: "Thuộc tính Danh sách không thứ tự",
+NumberedListProp	: "Thuộc tính Danh sách có thứ tự",
 DlgLstType			: "Kiểu",
-DlgLstTypeCircle	: "Tròn",
-DlgLstTypeDisc		: "Disc",	//MISSING
-DlgLstTypeSquare	: "Vuông",
-DlgLstTypeNumbers	: "Số (1, 2, 3)",
+DlgLstTypeCircle	: "Hình tròn",
+DlgLstTypeDisc		: "Hình đĩa",
+DlgLstTypeSquare	: "Hình vuông",
+DlgLstTypeNumbers	: "Số thứ tự (1, 2, 3)",
 DlgLstTypeLCase		: "Chữ cái thường (a, b, c)",
 DlgLstTypeUCase		: "Chữ cái hoa (A, B, C)",
-DlgLstTypeSRoman	: "Số LaMa thường (i, ii, iii)",
-DlgLstTypeLRoman	: "Số LaMa hoa (I, II, III)",
+DlgLstTypeSRoman	: "Số La Mã thường (i, ii, iii)",
+DlgLstTypeLRoman	: "Số La Mã hoa (I, II, III)",
 
 // Document Properties Dialog
 DlgDocGeneralTab	: "Toàn thể",
 DlgDocBackTab		: "Nền",
-DlgDocColorsTab		: "Màu sắc và Biên",
-DlgDocMetaTab		: "Meta Data",
+DlgDocColorsTab		: "Màu sắc và Đường biên",
+DlgDocMetaTab		: "Siêu dữ liệu",
 
 DlgDocPageTitle		: "Tiêu đề Trang",
-DlgDocLangDir		: "Đường dẫn Ngôn Ngữ",
+DlgDocLangDir		: "Đường dẫn Ngôn ngữ",
 DlgDocLangDirLTR	: "Trái sang Phải (LTR)",
 DlgDocLangDirRTL	: "Phải sang Trái (RTL)",
 DlgDocLangCode		: "Mã Ngôn ngữ",
-DlgDocCharSet		: "Character Set Encoding",
-DlgDocCharSetOther	: "Other Character Set Encoding",
+DlgDocCharSet		: "Bảng mã ký tự",
+DlgDocCharSetOther	: "Bảng mã ký tự khác",
 
 DlgDocDocType		: "Kiểu Đề mục Tài liệu",
 DlgDocDocTypeOther	: "Kiểu Đề mục Tài liệu khác",
 DlgDocIncXHTML		: "Bao gồm cả định nghĩa XHTML",
 DlgDocBgColor		: "Màu nền",
-DlgDocBgImage		: "Background Image URL",
+DlgDocBgImage		: "URL của Hình ảnh nền",
 DlgDocBgNoScroll	: "Không cuộn nền",
-DlgDocCText			: "Text",
+DlgDocCText			: "Văn bản",
 DlgDocCLink			: "Liên kết",
-DlgDocCVisited		: "Liên kết Đã viếng thăm",
-DlgDocCActive		: "Liên kết Hoạt động",
-DlgDocMargins		: "Biên của Trang",
+DlgDocCVisited		: "Liên kết Đã ghé thăm",
+DlgDocCActive		: "Liên kết Hiện hành",
+DlgDocMargins		: "Đường biên của Trang",
 DlgDocMaTop			: "Trên",
 DlgDocMaLeft		: "Trái",
 DlgDocMaRight		: "Phải",
 DlgDocMaBottom		: "Dưới",
-DlgDocMeIndex		: "Document Indexing Keywords (comma separated)",
+DlgDocMeIndex		: "Các từ khóa chỉ mục tài liệu (phân cách bởi dấu phẩy)",
 DlgDocMeDescr		: "Mô tả tài liệu",
 DlgDocMeAuthor		: "Tác giả",
 DlgDocMeCopy		: "Bản quyền",
@@ -462,14 +473,15 @@
 // Templates Dialog
 Templates			: "Mẫu dựng sẵn",
 DlgTemplatesTitle	: "Nội dung Mẫu dựng sẵn",
-DlgTemplatesSelMsg	: "Please select the template to open in the editor<br>(the actual contents will be lost):",
-DlgTemplatesLoading	: "Đang nạp Danh sách Mẫu dựng sẵn. Xin hãy chờ...",
+DlgTemplatesSelMsg	: "Hãy chọn Mẫu dựng sẵn để mở trong trình biên tập<br>(nội dung hiện tại sẽ bị mất):",
+DlgTemplatesLoading	: "Đang nạp Danh sách Mẫu dựng sẵn. Vui lòng đợi trong giây lát...",
 DlgTemplatesNoTpl	: "(Không có Mẫu dựng sẵn nào được định nghĩa)",
 
 // About Dialog
 DlgAboutAboutTab	: "Giới thiệu",
 DlgAboutBrowserInfoTab	: "Thông tin trình duyệt",
+DlgAboutLicenseTab	: "Giấy phép",
 DlgAboutVersion		: "phiên bản",
-DlgAboutLicense		: "Licensed under the terms of the GNU Lesser General Public License",
-DlgAboutInfo		: "Thông tin thêm hãy đến"
+DlgAboutLicense		: "Được cấp phép theo các điều khoản của giấy phép GNU Lesser General Public License",
+DlgAboutInfo		: "Để biết thêm thông tin, hãy truy cập"
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/zh-cn.js 1.4.1.src/fckeditor/editor/lang/zh-cn.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/zh-cn.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/zh-cn.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -14,7 +14,7 @@
  * 	Chinese Simplified language file.
  * 
  * File Authors:
- * 		NetRube (NetRube@126.com)
+ * 		NetRube (NetRube@gmail.com)
  */
 
 var FCKLang =
@@ -85,6 +85,8 @@
 Replace				: "替换",
 SpellCheck			: "拼写检查",
 UniversalKeyboard	: "软键盘",
+PageBreakLbl		: "分页符",
+PageBreak			: "插入分页符",
 
 Form			: "表单",
 Checkbox		: "复选框",
@@ -96,8 +98,13 @@
 SelectionField	: "列表/菜单",
 ImageButton		: "图像域",
 
+FitWindow		: "全屏编辑",
+
 // Context Menu
 EditLink			: "编辑超链接",
+CellCM				: "单元格",
+RowCM				: "行",
+ColumnCM			: "列",
 InsertRow			: "插入行",
 DeleteRows			: "删除行",
 InsertColumn		: "插入列",
@@ -106,6 +113,7 @@
 DeleteCells			: "删除单元格",
 MergeCells			: "合并单元格",
 SplitCell			: "拆分单元格",
+TableDelete			: "删除表格",
 CellProperties		: "单元格属性",
 TableProperties		: "表格属性",
 ImageProperties		: "图象属性",
@@ -122,7 +130,7 @@
 TextareaProp		: "多行文本属性",
 FormProp			: "表单属性",
 
-FontFormats			: "普通;带格式的;地址;标题 1;标题 2;标题 3;标题 4;标题 5;标题 6;段落(DIV)",
+FontFormats			: "普通;已编排格式;地址;标题 1;标题 2;标题 3;标题 4;标题 5;标题 6;段落(DIV)",
 
 // Alerts and Messages
 ProcessingXHTML		: "正在处理 XHTML，请稍等...",
@@ -133,7 +141,9 @@
 UnknownCommand		: "未知命令名称 \"%1\"",
 NotImplemented		: "命令无法执行",
 UnknownToolbarSet	: "工具栏设置 \"%1\" 不存在",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "浏览器安全设置限制了本编辑器的某些功能。您必须启用安全设置中的“运行 ActiveX 控件和插件”，否则将出现某些错误并缺少功能。",
+BrowseServerBlocked : "无法打开资源浏览器，请确认是否启用了禁止弹出窗口。",
+DialogBlocked		: "无法打开对话框窗口，请确认是否启用了禁止弹出窗口或网页对话框（IE）。",
 
 // Dialogs
 DlgBtnOK			: "确定",
@@ -141,12 +151,12 @@
 DlgBtnClose			: "关闭",
 DlgBtnBrowseServer	: "浏览服务器",
 DlgAdvancedTag		: "高级",
-DlgOpOther			: "&lt;其它&gt;",
+DlgOpOther			: "<其它>",
 DlgInfoTab			: "信息",
 DlgAlertUrl			: "请插入 URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;没有设置&gt;",
+DlgGenNotSet		: "<没有设置>",
 DlgGenId			: "ID",
 DlgGenLangDir		: "语言方向",
 DlgGenLangDirLtr	: "从左到右 (LTR)",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "页内锚点链接",
 DlgLnkTypeEMail		: "电子邮件",
 DlgLnkProto			: "协议",
-DlgLnkProtoOther	: "&lt;其它&gt;",
+DlgLnkProtoOther	: "<其它>",
 DlgLnkURL			: "地址",
 DlgLnkAnchorSel		: "选择一个锚点",
 DlgLnkAnchorByName	: "按锚点名称",
 DlgLnkAnchorById	: "按锚点 ID",
-DlgLnkNoAnchors		: "&lt;此文档没有可用的锚点&gt;",
+DlgLnkNoAnchors		: "<此文档没有可用的锚点>",
 DlgLnkEMail			: "地址",
 DlgLnkEMailSubject	: "主题",
 DlgLnkEMailBody		: "内容",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "发送到服务器上",
 
 DlgLnkTarget		: "目标",
-DlgLnkTargetFrame	: "&lt;框架&gt;",
-DlgLnkTargetPopup	: "&lt;弹出窗口&gt;",
+DlgLnkTargetFrame	: "<框架>",
+DlgLnkTargetPopup	: "<弹出窗口>",
 DlgLnkTargetBlank	: "新窗口 (_blank)",
 DlgLnkTargetParent	: "父窗口 (_parent)",
 DlgLnkTargetSelf	: "本窗口 (_self)",
@@ -267,7 +277,7 @@
 DlgTableColumns		: "列数",
 DlgTableBorder		: "边框",
 DlgTableAlign		: "对齐",
-DlgTableAlignNotSet	: "&lt;没有设置&gt;",
+DlgTableAlignNotSet	: "<没有设置>",
 DlgTableAlignLeft	: "左对齐",
 DlgTableAlignCenter	: "居中",
 DlgTableAlignRight	: "右对齐",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "间距",
 DlgTableCellPad		: "边距",
 DlgTableCaption		: "标题",
+DlgTableSummary		: "摘要",
 
 // Table Cell Dialog
 DlgCellTitle		: "单元格属性",
@@ -286,16 +297,16 @@
 DlgCellWidthPc		: "百分比",
 DlgCellHeight		: "高度",
 DlgCellWordWrap		: "自动换行",
-DlgCellWordWrapNotSet	: "&lt;没有设置&gt;",
+DlgCellWordWrapNotSet	: "<没有设置>",
 DlgCellWordWrapYes	: "是",
 DlgCellWordWrapNo	: "否",
 DlgCellHorAlign		: "水平对齐",
-DlgCellHorAlignNotSet	: "&lt;没有设置&gt;",
+DlgCellHorAlignNotSet	: "<没有设置>",
 DlgCellHorAlignLeft	: "左对齐",
 DlgCellHorAlignCenter	: "居中",
 DlgCellHorAlignRight: "右对齐",
 DlgCellVerAlign		: "垂直对齐",
-DlgCellVerAlignNotSet	: "&lt;没有设置&gt;",
+DlgCellVerAlignNotSet	: "<没有设置>",
 DlgCellVerAlignTop	: "顶端",
 DlgCellVerAlignMiddle	: "居中",
 DlgCellVerAlignBottom	: "底部",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "清理 CSS 样式",
 DlgPasteCleanBox		: "清空上面内容",
 
-
 // Color Picker
 ColorAutomatic	: "自动",
 ColorMoreColors	: "其它颜色...",
@@ -416,7 +426,7 @@
 NumberedListProp	: "编号列表属性",
 DlgLstType			: "列表类型",
 DlgLstTypeCircle	: "圆圈",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "圆点",
 DlgLstTypeSquare	: "方块",
 DlgLstTypeNumbers	: "数字 (1, 2, 3)",
 DlgLstTypeLCase		: "小写字母 (a, b, c)",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "关于",
 DlgAboutBrowserInfoTab	: "浏览器信息",
+DlgAboutLicenseTab	: "许可证",
 DlgAboutVersion		: "版本",
 DlgAboutLicense		: "基于 GNU 通用公共许可证授权发布 ",
 DlgAboutInfo		: "要获得更多信息请访问 "
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/lang/zh.js 1.4.1.src/fckeditor/editor/lang/zh.js
--- 1.4.0sr5-1.src/fckeditor/editor/lang/zh.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/lang/zh.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -84,7 +84,9 @@
 Find				: "尋找",
 Replace				: "取代",
 SpellCheck			: "拼字檢查",
-UniversalKeyboard	: "各國鍵盤",
+UniversalKeyboard	: "萬國鍵盤",
+PageBreakLbl		: "分頁符號",
+PageBreak			: "插入分頁符號",
 
 Form			: "表單",
 Checkbox		: "核取方塊",
@@ -96,8 +98,13 @@
 SelectionField	: "清單/選單",
 ImageButton		: "影像按鈕",
 
+FitWindow		: "編輯器最大化",
+
 // Context Menu
 EditLink			: "編輯超連結",
+CellCM				: "儲存格",
+RowCM				: "列",
+ColumnCM			: "欄",
 InsertRow			: "插入列",
 DeleteRows			: "刪除列",
 InsertColumn		: "插入欄",
@@ -106,6 +113,7 @@
 DeleteCells			: "刪除儲存格",
 MergeCells			: "合併儲存格",
 SplitCell			: "分割儲存格",
+TableDelete			: "刪除表格",
 CellProperties		: "儲存格屬性",
 TableProperties		: "表格屬性",
 ImageProperties		: "影像屬性",
@@ -127,13 +135,15 @@
 // Alerts and Messages
 ProcessingXHTML		: "處理 XHTML 中，請稍候…",
 Done				: "完成",
-PasteWordConfirm	: "您想要貼上的文字似乎是自 Word 複製而來，請問您是否要先清除 Word 的格式後再行貼上？",
+PasteWordConfirm	: "您想貼上的文字似乎是自 Word 複製而來，請問您是否要先清除 Word 的格式後再行貼上？",
 NotCompatiblePaste	: "此指令僅在 Internet Explorer 5.5 或以上的版本有效。請問您是否同意不清除格式即貼上？",
 UnknownToolbarItem	: "未知工具列項目 \"%1\"",
 UnknownCommand		: "未知指令名稱 \"%1\"",
 NotImplemented		: "尚未安裝此指令",
 UnknownToolbarSet	: "工具列設定 \"%1\" 不存在",
-NoActiveX			: "You browser's security settings could limit some features of the editor. You must enable the option \"Run ActiveX controls and plug-ins\". You may experience errors and notice missing features.",	//MISSING
+NoActiveX			: "瀏覽器的安全性設定限制了本編輯器的某些功能。您必須啟用安全性設定中的「執行ActiveX控制項與外掛程式」項目，否則本編輯器將會出現錯誤並缺少某些功能",
+BrowseServerBlocked : "無法開啟資源瀏覽器，請確定所有快顯視窗封鎖程式是否關閉",
+DialogBlocked		: "無法開啟對話視窗，請確定所有快顯視窗封鎖程式是否關閉",
 
 // Dialogs
 DlgBtnOK			: "確定",
@@ -141,12 +151,12 @@
 DlgBtnClose			: "關閉",
 DlgBtnBrowseServer	: "瀏覽伺服器端",
 DlgAdvancedTag		: "進階",
-DlgOpOther			: "&lt;其他&gt;",
+DlgOpOther			: "<其他>",
 DlgInfoTab			: "資訊",
 DlgAlertUrl			: "請插入 URL",
 
 // General Dialogs Labels
-DlgGenNotSet		: "&lt;尚未設定&gt;",
+DlgGenNotSet		: "<尚未設定>",
 DlgGenId			: "ID",
 DlgGenLangDir		: "語言方向",
 DlgGenLangDirLtr	: "由左而右 (LTR)",
@@ -210,12 +220,12 @@
 DlgLnkTypeAnchor	: "本頁錨點",
 DlgLnkTypeEMail		: "電子郵件",
 DlgLnkProto			: "通訊協定",
-DlgLnkProtoOther	: "&lt;其他&gt;",
+DlgLnkProtoOther	: "<其他>",
 DlgLnkURL			: "URL",
 DlgLnkAnchorSel		: "請選擇錨點",
 DlgLnkAnchorByName	: "依錨點名稱",
 DlgLnkAnchorById	: "依元件 ID",
-DlgLnkNoAnchors		: "&lt;本文件尚無可用之錨點&gt;",
+DlgLnkNoAnchors		: "<本文件尚無可用之錨點>",
 DlgLnkEMail			: "電子郵件",
 DlgLnkEMailSubject	: "郵件主旨",
 DlgLnkEMailBody		: "郵件內容",
@@ -223,8 +233,8 @@
 DlgLnkBtnUpload		: "傳送至伺服器",
 
 DlgLnkTarget		: "目標",
-DlgLnkTargetFrame	: "&lt;框架&gt;",
-DlgLnkTargetPopup	: "&lt;快顯視窗&gt;",
+DlgLnkTargetFrame	: "<框架>",
+DlgLnkTargetPopup	: "<快顯視窗>",
 DlgLnkTargetBlank	: "新視窗 (_blank)",
 DlgLnkTargetParent	: "父視窗 (_parent)",
 DlgLnkTargetSelf	: "本視窗 (_self)",
@@ -267,7 +277,7 @@
 DlgTableColumns		: "欄數",
 DlgTableBorder		: "邊框",
 DlgTableAlign		: "對齊",
-DlgTableAlignNotSet	: "&lt;未設定&gt;",
+DlgTableAlignNotSet	: "<未設定>",
 DlgTableAlignLeft	: "靠左對齊",
 DlgTableAlignCenter	: "置中",
 DlgTableAlignRight	: "靠右對齊",
@@ -278,6 +288,7 @@
 DlgTableCellSpace	: "間距",
 DlgTableCellPad		: "內距",
 DlgTableCaption		: "標題",
+DlgTableSummary		: "摘要",
 
 // Table Cell Dialog
 DlgCellTitle		: "儲存格屬性",
@@ -286,16 +297,16 @@
 DlgCellWidthPc		: "百分比",
 DlgCellHeight		: "高度",
 DlgCellWordWrap		: "自動換行",
-DlgCellWordWrapNotSet	: "&lt;尚未設定&gt;",
+DlgCellWordWrapNotSet	: "<尚未設定>",
 DlgCellWordWrapYes	: "是",
 DlgCellWordWrapNo	: "否",
 DlgCellHorAlign		: "水平對齊",
-DlgCellHorAlignNotSet	: "&lt;尚未設定&gt;",
+DlgCellHorAlignNotSet	: "<尚未設定>",
 DlgCellHorAlignLeft	: "靠左對齊",
 DlgCellHorAlignCenter	: "置中",
 DlgCellHorAlignRight: "靠右對齊",
 DlgCellVerAlign		: "垂直對齊",
-DlgCellVerAlignNotSet	: "&lt;尚未設定&gt;",
+DlgCellVerAlignNotSet	: "<尚未設定>",
 DlgCellVerAlignTop	: "靠上對齊",
 DlgCellVerAlignMiddle	: "置中",
 DlgCellVerAlignBottom	: "靠下對齊",
@@ -321,9 +332,9 @@
 DlgReplaceWordChk		: "全字相符",
 
 // Paste Operations / Dialog
-PasteErrorPaste	: "您的瀏覽器的安全性設定不允編輯器自動執行貼上動作。請使用快捷鍵 (Ctrl+V) 貼上。",
-PasteErrorCut	: "您的瀏覽器的安全性設定不允編輯器自動執行剪下動作。請使用快捷鍵 (Ctrl+X) 剪下。",
-PasteErrorCopy	: "您的瀏覽器的安全性設定不允編輯器自動執行複製動作。請使用快捷鍵 (Ctrl+C) 複製。",
+PasteErrorPaste	: "瀏覽器的安全性設定不允許編輯器自動執行貼上動作。請使用快捷鍵 (Ctrl+V) 貼上。",
+PasteErrorCut	: "瀏覽器的安全性設定不允許編輯器自動執行剪下動作。請使用快捷鍵 (Ctrl+X) 剪下。",
+PasteErrorCopy	: "瀏覽器的安全性設定不允許編輯器自動執行複製動作。請使用快捷鍵 (Ctrl+C) 複製。",
 
 PasteAsText		: "貼為純文字格式",
 PasteFromWord	: "自 Word 貼上",
@@ -333,7 +344,6 @@
 DlgPasteRemoveStyles	: "移除樣式設定",
 DlgPasteCleanBox		: "清除文字區域",
 
-
 // Color Picker
 ColorAutomatic	: "自動",
 ColorMoreColors	: "更多顏色…",
@@ -416,7 +426,7 @@
 NumberedListProp	: "編號清單屬性",
 DlgLstType			: "清單類型",
 DlgLstTypeCircle	: "圓圈",
-DlgLstTypeDisc		: "Disc",	//MISSING
+DlgLstTypeDisc		: "圓點",
 DlgLstTypeSquare	: "方塊",
 DlgLstTypeNumbers	: "數字 (1, 2, 3)",
 DlgLstTypeLCase		: "小寫字母 (a, b, c)",
@@ -469,6 +479,7 @@
 // About Dialog
 DlgAboutAboutTab	: "關於",
 DlgAboutBrowserInfoTab	: "瀏覽器資訊",
+DlgAboutLicenseTab	: "許可證",
 DlgAboutVersion		: "版本",
 DlgAboutLicense		: "依據 GNU 較寬鬆公共許可證(LGPL)發佈",
 DlgAboutInfo		: "想獲得更多資訊請至 "
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/autogrow/fckplugin.js 1.4.1.src/fckeditor/editor/plugins/autogrow/fckplugin.js
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/autogrow/fckplugin.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/plugins/autogrow/fckplugin.js	2006-09-03 13:05:04.000000000 -0500
@@ -0,0 +1,85 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckplugin.js
+ * 	Plugin: automatically resizes the editor until a configurable maximun 
+ * 	height (FCKConfig.AutoGrowMax), based on its contents.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKAutoGrow_Min = window.frameElement.offsetHeight ;
+
+function FCKAutoGrow_Check()
+{
+	var oInnerDoc = FCK.EditorDocument ;
+
+	var iFrameHeight, iInnerHeight ;
+	
+	if ( FCKBrowserInfo.IsIE )
+	{
+		iFrameHeight = FCK.EditorWindow.frameElement.offsetHeight ;
+		iInnerHeight = oInnerDoc.body.scrollHeight ;
+	}
+	else
+	{
+		iFrameHeight = FCK.EditorWindow.innerHeight ;
+		iInnerHeight = oInnerDoc.body.offsetHeight ;
+	}
+
+	var iDiff = iInnerHeight - iFrameHeight ;
+
+	if ( iDiff != 0 )
+	{
+		var iMainFrameSize = window.frameElement.offsetHeight ;
+		
+		if ( iDiff > 0 && iMainFrameSize < FCKConfig.AutoGrowMax )
+		{
+			iMainFrameSize += iDiff ;
+			if ( iMainFrameSize > FCKConfig.AutoGrowMax )
+				iMainFrameSize = FCKConfig.AutoGrowMax ;
+		}
+		else if ( iDiff < 0 && iMainFrameSize > FCKAutoGrow_Min )
+		{
+			iMainFrameSize += iDiff ;
+			if ( iMainFrameSize < FCKAutoGrow_Min )
+				iMainFrameSize = FCKAutoGrow_Min ;
+		}
+		else
+			return ;
+			
+		window.frameElement.height = iMainFrameSize ;
+	}
+}
+
+FCK.AttachToOnSelectionChange( FCKAutoGrow_Check ) ;
+
+function FCKAutoGrow_SetListeners()
+{
+	FCK.EditorWindow.attachEvent( 'onscroll', FCKAutoGrow_Check ) ;
+	FCK.EditorDocument.attachEvent( 'onkeyup', FCKAutoGrow_Check ) ;
+}
+
+if ( FCKBrowserInfo.IsIE )
+{
+//	FCKAutoGrow_SetListeners() ;
+	FCK.Events.AttachEvent( 'OnAfterSetHTML', FCKAutoGrow_SetListeners ) ;
+}
+
+function FCKAutoGrow_CheckEditorStatus( sender, status )
+{
+	if ( status == FCK_STATUS_COMPLETE )
+		FCKAutoGrow_Check() ;
+}
+
+FCK.Events.AttachEvent( 'OnStatusChange', FCKAutoGrow_CheckEditorStatus ) ;
\ No newline at end of file
Binary files 1.4.0sr5-1.src/fckeditor/editor/plugins/CloseWindow/closewindow.gif and 1.4.1.src/fckeditor/editor/plugins/CloseWindow/closewindow.gif differ
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/CloseWindow/fckplugin.js 1.4.1.src/fckeditor/editor/plugins/CloseWindow/fckplugin.js
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/CloseWindow/fckplugin.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/plugins/CloseWindow/fckplugin.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,29 +0,0 @@
-// Register the related command.
-var FCKCloseWindow = function(name)
-{
-	this.Name = name;
-}
-
-
-FCKCloseWindow.prototype.Execute = function()
-{
-	parent.window.close();
-}
-
-// manage the plugins' button behavior
-FCKCloseWindow.prototype.GetState = function()
-{
-	return FCK_TRISTATE_OFF;
-	// default behavior, sometimes you wish to have some kind of if statement here
-}
-
-
-FCKCommands.RegisterCommand( 'My_CloseWindow', new FCKCloseWindow('CloseWindow'));
-
-
-// Create the "Plaholder" toolbar button.
-var oCloseWindowItem = new FCKToolbarButton( 'My_CloseWindow', FCKLang.CloseWindow ) ; //opject_name, button_alt_text
-oCloseWindowItem.IconPath = FCKConfig.PluginsPath + 'CloseWindow/closewindow.gif' ;
-FCKToolbarItems.RegisterItem( 'CloseWindow', oCloseWindowItem ) ;
-
-
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/CloseWindow/lang/cs.js 1.4.1.src/fckeditor/editor/plugins/CloseWindow/lang/cs.js
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/CloseWindow/lang/cs.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/plugins/CloseWindow/lang/cs.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,22 +0,0 @@
-/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2004 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * File Name: en.js
- * 	English language file for the sample plugin.
- * 
- * Version:  2.0 RC2
- * Modified: 2004-11-22 11:20:42
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-FCKLang.CloseWindow = 'Zavřít okno a přenést změny do hlavního okna';
-
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/CloseWindow/lang/en.js 1.4.1.src/fckeditor/editor/plugins/CloseWindow/lang/en.js
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/CloseWindow/lang/en.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/plugins/CloseWindow/lang/en.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,21 +0,0 @@
-/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2004 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * File Name: en.js
- * 	English language file for the sample plugin.
- * 
- * Version:  2.0 RC2
- * Modified: 2004-11-22 11:20:42
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-FCKLang.CloseWindow = 'Close window and transport changes to main page.';
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/CloseWindow/lang/nl.js 1.4.1.src/fckeditor/editor/plugins/CloseWindow/lang/nl.js
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/CloseWindow/lang/nl.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/plugins/CloseWindow/lang/nl.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,21 +0,0 @@
-/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2004 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * File Name: en.js
- * 	English language file for the sample plugin.
- * 
- * Version:  2.0 RC2
- * Modified: 2004-11-22 11:20:42
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-FCKLang.CloseWindow = 'Sluit scherm';
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/FullWindow/fckplugin.js 1.4.1.src/fckeditor/editor/plugins/FullWindow/fckplugin.js
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/FullWindow/fckplugin.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/plugins/FullWindow/fckplugin.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,32 +0,0 @@
-// Register the related command.
-
-var FCKFullWindow = function(name) 
-{ 
-this.Name = name; 
-}
-
-
-FCKFullWindow.prototype.Execute = function() 
-{ 
-	var oDialogInfo = new Object() ;
-	oDialogInfo.Editor = window;
-	FCKDialog.Show(oDialogInfo, 'FullScreen', FCKConfig.PluginsPath + 'FullWindow/fullwindow.html?name=' + FCK.Name,
-                800, 780, window, true);
-    
-} 
- 
-// manage the plugins' button behavior 
-FCKFullWindow.prototype.GetState = function() 
-{ 
-  return FCK_TRISTATE_OFF; 
-  // default behavior, sometimes you wish to have some kind of if statement here 
-} 
-
-FCKCommands.RegisterCommand( 'FullWindow', new FCKFullWindow('FullWindow'));
-
-// Create the "Plaholder" toolbar button.
-var oFullWindowItem = new FCKToolbarButton( "FullWindow", FCKLang.FullWindow ) ;
-oFullWindowItem.IconPath = FCKConfig.PluginsPath + 'FullWindow/fullwindow.gif' ;
-FCKToolbarItems.RegisterItem( 'FullWindow', oFullWindowItem ) ;
-
-
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/FullWindow/fckplugin.txt 1.4.1.src/fckeditor/editor/plugins/FullWindow/fckplugin.txt
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/FullWindow/fckplugin.txt	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/plugins/FullWindow/fckplugin.txt	1969-12-31 18:00:00.000000000 -0600
@@ -1,32 +0,0 @@
-// Register the related command.
-
-var FCKFullWindow = function(name) 
-{ 
-this.Name = name; 
-}
-
-
-FCKFullWindow.prototype.Execute = function() 
-{ 
-	//open window with new editor. parameter is not used now
-	//oDialog = new FCKDialog;
-	FCKDialog.Show('', 'FullScreen', FCKConfig.PluginsPath + 'FullWindow/fullwindow.html?name=' + FCK.Name,
-                640, 480, window, true);
-    FCK.EditorDocument.designMode = "off";
-} 
- 
-// manage the plugins' button behavior 
-FCKFullWindow.prototype.GetState = function() 
-{ 
-  return FCK_TRISTATE_OFF; 
-  // default behavior, sometimes you wish to have some kind of if statement here 
-} 
-
-FCKCommands.RegisterCommand( 'My_FullWindow', new FCKFullWindow('FullWindow'));
-
-// Create the "Plaholder" toolbar button.
-var oFullWindowItem = new FCKToolbarButton( 'My_FullWindow', FCKLang.FullWindow ) ;
-oFullWindowItem.IconPath = FCKConfig.PluginsPath + 'FullWindow/fullwindow.gif' ;
-FCKToolbarItems.RegisterItem( 'FullWindow', oFullWindowItem ) ;
-
-
Binary files 1.4.0sr5-1.src/fckeditor/editor/plugins/FullWindow/fullwindow.gif and 1.4.1.src/fckeditor/editor/plugins/FullWindow/fullwindow.gif differ
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/FullWindow/fullwindow.html 1.4.1.src/fckeditor/editor/plugins/FullWindow/fullwindow.html
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/FullWindow/fullwindow.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/plugins/FullWindow/fullwindow.html	1969-12-31 18:00:00.000000000 -0600
@@ -1,43 +0,0 @@
-<html><head><title>FullWindow</title>
-<script src="../../../fckeditor.js"></script>
-
-<style>
-body { margin: 0; background: #efefde; }
-</style>
-
-</head>
-<body>
-<script>
-	if ( !dialogArguments )
-		dialogArguments = window.opener.FCKLastDialogInfo ;
-
-	var oEditor 	= dialogArguments.Editor;
-	var FCK			= oEditor.FCK ;
-	var FCKConfig	= oEditor.FCKConfig ;  
-	
-	var oFCKeditor = new FCKeditor('FCKeditor1', '100%', '100%' ,'NewToolbarClose') ;
-	oFCKeditor.BasePath = '../../../';
-	
-	//get content from opener fck
-	oFCKeditor.Value = ( FCKConfig.EnableXHTML && FCKConfig.EnableSourceXHTML ? FCK.GetXHTML( FCKConfig.FormatSource ) : FCK.GetHTML( FCKConfig.FormatSource ) )
-
-  
-	var loadConfig = new Array('EditorAreaCSS', 'StylesXmlPath', 'AutoDetectLanguage', 'DefaultLanguage', 'LinkBrowserURL', 
-								 'ImageBrowserURL', 'SkinPath', 'BaseHref');
-	
-	
-	for(var i = 0; i < loadConfig.length; i++)
-		eval("oFCKeditor.Config['"+loadConfig[i]+"'] = FCKConfig."+loadConfig[i]+";");
-	
-	oFCKeditor.Create() ;
-  
-	window.onunload = closeWindow;
-	
-	function closeWindow(){
-		var oFCKeditor = FCKeditorAPI.GetInstance('FCKeditor1');
-		FCK.SetHTML(oFCKeditor.GetXHTML(FCKConfig.FormatSource));
-		oEditor.focus();
-	}
-
-</script>
-</body></html>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/FullWindow/lang/cs.js 1.4.1.src/fckeditor/editor/plugins/FullWindow/lang/cs.js
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/FullWindow/lang/cs.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/plugins/FullWindow/lang/cs.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,22 +0,0 @@
-/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2004 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * File Name: en.js
- * 	English language file for the sample plugin.
- * 
- * Version:  2.0 RC2
- * Modified: 2004-11-22 11:20:42
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
- 
-FCKLang.FullWindow	= 'Otevřít editor v novém okně' ;
-
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/FullWindow/lang/en.js 1.4.1.src/fckeditor/editor/plugins/FullWindow/lang/en.js
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/FullWindow/lang/en.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/plugins/FullWindow/lang/en.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,20 +0,0 @@
-/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2004 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * File Name: en.js
- * 	English language file for the sample plugin.
- * 
- * Version:  2.0 RC2
- * Modified: 2004-11-22 11:20:42
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-FCKLang.FullWindow	= 'Open editor in new full window' ;
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/FullWindow/lang/nl.js 1.4.1.src/fckeditor/editor/plugins/FullWindow/lang/nl.js
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/FullWindow/lang/nl.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/plugins/FullWindow/lang/nl.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,20 +0,0 @@
-/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2004 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * File Name: en.js
- * 	English language file for the sample plugin.
- * 
- * Version:  2.0 RC2
- * Modified: 2004-11-22 11:20:42
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-FCKLang.FullWindow	= 'Open in volledig scherm' ;
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/placeholder/fck_placeholder.html 1.4.1.src/fckeditor/editor/plugins/placeholder/fck_placeholder.html
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/placeholder/fck_placeholder.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/plugins/placeholder/fck_placeholder.html	2006-06-17 16:25:29.000000000 -0500
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/placeholder/fckplugin.js 1.4.1.src/fckeditor/editor/plugins/placeholder/fckplugin.js
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/placeholder/fckplugin.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/plugins/placeholder/fckplugin.js	2006-06-17 16:25:29.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -23,6 +23,7 @@
 // Create the "Plaholder" toolbar button.
 var oPlaceholderItem = new FCKToolbarButton( 'Placeholder', FCKLang.PlaceholderBtn ) ;
 oPlaceholderItem.IconPath = FCKPlugins.Items['placeholder'].Path + 'placeholder.gif' ;
+
 FCKToolbarItems.RegisterItem( 'Placeholder', oPlaceholderItem ) ;
 
 
@@ -162,9 +163,6 @@
 
 FCK.Events.AttachEvent( 'OnAfterSetHTML', FCKPlaceholders.Redraw ) ;
 
-// The "Redraw" method must be called on startup.
-FCKPlaceholders.Redraw() ;
-
 // We must process the SPAN tags to replace then with the real resulting value of the placeholder.
 FCKXHtml.TagProcessors['span'] = function( node, htmlNode )
 {
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/placeholder/lang/de.js 1.4.1.src/fckeditor/editor/plugins/placeholder/lang/de.js
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/placeholder/lang/de.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/plugins/placeholder/lang/de.js	2006-06-17 16:25:30.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/placeholder/lang/en.js 1.4.1.src/fckeditor/editor/plugins/placeholder/lang/en.js
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/placeholder/lang/en.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/plugins/placeholder/lang/en.js	2006-06-17 16:25:30.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/placeholder/lang/fr.js 1.4.1.src/fckeditor/editor/plugins/placeholder/lang/fr.js
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/placeholder/lang/fr.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/plugins/placeholder/lang/fr.js	2006-06-17 16:25:31.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/placeholder/lang/it.js 1.4.1.src/fckeditor/editor/plugins/placeholder/lang/it.js
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/placeholder/lang/it.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/plugins/placeholder/lang/it.js	2006-06-17 16:25:31.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/placeholder/lang/pl.js 1.4.1.src/fckeditor/editor/plugins/placeholder/lang/pl.js
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/placeholder/lang/pl.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/plugins/placeholder/lang/pl.js	2006-06-17 16:25:31.000000000 -0500
@@ -0,0 +1,23 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: pl.js
+ * 	Placholder Polish language file.
+ * 
+ * File Authors:
+ * 		Marcin Pietrzak (fck@iworks.pl)
+ */
+FCKLang.PlaceholderBtn			= 'Wstaw/Edytuj nagłówek' ;
+FCKLang.PlaceholderDlgTitle		= 'Właśności nagłówka' ;
+FCKLang.PlaceholderDlgName		= 'Nazwa nagłówka' ;
+FCKLang.PlaceholderErrNoName	= 'Proszę wprowadzić nazwę nagłówka' ;
+FCKLang.PlaceholderErrNameInUse	= 'Podana nazwa jest już w użyciu' ;
\ No newline at end of file
Binary files 1.4.0sr5-1.src/fckeditor/editor/plugins/placeholder/placeholder.gif and 1.4.1.src/fckeditor/editor/plugins/placeholder/placeholder.gif differ
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/simplecommands/fckplugin.js 1.4.1.src/fckeditor/editor/plugins/simplecommands/fckplugin.js
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/simplecommands/fckplugin.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/plugins/simplecommands/fckplugin.js	2006-06-17 16:25:38.000000000 -0500
@@ -0,0 +1,25 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckplugin.js
+ * 	This plugin register Toolbar items for the combos modifying the style to 
+ * 	not show the box.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+FCKToolbarItems.RegisterItem( 'SourceSimple'	, new FCKToolbarButton( 'Source', FCKLang.Source, null, FCK_TOOLBARITEM_ONLYICON, true, true, 1 ) ) ;
+FCKToolbarItems.RegisterItem( 'StyleSimple'		, new FCKToolbarStyleCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ;
+FCKToolbarItems.RegisterItem( 'FontNameSimple'	, new FCKToolbarFontsCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ;
+FCKToolbarItems.RegisterItem( 'FontSizeSimple'	, new FCKToolbarFontSizeCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ;
+FCKToolbarItems.RegisterItem( 'FontFormatSimple', new FCKToolbarFontFormatCombo( null, FCK_TOOLBARITEM_ONLYTEXT ) ) ;
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/plugins/tablecommands/fckplugin.js 1.4.1.src/fckeditor/editor/plugins/tablecommands/fckplugin.js
--- 1.4.0sr5-1.src/fckeditor/editor/plugins/tablecommands/fckplugin.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/plugins/tablecommands/fckplugin.js	2006-06-17 16:25:31.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -8,6 +8,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fckplugin.js
  * 	This plugin register the required Toolbar items to be able to insert the
  * 	toolbar commands in the toolbar.
@@ -16,11 +18,11 @@
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
  */
 
-FCKToolbarItems.RegisterItem( 'TableInsertRow'		, new FCKToolbarButton( 'TableInsertRow'	, FCKLang.InsertRow ) ) ;
-FCKToolbarItems.RegisterItem( 'TableDeleteRows'		, new FCKToolbarButton( 'TableDeleteRows'	, FCKLang.DeleteRows ) ) ;
-FCKToolbarItems.RegisterItem( 'TableInsertColumn'	, new FCKToolbarButton( 'TableInsertColumn'	, FCKLang.InsertColumn ) ) ;
-FCKToolbarItems.RegisterItem( 'TableDeleteColumns'	, new FCKToolbarButton( 'TableDeleteColumns', FCKLang.DeleteColumns ) ) ;
-FCKToolbarItems.RegisterItem( 'TableInsertCell'		, new FCKToolbarButton( 'TableInsertCell'	, FCKLang.InsertCell ) ) ;
-FCKToolbarItems.RegisterItem( 'TableDeleteCells'	, new FCKToolbarButton( 'TableDeleteCells'	, FCKLang.DeleteCells ) ) ;
-FCKToolbarItems.RegisterItem( 'TableMergeCells'		, new FCKToolbarButton( 'TableMergeCells'	, FCKLang.MergeCells ) ) ;
-FCKToolbarItems.RegisterItem( 'TableSplitCell'		, new FCKToolbarButton( 'TableSplitCell'	, FCKLang.SplitCell ) ) ;
\ No newline at end of file
+FCKToolbarItems.RegisterItem( 'TableInsertRow'		, new FCKToolbarButton( 'TableInsertRow'	, FCKLang.InsertRow, null, null, null, null, 62 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableDeleteRows'		, new FCKToolbarButton( 'TableDeleteRows'	, FCKLang.DeleteRows, null, null, null, null, 63 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableInsertColumn'	, new FCKToolbarButton( 'TableInsertColumn'	, FCKLang.InsertColumn, null, null, null, null, 64 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableDeleteColumns'	, new FCKToolbarButton( 'TableDeleteColumns', FCKLang.DeleteColumns, null, null, null, null, 65 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableInsertCell'		, new FCKToolbarButton( 'TableInsertCell'	, FCKLang.InsertCell, null, null, null, null, 58 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableDeleteCells'	, new FCKToolbarButton( 'TableDeleteCells'	, FCKLang.DeleteCells, null, null, null, null, 59 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableMergeCells'		, new FCKToolbarButton( 'TableMergeCells'	, FCKLang.MergeCells, null, null, null, null, 60 ) ) ;
+FCKToolbarItems.RegisterItem( 'TableSplitCell'		, new FCKToolbarButton( 'TableSplitCell'	, FCKLang.SplitCell, null, null, null, null, 61 ) ) ;
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/skins/default/fck_contextmenu.css 1.4.1.src/fckeditor/editor/skins/default/fck_contextmenu.css
--- 1.4.0sr5-1.src/fckeditor/editor/skins/default/fck_contextmenu.css	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/skins/default/fck_contextmenu.css	1969-12-31 18:00:00.000000000 -0600
@@ -1,243 +0,0 @@
-/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * File Name: fck_contextmenu.css
- * 	Styles used by the context menu and panels.
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-.CM_ContextMenu, .CM_ContextMenu *
-{
-	font-size: 11px;
-	font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
-}
-
-.CM_ContextMenu
-{
-	border: 1px solid #8f8f73;
-	padding: 2px;
-	background-color: #ffffff;
-}
-
-.CM_Option, .CM_Over, .CM_Disabled
-{
-	padding: 0px 3px;
-	height: 18px;
-	cursor: default;
-}
-
-.CM_Option, .CM_Over
-{
-	cursor: hand;
-}
-
-.CM_Option .CM_Icon, .CM_Disabled .CM_Icon, .CM_Separator .CM_Icon
-{
-	background-color: #e3e3c7;
-}
-
-.CM_Option .CM_Icon IMG
-{
-	filter: alpha(opacity=70);
-	-moz-opacity:0.70;
-}
-
-.CM_Disabled 
-{
-	background-color: #ffffff;
-}
-
-.CM_Disabled .CM_Icon IMG, .CM_Disabled .CM_Label
-{
-	filter: gray() alpha(opacity=30);
-	-moz-opacity:0.30;
-}
-
-.CM_Option .CM_Label, .CM_Over .CM_Label
-{
-	padding: 1px 10px 1px 3px;
-}
-
-.CM_Over
-{
-	color: #fff;
-	background-color: #8f8f73;
-}
-
-.CM_Over .CM_Icon
-{
-	background-color: #737357;
-}
-
-.CM_Separator TD
-{
-	height: 3px;
-}
-
-.CM_Separator .CM_Label DIV
-{
-	border-top: #b9b99d 1px solid;
-	margin-left: 2px;
-	margin-right: 3px;
-}
-
-/*
-	### Panel Styles
-*/
-
-.FCK_Panel
-{
-	border: #8f8f73 1px solid;
-	padding: 2px;
-	background-color: #ffffff;
-}
-
-.FCK_Panel, .FCK_Panel TD
-{
-	font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
-	font-size: 11px;
-}
-
-/*
-	### Color Selector Panel
-*/
-
-.ColorBoxBorder
-{
-	border: #808080 1px solid;
-	position: static;
-}
-
-.ColorBox
-{
-	font-size: 1px;
-	width: 10px;
-	position: static;
-	height: 10px;
-}
-
-.ColorDeselected, .ColorSelected
-{
-	cursor: default;
-}
-
-.ColorDeselected
-{
-	border: #ffffff 1px solid;
-	padding: 2px;
-	float: left;
-}
-
-.ColorSelected
-{
-	border: #330066 1px solid;
-	padding: 2px;
-	float: left;
-	background-color: #c4cdd6;
-}
-
-/*
-	### Special Combos
-*/
-
-.SC_Panel
-{
-	overflow-y: auto;
-	white-space: nowrap;
-	cursor: default;
-}
-
-.SC_Item, .SC_ItemSelected
-{
-	margin-top: 2px;
-	margin-bottom: 2px;
-	background-position: left center;
-	padding-left: 11px;
-	padding-right: 3px;
-	padding-top: 2px;
-	padding-bottom: 2px;
-	text-overflow: ellipsis;
-	overflow: hidden;
-	width: 100%;
-	background-repeat: no-repeat;
-	border: #dddddd 1px solid;
-}
-
-.SC_Item *, .SC_ItemSelected *
-{
-	margin-top: 0px;
-	margin-bottom: 0px;
-}
-
-.SC_ItemSelected
-{
-	border: #9a9afb 1px solid;
-	background-image: url(images/toolbar.arrowright.gif);
-}
-
-.SC_ItemOver
-{
-	border: #316ac5 1px solid;
-}
-
-.SC_Field
-{
-	border: #b7b7a6 1px solid;
-	cursor: default;
-}
-
-.SC_FieldCaption
-{
-	overflow: visible;
-	padding-right: 5px;
-	padding-left: 5px;
-	filter: alpha(opacity=70);
-	-moz-opacity:0.75;
-	height: 23px;
-	background-color: #efefde;
-}
-
-.SC_FieldLabel
-{
-	white-space: nowrap;
-	padding: 2px;
-	width: 100%;
-	cursor: default;
-	background-color: #ffffff;
-	text-overflow: ellipsis;
-	overflow: hidden;
-}
-
-.SC_FieldButton
-{
-	background-position: center center;
-	background-image: url(images/toolbar.buttonarrow.gif);
-	border-left: #b7b7a6 1px solid;
-	width: 14px;
-	background-repeat: no-repeat;
-}
-
-.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption
-{
-	filter: gray() alpha(opacity=30);
-	-moz-opacity:0.30;
-}
-
-.SC_FieldOver
-{
-	border: #316ac5 1px solid;
-}
-
-.SC_FieldOver .SC_FieldButton
-{
-	border-left: #316ac5 1px solid;
-}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/skins/default/fck_dialog.css 1.4.1.src/fckeditor/editor/skins/default/fck_dialog.css
--- 1.4.0sr5-1.src/fckeditor/editor/skins/default/fck_dialog.css	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/skins/default/fck_dialog.css	2006-06-17 16:25:31.000000000 -0500
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -8,6 +8,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_dialog.css
  * 	Styles used by the dialog boxes.
  * 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/skins/default/fck_editor.css 1.4.1.src/fckeditor/editor/skins/default/fck_editor.css
--- 1.4.0sr5-1.src/fckeditor/editor/skins/default/fck_editor.css	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/skins/default/fck_editor.css	2006-09-03 13:05:04.000000000 -0500
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -8,6 +8,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_editor.css
  * 	Styles used by the editor IFRAME and Toolbar.
  * 
@@ -21,128 +23,437 @@
 
 body
 {
-	padding: 1px 1px 1px 1px;
-	margin: 0px 0px 0px 0px;
+    padding: 1px 1px 1px 1px;
+    margin: 0px 0px 0px 0px;
 }
 
-#eWysiwygCell, .Source
+#xEditingArea
 {
-	border: #696969 1px solid;
+    border: #696969 1px solid;
 }
 
-#eSourceField
+.SourceField
 {
-	border: none;
-	padding: 5px;
-	font-family: Monospace;
+    padding: 5px;
+    margin: 0px;
+    font-family: Monospace;
 }
 
 /*
-	### Toolbar Styles
+	Toolbar
 */
 
 .TB_ToolbarSet, .TB_Expand, .TB_Collapse
 {
-	background-color: #efefde;
+    cursor: default;
+    background-color: #efefde;
 }
 
-.TB_End
+.TB_ToolbarSet
 {
-	display: none;
+    border-top: #efefde 1px outset;
+    border-bottom: #efefde 1px outset;
 }
 
-.TB_ExpandImg
+.TB_ToolbarSet TD
 {
-	background-image: url(images/toolbar.expand.gif);
-	background-repeat: no-repeat;
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
 }
 
-.TB_CollapseImg
+.TB_Toolbar
 {
-	background-image: url(images/toolbar.collapse.gif);
-	background-repeat: no-repeat;
+    display: inline-table;	/* inline = Opera jumping buttons bug */
 }
 
-.TB_ToolbarSet
+.TB_Separator
 {
-	border-top: #efefde 1px outset;
-	border-bottom: #efefde 1px outset;
+    width: 1px;
+    height: 16px;
+    margin: 2px;
+    background-color: #999966;
 }
 
-.TB_SideBorder
+.TB_Start
+{
+    background-image: url(images/toolbar.start.gif);
+    margin: 2px;
+    width: 3px;
+    background-repeat: no-repeat;
+    height: 16px;
+}
+
+.TB_End
+{
+    display: none;
+}
+
+.TB_ExpandImg
 {
-	background-color: #696969;
+    background-image: url(images/toolbar.expand.gif);
+    background-repeat: no-repeat;
 }
 
-.TB_ToolbarSet, .TB_ToolbarSet *
+.TB_CollapseImg
+{
+    background-image: url(images/toolbar.collapse.gif);
+    background-repeat: no-repeat;
+}
+
+.TB_SideBorder
 {
-	font-size: 11px;
-	cursor: default;
-	font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+    background-color: #696969;
 }
 
 .TB_Expand, .TB_Collapse
 {
-	padding: 2px 2px 2px 2px;
-	border: #efefde 1px outset;
+    padding: 2px 2px 2px 2px;
+    border: #efefde 1px outset;
 }
 
 .TB_Collapse
 {
-	border: #efefde 1px outset;
-	width: 5px;
+    width: 5px;
 }
 
-.TB_Button_On, .TB_Button_Off, .TB_Button_Disabled, .TB_Combo_Off, .TB_Combo_Disabled
+.TB_Break
+{
+    height: 24px; /* IE needs the height to be set, otherwise no break */
+}
+
+/*
+	Toolbar Button
+*/
+
+.TB_Button_On, .TB_Button_Off, .TB_Button_On_Over, .TB_Button_Off_Over, .TB_Button_Disabled
 {
-	border: #efefde 1px solid;
-	height: 21px;
+    border: #efefde 1px solid; /* This is the default border */
+    height: 22px; /* The height is necessary, otherwise IE will not apply the alpha */
 }
 
 .TB_Button_On
 {
-	border-color: #316ac5;
-	background-color: #c1d2ee;
+    border: #316ac5 1px solid;
+    background-color: #c1d2ee;
 }
 
-.TB_Button_Off, .TB_Combo_Off
+.TB_Button_On_Over, .TB_Button_Off_Over
 {
-	filter: alpha(opacity=70);
-	-moz-opacity: 0.70;
-	background-color: #efefde;
+    border: #316ac5 1px solid;
+    background-color: #dff1ff;
 }
 
-.TB_Button_Disabled, .TB_Combo_Disabled
+.TB_Button_Off
 {
-	filter: gray() alpha(opacity=30);
-	-moz-opacity: 0.30;
+    filter: alpha(opacity=70); /* IE */
+    opacity: 0.70; /* Safari, Opera and Mozilla */
 }
 
-.TB_Button_On_Over, .TB_Button_Off_Over
+.TB_Button_Disabled
+{
+    filter: gray() alpha(opacity=30); /* IE */
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+}
+
+.TB_Button_Padding
+{
+    visibility: hidden;
+    width: 3px;
+    height: 22px;
+}
+
+.TB_Button_Image
+{
+    overflow: hidden;
+    width: 16px;
+    height: 16px;
+    margin: 3px;
+    background-repeat: no-repeat;
+}
+
+.TB_Button_Image img
+{
+    position: relative;
+}
+
+.TB_Button_Off .TB_Button_Text
 {
-	background-color: #dff1ff;
+   	background-color: #efefde;  /* Needed because of a bug on Clear Type */
 }
 
-.TB_Icon DIV
+.TB_ConnectionLine
 {
-	width: 21px;
-	height: 21px;
-	background-position: 50% 50%;
-	background-repeat: no-repeat;
+    background-color: #ffffff;
+    height: 1px;
+    margin-left: 1px;   /* ltr */
+    margin-right: 1px;  /* rtl */
 }
 
 .TB_Text
 {
-	height: 21px;
-	padding-right: 5px;
+	height: 22px;
 }
 
-.TB_ButtonArrow
+.TB_Button_Off .TB_Text
 {
-	padding-right: 3px;
+   	background-color: #efefde ;  /* Needed because of a bug on ClearType */
 }
 
-.TB_Break
+.TB_Button_On_Over .TB_Text
+{
+   	background-color: #dff1ff ;  /* Needed because of a bug on ClearType */
+}
+
+/*
+	Menu
+*/
+
+.MN_Menu
+{
+    border: 1px solid #8f8f73;
+    padding: 2px;
+    background-color: #ffffff;
+    cursor: default;
+}
+
+.MN_Menu, .MN_Menu .MN_Label
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.MN_Item_Padding
+{
+    visibility: hidden;
+    width: 3px;
+    height: 20px;
+}
+
+.MN_Icon
+{
+    background-color: #e3e3c7;
+    text-align: center;
+    height: 20px;
+}
+
+.MN_Label
+{
+    padding-left: 3px;
+    padding-right: 3px;
+}
+
+.MN_Separator
+{
+    height: 3px;
+}
+
+.MN_Separator_Line
+{
+    border-top: #b9b99d 1px solid;
+}
+
+.MN_Item .MN_Icon IMG
+{
+    filter: alpha(opacity=70);
+    opacity: 0.70;
+}
+
+.MN_Item_Over
+{
+    color: #ffffff;
+    background-color: #8f8f73;
+}
+
+.MN_Item_Over .MN_Icon
+{
+    background-color: #737357;
+}
+
+.MN_Item_Disabled IMG
+{
+    filter: gray() alpha(opacity=30); /* IE */
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+}
+
+.MN_Item_Disabled .MN_Label
+{
+    color: #b7b7b7;
+}
+
+.MN_Arrow
+{
+    padding-right: 3px;
+    padding-left: 3px;
+}
+
+.MN_ConnectionLine
+{
+    background-color: #ffffff;
+}
+
+.Menu .TB_Button_On, .Menu .TB_Button_On_Over
+{
+    border: #8f8f73 1px solid;
+    background-color: #ffffff;
+}
+
+/*
+	### Panel Styles
+*/
+
+.FCK_Panel
+{
+    border: #8f8f73 1px solid;
+    padding: 2px;
+    background-color: #ffffff;
+}
+
+.FCK_Panel, .FCK_Panel TD
+{
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+    font-size: 11px;
+}
+
+/*
+	### Special Combos
+*/
+
+.SC_Panel
+{
+    overflow: auto;
+    white-space: nowrap;
+    cursor: default;
+    border: 1px solid #8f8f73;
+    padding-left: 2px;
+    padding-right: 2px;
+    background-color: #ffffff;
+}
+
+.SC_Panel, .SC_Panel TD
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.SC_Item, .SC_ItemSelected
+{
+    margin-top: 2px;
+    margin-bottom: 2px;
+    background-position: left center;
+    padding-left: 11px;
+    padding-right: 3px;
+    padding-top: 2px;
+    padding-bottom: 2px;
+    text-overflow: ellipsis;
+    overflow: hidden;
+    background-repeat: no-repeat;
+    border: #dddddd 1px solid;
+}
+
+.SC_Item *, .SC_ItemSelected *
+{
+    margin-top: 0px;
+    margin-bottom: 0px;
+}
+
+.SC_ItemSelected
+{
+    border: #9a9afb 1px solid;
+    background-image: url(images/toolbar.arrowright.gif);
+}
+
+.SC_ItemOver
 {
-	height: 23px;
-}
\ No newline at end of file
+    border: #316ac5 1px solid;
+}
+
+.SC_Field
+{
+    border: #b7b7a6 1px solid;
+    cursor: default;
+}
+
+.SC_FieldCaption
+{
+    overflow: visible;
+    padding-right: 5px;
+    padding-left: 5px;
+    opacity: 0.75; /* Safari, Opera and Mozilla */
+    filter: alpha(opacity=70); /* IE */ /* -moz-opacity: 0.75; Mozilla (Old) */
+    height: 23px;
+    background-color: #efefde;
+}
+
+.SC_FieldLabel
+{
+    white-space: nowrap;
+    padding: 2px;
+    width: 100%;
+    cursor: default;
+    background-color: #ffffff;
+    text-overflow: ellipsis;
+    overflow: hidden;
+}
+
+.SC_FieldButton
+{
+    background-position: center center;
+    background-image: url(images/toolbar.buttonarrow.gif);
+    border-left: #b7b7a6 1px solid;
+    width: 14px;
+    background-repeat: no-repeat;
+}
+
+.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption
+{
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+    filter: gray() alpha(opacity=30); /* IE */ /* -moz-opacity: 0.30; Mozilla (Old) */
+}
+
+.SC_FieldOver
+{
+    border: #316ac5 1px solid;
+}
+
+.SC_FieldOver .SC_FieldButton
+{
+    border-left: #316ac5 1px solid;
+}
+
+/*
+	### Color Selector Panel
+*/
+
+.ColorBoxBorder
+{
+    border: #808080 1px solid;
+    position: static;
+}
+
+.ColorBox
+{
+    font-size: 1px;
+    width: 10px;
+    position: static;
+    height: 10px;
+}
+
+.ColorDeselected, .ColorSelected
+{
+    cursor: default;
+}
+
+.ColorDeselected
+{
+    border: #ffffff 1px solid;
+    padding: 2px;
+    float: left;
+}
+
+.ColorSelected
+{
+    border: #330066 1px solid;
+    padding: 2px;
+    float: left;
+    background-color: #c4cdd6;
+}
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/fck_strip.gif and 1.4.1.src/fckeditor/editor/skins/default/fck_strip.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/images/toolbar.start.gif and 1.4.1.src/fckeditor/editor/skins/default/images/toolbar.start.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/about.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/about.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/anchor.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/anchor.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/bgcolor.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/bgcolor.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/bold.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/bold.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/bulletedlist.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/bulletedlist.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/button.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/button.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/checkbox.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/checkbox.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/copy.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/copy.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/cut.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/cut.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/docprops.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/docprops.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/find.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/find.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/flash.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/flash.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/form.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/form.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/hiddenfield.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/hiddenfield.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/imagebutton.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/imagebutton.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/image.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/image.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/indent.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/indent.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/inserthorizontalrule.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/inserthorizontalrule.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/insertorderedlist.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/insertorderedlist.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/insertunorderedlist.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/insertunorderedlist.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/italic.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/italic.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/justifycenter.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/justifycenter.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/justifyfull.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/justifyfull.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/justifyleft.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/justifyleft.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/justifyright.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/justifyright.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/link.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/link.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/newpage.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/newpage.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/numberedlist.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/numberedlist.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/outdent.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/outdent.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/pagebreak.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/pagebreak.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/paste.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/paste.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/pastetext.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/pastetext.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/pasteword.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/pasteword.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/preview.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/preview.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/print.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/print.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/radio.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/radio.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/redo.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/redo.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/removeformat.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/removeformat.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/replace.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/replace.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/save.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/save.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/selectall.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/selectall.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/select.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/select.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/showdetails.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/showdetails.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/showtableborders.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/showtableborders.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/smiley.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/smiley.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/source.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/source.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/specialchar.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/specialchar.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/spellcheck.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/spellcheck.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/strikethrough.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/strikethrough.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/subscript.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/subscript.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/superscript.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/superscript.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/tablecell.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/tablecell.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/tabledeletecells.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/tabledeletecells.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/tabledeletecolumns.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/tabledeletecolumns.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/tabledeleterows.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/tabledeleterows.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/table.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/table.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/tableinsertcell.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/tableinsertcell.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/tableinsertcolumn.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/tableinsertcolumn.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/tableinsertrow.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/tableinsertrow.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/tablemergecells.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/tablemergecells.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/tablesplitcell.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/tablesplitcell.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/templates.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/templates.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/textarea.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/textarea.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/textcolor.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/textcolor.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/textfield.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/textfield.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/underline.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/underline.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/undo.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/undo.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/universalkey.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/universalkey.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/unlink.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/unlink.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/default/toolbar/unorderedlist.gif and 1.4.1.src/fckeditor/editor/skins/default/toolbar/unorderedlist.gif differ
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/skins/_fckviewstrips.html 1.4.1.src/fckeditor/editor/skins/_fckviewstrips.html
--- 1.4.0sr5-1.src/fckeditor/editor/skins/_fckviewstrips.html	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/skins/_fckviewstrips.html	2006-06-17 16:25:38.000000000 -0500
@@ -0,0 +1,118 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: _fckviewstrips.html
+ * 	Useful page that enumerates all icons in the skins strips.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor - View Icons Strips</title>
+	<style type="text/css">
+		.TB_Button_Image
+		{
+			overflow: hidden;
+			width: 16px;
+			height: 16px;
+			margin: 3px;
+			background-repeat: no-repeat;
+		}
+
+		.TB_Button_Image img
+		{
+			position: relative;
+		}
+	</style>
+	<script type="text/javascript">
+
+window.onload = function()
+{
+	var eImg1 = document.createElement( 'img' ) ;
+	eImg1.onreadystatechange = Img_OnReadyStateChange ;
+	eImg1.src = 'default/fck_strip.gif' ;
+
+	var eImg2 = document.createElement( 'img' ) ;
+	eImg2.onreadystatechange = Img_OnReadyStateChange ;
+	eImg2.src = 'office2003/fck_strip.gif' ;
+
+	var eImg3 = document.createElement( 'img' ) ;
+	eImg3.onreadystatechange = Img_OnReadyStateChange ;
+	eImg3.src = 'silver/fck_strip.gif' ;
+}
+
+var iTotalStrips = 3 ;
+var iMaxHeight = 0 ;
+
+function Img_OnReadyStateChange()
+{
+	if ( this.readyState == 'complete' )
+	{
+		if ( iMaxHeight < this.height )
+			iMaxHeight = this.height ;
+		
+		iTotalStrips-- ;
+		
+		if ( iTotalStrips == 0 )
+			LoadIcons( iMaxHeight / 16 ) ;
+	}
+}
+
+function LoadIcons( total )
+{
+	for ( var i = 0 ; i < total ; i++ )
+	{
+		var eRow = xIconsTable.insertRow(-1) ;
+		
+		var eCell = eRow.insertCell(-1) ;
+		eCell.innerHTML = i + 1 ;
+		
+		eCell = eRow.insertCell(-1) ;
+		eCell.align = 'center' ;
+		eCell.style.border = '#dcdcdc 1px solid' ;
+		eCell.innerHTML = '<div class="TB_Button_Image"><img src="default/fck_strip.gif" style="top=-' + ( i * 16 ) + 'px;"></div>' ;
+
+		eCell = eRow.insertCell(-1) ;
+		eCell.align = 'center' ;
+		eCell.style.border = '#dcdcdc 1px solid' ;
+		eCell.innerHTML = '<div class="TB_Button_Image"><img src="office2003/fck_strip.gif" style="top=-' + ( i * 16 ) + 'px;"></div>' ;
+
+		eCell = eRow.insertCell(-1) ;
+		eCell.align = 'center' ;
+		eCell.style.border = '#dcdcdc 1px solid' ;
+		eCell.innerHTML = '<div class="TB_Button_Image"><img src="silver/fck_strip.gif" style="top=-' + ( i * 16 ) + 'px;"></div>' ;
+	}
+}
+
+	</script>
+</head>
+<body>
+	<table id="xIconsTable">
+		<tr>
+			<td rowspan="2">
+				Index</td>
+			<td align="center" colspan="3">
+				Skins</td>
+		</tr>
+		<tr>
+			<td width="80" align="center">
+				default</td>
+			<td width="80" align="center">
+				office2003</td>
+			<td width="80" align="center">
+				silver</td>
+		</tr>
+	</table>
+</body>
+</html>
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/fck_contextmenu.css 1.4.1.src/fckeditor/editor/skins/office2003/fck_contextmenu.css
--- 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/fck_contextmenu.css	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/skins/office2003/fck_contextmenu.css	1969-12-31 18:00:00.000000000 -0600
@@ -1,248 +0,0 @@
-/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * File Name: fck_contextmenu.css
- * 	Styles used by the context menu.
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-.CM_ContextMenu, .CM_ContextMenu *
-{
-	font-size: 11px;
-	font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
-}
-
-.CM_ContextMenu
-{
-	border: 1px solid #8f8f73;
-	padding: 2px;
-	background-color: #f7f8fd;
-}
-
-.CM_Option, .CM_Over, .CM_Disabled
-{
-	padding: 0px 3px;
-	height: 18px;
-	cursor: default;
-}
-
-.CM_Option, .CM_Over
-{
-	cursor: hand;
-}
-
-.CM_Option .CM_Icon, .CM_Disabled .CM_Icon, .CM_Separator .CM_Icon
-{
-	background-color: #d6dff7;
-}
-
-.CM_Option .CM_Icon IMG
-{
-	filter: alpha(opacity=70);
-	-moz-opacity: 0.70;
-}
-
-.CM_Disabled 
-{
-	background-color: #ffffff;
-}
-
-.CM_Disabled .CM_Icon IMG, .CM_Disabled .CM_Label
-{
-	filter: gray() alpha(opacity=30);
-	-moz-opacity: 0.30;
-}
-
-.CM_Option .CM_Label, .CM_Over .CM_Label
-{
-	padding: 1px 10px 1px 3px;
-}
-
-.CM_Over
-{
-	color: #ffffff;
-	background-color: #7096FA;
-}
-
-.CM_Over .CM_Icon
-{
-	background-color: #466ca6;
-}
-
-.CM_Separator TD
-{
-	height: 3px;
-}
-
-.CM_Separator .CM_Label DIV
-{
-	border-top: #b9b99d 1px solid;
-	margin-left: 2px;
-	margin-right: 3px;
-}
-
-/*
-	### Panel Styles
-*/
-
-.FCK_Panel
-{
-	border: #8f8f73 1px solid;
-	padding: 2px;
-	background-color: #f7f8fd;
-}
-
-.FCK_Panel, .FCK_Panel TD
-{
-	font-family: 'Microsoft Sans Serif', Tahoma, Arial, Verdana, Sans-Serif;
-	font-size: 11px;
-}
-
-/*
-	### Color Selector Panel
-*/
-
-.ColorBoxBorder
-{
-	border: #808080 1px solid;
-	position: static;
-}
-
-.ColorBox
-{
-	font-size: 1px;
-	width: 10px;
-	position: static;
-	height: 10px;
-}
-
-.ColorDeselected, .ColorSelected
-{
-	cursor: default;
-}
-
-.ColorDeselected
-{
-	border: #ffffff 1px solid;
-	padding: 2px;
-	float: left;
-}
-
-.ColorSelected *
-{
-	color: #ffffff;
-}
-
-.ColorSelected 
-{
-	border: #7096FA 1px solid;
-	padding: 2px;
-	float: left;
-	background-color: #7096FA;
-}
-
-/*
-	### Special Combos
-*/
-
-.SC_Panel
-{
-	overflow-y: auto;
-	white-space: nowrap;
-	cursor: default;
-}
-
-.SC_Item, .SC_ItemSelected
-{
-	margin-top: 2px;
-	margin-bottom: 2px;
-	background-position: left center;
-	padding-left: 11px;
-	padding-right: 3px;
-	padding-top: 2px;
-	padding-bottom: 2px;
-	text-overflow: ellipsis;
-	overflow: hidden;
-	width: 100%;
-	background-repeat: no-repeat;
-	border: #dddddd 1px solid;
-}
-
-.SC_Item *, .SC_ItemSelected *
-{
-	margin-top: 0px;
-	margin-bottom: 0px;
-}
-
-.SC_ItemSelected
-{
-	border: #9a9afb 1px solid;
-	background-image: url(images/toolbar.arrowright.gif);
-}
-
-.SC_ItemOver
-{
-	border: #316ac5 1px solid;
-}
-
-.SC_Field
-{
-	border: #b7b7a6 1px solid;
-	cursor: default;
-}
-
-.SC_FieldCaption
-{
-	overflow: visible;
-	padding-right: 5px;
-	padding-left: 5px;
-	filter: alpha(opacity=70); 
-	-moz-opacity:0.75;
-	height: 23px;
-	background-color: #f7f8fd;
-}
-
-.SC_FieldLabel
-{
-	white-space: nowrap;
-	padding: 2px;
-	width: 100%;
-	cursor: default;
-	background-color: #ffffff;
-	text-overflow: ellipsis;
-	overflow: hidden;
-}
-
-.SC_FieldButton
-{
-	background-position: center center;
-	background-image: url(images/toolbar.buttonarrow.gif);
-	border-left: #b7b7a6 1px solid;
-	width: 14px;
-	background-repeat: no-repeat;
-}
-
-.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption
-{
-	filter: gray() alpha(opacity=30); 
-	-moz-opacity:0.30;
-}
-
-.SC_FieldOver
-{
-	border: #316ac5 1px solid;
-}
-
-.SC_FieldOver .SC_FieldButton
-{
-	border-left: #316ac5 1px solid;
-}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/fck_dialog.css 1.4.1.src/fckeditor/editor/skins/office2003/fck_dialog.css
--- 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/fck_dialog.css	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/skins/office2003/fck_dialog.css	2006-06-17 16:25:33.000000000 -0500
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -8,6 +8,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_dialog.css
  * 	Styles used by the dialog boxes.
  * 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/fck_editor.css 1.4.1.src/fckeditor/editor/skins/office2003/fck_editor.css
--- 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/fck_editor.css	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/skins/office2003/fck_editor.css	2006-09-03 13:05:05.000000000 -0500
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -8,12 +8,13 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_editor.css
  * 	Styles used by the editor IFRAME and Toolbar.
  * 
  * File Authors:
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- * 		Aziz Oraij (aziz@oraij.com)
  */
 
 /*
@@ -22,120 +23,450 @@
 
 body
 {
-	padding: 1px 1px 1px 1px;
-	margin: 0px 0px 0px 0px;
+    padding: 1px 1px 1px 1px;
+    margin: 0px 0px 0px 0px;
 }
 
-#eWysiwygCell, .Source
+#xEditingArea
 {
-	border: #696969 1px solid;
+    border: #696969 1px solid;
 }
 
-#eSourceField
+.SourceField
 {
-	border: none;
-	padding: 5px;
-	font-family: Monospace;
+    padding: 5px;
+    margin: 0px;
+    font-family: Monospace;
 }
 
 /*
-	### Toolbar Styles
+	Toolbar
 */
 
 .TB_ToolbarSet, .TB_Expand, .TB_Collapse
 {
-	background-color: #f7f8fd;
+    cursor: default;
+    background-color: #f7f8fd;
+}
+
+.TB_ToolbarSet
+{
+    border-top: #f7f8fd 1px outset;
+    border-bottom: #f7f8fd 1px outset;
+}
+
+.TB_ToolbarSet TD
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
 }
 
 .TB_Toolbar
 {
-	background-color: #d6dff7;
+   	background-color: #d6dff7;
 	background-image: url(images/toolbar.bg.gif);
 	background-repeat: repeat-x;
+    display: inline-table;
 }
 
-.TB_ExpandImg
+.TB_Separator
 {
-	background-image: url(images/toolbar.expand.gif);
-	background-repeat: no-repeat;
+    width: 1px;
+    height: 16px;
+    margin: 2px;
+    background-color: #B2CBFF;
 }
 
-.TB_CollapseImg
+.TB_Start
 {
-	background-image: url(images/toolbar.collapse.gif);
-	background-repeat: no-repeat;
+    background-image: url(images/toolbar.start.gif);
+    background-repeat: no-repeat;
+    background-position: center center;
+    margin: 0px;
+    width: 7px;
+    height: 24px;
 }
 
-.TB_ToolbarSet
+.TB_End
 {
-	border-top: #efefde 1px outset;
-	border-bottom: #efefde 1px outset;
+    background-image: url(images/toolbar.end.gif);
+    background-repeat: no-repeat;
+    background-position: center left;
+    height: 24px;
+    width: 12px;
 }
 
-.TB_ToolbarSet, .TB_ToolbarSet *
+.TB_ExpandImg
+{
+    background-image: url(images/toolbar.expand.gif);
+    background-repeat: no-repeat;
+}
+
+.TB_CollapseImg
 {
-	font-size: 11px;
-	cursor: default;
-	font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+    background-image: url(images/toolbar.collapse.gif);
+    background-repeat: no-repeat;
 }
 
 .TB_SideBorder
 {
-	background-color: #696969;
+    background-color: #696969;
 }
 
 .TB_Expand, .TB_Collapse
 {
-	padding: 2px 2px 2px 2px;
-	border: #efefde 1px outset;
+    padding: 2px 2px 2px 2px;
+    border: #f7f8fd 1px outset;
 }
 
 .TB_Collapse
 {
-	border: #efefde 1px outset;
-	width: 5px;
+    width: 5px;
 }
 
-.TB_Button_On, .TB_Button_Off, .TB_Button_Disabled, .TB_Combo_Off, .TB_Combo_Disabled
+.TB_Break
 {
-	border: #efefde 1px solid;
-	height: 21px;
+    height: 24px; /* IE needs the height to be set, otherwise no break */
+}
+
+/*
+	Toolbar Button
+*/
+
+.TB_Button_On, .TB_Button_Off, .TB_Button_On_Over, .TB_Button_Off_Over, .TB_Button_Disabled
+{
+    margin: 1px;
+    height: 22px; /* The height is necessary, otherwise IE will not apply the alpha */
 }
 
 .TB_Button_On
 {
-	border-color: #316ac5;
-	background-color: #c1d2ee;
+    margin: 0px;
+    border: #316ac5 1px solid;
+    background-color: #c1d2ee;
 }
 
-.TB_Button_Off, .TB_Combo_Off
+.TB_Button_On_Over, .TB_Button_Off_Over
 {
-	filter: alpha(opacity=70);
-	-moz-opacity: 0.70;
-	background-color: #f7f8fd;
+    margin: 0px ;
+    border: #316ac5 1px solid;
+    background-color: #dff1ff;
 }
 
-.TB_Button_Disabled, .TB_Combo_Disabled
+.TB_Button_Off
 {
-	filter: gray() alpha(opacity=30);
-	-moz-opacity: 0.30;
+    filter: alpha(opacity=70); /* IE */
+    opacity: 0.70; /* Safari, Opera and Mozilla */
 }
 
-.TB_Icon DIV
+.TB_Button_Disabled
 {
-	width: 21px;
-	height: 21px;
-	background-position: 50% 50%;
-	background-repeat: no-repeat;
+    filter: gray() alpha(opacity=30); /* IE */
+    opacity: 0.30; /* Safari, Opera and Mozilla */
 }
 
-.TB_Text
+.TB_Button_Padding
 {
-	height: 21px;
-	padding-right: 5px;
+    visibility: hidden;
+    width: 3px;
+    height: 22px;
 }
 
-.TB_Break
+.TB_Button_Image
+{
+    overflow: hidden;
+    width: 16px;
+    height: 16px;
+    margin: 3px;
+    background-repeat: no-repeat;
+}
+
+.TB_Button_Image img
+{
+    position: relative;
+}
+
+.TB_Button_Off .TB_Button_Text
+{
+   	background-color: #d6dff7;  /* Needed because of a bug on ClearType */
+	background-image: url(images/toolbar.bg.gif);
+	background-repeat: repeat-x;
+}
+
+.TB_ConnectionLine
+{
+    background-color: #f7f8fd;
+    height: 1px;
+    margin-left: 1px;   /* ltr */
+    margin-right: 1px;  /* rtl */
+}
+
+.TB_Button_Off .TB_Text
+{
+   	background-color: #d6dff7;  /* Needed because of a bug on ClearType */
+	background-image: url(images/toolbar.bg.gif);
+	background-repeat: repeat-x;
+}
+
+.TB_Button_On_Over .TB_Text
+{
+   	background-color: #dff1ff ;  /* Needed because of a bug on ClearType */
+}
+
+/*
+	Menu
+*/
+
+.MN_Menu
+{
+    border: 1px solid #8f8f73;
+    padding: 2px;
+    background-color: #f7f8fd;
+    cursor: default;
+}
+
+.MN_Menu, .MN_Menu .MN_Label
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.MN_Item_Padding
+{
+    visibility: hidden;
+    width: 3px;
+    height: 20px;
+}
+
+.MN_Icon
+{
+    background-color: #d6dff7;
+    text-align: center;
+    height: 20px;
+}
+
+.MN_Label
+{
+    padding-left: 3px;
+    padding-right: 3px;
+}
+
+.MN_Separator
+{
+    height: 3px;
+}
+
+.MN_Separator_Line
+{
+    border-top: #b9b99d 1px solid;
+}
+
+.MN_Item .MN_Icon IMG
+{
+    filter: alpha(opacity=70);
+    opacity: 0.70;
+}
+
+.MN_Item_Over
+{
+    color: #ffffff;
+    background-color: #7096FA;
+}
+
+.MN_Item_Over .MN_Icon
+{
+    background-color: #466ca6;
+}
+
+.MN_Item_Disabled IMG
+{
+    filter: gray() alpha(opacity=30); /* IE */
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+}
+
+.MN_Item_Disabled .MN_Label
 {
-	height: 23px;
-}
\ No newline at end of file
+    color: #b7b7b7;
+}
+
+.MN_Arrow
+{
+    padding-right: 3px;
+    padding-left: 3px;
+}
+
+.MN_ConnectionLine
+{
+    background-color: #f7f8fd;
+}
+
+.Menu .TB_Button_On, .Menu .TB_Button_On_Over
+{
+    border: #8f8f73 1px solid;
+    background-color: #f7f8fd;
+}
+
+/*
+	### Panel Styles
+*/
+
+.FCK_Panel
+{
+    border: #8f8f73 1px solid;
+    padding: 2px;
+    background-color: #f7f8fd;
+}
+
+.FCK_Panel, .FCK_Panel TD
+{
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+    font-size: 11px;
+}
+
+/*
+	### Special Combos
+*/
+
+.SC_Panel
+{
+    overflow: auto;
+    white-space: nowrap;
+    cursor: default;
+    border: 1px solid #8f8f73;
+    padding-left: 2px;
+    padding-right: 2px;
+    background-color: #ffffff;
+}
+
+.SC_Panel, .SC_Panel TD
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.SC_Item, .SC_ItemSelected
+{
+    margin-top: 2px;
+    margin-bottom: 2px;
+    background-position: left center;
+    padding-left: 11px;
+    padding-right: 3px;
+    padding-top: 2px;
+    padding-bottom: 2px;
+    text-overflow: ellipsis;
+    overflow: hidden;
+    background-repeat: no-repeat;
+    border: #dddddd 1px solid;
+}
+
+.SC_Item *, .SC_ItemSelected *
+{
+    margin-top: 0px;
+    margin-bottom: 0px;
+}
+
+.SC_ItemSelected
+{
+    border: #9a9afb 1px solid;
+    background-image: url(images/toolbar.arrowright.gif);
+}
+
+.SC_ItemOver
+{
+    border: #316ac5 1px solid;
+}
+
+.SC_Field
+{
+    margin-top: 2px ;
+    border: #b7b7a6 1px solid;
+    cursor: default;
+}
+
+.SC_FieldCaption
+{
+    overflow: visible;
+    padding-right: 5px;
+    padding-left: 5px;
+    opacity: 0.75; /* Safari, Opera and Mozilla */
+    filter: alpha(opacity=70); /* IE */ /* -moz-opacity: 0.75; Mozilla (Old) */
+    height: 23px;
+   	background-color: #d6dff7;  /* Needed because of a bug on ClearType */
+	background-image: url(images/toolbar.bg.gif);
+	background-repeat: repeat-x;
+/*    background-color:  inherit;     Maybe this is needed wait to check */
+}
+
+.SC_FieldLabel
+{
+    white-space: nowrap;
+    padding: 2px;
+    width: 100%;
+    cursor: default;
+    background-color: #ffffff;
+    text-overflow: ellipsis;
+    overflow: hidden;
+}
+
+.SC_FieldButton
+{
+    background-position: center center;
+    background-image: url(images/toolbar.buttonarrow.gif);
+    border-left: #b7b7a6 1px solid;
+    width: 14px;
+    background-repeat: no-repeat;
+}
+
+.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption
+{
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+    filter: gray() alpha(opacity=30); /* IE */ /* -moz-opacity: 0.30; Mozilla (Old) */
+}
+
+.SC_FieldOver
+{
+    border: #316ac5 1px solid;
+}
+
+.SC_FieldOver .SC_FieldButton
+{
+    border-left: #316ac5 1px solid;
+}
+
+/*
+	### Color Selector Panel
+*/
+
+.ColorBoxBorder
+{
+    border: #808080 1px solid;
+    position: static;
+}
+
+.ColorBox
+{
+    font-size: 1px;
+    width: 10px;
+    position: static;
+    height: 10px;
+}
+
+.ColorDeselected, .ColorSelected
+{
+    cursor: default;
+}
+
+.ColorDeselected
+{
+    border: #ffffff 1px solid;
+    padding: 2px;
+    float: left;
+}
+
+.ColorSelected
+{
+    border: #330066 1px solid;
+    padding: 2px;
+    float: left;
+    background-color: #c4cdd6;
+}
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/fck_strip.gif and 1.4.1.src/fckeditor/editor/skins/office2003/fck_strip.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/images/toolbar.start.gif and 1.4.1.src/fckeditor/editor/skins/office2003/images/toolbar.start.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/about.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/about.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/anchor.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/anchor.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/bgcolor.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/bgcolor.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/bold.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/bold.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/bulletedlist.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/bulletedlist.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/button.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/button.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/checkbox.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/checkbox.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/copy.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/copy.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/cut.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/cut.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/docprops.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/docprops.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/find.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/find.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/flash.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/flash.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/fontstyleadv.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/fontstyleadv.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/form.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/form.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/hiddenfield.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/hiddenfield.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/hidden.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/hidden.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/imagebutton.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/imagebutton.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/image.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/image.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/indent.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/indent.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/input.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/input.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/inserthorizontalrule.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/inserthorizontalrule.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/insertorderedlist.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/insertorderedlist.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/insertunorderedlist.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/insertunorderedlist.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/italic.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/italic.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/justifycenter.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/justifycenter.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/justifyfull.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/justifyfull.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/justifyleft.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/justifyleft.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/justifyright.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/justifyright.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/link.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/link.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/mail.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/mail.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/new.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/new.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/newpage.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/newpage.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/numberedlist.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/numberedlist.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/open.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/open.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/outdent.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/outdent.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/pagebreak.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/pagebreak.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/paste.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/paste.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/pastetext.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/pastetext.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/pasteword.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/pasteword.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/preview.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/preview.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/print.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/print.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/radio.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/radio.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/redo.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/redo.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/removeformat.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/removeformat.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/replace.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/replace.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/save.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/save.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/selectall.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/selectall.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/select.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/select.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/showdetails.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/showdetails.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/showtableborders.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/showtableborders.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/smiley.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/smiley.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/source.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/source.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/specialchar.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/specialchar.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/spellcheck.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/spellcheck.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/strikethrough.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/strikethrough.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/subscript.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/subscript.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/superscript.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/superscript.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/tablecell.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/tablecell.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/tabledeletecells.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/tabledeletecells.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/tabledeletecolumns.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/tabledeletecolumns.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/tabledeleterows.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/tabledeleterows.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/table.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/table.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/tableinsertcell.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/tableinsertcell.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/tableinsertcolumn.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/tableinsertcolumn.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/tableinsertrow.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/tableinsertrow.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/tablemergecells.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/tablemergecells.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/tablesplitcell.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/tablesplitcell.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/templates.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/templates.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/textarea.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/textarea.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/textcolor.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/textcolor.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/textfield.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/textfield.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/underline.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/underline.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/undo.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/undo.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/universalkey.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/universalkey.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/unlink.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/unlink.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/office2003/toolbar/unorderedlist.gif and 1.4.1.src/fckeditor/editor/skins/office2003/toolbar/unorderedlist.gif differ
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/skins/silver/fck_contextmenu.css 1.4.1.src/fckeditor/editor/skins/silver/fck_contextmenu.css
--- 1.4.0sr5-1.src/fckeditor/editor/skins/silver/fck_contextmenu.css	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/skins/silver/fck_contextmenu.css	1969-12-31 18:00:00.000000000 -0600
@@ -1,245 +0,0 @@
-/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * File Name: fck_contextmenu.css
- * 	Styles used by the context menu.
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-.CM_ContextMenu, .CM_ContextMenu *
-{
-	font-size: 11px;
-	font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
-}
-
-.CM_ContextMenu
-{
-	border: 1px solid #8f8f73;
-	padding: 2px;
-	background-color: #f7f7f7;
-}
-
-.CM_Option, .CM_Over, .CM_Disabled
-{
-	padding: 0px 3px;
-	height: 18px;
-	cursor: default;
-}
-
-.CM_Option, .CM_Over
-{
-	cursor: hand;
-}
-
-.CM_Option .CM_Icon, .CM_Disabled .CM_Icon, .CM_Separator .CM_Icon
-{
-	background-color: #dedede;
-}
-
-.CM_Option .CM_Icon IMG
-{
-	filter: alpha(opacity=70);
-	-moz-opacity: 0.70;
-}
-
-.CM_Disabled 
-{
-	background-color: #ffffff;
-}
-
-.CM_Disabled .CM_Icon IMG, .CM_Disabled .CM_Label
-{
-	filter: gray() alpha(opacity=30);
-	-moz-opacity: 0.30;
-}
-
-.CM_Option .CM_Label, .CM_Over .CM_Label
-{
-	padding: 1px 10px 1px 3px;
-}
-
-.CM_Over
-{
-	color: #ffffff;
-	background-color: #8a857d;
-}
-
-.CM_Over .CM_Icon
-{
-	background-color: #6c6761;
-}
-
-.CM_Separator TD
-{
-	height: 3px;
-}
-
-.CM_Separator .CM_Label DIV
-{
-	border-top: #b9b99d 1px solid;
-	margin-left: 2px;
-	margin-right: 3px;
-}
-
-/*
-	### Panel Styles
-*/
-
-.FCK_Panel
-{
-	border: #8f8f73 1px solid;
-	padding: 2px;
-	background-color: #ffffff;
-}
-
-.FCK_Panel, .FCK_Panel TD
-{
-	font-family: 'Microsoft Sans Serif', Tahoma, Arial, Verdana, Sans-Serif;
-	font-size: 11px;
-}
-
-/*
-	### Color Selector Panel
-*/
-
-.ColorBoxBorder
-{
-	border: #808080 1px solid;
-	position: static;
-}
-
-.ColorBox
-{
-	font-size: 1px;
-	width: 10px;
-	position: static;
-	height: 10px;
-}
-
-.ColorDeselected, .ColorSelected
-{
-	cursor: default;
-}
-
-.ColorDeselected
-{
-	border: #ffffff 1px solid;
-	padding: 2px;
-	float: left;
-}
-
-.ColorSelected
-{
-	border: #316ac5 1px solid;
-	padding: 2px;
-	float: left;
-	background-color: #c1d2ee;
-}
-
-/*
-	### Special Combos
-*/
-
-.SC_Panel
-{
-	overflow-y: auto;
-	white-space: nowrap;
-	cursor: default;
-}
-
-.SC_Item, .SC_ItemSelected
-{
-	margin-top: 2px;
-	margin-bottom: 2px;
-	background-position: left center;
-	padding-left: 11px;
-	padding-right: 3px;
-	padding-top: 2px;
-	padding-bottom: 2px;
-	text-overflow: ellipsis;
-	overflow: hidden;
-	width: 100%;
-	background-repeat: no-repeat;
-	border: #dddddd 1px solid;
-}
-
-.SC_Item *, .SC_ItemSelected *
-{
-	margin-top: 0px;
-	margin-bottom: 0px;
-}
-
-.SC_ItemSelected
-{
-	border: #9a9afb 1px solid;
-	background-image: url(images/toolbar.arrowright.gif);
-}
-
-.SC_ItemOver
-{
-	border: #316ac5 1px solid;
-}
-
-.SC_Field
-{
-	border: #b7b7a6 1px solid;
-	cursor: default;
-	margin-top: 4px ;
-}
-
-.SC_FieldCaption
-{
-	padding-top: 4px ;
-	overflow: visible;
-	padding-right: 5px;
-	padding-left: 5px;
-	filter: alpha(opacity=70);
-	-moz-opacity:0.75;
-	height: 23px;
-	background-color: #f7f7f7;
-}
-
-.SC_FieldLabel
-{
-	white-space: nowrap;
-	padding: 2px;
-	width: 100%;
-	cursor: default;
-	background-color: #ffffff;
-	text-overflow: ellipsis;
-	overflow: hidden;
-}
-
-.SC_FieldButton
-{
-	background-position: center center;
-	background-image: url(images/toolbar.buttonarrow.gif);
-	border-left: #b7b7a6 1px solid;
-	width: 14px;
-	background-repeat: no-repeat;
-}
-
-.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption
-{
-	filter: gray() alpha(opacity=30);
-	-moz-opacity:0.30;
-}
-
-.SC_FieldOver
-{
-	border: #316ac5 1px solid;
-}
-
-.SC_FieldOver .SC_FieldButton
-{
-	border-left: #316ac5 1px solid;
-}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/skins/silver/fck_dialog.css 1.4.1.src/fckeditor/editor/skins/silver/fck_dialog.css
--- 1.4.0sr5-1.src/fckeditor/editor/skins/silver/fck_dialog.css	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/skins/silver/fck_dialog.css	2006-06-17 16:25:33.000000000 -0500
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -8,6 +8,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_dialog.css
  * 	Styles used by the dialog boxes.
  * 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/skins/silver/fck_editor.css 1.4.1.src/fckeditor/editor/skins/silver/fck_editor.css
--- 1.4.0sr5-1.src/fckeditor/editor/skins/silver/fck_editor.css	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/skins/silver/fck_editor.css	2006-09-03 13:05:05.000000000 -0500
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -8,6 +8,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fck_editor.css
  * 	Styles used by the editor IFRAME and Toolbar.
  * 
@@ -26,27 +28,65 @@
 	margin: 0px 0px 0px 0px;
 }
 
-#eWysiwygCell, .Source
+#xEditingArea
 {
 	border: #696969 1px solid;
 }
 
-#eSourceField
+.SourceField
 {
-	border: none;
 	padding: 5px;
+	margin: 0px;
 	font-family: Monospace;
 }
 
-/* 
-	### Toolbar Styles
+/*
+	Toolbar
 */
 
 .TB_ToolbarSet, .TB_Expand, .TB_Collapse
 {
+    cursor: default;
 	background-color: #f7f7f7;
 }
 
+.TB_ToolbarSet
+{
+	padding: 1px;
+	border-top: #efefde 1px outset;
+	border-bottom: #efefde 1px outset;
+}
+
+.TB_ToolbarSet TD
+{
+	font-size: 11px;
+	font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.TB_Toolbar
+{
+    display: inline-table;
+}
+
+.TB_Separator
+{
+    width: 1px;
+    height: 21px;
+    margin: 2px;
+    background-color: #C6C3BD;
+}
+
+.TB_Start
+{
+    background-image: url(images/toolbar.start.gif);
+    margin-left: 2px;
+    margin-right: 2px;
+    width: 3px;
+    background-repeat: no-repeat;
+    height: 27px;
+    background-position: center center;
+}
+
 .TB_End
 {
 	display: none;
@@ -64,20 +104,6 @@
 	background-repeat: no-repeat;
 }
 
-.TB_ToolbarSet
-{
-	padding: 1px;
-	border-top: #efefde 1px outset;
-	border-bottom: #efefde 1px outset;
-}
-
-.TB_ToolbarSet, .TB_ToolbarSet *
-{
-	font-size: 11px;
-	cursor: default;
-	font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
-}
-
 .TB_SideBorder
 {
 	background-color: #696969;
@@ -95,21 +121,23 @@
 	width: 5px;
 }
 
-.TB_Button_On, .TB_Button_Off, .TB_Button_Disabled
+.TB_Break
 {
-	padding: 1px ;
-	margin: 1px ;
-	height: 21px;
+	height: 27px;
 }
 
-.TB_Combo_Off, .TB_Combo_Disabled
+/*
+	Toolbar Button
+*/
+
+.TB_Button_On, .TB_Button_Off, .TB_Button_On_Over, .TB_Button_Off_Over, .TB_Button_Disabled
 {
 	padding: 1px ;
-	margin: 2px ;
+	margin:1px;
 	height: 21px;
 }
 
-.TB_Button_On, .TB_Button_Off, .TB_Button_Disabled
+.TB_Button_On, .TB_Button_Off, .TB_Button_On_Over, .TB_Button_Off_Over, .TB_Button_Disabled
 {
 	border: #cec6b5 1px solid;
 }
@@ -120,6 +148,12 @@
 	background-color: #c1d2ee;
 }
 
+.TB_Button_On_Over, .TB_Button_Off_Over
+{
+    border: #316ac5 1px solid;
+    background-color: #dff1ff;
+}
+
 .TB_Button_Off
 {
 	background: #efefef url(images/toolbar.buttonbg.gif) repeat-x;
@@ -127,31 +161,310 @@
 
 .TB_Button_Off, .TB_Combo_Off
 {
-	filter: alpha(opacity=70);
-	-moz-opacity: 0.70;
+	opacity: 0.70; /* Safari, Opera and Mozilla */
+	filter: alpha(opacity=70); /* IE */
+	/* -moz-opacity: 0.70; Mozilla (Old) */
 }
 
-.TB_Button_Disabled, .TB_Combo_Disabled
+.TB_Button_Disabled
 {
-	filter: gray() alpha(opacity=30);
-	-moz-opacity: 0.30;
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+    filter: gray() alpha(opacity=30); /* IE */
 }
 
-.TB_Icon DIV
+.TB_Button_Padding
 {
-	width: 21px;
-	height: 21px;
-	background-position: 50% 50%;
-	background-repeat: no-repeat;
+    visibility: hidden;
+    width: 3px;
+    height: 21px;
 }
 
-.TB_Text
+.TB_Button_Image
 {
-	height: 21px;
-	padding-right: 5px;
+    overflow: hidden;
+    width: 16px;
+    height: 16px;
+    margin: 3px;
+    margin-top: 4px;
+    margin-bottom: 2px;
+    background-repeat: no-repeat;
 }
 
-.TB_Break
+/* For composed button ( icon + text, icon + arrow ), we must compensate the table */
+.TB_Button_On TABLE .TB_Button_Image, 
+.TB_Button_Off TABLE .TB_Button_Image, 
+.TB_Button_On_Over TABLE .TB_Button_Image,
+.TB_Button_Off_Over TABLE .TB_Button_Image,
+.TB_Button_Disabled TABLE .TB_Button_Image
+{
+    margin-top: 3px;
+}
+
+.TB_Button_Image img
+{
+    position: relative;
+}
+
+.TB_ConnectionLine
+{
+    background-color: #ffffff;
+    height: 1px;
+    margin-left: 1px;   /* ltr */
+    margin-right: 1px;  /* rtl */
+}
+
+/*
+	Menu
+*/
+
+.MN_Menu
+{
+    border: 1px solid #8f8f73;
+    padding: 2px;
+    background-color: #f7f7f7;
+    cursor: default;
+}
+
+.MN_Menu, .MN_Menu .MN_Label
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.MN_Item_Padding
+{
+    visibility: hidden;
+    width: 3px;
+    height: 20px;
+}
+
+.MN_Icon
+{
+    background-color: #dedede;
+    text-align: center;
+    height: 20px;
+}
+
+.MN_Label
+{
+    padding-left: 3px;
+    padding-right: 3px;
+}
+
+.MN_Separator
+{
+    height: 3px;
+}
+
+.MN_Separator_Line
+{
+    border-top: #b9b99d 1px solid;
+}
+
+.MN_Item .MN_Icon IMG
+{
+    filter: alpha(opacity=70);
+    opacity: 0.70;
+}
+
+.MN_Item_Over
+{
+    color: #ffffff;
+    background-color: #8a857d;
+}
+
+.MN_Item_Over .MN_Icon
+{
+    background-color: #6c6761;
+}
+
+.MN_Item_Disabled IMG
+{
+    filter: gray() alpha(opacity=30); /* IE */
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+}
+
+.MN_Item_Disabled .MN_Label
+{
+    color: #b7b7b7;
+}
+
+.MN_Arrow
+{
+    padding-right: 3px;
+    padding-left: 3px;
+}
+
+.MN_ConnectionLine
+{
+    background-color: #ffffff;
+}
+
+.Menu .TB_Button_On, .Menu .TB_Button_On_Over
+{
+    border: #8f8f73 1px solid;
+    background-color: #ffffff;
+}
+
+/*
+	### Panel Styles
+*/
+
+.FCK_Panel
+{
+    border: #8f8f73 1px solid;
+    padding: 2px;
+    background-color: #ffffff;
+}
+
+.FCK_Panel, .FCK_Panel TD
+{
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+    font-size: 11px;
+}
+
+/*
+	### Special Combos
+*/
+
+.SC_Panel
+{
+    overflow: auto;
+    white-space: nowrap;
+    cursor: default;
+    border: 1px solid #8f8f73;
+    padding-left: 2px;
+    padding-right: 2px;
+    background-color: #ffffff;
+}
+
+.SC_Panel, .SC_Panel TD
+{
+    font-size: 11px;
+    font-family: 'Microsoft Sans Serif' , Tahoma, Arial, Verdana, Sans-Serif;
+}
+
+.SC_Item, .SC_ItemSelected
+{
+    margin-top: 2px;
+    margin-bottom: 2px;
+    background-position: left center;
+    padding-left: 11px;
+    padding-right: 3px;
+    padding-top: 2px;
+    padding-bottom: 2px;
+    text-overflow: ellipsis;
+    overflow: hidden;
+    background-repeat: no-repeat;
+    border: #dddddd 1px solid;
+}
+
+.SC_Item *, .SC_ItemSelected *
+{
+    margin-top: 0px;
+    margin-bottom: 0px;
+}
+
+.SC_ItemSelected
 {
-	height: 23px;
-}
\ No newline at end of file
+    border: #9a9afb 1px solid;
+    background-image: url(images/toolbar.arrowright.gif);
+}
+
+.SC_ItemOver
+{
+    border: #316ac5 1px solid;
+}
+
+.SC_Field
+{
+    margin-top:1px ;
+    border: #b7b7a6 1px solid;
+    cursor: default;
+}
+
+.SC_FieldCaption
+{
+    padding-top: 1px ;
+    overflow: visible;
+    padding-right: 5px;
+    padding-left: 5px;
+    opacity: 0.75; /* Safari, Opera and Mozilla */
+    filter: alpha(opacity=70); /* IE */ /* -moz-opacity: 0.75; Mozilla (Old) */
+    height: 23px;
+    background-color: #f7f7f7;
+}
+
+.SC_FieldLabel
+{
+    white-space: nowrap;
+    padding: 2px;
+    width: 100%;
+    cursor: default;
+    background-color: #ffffff;
+    text-overflow: ellipsis;
+    overflow: hidden;
+}
+
+.SC_FieldButton
+{
+    background-position: center center;
+    background-image: url(images/toolbar.buttonarrow.gif);
+    border-left: #b7b7a6 1px solid;
+    width: 14px;
+    background-repeat: no-repeat;
+}
+
+.SC_FieldDisabled .SC_FieldButton, .SC_FieldDisabled .SC_FieldCaption
+{
+    opacity: 0.30; /* Safari, Opera and Mozilla */
+    filter: gray() alpha(opacity=30); /* IE */ /* -moz-opacity: 0.30; Mozilla (Old) */
+}
+
+.SC_FieldOver
+{
+    border: #316ac5 1px solid;
+}
+
+.SC_FieldOver .SC_FieldButton
+{
+    border-left: #316ac5 1px solid;
+}
+
+/*
+	### Color Selector Panel
+*/
+
+.ColorBoxBorder
+{
+    border: #808080 1px solid;
+    position: static;
+}
+
+.ColorBox
+{
+    font-size: 1px;
+    width: 10px;
+    position: static;
+    height: 10px;
+}
+
+.ColorDeselected, .ColorSelected
+{
+    cursor: default;
+}
+
+.ColorDeselected
+{
+    border: #ffffff 1px solid;
+    padding: 2px;
+    float: left;
+}
+
+.ColorSelected
+{
+    border: #316ac5 1px solid;
+    padding: 2px;
+    float: left;
+    background-color: #c1d2ee;
+}
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/fck_strip.gif and 1.4.1.src/fckeditor/editor/skins/silver/fck_strip.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/images/toolbar.buttonbg.gif and 1.4.1.src/fckeditor/editor/skins/silver/images/toolbar.buttonbg.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/images/toolbar.start.gif and 1.4.1.src/fckeditor/editor/skins/silver/images/toolbar.start.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/about.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/about.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/anchor.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/anchor.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/bgcolor.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/bgcolor.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/bold.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/bold.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/bulletedlist.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/bulletedlist.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/button.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/button.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/checkbox.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/checkbox.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/copy.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/copy.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/cut.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/cut.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/docprops.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/docprops.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/find.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/find.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/flash.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/flash.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/form.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/form.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/hiddenfield.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/hiddenfield.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/imagebutton.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/imagebutton.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/image.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/image.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/indent.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/indent.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/inserthorizontalrule.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/inserthorizontalrule.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/insertorderedlist.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/insertorderedlist.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/insertunorderedlist.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/insertunorderedlist.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/italic.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/italic.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/justifycenter.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/justifycenter.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/justifyfull.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/justifyfull.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/justifyleft.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/justifyleft.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/justifyright.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/justifyright.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/link.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/link.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/newpage.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/newpage.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/numberedlist.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/numberedlist.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/outdent.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/outdent.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/pagebreak.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/pagebreak.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/paste.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/paste.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/pastetext.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/pastetext.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/pasteword.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/pasteword.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/preview.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/preview.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/print.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/print.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/radio.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/radio.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/redo.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/redo.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/removeformat.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/removeformat.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/replace.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/replace.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/save.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/save.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/selectall.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/selectall.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/select.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/select.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/showdetails.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/showdetails.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/showtableborders.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/showtableborders.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/smiley.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/smiley.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/source.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/source.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/specialchar.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/specialchar.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/spellcheck.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/spellcheck.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/strikethrough.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/strikethrough.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/subscript.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/subscript.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/superscript.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/superscript.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/tablecell.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/tablecell.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/tabledeletecells.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/tabledeletecells.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/tabledeletecolumns.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/tabledeletecolumns.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/tabledeleterows.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/tabledeleterows.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/table.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/table.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/tableinsertcell.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/tableinsertcell.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/tableinsertcolumn.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/tableinsertcolumn.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/tableinsertrow.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/tableinsertrow.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/tablemergecells.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/tablemergecells.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/tablesplitcell.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/tablesplitcell.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/templates.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/templates.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/textarea.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/textarea.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/textcolor.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/textcolor.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/textfield.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/textfield.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/underline.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/underline.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/undo.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/undo.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/universalkey.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/universalkey.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/unlink.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/unlink.gif differ
Binary files 1.4.0sr5-1.src/fckeditor/editor/skins/silver/toolbar/unorderedlist.gif and 1.4.1.src/fckeditor/editor/skins/silver/toolbar/unorderedlist.gif differ
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckcontextmenugroup.js 1.4.1.src/fckeditor/editor/_source/classes/fckcontextmenugroup.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckcontextmenugroup.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckcontextmenugroup.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,71 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fckcontextmenugroup.js
- * 	FCKContextMenuGroup Class: represents a group of items in the context 
- * 	menu. Generaly a group of items is directly dependent of the same rules.
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-var FCKContextMenuGroup = function( addSeparator, contextMenu, firstItemCommand, firstItemLabel, hasIcon )
-{
-	this.IsVisible = true ;
-	
-	// Array with all available context menu items of this group.
-	this.Items = new Array() ;
-	
-	if ( addSeparator )
-		this.Add( new FCKContextMenuSeparator() ) ;
-	
-	if ( contextMenu && firstItemCommand && firstItemLabel )
-		this.Add( new FCKContextMenuItem( contextMenu, firstItemCommand, firstItemLabel, hasIcon ) ) ;
-
-	// This OPTIONAL function checks if the group must be shown.
-	this.ValidationFunction = null ;
-}
-
-// Adds an item to the group's items collecion.
-FCKContextMenuGroup.prototype.Add = function( contextMenuItem )
-{
-	this.Items[ this.Items.length ] = contextMenuItem ;
-}
-
-// Creates the <TR> elements that represent the item in a table (usually the rendered context menu).
-FCKContextMenuGroup.prototype.CreateTableRows = function( table )
-{
-	for ( var i = 0 ; i < this.Items.length ; i++ )
-	{
-		this.Items[i].CreateTableRow( table ) ;
-	}
-}
-
-FCKContextMenuGroup.prototype.SetVisible = function( isVisible )
-{
-	for ( var i = 0 ; i < this.Items.length ; i++ )
-	{
-		this.Items[i].SetVisible( isVisible ) ;
-	}
-	
-	this.IsVisible = isVisible ;
-}
-
-FCKContextMenuGroup.prototype.RefreshState = function()
-{
-	if ( ! this.IsVisible ) return ;
-	
-	for ( var i = 0 ; i < this.Items.length ; i++ )
-	{
-		this.Items[i].RefreshState() ;
-	}
-}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckcontextmenuitem.js 1.4.1.src/fckeditor/editor/_source/classes/fckcontextmenuitem.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckcontextmenuitem.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckcontextmenuitem.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,104 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fckcontextmenuitem.js
- * 	FCKContextMenuItem Class: represents a item in the context menu.
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-var FCKContextMenuItem = function( contextMenu, commandName, label, hasIcon )
-{
-	this.ContextMenu	= contextMenu ;
-	this.Command		= FCKCommands.GetCommand( commandName ) ;
-	this.Label			= label ? label : commandName ;
-	this.HasIcon		= hasIcon ? true : false ;
-}
-
-function FCKContextMenuItem_OnMouseOver()
-{
-	if ( this.className != 'CM_Disabled' )
-		this.className = 'CM_Over' ;
-}
-	
-function FCKContextMenuItem_OnMouseOut()
-{
-	if ( this.className != 'CM_Disabled' )
-		this.className = 'CM_Option' ;
-}
-	
-function FCKContextMenuItem_OnClick()
-{
-	if ( this.className != 'CM_Disabled' )
-	{
-		this.FCKContextMenuItem.ContextMenu.Hide() ;
-		this.FCKContextMenuItem.Command.Execute() ;
-	}
-	return false ;
-}
-
-FCKContextMenuItem.prototype.CreateTableRow = function( targetTable )
-{
-	// Creates the <TR> element.
-	this._Row = targetTable.insertRow(-1) ;
-	this._Row.className = 'CM_Disabled' ;
-	this._Row.FCKContextMenuItem = this ;
-	
-	this._Row.onmouseover	= FCKContextMenuItem_OnMouseOver ;
-	this._Row.onmouseout	= FCKContextMenuItem_OnMouseOut ;
-	this._Row.onclick		= FCKContextMenuItem_OnClick ;
-	
-	var oCell = this._Row.insertCell(-1) ;
-	oCell.className = 'CM_Icon' ;
-	
-	if ( this.HasIcon ) oCell.innerHTML = '<img alt="" src="' + FCKConfig.SkinPath + 'toolbar/' + this.Command.Name.toLowerCase() + '.gif" width="21" height="20" unselectable="on">' ;
-	
-	oCell = this._Row.insertCell(-1) ;
-	oCell.className		= 'CM_Label' ;
-	oCell.unselectable	= 'on' ;
-	oCell.noWrap		= true ;
-	oCell.innerHTML		= this.Label ;
-}
-
-FCKContextMenuItem.prototype.SetVisible = function( isVisible )
-{
-	this._Row.style.display = isVisible ? '' : 'none' ;
-}
-
-FCKContextMenuItem.prototype.RefreshState = function()
-{
-	switch ( this.Command.GetState() )
-	{
-		case FCK_TRISTATE_ON :
-		case FCK_TRISTATE_OFF :
-			this._Row.className = 'CM_Option' ;
-			break ;
-		default :
-			this._Row.className = 'CM_Disabled' ;
-			break ;
-	}
-} 
-
-/*
-Sample output.
------------------------------------------
-<tr class="CM_Disabled">
-	<td class="CM_Icon"><img alt="" src="icons/cut.gif" width="21" height="20" unselectable="on"></td>
-	<td class="CM_Label" unselectable="on">Cut</td>
-</tr>
------------------------------------------
-<tr class="CM_Option" onmouseover="OnOver(this);" onmouseout="OnOut(this);">
-	<td class="CM_Icon"></td>
-	<td class="CM_Label">Do Something</td>
-</tr>
-*/
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckcontextmenu.js 1.4.1.src/fckeditor/editor/_source/classes/fckcontextmenu.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckcontextmenu.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckcontextmenu.js	2006-06-17 16:25:25.000000000 -0500
@@ -0,0 +1,120 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckcontextmenu.js
+ * 	FCKContextMenu Class: renders an control a context menu.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKContextMenu = function( parentWindow, mouseClickWindow, langDir )
+{
+	var oPanel = this._Panel = new FCKPanel( parentWindow, true ) ;
+	oPanel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ;
+	oPanel.IsContextMenu = true ;
+	
+	var oMenuBlock = this._MenuBlock = new FCKMenuBlock() ;
+	oMenuBlock.Panel = oPanel ;
+	oMenuBlock.OnClick = FCKTools.CreateEventListener( FCKContextMenu_MenuBlock_OnClick, this ) ;
+	
+	this._Redraw = true ;
+	
+	this.SetMouseClickWindow( mouseClickWindow || parentWindow ) ;
+}
+
+
+FCKContextMenu.prototype.SetMouseClickWindow = function( mouseClickWindow )
+{
+	if ( !FCKBrowserInfo.IsIE )
+	{
+		this._Document = mouseClickWindow.document ;
+		this._Document.addEventListener( 'contextmenu', FCKContextMenu_Document_OnContextMenu, false ) ;
+	}
+}
+
+FCKContextMenu.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled )
+{
+	var oItem = this._MenuBlock.AddItem( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled) ;
+	this._Redraw = true ;
+	return oItem ;
+}
+
+FCKContextMenu.prototype.AddSeparator = function()
+{
+	this._MenuBlock.AddSeparator() ;
+	this._Redraw = true ;
+}
+
+FCKContextMenu.prototype.RemoveAllItems = function()
+{
+	this._MenuBlock.RemoveAllItems() ;
+	this._Redraw = true ;
+}
+
+FCKContextMenu.prototype.AttachToElement = function( element )
+{
+	if ( FCKBrowserInfo.IsIE )
+		FCKTools.AddEventListenerEx( element, 'contextmenu', FCKContextMenu_AttachedElement_OnContextMenu, this ) ;
+	else
+		element._FCKContextMenu = this ;
+
+//	element.onmouseup		= FCKContextMenu_AttachedElement_OnMouseUp ;
+}
+
+function FCKContextMenu_Document_OnContextMenu( e )
+{
+	var el = e.target ;
+	
+	while ( el )
+	{
+		if ( el._FCKContextMenu )
+		{
+			FCKTools.CancelEvent( e ) ;
+			FCKContextMenu_AttachedElement_OnContextMenu( e, el._FCKContextMenu, el ) ;
+		}
+		el = el.parentNode ;
+	}
+}
+
+function FCKContextMenu_AttachedElement_OnContextMenu( ev, fckContextMenu, el )
+{
+//	var iButton = e ? e.which - 1 : event.button ;
+
+//	if ( iButton != 2 )
+//		return ;
+
+	var eTarget = el || this ;
+
+	if ( fckContextMenu.OnBeforeOpen )
+		fckContextMenu.OnBeforeOpen.call( fckContextMenu, eTarget ) ;
+	
+	if ( fckContextMenu._Redraw )
+	{
+		fckContextMenu._MenuBlock.Create( fckContextMenu._Panel.MainNode ) ;
+		fckContextMenu._Redraw = false ;
+	}
+
+	fckContextMenu._Panel.Show( 
+		ev.pageX || ev.screenX, 
+		ev.pageY || ev.screenY, 
+		ev.currentTarget || null
+	) ;
+	
+	return false ;
+}
+
+function FCKContextMenu_MenuBlock_OnClick( menuItem, contextMenu )
+{
+	contextMenu._Panel.Hide() ;
+	FCKTools.RunFunction( contextMenu.OnItemClick, contextMenu, menuItem ) ;
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckcontextmenuseparator.js 1.4.1.src/fckeditor/editor/_source/classes/fckcontextmenuseparator.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckcontextmenuseparator.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckcontextmenuseparator.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,55 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fckcontextmenuseparator.js
- * 	FCKContextMenuSeparator Class: represents a separator in the toolbar.
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-var FCKContextMenuSeparator = function()
-{
-}
-
-FCKContextMenuSeparator.prototype.CreateTableRow = function( targetTable )
-{
-	// Creates the <TR> element.
-	this._Row = targetTable.insertRow(-1) ;
-	this._Row.className = 'CM_Separator' ;
-	
-	var oCell = this._Row.insertCell(-1) ;
-	oCell.className = 'CM_Icon' ;
-	
-	oCell = this._Row.insertCell(-1) ;
-	oCell.className = 'CM_Label' ;
-	oCell.innerHTML = '<div></div>' ;
-}
-
-FCKContextMenuSeparator.prototype.SetVisible = function( isVisible )
-{
-	this._Row.style.display = isVisible ? '' : 'none' ;
-}
-
-FCKContextMenuSeparator.prototype.RefreshState = function()
-{
-	// Do nothing... its state doesn't change.
-} 
-
-/*
-Sample output.
------------------------------------------
-<tr class="CM_Separator">
-	<td class="CM_Icon"></td>
-	<td class="CM_Label"><div></div></td>
-</tr>
-*/
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckeditingarea.js 1.4.1.src/fckeditor/editor/_source/classes/fckeditingarea.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckeditingarea.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckeditingarea.js	2006-09-03 13:05:03.000000000 -0500
@@ -0,0 +1,190 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckeditingarea.js
+ * 	FCKEditingArea Class: renders an editable area.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+/**
+ * @constructor
+ * @param {String} targetElement The element that will hold the editing area. Any child element present in the target will be deleted.
+ */
+var FCKEditingArea = function( targetElement )
+{
+	this.TargetElement = targetElement ;
+	this.Mode = FCK_EDITMODE_WYSIWYG ;
+
+	if ( FCK.IECleanup )
+		FCK.IECleanup.AddItem( this, FCKEditingArea_Cleanup ) ;
+}
+
+
+/**
+ * @param {String} html The complete HTML for the page, including DOCTYPE and the <html> tag.
+ */
+FCKEditingArea.prototype.Start = function( html, secondCall )
+{
+	var eTargetElement	= this.TargetElement ;
+	var oTargetDocument	= FCKTools.GetElementDocument( eTargetElement ) ;
+	
+	// Remove all child nodes from the target.
+	while( eTargetElement.childNodes.length > 0 )
+		eTargetElement.removeChild( eTargetElement.childNodes[0] ) ;
+
+	if ( this.Mode == FCK_EDITMODE_WYSIWYG )
+	{
+		if ( FCKBrowserInfo.IsGecko )
+			html = html.replace( /(<body[^>]*>)\s*(<\/body>)/i, '$1' + GECKO_BOGUS + '$2' ) ;
+	
+		// Create the editing area IFRAME.
+		var oIFrame = this.IFrame = oTargetDocument.createElement( 'iframe' ) ;
+		oIFrame.src = 'javascript:void(0)' ;
+		oIFrame.frameBorder = 0 ;
+		oIFrame.width = oIFrame.height = '100%' ;
+		
+		// Append the new IFRAME to the target.
+		eTargetElement.appendChild( oIFrame ) ;
+		
+		// IE has a bug with the <base> tag... it must have a </base> closer,
+		// otherwise the all sucessive tags will be set as children nodes of the <base>.
+		if ( FCKBrowserInfo.IsIE )
+			html = html.replace( /(<base[^>]*?)\s*\/?>(?!\s*<\/base>)/gi, '$1></base>' ) ;
+
+		// Get the window and document objects used to interact with the newly created IFRAME.
+		this.Window = oIFrame.contentWindow ;
+		
+		// IE: Avoid JavaScript errors thrown by the editing are source (like tags events).
+		// TODO: This error handler is not being fired.
+		// this.Window.onerror = function() { alert( 'Error!' ) ; return true ; }
+
+		var oDoc = this.Document = this.Window.document ;
+		
+		oDoc.open() ;
+		oDoc.write( html ) ;
+		oDoc.close() ;
+		
+		// Firefox 1.0.x is buggy... ohh yes... so let's do it two times and it
+		// will magicaly work.
+		if ( FCKBrowserInfo.IsGecko10 && !secondCall )
+		{
+			this.Start( html, true ) ;
+			return ;
+		}
+		
+		this.Window._FCKEditingArea = this ;
+		
+		// FF 1.0.x is buggy... we must wait a lot to enable editing because
+		// sometimes the content simply disappears, for example when pasting
+		// "bla1!<img src='some_url'>!bla2" in the source and then switching
+		// back to design.
+		if ( FCKBrowserInfo.IsGecko10 )
+			this.Window.setTimeout( FCKEditingArea_CompleteStart, 500 ) ;
+		else
+			FCKEditingArea_CompleteStart.call( this.Window ) ;
+	}
+	else
+	{
+		var eTextarea = this.Textarea = oTargetDocument.createElement( 'textarea' ) ; 
+		eTextarea.className = 'SourceField' ;
+		eTextarea.dir = 'ltr' ;
+		eTextarea.style.width = eTextarea.style.height = '100%' ;
+		eTextarea.style.border = 'none' ;
+		eTargetElement.appendChild( eTextarea ) ;
+
+		eTextarea.value = html  ;
+
+		// Fire the "OnLoad" event.
+		FCKTools.RunFunction( this.OnLoad ) ;
+	}
+}
+
+// "this" here is FCKEditingArea.Window 
+function FCKEditingArea_CompleteStart()
+{
+	// Of Firefox, the DOM takes a little to become available. So we must wait for it in a loop.
+	if ( !this.document.body )
+	{
+		this.setTimeout( FCKEditingArea_CompleteStart, 50 ) ;
+		return ;
+	}
+	
+	var oEditorArea = this._FCKEditingArea ;
+	oEditorArea.MakeEditable() ;
+	
+	// Fire the "OnLoad" event.
+	FCKTools.RunFunction( oEditorArea.OnLoad ) ;
+}
+
+FCKEditingArea.prototype.MakeEditable = function()
+{
+	var oDoc = this.Document ;
+
+	if ( FCKBrowserInfo.IsIE )
+		oDoc.body.contentEditable = true ;
+	else
+	{
+		try
+		{
+			oDoc.designMode = 'on' ;
+
+			// Tell Gecko to use or not the <SPAN> tag for the bold, italic and underline.
+			oDoc.execCommand( 'useCSS', false, !FCKConfig.GeckoUseSPAN ) ;
+
+			// Analysing Firefox 1.5 source code, it seams that there is support for a 
+			// "insertBrOnReturn" command. Applying it gives no error, but it doesn't 
+			// gives the same behavior that you have with IE. It works only if you are
+			// already inside a paragraph and it doesn't render correctly in the first enter.
+			// oDoc.execCommand( 'insertBrOnReturn', false, false ) ;
+
+			// Tell Gecko (Firefox 1.5+) to enable or not live resizing of objects (by Alfonso Martinez)
+			oDoc.execCommand( 'enableObjectResizing', false, !FCKConfig.DisableObjectResizing ) ;
+			
+			// Disable the standard table editing features of Firefox.
+			oDoc.execCommand( 'enableInlineTableEditing', false, !FCKConfig.DisableFFTableHandles ) ;
+		}
+		catch (e) {}
+	}
+}
+
+FCKEditingArea.prototype.Focus = function()
+{
+	try
+	{
+		if ( this.Mode == FCK_EDITMODE_WYSIWYG )
+		{
+			if ( FCKBrowserInfo.IsSafari )
+				this.IFrame.focus() ;
+			else
+				this.Window.focus() ;
+		}
+		else
+			this.Textarea.focus() ;
+	}
+	catch(e) {}
+}
+
+function FCKEditingArea_Cleanup()
+{
+	this.TargetElement = null ;
+	this.IFrame = null ;
+	this.Document = null ;
+	this.Textarea = null ;
+	
+	if ( this.Window )
+	{
+		this.Window._FCKEditingArea = null ;
+		this.Window = null ;
+	}
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckevents.js 1.4.1.src/fckeditor/editor/_source/classes/fckevents.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckevents.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckevents.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -19,32 +19,33 @@
 
 var FCKEvents ;
 
-if ( !( FCKEvents = NS.FCKEvents ) )
+FCKEvents = function( eventsOwner )
 {
-	FCKEvents = NS.FCKEvents = function( eventsOwner )
-	{
-		this.Owner = eventsOwner ;
-		this.RegisteredEvents = new Object() ;
-	}
+	this.Owner = eventsOwner ;
+	this.RegisteredEvents = new Object() ;
+}
 
-	FCKEvents.prototype.AttachEvent = function( eventName, functionPointer )
-	{
-		if ( ! this.RegisteredEvents[ eventName ] ) this.RegisteredEvents[ eventName ] = new Array() ;
+FCKEvents.prototype.AttachEvent = function( eventName, functionPointer )
+{
+	var aTargets ;
 
-		this.RegisteredEvents[ eventName ][ this.RegisteredEvents[ eventName ].length ] = functionPointer ;
-	}
+	if ( !( aTargets = this.RegisteredEvents[ eventName ] ) ) 
+		this.RegisteredEvents[ eventName ] = [ functionPointer ] ;
+	else
+		aTargets.push( functionPointer ) ;
+}
 
-	FCKEvents.prototype.FireEvent = function( eventName, params )
-	{
-		var bReturnValue = true ;
+FCKEvents.prototype.FireEvent = function( eventName, params )
+{
+	var bReturnValue = true ;
 
-		var oCalls = this.RegisteredEvents[ eventName ] ;
-		if ( oCalls )
-		{
-			for ( var i = 0 ; i < oCalls.length ; i++ )
-				bReturnValue = ( oCalls[ i ]( this.Owner, params ) && bReturnValue ) ;
-		}
+	var oCalls = this.RegisteredEvents[ eventName ] ;
 
-		return bReturnValue ;
+	if ( oCalls )
+	{
+		for ( var i = 0 ; i < oCalls.length ; i++ )
+			bReturnValue = ( oCalls[ i ]( this.Owner, params ) && bReturnValue ) ;
 	}
+
+	return bReturnValue ;
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckicon.js 1.4.1.src/fckeditor/editor/_source/classes/fckicon.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckicon.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckicon.js	2006-06-17 16:25:25.000000000 -0500
@@ -0,0 +1,86 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckicon.js
+ * 	FCKIcon Class: renders an icon from a single image, a strip or even a
+ * 	spacer.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKIcon = function( iconPathOrStripInfoArray )
+{
+	var sTypeOf = iconPathOrStripInfoArray ? typeof( iconPathOrStripInfoArray ) : 'undefined' ;
+	switch ( sTypeOf )
+	{
+		case 'number' :
+			this.Path = FCKConfig.SkinPath + 'fck_strip.gif' ;
+			this.Size = 16 ;
+			this.Position = iconPathOrStripInfoArray ;
+			break ;
+		
+		case 'undefined' :
+			this.Path = FCK_SPACER_PATH ;
+			break ;
+		
+		case 'string' :
+			this.Path = iconPathOrStripInfoArray ;
+			break ;
+		
+		default :
+			// It is an array in the format [ StripFilePath, IconSize, IconPosition ]
+			this.Path		= iconPathOrStripInfoArray[0] ;
+			this.Size		= iconPathOrStripInfoArray[1] ;
+			this.Position	= iconPathOrStripInfoArray[2] ;
+	}
+}
+
+FCKIcon.prototype.CreateIconElement = function( document )
+{
+	var eIcon ;
+	
+	if ( this.Position )		// It is using an icons strip image.
+	{
+		var sPos = '-' + ( ( this.Position - 1 ) * this.Size ) + 'px' ;
+	
+		if ( FCKBrowserInfo.IsIE )
+		{
+			// <div class="TB_Button_Image"><img src="strip.gif" style="top:-16px"></div>
+			
+			eIcon = document.createElement( 'DIV' ) ;
+			
+			var eIconImage = eIcon.appendChild( document.createElement( 'IMG' ) ) ;
+			eIconImage.src = this.Path ;
+			eIconImage.style.top = sPos ;
+		}
+		else
+		{
+			// <img class="TB_Button_Image" src="spacer.gif" style="background-position: 0px -16px;background-image: url(strip.gif);">
+			
+			eIcon = document.createElement( 'IMG' ) ;
+			eIcon.src = FCK_SPACER_PATH ;
+			eIcon.style.backgroundPosition	= '0px ' + sPos ;
+			eIcon.style.backgroundImage		= 'url(' + this.Path + ')' ;
+		}
+	}
+	else					// It is using a single icon image.
+	{
+		// <img class="TB_Button_Image" src="smiley.gif">
+		eIcon = document.createElement( 'IMG' ) ;
+		eIcon.src = this.Path ? this.Path : FCK_SPACER_PATH ;
+	}
+	
+	eIcon.className = 'TB_Button_Image' ;
+
+	return eIcon ;
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckiecleanup.js 1.4.1.src/fckeditor/editor/_source/classes/fckiecleanup.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckiecleanup.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckiecleanup.js	2006-06-17 16:25:25.000000000 -0500
@@ -0,0 +1,51 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckiecleanup.js
+ * 	FCKIECleanup Class: a generic class used as a tool to remove IE leaks.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+
+var	FCKIECleanup = function( attachWindow )
+{
+
+	this.Items = new Array() ;
+
+	attachWindow._FCKCleanupObj = this ;
+	attachWindow.attachEvent( 'onunload', FCKIECleanup_Cleanup ) ;	
+}
+	
+FCKIECleanup.prototype.AddItem = function( dirtyItem, cleanupFunction )
+{
+	this.Items.push( [ dirtyItem, cleanupFunction ] ) ;
+}
+	
+function FCKIECleanup_Cleanup()
+{
+	var aItems = this._FCKCleanupObj.Items ;
+	var iLenght = aItems.length ;
+
+	for ( var i = 0 ; i < iLenght ; i++ )
+	{
+		var oItem = aItems[i] ;
+		oItem[1].call( oItem[0] ) ;
+		aItems[i] = null ;
+	}
+	
+	this._FCKCleanupObj = null ;
+	
+	if ( CollectGarbage )
+		CollectGarbage() ;
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckmenublock.js 1.4.1.src/fckeditor/editor/_source/classes/fckmenublock.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckmenublock.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckmenublock.js	2006-09-03 13:05:03.000000000 -0500
@@ -0,0 +1,135 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckmenublock.js
+ * 	Renders a list of menu items.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+
+var FCKMenuBlock = function()
+{
+	this._Items	= new Array() ;
+}
+
+
+FCKMenuBlock.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled )
+{
+	var oItem = new FCKMenuItem( this, name, label, iconPathOrStripInfoArrayOrIndex, isDisabled ) ;
+	
+	oItem.OnClick		= FCKTools.CreateEventListener( FCKMenuBlock_Item_OnClick, this ) ;
+	oItem.OnActivate	= FCKTools.CreateEventListener( FCKMenuBlock_Item_OnActivate, this ) ;
+	
+	this._Items.push( oItem ) ;
+
+	return oItem ;
+}
+
+FCKMenuBlock.prototype.AddSeparator = function()
+{
+	this._Items.push( new FCKMenuSeparator() ) ;
+}
+
+FCKMenuBlock.prototype.RemoveAllItems = function()
+{
+	this._Items = new Array() ;
+	
+	var eItemsTable = this._ItemsTable ;
+	if ( eItemsTable )
+	{
+		while ( eItemsTable.rows.length > 0 )
+			eItemsTable.deleteRow( 0 ) ;
+	}
+}
+
+FCKMenuBlock.prototype.Create = function( parentElement )
+{
+	if ( !this._ItemsTable )
+	{
+		if ( FCK.IECleanup )
+			FCK.IECleanup.AddItem( this, FCKMenuBlock_Cleanup ) ;
+
+		this._Window = FCKTools.GetElementWindow( parentElement ) ;
+
+		var oDoc = FCKTools.GetElementDocument( parentElement ) ;
+
+		var eTable = parentElement.appendChild( oDoc.createElement( 'table' ) ) ;
+		eTable.cellPadding = 0 ;
+		eTable.cellSpacing = 0 ;
+
+		FCKTools.DisableSelection( eTable ) ;
+		
+		var oMainElement = eTable.insertRow(-1).insertCell(-1) ;
+		oMainElement.className = 'MN_Menu' ;
+	
+		var eItemsTable = this._ItemsTable = oMainElement.appendChild( oDoc.createElement( 'table' ) ) ;
+		eItemsTable.cellPadding = 0 ;
+		eItemsTable.cellSpacing = 0 ;		
+	}
+	
+	for ( var i = 0 ; i < this._Items.length ; i++ )
+		this._Items[i].Create( this._ItemsTable ) ;
+}
+
+/* Events */
+
+function FCKMenuBlock_Item_OnClick( clickedItem, menuBlock )
+{
+	FCKTools.RunFunction( menuBlock.OnClick, menuBlock, [ clickedItem ] ) ;
+}
+
+function FCKMenuBlock_Item_OnActivate( menuBlock )
+{
+	var oActiveItem = menuBlock._ActiveItem ;
+	
+	if ( oActiveItem && oActiveItem != this )
+	{
+		// Set the focus to this menu block window (to fire OnBlur on opened panels).
+		if ( !FCKBrowserInfo.IsIE && oActiveItem.HasSubMenu && !this.HasSubMenu )
+			menuBlock._Window.focus() ;
+
+		oActiveItem.Deactivate() ;		
+	}
+
+	menuBlock._ActiveItem = this ;
+}
+
+function FCKMenuBlock_Cleanup()
+{
+	this._Window = null ;
+	this._ItemsTable = null ;
+}
+
+// ################# //
+
+var FCKMenuSeparator = function()
+{}
+
+FCKMenuSeparator.prototype.Create = function( parentTable )
+{
+	var oDoc = FCKTools.GetElementDocument( parentTable ) ;
+
+	var r = parentTable.insertRow(-1) ;
+	
+	var eCell = r.insertCell(-1) ;
+	eCell.className = 'MN_Separator MN_Icon' ;
+
+	eCell = r.insertCell(-1) ;
+	eCell.className = 'MN_Separator' ;
+	eCell.appendChild( oDoc.createElement( 'DIV' ) ).className = 'MN_Separator_Line' ;
+
+	eCell = r.insertCell(-1) ;
+	eCell.className = 'MN_Separator' ;
+	eCell.appendChild( oDoc.createElement( 'DIV' ) ).className = 'MN_Separator_Line' ;
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckmenublockpanel.js 1.4.1.src/fckeditor/editor/_source/classes/fckmenublockpanel.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckmenublockpanel.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckmenublockpanel.js	2006-06-17 16:25:25.000000000 -0500
@@ -0,0 +1,51 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckmenublockpanel.js
+ * 	This class is a menu block that behaves like a panel. It's a mix of the
+ * 	FCKMenuBlock and FCKPanel classes.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+
+var FCKMenuBlockPanel = function()
+{
+	// Call the "base" constructor.
+	FCKMenuBlock.call( this ) ;
+}
+
+FCKMenuBlockPanel.prototype = new FCKMenuBlock() ;
+
+
+// Override the create method.
+FCKMenuBlockPanel.prototype.Create = function()
+{
+	var oPanel = this.Panel = ( this.Parent && this.Parent.Panel ? this.Parent.Panel.CreateChildPanel() : new FCKPanel() ) ;
+	oPanel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ;
+
+	// Call the "base" implementation.
+	FCKMenuBlock.prototype.Create.call( this, oPanel.MainNode ) ;
+}
+
+FCKMenuBlockPanel.prototype.Show = function( x, y, relElement )
+{
+	if ( !this.Panel.CheckIsOpened() )
+		this.Panel.Show( x, y, relElement ) ;
+}
+
+FCKMenuBlockPanel.prototype.Hide = function()
+{
+	if ( this.Panel.CheckIsOpened() )
+		this.Panel.Hide() ;
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckmenuitem.js 1.4.1.src/fckeditor/editor/_source/classes/fckmenuitem.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckmenuitem.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckmenuitem.js	2006-09-03 13:05:03.000000000 -0500
@@ -0,0 +1,157 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckmenuitem.js
+ * 	Defines and renders a menu items in a menu block.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+
+var FCKMenuItem = function( parentMenuBlock, name, label, iconPathOrStripInfoArray, isDisabled )
+{
+	this.Name		= name ;
+	this.Label		= label || name ;
+	this.IsDisabled	= isDisabled ;
+	
+	this.Icon = new FCKIcon( iconPathOrStripInfoArray ) ;
+	
+	this.SubMenu			= new FCKMenuBlockPanel() ;
+	this.SubMenu.Parent		= parentMenuBlock ;
+	this.SubMenu.OnClick	= FCKTools.CreateEventListener( FCKMenuItem_SubMenu_OnClick, this ) ;
+
+	if ( FCK.IECleanup )
+		FCK.IECleanup.AddItem( this, FCKMenuItem_Cleanup ) ;
+}
+
+
+FCKMenuItem.prototype.AddItem = function( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled )
+{
+	this.HasSubMenu = true ;
+	return this.SubMenu.AddItem( name, label, iconPathOrStripInfoArrayOrIndex, isDisabled ) ;
+}
+
+FCKMenuItem.prototype.AddSeparator = function()
+{
+	this.SubMenu.AddSeparator() ;
+}
+
+FCKMenuItem.prototype.Create = function( parentTable )
+{
+	var bHasSubMenu = this.HasSubMenu ;
+	
+	var oDoc = FCKTools.GetElementDocument( parentTable ) ;
+
+	// Add a row in the table to hold the menu item.
+	var r = this.MainElement = parentTable.insertRow(-1) ;
+	r.className = this.IsDisabled ? 'MN_Item_Disabled' : 'MN_Item' ;
+
+	// Set the row behavior.
+	if ( !this.IsDisabled )
+	{
+		FCKTools.AddEventListenerEx( r, 'mouseover', FCKMenuItem_OnMouseOver, [ this ] ) ;
+		FCKTools.AddEventListenerEx( r, 'click', FCKMenuItem_OnClick, [ this ] ) ;
+
+		if ( !bHasSubMenu )
+			FCKTools.AddEventListenerEx( r, 'mouseout', FCKMenuItem_OnMouseOut, [ this ] ) ;
+	}
+	
+	// Create the icon cell.
+	var eCell = r.insertCell(-1) ;
+	eCell.className = 'MN_Icon' ;
+	eCell.appendChild( this.Icon.CreateIconElement( oDoc ) ) ;
+
+	// Create the label cell.
+	eCell = r.insertCell(-1) ;
+	eCell.className = 'MN_Label' ;
+	eCell.noWrap = true ;
+	eCell.appendChild( oDoc.createTextNode( this.Label ) ) ;
+	
+	// Create the arrow cell and setup the sub menu panel (if needed).
+	eCell = r.insertCell(-1) ;
+	if ( bHasSubMenu )
+	{
+		eCell.className = 'MN_Arrow' ;
+
+		// The arrow is a fixed size image.
+		var eArrowImg = eCell.appendChild( oDoc.createElement( 'IMG' ) ) ;
+		eArrowImg.src = FCK_IMAGES_PATH + 'arrow_' + FCKLang.Dir + '.gif' ;
+		eArrowImg.width	 = 4 ;
+		eArrowImg.height = 7 ;
+		
+		this.SubMenu.Create() ;
+		this.SubMenu.Panel.OnHide = FCKTools.CreateEventListener( FCKMenuItem_SubMenu_OnHide, this ) ;
+	}
+}
+
+FCKMenuItem.prototype.Activate = function()
+{
+	this.MainElement.className = 'MN_Item_Over' ;
+
+	if ( this.HasSubMenu )
+	{
+		// Show the child menu block. The ( +2, -2 ) correction is done because
+		// of the padding in the skin. It is not a good solution because one
+		// could change the skin and so the final result would not be accurate.
+		// For now it is ok because we are controlling the skin.
+		this.SubMenu.Show( this.MainElement.offsetWidth + 2, -2, this.MainElement ) ;
+	}
+
+	FCKTools.RunFunction( this.OnActivate, this ) ;
+}
+
+FCKMenuItem.prototype.Deactivate = function()
+{
+	this.MainElement.className = 'MN_Item' ;
+
+	if ( this.HasSubMenu )
+		this.SubMenu.Hide() ;
+}
+
+/* Events */
+
+function FCKMenuItem_SubMenu_OnClick( clickedItem, listeningItem )
+{
+	FCKTools.RunFunction( listeningItem.OnClick, listeningItem, [ clickedItem ] ) ;
+}
+
+function FCKMenuItem_SubMenu_OnHide( menuItem )
+{
+	menuItem.Deactivate() ;
+}
+
+function FCKMenuItem_OnClick( ev, menuItem )
+{
+	if ( menuItem.HasSubMenu )
+		menuItem.Activate() ;
+	else
+	{
+		menuItem.Deactivate() ;
+		FCKTools.RunFunction( menuItem.OnClick, menuItem, [ menuItem ] ) ;
+	}
+}
+
+function FCKMenuItem_OnMouseOver( ev, menuItem )
+{
+	menuItem.Activate() ;
+}
+
+function FCKMenuItem_OnMouseOut( ev, menuItem )
+{
+	menuItem.Deactivate() ;
+}
+
+function FCKMenuItem_Cleanup()
+{
+	this.MainElement = null ;
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckpanel_gecko.js 1.4.1.src/fckeditor/editor/_source/classes/fckpanel_gecko.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckpanel_gecko.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckpanel_gecko.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,206 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fckpanel_gecko.js
- * 	FCKPanel Class: Creates and manages floating panels in Gecko Browsers.
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-var FCKPanel = function( parentWindow )
-{
-	if ( parentWindow )
-		this.Window = parentWindow ;
-	else
-	{
-		this.Window = window ;
-
-		while ( this.Window != window.top )
-		{
-			// Try/Catch must be used to avoit an error when using a frameset
-			// on a different domain:
-			// "Permission denied to get property HTMLDocument.Body".
-			try
-			{
-				if ( this.Window.parent.document.body.tagName == 'FRAMESET' )
-					break ;
-			}
-			catch (e)
-			{
-				break ;
-			}
-
-			this.Window = this.Window.parent ;
-		}
-	}
-}
-
-FCKPanel.prototype.Create = function()
-{
-	this._IFrame = this.Window.document.createElement('iframe') ; 
-	this._IFrame.src = 'about:blank' ;
-    this._IFrame.frameBorder		= '0';
-    this._IFrame.scrolling			= 'no' ;
-    this._IFrame.style.left			= '0px' ;
-	this._IFrame.style.top			= '0px' ;
-    this._IFrame.width				= 10 ;
-	this._IFrame.height				= 10 ;
-    this._IFrame.style.position		= 'absolute';
-	this._IFrame.style.visibility	= 'hidden' ;
-
-	this._IFrame.IsFCKPanel	= true ;
-	this._IFrame.Panel		= this ;
-
-	this.Window.document.body.appendChild( this._IFrame ) ;
-	
-	this.Document = this._IFrame.contentWindow.document ;
-
-	// Initialize the IFRAME document body.
-	this.Document.open() ;
-	this.Document.write( '<html><head></head><body><\/body><\/html>' ) ;
-	this.Document.close() ;
-
-	// Remove the default margins.
-	this.Document.body.style.margin = this.Document.body.style.padding = '0px' ;
-
-	// Add the defined Style Sheet to the document.
-	if ( this.StyleSheet )
-		FCKTools.AppendStyleSheet( this.Document, this.StyleSheet ) ;
-
-
-	this.OuterDiv = this.Document.body.appendChild( this.Document.createElement('DIV') ) ;
-	this.OuterDiv.style.cssFloat = 'left' ;
-
-	this.PanelDiv = this.OuterDiv.appendChild( this.Document.createElement('DIV') ) ;
-	this.PanelDiv.className = 'FCK_Panel' ;
-
-	this.Created = true ;
-}
-
-FCKPanel.prototype.Show = function( panelX, panelY, relElement, width, height, autoSize  )
-{
-	if ( ! this.Created )
-		this.Create() ;
-
-	if ( width != null && autoSize && width < this.OuterDiv.offsetWidth )
-		this.PanelDiv.style.width = width ;
-
-	if ( height != null && autoSize && height < this.PanelDiv.offsetHeight )
-		this.PanelDiv.style.height = height + 'px' ;
-
-	var oPos = this.GetElementPosition( relElement ) ;
-
-	panelX += oPos.X ;
-	panelY += oPos.Y ;
-
-	if ( panelX + this.OuterDiv.offsetWidth > this.Window.innerWidth )
-	{
-		// The following line aligns the panel to the other side of the refElement.
-		// panelX = oPos.X - ( this.PanelDiv.offsetWidth - relElement.offsetWidth ) ;
-
-		panelX -= panelX + this.OuterDiv.offsetWidth - this.Window.innerWidth ;
-	}
-
-	// Set the context menu DIV in the specified location.
-	this._IFrame.style.left	= panelX + 'px' ;
-	this._IFrame.style.top	= panelY + 'px' ;
-
-	// Watch the "OnClick" event for all windows to close the Context Menu.
-	function SetOnClickListener( targetWindow, targetFunction )
-	{
-		// Try/Catch must be used to avoit an error when using a frameset
-		// on a different domain:
-		// "Permission denied to get property Window.frameElement".
-		try
-		{
-			if ( targetWindow == null || ( targetWindow.frameElement && targetWindow.frameElement.IsFCKPanel ) )
-				return ;
-
-			targetWindow.document.addEventListener( 'click', targetFunction, false ) ;
-		}
-		catch (e) {}
-
-		for ( var i = 0 ; i < targetWindow.frames.length ; i++ )
-			SetOnClickListener( targetWindow.frames[i], targetFunction ) ;
-	}
-	SetOnClickListener( window.top, FCKPanelEventHandlers.OnDocumentClick ) ;
-
-	this._IFrame.width	= this.OuterDiv.offsetWidth ;
-	this._IFrame.height = this.OuterDiv.offsetHeight ;
-
-	// Show it.
-	this._IFrame.style.visibility = '' ;
-}
-
-FCKPanel.prototype.GetElementPosition = function( el )
-{
-	// Initializes the Coordinates object that will be returned by the function.
-	var c = { X:0, Y:0 } ;
-
-	// Loop throw the offset chain.
-	while ( el )
-	{
-		c.X += el.offsetLeft ;
-		c.Y += el.offsetTop ;
-
-		if ( el.offsetParent == null && el.ownerDocument.defaultView != this.Window )
-			el = el.ownerDocument.defaultView.frameElement ;
-		else
-			el = el.offsetParent ;
-	}
-
-	// Return the Coordinates object
-	return c ;
-}
-
-FCKPanel.prototype.Hide = function()
-{
-	// There is a bug on Firefox over Mac. It doesn't hide the Panel
-	// scrollbars, so we must force it.
-	this.PanelDiv.style.overflow = 'visible' ;
-
-	this._IFrame.style.visibility = 'hidden' ;
-//	this._IFrame.style.left = this._IFrame.style.top = '0px' ;
-}
-
-var FCKPanelEventHandlers = new Object() ;
-
-FCKPanelEventHandlers.OnDocumentClick = function( e )
-{
-	var oWindow = e.target.ownerDocument.defaultView ;
-
-	if ( ! oWindow.IsFCKPanel )
-	{
-		function RemoveOnClickListener( targetWindow )
-		{
-			if ( targetWindow == null )
-				return ;
-
-			// Try/Catch must be used to avoit an error when using a frameset
-			// on a different domain:
-			// "Permission denied to get property Window.frameElement".
-			try
-			{
-				if ( targetWindow.frameElement && targetWindow.frameElement.IsFCKPanel )
-					targetWindow.frameElement.Panel.Hide() ;
-				else
-					targetWindow.document.removeEventListener( 'click', FCKPanelEventHandlers.OnDocumentClick, false ) ;
-			}
-			catch (e) {}
-
-			for ( var i = 0 ; i < targetWindow.frames.length ; i++ )
-				RemoveOnClickListener( targetWindow.frames[i] ) ;
-		}
-		RemoveOnClickListener( window.top ) ;
-	}
-}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckpanel_ie.js 1.4.1.src/fckeditor/editor/_source/classes/fckpanel_ie.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckpanel_ie.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckpanel_ie.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,78 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fckpanel_ie.js
- * 	FCKPanel Class: Creates and manages floating panels in IE Browsers.
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-var FCKPanel = function( parentWindow )
-{
-	this.Window = parentWindow ? parentWindow : window ;
-}
-
-function FCKPanel_OnContextMenu() { return false ; }
-
-FCKPanel.prototype.Create = function()
-{
-	// Create the Popup that will hold the panel.
-	this._Popup = this.Window.createPopup() ;
-	
-	this.Document = this._Popup.document ;
-	
-	aCleanupDocs[ aCleanupDocs.length ] = this.Document ;
-	
-	this.Document.oncontextmenu = FCKPanel_OnContextMenu ;
-
-	if ( this.StyleSheet )
-		FCKTools.AppendStyleSheet( this.Document, this.StyleSheet ) ;
-		
-	// Create the main DIV that is used as the panel base.
-	this.PanelDiv = this.Document.body.appendChild( this.Document.createElement('DIV') ) ;
-	this.PanelDiv.className = 'FCK_Panel' ;
-	
-	this.Created = true ;
-}
-
-FCKPanel.prototype.Show = function( panelX, panelY, relElement, width, height, autoSize )
-{
-	if ( ! this.Created )
-		this._Create() ;
-	
-	// The offsetWidth and offsetHeight properties are not available if the 
-	// element is not visible. So we must "show" the popup with no size to
-	// be able to use that values in the second call.
-	this._Popup.show( panelX, panelY, 0, 0, relElement ) ;
-
-	if ( width == null || ( autoSize && width > this.PanelDiv.offsetWidth ) )
-		var iWidth = this.PanelDiv.offsetWidth ;
-	else
-		var iWidth = width ;
-
-	if ( height == null || ( autoSize && height > this.PanelDiv.offsetHeight ) )
-		var iHeight = this.PanelDiv.offsetHeight ;
-	else
-		var iHeight = height ;
-
-	this.PanelDiv.style.height = iHeight ;
-
-	// Second call: Show the Popup at the specified location.
-	this._Popup.show( panelX, panelY, iWidth, iHeight, relElement ) ;
-}
-
-FCKPanel.prototype.Hide = function()
-{
-	if ( this._Popup )
-		this._Popup.hide() ;
-}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckpanel.js 1.4.1.src/fckeditor/editor/_source/classes/fckpanel.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckpanel.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckpanel.js	2006-09-03 13:05:03.000000000 -0500
@@ -0,0 +1,293 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckpanel.js
+ * 	Component that creates floating panels. It is used by many 
+ * 	other components, like the toolbar items, context menu, etc...
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+
+var FCKPanel = function( parentWindow )
+{
+	this.IsRTL			= ( FCKLang.Dir == 'rtl' ) ;
+	this.IsContextMenu	= false ;
+	this._LockCounter	= 0 ;
+	
+	this._Window = parentWindow || window ;
+	
+	var oDocument ;
+	
+	if ( FCKBrowserInfo.IsIE )
+	{
+		// Create the Popup that will hold the panel.
+		this._Popup	= this._Window.createPopup() ;
+		oDocument = this.Document = this._Popup.document ;
+	}
+	else
+	{
+		var oIFrame = this._IFrame = this._Window.document.createElement('iframe') ; 
+		oIFrame.src					= 'javascript:void(0)' ;
+		oIFrame.allowTransparency	= true ;
+		oIFrame.frameBorder			= '0' ;
+		oIFrame.scrolling			= 'no' ;
+		oIFrame.style.position		= 'absolute';
+		oIFrame.style.zIndex		= FCKConfig.FloatingPanelsZIndex ;
+		oIFrame.width = oIFrame.height = 0 ;
+
+		if ( this._Window == window.parent )
+			window.frameElement.parentNode.insertBefore( oIFrame, window.frameElement ) ;
+		else
+			this._Window.document.body.appendChild( oIFrame ) ;
+		
+		var oIFrameWindow = oIFrame.contentWindow ; 
+		
+		oDocument = this.Document = oIFrameWindow.document ;
+
+		// Initialize the IFRAME document body.
+		oDocument.open() ;
+		oDocument.write( '<html><head></head><body style="margin:0px;padding:0px;"><\/body><\/html>' ) ;
+		oDocument.close() ;
+
+		FCKTools.AddEventListenerEx( oIFrameWindow, 'focus', FCKPanel_Window_OnFocus, this ) ;
+		FCKTools.AddEventListenerEx( oIFrameWindow, 'blur', FCKPanel_Window_OnBlur, this ) ;
+	}
+
+	oDocument.dir = FCKLang.Dir ;
+	
+	oDocument.oncontextmenu = FCKTools.CancelEvent ;
+
+
+	// Create the main DIV that is used as the panel base.
+	this.MainNode = oDocument.body.appendChild( oDocument.createElement('DIV') ) ;
+
+	// The "float" property must be set so Firefox calculates the size correcly.
+	this.MainNode.style.cssFloat = this.IsRTL ? 'right' : 'left' ;
+
+	if ( FCK.IECleanup )
+		FCK.IECleanup.AddItem( this, FCKPanel_Cleanup ) ;
+}
+
+
+FCKPanel.prototype.AppendStyleSheet = function( styleSheet )
+{
+	FCKTools.AppendStyleSheet( this.Document, styleSheet ) ;
+}
+
+FCKPanel.prototype.Preload = function( x, y, relElement )
+{
+	// The offsetWidth and offsetHeight properties are not available if the 
+	// element is not visible. So we must "show" the popup with no size to
+	// be able to use that values in the second call (IE only).
+	if ( this._Popup )
+		this._Popup.show( x, y, 0, 0, relElement ) ;
+}
+
+FCKPanel.prototype.Show = function( x, y, relElement, width, height )
+{
+	if ( this._Popup )
+	{
+		// The offsetWidth and offsetHeight properties are not available if the 
+		// element is not visible. So we must "show" the popup with no size to
+		// be able to use that values in the second call.
+		this._Popup.show( x, y, 0, 0, relElement ) ;
+
+		// The following lines must be place after the above "show", otherwise it 
+		// doesn't has the desired effect.
+		this.MainNode.style.width	= width ? width + 'px' : '' ;
+		this.MainNode.style.height	= height ? height + 'px' : '' ;
+		
+		var iMainWidth = this.MainNode.offsetWidth ;
+
+		if ( this.IsRTL )
+		{
+			if ( this.IsContextMenu )
+				x  = x - iMainWidth + 1 ;
+			else if ( relElement )
+				x  = ( x * -1 ) + relElement.offsetWidth - iMainWidth ;
+		}
+	
+		// Second call: Show the Popup at the specified location, with the correct size.
+		this._Popup.show( x, y, iMainWidth, this.MainNode.offsetHeight, relElement ) ;
+		
+		if ( this.OnHide )
+		{
+			if ( this._Timer )
+				CheckPopupOnHide.call( this, true ) ;
+
+			this._Timer = FCKTools.SetInterval( CheckPopupOnHide, 100, this ) ;
+		}
+	}
+	else
+	{
+		// Do not fire OnBlur while the panel is opened.
+		FCKFocusManager.Lock() ;
+
+		if ( this.ParentPanel )
+			this.ParentPanel.Lock() ;
+
+		this.MainNode.style.width	= width ? width + 'px' : '' ;
+		this.MainNode.style.height	= height ? height + 'px' : '' ;
+
+		var iMainWidth = this.MainNode.offsetWidth ;
+
+		if ( !width )	this._IFrame.width	= 1 ;
+		if ( !height )	this._IFrame.height	= 1 ;
+
+		// This is weird... but with Firefox, we must get the offsetWidth before
+		// setting the _IFrame size (which returns "0"), and then after that,
+		// to return the correct width. Remove the first step and it will not
+		// work when the editor is in RTL.
+		iMainWidth = this.MainNode.offsetWidth ;
+
+		var oPos = FCKTools.GetElementPosition( ( relElement.nodeType == 9 ? relElement.body : relElement), this._Window ) ;
+
+		if ( this.IsRTL && !this.IsContextMenu )
+			x = ( x * -1 ) ;
+
+		x += oPos.X ;
+		y += oPos.Y ;
+
+		if ( this.IsRTL )
+		{
+			if ( this.IsContextMenu )
+				x  = x - iMainWidth + 1 ;
+			else if ( relElement )
+				x  = x + relElement.offsetWidth - iMainWidth ;
+		}
+		else
+		{
+			var oViewPaneSize = FCKTools.GetViewPaneSize( this._Window ) ;
+			var oScrollPosition = FCKTools.GetScrollPosition( this._Window ) ;
+			
+			var iViewPaneHeight	= oViewPaneSize.Height + oScrollPosition.Y ;
+			var iViewPaneWidth	= oViewPaneSize.Width + oScrollPosition.X ;
+
+			if ( ( x + iMainWidth ) > iViewPaneWidth )
+				x -= x + iMainWidth - iViewPaneWidth ;
+
+			if ( ( y + this.MainNode.offsetHeight ) > iViewPaneHeight )
+				y -= y + this.MainNode.offsetHeight - iViewPaneHeight ;
+		}
+		
+		if ( x < 0 )
+			 x = 0 ;
+
+		// Set the context menu DIV in the specified location.
+		this._IFrame.style.left	= x + 'px' ;
+		this._IFrame.style.top	= y + 'px' ;
+		
+		var iWidth	= iMainWidth ;
+		var iHeight	= this.MainNode.offsetHeight ;
+		
+		this._IFrame.width	= iWidth ;
+		this._IFrame.height = iHeight ;
+
+		// Move the focus to the IFRAME so we catch the "onblur".
+		this._IFrame.contentWindow.focus() ;
+	}
+
+	this._IsOpened = true ;
+
+	FCKTools.RunFunction( this.OnShow, this ) ;
+}
+
+FCKPanel.prototype.Hide = function( ignoreOnHide )
+{
+	if ( this._Popup )
+		this._Popup.hide() ;
+	else
+	{
+		if ( !this._IsOpened )
+			return ;
+		
+		// Enable the editor to fire the "OnBlur".
+		FCKFocusManager.Unlock() ;
+
+		// It is better to set the sizes to 0, otherwise Firefox would have 
+		// rendering problems.
+		this._IFrame.width = this._IFrame.height = 0 ;
+
+		this._IsOpened = false ;
+		
+		if ( this.ParentPanel )
+			this.ParentPanel.Unlock() ;
+
+		if ( !ignoreOnHide )
+			FCKTools.RunFunction( this.OnHide, this ) ;
+	}
+}
+
+FCKPanel.prototype.CheckIsOpened = function()
+{
+	if ( this._Popup )
+		return this._Popup.isOpen ;
+	else
+		return this._IsOpened ;
+}
+
+FCKPanel.prototype.CreateChildPanel = function()
+{
+	var oWindow = this._Popup ? FCKTools.GetParentWindow( this.Document ) : this._Window ;
+
+	var oChildPanel = new FCKPanel( oWindow, true ) ;
+	oChildPanel.ParentPanel = this ;
+	
+	return oChildPanel ;
+}
+
+FCKPanel.prototype.Lock = function()
+{
+	this._LockCounter++ ;
+}
+
+FCKPanel.prototype.Unlock = function()
+{
+	if ( --this._LockCounter == 0 && !this.HasFocus )
+		this.Hide() ;
+}
+
+/* Events */
+
+function FCKPanel_Window_OnFocus( e, panel )
+{
+	panel.HasFocus = true ;
+}
+
+function FCKPanel_Window_OnBlur( e, panel )
+{
+	panel.HasFocus = false ;
+	
+	if ( panel._LockCounter == 0 )
+		FCKTools.RunFunction( panel.Hide, panel ) ;
+}
+
+function CheckPopupOnHide( forceHide )
+{
+	if ( forceHide || !this._Popup.isOpen )
+	{
+		window.clearInterval( this._Timer ) ;
+		this._Timer = null ;
+	
+		FCKTools.RunFunction( this.OnHide, this ) ;
+	}
+}
+
+function FCKPanel_Cleanup()
+{
+	this._Popup = null ;
+	this._Window = null ;
+	this.Document = null ;
+	this.MainNode = null ;
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckplugin.js 1.4.1.src/fckeditor/editor/_source/classes/fckplugin.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckplugin.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckplugin.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -17,10 +17,6 @@
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
  */
 
-// Certifies that the "PluginsPath" configuration ends with a slash.
-if ( !FCKConfig.PluginsPath.endsWith('/') )
-	FCKConfig.PluginsPath += '/' ;
-
 var FCKPlugin = function( name, availableLangs, basePath )
 {
 	this.Name = name ;
@@ -48,9 +44,9 @@
 			sLang = this.AvailableLangs[0] ;
 		
 		// Add the main plugin script.
-		FCKScriptLoader.AddScript( this.Path + 'lang/' + sLang + '.js' ) ;		
+		LoadScript( this.Path + 'lang/' + sLang + '.js' ) ;		
 	}
 		
 	// Add the main plugin script.
-	FCKScriptLoader.AddScript( this.Path + 'fckplugin.js' ) ;
+	LoadScript( this.Path + 'fckplugin.js' ) ;
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckspecialcombo.js 1.4.1.src/fckeditor/editor/_source/classes/fckspecialcombo.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckspecialcombo.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckspecialcombo.js	2006-09-03 13:05:03.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -17,12 +17,12 @@
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
  */
 
-var FCKSpecialCombo = function( caption )
+var FCKSpecialCombo = function( caption, fieldWidth, panelWidth, panelMaxHeight, parentWindow )
 {
 	// Default properties values.
-	this.FieldWidth		= 80 ;
-	this.PanelWidth		= 130 ;
-	this.PanelMaxHeight	= 150 ;
+	this.FieldWidth		= fieldWidth || 100 ;
+	this.PanelWidth		= panelWidth || 150 ;
+	this.PanelMaxHeight	= panelMaxHeight || 150 ;
 	this.Label			= '&nbsp;' ;
 	this.Caption		= caption ;
 	this.Tooltip		= caption ;
@@ -32,13 +32,24 @@
 	
 	this.Items = new Object() ;
 	
-	this._Panel = new FCKPanel() ;
-	this._Panel.StyleSheet = FCKConfig.SkinPath + 'fck_contextmenu.css' ;
-	this._Panel.Create() ;
-	this._Panel.PanelDiv.className += ' SC_Panel' ;
-	this._Panel.PanelDiv.innerHTML = '<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>' ;
-	
-	this._ItemsHolderEl = this._Panel.PanelDiv.getElementsByTagName('TD')[0] ;
+	this._Panel = new FCKPanel( parentWindow || window, true ) ;
+	this._Panel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ;
+	this._PanelBox = this._Panel.MainNode.appendChild( this._Panel.Document.createElement( 'DIV' ) ) ;
+	this._PanelBox.className = 'SC_Panel' ;
+	this._PanelBox.style.width = this.PanelWidth + 'px' ;
+
+	this._PanelBox.innerHTML = '<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>' ;
+	
+	this._ItemsHolderEl = this._PanelBox.getElementsByTagName('TD')[0] ;
+
+	if ( FCK.IECleanup )
+		FCK.IECleanup.AddItem( this, FCKSpecialCombo_Cleanup ) ;
+
+//	this._Panel.StyleSheet = FCKConfig.SkinPath + 'fck_contextmenu.css' ;
+//	this._Panel.Create() ;
+//	this._Panel.PanelDiv.className += ' SC_Panel' ;
+//	this._Panel.PanelDiv.innerHTML = '<table cellpadding="0" cellspacing="0" width="100%" style="TABLE-LAYOUT: fixed"><tr><td nowrap></td></tr></table>' ;
+//	this._ItemsHolderEl = this._Panel.PanelDiv.getElementsByTagName('TD')[0] ;
 }
 
 function FCKSpecialCombo_ItemOnMouseOver()
@@ -53,6 +64,8 @@
 
 function FCKSpecialCombo_ItemOnClick()
 {
+	this.className = this.originalClass ;
+
 	this.FCKSpecialCombo._Panel.Hide() ;
 
 	this.FCKSpecialCombo.SetLabel( this.FCKItemLabel ) ;
@@ -61,17 +74,24 @@
 		this.FCKSpecialCombo.OnSelect( this.FCKItemID, this ) ;
 }
 
-FCKSpecialCombo.prototype.AddItem = function( id, html, label )
+FCKSpecialCombo.prototype.AddItem = function( id, html, label, bgColor )
 {
 	// <div class="SC_Item" onmouseover="this.className='SC_Item SC_ItemOver';" onmouseout="this.className='SC_Item';"><b>Bold 1</b></div>
 	var oDiv = this._ItemsHolderEl.appendChild( this._Panel.Document.createElement( 'DIV' ) ) ;
 	oDiv.className = oDiv.originalClass = 'SC_Item' ;
 	oDiv.innerHTML = html ;
 	oDiv.FCKItemID = id ;
-	oDiv.FCKItemLabel = label ? label : id ;
+	oDiv.FCKItemLabel = label || id ;
 	oDiv.FCKSpecialCombo = this ;
 	oDiv.Selected = false ;
 
+	// In IE, the width must be set so the borders are shown correctly when the content overflows.
+	if ( FCKBrowserInfo.IsIE )
+		oDiv.style.width = '100%' ;
+	
+	if ( bgColor )
+		oDiv.style.backgroundColor = bgColor ;
+
 	oDiv.onmouseover	= FCKSpecialCombo_ItemOnMouseOver ;
 	oDiv.onmouseout		= FCKSpecialCombo_ItemOnMouseOut ;
 	oDiv.onclick		= FCKSpecialCombo_ItemOnClick ;
@@ -93,13 +113,33 @@
 	}
 }
 
-FCKSpecialCombo.prototype.DeselectAll = function()
+FCKSpecialCombo.prototype.SelectItemByLabel = function( itemLabel, setLabel )
+{
+	for ( var id in this.Items )
+	{
+		var oDiv = this.Items[id] ;
+
+		if ( oDiv.FCKItemLabel == itemLabel )
+		{
+			oDiv.className = oDiv.originalClass = 'SC_ItemSelected' ;
+			oDiv.Selected = true ;
+			
+			if ( setLabel )
+				this.SetLabel( itemLabel ) ;
+		}
+	}
+}
+
+FCKSpecialCombo.prototype.DeselectAll = function( clearLabel )
 {
 	for ( var i in this.Items )
 	{
 		this.Items[i].className = this.Items[i].originalClass = 'SC_Item' ;
 		this.Items[i].Selected = false ;
 	}
+	
+	if ( clearLabel )
+		this.SetLabel( '' ) ;
 }
 
 FCKSpecialCombo.prototype.SetLabelById = function( id )
@@ -127,11 +167,12 @@
 
 FCKSpecialCombo.prototype.Create = function( targetElement )
 {
-	this._OuterTable = targetElement.appendChild( document.createElement( 'TABLE' ) ) ;
-	this._OuterTable.cellPadding = 0 ;
-	this._OuterTable.cellSpacing = 0 ;
+	var oDoc = FCKTools.GetElementDocument( targetElement ) ;
+	var eOuterTable = this._OuterTable = targetElement.appendChild( oDoc.createElement( 'TABLE' ) ) ;
+	eOuterTable.cellPadding = 0 ;
+	eOuterTable.cellSpacing = 0 ;
 	
-	this._OuterTable.insertRow(-1) ;
+	eOuterTable.insertRow(-1) ;
 	
 	var sClass ;
 	var bShowLabel ;
@@ -153,35 +194,37 @@
 
 	if ( this.Caption && this.Caption.length > 0 && bShowLabel )
 	{
-		var oCaptionCell = this._OuterTable.rows[0].insertCell(-1) ;
-		oCaptionCell.unselectable = 'on' ;
+		var oCaptionCell = eOuterTable.rows[0].insertCell(-1) ;
 		oCaptionCell.innerHTML = this.Caption ;
 		oCaptionCell.className = 'SC_FieldCaption' ;
 	}
 	
 	// Create the main DIV element.
-	var oField = this._OuterTable.rows[0].insertCell(-1).appendChild( document.createElement( 'DIV' ) ) ;
+	var oField = FCKTools.AppendElement( eOuterTable.rows[0].insertCell(-1), 'div' ) ;
 	if ( bShowLabel )
 	{
 		oField.className = 'SC_Field' ;
 		oField.style.width = this.FieldWidth + 'px' ;
-		oField.innerHTML = '<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;" unselectable="on"><tbody><tr><td class="SC_FieldLabel" unselectable="on"><label unselectable="on">&nbsp;</label></td><td class="SC_FieldButton" unselectable="on">&nbsp;</td></tr></tbody></table>' ;
+		oField.innerHTML = '<table width="100%" cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldLabel"><label>&nbsp;</label></td><td class="SC_FieldButton">&nbsp;</td></tr></tbody></table>' ;
 
-		this._LabelEl = oField.getElementsByTagName('label')[0] ;
+		this._LabelEl = oField.getElementsByTagName('label')[0] ;		// Memory Leak
 		this._LabelEl.innerHTML = this.Label ;
 	}
 	else
 	{
 		oField.className = 'TB_Button_Off' ;
-		//oField.innerHTML = '<span className="SC_FieldCaption">' + this.Caption + '<table cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;" unselectable="on"><tbody><tr><td class="SC_FieldButton" style="border-left: none;" unselectable="on">&nbsp;</td></tr></tbody></table>' ;
-		oField.innerHTML = '<table cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;" unselectable="on"><tbody><tr><td class="SC_FieldButton" style="border-left: none;" unselectable="on">&nbsp;</td></tr></tbody></table>' ;
+		//oField.innerHTML = '<span className="SC_FieldCaption">' + this.Caption + '<table cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldButton" style="border-left: none;">&nbsp;</td></tr></tbody></table>' ;
+		//oField.innerHTML = '<table cellpadding="0" cellspacing="0" style="TABLE-LAYOUT: fixed;"><tbody><tr><td class="SC_FieldButton" style="border-left: none;">&nbsp;</td></tr></tbody></table>' ;
 		
 		// Gets the correct CSS class to use for the specified style (param).
-		oField.innerHTML ='<table title="' + this.Tooltip + '" class="' + sClass + '" cellspacing="0" cellpadding="0" border="0" unselectable="on">' +
+		oField.innerHTML = '<table title="' + this.Tooltip + '" class="' + sClass + '" cellspacing="0" cellpadding="0" border="0">' +
 				'<tr>' +
-					//'<td class="TB_Icon" unselectable="on"><img src="' + FCKConfig.SkinPath + 'toolbar/' + this.Command.Name.toLowerCase() + '.gif" width="21" height="21" unselectable="on"></td>' +
-					'<td class="TB_Text" unselectable="on">' + this.Caption + '</td>' +
-					'<td class="TB_ButtonArrow" unselectable="on"><img src="' + FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif" width="5" height="3"></td>' +
+					//'<td class="TB_Icon"><img src="' + FCKConfig.SkinPath + 'toolbar/' + this.Command.Name.toLowerCase() + '.gif" width="21" height="21"></td>' +
+					'<td><img class="TB_Button_Padding" src="' + FCK_SPACER_PATH + '" /></td>' +
+					'<td class="TB_Text">' + this.Caption + '</td>' +
+					'<td><img class="TB_Button_Padding" src="' + FCK_SPACER_PATH + '" /></td>' +
+					'<td class="TB_ButtonArrow"><img src="' + FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif" width="5" height="3"></td>' +
+					'<td><img class="TB_Button_Padding" src="' + FCK_SPACER_PATH + '" /></td>' +
 				'</tr>' +
 			'</table>' ;
 	}
@@ -194,8 +237,24 @@
 	oField.onmouseover	= FCKSpecialCombo_OnMouseOver ;
 	oField.onmouseout	= FCKSpecialCombo_OnMouseOut ;
 	oField.onclick		= FCKSpecialCombo_OnClick ;
+	
+	FCKTools.DisableSelection( this._Panel.Document.body ) ;
 }
 
+function FCKSpecialCombo_Cleanup()
+{
+	this._LabelEl = null ;
+	this._OuterTable = null ;
+	this._ItemsHolderEl = null ;
+	this._PanelBox = null ;
+	
+	if ( this.Items )
+	{
+		for ( var key in this.Items )
+			this.Items[key] = null ;
+	}
+}	
+
 function FCKSpecialCombo_OnMouseOver()
 {
 	if ( this.SpecialCombo.Enabled )
@@ -203,10 +262,10 @@
 		switch ( this.SpecialCombo.Style )
 		{
 		case FCK_TOOLBARITEM_ONLYICON :
-			this.className = 'TB_Button_On';
+			this.className = 'TB_Button_On_Over';
 			break ;
 		case FCK_TOOLBARITEM_ONLYTEXT :
-			this.className = 'TB_Button_On';
+			this.className = 'TB_Button_On_Over';
 			break ;
 		case FCK_TOOLBARITEM_ICONTEXT :
 			this.className = 'SC_Field SC_FieldOver' ;
@@ -235,33 +294,45 @@
 {
 	// For Mozilla we must stop the event propagation to avoid it hiding 
 	// the panel because of a click outside of it.
-	if ( e )
-	{
-		e.stopPropagation() ;
-		FCKPanelEventHandlers.OnDocumentClick( e ) ;
-	}
+//	if ( e )
+//	{
+//		e.stopPropagation() ;
+//		FCKPanelEventHandlers.OnDocumentClick( e ) ;
+//	}
+	
+	var oSpecialCombo = this.SpecialCombo ;
 
-	if ( this.SpecialCombo.Enabled )
+	if ( oSpecialCombo.Enabled )
 	{
-		var oPanel = this.SpecialCombo._Panel ;
+		var oPanel			= oSpecialCombo._Panel ;
+		var oPanelBox		= oSpecialCombo._PanelBox ;
+		var oItemsHolder	= oSpecialCombo._ItemsHolderEl ;
+		var iMaxHeight		= oSpecialCombo.PanelMaxHeight ;
 		
-		if ( typeof( this.SpecialCombo.OnBeforeClick ) == 'function' )
-			this.SpecialCombo.OnBeforeClick( this.SpecialCombo ) ;
+		if ( oSpecialCombo.OnBeforeClick )
+			oSpecialCombo.OnBeforeClick( oSpecialCombo ) ;
 
-		if ( this.SpecialCombo._ItemsHolderEl.offsetHeight > this.SpecialCombo.PanelMaxHeight )
-			oPanel.PanelDiv.style.height = this.SpecialCombo.PanelMaxHeight + 'px' ;
+		// This is a tricky thing. We must call the "Load" function, otherwise
+		// it will not be possible to retrieve "oItemsHolder.offsetHeight" (IE only).
+		if ( FCKBrowserInfo.IsIE )
+			oPanel.Preload( 0, this.offsetHeight, this ) ;
+
+		if ( oItemsHolder.offsetHeight > iMaxHeight )
+//		{
+			oPanelBox.style.height = iMaxHeight + 'px' ;
+
+//			if ( FCKBrowserInfo.IsGecko )
+//				oPanelBox.style.overflow = '-moz-scrollbars-vertical' ;
+//		}
 		else
-			oPanel.PanelDiv.style.height = this.SpecialCombo._ItemsHolderEl.offsetHeight + 'px' ;
+			oPanelBox.style.height = '' ;
 			
-		oPanel.PanelDiv.style.width = this.SpecialCombo.PanelWidth + 'px' ;
-		
-		if ( FCKBrowserInfo.IsGecko )
-			oPanel.PanelDiv.style.overflow = '-moz-scrollbars-vertical' ;
+//		oPanel.PanelDiv.style.width = oSpecialCombo.PanelWidth + 'px' ;
 
-		oPanel.Show( 0, this.offsetHeight, this, null, this.SpecialCombo.PanelMaxHeight, true ) ;
+		oPanel.Show( 0, this.offsetHeight, this ) ;
 	}
 
-	return false ;
+//	return false ;
 }
 
 /* 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckstyledef_gecko.js 1.4.1.src/fckeditor/editor/_source/classes/fckstyledef_gecko.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckstyledef_gecko.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckstyledef_gecko.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -21,10 +21,10 @@
 {
 	if ( FCKSelection.GetType() == 'Text' && !this.IsObjectElement )
 	{
-		var oSelection = FCK.EditorWindow.getSelection() ;
+		var oSelection = FCK.ToolbarSet.CurrentInstance.EditorWindow.getSelection() ;
 		
 		// Create the main element.
-		var e = FCK.EditorDocument.createElement( this.Element ) ;
+		var e = FCK.ToolbarSet.CurrentInstance.EditorDocument.createElement( this.Element ) ;
 		
 		for ( var i = 0 ; i < oSelection.rangeCount ; i++ )
 		{
@@ -42,7 +42,7 @@
 	}
 	else
 	{
-		var oControl = FCKSelection.GetSelectedElement() ;
+		var oControl = FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement() ;
 		if ( oControl.tagName == this.Element )
 			this._AddAttributes( oControl ) ;
 	}
@@ -51,7 +51,16 @@
 FCKStyleDef.prototype._AddAttributes = function( targetElement )
 {
 	for ( var a in this.Attributes )
-		targetElement.setAttribute( a, this.Attributes[a], 0 ) ;
+	{
+		switch ( a.toLowerCase() )
+		{
+			case 'src' :
+				targetElement.setAttribute( '_fcksavedurl', this.Attributes[a], 0 ) ;
+			
+			default :
+				targetElement.setAttribute( a, this.Attributes[a], 0 ) ;
+		}
+	}
 }
 
 FCKStyleDef.prototype._RemoveDuplicates = function( parent )
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckstyledef_ie.js 1.4.1.src/fckeditor/editor/_source/classes/fckstyledef_ie.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckstyledef_ie.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckstyledef_ie.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -19,7 +19,7 @@
 
 FCKStyleDef.prototype.ApplyToSelection = function()
 {
-	var oSelection = FCK.EditorDocument.selection ;
+	var oSelection = FCK.ToolbarSet.CurrentInstance.EditorDocument.selection ;
 	
 	if ( oSelection.type == 'Text' )
 	{
@@ -40,7 +40,7 @@
 	}
 	else if ( oSelection.type == 'Control' )
 	{
-		var oControl = FCKSelection.GetSelectedElement() ;
+		var oControl = FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement() ;
 		if ( oControl.tagName == this.Element )
 			this._AddAttributes( oControl ) ;
 	}
@@ -50,10 +50,22 @@
 {
 	for ( var a in this.Attributes )
 	{
-		if ( a.toLowerCase() == 'style' )
-			targetElement.style.cssText = this.Attributes[a] ;
-		else
-			targetElement.setAttribute( a, this.Attributes[a], 0 ) ;
+		switch ( a.toLowerCase() )
+		{
+			case 'style' :
+				targetElement.style.cssText = this.Attributes[a] ;
+				break ;
+
+			case 'class' :
+				targetElement.setAttribute( 'className', this.Attributes[a], 0 ) ;
+				break ;
+
+			case 'src' :
+				targetElement.setAttribute( '_fcksavedurl', this.Attributes[a], 0 ) ;
+
+			default :
+				targetElement.setAttribute( a, this.Attributes[a], 0 ) ;
+		}
 	}
 }
 
@@ -65,10 +77,7 @@
 		this._RemoveDuplicates( oChild ) ;
 		
 		if ( this.IsEqual( oChild ) )
-		{
-			oChild.insertAdjacentHTML( 'beforeBegin', oChild.innerHTML ) ;
-			oChild.parentElement.removeChild( oChild ) ;
-		}
+			FCKTools.RemoveOuterTags( oChild ) ;
 	}
 }
 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckstyledef.js 1.4.1.src/fckeditor/editor/_source/classes/fckstyledef.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckstyledef.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckstyledef.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -11,7 +11,7 @@
  * "Support Open Source software. What about a donation today?"
  * 
  * File Name: fckstyledef.js
- * 	FCKStyleDef Class: represents a single stylke definition.
+ * 	FCKStyleDef Class: represents a single style definition.
  * 
  * File Authors:
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
@@ -49,7 +49,7 @@
 FCKStyleDef.prototype.RemoveFromSelection = function()
 {
 	if ( FCKSelection.GetType() == 'Control' )
-		this._RemoveMe( FCKSelection.GetSelectedElement() ) ;
+		this._RemoveMe( FCK.ToolbarSet.CurrentInstance.Selection.GetSelectedElement() ) ;
 	else
-		this._RemoveMe( FCKSelection.GetParentElement() ) ;
+		this._RemoveMe( FCK.ToolbarSet.CurrentInstance.Selection.GetParentElement() ) ;
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckstylesloader.js 1.4.1.src/fckeditor/editor/_source/classes/fckstylesloader.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckstylesloader.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckstylesloader.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarbreak_gecko.js 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarbreak_gecko.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarbreak_gecko.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarbreak_gecko.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -12,7 +12,7 @@
  * 
  * File Name: fcktoolbarbreak_gecko.js
  * 	FCKToolbarBreak Class: breaks the toolbars.
- * 	It makes it possible to force the toolbar to brak to a new line.
+ * 	It makes it possible to force the toolbar to break to a new line.
  * 	This is the Gecko specific implementation.
  * 
  * File Authors:
@@ -20,10 +20,13 @@
  */
 
 var FCKToolbarBreak = function()
+{}
+
+FCKToolbarBreak.prototype.Create = function( targetElement )
 {
-	var oBreakDiv = document.createElement( 'div' ) ;
+	var oBreakDiv = targetElement.ownerDocument.createElement( 'div' ) ;
 	
 	oBreakDiv.style.clear = oBreakDiv.style.cssFloat = FCKLang.Dir == 'rtl' ? 'right' : 'left' ;
 	
-	FCKToolbarSet.DOMElement.appendChild( oBreakDiv ) ;
+	targetElement.appendChild( oBreakDiv ) ;
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarbreak_ie.js 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarbreak_ie.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarbreak_ie.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarbreak_ie.js	2006-09-03 13:05:03.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -20,12 +20,15 @@
  */
 
 var FCKToolbarBreak = function()
+{}
+
+FCKToolbarBreak.prototype.Create = function( targetElement )
 {
-	var oBreakDiv = document.createElement( 'div' ) ;
+	var oBreakDiv = FCKTools.GetElementDocument( targetElement ).createElement( 'div' ) ;
 	
 	oBreakDiv.className = 'TB_Break' ;
 	
 	oBreakDiv.style.clear = FCKLang.Dir == 'rtl' ? 'left' : 'right' ;
 	
-	FCKToolbarSet.DOMElement.appendChild( oBreakDiv ) ;
+	targetElement.appendChild( oBreakDiv ) ;
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarbutton.js 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarbutton.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarbutton.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarbutton.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -17,120 +17,45 @@
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
  */
 
-var FCKToolbarButton = function( commandName, label, tooltip, style, sourceView, contextSensitive )
+var FCKToolbarButton = function( commandName, label, tooltip, style, sourceView, contextSensitive, icon )
 {
-	this.Command			= FCKCommands.GetCommand( commandName ) ;
-	this.Label				= label ? label : commandName ;
-	this.Tooltip			= tooltip ? tooltip : ( label ? label : commandName) ;
-	this.Style				= style ? style : FCK_TOOLBARITEM_ONLYICON ;
+	this.CommandName		= commandName ;
+	this.Label				= label ;
+	this.Tooltip			= tooltip ;
+	this.Style				= style ;
 	this.SourceView			= sourceView ? true : false ;
-	this.ContextSensitive	= contextSensitive ? true : false ;
-	this.IconPath			= FCKConfig.SkinPath + 'toolbar/' + commandName.toLowerCase() + '.gif' ;
-	this.State				= FCK_UNKNOWN ;
+	this.ContextSensitive	= contextSensitive ? true : false ;	
+
+	if ( icon == null )
+		this.IconPath = FCKConfig.SkinPath + 'toolbar/' + commandName.toLowerCase() + '.gif' ;
+	else if ( typeof( icon ) == 'number' )
+		this.IconPath = [ FCKConfig.SkinPath + 'fck_strip.gif', 16, icon ] ;
 }
 
-FCKToolbarButton.prototype.CreateInstance = function( parentToolbar )
+FCKToolbarButton.prototype.Create = function( targetElement )
 {
-	this.DOMDiv = document.createElement( 'div' ) ;
-	this.DOMDiv.className = 'TB_Button_Off' ;
-
-	this.DOMDiv.FCKToolbarButton = this ;
-	
-	var sHtml =
-		'<table title="' + this.Tooltip + '" cellspacing="0" cellpadding="0" border="0" unselectable="on">' +
-			'<tr>' ;
-	
-	if ( this.Style != FCK_TOOLBARITEM_ONLYTEXT ) 
-		sHtml += '<td class="TB_Icon" unselectable="on"><img src="' + this.IconPath + '" width="21" height="21" unselectable="on"></td>' ;
-	
-	if ( this.Style != FCK_TOOLBARITEM_ONLYICON ) 
-		sHtml += '<td class="TB_Text" unselectable="on" nowrap>' + this.Label + '</td>' ;
-	
-	sHtml +=	
-			'</tr>' +
-		'</table>' ;
-	
-	this.DOMDiv.innerHTML = sHtml ;
-
-	var oCell = parentToolbar.DOMRow.insertCell(-1) ;
-	oCell.appendChild( this.DOMDiv ) ;
-	
-	this.RefreshState() ;
+	this._UIButton = new FCKToolbarButtonUI( this.CommandName, this.Label, this.Tooltip, this.IconPath, this.Style ) ;
+	this._UIButton.OnClick = this.Click ;
+	this._UIButton._ToolbarButton = this ;	
+	this._UIButton.Create( targetElement ) ;
 }
 
 FCKToolbarButton.prototype.RefreshState = function()
 {
-/*
-	TODO: Delete this commend block on stable version.
-	// Gets the actual state.
-//	var eState ;
-
-//	if ( FCK.EditMode == FCK_EDITMODE_SOURCE && ! this.SourceView )
-//		eState = FCK_TRISTATE_DISABLED ;
-//	else
-*/
 	// Gets the actual state.
-	var eState = this.Command.GetState() ;
+	var eState = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).GetState() ;
 	
 	// If there are no state changes than do nothing and return.
-	if ( eState == this.State ) return ;
+	if ( eState == this._UIButton.State ) return ;
 	
 	// Sets the actual state.
-	this.State = eState ;
-	
-	switch ( this.State )
-	{
-		case FCK_TRISTATE_ON :
-			this.DOMDiv.className = 'TB_Button_On' ;
-
-			this.DOMDiv.onmouseover	= FCKToolbarButton_OnMouseOnOver ;
-			this.DOMDiv.onmouseout	= FCKToolbarButton_OnMouseOnOut ;
-			this.DOMDiv.onclick		= FCKToolbarButton_OnClick ;
-			
-			break ;
-		case FCK_TRISTATE_OFF :
-			this.DOMDiv.className = 'TB_Button_Off' ;
-
-			this.DOMDiv.onmouseover	= FCKToolbarButton_OnMouseOffOver ;
-			this.DOMDiv.onmouseout	= FCKToolbarButton_OnMouseOffOut ;
-			this.DOMDiv.onclick		= FCKToolbarButton_OnClick ;
-			
-			break ;
-		default :
-			this.Disable() ;
-			break ;
-	}
-}
-
-function FCKToolbarButton_OnMouseOnOver()
-{
-	this.className = 'TB_Button_On TB_Button_On_Over' ;
-}
-
-function FCKToolbarButton_OnMouseOnOut()
-{
-	this.className = 'TB_Button_On' ;
-}
-	
-function FCKToolbarButton_OnMouseOffOver()
-{
-	this.className = 'TB_Button_On TB_Button_Off_Over' ;
-}
-
-function FCKToolbarButton_OnMouseOffOut()
-{
-	this.className = 'TB_Button_Off' ;
-}
-	
-function FCKToolbarButton_OnClick(e)
-{
-	this.FCKToolbarButton.Click(e) ;
-	return false ;
+	this._UIButton.ChangeState( eState ) ;
 }
 
 FCKToolbarButton.prototype.Click = function()
 {
-	this.Command.Execute() ;
+	var oToolbarButton = this._ToolbarButton || this ;
+	FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( oToolbarButton.CommandName ).Execute() ;
 }
 
 FCKToolbarButton.prototype.Enable = function()
@@ -140,9 +65,6 @@
 
 FCKToolbarButton.prototype.Disable = function()
 {
-	this.State = FCK_TRISTATE_DISABLED ;
-	this.DOMDiv.className = 'TB_Button_Disabled' ;
-	this.DOMDiv.onmouseover	= null ;
-	this.DOMDiv.onmouseout	= null ;
-	this.DOMDiv.onclick		= null ;
+	// Sets the actual state.
+	this._UIButton.ChangeState( FCK_TRISTATE_DISABLED ) ;
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarbuttonui.js 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarbuttonui.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarbuttonui.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarbuttonui.js	2006-09-03 13:05:03.000000000 -0500
@@ -0,0 +1,218 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktoolbarbuttonui.js
+ * 	FCKToolbarButtonUI Class: interface representation of a toolbar button.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKToolbarButtonUI = function( name, label, tooltip, iconPathOrStripInfoArray, style, state )
+{
+	this.Name		= name ;
+	this.Label		= label || name ;
+	this.Tooltip	= tooltip || this.Label ;
+	this.Style		= style || FCK_TOOLBARITEM_ONLYICON ;
+	this.State		= state || FCK_TRISTATE_OFF ;
+	
+	this.Icon = new FCKIcon( iconPathOrStripInfoArray ) ;
+
+	if ( FCK.IECleanup )
+		FCK.IECleanup.AddItem( this, FCKToolbarButtonUI_Cleanup ) ;
+}
+
+
+FCKToolbarButtonUI.prototype._CreatePaddingElement = function( document )
+{
+	var oImg = document.createElement( 'IMG' ) ;
+	oImg.className = 'TB_Button_Padding' ;
+	oImg.src = FCK_SPACER_PATH ;
+	return oImg ;
+}
+
+FCKToolbarButtonUI.prototype.Create = function( parentElement )
+{
+	var oMainElement = this.MainElement ;
+	
+	if ( oMainElement )
+	{
+		FCKToolbarButtonUI_Cleanup.call(this) ;
+		
+		if ( oMainElement.parentNode )
+			oMainElement.parentNode.removeChild( oMainElement ) ;
+		oMainElement = this.MainElement = null ;
+	}
+
+	var oDoc = FCKTools.GetElementDocument( parentElement ) ;
+	
+	// Create the Main Element.
+	oMainElement = this.MainElement = oDoc.createElement( 'DIV' ) ;
+	oMainElement._FCKButton = this ;		// IE Memory Leak (Circular reference).
+	oMainElement.title		= this.Tooltip ;
+
+	// The following will prevent the button from catching the focus.
+	if ( FCKBrowserInfo.IsGecko )
+		 oMainElement.onmousedown	= FCKTools.CancelEvent ;
+
+	this.ChangeState( this.State, true ) ;
+
+	if ( this.Style == FCK_TOOLBARITEM_ONLYICON && !this.ShowArrow )
+	{
+		// <td><div class="TB_Button_On" title="Smiley">{Image}</div></td>
+		
+		oMainElement.appendChild( this.Icon.CreateIconElement( oDoc ) ) ;
+	}
+	else
+	{
+		// <td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td>{Image}</td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
+		// <td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td><img class="TB_Button_Padding"></td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
+		
+		var oTable = oMainElement.appendChild( oDoc.createElement( 'TABLE' ) ) ;
+		oTable.cellPadding = 0 ;
+		oTable.cellSpacing = 0 ;
+
+		var oRow = oTable.insertRow(-1) ;
+		
+		// The Image cell (icon or padding).
+		var oCell = oRow.insertCell(-1) ;
+		
+		if ( this.Style == FCK_TOOLBARITEM_ONLYICON || this.Style == FCK_TOOLBARITEM_ICONTEXT )
+			oCell.appendChild( this.Icon.CreateIconElement( oDoc ) ) ;
+		else
+			oCell.appendChild( this._CreatePaddingElement( oDoc ) ) ;
+		
+		if ( this.Style == FCK_TOOLBARITEM_ONLYTEXT || this.Style == FCK_TOOLBARITEM_ICONTEXT )
+		{
+			// The Text cell.
+			oCell = oRow.insertCell(-1) ;
+			oCell.className = 'TB_Button_Text' ;
+			oCell.noWrap = true ;
+			oCell.appendChild( oDoc.createTextNode( this.Label ) ) ;
+		}
+		
+		if ( this.ShowArrow )
+		{
+			if ( this.Style != FCK_TOOLBARITEM_ONLYICON )
+			{	
+				// A padding cell.
+				oRow.insertCell(-1).appendChild( this._CreatePaddingElement( oDoc ) ) ;
+			}
+			
+			oCell = oRow.insertCell(-1) ;
+			var eImg = oCell.appendChild( oDoc.createElement( 'IMG' ) ) ;
+			eImg.src	= FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif' ;
+			eImg.width	= 5 ;
+			eImg.height	= 3 ;
+		}
+
+		// The last padding cell.
+		oCell = oRow.insertCell(-1) ;
+		oCell.appendChild( this._CreatePaddingElement( oDoc ) ) ;
+	}
+	
+	parentElement.appendChild( oMainElement ) ;
+}
+
+FCKToolbarButtonUI.prototype.ChangeState = function( newState, force )
+{
+	if ( !force && this.State == newState )
+		return ;
+
+	var e = this.MainElement ;
+
+	switch ( parseInt( newState ) )
+	{
+		case FCK_TRISTATE_OFF :
+			e.className		= 'TB_Button_Off' ;
+			e.onmouseover	= FCKToolbarButton_OnMouseOverOff ;
+			e.onmouseout	= FCKToolbarButton_OnMouseOutOff ;
+			e.onclick		= FCKToolbarButton_OnClick ;
+			
+			break ;
+			
+		case FCK_TRISTATE_ON :
+			e.className		= 'TB_Button_On' ;
+			e.onmouseover	= FCKToolbarButton_OnMouseOverOn ;
+			e.onmouseout	= FCKToolbarButton_OnMouseOutOn ;
+			e.onclick		= FCKToolbarButton_OnClick ;
+			
+			break ;
+
+		case FCK_TRISTATE_DISABLED :
+			e.className		= 'TB_Button_Disabled' ;
+			e.onmouseover	= null ;
+			e.onmouseout	= null ;
+			e.onclick		= null ;
+			bEnableEvents = false ;
+			break ;
+	}
+
+	this.State = newState ;
+}
+
+function FCKToolbarButtonUI_Cleanup()
+{
+	if ( this.MainElement )
+	{
+		this.MainElement._FCKButton = null ;
+		this.MainElement = null ;
+	}
+}	
+
+// Event Handlers.
+
+function FCKToolbarButton_OnMouseOverOn()
+{
+	this.className = 'TB_Button_On_Over' ;
+}
+
+function FCKToolbarButton_OnMouseOutOn()
+{
+	this.className = 'TB_Button_On' ;
+}
+
+function FCKToolbarButton_OnMouseOverOff()
+{
+	this.className = 'TB_Button_Off_Over' ;
+}
+
+function FCKToolbarButton_OnMouseOutOff()
+{
+	this.className = 'TB_Button_Off' ;
+}
+
+function FCKToolbarButton_OnClick( e )
+{
+	if ( this._FCKButton.OnClick )
+		this._FCKButton.OnClick( this._FCKButton ) ;
+}
+
+/* 
+	Sample outputs:
+
+	This is the base structure. The variation is the image that is marked as {Image}:
+		<td><div class="TB_Button_On" title="Smiley">{Image}</div></td>
+		<td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td>{Image}</td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
+		<td><div class="TB_Button_On" title="Smiley"><table cellpadding="0" cellspacing="0"><tr><td><img class="TB_Button_Padding"></td><td nowrap>Toolbar Button</td><td><img class="TB_Button_Padding"></td></tr></table></div></td>
+
+	These are samples of possible {Image} values:
+		
+		Strip - IE version:
+			<div class="TB_Button_Image"><img src="strip.gif" style="top:-16px"></div>
+		
+		Strip : Firefox, Safari and Opera version
+			<img class="TB_Button_Image" style="background-position: 0px -16px;background-image: url(strip.gif);">
+		
+		No-Strip : Browser independent:
+			<img class="TB_Button_Image" src="smiley.gif">
+*/
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarfontformatcombo.js 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarfontformatcombo.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarfontformatcombo.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarfontformatcombo.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -19,17 +19,20 @@
 
 var FCKToolbarFontFormatCombo = function( tooltip, style )
 {
-	this.Command	= FCKCommands.GetCommand( 'FontFormat' ) ;
+	this.CommandName = 'FontFormat' ;
 	this.Label		= this.GetLabel() ;
 	this.Tooltip	= tooltip ? tooltip : this.Label ;
 	this.Style		= style ? style : FCK_TOOLBARITEM_ICONTEXT ;
 	
+	this.NormalLabel = 'Normal' ;
+	
 	this.PanelWidth = 190 ;
 }
 
 // Inherit from FCKToolbarSpecialCombo.
 FCKToolbarFontFormatCombo.prototype = new FCKToolbarSpecialCombo ;
 
+
 FCKToolbarFontFormatCombo.prototype.GetLabel = function()
 {
 	return FCKLang.FontFormat ;
@@ -57,8 +60,40 @@
 	
 	for ( var i = 0 ; i < aTags.length ; i++ )
 	{
-		if ( aTags[i] == 'div' && FCKBrowserInfo.IsGecko )
-			continue ;
-		this._Combo.AddItem( aTags[i], '<' + aTags[i] + '>' + oNames[aTags[i]] + '</' + aTags[i] + '>', oNames[aTags[i]] ) ;
+		// Support for DIV in Firefox has been reintroduced on version 2.2.
+//		if ( aTags[i] == 'div' && FCKBrowserInfo.IsGecko )
+//			continue ;
+		
+		var sTag	= aTags[i] ;
+		var sLabel	= oNames[sTag] ;
+		
+		if ( sTag == 'p' )
+			this.NormalLabel = sLabel ;
+		
+		this._Combo.AddItem( sTag, '<div class="BaseFont"><' + sTag + '>' + sLabel + '</' + sTag + '></div>', sLabel ) ;
+	}
+}
+
+if ( FCKBrowserInfo.IsIE )
+{
+	FCKToolbarFontFormatCombo.prototype.RefreshActiveItems = function( combo, value )
+	{
+//		FCKDebug.Output( 'FCKToolbarFontFormatCombo Value: ' + value ) ;
+
+		// IE returns normal for DIV and P, so to avoid confusion, we will not show it if normal.
+		if ( value == this.NormalLabel )
+		{
+			if ( combo.Label != '&nbsp;' )
+				combo.DeselectAll(true) ;
+		}
+		else
+		{
+			if ( this._LastValue == value )
+				return ;
+
+			combo.SelectItemByLabel( value, true ) ;
+		}
+
+		this._LastValue = value ;
 	}
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarfontscombo.js 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarfontscombo.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarfontscombo.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarfontscombo.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -19,7 +19,7 @@
 
 var FCKToolbarFontsCombo = function( tooltip, style )
 {
-	this.Command	= FCKCommands.GetCommand( 'FontName' ) ;
+	this.CommandName	= 'FontName' ;
 	this.Label		= this.GetLabel() ;
 	this.Tooltip	= tooltip ? tooltip : this.Label ;
 	this.Style		= style ? style : FCK_TOOLBARITEM_ICONTEXT ;
@@ -28,6 +28,7 @@
 // Inherit from FCKToolbarSpecialCombo.
 FCKToolbarFontsCombo.prototype = new FCKToolbarSpecialCombo ;
 
+
 FCKToolbarFontsCombo.prototype.GetLabel = function()
 {
 	return FCKLang.Font ;
@@ -38,5 +39,5 @@
 	var aFonts = FCKConfig.FontNames.split(';') ;
 	
 	for ( var i = 0 ; i < aFonts.length ; i++ )
-		this._Combo.AddItem( aFonts[i], '<span style="font-family: \'' + aFonts[i] + '\'; font-size: 12px;">' + aFonts[i] + '</span>' ) ;
+		this._Combo.AddItem( aFonts[i], '<font face="' + aFonts[i] + '" style="font-size: 12px">' + aFonts[i] + '</font>' ) ;
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarfontsizecombo.js 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarfontsizecombo.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarfontsizecombo.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarfontsizecombo.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -19,7 +19,7 @@
 
 var FCKToolbarFontSizeCombo = function( tooltip, style )
 {
-	this.Command	= FCKCommands.GetCommand( 'FontSize' ) ;
+	this.CommandName	= 'FontSize' ;
 	this.Label		= this.GetLabel() ;
 	this.Tooltip	= tooltip ? tooltip : this.Label ;
 	this.Style		= style ? style : FCK_TOOLBARITEM_ICONTEXT ;
@@ -28,6 +28,7 @@
 // Inherit from FCKToolbarSpecialCombo.
 FCKToolbarFontSizeCombo.prototype = new FCKToolbarSpecialCombo ;
 
+
 FCKToolbarFontSizeCombo.prototype.GetLabel = function()
 {
 	return FCKLang.FontSize ;
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbar.js 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbar.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbar.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbar.js	2006-09-03 13:05:03.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -11,8 +11,8 @@
  * "Support Open Source software. What about a donation today?"
  * 
  * File Name: fcktoolbar.js
- * 	FCKToolbar Class: represents a toolbar. A toolbar is not the complete
- * 	toolbar set visible, but just a strip on it... a group of items.
+ * 	FCKToolbar Class: represents a toolbar in the toolbarset. It is a group of
+ * 	toolbar items.
  * 
  * File Authors:
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
@@ -21,42 +21,96 @@
 var FCKToolbar = function()
 {
 	this.Items = new Array() ;
-	
-	var e = this.DOMTable = document.createElement( 'table' ) ;
-	e.className = 'TB_Toolbar' ;
 
-	// Sets the toolbar direction. IE uses "styleFloat" and Gecko uses "cssFloat".
-	e.style.styleFloat = e.style.cssFloat = FCKLang.Dir == 'rtl' ? 'right' : 'left' ;
-
-	e.cellPadding = 0 ;
-	e.cellSpacing = 0 ;
-	e.border = 0 ;
+	if ( FCK.IECleanup )
+		FCK.IECleanup.AddItem( this, FCKToolbar_Cleanup ) ;
+}
 
-	this.DOMRow = e.insertRow(-1) ;
+FCKToolbar.prototype.AddItem = function( item )
+{
+	return this.Items[ this.Items.length ] = item ;
+}
 
-	var oCell = this.DOMRow.insertCell(-1) ;
-	oCell.className = 'TB_Start' ;
-	oCell.innerHTML = '<img src="' + FCKConfig.SkinPath + 'images/toolbar.start.gif" width="7" height="21" style="VISIBILITY: hidden" onload="this.style.visibility = \'\';" unselectable="on">' ;
+FCKToolbar.prototype.AddButton = function( name, label, tooltip, iconPathOrStripInfoArrayOrIndex, style, state )
+{
+	if ( typeof( iconPathOrStripInfoArrayOrIndex ) == 'number' )
+		 iconPathOrStripInfoArrayOrIndex = [ this.DefaultIconsStrip, this.DefaultIconSize, iconPathOrStripInfoArrayOrIndex ] ;
 
-	FCKToolbarSet.DOMElement.appendChild( e ) ;
+	var oButton = new FCKToolbarButtonUI( name, label, tooltip, iconPathOrStripInfoArrayOrIndex, style, state ) ;
+	oButton._FCKToolbar = this ;
+	oButton.OnClick = FCKToolbar_OnItemClick ;
+	
+	return this.AddItem( oButton ) ;
 }
 
-FCKToolbar.prototype.AddItem = function( toolbarItem )
+function FCKToolbar_OnItemClick( item )
 {
-	this.Items[ this.Items.length ] = toolbarItem ;
-	toolbarItem.CreateInstance( this ) ;
+	var oToolbar = item._FCKToolbar ;
+	
+	if ( oToolbar.OnItemClick )
+		oToolbar.OnItemClick( oToolbar, item ) ;
 }
 
 FCKToolbar.prototype.AddSeparator = function()
 {
-	var oCell = this.DOMRow.insertCell(-1) ;
-	oCell.unselectable = 'on' ;
-	oCell.innerHTML = '<img src="' + FCKConfig.SkinPath + 'images/toolbar.separator.gif" width="5" height="21" style="VISIBILITY: hidden" onload="this.style.visibility = \'\';" unselectable="on">' ;
+	this.AddItem( new FCKToolbarSeparator() ) ;
+}
+
+FCKToolbar.prototype.Create = function( parentElement )
+{
+	if ( this.MainElement )
+	{
+//		this._Cleanup() ;
+		if ( this.MainElement.parentNode )
+			this.MainElement.parentNode.removeChild( this.MainElement ) ;
+		this.MainElement = null ;
+	}
+
+	var oDoc = FCKTools.GetElementDocument( parentElement ) ;
+
+	var e = this.MainElement = oDoc.createElement( 'table' ) ;
+	e.className = 'TB_Toolbar' ;
+	e.style.styleFloat = e.style.cssFloat = ( FCKLang.Dir == 'ltr' ? 'left' : 'right' ) ;
+	e.dir = FCKLang.Dir ;
+	e.cellPadding = 0 ;
+	e.cellSpacing = 0 ;
+	
+	this.RowElement = e.insertRow(-1) ;
+	
+	// Insert the start cell.
+	var eCell ;
+	
+	if ( !this.HideStart )
+	{
+		eCell = this.RowElement.insertCell(-1) ;
+		eCell.appendChild( oDoc.createElement( 'div' ) ).className = 'TB_Start' ;
+	}
+	
+	for ( var i = 0 ; i < this.Items.length ; i++ )
+	{
+		this.Items[i].Create( this.RowElement.insertCell(-1) ) ;
+	}
+	
+	// Insert the ending cell.
+	if ( !this.HideEnd )
+	{
+		eCell = this.RowElement.insertCell(-1) ;
+		eCell.appendChild( oDoc.createElement( 'div' ) ).className = 'TB_End' ;
+	}
+
+	parentElement.appendChild( e ) ;
 }
 
-FCKToolbar.prototype.AddTerminator = function()
+function FCKToolbar_Cleanup()
 {
-	var oCell = this.DOMRow.insertCell(-1) ;
-	oCell.className = 'TB_End' ;
-	oCell.innerHTML = '<img src="' + FCKConfig.SkinPath + 'images/toolbar.end.gif" width="12" height="21" style="VISIBILITY: hidden" onload="this.style.visibility = \'\';" unselectable="on">' ;
+	this.MainElement = null ;
+	this.RowElement = null ;
 }
+
+var FCKToolbarSeparator = function()
+{}
+
+FCKToolbarSeparator.prototype.Create = function( parentElement )
+{
+	FCKTools.AppendElement( parentElement, 'div' ).className = 'TB_Separator' ;
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarpanelbutton.js 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarpanelbutton.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarpanelbutton.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarpanelbutton.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -18,66 +18,70 @@
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
  */
 
-var FCKToolbarPanelButton = function( commandName, label, tooltip, style )
+var FCKToolbarPanelButton = function( commandName, label, tooltip, style, icon )
 {
-	this.Command	= FCKCommands.GetCommand( commandName ) ;
-	this.Label		= label ? label : commandName ;
-	this.Tooltip	= tooltip ? tooltip : ( label ? label : commandName) ;
-	this.Style		= style ? style : FCK_TOOLBARITEM_ONLYICON ;
-	this.State		= FCK_UNKNOWN ;
-}
+	this.CommandName = commandName ;
 
-FCKToolbarPanelButton.prototype.Click = function(e)
-{
-	// For Mozilla we must stop the event propagation to avoid it hiding 
-	// the panel because of a click outside of it.
-	if ( e )
-	{
-		e.stopPropagation() ;
-		FCKPanelEventHandlers.OnDocumentClick( e ) ;
-	}
-
-	if ( this.State != FCK_TRISTATE_DISABLED )
-	{
-		this.Command.Execute(0, this.DOMDiv.offsetHeight, this.DOMDiv) ;
-//			this.FCKToolbarButton.HandleOnClick( this, e ) ;
-	}
-		
-	return false ;
+	var oIcon ;
+	
+	if ( icon == null )
+		oIcon = FCKConfig.SkinPath + 'toolbar/' + commandName.toLowerCase() + '.gif' ;
+	else if ( typeof( icon ) == 'number' )
+		oIcon = [ FCKConfig.SkinPath + 'fck_strip.gif', 16, icon ] ;
+	
+	var oUIButton = this._UIButton = new FCKToolbarButtonUI( commandName, label, tooltip, oIcon, style ) ;
+	oUIButton._FCKToolbarPanelButton = this ;
+	oUIButton.ShowArrow = true ;
+	oUIButton.OnClick = FCKToolbarPanelButton_OnButtonClick ;
 }
 
-FCKToolbarPanelButton.prototype.CreateInstance = function( parentToolbar )
+FCKToolbarPanelButton.prototype.TypeName = 'FCKToolbarPanelButton' ;
+
+FCKToolbarPanelButton.prototype.Create = function( parentElement )
 {
-	this.DOMDiv = document.createElement( 'div' ) ;
-	this.DOMDiv.className = 'TB_Button_Off' ;
+	parentElement.className += 'Menu' ;
 
-	this.DOMDiv.FCKToolbarButton = this ;
+	this._UIButton.Create( parentElement ) ;
+	
+	var oPanel = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName )._Panel ;
+	oPanel._FCKToolbarPanelButton = this ;
 	
-	var sHtml =
-		'<table title="' + this.Tooltip + '" cellspacing="0" cellpadding="0" border="0" unselectable="on">' +
-			'<tr>' ;
-			
-	if ( this.Style != FCK_TOOLBARITEM_ONLYTEXT ) 
-		sHtml += '<td class="TB_Icon" unselectable="on"><img src="' + FCKConfig.SkinPath + 'toolbar/' + this.Command.Name.toLowerCase() + '.gif" width="21" height="21" unselectable="on"></td>' ;
-				
-	if ( this.Style != FCK_TOOLBARITEM_ONLYICON ) 
-		sHtml += '<td class="TB_Text" unselectable="on" nowrap>' + this.Label + '</td>' ;
-	
-	sHtml +=
-				'<td class="TB_ButtonArrow" unselectable="on"><img src="' + FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif" width="5" height="3"></td>' +
-			'</tr>' +
-		'</table>' ;
+	var eLineDiv = oPanel.Document.body.appendChild( oPanel.Document.createElement( 'div' ) ) ;
+	eLineDiv.style.position = 'absolute' ;
+	eLineDiv.style.top = '0px' ;
 	
-	this.DOMDiv.innerHTML = sHtml ;
+	var eLine = this.LineImg = eLineDiv.appendChild( oPanel.Document.createElement( 'IMG' ) ) ;
+	eLine.className = 'TB_ConnectionLine' ;
+//	eLine.style.backgroundColor = 'Red' ;
+	eLine.src = FCK_SPACER_PATH ;
+
+	oPanel.OnHide = FCKToolbarPanelButton_OnPanelHide ;
+}
 
-	var oCell = parentToolbar.DOMRow.insertCell(-1) ;
-	oCell.appendChild( this.DOMDiv ) ;
+/*
+	Events
+*/
+
+function FCKToolbarPanelButton_OnButtonClick( toolbarButton )
+{
+	var oButton = this._FCKToolbarPanelButton ;
+	var e = oButton._UIButton.MainElement ;
 	
-	this.RefreshState() ;
+	oButton._UIButton.ChangeState( FCK_TRISTATE_ON ) ;
+	
+	oButton.LineImg.style.width = ( e.offsetWidth - 2 ) + 'px' ;
+
+	FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( oButton.CommandName ).Execute( 0, e.offsetHeight - 1, e ) ; // -1 to be over the border
+}
+
+function FCKToolbarPanelButton_OnPanelHide()
+{
+	var oMenuButton = this._FCKToolbarPanelButton ;
+	oMenuButton._UIButton.ChangeState( FCK_TRISTATE_OFF ) ;
 }
 
 // The Panel Button works like a normal button so the refresh state functions
 // defined for the normal button can be reused here.
 FCKToolbarPanelButton.prototype.RefreshState	= FCKToolbarButton.prototype.RefreshState ;
 FCKToolbarPanelButton.prototype.Enable			= FCKToolbarButton.prototype.Enable ;
-FCKToolbarPanelButton.prototype.Disable			= FCKToolbarButton.prototype.Disable ;
\ No newline at end of file
+FCKToolbarPanelButton.prototype.Disable			= FCKToolbarButton.prototype.Disable ;
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarspecialcombo.js 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarspecialcombo.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarspecialcombo.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarspecialcombo.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -16,7 +16,7 @@
  * 	
  * 	The following properties and methods must be implemented when inheriting from
  * 	this class:
- * 		- Property:	Command								[ The command to be executed ]
+ * 		- Property:	CommandName							[ The command name to be executed ]
  * 		- Method:	GetLabel()							[ Returns the label ]
  * 		-			CreateItems( targetSpecialCombo )	[ Add all items in the special combo ]
  * 
@@ -30,17 +30,21 @@
 	this.ContextSensitive	= true ;
 }
 
+
 function FCKToolbarSpecialCombo_OnSelect( itemId, item )
 {
-	this.Command.Execute( itemId, item ) ;
+	FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).Execute( itemId, item ) ;
 }
 
-FCKToolbarSpecialCombo.prototype.CreateInstance = function( parentToolbar )
+FCKToolbarSpecialCombo.prototype.Create = function( targetElement )
 {
-	this._Combo = new FCKSpecialCombo( this.GetLabel() ) ;
+	this._Combo = new FCKSpecialCombo( this.GetLabel(), this.FieldWidth, this.PanelWidth, this.PanelMaxHeight, FCKBrowserInfo.IsIE ? window : FCKTools.GetElementWindow( targetElement ).parent ) ;
+	
+	/*
 	this._Combo.FieldWidth		= this.FieldWidth		!= null ? this.FieldWidth		: 100 ;
 	this._Combo.PanelWidth		= this.PanelWidth		!= null ? this.PanelWidth		: 150 ;
 	this._Combo.PanelMaxHeight	= this.PanelMaxHeight	!= null ? this.PanelMaxHeight	: 150 ;
+	*/
 	
 	//this._Combo.Command.Name = this.Command.Name;
 //	this._Combo.Label	= this.Label ;
@@ -49,9 +53,9 @@
 	
 	this.CreateItems( this._Combo ) ;
 
-	this._Combo.Create( parentToolbar.DOMRow.insertCell(-1) ) ;
+	this._Combo.Create( targetElement ) ;
 
-	this._Combo.Command = this.Command ;
+	this._Combo.CommandName = this.CommandName ;
 	
 	this._Combo.OnSelect = FCKToolbarSpecialCombo_OnSelect ;
 }
@@ -72,7 +76,9 @@
 //		eState = FCK_TRISTATE_DISABLED ;
 //	else
 //	{
-		var sValue = this.Command.GetState() ;
+		var sValue = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).GetState() ;
+
+//		FCKDebug.Output( 'RefreshState of Special Combo "' + this.TypeOf + '" - State: ' + sValue ) ;
 
 		if ( sValue != FCK_TRISTATE_DISABLED )
 		{
@@ -81,7 +87,13 @@
 			if ( this.RefreshActiveItems )
 				this.RefreshActiveItems( this._Combo, sValue ) ;
 			else
-				FCKToolbarSpecialCombo_RefreshActiveItems( this._Combo, sValue ) ;
+			{
+				if ( this._LastValue != sValue )
+				{
+					this._LastValue = sValue ;
+					FCKToolbarSpecialCombo_RefreshActiveItems( this._Combo, sValue ) ;
+				}
+			}
 		}
 		else
 			eState = FCK_TRISTATE_DISABLED ;
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarstylecombo.js 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarstylecombo.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fcktoolbarstylecombo.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fcktoolbarstylecombo.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -19,7 +19,7 @@
 
 var FCKToolbarStyleCombo = function( tooltip, style )
 {
-	this.Command	= FCKCommands.GetCommand( 'Style' ) ;
+	this.CommandName = 'Style' ;
 	this.Label		= this.GetLabel() ;
 	this.Tooltip	= tooltip ? tooltip : this.Label ;
 	this.Style		= style ? style : FCK_TOOLBARITEM_ICONTEXT ;
@@ -28,6 +28,7 @@
 // Inherit from FCKToolbarSpecialCombo.
 FCKToolbarStyleCombo.prototype = new FCKToolbarSpecialCombo ;
 
+
 FCKToolbarStyleCombo.prototype.GetLabel = function()
 {
 	return FCKLang.Style ;
@@ -35,17 +36,24 @@
 
 FCKToolbarStyleCombo.prototype.CreateItems = function( targetSpecialCombo )
 {
+	var oTargetDoc = targetSpecialCombo._Panel.Document ;
+	
 	// Add the Editor Area CSS to the Styles panel so the style classes are previewed correctly.
-	FCKTools.AppendStyleSheet( targetSpecialCombo._Panel.Document, FCKConfig.EditorAreaCSS ) ;
+	var aCSSs = FCKConfig.EditorAreaCSS ;
+	for ( var i = 0 ; i < aCSSs.length ; i++ )
+		FCKTools.AppendStyleSheet( oTargetDoc, aCSSs[i] ) ;
+	
+	oTargetDoc.body.className += ' ForceBaseFont' ;
 
 	// For some reason Gecko is blocking inside the "RefreshVisibleItems" function.
 	if ( ! FCKBrowserInfo.IsGecko )
 		targetSpecialCombo.OnBeforeClick = this.RefreshVisibleItems ;
 
 	// Add the styles to the special combo.
-	for ( var s in this.Command.Styles )
+	var aCommandStyles = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).Styles ;
+	for ( var s in aCommandStyles )
 	{
-		var oStyle = this.Command.Styles[s] ;
+		var oStyle = aCommandStyles[s] ;
 		var oItem ;
 		
 		if ( oStyle.IsObjectElement )
@@ -63,7 +71,7 @@
 	targetSpecialCombo.DeselectAll() ;
 	
 	// Get the active styles.
-	var aStyles = this.Command.GetActiveStyles() ;
+	var aStyles = FCK.ToolbarSet.CurrentInstance.Commands.GetCommand( this.CommandName ).GetActiveStyles() ;
 	
 	if ( aStyles.length > 0 )
 	{
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckxml_gecko.js 1.4.1.src/fckeditor/editor/_source/classes/fckxml_gecko.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckxml_gecko.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckxml_gecko.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -17,55 +17,50 @@
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
  */
 
-var FCKXml ;
+var FCKXml = function()
+{}
 
-if ( !( FCKXml = NS.FCKXml ) )
+FCKXml.prototype.LoadUrl = function( urlToCall )
 {
-	FCKXml = NS.FCKXml = function()
-	{}
+	var oFCKXml = this ;
 
-	FCKXml.prototype.LoadUrl = function( urlToCall )
-	{
-		var oFCKXml = this ;
+	var oXmlHttp = FCKTools.CreateXmlObject( 'XmlHttp' ) ;
+	oXmlHttp.open( "GET", urlToCall, false ) ;
+	oXmlHttp.send( null ) ;
+	
+	if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )
+		this.DOMDocument = oXmlHttp.responseXML ;
+	else if ( oXmlHttp.status == 0 && oXmlHttp.readyState == 4 )
+		this.DOMDocument = oXmlHttp.responseXML ;
+	else
+		alert( 'Error loading "' + urlToCall + '"' ) ;
+}
 
-		var oXmlHttp = FCKTools.CreateXmlObject( 'XmlHttp' ) ;
-		oXmlHttp.open( "GET", urlToCall, false ) ;
-		oXmlHttp.send( null ) ;
-		
-		if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )
-			this.DOMDocument = oXmlHttp.responseXML ;
-		else if ( oXmlHttp.status == 0 && oXmlHttp.readyState == 4 )
-			this.DOMDocument = oXmlHttp.responseXML ;
-		else
-			alert( 'Error loading "' + urlToCall + '"' ) ;
-	}
+FCKXml.prototype.SelectNodes = function( xpath, contextNode )
+{
+	var aNodeArray = new Array();
 
-	FCKXml.prototype.SelectNodes = function( xpath, contextNode )
+	var xPathResult = this.DOMDocument.evaluate( xpath, contextNode ? contextNode : this.DOMDocument, 
+			this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), XPathResult.ORDERED_NODE_ITERATOR_TYPE, null) ;
+	if ( xPathResult ) 
 	{
-		var aNodeArray = new Array();
-
-		var xPathResult = this.DOMDocument.evaluate( xpath, contextNode ? contextNode : this.DOMDocument, 
-				this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), XPathResult.ORDERED_NODE_ITERATOR_TYPE, null) ;
-		if ( xPathResult ) 
+		var oNode = xPathResult.iterateNext() ;
+		while( oNode )
 		{
-			var oNode = xPathResult.iterateNext() ;
- 			while( oNode )
- 			{
- 				aNodeArray[aNodeArray.length] = oNode ;
- 				oNode = xPathResult.iterateNext();
- 			}
-		} 
-		return aNodeArray ;
-	}
+			aNodeArray[aNodeArray.length] = oNode ;
+			oNode = xPathResult.iterateNext();
+		}
+	} 
+	return aNodeArray ;
+}
 
-	FCKXml.prototype.SelectSingleNode = function( xpath, contextNode ) 
-	{
-		var xPathResult = this.DOMDocument.evaluate( xpath, contextNode ? contextNode : this.DOMDocument,
-				this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), 9, null);
+FCKXml.prototype.SelectSingleNode = function( xpath, contextNode ) 
+{
+	var xPathResult = this.DOMDocument.evaluate( xpath, contextNode ? contextNode : this.DOMDocument,
+			this.DOMDocument.createNSResolver(this.DOMDocument.documentElement), 9, null);
 
-		if ( xPathResult && xPathResult.singleNodeValue )
-			return xPathResult.singleNodeValue ;
-		else	
-			return null ;
-	}
+	if ( xPathResult && xPathResult.singleNodeValue )
+		return xPathResult.singleNodeValue ;
+	else	
+		return null ;
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckxml_ie.js 1.4.1.src/fckeditor/editor/_source/classes/fckxml_ie.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/classes/fckxml_ie.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/classes/fckxml_ie.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -18,66 +18,61 @@
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
  */
 
-var FCKXml ;
-
-if ( !( FCKXml = NS.FCKXml ) )
+var FCKXml = function()
 {
-	FCKXml = NS.FCKXml = function()
-	{
-		this.Error = false ;
-	}
-
-	FCKXml.prototype.LoadUrl = function( urlToCall )
-	{
-		this.Error = false ;
+	this.Error = false ;
+}
 
-		var oXmlHttp = FCKTools.CreateXmlObject( 'XmlHttp' ) ;
+FCKXml.prototype.LoadUrl = function( urlToCall )
+{
+	this.Error = false ;
 
-		if ( !oXmlHttp )
-		{
-			this.Error = true ;
-			return ;
-		}
+	var oXmlHttp = FCKTools.CreateXmlObject( 'XmlHttp' ) ;
 
-		oXmlHttp.open( "GET", urlToCall, false ) ;
-		
-		oXmlHttp.send( null ) ;
-		
-		if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )
-			this.DOMDocument = oXmlHttp.responseXML ;
-		else if ( oXmlHttp.status == 0 && oXmlHttp.readyState == 4 )
-		{
-			this.DOMDocument = FCKTools.CreateXmlObject( 'DOMDocument' ) ;
-			this.DOMDocument.async = false ;
-			this.DOMDocument.resolveExternals = false ;
-			this.DOMDocument.loadXML( oXmlHttp.responseText ) ;
-		}
-		else
-		{
-			this.Error = true ;
-			alert( 'Error loading "' + urlToCall + '"' ) ;
-		}
+	if ( !oXmlHttp )
+	{
+		this.Error = true ;
+		return ;
 	}
 
-	FCKXml.prototype.SelectNodes = function( xpath, contextNode )
+	oXmlHttp.open( "GET", urlToCall, false ) ;
+	
+	oXmlHttp.send( null ) ;
+	
+	if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )
+		this.DOMDocument = oXmlHttp.responseXML ;
+	else if ( oXmlHttp.status == 0 && oXmlHttp.readyState == 4 )
 	{
-		if ( this.Error )
-			return new Array() ;
-
-		if ( contextNode )
-			return contextNode.selectNodes( xpath ) ;
-		else
-			return this.DOMDocument.selectNodes( xpath ) ;
+		this.DOMDocument = FCKTools.CreateXmlObject( 'DOMDocument' ) ;
+		this.DOMDocument.async = false ;
+		this.DOMDocument.resolveExternals = false ;
+		this.DOMDocument.loadXML( oXmlHttp.responseText ) ;
 	}
-
-	FCKXml.prototype.SelectSingleNode = function( xpath, contextNode ) 
+	else
 	{
-		if ( this.Error )
-			return ;
-			
-		if ( contextNode )
-			return contextNode.selectSingleNode( xpath ) ;
-		else
-			return this.DOMDocument.selectSingleNode( xpath ) ;
+		this.Error = true ;
+		alert( 'Error loading "' + urlToCall + '"' ) ;
 	}
+}
+
+FCKXml.prototype.SelectNodes = function( xpath, contextNode )
+{
+	if ( this.Error )
+		return new Array() ;
+
+	if ( contextNode )
+		return contextNode.selectNodes( xpath ) ;
+	else
+		return this.DOMDocument.selectNodes( xpath ) ;
+}
+
+FCKXml.prototype.SelectSingleNode = function( xpath, contextNode ) 
+{
+	if ( this.Error )
+		return ;
+		
+	if ( contextNode )
+		return contextNode.selectSingleNode( xpath ) ;
+	else
+		return this.DOMDocument.selectSingleNode( xpath ) ;
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fckfitwindow.js 1.4.1.src/fckeditor/editor/_source/commandclasses/fckfitwindow.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fckfitwindow.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/_source/commandclasses/fckfitwindow.js	2006-06-17 16:25:26.000000000 -0500
@@ -0,0 +1,164 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckfitwindow.js
+ * 	Stretch the editor to full window size and back.
+ * 
+ * File Authors:
+ * 		Paul Moers (mail@saulmade.nl)
+ * 		Thanks to Christian Fecteau (webmaster@christianfecteau.com)
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKFitWindow = function()
+{
+	this.Name = 'FitWindow' ;
+}
+
+FCKFitWindow.prototype.Execute = function()
+{
+	var eEditorFrame		= window.frameElement ;
+	var eEditorFrameStyle	= eEditorFrame.style ;
+
+	var eMainWindow			= parent ;
+	var eDocEl				= eMainWindow.document.documentElement ;
+	var eBody				= eMainWindow.document.body ;
+	var eBodyStyle			= eBody.style ;
+
+	// No original style properties known? Go fullscreen.
+	if ( !this.IsMaximized )
+	{
+		// Registering an event handler when the window gets resized.
+		if( FCKBrowserInfo.IsIE )
+			eMainWindow.attachEvent( 'onresize', FCKFitWindow_Resize ) ;
+		else
+			eMainWindow.addEventListener( 'resize', FCKFitWindow_Resize, true ) ;
+
+		// Save the scrollbars position.
+		this._ScrollPos = FCKTools.GetScrollPosition( eMainWindow ) ;
+		
+		// Save and reset the styles for the entire node tree. They could interfere in the result.
+		var eParent = eEditorFrame ;
+		while( eParent = eParent.parentNode )
+		{
+			if ( eParent.nodeType == 1 )
+				eParent._fckSavedStyles = FCKTools.SaveStyles( eParent ) ;
+		}		
+
+		// Hide IE scrollbars (in strict mode).
+		if ( FCKBrowserInfo.IsIE )
+		{
+			this.documentElementOverflow = eDocEl.style.overflow ;
+			eDocEl.style.overflow	= 'hidden' ;
+			eBodyStyle.overflow		= 'hidden' ;
+		}
+		else
+		{
+			// Hide the scroolbars in Firefox.
+			eBodyStyle.overflow = 'hidden' ;
+			eBodyStyle.width = '0px' ;
+			eBodyStyle.height = '0px' ;
+		}
+		
+		// Save the IFRAME styles.
+		this._EditorFrameStyles = FCKTools.SaveStyles( eEditorFrame ) ;
+		
+		// Resize.
+		var oViewPaneSize = FCKTools.GetViewPaneSize( eMainWindow ) ;
+
+		eEditorFrameStyle.position	= "absolute";
+		eEditorFrameStyle.zIndex	= FCKConfig.FloatingPanelsZIndex - 1;
+		eEditorFrameStyle.left		= "0px";
+		eEditorFrameStyle.top		= "0px";
+		eEditorFrameStyle.width		= oViewPaneSize.Width + "px";
+		eEditorFrameStyle.height	= oViewPaneSize.Height + "px";
+		
+		// Giving the frame some (huge) borders on his right and bottom
+		// side to hide the background that would otherwise show when the
+		// editor is in fullsize mode and the window is increased in size
+		// not for IE, because IE immediately adapts the editor on resize, 
+		// without showing any of the background oddly in firefox, the
+		// editor seems not to fill the whole frame, so just setting the
+		// background of it to white to cover the page laying behind it anyway.
+		if ( !FCKBrowserInfo.IsIE )
+		{
+			eEditorFrameStyle.borderRight = eEditorFrameStyle.borderBottom = "9999px solid white" ;
+			eEditorFrameStyle.backgroundColor		= "white";
+		}
+
+		// Scroll to top left.
+		eMainWindow.scrollTo(0, 0);
+
+		this.IsMaximized = true ;
+	}
+	else	// Resize to original size.
+	{
+		// Remove the event handler of window resizing.
+		if( FCKBrowserInfo.IsIE )
+			eMainWindow.detachEvent( "onresize", FCKFitWindow_Resize ) ;
+		else
+			eMainWindow.removeEventListener( "resize", FCKFitWindow_Resize, true ) ;
+
+		// Restore the CSS position for the entire node tree.
+		var eParent = eEditorFrame ;
+		while( eParent = eParent.parentNode )
+		{
+			if ( eParent._fckSavedStyles )
+			{
+				FCKTools.RestoreStyles( eParent, eParent._fckSavedStyles ) ;
+				eParent._fckSavedStyles = null ;
+			}
+		}
+		
+		// Restore IE scrollbars
+		if ( FCKBrowserInfo.IsIE )
+			eDocEl.style.overflow = this.documentElementOverflow ;
+
+		// Restore original size
+		FCKTools.RestoreStyles( eEditorFrame, this._EditorFrameStyles ) ;
+		
+		// Restore the window scroll position.
+		eMainWindow.scrollTo( this._ScrollPos.X, this._ScrollPos.Y ) ;
+
+		this.IsMaximized = false ;
+	}
+	
+	FCKToolbarItems.GetItem('FitWindow').RefreshState() ;
+
+	// It seams that Firefox restarts the editing area when making this changes.
+	// On FF 1.0.x, the area is not anymore editable. On FF 1.5+, the special 
+	//configuration, like DisableFFTableHandles and DisableObjectResizing get 
+	//lost, so we must reset it. Also, the cursor position and selection are 
+	//also lost, even if you comment the following line (MakeEditable).
+	// if ( FCKBrowserInfo.IsGecko10 )	// Initially I thought it was a FF 1.0 only problem.
+	FCK.EditingArea.MakeEditable() ;
+	
+	FCK.Focus() ;
+}
+
+FCKFitWindow.prototype.GetState = function()
+{
+	if ( FCKConfig.ToolbarLocation != 'In' )
+		return FCK_TRISTATE_DISABLED ;
+	else
+		return ( this.IsMaximized ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF );
+}
+
+function FCKFitWindow_Resize()
+{
+	var oViewPaneSize = FCKTools.GetViewPaneSize( parent ) ;
+
+	var eEditorFrameStyle = window.frameElement.style ;
+
+	eEditorFrameStyle.width		= oViewPaneSize.Width + 'px' ;
+	eEditorFrameStyle.height	= oViewPaneSize.Height + 'px' ;
+}
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fcknamedcommand.js 1.4.1.src/fckeditor/editor/_source/commandclasses/fcknamedcommand.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fcknamedcommand.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/commandclasses/fcknamedcommand.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fck_othercommands.js 1.4.1.src/fckeditor/editor/_source/commandclasses/fck_othercommands.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fck_othercommands.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/commandclasses/fck_othercommands.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -115,6 +115,8 @@
 {
 	if ( formatName == null || formatName == '' )
 		FCK.ExecuteNamedCommand( 'FormatBlock', '<P>' ) ;
+	else if ( formatName == 'div' && FCKBrowserInfo.IsGecko )
+		FCK.ExecuteNamedCommand( 'FormatBlock', 'div' ) ;
 	else
 		FCK.ExecuteNamedCommand( 'FormatBlock', '<' + formatName + '>' ) ;
 }
@@ -195,7 +197,7 @@
 
 FCKSourceCommand.prototype.Execute = function()
 {
-	if ( FCKBrowserInfo.IsGecko )
+	if ( FCKConfig.SourcePopup )	// Until v2.2, it was mandatory for FCKBrowserInfo.IsGecko.
 	{
 		var iWidth	= FCKConfig.ScreenWidth * 0.65 ;
 		var iHeight	= FCKConfig.ScreenHeight * 0.65 ;
@@ -262,14 +264,46 @@
 
 FCKPageBreakCommand.prototype.Execute = function()
 {
-	var oCenter = FCK.EditorDocument.createElement( 'CENTER' ) ;
-	oCenter.style.pageBreakAfter = 'always' ;
+//	var e = FCK.EditorDocument.createElement( 'CENTER' ) ;
+//	e.style.pageBreakAfter = 'always' ;
+
+	// Tidy was removing the empty CENTER tags, so the following solution has 
+	// been found. It also validates correctly as XHTML 1.0 Strict.
+	var e = FCK.EditorDocument.createElement( 'DIV' ) ;
+	e.style.pageBreakAfter = 'always' ;
+	e.innerHTML = '<span style="DISPLAY:none">&nbsp;</span>' ;
 	
-	var oFakeImage = FCKDocumentProcessors_CreateFakeImage( 'FCK__PageBreak', oCenter ) ;
+	var oFakeImage = FCKDocumentProcessor_CreateFakeImage( 'FCK__PageBreak', e ) ;
 	oFakeImage	= FCK.InsertElement( oFakeImage ) ;
 }
 
 FCKPageBreakCommand.prototype.GetState = function()
 {
 	return 0 ; // FCK_TRISTATE_OFF
+}
+
+// FCKUnlinkCommand - by Johnny Egeland (johnny@coretrek.com)
+var FCKUnlinkCommand = function()
+{
+	this.Name = 'Unlink' ;
+}
+
+FCKUnlinkCommand.prototype.Execute = function()
+{
+	if ( FCKBrowserInfo.IsGecko )
+	{
+		var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
+		if ( oLink ) 
+			FCK.Selection.SelectNode( oLink ) ;
+	}
+	
+	FCK.ExecuteNamedCommand( this.Name ) ;
+
+	if ( FCKBrowserInfo.IsGecko )
+		FCK.Selection.Collapse( true ) ;
+}
+
+FCKUnlinkCommand.prototype.GetState = function()
+{
+	return FCK.GetNamedCommandState( this.Name ) ;
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js 1.4.1.src/fckeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fckpastewordcommand.js 1.4.1.src/fckeditor/editor/_source/commandclasses/fckpastewordcommand.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fckpastewordcommand.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/commandclasses/fckpastewordcommand.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js 1.4.1.src/fckeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js	2006-06-17 16:25:25.000000000 -0500
@@ -1,4 +1,24 @@
-﻿var FCKSpellCheckCommand = function()
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckspellcheckcommand_gecko.js
+ * 	FCKStyleCommand Class: represents the "Spell Check" command.
+ * 	(Gecko specific implementation)
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKSpellCheckCommand = function()
 {
 	this.Name = 'SpellCheck' ;
 	this.IsEnabled = ( FCKConfig.SpellChecker == 'SpellerPages' ) ;
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js 1.4.1.src/fckeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,4 +1,24 @@
-﻿var FCKSpellCheckCommand = function()
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckspellcheckcommand_ie.js
+ * 	FCKStyleCommand Class: represents the "Spell Check" command.
+ * 	(IE specific implementation)
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKSpellCheckCommand = function()
 {
 	this.Name = 'SpellCheck' ;
 	this.IsEnabled = ( FCKConfig.SpellChecker == 'ieSpell' || FCKConfig.SpellChecker == 'SpellerPages' ) ;
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fckstylecommand.js 1.4.1.src/fckeditor/editor/_source/commandclasses/fckstylecommand.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fckstylecommand.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/commandclasses/fckstylecommand.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -45,6 +45,9 @@
 
 FCKStyleCommand.prototype.GetState = function()
 {
+	if ( !FCK.EditorDocument )
+		return FCK_TRISTATE_DISABLED ;
+
 	var oSelection = FCK.EditorDocument.selection ;
 	
 	if ( FCKSelection.GetType() == 'Control' )
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fcktablecommand.js 1.4.1.src/fckeditor/editor/_source/commandclasses/fcktablecommand.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fcktablecommand.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/commandclasses/fcktablecommand.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -53,6 +53,9 @@
 		case 'TableSplitCell' :
 			FCKTableHandler.SplitCell() ;
 			break ;
+		case 'TableDelete' :
+			FCKTableHandler.DeleteTable() ;
+			break ;
 		default :
 			alert( FCKLang.UnknownCommand.replace( /%1/g, this.Name ) ) ;
 	}
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fcktextcolorcommand.js 1.4.1.src/fckeditor/editor/_source/commandclasses/fcktextcolorcommand.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/commandclasses/fcktextcolorcommand.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/commandclasses/fcktextcolorcommand.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -25,40 +25,25 @@
 	this.Name = type == 'ForeColor' ? 'TextColor' : 'BGColor' ;
 	this.Type = type ;
 
-	/*	BEGIN ###
-		The panel should be created in the "Execute" method for best
-		memory use, but it not works in Gecko in that way.
-	*/
-
-	this._Panel = new FCKPanel() ;
-	this._Panel.StyleSheet = FCKConfig.SkinPath + 'fck_contextmenu.css' ;
-	this._Panel.Create() ;
+	var oWindow ;
+	
+	if ( FCKBrowserInfo.IsIE )
+		oWindow = window ;
+	else if ( FCK.ToolbarSet._IFrame )
+		oWindow = FCKTools.GetElementWindow( FCK.ToolbarSet._IFrame ) ;
+	else
+		oWindow = window.parent ;
 
-	this._CreatePanelBody( this._Panel.Document, this._Panel.PanelDiv ) ;
+	this._Panel = new FCKPanel( oWindow, true ) ;
+	this._Panel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ;
+	this._Panel.MainNode.className = 'FCK_Panel' ;
+	this._CreatePanelBody( this._Panel.Document, this._Panel.MainNode ) ;
 	
-	//	END ###
+	FCKTools.DisableSelection( this._Panel.Document.body ) ;
 }
 
 FCKTextColorCommand.prototype.Execute = function( panelX, panelY, relElement )
 {
-	/*
-		BEGIN ###
-		This is the right code to create the panel, but it is not
-		working well with Gecko, so it has been moved to the 
-		class contructor.
-	
-	// Create the Color Panel if needed.
-	if ( ! this._Panel )
-	{
-		this._Panel = new FCKPanel() ;
-		this._Panel.StyleSheet = FCKConfig.SkinPath + 'fck_contextmenu.css' ;
-		this._Panel.Create() ;
-
-		this._CreatePanelBody( this._Panel.Document, this._Panel.PanelDiv ) ;
-	}
-		END ###
-	*/
-
 	// We must "cache" the actual panel type to be used in the SetColor method.
 	FCK._ActiveColorPanelType = this.Type ;
 
@@ -70,8 +55,16 @@
 {
 	if ( FCK._ActiveColorPanelType == 'ForeColor' )
 		FCK.ExecuteNamedCommand( 'ForeColor', color ) ;
-	else if ( FCKBrowserInfo.IsGecko )
+	else if ( FCKBrowserInfo.IsGeckoLike )
+	{
+		if ( FCKBrowserInfo.IsGecko && !FCKConfig.GeckoUseSPAN )
+			FCK.EditorDocument.execCommand( 'useCSS', false, false ) ;
+			
 		FCK.ExecuteNamedCommand( 'hilitecolor', color ) ;
+
+		if ( FCKBrowserInfo.IsGecko && !FCKConfig.GeckoUseSPAN )
+			FCK.EditorDocument.execCommand( 'useCSS', false, true ) ;
+	}
 	else
 		FCK.ExecuteNamedCommand( 'BackColor', color ) ;
 	
@@ -123,6 +116,7 @@
 
 	// Create the Table that will hold all colors.
 	var oTable = targetDiv.appendChild( targetDocument.createElement( "TABLE" ) ) ;
+	oTable.className = 'ForceBaseFont' ;		// Firefox 1.5 Bug.
 	oTable.style.tableLayout = 'fixed' ;
 	oTable.cellPadding = 0 ;
 	oTable.cellSpacing = 0 ;
@@ -138,7 +132,7 @@
 		'<table cellspacing="0" cellpadding="0" width="100%" border="0">\
 			<tr>\
 				<td><div class="ColorBoxBorder"><div class="ColorBox" style="background-color: #000000"></div></div></td>\
-				<td nowrap width="100%" align="center" unselectable="on">' + FCKLang.ColorAutomatic + '</td>\
+				<td nowrap width="100%" align="center">' + FCKLang.ColorAutomatic + '</td>\
 			</tr>\
 		</table>' ;
 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/fckconstants.js 1.4.1.src/fckeditor/editor/_source/fckconstants.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/fckconstants.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/_source/fckconstants.js	2006-06-17 16:25:34.000000000 -0500
@@ -0,0 +1,44 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckconstants.js
+ * 	Defines some constants used by the editor. These constants are also 
+ * 	globally available in the page where the editor is placed.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+// Editor Instance Status.
+var FCK_STATUS_NOTLOADED	= window.parent.FCK_STATUS_NOTLOADED	= 0 ;
+var FCK_STATUS_ACTIVE		= window.parent.FCK_STATUS_ACTIVE		= 1 ;
+var FCK_STATUS_COMPLETE		= window.parent.FCK_STATUS_COMPLETE		= 2 ;
+
+// Tristate Operations.
+var FCK_TRISTATE_OFF		= window.parent.FCK_TRISTATE_OFF		= 0 ;
+var FCK_TRISTATE_ON			= window.parent.FCK_TRISTATE_ON			= 1 ;
+var FCK_TRISTATE_DISABLED	= window.parent.FCK_TRISTATE_DISABLED	= -1 ;
+
+// For unknown values.
+var FCK_UNKNOWN				= window.parent.FCK_UNKNOWN				= -9 ;
+
+// Toolbar Items Style.
+var FCK_TOOLBARITEM_ONLYICON	= window.parent.FCK_TOOLBARITEM_ONLYICON	= 0 ;
+var FCK_TOOLBARITEM_ONLYTEXT	= window.parent.FCK_TOOLBARITEM_ONLYTEXT	= 1 ;
+var FCK_TOOLBARITEM_ICONTEXT	= window.parent.FCK_TOOLBARITEM_ICONTEXT	= 2 ;
+
+// Edit Mode
+var FCK_EDITMODE_WYSIWYG	= window.parent.FCK_EDITMODE_WYSIWYG	= 0 ;
+var FCK_EDITMODE_SOURCE		= window.parent.FCK_EDITMODE_SOURCE		= 1 ;
+
+var FCK_IMAGES_PATH = 'images/' ;		// Check usage.
+var FCK_SPACER_PATH = 'images/spacer.gif' ;
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/fckeditorapi.js 1.4.1.src/fckeditor/editor/_source/fckeditorapi.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/fckeditorapi.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/_source/fckeditorapi.js	2006-09-03 13:05:03.000000000 -0500
@@ -0,0 +1,94 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckeditorapi.js
+ * 	Create the FCKeditorAPI object that is available as a global object in
+ * 	the page where the editor is placed in.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKeditorAPI ;
+
+function InitializeAPI()
+{
+	if ( !( FCKeditorAPI = window.parent.FCKeditorAPI ) )
+	{
+		// Make the FCKeditorAPI object available in the parent window. Use 
+		// eval so it is independent from this window and so it will still be 
+		// available if the editor instance is removed ("Can't execute code
+		// from a freed script" error).
+		var sScript = '\
+			var FCKeditorAPI = {\
+				Version			: \'2.3.1\',\
+				VersionBuild	: \'1062\',\
+				__Instances		: new Object(),\
+				GetInstance		: function( instanceName )\
+				{\
+					return this.__Instances[ instanceName ] ;\
+				},\
+				_FunctionQueue	: {\
+					Functions	: new Array(),\
+					IsRunning	: false,\
+					Add			: function( functionToAdd )\
+					{\
+						this.Functions.push( functionToAdd ) ;\
+						if ( !this.IsRunning )\
+							this.StartNext() ;\
+					},\
+					StartNext	: function()\
+					{\
+						var aQueue = this.Functions ;\
+						if ( aQueue.length > 0 )\
+						{\
+							this.IsRunning = true ;\
+							aQueue[0].call() ;\
+						}\
+						else\
+							this.IsRunning = false ;\
+					},\
+					Remove		: function( func )\
+					{\
+						var aQueue = this.Functions ;\
+						var i = 0, fFunc ;\
+						while( fFunc = aQueue[ i ] )\
+						{\
+							if ( fFunc == func )\
+								aQueue.splice( i,1 ) ;\
+							i++ ;\
+						}\
+						this.StartNext() ;\
+					}\
+				}\
+			}' ;
+		
+		// In IE, the "eval" function is not always available (it works with
+		// the JavaScript samples, but not with the ASP ones, for example).
+		// So, let's use the execScript instead.
+		if ( window.parent.execScript )
+			window.parent.execScript( sScript, 'JavaScript' ) ;
+		else
+			window.parent.eval( sScript ) ;
+		
+		FCKeditorAPI = window.parent.FCKeditorAPI ;
+	}
+
+	// Add the current instance to the FCKeditorAPI's instances collection.
+	FCKeditorAPI.__Instances[ FCK.Name ] = FCK ;
+}
+
+function FCKeditorAPI_Cleanup()
+{
+	FCKeditorAPI.__Instances[ FCK.Name ] = null ;
+}
+FCKTools.AddEventListener( window, 'unload', FCKeditorAPI_Cleanup ) ;	
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/fckjscoreextensions.js 1.4.1.src/fckeditor/editor/_source/fckjscoreextensions.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/fckjscoreextensions.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/_source/fckjscoreextensions.js	2006-06-17 16:25:34.000000000 -0500
@@ -0,0 +1,108 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckjscoreextensions.js
+ * 	Extensions to the JavaScript Core.
+ * 
+ * 	All custom extentions functions are PascalCased to differ from the standard
+ * 	camelCased ones.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+String.prototype.Contains = function( textToCheck )
+{
+	return ( this.indexOf( textToCheck ) > -1 ) ;
+}
+
+String.prototype.Equals = function()
+{
+	for ( var i = 0 ; i < arguments.length ; i++ )
+		if ( this == arguments[i] )
+			return true ;
+	
+	return false ;
+}
+
+Array.prototype.AddItem = function( item )
+{
+	var i = this.length ;
+	this[ i ] = item ;
+	return i ;
+}
+
+Array.prototype.indexOf = function( value )
+{
+	for ( var i = 0 ; i < this.length ; i++ )
+	{
+		if ( this[i] == value )
+			return i ;
+	}
+	return -1 ;
+}
+
+String.prototype.startsWith = function( value )
+{
+	return ( this.substr( 0, value.length ) == value ) ;
+}
+
+// Extends the String object, creating a "endsWith" method on it.
+String.prototype.endsWith = function( value, ignoreCase )
+{
+	var L1 = this.length ;
+	var L2 = value.length ;
+	
+	if ( L2 > L1 )
+		return false ;
+
+	if ( ignoreCase )
+	{
+		var oRegex = new RegExp( value + '$' , 'i' ) ;
+		return oRegex.test( this ) ;
+	}
+	else
+		return ( L2 == 0 || this.substr( L1 - L2, L2 ) == value ) ;
+}
+
+String.prototype.remove = function( start, length )
+{
+	var s = '' ;
+	
+	if ( start > 0 )
+		s = this.substring( 0, start ) ;
+	
+	if ( start + length < this.length )
+		s += this.substring( start + length , this.length ) ;
+		
+	return s ;
+}
+
+String.prototype.trim = function()
+{
+	return this.replace( /(^\s*)|(\s*$)/g, '' ) ;
+}
+
+String.prototype.ltrim = function()
+{
+	return this.replace( /^\s*/g, '' ) ;
+}
+
+String.prototype.rtrim = function()
+{
+	return this.replace( /\s*$/g, '' ) ;
+}
+
+String.prototype.replaceNewLineChars = function( replacement )
+{
+	return this.replace( /\n/g, replacement ) ;
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/globals/fck_constants.js 1.4.1.src/fckeditor/editor/_source/globals/fck_constants.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/globals/fck_constants.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/globals/fck_constants.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,41 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fck_constants.js
- * 	Defines some constants used by the editor. These constants are also 
- * 	globally available in the page where the editor is placed.
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-// Editor Instance Status.
-var FCK_STATUS_NOTLOADED	= window.parent.FCK_STATUS_NOTLOADED	= 0 ;
-var FCK_STATUS_ACTIVE		= window.parent.FCK_STATUS_ACTIVE		= 1 ;
-var FCK_STATUS_COMPLETE		= window.parent.FCK_STATUS_COMPLETE		= 2 ;
-
-// Tristate Operations.
-var FCK_TRISTATE_OFF		= window.parent.FCK_TRISTATE_OFF		= 0 ;
-var FCK_TRISTATE_ON			= window.parent.FCK_TRISTATE_ON			= 1 ;
-var FCK_TRISTATE_DISABLED	= window.parent.FCK_TRISTATE_DISABLED	= -1 ;
-
-// For unknown values.
-var FCK_UNKNOWN				= window.parent.FCK_UNKNOWN				= -1000 ;
-
-// Toolbar Items Style.
-var FCK_TOOLBARITEM_ONLYICON	= window.parent.FCK_TOOLBARITEM_ONLYICON	= 0 ;
-var FCK_TOOLBARITEM_ONLYTEXT	= window.parent.FCK_TOOLBARITEM_ONLYTEXT	= 1 ;
-var FCK_TOOLBARITEM_ICONTEXT	= window.parent.FCK_TOOLBARITEM_ICONTEXT	= 2 ;
-
-// Edit Mode
-var FCK_EDITMODE_WYSIWYG	= window.parent.FCK_EDITMODE_WYSIWYG	= 0 ;
-var FCK_EDITMODE_SOURCE		= window.parent.FCK_EDITMODE_SOURCE		= 1 ;
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/globals/fckeditorapi.js 1.4.1.src/fckeditor/editor/_source/globals/fckeditorapi.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/globals/fckeditorapi.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/globals/fckeditorapi.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,45 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fckeditorapi.js
- * 	Create the FCKeditorAPI object that is available as a global object in
- * 	the page where the editor is placed in.
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-var FCKeditorAPI ;
-
-function FCKeditorAPI_GetInstance( instanceName )
-{
-	return this.__Instances[ instanceName ] ;
-}
-
-if ( !window.parent.FCKeditorAPI )
-{
-	// Make the FCKeditorAPI object available in the parent window.
-	FCKeditorAPI = window.parent.FCKeditorAPI = new Object() ;
-	FCKeditorAPI.__Instances = new Object() ;
-
-	// Set the current version.
-	FCKeditorAPI.Version = '2.1.1' ;
-
-	// Function used to get a instance of an existing editor present in the 
-	// page.
-	FCKeditorAPI.GetInstance = FCKeditorAPI_GetInstance ;
-}
-else
-	FCKeditorAPI = window.parent.FCKeditorAPI ;
-
-// Add the current instance to the FCKeditorAPI's instances collection.
-FCKeditorAPI.__Instances[ FCK.Name ] = FCK ;
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck_1_gecko.js 1.4.1.src/fckeditor/editor/_source/internals/fck_1_gecko.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck_1_gecko.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fck_1_gecko.js	2006-09-03 13:05:03.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -23,25 +23,14 @@
 
 FCK.InitializeBehaviors = function()
 {
-	// Enable table borders visibility.
-	if ( FCKConfig.ShowBorders ) 
-	{
-		var oStyle = FCKTools.AppendStyleSheet( this.EditorDocument, FCKConfig.FullBasePath + 'css/fck_showtableborders_gecko.css' ) ;
-		oStyle.setAttribute( '_fcktemp', 'true' ) ;
-	}
+	// When calling "SetHTML", the editing area IFRAME gets a fixed height. So we must recaulculate it.
+	Window_OnResize() ;
 
-	// Disable Right-Click
-	var oOnContextMenu = function( e )
-	{
-		e.preventDefault() ;
-		FCK.ShowContextMenu( e.clientX, e.clientY ) ;
-	}
-	this.EditorDocument.addEventListener( 'contextmenu', oOnContextMenu, true ) ;
+	FCKFocusManager.AddWindow( this.EditorWindow ) ;
 
 	// Handle pasting operations.
 	var oOnKeyDown = function( e )
 	{
-		// FCKDebug.Output( 'Which Key: ' +  e.which ) ;
 
 		// START iCM Modifications
 		/*
@@ -53,7 +42,7 @@
 		}
 		// Amend backspace handling so correctly removes empty block elements i.e. those block elements containing nothing or
 		// just the bogus BR node
-		if ( e.which == 8 && !e.shiftKey && !e.ctrlKey && !e.altKey && !FCKConfig.UserBROnCarriageReturn && !FCK.Events.FireEvent( "OnBackSpace" ) )
+		if ( e.which == 8 && !e.shiftKey && !e.ctrlKey && !e.altKey && !FCKConfig.UseBROnCarriageReturn && !FCK.Events.FireEvent( "OnBackSpace" ) )
 		{
 			e.preventDefault() ;
 			e.stopPropagation() ;
@@ -61,10 +50,10 @@
 		*/
 		// END iCM Modifications
 
+		var bPrevent ;
+
 		if ( e.ctrlKey && !e.shiftKey && !e.altKey )
 		{
-			var bPrevent = false ;
-			
 			switch ( e.which ) 
 			{
 				case 66 :	// B
@@ -84,12 +73,14 @@
 					bPrevent = ( FCK.Status != FCK_STATUS_COMPLETE || !FCK.Events.FireEvent( "OnPaste" ) ) ;
 					break ;
 			}
-	
-			if ( bPrevent ) 
-			{
-				e.preventDefault() ;
-				e.stopPropagation() ;
-			}
+		}
+		else if ( e.shiftKey && !e.ctrlKey && !e.altKey && e.keyCode == 45 )	// SHIFT + <INS>
+			bPrevent = ( FCK.Status != FCK_STATUS_COMPLETE || !FCK.Events.FireEvent( "OnPaste" ) ) ;
+		
+		if ( bPrevent ) 
+		{
+			e.preventDefault() ;
+			e.stopPropagation() ;
 		}
 	}
 	this.EditorDocument.addEventListener( 'keypress', oOnKeyDown, true ) ;
@@ -120,154 +111,20 @@
 	}
 	this.EditorDocument.addEventListener( 'dblclick', this._DblClickListener, true ) ;
 
-	this._OnLoad = function()
-	{
-		if ( this._FCK_HTML )
-		{
-			this.document.body.innerHTML = this._FCK_HTML ;
-			this._FCK_HTML = null ;
-		}
-	}
-	this.EditorWindow.addEventListener( 'load', this._OnLoad, true ) ;
-
-//	var oEditorWindow_OnUnload = function()
-//	{
-//		FCK.EditorWindow.location = 'fckblank.html' ;
-//	}
-//	this.EditorWindow.addEventListener( 'unload', oEditorWindow_OnUnload, true ) ;
-
-//	var oEditorWindow_OnFocus = function()
-//	{
-//		FCK.MakeEditable() ;
-//	}
-//	this.EditorWindow.addEventListener( 'focus', oEditorWindow_OnFocus, true ) ;
+	// Reset the context menu.
+	FCK.ContextMenu._InnerContextMenu.SetMouseClickWindow( FCK.EditorWindow ) ;
+	FCK.ContextMenu._InnerContextMenu.AttachToElement( FCK.EditorDocument ) ;
 }
 
 FCK.MakeEditable = function()
 {
-	try 
-	{
-		FCK.EditorDocument.designMode = 'on' ;
-
-		// Tell Gecko to use or not the <SPAN> tag for the bold, italic and underline.
-		FCK.EditorDocument.execCommand( 'useCSS', false, !FCKConfig.GeckoUseSPAN ) ;
-	}
-	catch (e) {}
+	this.EditingArea.MakeEditable() ;
 }
 
-FCK.Focus = function()
+// Disable the context menu in the editor (outside the editing area).
+function Document_OnContextMenu( e )
 {
-	try
-	{
-//		window.focus() ;
-		FCK.EditorWindow.focus() ;
-	}
-	catch(e) {}
+	if ( !e.target._FCKShowContextMenu )
+		e.preventDefault() ;
 }
-
-FCK.SetHTML = function( html, forceWYSIWYG )
-{
-	// Firefox can't handle correctly the editing of the STRONG and EM tags. 
-	// We must replace them with B and I.
-	html = html.replace( FCKRegexLib.StrongOpener, '<b$1' ) ;
-	html = html.replace( FCKRegexLib.StrongCloser, '<\/b>' ) ;
-	html = html.replace( FCKRegexLib.EmOpener, '<i$1' ) ;
-	html = html.replace( FCKRegexLib.EmCloser, '<\/i>' ) ;
-
-	if ( forceWYSIWYG || FCK.EditMode == FCK_EDITMODE_WYSIWYG )
-	{
-		html = FCKConfig.ProtectedSource.Protect( html ) ;
-
-		// Gecko has a lot of bugs mainly when handling editing features.
-		// To avoid an Aplication Exception (that closes the browser!) we
-		// must first write the <HTML> contents with an empty body, and
-		// then insert the body contents.
-		// (Oh yes... it took me a lot of time to find out this workaround)
-
-		if ( FCKConfig.FullPage && FCKRegexLib.BodyContents.test( html ) )
-		{
-			// Add the <BASE> tag to the input HTML.
-			if ( FCK.TempBaseTag.length > 0 && !FCKRegexLib.HasBaseTag.test( html ) )
-				html = html.replace( FCKRegexLib.HeadOpener, '$&' + FCK.TempBaseTag ) ;
-
-			html = html.replace( FCKRegexLib.HeadCloser, '<link href="' + FCKConfig.BasePath + 'css/fck_internal.css' + '" rel="stylesheet" type="text/css" _fcktemp="true" /></head>' ) ;
-
-			// Extract the BODY contents from the html.
-			var oMatch		= html.match( FCKRegexLib.BodyContents ) ;
-			var sOpener		= oMatch[1] ;	// This is the HTML until the <body...> tag, inclusive.
-			var sContents	= oMatch[2] ;	// This is the BODY tag contents.
-			var sCloser		= oMatch[3] ;	// This is the HTML from the </body> tag, inclusive.
-
-			var sHtml = sOpener + '&nbsp;' + sCloser ;
-
-			if ( !this._Initialized )
-			{
-				FCK.EditorDocument.designMode = "on" ;
-
-				// Tell Gecko to use or not the <SPAN> tag for the bold, italic and underline.
-				FCK.EditorDocument.execCommand( "useCSS", false, !FCKConfig.GeckoUseSPAN ) ;
-
-				this._Initialized = true ;
-			}
-
-			this.EditorDocument.open() ;
-			this.EditorDocument.write( sHtml ) ;
-			this.EditorDocument.close() ;
-
-			if ( this.EditorDocument.body )
-				this.EditorDocument.body.innerHTML = sContents ;
-			else
-				this.EditorWindow._FCK_HTML = sContents ;
-
-			this.InitializeBehaviors() ;
-		}
-		else
-		{
-			/* TODO: Wait stable and remove it.
-			sHtml =
-				'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' +
-				'<html dir="' + FCKConfig.ContentLangDirection + '">' +
-				'<head><title></title>' +
-				'<link href="' + FCKConfig.EditorAreaCSS + '" rel="stylesheet" type="text/css" />' +
-				'<link href="' + FCKConfig.BasePath + 'css/fck_internal.css' + '" rel="stylesheet" type="text/css" _fcktemp="true" />' ;
-
-			sHtml += FCK.TempBaseTag ;
-
-			sHtml += '</head><body>&nbsp;</body></html>' ;
-			*/
-
-			if ( !this._Initialized )
-			{
-				this.EditorDocument.dir = FCKConfig.ContentLangDirection ;
-
-				var sHtml =
-					'<title></title>' +
-					'<link href="' + FCKConfig.EditorAreaCSS + '" rel="stylesheet" type="text/css" />' +
-					'<link href="' + FCKConfig.BasePath + 'css/fck_internal.css' + '" rel="stylesheet" type="text/css" _fcktemp="true" />' +
-					FCK.TempBaseTag ;
-
-				this.EditorDocument.getElementsByTagName("HEAD")[0].innerHTML = sHtml ;
-
-				this.InitializeBehaviors() ;
-
-				this._Initialized = true ;
-			}
-
-			// On Gecko we must disable editing before setting the BODY innerHTML.
-//			FCK.EditorDocument.designMode = 'off' ;
-
-			if ( html.length == 0 )
-				FCK.EditorDocument.body.innerHTML = GECKO_BOGUS ;
-			else if ( FCKRegexLib.EmptyParagraph.test( html ) )
-				FCK.EditorDocument.body.innerHTML = html.replace( FCKRegexLib.TagBody, '>' + GECKO_BOGUS + '<' ) ;
-			else
-				FCK.EditorDocument.body.innerHTML = html ;
-			
-			FCK.MakeEditable() ;
-		}
-
-		FCK.OnAfterSetHTML() ;
-	}
-	else
-		document.getElementById('eSourceField').value = html ;
-}
\ No newline at end of file
+document.oncontextmenu = Document_OnContextMenu ;
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck_1_ie.js 1.4.1.src/fckeditor/editor/_source/internals/fck_1_ie.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck_1_ie.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fck_1_ie.js	2006-09-03 13:05:03.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -21,27 +21,43 @@
 
 FCK.Description = "FCKeditor for Internet Explorer 5.5+" ;
 
-// The behaviors should be pointed using the FullBasePath to avoid security
-// errors when using a differente BaseHref.
-FCK._BehaviorsStyle =
-	'<style type="text/css" _fcktemp="true"> \
-		INPUT { behavior: url(' + FCKConfig.FullBasePath + 'css/behaviors/hiddenfield.htc) ; } ' ;
-
-if ( FCKConfig.ShowBorders )
-	FCK._BehaviorsStyle += 'TABLE { behavior: url(' + FCKConfig.FullBasePath + 'css/behaviors/showtableborders.htc) ; }' ;
+FCK._GetBehaviorsStyle = function()
+{
+	if ( !FCK._BehaviorsStyle )
+	{
+		var sBasePath = FCKConfig.FullBasePath ;
+		var sTableBehavior = '' ;
+		var sStyle ;
+		
+		// The behaviors should be pointed using the FullBasePath to avoid security
+		// errors when using a differente BaseHref.
+		sStyle =
+			'<style type="text/css" _fcktemp="true">' +
+			'INPUT { behavior: url(' + sBasePath + 'css/behaviors/hiddenfield.htc) ; }' ;
 
-// Disable resize handlers.
-var sNoHandlers = 'INPUT, TEXTAREA, SELECT, .FCK__Anchor, .FCK__PageBreak' ;
+		if ( FCKConfig.ShowBorders )
+			sTableBehavior = 'url(' + sBasePath + 'css/behaviors/showtableborders.htc)' ;
 
-if ( FCKConfig.DisableImageHandles )
-	sNoHandlers += ', IMG' ;
+		// Disable resize handlers.
+		sStyle += 'INPUT,TEXTAREA,SELECT,.FCK__Anchor,.FCK__PageBreak' ;
 
-if ( FCKConfig.DisableTableHandles )
-	sNoHandlers += ', TABLE' ;
+		if ( FCKConfig.DisableObjectResizing )
+		{
+			sStyle += ',IMG' ;
+			sTableBehavior += ' url(' + sBasePath + 'css/behaviors/disablehandles.htc)' ;
+		}
+		
+		sStyle += ' { behavior: url(' + sBasePath + 'css/behaviors/disablehandles.htc) ; }' ;
 
-FCK._BehaviorsStyle += sNoHandlers + ' { behavior: url(' + FCKConfig.FullBasePath + 'css/behaviors/disablehandles.htc) ; }' ;
+		if ( sTableBehavior.length > 0 )
+			sStyle += 'TABLE { behavior: ' + sTableBehavior + ' ; }' ;
 
-FCK._BehaviorsStyle += '</style>' ;
+		sStyle += '</style>' ;
+		FCK._BehaviorsStyle = sStyle ;
+	}
+	
+	return FCK._BehaviorsStyle ;
+}
 
 function Doc_OnMouseUp()
 {
@@ -56,11 +72,12 @@
 function Doc_OnPaste()
 {
 	if ( FCK.Status == FCK_STATUS_COMPLETE )
-		return FCK.Events.FireEvent( "OnPaste" ) ;
-	else
-		return false ;
+		FCK.Events.FireEvent( "OnPaste" ) ;
+
+	return false ;
 }
 
+/*
 function Doc_OnContextMenu()
 {
 	var e = FCK.EditorWindow.event ;
@@ -68,12 +85,12 @@
 	FCK.ShowContextMenu( e.screenX, e.screenY ) ;
 	return false ;
 }
+*/
 
 function Doc_OnKeyDown()
 {
 	var e = FCK.EditorWindow.event ;
 
-//	FCKDebug.Output( 'KeyCode: ' + e.keyCode ) ;
 
 	switch ( e.keyCode )
 	{
@@ -98,7 +115,17 @@
 				return false ;
 			}
 			break ;
-			
+		
+		case 8 :	// BACKSPACE
+			// We must delete a control selection by code and cancels the 
+			// keystroke, otherwise IE will execute the browser's "back" button.
+			if ( FCKSelection.GetType() == 'Control' )
+			{
+				FCKSelection.Delete() ;
+				return false ;
+			}
+			break ;
+		
 		case 9 :	// TAB
 			if ( FCKConfig.TabSpaces > 0 && !(e.ctrlKey || e.altKey || e.shiftKey) )
 			{
@@ -167,8 +194,8 @@
 	// Intercept pasting operations
 	this.EditorDocument.body.attachEvent( 'onpaste', Doc_OnPaste ) ;
 
-	// Disable Right-Click and shows the context menu.
-	this.EditorDocument.attachEvent('oncontextmenu', Doc_OnContextMenu ) ;
+	// Reset the context menu.
+	FCK.ContextMenu._InnerContextMenu.AttachToElement( FCK.EditorDocument.body ) ;
 
 	// Build the "TAB" key replacement (if necessary).
 	if ( FCKConfig.TabSpaces > 0 )
@@ -188,71 +215,11 @@
 //	this.EditorDocument.body.contentEditable = true ;
 }
 
-FCK.Focus = function()
-{
-	try
-	{
-		if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
-			FCK.EditorDocument.body.focus() ;
-		else
-			document.getElementById('eSourceField').focus() ;
-	}
-	catch(e) {}
-}
-
-FCK.SetHTML = function( html, forceWYSIWYG )
-{
-	if ( forceWYSIWYG || FCK.EditMode == FCK_EDITMODE_WYSIWYG )
-	{
-		html = FCKConfig.ProtectedSource.Protect( html ) ;
-
-		var sHtml ;
-
-		if ( FCKConfig.FullPage )
-		{
-			var sHtml =
-				FCK._BehaviorsStyle +
-				'<link href="' + FCKConfig.FullBasePath + 'css/fck_internal.css' + '" rel="stylesheet" type="text/css" _fcktemp="true" />' ;
-
-			if ( FCK.TempBaseTag.length > 0 && !FCKRegexLib.HasBaseTag.test( html ) )
-				sHtml += FCK.TempBaseTag ;
-
-			sHtml = html.replace( FCKRegexLib.HeadOpener, '$&' + sHtml ) ;
-		}
-		else
-		{
-			sHtml =
-				FCKConfig.DocType +
-				'<html dir="' + FCKConfig.ContentLangDirection + '"' ;
-			
-			if ( FCKConfig.IEForceVScroll )
-				sHtml += ' style="overflow-y: scroll"' ;
-			
-			sHtml +=
-				'><head><title></title>' +
-				'<link href="' + FCKConfig.EditorAreaCSS + '" rel="stylesheet" type="text/css" />' +
-				'<link href="' + FCKConfig.FullBasePath + 'css/fck_internal.css' + '" rel="stylesheet" type="text/css" _fcktemp="true" />' ;
-
-			sHtml += FCK._BehaviorsStyle ;
-			sHtml += FCK.TempBaseTag ;
-			sHtml += '</head><body>' + html  + '</body></html>' ;
-		}
-
-		this.EditorDocument.open( '', '_self', '', true ) ;
-		this.EditorDocument.write( sHtml ) ;
-		this.EditorDocument.close() ;
-
-		this.InitializeBehaviors() ;
-		this.EditorDocument.body.contentEditable = true ;
-
-		FCK.OnAfterSetHTML() ;
-	}
-	else
-		document.getElementById('eSourceField').value = html ;
-}
-
 FCK.InsertHtml = function( html )
 {
+	html = FCKConfig.ProtectedSource.Protect( html ) ;
+	html = FCK.ProtectUrls( html ) ;
+
 	FCK.Focus() ;
 
 	FCKUndo.SaveUndoStep() ;
@@ -261,10 +228,10 @@
 	var oSel = FCK.EditorDocument.selection ;
 
 	// Deletes the actual selection contents.
-	if ( oSel.type.toLowerCase() != "none" )
+	if ( oSel.type.toLowerCase() == 'control' )
 		oSel.clear() ;
 
-	// Inset the HTML.
+	// Insert the HTML.
 	oSel.createRange().pasteHTML( html ) ;
 }
 
@@ -275,4 +242,51 @@
 	// be preserved.
 	oDoc.body.innerHTML = '<div id="__fakeFCKRemove__">&nbsp;</div>' + html ;
 	oDoc.getElementById('__fakeFCKRemove__').removeNode( true ) ;
+}
+
+var FCK_PreloadImages_Count = 0 ;
+var FCK_PreloadImages_Images = new Array() ;
+
+function FCK_PreloadImages()
+{
+	// Get the images to preload.
+	var aImages = FCKConfig.PreloadImages || [] ;
+	
+	if ( typeof( aImages ) == 'string' )
+		aImages = aImages.split( ';' ) ;
+
+	// Add the skin icons strip.
+	aImages.push( FCKConfig.SkinPath + 'fck_strip.gif' ) ;
+	
+	FCK_PreloadImages_Count = aImages.length ;
+
+	var aImageElements = new Array() ;
+	
+	for ( var i = 0 ; i < aImages.length ; i++ )
+	{
+		var eImg = document.createElement( 'img' ) ;
+		eImg.onload = eImg.onerror = FCK_PreloadImages_OnImage ;
+		eImg.src = aImages[i] ;
+		
+		FCK_PreloadImages_Images[i] = eImg ;
+	}
+}
+
+function FCK_PreloadImages_OnImage()
+{
+	if ( (--FCK_PreloadImages_Count) == 0 )
+		FCKTools.RunFunction( LoadToolbarSetup ) ;
+}
+
+// Disable the context menu in the editor (outside the editing area).
+function Document_OnContextMenu()
+{
+	return ( event.srcElement._FCKShowContextMenu == true ) ;
+}
+document.oncontextmenu = Document_OnContextMenu ;
+
+function FCK_Cleanup()
+{
+	this.EditorWindow = null ;
+	this.EditorDocument = null ;
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck_1.js 1.4.1.src/fckeditor/editor/_source/internals/fck_1.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck_1.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fck_1.js	2006-09-03 13:05:03.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -18,38 +18,25 @@
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
  */
 
+var FCK_StartupValue ;
+
 FCK.Events	= new FCKEvents( FCK ) ;
 FCK.Toolbar	= null ;
-
-FCK.TempBaseTag = FCKConfig.BaseHref.length > 0 ? '<base href="' + FCKConfig.BaseHref + '" _fcktemp="true"></base>' : '' ;
+FCK.HasFocus = false ;
 
 FCK.StartEditor = function()
 {
-	// Get the editor's window and document (DOM)
-	this.EditorWindow	= window.frames[ 'eEditorArea' ] ;
-	this.EditorDocument	= this.EditorWindow.document ;
-
-	// TODO: Wait stable version and remove the following commented lines.
-	// The Base Path of the editor is saved to rebuild relative URL (IE issue).
-//	this.BaseUrl = this.EditorDocument.location.protocol + '//' + this.EditorDocument.location.host ;
+	FCK.TempBaseTag = FCKConfig.BaseHref.length > 0 ? '<base href="' + FCKConfig.BaseHref + '" _fcktemp="true"></base>' : '' ;
 
-//	if ( FCKBrowserInfo.IsGecko )
-//		this.MakeEditable() ;
+	FCK.EditingArea = new FCKEditingArea( document.getElementById( 'xEditingArea' ) ) ;
 
 	// Set the editor's startup contents
 	this.SetHTML( FCKTools.GetLinkedFieldValue() ) ;
-
-	// Attach the editor to the form onsubmit event
-	FCKTools.AttachToLinkedFieldFormSubmit( this.UpdateLinkedField ) ;
-
-	FCKUndo.SaveUndoStep() ;
-
-	this.SetStatus( FCK_STATUS_ACTIVE ) ;
 }
 
-function Window_OnFocus()
+FCK.Focus = function()
 {
-	FCK.Focus() ;
+	FCK.EditingArea.Focus() ;
 }
 
 FCK.SetStatus = function( newStatus )
@@ -58,109 +45,26 @@
 
 	if ( newStatus == FCK_STATUS_ACTIVE )
 	{
-		// Force the focus in the window to go to the editor.
-		window.onfocus = window.document.body.onfocus = Window_OnFocus ;
+		FCKFocusManager.AddWindow( window, true ) ;
+		
+		if ( FCKBrowserInfo.IsIE )
+			FCKFocusManager.AddWindow( window.frameElement, true ) ;
 
 		// Force the focus in the editor.
 		if ( FCKConfig.StartupFocus )
 			FCK.Focus() ;
-
-		// @Packager.Compactor.Remove.Start
-		var sBrowserSuffix = FCKBrowserInfo.IsIE ? "ie" : "gecko" ;
-
-		FCKScriptLoader.AddScript( '_source/internals/fck_2.js' ) ;
-		FCKScriptLoader.AddScript( '_source/internals/fck_2_' + sBrowserSuffix + '.js' ) ;
-		FCKScriptLoader.AddScript( '_source/internals/fckselection.js' ) ;
-		FCKScriptLoader.AddScript( '_source/internals/fckselection_' + sBrowserSuffix + '.js' ) ;
-		FCKScriptLoader.AddScript( '_source/classes/fckpanel_' + sBrowserSuffix + '.js' ) ;
-		FCKScriptLoader.AddScript( '_source/internals/fcktablehandler.js' ) ;
-		FCKScriptLoader.AddScript( '_source/internals/fcktablehandler_' + sBrowserSuffix + '.js' ) ;
-		FCKScriptLoader.AddScript( '_source/classes/fckxml_' + sBrowserSuffix + '.js' ) ;
-		FCKScriptLoader.AddScript( '_source/classes/fckstyledef.js' ) ;
-		FCKScriptLoader.AddScript( '_source/classes/fckstyledef_' + sBrowserSuffix + '.js' ) ;
-		FCKScriptLoader.AddScript( '_source/classes/fckstylesloader.js' ) ;
-
-		FCKScriptLoader.AddScript( '_source/commandclasses/fcknamedcommand.js' ) ;
-		FCKScriptLoader.AddScript( '_source/commandclasses/fck_othercommands.js' ) ;
-		FCKScriptLoader.AddScript( '_source/commandclasses/fckspellcheckcommand_' + sBrowserSuffix + '.js' ) ;
-		FCKScriptLoader.AddScript( '_source/commandclasses/fcktextcolorcommand.js' ) ;
-		FCKScriptLoader.AddScript( '_source/commandclasses/fckpasteplaintextcommand.js' ) ;
-		FCKScriptLoader.AddScript( '_source/commandclasses/fckpastewordcommand.js' ) ;
-		FCKScriptLoader.AddScript( '_source/commandclasses/fcktablecommand.js' ) ;
-		FCKScriptLoader.AddScript( '_source/commandclasses/fckstylecommand.js' ) ;
-
-		FCKScriptLoader.AddScript( '_source/internals/fckcommands.js' ) ;
-		FCKScriptLoader.AddScript( '_source/classes/fcktoolbarbutton.js' ) ;
-		FCKScriptLoader.AddScript( '_source/classes/fckspecialcombo.js' ) ;
-		FCKScriptLoader.AddScript( '_source/classes/fcktoolbarspecialcombo.js' ) ;
-		FCKScriptLoader.AddScript( '_source/classes/fcktoolbarfontscombo.js' ) ;
-		FCKScriptLoader.AddScript( '_source/classes/fcktoolbarfontsizecombo.js' ) ;
-		FCKScriptLoader.AddScript( '_source/classes/fcktoolbarfontformatcombo.js' ) ;
-		FCKScriptLoader.AddScript( '_source/classes/fcktoolbarstylecombo.js' ) ;
-		FCKScriptLoader.AddScript( '_source/classes/fcktoolbarpanelbutton.js' ) ;
-		FCKScriptLoader.AddScript( '_source/internals/fcktoolbaritems.js' ) ;
-		FCKScriptLoader.AddScript( '_source/classes/fcktoolbar.js' ) ;
-		FCKScriptLoader.AddScript( '_source/classes/fcktoolbarbreak_' + sBrowserSuffix + '.js' ) ;
-		FCKScriptLoader.AddScript( '_source/internals/fcktoolbarset.js' ) ;
-		FCKScriptLoader.AddScript( '_source/internals/fckdialog.js' ) ;
-		FCKScriptLoader.AddScript( '_source/internals/fckdialog_' + sBrowserSuffix + '.js' ) ;
-		FCKScriptLoader.AddScript( '_source/classes/fckcontextmenuitem.js' ) ;
-		FCKScriptLoader.AddScript( '_source/classes/fckcontextmenuseparator.js' ) ;
-		FCKScriptLoader.AddScript( '_source/classes/fckcontextmenugroup.js' ) ;
-		FCKScriptLoader.AddScript( '_source/internals/fckcontextmenu.js' ) ;
-		FCKScriptLoader.AddScript( '_source/internals/fckcontextmenu_' + sBrowserSuffix + '.js' ) ;
-		FCKScriptLoader.AddScript( '_source/classes/fckplugin.js' ) ;
-		FCKScriptLoader.AddScript( '_source/internals/fckplugins.js' ) ;
-		FCKScriptLoader.AddScript( '_source/internals/fck_last.js' ) ;
-		// @Packager.Compactor.Remove.End
-
-		/* @Packager.Compactor.RemoveLine
-
-		if ( FCKBrowserInfo.IsIE )
-			FCKScriptLoader.AddScript( 'js/fckeditorcode_ie_2.js' ) ;
-		else
-			FCKScriptLoader.AddScript( 'js/fckeditorcode_gecko_2.js' ) ;
-
-		@Packager.Compactor.RemoveLine */
 	}
 
 	this.Events.FireEvent( 'OnStatusChange', newStatus ) ;
 }
 
-FCK.GetHTML = function( format )
-{
-	var sHTML ;
-
-	if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
-	{
-		// TODO: Wait stable version and remove the following commented lines.
-//		if ( FCKBrowserInfo.IsIE )
-//			FCK.CheckRelativeLinks() ;
-
-		if ( FCKBrowserInfo.IsIE )
-			sHTML = this.EditorDocument.body.innerHTML.replace( FCKRegexLib.ToReplace, '$1' ) ;
-		else
-			sHTML = this.EditorDocument.body.innerHTML ;
-	}
-	else
-		sHTML = document.getElementById('eSourceField').value ;
-
-	if ( format )
-		return FCKCodeFormatter.Format( sHTML ) ;
-	else
-		return sHTML ;
-}
-
-FCK.GetXHTML = function( format )
+// GetHTML is Deprecated : returns the same value as GetXHTML.
+FCK.GetHTML = FCK.GetXHTML = function( format )
 {
-	var bSource = ( FCK.EditMode == FCK_EDITMODE_SOURCE ) ;
-
-	if ( bSource )
-		this.SwitchEditMode() ;
-
-	// TODO: Wait stable version and remove the following commented lines.
-//	if ( FCKBrowserInfo.IsIE )
-//		FCK.CheckRelativeLinks() ;
+	// We assume that if the user is in source editing, the editor value must
+	// represent the exact contents of the source, as the user wanted it to be.
+	if ( FCK.EditMode == FCK_EDITMODE_SOURCE )
+			return FCK.EditingArea.Textarea.value ;
 
 	var sXHTML ;
 	
@@ -174,9 +78,6 @@
 			sXHTML = FCKXHtml.GetXHTML( this.EditorDocument.body, false, format ) ;
 	}
 
-	if ( bSource )
-		this.SwitchEditMode() ;
-
 	if ( FCKBrowserInfo.IsIE )
 		sXHTML = sXHTML.replace( FCKRegexLib.ToReplace, '$1' ) ;
 
@@ -191,23 +92,10 @@
 
 FCK.UpdateLinkedField = function()
 {
-	if ( FCKConfig.EnableXHTML )
-		FCK.LinkedField.value = FCK.GetXHTML( FCKConfig.FormatOutput ) ;
-	else
-		FCK.LinkedField.value = FCK.GetHTML( FCKConfig.FormatOutput ) ;
-		
+	FCK.LinkedField.value = FCK.GetXHTML( FCKConfig.FormatOutput ) ;
 	FCK.Events.FireEvent( 'OnAfterLinkedFieldUpdate' ) ;
 }
 
-FCK.ShowContextMenu = function( x, y )
-{
-	if ( this.Status != FCK_STATUS_COMPLETE )
-		return ;
-
-	FCKContextMenu.Show( x, y ) ;
-	this.Events.FireEvent( "OnContextMenu" ) ;
-}
-
 FCK.RegisteredDoubleClickHandlers = new Object() ;
 
 FCK.OnDoubleClick = function( element )
@@ -225,185 +113,243 @@
 
 FCK.OnAfterSetHTML = function()
 {
-	var oProcessor, i = 0 ;
-	while( ( oProcessor = FCKDocumentProcessors[i++] ) )
-		oProcessor.ProcessDocument( FCK.EditorDocument ) ;
-
-	this.Events.FireEvent( 'OnAfterSetHTML' ) ;
+	FCKDocumentProcessor.Process( FCK.EditorDocument ) ;
+	FCK.Events.FireEvent( 'OnAfterSetHTML' ) ;
 }
 
-// Advanced document processors.
+// Saves URLs on links and images on special attributes, so they don't change when 
+// moving around.
+FCK.ProtectUrls = function( html )
+{
+	// <A> href
+	html = html.replace( FCKRegexLib.ProtectUrlsAApo	, '$1$2$3$2 _fcksavedurl=$2$3$2' ) ;
+	html = html.replace( FCKRegexLib.ProtectUrlsANoApo	, '$1$2 _fcksavedurl="$2"' ) ;
 
-var FCKDocumentProcessors = new Array() ;
+	// <IMG> src
+	html = html.replace( FCKRegexLib.ProtectUrlsImgApo	, '$1$2$3$2 _fcksavedurl=$2$3$2' ) ;
+	html = html.replace( FCKRegexLib.ProtectUrlsImgNoApo, '$1$2 _fcksavedurl="$2"' ) ;
+	
+	return html ;
+}
 
-var FCKDocumentProcessors_CreateFakeImage = function( fakeClass, realElement )
+FCK.IsDirty = function()
 {
-	var oImg = FCK.EditorDocument.createElement( 'IMG' ) ;
-	oImg.className = fakeClass ;
-	oImg.src = FCKConfig.FullBasePath + 'images/spacer.gif' ;
-	oImg.setAttribute( '_fckfakelement', 'true', 0 ) ;
-	oImg.setAttribute( '_fckrealelement', FCKTempBin.AddElement( realElement ), 0 ) ;
-	return oImg ;
+	return ( FCK_StartupValue != FCK.EditorDocument.body.innerHTML ) ;
 }
 
-// Link Anchors
-var FCKAnchorsProcessor = new Object() ;
-FCKAnchorsProcessor.ProcessDocument = function( document )
+FCK.ResetIsDirty = function()
 {
-	var aLinks = document.getElementsByTagName( 'A' ) ;
+	if ( FCK.EditorDocument.body )
+		FCK_StartupValue = FCK.EditorDocument.body.innerHTML ;
+}
 
-	var oLink ;
-	var i = aLinks.length - 1 ;
-	while ( i >= 0 && ( oLink = aLinks[i--] ) )
+FCK.SetHTML = function( html )
+{
+	this.EditingArea.Mode = FCK.EditMode ;
+
+	if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
 	{
-		// If it is anchor.
-		if ( oLink.name.length > 0 && ( !oLink.getAttribute('href') || oLink.getAttribute('href').length == 0 ) )
+		// Firefox can't handle correctly the editing of the STRONG and EM tags. 
+		// We must replace them with B and I.
+		if ( FCKBrowserInfo.IsGecko )
 		{
-			var oImg = FCKDocumentProcessors_CreateFakeImage( 'FCK__Anchor', oLink.cloneNode(true) ) ;
-			oImg.setAttribute( '_fckanchor', 'true', 0 ) ;
-			
-			oLink.parentNode.insertBefore( oImg, oLink ) ;
-			oLink.parentNode.removeChild( oLink ) ;
+			html = html.replace( FCKRegexLib.StrongOpener, '<b$1' ) ;
+			html = html.replace( FCKRegexLib.StrongCloser, '<\/b>' ) ;
+			html = html.replace( FCKRegexLib.EmOpener, '<i$1' ) ;
+			html = html.replace( FCKRegexLib.EmCloser, '<\/i>' ) ;
 		}
-	}
-}
+	
+		html = FCKConfig.ProtectedSource.Protect( html ) ;
+		html = FCK.ProtectUrls( html ) ;
 
-FCKDocumentProcessors.addItem( FCKAnchorsProcessor ) ;
+		var sHtml ;
 
-// Page Breaks
-var FCKPageBreaksProcessor = new Object() ;
-FCKPageBreaksProcessor.ProcessDocument = function( document )
-{
-	var aCenters = document.getElementsByTagName( 'CENTER' ) ;
+		if ( FCKConfig.FullPage )
+		{
+			var sHtml ;
 
-	var oCenter ;
-	var i = aCenters.length - 1 ;
-	while ( i >= 0 && ( oCenter = aCenters[i--] ) )
-	{
-		if ( oCenter.style.pageBreakAfter == 'always' && oCenter.innerHTML.trim().length == 0 )
+			if ( FCKBrowserInfo.IsIE )
+				sHtml = FCK._GetBehaviorsStyle() ;
+			else if ( FCKConfig.ShowBorders ) 
+				sHtml = '<link href="' + FCKConfig.FullBasePath + 'css/fck_showtableborders_gecko.css" rel="stylesheet" type="text/css" _fcktemp="true" />' ;
+
+			sHtml += '<link href="' + FCKConfig.FullBasePath + 'css/fck_internal.css' + '" rel="stylesheet" type="text/css" _fcktemp="true" />' ;
+
+			sHtml = html.replace( FCKRegexLib.HeadCloser, sHtml + '$&' ) ;
+
+			// Insert the base tag (FCKConfig.BaseHref), if not exists in the source.
+			if ( FCK.TempBaseTag.length > 0 && !FCKRegexLib.HasBaseTag.test( html ) )
+				sHtml = sHtml.replace( FCKRegexLib.HeadOpener, '$&' + FCK.TempBaseTag ) ;
+		}
+		else
 		{
-			var oFakeImage = FCKDocumentProcessors_CreateFakeImage( 'FCK__PageBreak', oCenter.cloneNode(true) ) ;
+			sHtml =
+				FCKConfig.DocType +
+				'<html dir="' + FCKConfig.ContentLangDirection + '"' ;
 			
-			oCenter.parentNode.insertBefore( oFakeImage, oCenter ) ;
-			oCenter.parentNode.removeChild( oCenter ) ;
+			// On IE, if you are use a DOCTYPE differenft of HTML 4 (like
+			// XHTML), you must force the vertical scroll to show, otherwise
+			// the horizontal one may appear when the page needs vertical scrolling.
+			if ( FCKBrowserInfo.IsIE && !FCKRegexLib.Html4DocType.test( FCKConfig.DocType ) )
+				sHtml += ' style="overflow-y: scroll"' ;
+			
+			sHtml +=
+				'><head><title></title>' +
+				this._GetEditorAreaStyleTags() +
+				'<link href="' + FCKConfig.FullBasePath + 'css/fck_internal.css' + '" rel="stylesheet" type="text/css" _fcktemp="true" />' ;
+
+			if ( FCKBrowserInfo.IsIE )
+				sHtml += FCK._GetBehaviorsStyle() ;
+			else if ( FCKConfig.ShowBorders ) 
+				sHtml += '<link href="' + FCKConfig.FullBasePath + 'css/fck_showtableborders_gecko.css" rel="stylesheet" type="text/css" _fcktemp="true" />' ;
+
+			sHtml += FCK.TempBaseTag ;
+			sHtml += '</head><body>' ;
+			
+			if ( FCKBrowserInfo.IsGecko && ( html.length == 0 || FCKRegexLib.EmptyParagraph.test( html ) ) )
+				sHtml += GECKO_BOGUS ;
+			else
+				sHtml += html ;
+			
+			sHtml += '</body></html>' ;
 		}
+
+		this.EditingArea.OnLoad = FCK_EditingArea_OnLoad ;
+		this.EditingArea.Start( sHtml ) ;
+	}
+	else
+	{
+		this.EditingArea.OnLoad = null ;
+		this.EditingArea.Start( html ) ;
+		
+		// Enables the context menu in the textarea.
+		this.EditingArea.Textarea._FCKShowContextMenu = true ;
 	}
 }
 
-FCKDocumentProcessors.addItem( FCKPageBreaksProcessor ) ;
+function FCK_EditingArea_OnLoad()
+{
+	// Get the editor's window and document (DOM)
+	FCK.EditorWindow	= FCK.EditingArea.Window ;
+	FCK.EditorDocument	= FCK.EditingArea.Document ;
 
-// Flash Embeds.
-var FCKFlashProcessor = new Object() ;
-FCKFlashProcessor.ProcessDocument = function( document )
-{
-	/*
-	Sample code:
-	This is some <embed src="/UserFiles/Flash/Yellow_Runners.swf"></embed><strong>sample text</strong>. You are&nbsp;<a name="fred"></a> using <a href="http://www.fckeditor.net/">FCKeditor</a>.
-	*/
-
-	var aEmbeds = document.getElementsByTagName( 'EMBED' ) ;
-
-	var oEmbed ;
-	var i = aEmbeds.length - 1 ;
-	while ( i >= 0 && ( oEmbed = aEmbeds[i--] ) )
-	{
-		if ( oEmbed.src.endsWith( '.swf', true ) )
-		{
-			var oImg = FCKDocumentProcessors_CreateFakeImage( 'FCK__Flash', oEmbed.cloneNode(true) ) ;
-			oImg.setAttribute( '_fckflash', 'true', 0 ) ;
-			
-			FCKFlashProcessor.RefreshView( oImg, oEmbed ) ;
+	FCK.InitializeBehaviors() ;
 
-			oEmbed.parentNode.insertBefore( oImg, oEmbed ) ;
-			oEmbed.parentNode.removeChild( oEmbed ) ;
+	FCK.OnAfterSetHTML() ;
 
-//			oEmbed.setAttribute( '_fckdelete', 'true', 0) ;
-//			oEmbed.style.display = 'none' ;
-//			oEmbed.hidden = true ;
-		}
-	}
+	// Check if it is not a startup call, otherwise complete the startup.
+	if ( FCK.Status != FCK_STATUS_NOTLOADED )
+		return ;
+
+	// Save the startup value for the "IsDirty()" check.
+	FCK.ResetIsDirty() ;
+
+	// Attach the editor to the form onsubmit event
+	FCKTools.AttachToLinkedFieldFormSubmit( FCK.UpdateLinkedField ) ;
+
+	FCKUndo.SaveUndoStep() ;
+
+	FCK.SetStatus( FCK_STATUS_ACTIVE ) ;
 }
 
-FCKFlashProcessor.RefreshView = function( placholderImage, originalEmbed )
+FCK._GetEditorAreaStyleTags = function()
 {
-	if ( originalEmbed.width > 0 )
-		placholderImage.style.width = FCKTools.ConvertHtmlSizeToStyle( originalEmbed.width ) ;
-		
-	if ( originalEmbed.height > 0 )
-		placholderImage.style.height = FCKTools.ConvertHtmlSizeToStyle( originalEmbed.height ) ;
+	var sTags = '' ;
+	var aCSSs = FCKConfig.EditorAreaCSS ;
+	
+	for ( var i = 0 ; i < aCSSs.length ; i++ )
+		sTags += '<link href="' + aCSSs[i] + '" rel="stylesheet" type="text/css" />' ;
+	
+	return sTags ;
+}
+
+// # Focus Manager: Manages the focus in the editor.
+var FCKFocusManager = FCK.FocusManager = new Object() ;
+FCKFocusManager.IsLocked = false ;
+FCK.HasFocus = false ;
+
+FCKFocusManager.AddWindow = function( win, sendToEditingArea )
+{
+	var oTarget ;
+	
+	if ( FCKBrowserInfo.IsIE )
+		oTarget = win.nodeType == 1 ? win : win.frameElement ? win.frameElement : win.document ;
+	else
+		oTarget = win.document ;
+	
+	FCKTools.AddEventListener( oTarget, 'blur', FCKFocusManager_Win_OnBlur ) ;
+	FCKTools.AddEventListener( oTarget, 'focus', sendToEditingArea ? FCKFocusManager_Win_OnFocus_Area : FCKFocusManager_Win_OnFocus ) ;
 }
 
-FCKDocumentProcessors.addItem( FCKFlashProcessor ) ;
+FCKFocusManager.RemoveWindow = function( win )
+{
+	if ( FCKBrowserInfo.IsIE )
+		oTarget = win.nodeType == 1 ? win : win.frameElement ? win.frameElement : win.document ;
+	else
+		oTarget = win.document ;
+
+	FCKTools.RemoveEventListener( oTarget, 'blur', FCKFocusManager_Win_OnBlur ) ;
+	FCKTools.RemoveEventListener( oTarget, 'focus', FCKFocusManager_Win_OnFocus_Area ) ;
+	FCKTools.RemoveEventListener( oTarget, 'focus', FCKFocusManager_Win_OnFocus ) ;
+}
 
-FCK.GetRealElement = function( fakeElement )
+FCKFocusManager.Lock = function()
 {
-	var e = FCKTempBin.Elements[ fakeElement.getAttribute('_fckrealelement') ] ;
+	this.IsLocked = true ;
+}
 
-	if ( fakeElement.getAttribute('_fckflash') )
-	{
-		if ( fakeElement.style.width.length > 0 )
-				e.width = FCKTools.ConvertStyleSizeToHtml( fakeElement.style.width ) ;
+FCKFocusManager.Unlock = function()
+{
+	if ( this._HasPendingBlur )
+		FCKFocusManager._Timer = window.setTimeout( FCKFocusManager_FireOnBlur, 100 ) ;
 		
-		if ( fakeElement.style.height.length > 0 )
-				e.height = FCKTools.ConvertStyleSizeToHtml( fakeElement.style.height ) ;
-	}
-	
-	return e ;
+	this.IsLocked = false ;
 }
 
-// START iCM MODIFICATIONS
-/*
-var FCKTablesProcessor = new Object() ;
-FCKTablesProcessor.ProcessDocument = function( document )
+FCKFocusManager._ResetTimer = function()
 {
-	FCKTablesProcessor.CheckTablesNesting( document ) ;
+	this._HasPendingBlur = false ;
+
+	if ( this._Timer )
+	{
+		window.clearTimeout( this._Timer ) ;
+		delete this._Timer ; 
+	}
 }
 
-// Ensure that tables are not incorrectly nested within P, H1, H2, etc tags
-FCKTablesProcessor.CheckTablesNesting = function( document )
+function FCKFocusManager_Win_OnBlur()
 {
-	var aTables = document.getElementsByTagName( "TABLE" ) ;
-	var oParentNode ;
-	
-	for ( var i=0; i<aTables.length; i++ )
+	if ( FCK && FCK.HasFocus )
 	{
-		FCKTablesProcessor.CheckTableNesting( aTables[i] ) ;
+		FCKFocusManager._ResetTimer() ;
+		FCKFocusManager._Timer = window.setTimeout( FCKFocusManager_FireOnBlur, 100 ) ;
 	}
 }
 
-// Corrects nesting of the supplied table as necessary.
-// Also called by fck_table.html to check that a newly inserted table is correctly nested.
-FCKTablesProcessor.CheckTableNesting = function( oTableNode )
+function FCKFocusManager_FireOnBlur()
 {
-	var oParentBlockNode = FCKTools.GetParentBlockNode( oTableNode.parentNode ) ;
-	
-	if ( oParentBlockNode && !FCKRegexLib.TableBlockElements.test( oParentBlockNode.nodeName ) )
+	if ( FCKFocusManager.IsLocked )
+		FCKFocusManager._HasPendingBlur = true ;
+	else
 	{
-		// Create a new tag which holds the content of the child nodes located before the table
-		var oNode1 = FCK.EditorDocument.createElement( oParentBlockNode.tagName ) ;
-		var oFragment1 = FCKTools.GetDocumentFragment( oParentBlockNode, oParentBlockNode.firstChild, oTableNode, true, false, true ) ;
-		oNode1.appendChild( oFragment1 ) ;
-		FCKTools.SetElementAttributes( oNode1, oParentBlockNode.attributes ) ; 	// Transfer across any class attributes, etc
-	
-		// Create a new tag which holds the content of the child nodes located after the table
-		var oNode2 = FCK.EditorDocument.createElement( oParentBlockNode.tagName );
-		var oFragment2 = FCKTools.GetDocumentFragment( oParentBlockNode, oTableNode, oParentBlockNode.lastChild, false, true, true ) ;
-		oNode2.appendChild( oFragment2 ) ;
-		FCKTools.SetElementAttributes( oNode2, oParentBlockNode.attributes ) ; 	// Transfer across any class attributes, etc
-		
-		// Create a document fragment that contains the two new elements with the table element inbetween
-		var oNewNode = FCK.EditorDocument.createDocumentFragment() ;
-		if ( !FCKTools.NodeIsEmpty( oNode1 ) )
-			oNewNode.appendChild( oNode1 ) ;
-		oNewNode.appendChild( oTableNode ) ;
-		if ( !FCKTools.NodeIsEmpty( oNode2 ) )
-			oNewNode.appendChild( oNode2 ) ; 
-		
-		// Replace the existing parent node with the nodes in the fragment
-		oParentBlockNode.parentNode.replaceChild( oNewNode, oParentBlockNode ) ;
+		FCK.HasFocus = false ;
+		FCK.Events.FireEvent( "OnBlur" ) ;
 	}
-}		
+}
 
-FCKDocumentProcessors.addItem( FCKTablesProcessor ) ;
-*/
-// END iCM MODIFICATIONS
\ No newline at end of file
+function FCKFocusManager_Win_OnFocus_Area()
+{
+	FCKFocusManager_Win_OnFocus() ;
+	FCK.Focus() ;
+}
+
+function FCKFocusManager_Win_OnFocus()
+{
+	FCKFocusManager._ResetTimer() ;
+
+	if ( !FCK.HasFocus && !FCKFocusManager.IsLocked )
+	{
+		FCK.HasFocus = true ;
+		FCK.Events.FireEvent( "OnFocus" ) ;
+	}
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck_2_gecko.js 1.4.1.src/fckeditor/editor/_source/internals/fck_2_gecko.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck_2_gecko.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fck_2_gecko.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -58,16 +58,16 @@
 			FCK.EditorWindow.print() ;
 			break ;
 		case 'Paste' :
-			try			{ if ( FCK.Paste() ) FCK.ExecuteNamedCommand( 'Paste' ) ; }
-			catch (e)	{ alert( FCKLang.PasteErrorPaste ) ; }
+			try			{ if ( FCK.Paste() ) FCK.ExecuteNamedCommand( 'Paste', null, true ) ; }
+			catch (e)	{ alert(FCKLang.PasteErrorPaste) ; }
 			break ;
 		case 'Cut' :
-			try			{ FCK.ExecuteNamedCommand( 'Cut' ) ; }
-			catch (e)	{ alert( FCKLang.PasteErrorCut ) ; }
+			try			{ FCK.ExecuteNamedCommand( 'Cut', null, true ) ; }
+			catch (e)	{ alert(FCKLang.PasteErrorCut) ; }
 			break ;
 		case 'Copy' :
-			try			{ FCK.ExecuteNamedCommand( 'Copy' ) ; }
-			catch (e)	{ alert( FCKLang.PasteErrorCopy ) ; }
+			try			{ FCK.ExecuteNamedCommand( 'Copy', null, true ) ; }
+			catch (e)	{ alert(FCKLang.PasteErrorCopy) ; }
 			break ;
 			
 		// START iCM MODIFICATIONS
@@ -138,19 +138,15 @@
 // selected content if any.
 FCK.InsertHtml = function( html )
 {
+	html = FCKConfig.ProtectedSource.Protect( html ) ;
+	html = FCK.ProtectUrls( html ) ;
+
 	// Delete the actual selection.
 	var oSel = FCKSelection.Delete() ;
 	
-//	var oContainer	= oSel.getRangeAt(0).startContainer ;
-//	var iOffSet		= oSel.getRangeAt(0).startOffset ;
-	
 	// Get the first available range.
 	var oRange = oSel.getRangeAt(0) ;
 	
-//	var oRange = this.EditorDocument.createRange() ;
-//	oRange.setStart( oContainer, iOffSet ) ;
-//	oRange.setEnd( oContainer, iOffSet ) ;
-	
 	// Create a fragment with the input HTML.
 	var oFragment = oRange.createContextualFragment( html ) ;
 	
@@ -161,13 +157,9 @@
 	oRange.insertNode(oFragment) ;
 	
 	// Set the cursor after the inserted fragment.
-	oRange.setEndAfter( oLastNode ) ;
-	oRange.setStartAfter( oLastNode ) ;
+	FCKSelection.SelectNode( oLastNode ) ;
+	FCKSelection.Collapse( false ) ;
 	
-	oSel.removeAllRanges() ;
-	oSel = FCK.EditorWindow.getSelection() ;
-	oSel.addRange( oRange ) ;
-		
 	this.Focus() ;
 }
 
@@ -183,8 +175,8 @@
 	oRange.insertNode( element ) ;
 	
 	// Set the cursor after the inserted fragment.
-	oRange.setEndAfter( element ) ;
-	oRange.setStartAfter( element ) ;
+	FCKSelection.SelectNode( element ) ;
+	FCKSelection.Collapse( false ) ;
 
 	this.Focus() ;
 }
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck_2_ie.js 1.4.1.src/fckeditor/editor/_source/internals/fck_2_ie.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck_2_ie.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fck_2_ie.js	2006-09-03 13:05:03.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -48,23 +48,25 @@
 	if ( FCKConfig.ForcePasteAsPlainText )
 	{
 		FCK.PasteAsPlainText() ;	
-		return false ;
+		return ;
 	}
-	else if ( FCKConfig.AutoDetectPasteFromWord )
+
+	var sHTML = FCK.GetClipboardHTML() ;
+
+	if ( FCKConfig.AutoDetectPasteFromWord )
 	{
-		var sHTML = FCK.GetClipboardHTML() ;
-		var re = /<\w[^>]* class="?MsoNormal"?/gi ;
+		var re = /<\w[^>]*(( class="?MsoNormal"?)|(="mso-))/gi ;
 		if ( re.test( sHTML ) )
 		{
 			if ( confirm( FCKLang["PasteWordConfirm"] ) )
 			{
 				FCK.PasteFromWord() ;
-				return false ;
+				return ;
 			}
 		}
 	}
-	else
-		return true ;
+
+	FCK.InsertHtml( sHTML ) ;	
 }
 
 FCK.PasteAsPlainText = function()
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck_2.js 1.4.1.src/fckeditor/editor/_source/internals/fck_2.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck_2.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fck_2.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -22,11 +22,11 @@
 // wich named commands must be handled separately.
 FCK.RedirectNamedCommands = new Object() ;
 
-FCK.ExecuteNamedCommand = function( commandName, commandParameter )
+FCK.ExecuteNamedCommand = function( commandName, commandParameter, noRedirect )
 {
 	FCKUndo.SaveUndoStep() ;
 
-	if ( FCK.RedirectNamedCommands[ commandName ] != null )
+	if ( !noRedirect && FCK.RedirectNamedCommands[ commandName ] != null )
 		FCK.ExecuteRedirectedNamedCommand( commandName, commandParameter ) ;
 	else
 	{
@@ -75,45 +75,6 @@
 	FCKDialog.OpenDialog( 'FCKDialog_Paste', FCKLang.PasteFromWord, 'dialog/fck_paste.html', 400, 330, 'Word' ) ;
 }
 
-// TODO: Wait Stable and remove this block.
-//FCK.CleanAndPaste = function( html )
-//{
-	// Remove all SPAN tags
-//	html = html.replace(/<\/?SPAN[^>]*>/gi, "" );
-
-//	html = html.replace(/<o:p>&nbsp;<\/o:p>/g, "") ;
-//	html = html.replace(/<o:p><\/o:p>/g, "") ;
-	
-	// Remove mso-xxx styles.
-//	html = html.replace( /mso-.[^:]:.[^;"]/g, "" ) ;
-	
-	// Remove Class attributes
-//	html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;
-	
-	// Remove Style attributes
-//	html = html.replace(/<(\w[^>]*) style="([^"]*)"([^>]*)/gi, "<$1$3") ;
-	
-	// Remove Lang attributes
-//	html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;
-	
-	// Remove XML elements and declarations
-//	html = html.replace(/<\\?\?xml[^>]*>/gi, "") ;
-	
-	// Remove Tags with XML namespace declarations: <o:p></o:p>
-//	html = html.replace(/<\/?\w+:[^>]*>/gi, "") ;
-	
-	// Replace the &nbsp;
-//	html = html.replace(/&nbsp;/, " " );
-	// Replace the &nbsp; from the beggining.
-//	html = html.replace(/^&nbsp;[\s\r\n]*/, ""); 
-	
-	// Transform <P> to <DIV>
-//	var re = new RegExp("(<P)([^>]*>.*?)(<\/P>)","gi") ;	// Different because of a IE 5.0 error
-//	html = html.replace( re, "<div$2</div>" ) ;
-	
-//	FCK.InsertHtml( html ) ;
-//}
-
 FCK.Preview = function()
 {
 	var iWidth	= FCKConfig.ScreenWidth * 0.8 ;
@@ -135,9 +96,10 @@
 		sHTML = 
 			FCKConfig.DocType +
 			'<html dir="' + FCKConfig.ContentLangDirection + '">' +
-			'<head><title>' + FCKLang.Preview + '</title>' +
-			'<link href="' + FCKConfig.EditorAreaCSS + '" rel="stylesheet" type="text/css" />' +
+			'<head>' +
 			FCK.TempBaseTag +
+			'<title>' + FCKLang.Preview + '</title>' +
+			FCK._GetEditorAreaStyleTags() +
 			'</head><body>' + 
 			FCK.GetXHTML() + 
 			'</body></html>' ;
@@ -147,33 +109,34 @@
 	oWindow.document.close();
 }
 
-FCK.SwitchEditMode = function()
+FCK.SwitchEditMode = function( noUndo )
 {
-	// Check if the actual mode is WYSIWYG.
-	var bWYSIWYG = ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ) ;
+	var bIsWysiwyg = ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ) ;
+	var sHtml ;
 	
-	// Display/Hide the TRs.
-	document.getElementById('eWysiwyg').style.display	= bWYSIWYG ? 'none' : '' ;
-	document.getElementById('eSource').style.display	= bWYSIWYG ? '' : 'none' ;
-
 	// Update the HTML in the view output to show.
-	if ( bWYSIWYG )
+	if ( bIsWysiwyg )
 	{
-		if ( FCKBrowserInfo.IsIE )
+		if ( !noUndo && FCKBrowserInfo.IsIE )
 			FCKUndo.SaveUndoStep() ;
-		document.getElementById('eSourceField').value = ( FCKConfig.EnableXHTML && FCKConfig.EnableSourceXHTML ? FCK.GetXHTML( FCKConfig.FormatSource ) : FCK.GetHTML( FCKConfig.FormatSource ) ) ;
+
+		sHtml = FCK.GetXHTML( FCKConfig.FormatSource ) ;
 	}
 	else
-		FCK.SetHTML( FCK.GetHTML(), true ) ;
+		sHtml = this.EditingArea.Textarea.value ;
 
-	// Updates the actual mode status.
-	FCK.EditMode = bWYSIWYG ? FCK_EDITMODE_SOURCE : FCK_EDITMODE_WYSIWYG ;
-	
-	// Update the toolbar.
-	FCKToolbarSet.RefreshModeState() ;
+	FCK.EditMode = bIsWysiwyg ? FCK_EDITMODE_SOURCE : FCK_EDITMODE_WYSIWYG ;
+
+	FCK.SetHTML( sHtml ) ;
+
+	if ( FCKBrowserInfo.IsGecko )
+		window.onresize() ;
 
 	// Set the Focus.
 	FCK.Focus() ;
+
+	// Update the toolbar (Running it directly causes IE to fail).
+	FCKTools.RunFunction( FCK.ToolbarSet.RefreshModeState, FCK.ToolbarSet ) ;
 }
 
 FCK.CreateElement = function( tag )
@@ -184,7 +147,7 @@
 
 FCK.InsertElementAndGetIt = function( e )
 {
-	e.setAttribute( '__FCKTempLabel', 1 ) ;
+	e.setAttribute( 'FCKTempLabel', 'true' ) ;
 	
 	this.InsertElement( e ) ;
 	
@@ -192,9 +155,9 @@
 	
 	for ( var i = 0 ; i < aEls.length ; i++ )
 	{
-		if ( aEls[i].getAttribute( '__FCKTempLabel' ) )
+		if ( aEls[i].getAttribute( 'FCKTempLabel' ) )
 		{
-			aEls[i].removeAttribute( '__FCKTempLabel' ) ;
+			aEls[i].removeAttribute( 'FCKTempLabel' ) ;
 			return aEls[i] ;
 		}
 	}
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckbrowserinfo.js 1.4.1.src/fckeditor/editor/_source/internals/fckbrowserinfo.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckbrowserinfo.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckbrowserinfo.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -11,22 +11,27 @@
  * "Support Open Source software. What about a donation today?"
  * 
  * File Name: fckbrowserinfo.js
- * 	Defines the FCKBrowserInfo object that hold some browser informations.
+ * 	Contains browser detection information.
  * 
  * File Authors:
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
  */
 
-var FCKBrowserInfo ;
+var s = navigator.userAgent.toLowerCase() ;
 
-if ( !( FCKBrowserInfo = NS.FCKBrowserInfo ) )
+var FCKBrowserInfo = 
 {
-	FCKBrowserInfo = NS.FCKBrowserInfo = new Object() ;
+	IsIE		: s.Contains('msie'),
+	IsIE7		: s.Contains('msie 7'),
+	IsGecko		: s.Contains('gecko/'),
+	IsSafari	: s.Contains('safari'),
+	IsOpera		: s.Contains('opera')
+}
 
-	var sAgent = navigator.userAgent.toLowerCase() ;
+FCKBrowserInfo.IsGeckoLike = FCKBrowserInfo.IsGecko || FCKBrowserInfo.IsSafari || FCKBrowserInfo.IsOpera ;
 
-	FCKBrowserInfo.IsIE			= ( sAgent.indexOf("msie") != -1 ) ;
-	FCKBrowserInfo.IsGecko		= !FCKBrowserInfo.IsIE ;
-	FCKBrowserInfo.IsSafari		= ( sAgent.indexOf("safari") != -1 ) ;
-	FCKBrowserInfo.IsNetscape	= ( sAgent.indexOf("netscape") != -1 ) ;
-}
+if ( FCKBrowserInfo.IsGecko )
+{
+	var sGeckoVersion = s.match( /gecko\/(\d+)/ )[1] ;
+	FCKBrowserInfo.IsGecko10 = sGeckoVersion < 20051111 ;	// Actually "10" refers to versions before Firefox 1.5, where Gecko 20051111 has been released.
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckcodeformatter.js 1.4.1.src/fckeditor/editor/_source/internals/fckcodeformatter.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckcodeformatter.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckcodeformatter.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -17,59 +17,80 @@
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
  */
 
-var FCKCodeFormatter ;
+var FCKCodeFormatter = new Object() ;
 
-if ( !( FCKCodeFormatter = NS.FCKCodeFormatter ) )
+FCKCodeFormatter.Init = function()
 {
-	FCKCodeFormatter = NS.FCKCodeFormatter = new Object() ;
-
-	FCKCodeFormatter.Regex = new Object() ;
+	var oRegex = this.Regex = new Object() ;
 
 	// Regex for line breaks.
-	FCKCodeFormatter.Regex.BlocksOpener = /\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|AREA|OPTION)[^\>]*\>/gi ;
-	FCKCodeFormatter.Regex.BlocksCloser = /\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|AREA|OPTION)[^\>]*\>/gi ;
+	oRegex.BlocksOpener = /\<(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi ;
+	oRegex.BlocksCloser = /\<\/(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|TH|AREA|OPTION)[^\>]*\>/gi ;
 
-	FCKCodeFormatter.Regex.NewLineTags	= /\<(BR|HR)[^\>]\>/gi ;
+	oRegex.NewLineTags	= /\<(BR|HR)[^\>]*\>/gi ;
 
-	FCKCodeFormatter.Regex.MainTags = /\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi ;
+	oRegex.MainTags = /\<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^\>]*\>/gi ;
 
-	FCKCodeFormatter.Regex.LineSplitter = /\s*\n+\s*/g ;
+	oRegex.LineSplitter = /\s*\n+\s*/g ;
 
 	// Regex for indentation.
-	FCKCodeFormatter.Regex.IncreaseIndent = /^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/\>]/i ;
-	FCKCodeFormatter.Regex.DecreaseIndent = /^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \>]/i ;
-	FCKCodeFormatter.Regex.FormatIndentatorRemove = new RegExp( FCKConfig.FormatIndentator ) ;
+	oRegex.IncreaseIndent = /^\<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/\>]/i ;
+	oRegex.DecreaseIndent = /^\<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \>]/i ;
+	oRegex.FormatIndentatorRemove = new RegExp( '^' + FCKConfig.FormatIndentator ) ;
+
+	oRegex.ProtectedTags = /(<PRE[^>]*>)([\s\S]*?)(<\/PRE>)/gi ;
+}
+
+FCKCodeFormatter._ProtectData = function( outer, opener, data, closer )
+{
+	return opener + '___FCKpd___' + FCKCodeFormatter.ProtectedData.AddItem( data ) + closer ;
+}
+
+FCKCodeFormatter.Format = function( html )
+{
+	if ( !this.Regex )
+		this.Init() ;
 
-	FCKCodeFormatter.Format = function( html )
+	// Protected content that remain untouched during the
+	// process go in the following array.
+	FCKCodeFormatter.ProtectedData = new Array() ;
+	
+	var sFormatted = html.replace( this.Regex.ProtectedTags, FCKCodeFormatter._ProtectData ) ;
+	
+	// Line breaks.
+	sFormatted		= sFormatted.replace( this.Regex.BlocksOpener, '\n$&' ) ; ;
+	sFormatted		= sFormatted.replace( this.Regex.BlocksCloser, '$&\n' ) ;
+	sFormatted		= sFormatted.replace( this.Regex.NewLineTags, '$&\n' ) ;
+	sFormatted		= sFormatted.replace( this.Regex.MainTags, '\n$&\n' ) ;
+
+	// Indentation.
+	var sIndentation = '' ;
+	
+	var asLines = sFormatted.split( this.Regex.LineSplitter ) ;
+	sFormatted = '' ;
+	
+	for ( var i = 0 ; i < asLines.length ; i++ )
 	{
-		// Line breaks.
-		var sFormatted	= html.replace( this.Regex.BlocksOpener, '\n$&' ) ; ;
-		sFormatted		= sFormatted.replace( this.Regex.BlocksCloser, '$&\n' ) ;
-		sFormatted		= sFormatted.replace( this.Regex.NewLineTags, '$&\n' ) ;
-		sFormatted		= sFormatted.replace( this.Regex.MainTags, '\n$&\n' ) ;
+		var sLine = asLines[i] ;
 		
-		// Indentation.
-		var sIndentation = '' ;
+		if ( sLine.length == 0 )
+			continue ;
 		
-		var asLines = sFormatted.split( this.Regex.LineSplitter ) ;
-		sFormatted = '' ;
-		
-		for ( var i = 0 ; i < asLines.length ; i++ )
-		{
-			var sLine = asLines[i] ;
-			
-			if ( sLine.length == 0 )
-				continue ;
-			
-			if ( this.Regex.DecreaseIndent.test( sLine ) )
-				sIndentation = sIndentation.replace( this.Regex.FormatIndentatorRemove, '' ) ;
-
-			sFormatted += sIndentation + sLine + '\n' ;
-			
-			if ( this.Regex.IncreaseIndent.test( sLine ) )
-				sIndentation += FCKConfig.FormatIndentator ;
-		}
+		if ( this.Regex.DecreaseIndent.test( sLine ) )
+			sIndentation = sIndentation.replace( this.Regex.FormatIndentatorRemove, '' ) ;
 
-		return sFormatted.trim() ;
+		sFormatted += sIndentation + sLine + '\n' ;
+		
+		if ( this.Regex.IncreaseIndent.test( sLine ) )
+			sIndentation += FCKConfig.FormatIndentator ;
 	}
+	
+	// Now we put back the protected data.
+	for ( var i = 0 ; i < FCKCodeFormatter.ProtectedData.length ; i++ )
+	{
+		var oRegex = new RegExp( '___FCKpd___' + i ) ;
+		sFormatted = sFormatted.replace( oRegex, FCKCodeFormatter.ProtectedData[i].replace( /\$/g, '$$$$' ) ) ;
+	}
+
+	return sFormatted.trim() ;
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckcommands.js 1.4.1.src/fckeditor/editor/_source/internals/fckcommands.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckcommands.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckcommands.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -37,6 +37,7 @@
 		case 'DocProps'		: oCommand = new FCKDialogCommand( 'DocProps'	, FCKLang.DocProps				, 'dialog/fck_docprops.html'	, 400, 390, FCKCommands.GetFullPageState ) ; break ;
 		case 'Templates'	: oCommand = new FCKDialogCommand( 'Templates'	, FCKLang.DlgTemplatesTitle		, 'dialog/fck_template.html'	, 380, 450 ) ; break ;
 		case 'Link'			: oCommand = new FCKDialogCommand( 'Link'		, FCKLang.DlgLnkWindowTitle		, 'dialog/fck_link.html'		, 400, 330, FCK.GetNamedCommandState, 'CreateLink' ) ; break ;
+		case 'Unlink'		: oCommand = new FCKUnlinkCommand() ; break ;
 		case 'Anchor'		: oCommand = new FCKDialogCommand( 'Anchor'		, FCKLang.DlgAnchorTitle		, 'dialog/fck_anchor.html'		, 370, 170 ) ; break ;
 		case 'BulletedList'	: oCommand = new FCKDialogCommand( 'BulletedList', FCKLang.BulletedListProp		, 'dialog/fck_listprop.html'	, 370, 170 ) ; break ;
 		case 'NumberedList'	: oCommand = new FCKDialogCommand( 'NumberedList', FCKLang.NumberedListProp		, 'dialog/fck_listprop.html'	, 370, 170 ) ; break ;
@@ -47,9 +48,9 @@
 
 		case 'Image'		: oCommand = new FCKDialogCommand( 'Image'		, FCKLang.DlgImgTitle			, 'dialog/fck_image.html'		, 450, 400 ) ; break ;
 		case 'Flash'		: oCommand = new FCKDialogCommand( 'Flash'		, FCKLang.DlgFlashTitle			, 'dialog/fck_flash.html'		, 450, 400 ) ; break ;
-		case 'SpecialChar'	: oCommand = new FCKDialogCommand( 'SpecialChar', FCKLang.DlgSpecialCharTitle	, 'dialog/fck_specialchar.html'	, 400, 300 ) ; break ;
+		case 'SpecialChar'	: oCommand = new FCKDialogCommand( 'SpecialChar', FCKLang.DlgSpecialCharTitle	, 'dialog/fck_specialchar.html'	, 400, 320 ) ; break ;
 		case 'Smiley'		: oCommand = new FCKDialogCommand( 'Smiley'		, FCKLang.DlgSmileyTitle		, 'dialog/fck_smiley.html'		, FCKConfig.SmileyWindowWidth, FCKConfig.SmileyWindowHeight ) ; break ;
-		case 'Table'		: oCommand = new FCKDialogCommand( 'Table'		, FCKLang.DlgTableTitle			, 'dialog/fck_table.html'		, 400, 250 ) ; break ;
+		case 'Table'		: oCommand = new FCKDialogCommand( 'Table'		, FCKLang.DlgTableTitle			, 'dialog/fck_table.html'		, 450, 250 ) ; break ;
 		case 'TableProp'	: oCommand = new FCKDialogCommand( 'Table'		, FCKLang.DlgTableTitle			, 'dialog/fck_table.html?Parent', 400, 250 ) ; break ;
 		case 'TableCellProp': oCommand = new FCKDialogCommand( 'TableCell'	, FCKLang.DlgCellTitle			, 'dialog/fck_tablecell.html'	, 500, 250 ) ; break ;
 		case 'UniversalKey'	: oCommand = new FCKDialogCommand( 'UniversalKey', FCKLang.UniversalKeyboard	, 'dialog/fck_universalkey.html', 415, 300 ) ; break ;
@@ -80,6 +81,7 @@
 		case 'TableDeleteCells'		: oCommand = new FCKTableCommand('TableDeleteCells') ; break ;
 		case 'TableMergeCells'		: oCommand = new FCKTableCommand('TableMergeCells') ; break ;
 		case 'TableSplitCell'		: oCommand = new FCKTableCommand('TableSplitCell') ; break ;
+		case 'TableDelete'			: oCommand = new FCKTableCommand('TableDelete') ; break ;
 
 		case 'Form'			: oCommand = new FCKDialogCommand( 'Form'		, FCKLang.Form			, 'dialog/fck_form.html'		, 380, 230 ) ; break ;
 		case 'Checkbox'		: oCommand = new FCKDialogCommand( 'Checkbox'	, FCKLang.Checkbox		, 'dialog/fck_checkbox.html'	, 380, 230 ) ; break ;
@@ -92,6 +94,7 @@
 		case 'ImageButton'	: oCommand = new FCKDialogCommand( 'ImageButton', FCKLang.ImageButton	, 'dialog/fck_image.html?ImageButton', 450, 400 ) ; break ;
 
 		case 'SpellCheck'	: oCommand = new FCKSpellCheckCommand() ; break ;
+		case 'FitWindow'	: oCommand = new FCKFitWindow() ; break ;
 
 		case 'Undo'	: oCommand = new FCKUndoCommand() ; break ;
 		case 'Redo'	: oCommand = new FCKRedoCommand() ; break ;
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckconfig.js 1.4.1.src/fckeditor/editor/_source/internals/fckconfig.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckconfig.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckconfig.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -19,12 +19,18 @@
 
 var FCKConfig = FCK.Config = new Object() ;
 
+/*
+	For the next major version (probably 3.0) we should move all this stuff to
+	another dedicated object and leave FCKConfig as a holder object for settings only).
+*/
+
 // Editor Base Path
 if ( document.location.protocol == 'file:' )
 {
-	FCKConfig.BasePath = document.location.pathname.substr(1) ;
+	FCKConfig.BasePath = unescape( document.location.pathname.substr(1) ) ;
 	FCKConfig.BasePath = FCKConfig.BasePath.replace( /\\/gi, '/' ) ;
 	FCKConfig.BasePath = 'file://' + FCKConfig.BasePath.substring(0,FCKConfig.BasePath.lastIndexOf('/')+1) ;
+	FCKConfig.FullBasePath = FCKConfig.BasePath ;
 }
 else
 {
@@ -87,10 +93,29 @@
 	}
 }
 
-FCKConfig.LoadPageConfig = function()
+function FCKConfig_LoadPageConfig()
 {
-	for ( var sKey in this.PageConfig )
-		FCKConfig[ sKey ] = this.PageConfig[ sKey ] ;
+	var oPageConfig = FCKConfig.PageConfig ;
+	for ( var sKey in oPageConfig )
+		FCKConfig[ sKey ] = oPageConfig[ sKey ] ;
+}
+
+function FCKConfig_PreProcess()
+{
+	var oConfig = FCKConfig ;
+	
+	// Force debug mode if fckdebug=true in the QueryString (main page).
+	if ( oConfig.AllowQueryStringDebug && (/fckdebug=true/i).test( window.top.location.search ) )
+		oConfig.Debug = true ;
+
+	// Certifies that the "PluginsPath" configuration ends with a slash.
+	if ( !oConfig.PluginsPath.endsWith('/') )
+		oConfig.PluginsPath += '/' ;
+
+	// EditorAreaCSS accepts an array of paths or a single path (as string).
+	// In the last case, transform it in an array.
+	if ( typeof( oConfig.EditorAreaCSS ) == 'string' )
+		oConfig.EditorAreaCSS = [ oConfig.EditorAreaCSS ] ;
 }
 
 // Define toolbar sets collection.
@@ -102,7 +127,7 @@
 
 FCKConfig.Plugins.Add = function( name, langs, path )
 {
-	FCKConfig.Plugins.Items.addItem( [name, langs, path] ) ;
+	FCKConfig.Plugins.Items.AddItem( [name, langs, path] ) ;
 }
 
 // FCKConfig.ProtectedSource: object that holds a collection of Regular 
@@ -113,7 +138,7 @@
 
 FCKConfig.ProtectedSource.Add = function( regexPattern )
 {
-	this.RegexEntries.addItem( regexPattern ) ;
+	this.RegexEntries.AddItem( regexPattern ) ;
 }
 
 FCKConfig.ProtectedSource.Protect = function( html )
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckcontextmenu_gecko.js 1.4.1.src/fckeditor/editor/_source/internals/fckcontextmenu_gecko.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckcontextmenu_gecko.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckcontextmenu_gecko.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,90 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fckcontextmenu_gecko.js
- * 	Context Menu operations. (Gecko specific implementations)
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-// The Context Menu CSS must be added to the parent document.
-FCKTools.AppendStyleSheet( window.parent.document, FCKConfig.SkinPath + 'fck_contextmenu.css' ) ;
-
-FCKContextMenu.Show = function( x, y )
-{
-	if ( ! this._Document )
-	{
-		this._Document = window.parent.document ;
-	}
-
-	// Create the context menu if needed.
-	if ( !this._IsLoaded ) 
-	{
-		this.Reload() ;
-		this._Div.style.zIndex = 10000 ;
-		this._Div.oncontextmenu = function() { return false ; }
-	}
-	
-	this.RefreshState() ;
-
-	// Get the editor area and editor frames positions.	
-	var oCoordsA = FCKTools.GetElementPosition( FCK.EditorWindow.frameElement ) ;
-	var oCoordsB = FCKTools.GetElementPosition( window.frameElement ) ;
-	
-	x += oCoordsA.X + oCoordsB.X ;
-	y += oCoordsA.Y + oCoordsB.Y ;
-
-	// Verifies if the context menu is completely visible.
-	var iXSpace = x + this._Div.offsetWidth - this._Div.ownerDocument.defaultView.innerWidth ;
-	var iYSpace = y + this._Div.offsetHeight - this._Div.ownerDocument.defaultView.innerHeight ;
-	
-	if ( iXSpace > 0 ) x -= this._Div.offsetWidth ;
-	if ( iYSpace > 0 ) y -= this._Div.offsetHeight ;
-	
-	// Set the context menu DIV in the specified location.
-	this._Div.style.left	= x + 'px' ;
-	this._Div.style.top		= y + 'px' ;
-
-	// Watch the "OnClick" event for all windows to close the Context Menu.
-	var oActualWindow = FCK.EditorWindow ;
-	while ( oActualWindow )
-	{
-		oActualWindow.document.addEventListener( 'click', FCKContextMenu._OnDocumentClick, false ) ;
-		if ( oActualWindow != oActualWindow.parent )
-			oActualWindow = oActualWindow.parent ;
-		else if ( oActualWindow.opener == null ) 
-			oActualWindow = oActualWindow.opener ;
-		else
-			break ;
-	}
-	
-	// Show it.
-	this._Div.style.visibility	= '' ;
-}
-
-FCKContextMenu._OnDocumentClick = function( event )
-{
-	var e = event.target ;
-	while ( e )
-	{
-		if ( e == FCKContextMenu._Div ) return ;
-		e = e.parentNode ;
-	}
-	FCKContextMenu.Hide() ;
-}
-
-FCKContextMenu.Hide = function()
-{
-	this._Div.style.visibility = 'hidden' ;
-	this._Div.style.left = this._Div.style.top = '1px' ;
-}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckcontextmenu_ie.js 1.4.1.src/fckeditor/editor/_source/internals/fckcontextmenu_ie.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckcontextmenu_ie.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckcontextmenu_ie.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,71 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fckcontextmenu_ie.js
- * 	Context Menu operations. (IE specific implementations)
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-function FCKContextMenu_OnContextMenu() { return false ; }
-
-FCKContextMenu.Show = function( x, y )
-{
-	// Create the Popup used to show the menu (this is a IE 5.5+ feature).
-	if ( ! this._Popup )
-	{
-		this._Popup = window.createPopup() ;
-		this._Document = this._Popup.document ;
-		this._Document.createStyleSheet( FCKConfig.SkinPath + 'fck_contextmenu.css' ) ;
-		this._Document.oncontextmenu = FCKContextMenu_OnContextMenu ;
-
-		aCleanupDocs[ aCleanupDocs.length ] = this._Document ;
-	}
-
-	// Create the context menu if needed.
-	if ( !this._IsLoaded )
-	{
-		this.Reload() ;
-		this._Div.style.visibility = '' ;
-	}
-
-	this.RefreshState() ;
-
-	// IE doens't get the offsetWidth and offsetHeight values if the element is not visible.
-	// So the Popup must be "shown" with no size to be able to get these values.
-	this._Popup.show( x, y, 0, 0 ) ;
-
-	// This was the previous solution. It works well to.
-	// So a temporary element is created to get this for us.
-	/*
-	if ( !this._DivCopy )
-	{
-		this._DivCopy = document.createElement( 'DIV' ) ;
-		this._DivCopy.className			= 'CM_ContextMenu' ;
-		this._DivCopy.style.position	= 'absolute' ;
-		this._DivCopy.style.visibility	= 'hidden' ;
-		document.body.appendChild( this._DivCopy );
-	}
-
-	this._DivCopy.innerHTML = this._Div.innerHTML ;
-	*/
-
-	// Show the Popup at the specified location.
-	this._Popup.show( x, y, this._Div.offsetWidth, this._Div.offsetHeight ) ;
-}
-
-FCKContextMenu.Hide = function()
-{
-	if ( this._Popup )
-		this._Popup.hide() ;
-}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck_contextmenu.js 1.4.1.src/fckeditor/editor/_source/internals/fck_contextmenu.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck_contextmenu.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/_source/internals/fck_contextmenu.js	2006-06-17 16:25:26.000000000 -0500
@@ -0,0 +1,287 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fck_contextmenu.js
+ * 	Defines the FCK.ContextMenu object that is responsible for all
+ * 	Context Menu operations in the editing area.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+FCK.ContextMenu = new Object() ;
+FCK.ContextMenu.Listeners = new Array() ;
+
+FCK.ContextMenu.RegisterListener = function( listener )
+{
+	if ( listener )
+		this.Listeners.push( listener ) ;
+}
+
+function FCK_ContextMenu_Init()
+{
+	var oInnerContextMenu = FCK.ContextMenu._InnerContextMenu = new FCKContextMenu( FCKBrowserInfo.IsIE ? window : window.parent, FCK.EditorWindow, FCKLang.Dir ) ;
+	oInnerContextMenu.OnBeforeOpen	= FCK_ContextMenu_OnBeforeOpen ;
+	oInnerContextMenu.OnItemClick	= FCK_ContextMenu_OnItemClick ;
+
+	// Get the registering function.
+	var oMenu = FCK.ContextMenu ;
+
+	// Register all configured context menu listeners.
+	for ( var i = 0 ; i < FCKConfig.ContextMenu.length ; i++ )
+		oMenu.RegisterListener( FCK_ContextMenu_GetListener( FCKConfig.ContextMenu[i] ) ) ;
+}
+
+function FCK_ContextMenu_GetListener( listenerName )
+{
+	switch ( listenerName )
+	{
+		case 'Generic' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				menu.AddItem( 'Cut'		, FCKLang.Cut	, 7, FCKCommands.GetCommand( 'Cut' ).GetState() == FCK_TRISTATE_DISABLED ) ;
+				menu.AddItem( 'Copy'	, FCKLang.Copy	, 8, FCKCommands.GetCommand( 'Copy' ).GetState() == FCK_TRISTATE_DISABLED ) ;
+				menu.AddItem( 'Paste'	, FCKLang.Paste	, 9, FCKCommands.GetCommand( 'Paste' ).GetState() == FCK_TRISTATE_DISABLED ) ;
+			}} ;
+
+		case 'Table' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				var bIsTable	= ( tagName == 'TABLE' ) ;
+				var bIsCell		= ( !bIsTable && FCKSelection.HasAncestorNode( 'TABLE' ) ) ;
+				
+				if ( bIsCell )
+				{
+					menu.AddSeparator() ;
+					var oItem = menu.AddItem( 'Cell'	, FCKLang.CellCM ) ;
+					oItem.AddItem( 'TableInsertCell'	, FCKLang.InsertCell, 58 ) ;
+					oItem.AddItem( 'TableDeleteCells'	, FCKLang.DeleteCells, 59 ) ;
+					oItem.AddItem( 'TableMergeCells'	, FCKLang.MergeCells, 60 ) ;
+					oItem.AddItem( 'TableSplitCell'		, FCKLang.SplitCell, 61 ) ;
+					oItem.AddSeparator() ;
+					oItem.AddItem( 'TableCellProp'		, FCKLang.CellProperties, 57 ) ;
+
+					menu.AddSeparator() ;
+					oItem = menu.AddItem( 'Row'			, FCKLang.RowCM ) ;
+					oItem.AddItem( 'TableInsertRow'		, FCKLang.InsertRow, 62 ) ;
+					oItem.AddItem( 'TableDeleteRows'	, FCKLang.DeleteRows, 63 ) ;
+					
+					menu.AddSeparator() ;
+					oItem = menu.AddItem( 'Column'		, FCKLang.ColumnCM ) ;
+					oItem.AddItem( 'TableInsertColumn'	, FCKLang.InsertColumn, 64 ) ;
+					oItem.AddItem( 'TableDeleteColumns'	, FCKLang.DeleteColumns, 65 ) ;
+				}
+
+				if ( bIsTable || bIsCell )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'TableDelete'			, FCKLang.TableDelete ) ;
+					menu.AddItem( 'TableProp'			, FCKLang.TableProperties, 39 ) ;
+				}
+			}} ;
+
+		case 'Link' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( FCK.GetNamedCommandState( 'Unlink' ) != FCK_TRISTATE_DISABLED )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'Link'	, FCKLang.EditLink		, 34 ) ;
+					menu.AddItem( 'Unlink'	, FCKLang.RemoveLink	, 35 ) ;
+				}
+			}} ;
+
+		case 'Image' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'IMG' && !tag.getAttribute( '_fckfakelement' ) )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'Image', FCKLang.ImageProperties, 37 ) ;
+				}
+			}} ;
+
+		case 'Anchor' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'IMG' && tag.getAttribute( '_fckanchor' ) )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'Anchor', FCKLang.AnchorProp, 36 ) ;
+				}
+			}} ;
+
+		case 'Flash' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'IMG' && tag.getAttribute( '_fckflash' ) )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'Flash', FCKLang.FlashProperties, 38 ) ;
+				}
+			}} ;
+
+		case 'Form' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( FCKSelection.HasAncestorNode('FORM') )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'Form', FCKLang.FormProp, 48 ) ;
+				}
+			}} ;
+
+		case 'Checkbox' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'INPUT' && tag.type == 'checkbox' )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'Checkbox', FCKLang.CheckboxProp, 49 ) ;
+				}
+			}} ;
+
+		case 'Radio' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'INPUT' && tag.type == 'radio' )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'Radio', FCKLang.RadioButtonProp, 50 ) ;
+				}
+			}} ;
+
+		case 'TextField' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'INPUT' && ( tag.type == 'text' || tag.type == 'password' ) )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'TextField', FCKLang.TextFieldProp, 51 ) ;
+				}
+			}} ;
+
+		case 'HiddenField' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'INPUT' && tag.type == 'hidden' )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'HiddenField', FCKLang.HiddenFieldProp, 56 ) ;
+				}
+			}} ;
+
+		case 'ImageButton' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'INPUT' && tag.type == 'image' )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'ImageButton', FCKLang.ImageButtonProp, 55 ) ;
+				}
+			}} ;
+
+		case 'Button' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'INPUT' && ( tag.type == 'button' || tag.type == 'submit' || tag.type == 'reset' ) )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'Button', FCKLang.ButtonProp, 54 ) ;
+				}
+			}} ;
+
+		case 'Select' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'SELECT' )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'Select', FCKLang.SelectionFieldProp, 53 ) ;
+				}
+			}} ;
+
+		case 'Textarea' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( tagName == 'TEXTAREA' )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'Textarea', FCKLang.TextareaProp, 52 ) ;
+				}
+			}} ;
+
+		case 'BulletedList' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( FCKSelection.HasAncestorNode('UL') )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'BulletedList', FCKLang.BulletedListProp, 27 ) ;
+				}
+			}} ;
+
+		case 'NumberedList' :
+			return {
+			AddItems : function( menu, tag, tagName )
+			{
+				if ( FCKSelection.HasAncestorNode('OL') )
+				{
+					menu.AddSeparator() ;
+					menu.AddItem( 'NumberedList', FCKLang.NumberedListProp, 26 ) ;
+				}
+			}} ;
+	}
+}
+
+function FCK_ContextMenu_OnBeforeOpen()
+{
+	// Update the UI.
+	FCK.Events.FireEvent( "OnSelectionChange" ) ;
+
+  	// Get the actual selected tag (if any).
+	var oTag, sTagName ;
+	
+	if ( oTag = FCKSelection.GetSelectedElement() )
+		sTagName = oTag.tagName ;
+
+	// Cleanup the current menu items.
+	var oMenu = FCK.ContextMenu._InnerContextMenu ;
+	oMenu.RemoveAllItems() ;
+
+	// Loop through the listeners.
+	var aListeners = FCK.ContextMenu.Listeners ;
+	for ( var i = 0 ; i < aListeners.length ; i++ )
+		aListeners[i].AddItems( oMenu, oTag, sTagName ) ;
+}
+
+function FCK_ContextMenu_OnItemClick( item )
+{
+	FCK.Focus() ;
+	FCKCommands.GetCommand( item.Name ).Execute() ;
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckcontextmenu.js 1.4.1.src/fckeditor/editor/_source/internals/fckcontextmenu.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckcontextmenu.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckcontextmenu.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,232 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fckcontextmenu.js
- * 	Defines the FCKContextMenu object that is responsible for all
- * 	Context Menu operations.
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-var FCKContextMenu = new Object() ;
-
-// This property is internally used to indicate that the context menu has been created.
-FCKContextMenu._IsLoaded = false ;
-
-// This method creates the context menu inside a DIV tag. Take a look at the end of this file for a sample output.
-FCKContextMenu.Reload = function()
-{
-	// Create the Main DIV that holds the Context Menu.
-	this._Div = this._Document.createElement( 'DIV' ) ;
-	this._Div.className			= 'CM_ContextMenu' ;
-	this._Div.style.position	= 'absolute' ;
-	this._Div.style.visibility	= 'hidden' ;
-	this._Document.body.appendChild( this._Div );
-
-	// Create the main table for the menu items.
-	var oTable = this._Document.createElement( 'TABLE' ) ;
-	oTable.cellSpacing = 0 ;
-	oTable.cellPadding = 0 ;
-	oTable.border = 0 ;
-	this._Div.appendChild( oTable ) ;
-
-	// Load all configured groups.
-	this.Groups = new Object() ;
-	
-	for ( var i = 0 ; i < FCKConfig.ContextMenu.length ; i++ )
-	{
-		var sGroup = FCKConfig.ContextMenu[i] ;
-		this.Groups[ sGroup ] = this._GetGroup( sGroup ) ;
-		this.Groups[ sGroup ].CreateTableRows( oTable ) ;
-	}
-
-	this._IsLoaded = true ;
-}
-
-FCKContextMenu._GetGroup = function( groupName )
-{
-	var oGroup ;
-
-	switch ( groupName )
-	{
-		case 'Generic' :
-			// Generic items that are always available.
-			oGroup = new FCKContextMenuGroup() ;
-
-			oGroup.Add( new FCKContextMenuItem( this, 'Cut'		, FCKLang.Cut	, true ) ) ;
-			oGroup.Add( new FCKContextMenuItem( this, 'Copy'	, FCKLang.Copy	, true ) ) ;
-			oGroup.Add( new FCKContextMenuItem( this, 'Paste'	, FCKLang.Paste	, true ) ) ;
-
-			break ;
-
-		case 'Link' :
-			oGroup = new FCKContextMenuGroup() ;
-
-			oGroup.Add( new FCKContextMenuSeparator() ) ;
-			oGroup.Add( new FCKContextMenuItem( this, 'Link'	, FCKLang.EditLink	, true ) ) ;
-			oGroup.Add( new FCKContextMenuItem( this, 'Unlink'	, FCKLang.RemoveLink, true ) ) ;
-
-			break ;
-
-		case 'TableCell' :
-			oGroup = new FCKContextMenuGroup() ;
-
-			oGroup.Add( new FCKContextMenuSeparator() ) ;
-			oGroup.Add( new FCKContextMenuItem( this, 'TableInsertRow'		, FCKLang.InsertRow, true ) ) ;
-			oGroup.Add( new FCKContextMenuItem( this, 'TableDeleteRows'		, FCKLang.DeleteRows, true ) ) ;
-			oGroup.Add( new FCKContextMenuSeparator() ) ;
-			oGroup.Add( new FCKContextMenuItem( this, 'TableInsertColumn'	, FCKLang.InsertColumn, true ) ) ;
-			oGroup.Add( new FCKContextMenuItem( this, 'TableDeleteColumns'	, FCKLang.DeleteColumns, true ) ) ;
-			oGroup.Add( new FCKContextMenuSeparator() ) ;
-			oGroup.Add( new FCKContextMenuItem( this, 'TableInsertCell'		, FCKLang.InsertCell, true ) ) ;
-			oGroup.Add( new FCKContextMenuItem( this, 'TableDeleteCells'	, FCKLang.DeleteCells, true ) ) ;
-			oGroup.Add( new FCKContextMenuItem( this, 'TableMergeCells'		, FCKLang.MergeCells, true ) ) ;
-			oGroup.Add( new FCKContextMenuItem( this, 'TableSplitCell'		, FCKLang.SplitCell, true ) ) ;
-			oGroup.Add( new FCKContextMenuSeparator() ) ;
-			oGroup.Add( new FCKContextMenuItem( this, 'TableCellProp'		, FCKLang.CellProperties, true ) ) ;
-			oGroup.Add( new FCKContextMenuItem( this, 'TableProp'			, FCKLang.TableProperties, true ) ) ;
-
-			break ;
-
-		case 'Table' :
-			return new FCKContextMenuGroup( true, this, 'Table', FCKLang.TableProperties, true ) ;
-
-		case 'Image' :
-			return new FCKContextMenuGroup( true, this, 'Image', FCKLang.ImageProperties, true ) ;
-
-		case 'Flash' :
-			return new FCKContextMenuGroup( true, this, 'Flash', FCKLang.FlashProperties, true ) ;
-
-		case 'Form' :
-			return new FCKContextMenuGroup( true, this, 'Form', FCKLang.FormProp, true ) ;
-
-		case 'Checkbox' :
-			return new FCKContextMenuGroup( true, this, 'Checkbox', FCKLang.CheckboxProp, true ) ;
-
-		case 'Radio' :
-			return new FCKContextMenuGroup( true, this, 'Radio', FCKLang.RadioButtonProp, true ) ;
-
-		case 'TextField' :
-			return new FCKContextMenuGroup( true, this, 'TextField', FCKLang.TextFieldProp, true ) ;
-
-		case 'HiddenField' :
-			return new FCKContextMenuGroup( true, this, 'HiddenField', FCKLang.HiddenFieldProp, true ) ;
-
-		case 'ImageButton' :
-			return new FCKContextMenuGroup( true, this, 'ImageButton', FCKLang.ImageButtonProp, true ) ;
-
-		case 'Button' :
-			return new FCKContextMenuGroup( true, this, 'Button', FCKLang.ButtonProp, true ) ;
-
-		case 'Select' :
-			return new FCKContextMenuGroup( true, this, 'Select', FCKLang.SelectionFieldProp, true ) ;
-
-		case 'Textarea' :
-			return new FCKContextMenuGroup( true, this, 'Textarea', FCKLang.TextareaProp, true ) ;
-
-		case 'BulletedList' :
-			return new FCKContextMenuGroup( true, this, 'BulletedList', FCKLang.BulletedListProp, true ) ;
-
-		case 'NumberedList' :
-			return new FCKContextMenuGroup( true, this, 'NumberedList', FCKLang.NumberedListProp, true ) ;
-
-		case 'Anchor' :
-			return new FCKContextMenuGroup( true, this, 'Anchor', FCKLang.AnchorProp, true ) ;
-	}
-	
-	return oGroup ;
-}
-
-FCKContextMenu.RefreshState = function()
-{
-  	// Get the actual selected tag (if any).
-	var oTag = FCKSelection.GetSelectedElement() ;
-	var sTagName ;
-
-	if ( oTag )
-		sTagName = oTag.tagName ;
-
-	// Set items visibility.
-
-//	var bIsAnchor = ( sTagName == 'A' && oTag.name.length > 0 && oTag.href.length == 0 ) ;
-
-//	if ( this.Groups['Link'] )			this.Groups['Link'].SetVisible( !bIsAnchor && FCK.GetNamedCommandState( 'Unlink' ) != FCK_TRISTATE_DISABLED ) ;
-	if ( this.Groups['Link'] )			this.Groups['Link'].SetVisible( FCK.GetNamedCommandState( 'Unlink' ) != FCK_TRISTATE_DISABLED ) ;
-
-	if ( this.Groups['TableCell'] )		this.Groups['TableCell'].SetVisible( sTagName != 'TABLE' && FCKSelection.HasAncestorNode('TABLE') ) ;
-	if ( this.Groups['Table'] )			this.Groups['Table'].SetVisible( sTagName == 'TABLE' ) ;
-	
-	if ( this.Groups['Image'] )			this.Groups['Image'].SetVisible( sTagName == 'IMG' && !oTag.getAttribute('_fckfakelement') ) ;
-	if ( this.Groups['Flash'] )			this.Groups['Flash'].SetVisible( sTagName == 'IMG' && oTag.getAttribute('_fckflash') ) ;
-	if ( this.Groups['Anchor'] )		this.Groups['Anchor'].SetVisible( sTagName == 'IMG' && oTag.getAttribute('_fckanchor') ) ;
-
-	if ( this.Groups['BulletedList'] )	this.Groups['BulletedList'].SetVisible( FCKSelection.HasAncestorNode('UL') ) ;
-	if ( this.Groups['NumberedList'] )	this.Groups['NumberedList'].SetVisible( FCKSelection.HasAncestorNode('OL') ) ;
-
-	if ( this.Groups['Select'] )		this.Groups['Select'].SetVisible( sTagName == 'SELECT' ) ;
-	if ( this.Groups['Textarea'] )		this.Groups['Textarea'].SetVisible( sTagName == 'TEXTAREA' ) ;
-	if ( this.Groups['Form'] )			this.Groups['Form'].SetVisible( FCKSelection.HasAncestorNode('FORM') ) ;
-	if ( this.Groups['Checkbox'] )		this.Groups['Checkbox'].SetVisible(		sTagName == 'INPUT' && oTag.type == 'checkbox' ) ;
-	if ( this.Groups['Radio'] )			this.Groups['Radio'].SetVisible(		sTagName == 'INPUT' && oTag.type == 'radio' ) ;
-	if ( this.Groups['TextField'] )		this.Groups['TextField'].SetVisible(	sTagName == 'INPUT' && ( oTag.type == 'text' || oTag.type == 'password' ) ) ;
-	if ( this.Groups['HiddenField'] )	this.Groups['HiddenField'].SetVisible(	sTagName == 'INPUT' && oTag.type == 'hidden' ) ;
-	if ( this.Groups['ImageButton'] )	this.Groups['ImageButton'].SetVisible(	sTagName == 'INPUT' && oTag.type == 'image' ) ;
-	if ( this.Groups['Button'] )		this.Groups['Button'].SetVisible(		sTagName == 'INPUT' && ( oTag.type == 'button' || oTag.type == 'submit' || oTag.type == 'reset' ) ) ;
-
-	// Refresh the state of all visible items (active/disactive)
-	for ( var o in this.Groups )
-	{
-		this.Groups[o].RefreshState() ;
-	}
-}
-
-/*
-Sample Context Menu Output
------------------------------------------
-<div class="CM_ContextMenu">
-	<table cellSpacing="0" cellPadding="0" border="0">
-		<tr class="CM_Disabled">
-			<td class="CM_Icon"><img alt="" src="icons/cut.gif" width="21" height="20" unselectable="on"></td>
-			<td class="CM_Label" unselectable="on">Cut</td>
-		</tr>
-		<tr class="CM_Disabled">
-			<td class="CM_Icon"><img height="20" alt="" src="icons/copy.gif" width="21"></td>
-			<td class="CM_Label">Copy</td>
-		</tr>
-		<tr class="CM_Option" onmouseover="OnOver(this);" onmouseout="OnOut(this);">
-			<td class="CM_Icon"><img height="20" alt="" src="icons/paste.gif" width="21"></td>
-			<td class="CM_Label">Paste</td>
-		</tr>
-		<tr class="CM_Separator">
-			<td class="CM_Icon"></td>
-			<td class="CM_Label"><div></div></td>
-		</tr>
-		<tr class="CM_Option" onmouseover="OnOver(this);" onmouseout="OnOut(this);">
-			<td class="CM_Icon"><img height="20" alt="" src="icons/print.gif" width="21"></td>
-			<td class="CM_Label">Print</td>
-		</tr>
-		<tr class="CM_Separator">
-			<td class="CM_Icon"></td>
-			<td class="CM_Label"><div></div></td>
-		</tr>
-		<tr class="CM_Option" onmouseover="OnOver(this);" onmouseout="OnOut(this);">
-			<td class="CM_Icon"></td>
-			<td class="CM_Label">Do Something</td>
-		</tr>
-		<tr class="CM_Option" onmouseover="OnOver(this);" onmouseout="OnOut(this);">
-			<td class="CM_Icon"></td>
-			<td class="CM_Label">Just Testing</td>
-		</tr>
-	</table>
-</div>
-*/
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckcoreextensions.js 1.4.1.src/fckeditor/editor/_source/internals/fckcoreextensions.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckcoreextensions.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckcoreextensions.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,92 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fckcoreextensions.js
- * 	Some extensions to the Javascript Core.
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-// Extends the Array object, creating a "addItem" method on it.
-Array.prototype.addItem = function( item )
-{
-	var i = this.length ;
-	this[ i ] = item ;
-	return i ;
-}
-
-Array.prototype.indexOf = function( value )
-{
-	for ( var i = 0 ; i < this.length ; i++ )
-	{
-		if ( this[i] == value )
-			return i ;
-	}
-	return -1 ;
-}
-
-String.prototype.startsWith = function( value )
-{
-	return ( this.substr( 0, value.length ) == value ) ;
-}
-
-// Extends the String object, creating a "endsWith" method on it.
-String.prototype.endsWith = function( value, ignoreCase )
-{
-	var L1 = this.length ;
-	var L2 = value.length ;
-	
-	if ( L2 > L1 )
-		return false ;
-
-	if ( ignoreCase )
-	{
-		var oRegex = new RegExp( value + '$' , 'i' ) ;
-		return oRegex.test( this ) ;
-	}
-	else
-		return ( L2 == 0 || this.substr( L1 - L2, L2 ) == value ) ;
-}
-
-String.prototype.remove = function( start, length )
-{
-	var s = '' ;
-	
-	if ( start > 0 )
-		s = this.substring( 0, start ) ;
-	
-	if ( start + length < this.length )
-		s += this.substring( start + length , this.length ) ;
-		
-	return s ;
-}
-
-String.prototype.trim = function()
-{
-	return this.replace( /(^\s*)|(\s*$)/g, '' ) ;
-}
-
-String.prototype.ltrim = function()
-{
-	return this.replace( /^\s*/g, '' ) ;
-}
-
-String.prototype.rtrim = function()
-{
-	return this.replace( /\s*$/g, '' ) ;
-}
-
-String.prototype.replaceNewLineChars = function( replacement )
-{
-	return this.replace( /\n/g, replacement ) ;
-}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckdebug.js 1.4.1.src/fckeditor/editor/_source/internals/fckdebug.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckdebug.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckdebug.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -19,21 +19,59 @@
 
 var FCKDebug = new Object() ;
 
-if ( FCKConfig.Debug )
+FCKDebug.Output = function( message, color, noParse )
 {
-	FCKDebug.Output = function( message, color )
-	{
-		if ( ! FCKConfig.Debug ) return ;
-		
-		if ( message != null && isNaN( message ) )
-			message = message.replace(/</g, "&lt;") ;
+	if ( ! FCKConfig.Debug ) return ;
+	
+	if ( !noParse && message != null && isNaN( message ) )
+		message = message.replace(/</g, "&lt;") ;
 
-		if ( !this.DebugWindow || this.DebugWindow.closed )
-			this.DebugWindow = window.open( 'fckdebug.html', 'FCKeditorDebug', 'menubar=no,scrollbars=no,resizable=yes,location=no,toolbar=no,width=600,height=500', true ) ;
-		
-		if ( this.DebugWindow.Output)
+	if ( !this.DebugWindow || this.DebugWindow.closed )
+		this.DebugWindow = window.open( FCKConfig.BasePath + 'fckdebug.html', 'FCKeditorDebug', 'menubar=no,scrollbars=no,resizable=yes,location=no,toolbar=no,width=600,height=500', true ) ;
+	
+	if ( this.DebugWindow && this.DebugWindow.Output)
+	{
+		try 
+		{
 			this.DebugWindow.Output( message, color ) ;
+		} 
+		catch ( e ) {}	 // Ignore errors
 	}
 }
-else
-	FCKDebug.Output = function() {}
+
+FCKDebug.OutputObject = function( anyObject, color )
+{
+	if ( ! FCKConfig.Debug ) return ;
+
+	var message ;
+	
+	if ( anyObject != null ) 
+	{
+		message = 'Properties of: ' + anyObject + '</b><blockquote>' ;
+		
+		for (var prop in anyObject)
+		{
+			try 
+			{
+				var sVal = anyObject[ prop ] ? anyObject[ prop ] + '' : '[null]' ;
+				message += '<b>' + prop + '</b> : ' + sVal.replace(/</g, '&lt;') + '<br>' ;
+			} 
+			catch (e)
+			{
+				try
+				{
+					message += '<b>' + prop + '</b> : [' + typeof( anyObject[ prop ] ) + ']<br>' ;
+				}
+				catch (e)
+				{
+					message += '<b>' + prop + '</b> : [-error-]<br>' ;
+				}
+			}
+		}
+
+		message += '</blockquote><b>' ; 
+	} else
+		message = 'OutputObject : Object is "null".' ;
+		
+	FCKDebug.Output( message, color, true ) ;
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckdialog_gecko.js 1.4.1.src/fckeditor/editor/_source/internals/fckdialog_gecko.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckdialog_gecko.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckdialog_gecko.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -32,7 +32,17 @@
 	if ( !parentWindow )
 		parentWindow = window ;
 	
+	FCKFocusManager.Lock() ;
+	
 	var oWindow = parentWindow.open( '', 'FCKeditorDialog_' + dialogName, sOption, true ) ;
+	
+	if ( !oWindow )
+	{
+		alert( FCKLang.DialogBlocked ) ;
+		FCKFocusManager.Unlock() ;
+		return ;
+	}
+		
 	oWindow.moveTo( iLeft, iTop ) ;
 	oWindow.resizeTo( dialogWidth, dialogHeight ) ;
 	oWindow.focus() ;
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckdialog_ie.js 1.4.1.src/fckeditor/editor/_source/internals/fckdialog_ie.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckdialog_ie.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckdialog_ie.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -22,5 +22,12 @@
 	if ( !parentWindow )
 		parentWindow = window ;
 
-	parentWindow.showModalDialog( pageUrl, dialogInfo, "dialogWidth:" + dialogWidth + "px;dialogHeight:" + dialogHeight + "px;help:no;scroll:no;status:no") ;
+	FCKFocusManager.Lock() ;
+	
+	var oReturn = parentWindow.showModalDialog( pageUrl, dialogInfo, "dialogWidth:" + dialogWidth + "px;dialogHeight:" + dialogHeight + "px;help:no;scroll:no;status:no") ;
+	
+	if ( !oReturn )
+		alert( FCKLang.DialogBlocked ) ;	
+
+	FCKFocusManager.Unlock() ;
 }
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckdialog.js 1.4.1.src/fckeditor/editor/_source/internals/fckdialog.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckdialog.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckdialog.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckdocumentprocessor.js 1.4.1.src/fckeditor/editor/_source/internals/fckdocumentprocessor.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckdocumentprocessor.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckdocumentprocessor.js	2006-09-03 13:05:03.000000000 -0500
@@ -0,0 +1,230 @@
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckdocumentprocessor.js
+ * 	Advanced document processors.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKDocumentProcessor = new Object() ;
+FCKDocumentProcessor._Items = new Array() ;
+
+FCKDocumentProcessor.AppendNew = function()
+{
+	var oNewItem = new Object() ;
+	this._Items.AddItem( oNewItem ) ;
+	return oNewItem ;
+}
+
+FCKDocumentProcessor.Process = function( document )
+{
+	var oProcessor, i = 0 ;
+	while( ( oProcessor = this._Items[i++] ) )
+		oProcessor.ProcessDocument( document ) ;
+}
+
+var FCKDocumentProcessor_CreateFakeImage = function( fakeClass, realElement )
+{
+	var oImg = FCK.EditorDocument.createElement( 'IMG' ) ;
+	oImg.className = fakeClass ;
+	oImg.src = FCKConfig.FullBasePath + 'images/spacer.gif' ;
+	oImg.setAttribute( '_fckfakelement', 'true', 0 ) ;
+	oImg.setAttribute( '_fckrealelement', FCKTempBin.AddElement( realElement ), 0 ) ;
+	return oImg ;
+}
+
+// Link Anchors
+var FCKAnchorsProcessor = FCKDocumentProcessor.AppendNew() ;
+FCKAnchorsProcessor.ProcessDocument = function( document )
+{
+	var aLinks = document.getElementsByTagName( 'A' ) ;
+
+	var oLink ;
+	var i = aLinks.length - 1 ;
+	while ( i >= 0 && ( oLink = aLinks[i--] ) )
+	{
+		// If it is anchor.
+		if ( oLink.name.length > 0 && ( !oLink.getAttribute('href') || oLink.getAttribute('href').length == 0 ) )
+		{
+			var oImg = FCKDocumentProcessor_CreateFakeImage( 'FCK__Anchor', oLink.cloneNode(true) ) ;
+			oImg.setAttribute( '_fckanchor', 'true', 0 ) ;
+			
+			oLink.parentNode.insertBefore( oImg, oLink ) ;
+			oLink.parentNode.removeChild( oLink ) ;
+		}
+	}
+}
+
+// Page Breaks
+var FCKPageBreaksProcessor = FCKDocumentProcessor.AppendNew() ;
+FCKPageBreaksProcessor.ProcessDocument = function( document )
+{
+	var aDIVs = document.getElementsByTagName( 'DIV' ) ;
+
+	var eDIV ;
+	var i = aDIVs.length - 1 ;
+	while ( i >= 0 && ( eDIV = aDIVs[i--] ) )
+	{
+		if ( eDIV.style.pageBreakAfter == 'always' && eDIV.childNodes.length == 1 && eDIV.childNodes[0].style && eDIV.childNodes[0].style.display == 'none' )
+		{
+			var oFakeImage = FCKDocumentProcessor_CreateFakeImage( 'FCK__PageBreak', eDIV.cloneNode(true) ) ;
+			
+			eDIV.parentNode.insertBefore( oFakeImage, eDIV ) ;
+			eDIV.parentNode.removeChild( eDIV ) ;
+		}
+	}
+/*
+	var aCenters = document.getElementsByTagName( 'CENTER' ) ;
+
+	var oCenter ;
+	var i = aCenters.length - 1 ;
+	while ( i >= 0 && ( oCenter = aCenters[i--] ) )
+	{
+		if ( oCenter.style.pageBreakAfter == 'always' && oCenter.innerHTML.trim().length == 0 )
+		{
+			var oFakeImage = FCKDocumentProcessor_CreateFakeImage( 'FCK__PageBreak', oCenter.cloneNode(true) ) ;
+			
+			oCenter.parentNode.insertBefore( oFakeImage, oCenter ) ;
+			oCenter.parentNode.removeChild( oCenter ) ;
+		}
+	}
+*/
+}
+
+// Flash Embeds.
+var FCKFlashProcessor = FCKDocumentProcessor.AppendNew() ;
+FCKFlashProcessor.ProcessDocument = function( document )
+{
+	/*
+	Sample code:
+	This is some <embed src="/UserFiles/Flash/Yellow_Runners.swf"></embed><strong>sample text</strong>. You are&nbsp;<a name="fred"></a> using <a href="http://www.fckeditor.net/">FCKeditor</a>.
+	*/
+
+	var aEmbeds = document.getElementsByTagName( 'EMBED' ) ;
+
+	var oEmbed ;
+	var i = aEmbeds.length - 1 ;
+	while ( i >= 0 && ( oEmbed = aEmbeds[i--] ) )
+	{
+		if ( oEmbed.src.endsWith( '.swf', true ) )
+		{
+			var oCloned = oEmbed.cloneNode( true ) ;
+			
+			// On IE, some properties are not getting clonned properly, so we 
+			// must fix it. Thanks to Alfonso Martinez.
+			if ( FCKBrowserInfo.IsIE )
+			{
+				var oAtt ;
+				if ( oAtt = oEmbed.getAttribute( 'scale' ) ) oCloned.setAttribute( 'scale', oAtt ) ;
+				if ( oAtt = oEmbed.getAttribute( 'play' ) ) oCloned.setAttribute( 'play', oAtt ) ;
+				if ( oAtt = oEmbed.getAttribute( 'loop' ) ) oCloned.setAttribute( 'loop', oAtt ) ;
+				if ( oAtt = oEmbed.getAttribute( 'menu' ) ) oCloned.setAttribute( 'menu', oAtt ) ;
+				if ( oAtt = oEmbed.getAttribute( 'wmode' ) ) oCloned.setAttribute( 'wmode', oAtt ) ;
+				if ( oAtt = oEmbed.getAttribute( 'quality' ) ) oCloned.setAttribute( 'quality', oAtt ) ;
+			}
+		
+			var oImg = FCKDocumentProcessor_CreateFakeImage( 'FCK__Flash', oCloned ) ;
+			oImg.setAttribute( '_fckflash', 'true', 0 ) ;
+			
+			FCKFlashProcessor.RefreshView( oImg, oEmbed ) ;
+
+			oEmbed.parentNode.insertBefore( oImg, oEmbed ) ;
+			oEmbed.parentNode.removeChild( oEmbed ) ;
+
+//			oEmbed.setAttribute( '_fcktemp', 'true', 0) ;
+//			oEmbed.style.display = 'none' ;
+//			oEmbed.hidden = true ;
+		}
+	}
+}
+
+FCKFlashProcessor.RefreshView = function( placholderImage, originalEmbed )
+{
+	if ( originalEmbed.width > 0 )
+		placholderImage.style.width = FCKTools.ConvertHtmlSizeToStyle( originalEmbed.width ) ;
+		
+	if ( originalEmbed.height > 0 )
+		placholderImage.style.height = FCKTools.ConvertHtmlSizeToStyle( originalEmbed.height ) ;
+}
+
+FCK.GetRealElement = function( fakeElement )
+{
+	var e = FCKTempBin.Elements[ fakeElement.getAttribute('_fckrealelement') ] ;
+
+	if ( fakeElement.getAttribute('_fckflash') )
+	{
+		if ( fakeElement.style.width.length > 0 )
+				e.width = FCKTools.ConvertStyleSizeToHtml( fakeElement.style.width ) ;
+		
+		if ( fakeElement.style.height.length > 0 )
+				e.height = FCKTools.ConvertStyleSizeToHtml( fakeElement.style.height ) ;
+	}
+	
+	return e ;
+}
+
+// START iCM MODIFICATIONS
+/*
+var FCKTablesProcessor = FCKDocumentProcessor.AppendNew() ;
+FCKTablesProcessor.ProcessDocument = function( document )
+{
+	FCKTablesProcessor.CheckTablesNesting( document ) ;
+}
+
+// Ensure that tables are not incorrectly nested within P, H1, H2, etc tags
+FCKTablesProcessor.CheckTablesNesting = function( document )
+{
+	var aTables = document.getElementsByTagName( "TABLE" ) ;
+	var oParentNode ;
+	
+	for ( var i=0; i<aTables.length; i++ )
+	{
+		FCKTablesProcessor.CheckTableNesting( aTables[i] ) ;
+	}
+}
+
+// Corrects nesting of the supplied table as necessary.
+// Also called by fck_table.html to check that a newly inserted table is correctly nested.
+FCKTablesProcessor.CheckTableNesting = function( oTableNode )
+{
+	var oParentBlockNode = FCKTools.GetParentBlockNode( oTableNode.parentNode ) ;
+	
+	if ( oParentBlockNode && !FCKRegexLib.TableBlockElements.test( oParentBlockNode.nodeName ) )
+	{
+		// Create a new tag which holds the content of the child nodes located before the table
+		var oNode1 = FCK.EditorDocument.createElement( oParentBlockNode.tagName ) ;
+		var oFragment1 = FCKTools.GetDocumentFragment( oParentBlockNode, oParentBlockNode.firstChild, oTableNode, true, false, true ) ;
+		oNode1.appendChild( oFragment1 ) ;
+		FCKTools.SetElementAttributes( oNode1, oParentBlockNode.attributes ) ; 	// Transfer across any class attributes, etc
+	
+		// Create a new tag which holds the content of the child nodes located after the table
+		var oNode2 = FCK.EditorDocument.createElement( oParentBlockNode.tagName );
+		var oFragment2 = FCKTools.GetDocumentFragment( oParentBlockNode, oTableNode, oParentBlockNode.lastChild, false, true, true ) ;
+		oNode2.appendChild( oFragment2 ) ;
+		FCKTools.SetElementAttributes( oNode2, oParentBlockNode.attributes ) ; 	// Transfer across any class attributes, etc
+		
+		// Create a document fragment that contains the two new elements with the table element inbetween
+		var oNewNode = FCK.EditorDocument.createDocumentFragment() ;
+		if ( !FCKTools.NodeIsEmpty( oNode1 ) )
+			oNewNode.appendChild( oNode1 ) ;
+		oNewNode.appendChild( oTableNode ) ;
+		if ( !FCKTools.NodeIsEmpty( oNode2 ) )
+			oNewNode.appendChild( oNode2 ) ; 
+		
+		// Replace the existing parent node with the nodes in the fragment
+		oParentBlockNode.parentNode.replaceChild( oNewNode, oParentBlockNode ) ;
+	}
+}		
+*/
+// END iCM MODIFICATIONS
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck.js 1.4.1.src/fckeditor/editor/_source/internals/fck.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fck.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -25,42 +25,53 @@
 FCK.Status			= FCK_STATUS_NOTLOADED ;
 FCK.EditMode		= FCK_EDITMODE_WYSIWYG ;
 
-// There is a bug on IE... getElementById returns any META tag that has the
-// name set to the ID you are looking for. So the best way in to get the array
-// by names and look for the correct one.
-// As ASP.Net generates a ID that is different from the Name, we must also
-// look for the field based on the ID.
-
-var aElements = window.parent.document.getElementsByName( FCK.Name ) ;
-aElements[ aElements.length ] = window.parent.document.getElementById( FCK.Name ) ;
-var i = 0;
-while ( ( FCK.LinkedField = aElements[i++] ) )
+FCK.LoadLinkedFile = function()
 {
-	if ( FCK.LinkedField.tagName == 'INPUT' || FCK.LinkedField.tagName == 'TEXTAREA' )
-		break ;
+	// There is a bug on IE... getElementById returns any META tag that has the
+	// name set to the ID you are looking for. So the best way in to get the array
+	// by names and look for the correct one.
+	// As ASP.Net generates a ID that is different from the Name, we must also
+	// look for the field based on the ID (the first one is the ID).
+	
+	var oDocument = window.parent.document ;
+
+	var eLinkedField		= oDocument.getElementById( FCK.Name ) ;
+	var colElementsByName	= oDocument.getElementsByName( FCK.Name ) ;
+
+	var i = 0;
+	while ( eLinkedField || i == 0 )
+	{
+		if ( eLinkedField && ( eLinkedField.tagName == 'INPUT' || eLinkedField.tagName == 'TEXTAREA' ) )
+		{
+			FCK.LinkedField = eLinkedField ;
+			break ;
+		}
+		eLinkedField = colElementsByName[i++] ;
+	}
 }
+FCK.LoadLinkedFile() ;
 
 var FCKTempBin = new Object() ;
 FCKTempBin.Elements = new Array() ;
 
 FCKTempBin.AddElement = function( element )
 {
-	var iIndex = FCKTempBin.Elements.length ;
-	FCKTempBin.Elements[ iIndex ] = element ;
+	var iIndex = this.Elements.length ;
+	this.Elements[ iIndex ] = element ;
 	return iIndex ;
 }
 
 FCKTempBin.RemoveElement = function( index )
 {
-	var e = FCKTempBin.Elements[ index ] ;
-	FCKTempBin.Elements[ index ] = null ;
+	var e = this.Elements[ index ] ;
+	this.Elements[ index ] = null ;
 	return e ;
 }
 
 FCKTempBin.Reset = function()
 {
 	var i = 0 ;
-	while ( i < FCKTempBin.Elements.length )
-		FCKTempBin.Elements[ i++ ] == null ;
-	FCKTempBin.Elements.length = 0 ;
+	while ( i < this.Elements.length )
+		this.Elements[ i++ ] == null ;
+	this.Elements.length = 0 ;
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcklanguagemanager.js 1.4.1.src/fckeditor/editor/_source/internals/fcklanguagemanager.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcklanguagemanager.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fcklanguagemanager.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -17,6 +17,63 @@
  * File Authors:
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
  */
+var FCKLanguageManager = FCK.Language = new Object() ;
+
+FCKLanguageManager.AvailableLanguages = 
+{
+	'ar'		: 'Arabic',
+	'bg'		: 'Bulgarian',
+	'bn'		: 'Bengali/Bangla',
+	'bs'		: 'Bosnian',
+	'ca'		: 'Catalan',
+	'cs'		: 'Czech',
+	'da'		: 'Danish',
+	'de'		: 'German',
+	'el'		: 'Greek',
+	'en'		: 'English',
+	'en-au'		: 'English (Australia)',
+	'en-ca'		: 'English (Canadian)',
+	'en-uk'		: 'English (United Kingdom)',
+	'eo'		: 'Esperanto',
+	'es'		: 'Spanish',
+	'et'		: 'Estonian',
+	'eu'		: 'Basque',
+	'fa'		: 'Persian',
+	'fi'		: 'Finnish',
+	'fo'		: 'Faroese',
+	'fr'		: 'French',
+	'gl'		: 'Galician',
+	'he'		: 'Hebrew',
+	'hi'		: 'Hindi',
+	'hr'		: 'Croatian',
+	'hu'		: 'Hungarian',
+	'it'		: 'Italian',
+	'ja'		: 'Japanese',
+	'km'		: 'Khmer',
+	'ko'		: 'Korean',
+	'lt'		: 'Lithuanian',
+	'lv'		: 'Latvian',
+	'mn'		: 'Mongolian',
+	'ms'		: 'Malay',
+	'nl'		: 'Dutch',
+	'no'		: 'Norwegian',
+	'pl'		: 'Polish',
+	'pt'		: 'Portuguese (Portugal)',
+	'pt-br'		: 'Portuguese (Brazil)',
+	'ro'		: 'Romanian',
+	'ru'		: 'Russian',
+	'sk'		: 'Slovak',
+	'sl'		: 'Slovenian',
+	'sr'		: 'Serbian (Cyrillic)',
+	'sr-latn'	: 'Serbian (Latin)',
+	'sv'		: 'Swedish',
+	'th'		: 'Thai',
+	'tr'		: 'Turkish',
+	'uk'		: 'Ukrainian',
+	'vi'		: 'Vietnamese',
+	'zh'		: 'Chinese Traditional',
+	'zh-cn'		: 'Chinese Simplified'
+}
 
 FCKLanguageManager.GetActiveLanguage = function()
 {
@@ -55,19 +112,20 @@
 	return this.DefaultLanguage ;
 }
 
-FCKLanguageManager.TranslateElements = function( targetDocument, tag, propertyToSet )
+FCKLanguageManager.TranslateElements = function( targetDocument, tag, propertyToSet, encode )
 {
 	var e = targetDocument.getElementsByTagName(tag) ;
-
+	var sKey, s ;
 	for ( var i = 0 ; i < e.length ; i++ )
 	{
-		var sKey = e[i].getAttribute( 'fckLang' ) ;
-		
-		if ( sKey )
+		if ( sKey = e[i].getAttribute( 'fckLang' ) )
 		{
-			var s = FCKLang[ sKey ] ;
-			if ( s ) 
+			if ( s = FCKLang[ sKey ] )
+			{
+				if ( encode )
+					s = FCKTools.HTMLEncode( s ) ;
 				eval( 'e[i].' + propertyToSet + ' = s' ) ;
+			}
 		}
 	}
 }
@@ -77,19 +135,17 @@
 	this.TranslateElements( targetDocument, 'INPUT', 'value' ) ;
 	this.TranslateElements( targetDocument, 'SPAN', 'innerHTML' ) ;
 	this.TranslateElements( targetDocument, 'LABEL', 'innerHTML' ) ;
-	this.TranslateElements( targetDocument, 'OPTION', 'innerHTML' ) ;
+	this.TranslateElements( targetDocument, 'OPTION', 'innerHTML', true ) ;
 }
 
-if ( FCKLanguageManager.AvailableLanguages[ FCKConfig.DefaultLanguage ] )
-	FCKLanguageManager.DefaultLanguage = FCKConfig.DefaultLanguage ;
-else
-	FCKLanguageManager.DefaultLanguage = 'en' ;
-
-FCKLanguageManager.ActiveLanguage = new Object() ;
-FCKLanguageManager.ActiveLanguage.Code = FCKLanguageManager.GetActiveLanguage() ;
-FCKLanguageManager.ActiveLanguage.Name = FCKLanguageManager.AvailableLanguages[ FCKLanguageManager.ActiveLanguage.Code ] ;
-
-FCK.Language = FCKLanguageManager ;
-
-// Load the language file and start the editor.
-LoadLanguageFile() ;
\ No newline at end of file
+FCKLanguageManager.Initialize = function()
+{
+	if ( this.AvailableLanguages[ FCKConfig.DefaultLanguage ] )
+		this.DefaultLanguage = FCKConfig.DefaultLanguage ;
+	else
+		this.DefaultLanguage = 'en' ;
+
+	this.ActiveLanguage = new Object() ;
+	this.ActiveLanguage.Code = this.GetActiveLanguage() ;
+	this.ActiveLanguage.Name = this.AvailableLanguages[ this.ActiveLanguage.Code ] ;
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck_last.js 1.4.1.src/fckeditor/editor/_source/internals/fck_last.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck_last.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fck_last.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,67 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fck_last.js
- * 	These are the last script lines executed in the editor loading process.
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-// This is the last file loaded to complete the editor initialization and activation
-
-// Just check if the document direction has been correctly applied (at fck_onload.js).
-if ( FCKLang && window.document.dir.toLowerCase() != FCKLang.Dir.toLowerCase() )
-	window.document.dir = FCKLang.Dir ;
-	
-// Activate pasting operations.
-if ( FCKConfig.ForcePasteAsPlainText )
-	FCK.Events.AttachEvent( "OnPaste", FCK.Paste ) ;
-
-// START iCM Modifications
-// Override default ENTER key handler for Gecko/Mozilla so 
-// it acts more like IE browsers.
-/*
-if ( FCKBrowserInfo.IsGecko && !FCKConfig.UseBROnCarriageReturn )
-{
-	FCK.Events.AttachEvent( "OnEnter", FCK.Enter ) ;
-	FCK.Events.AttachEvent( "OnBackSpace", FCK.BackSpace ) ;
-}
-*/
-// END iCM Modifications
-
-// Load Plugins.
-if ( FCKPlugins.ItemsCount > 0 )
-{
-	FCKScriptLoader.OnEmpty = CompleteLoading ;
-	FCKPlugins.Load() ;
-}
-else
-	CompleteLoading() ;
-
-function CompleteLoading()
-{
-	// Load the Toolbar
-	FCKToolbarSet.Name = FCKURLParams['Toolbar'] || 'Default' ;
-	FCKToolbarSet.Load( FCKToolbarSet.Name ) ;
-	FCKToolbarSet.Restart() ;
-
-	FCK.AttachToOnSelectionChange( FCKToolbarSet.RefreshItemsState ) ;
-	//FCK.AttachToOnSelectionChange( FCKSelection._Reset ) ;
-
-	FCK.SetStatus( FCK_STATUS_COMPLETE ) ;
-
-	// Call the special "FCKeditor_OnComplete" function that should be present in 
-	// the HTML page where the editor is located.
-	if ( typeof( window.parent.FCKeditor_OnComplete ) == 'function' )
-		window.parent.FCKeditor_OnComplete( FCK ) ;
-}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcknamespace.js 1.4.1.src/fckeditor/editor/_source/internals/fcknamespace.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcknamespace.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fcknamespace.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,27 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fcknamespace.js
- * 	This file declares the namespace (object holder) where the common editor 
- * 	objects and classes are defined.
- * 	The namespace is located in the page the editor is running on, so it is
- * 	shared by all editor instances.
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-var NS ;
-
-if ( !( NS = window.parent.__FCKeditorNS ) )
-	NS = window.parent.__FCKeditorNS = new Object() ;
-
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck_onload.js 1.4.1.src/fckeditor/editor/_source/internals/fck_onload.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fck_onload.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fck_onload.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,228 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fck_onload.js
- * 	This is the script that is called when the editor page is loaded inside
- * 	its IFRAME. It's the editor startup.
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-// Disable the context menu in the editor (areas outside the editor area).
-function Window_OnContextMenu( e )
-{
-	if ( e )
-		e.preventDefault() ;	// The Gecko way.
-	else
-	{
-		if ( event.srcElement == document.getElementById('eSourceField') )
-			return true ;
-	}
-
-	return false ;				// The IE way.
-}
-window.document.oncontextmenu = Window_OnContextMenu ;
-
-// Gecko browsers doens't calculate well that IFRAME size so we must
-// recalculate it every time the window size changes.
-if ( FCKBrowserInfo.IsGecko )
-{
-	function Window_OnResize()
-	{
-		var oFrame = document.getElementById('eEditorArea') ;
-		oFrame.height = 0 ;
-
-		var oCell = document.getElementById( FCK.EditMode == FCK_EDITMODE_WYSIWYG ? 'eWysiwygCell' : 'eSource' ) ;
-		var iHeight = oCell.offsetHeight ;
-
-		oFrame.height = iHeight - 2 ;
-	}
-	window.onresize = Window_OnResize ;
-}
-
-if ( FCKBrowserInfo.IsIE )
-{
-	var aCleanupDocs = new Array() ;
-	aCleanupDocs[0] = document ;
-
-	// On IE, some circular references must be cleared to avoid memory leak.
-	function Window_OnBeforeUnload()
-	{
-//		if ( typeof( FCKToolbarSet ) != 'undefined' )
-//			FCKToolbarSet.Collapse() ;
-
-		var d, e ;
-
-		var j = 0 ;
-		while ( ( d = aCleanupDocs[j++] ) )
-		{
-			var i = 0 ;
-			while ( ( e = d.getElementsByTagName("DIV").item(i++) ) )
-			{
-				if ( e.FCKToolbarButton )
-					e.FCKToolbarButton = null ;
-
-				if ( e.FCKSpecialCombo )
-					e.FCKSpecialCombo = null ;
-
-				if ( e.Command )
-					e.Command = null ;
-			}
-
-			i = 0 ;
-			while ( ( e = d.getElementsByTagName("TR").item(i++) ) )
-			{
-				if ( e.FCKContextMenuItem )
-					e.FCKContextMenuItem = null ;
-			}
-
-			aCleanupDocs[j] = null ;
-		}
-		
-		if ( typeof( FCKTempBin ) != 'undefined' )
-			FCKTempBin.Reset() ;
-	}
-	window.attachEvent( "onunload", Window_OnBeforeUnload ) ;
-}
-
-// The editor startup follows these steps:
-//		1. Load the editor main page (fckeditor.html).
-//		2. Load the main configuration file (fckconfig.js)
-//		3. Process the configurations set directly in the page code (just load then).
-//		4. Override the configurations with the custom config file (if set).
-//		5. Override the configurations with that ones set directly in the page code.
-//		6. Load the editor skin styles CSS files.
-//		7. Load the first part of tha main scripts.
-//		8. Load the language file.
-//		9. Start the editor.
-
-// Start the editor as soon as the window is loaded.
-function Window_OnLoad()
-{
-	// There is a bug on Netscape when rendering the frame. It goes over the
-	// right border. So we must correct it.
-	if ( FCKBrowserInfo.IsNetscape )
-		document.getElementById('eWysiwygCell').style.paddingRight = '2px' ;
-
-	LoadConfigFile() ;
-}
-window.onload = Window_OnLoad ;
-
-function LoadConfigFile()
-{
-	FCKScriptLoader.OnEmpty = ProcessHiddenField ;
-
-	// First of all load the configuration file.
-	FCKScriptLoader.AddScript( '../fckconfig.js' ) ;
-}
-
-function ProcessHiddenField()
-{
-	FCKConfig.ProcessHiddenField() ;
-
-	LoadCustomConfigFile() ;
-}
-
-function LoadCustomConfigFile()
-{
-	// Load the custom configurations file (if defined).
-	if ( FCKConfig.CustomConfigurationsPath.length > 0 )
-	{
-		// Wait for the configuration file to be loaded to call the "LoadPageConfig".
-		FCKScriptLoader.OnEmpty = LoadPageConfig ;
-
-		FCKScriptLoader.AddScript( FCKConfig.CustomConfigurationsPath ) ;
-	}
-	else
-	{
-		// Load the page defined configurations immediately.
-		LoadPageConfig() ;
-	}
-}
-
-function LoadPageConfig()
-{
-	FCKConfig.LoadPageConfig() ;
-
-	// Load the styles for the configured skin.
-	LoadStyles() ;
-}
-
-function LoadStyles()
-{
-	if( window.console ) window.console.log( 'LoadStyles()' ) ;	// @Packager.Compactor.RemoveLine
-
-	FCKScriptLoader.OnEmpty = LoadScripts ;
-
-	// Load the active skin CSS.
-	FCKScriptLoader.AddScript( FCKConfig.SkinPath + 'fck_editor.css' ) ;
-	FCKScriptLoader.AddScript( FCKConfig.SkinPath + 'fck_contextmenu.css' ) ;
-}
-
-function LoadScripts()
-{
-	if( window.console ) window.console.log( 'LoadScripts()' ) ;	// @Packager.Compactor.RemoveLine
-
-	FCKScriptLoader.OnEmpty = null ;
-
-	// @Packager.Compactor.Remove.Start
-	var sSuffix = FCKBrowserInfo.IsIE ? 'ie' : 'gecko' ;
-
-	FCKScriptLoader.AddScript( '_source/internals/fckdebug.js' ) ;
-	FCKScriptLoader.AddScript( '_source/internals/fcktools.js' ) ;
-	FCKScriptLoader.AddScript( '_source/internals/fcktools_' + sSuffix + '.js' ) ;
-	FCKScriptLoader.AddScript( '_source/internals/fckregexlib.js' ) ;
-	FCKScriptLoader.AddScript( '_source/internals/fcklanguagemanager.js' ) ;
-	FCKScriptLoader.AddScript( '_source/classes/fckevents.js' ) ;
-	FCKScriptLoader.AddScript( '_source/internals/fckxhtmlentities.js' ) ;
-	FCKScriptLoader.AddScript( '_source/internals/fckxhtml.js' ) ;
-	FCKScriptLoader.AddScript( '_source/internals/fckxhtml_' + sSuffix + '.js' ) ;
-	FCKScriptLoader.AddScript( '_source/internals/fckcodeformatter.js' ) ;
-	FCKScriptLoader.AddScript( '_source/internals/fckundo_' + sSuffix + '.js' ) ;
-	FCKScriptLoader.AddScript( '_source/internals/fck_1.js' ) ;
-	FCKScriptLoader.AddScript( '_source/internals/fck_1_' + sSuffix + '.js' ) ;
-	// @Packager.Compactor.Remove.End
-
-	/* @Packager.Compactor.RemoveLine
-	if ( FCKBrowserInfo.IsIE )
-		FCKScriptLoader.AddScript( 'js/fckeditorcode_ie_1.js' ) ;
-	else
-		FCKScriptLoader.AddScript( 'js/fckeditorcode_gecko_1.js' ) ;
-	@Packager.Compactor.RemoveLine */
-}
-
-function LoadLanguageFile()
-{
-	if( window.console ) window.console.log( 'LoadLanguageFile()' ) ;	// @Packager.Compactor.RemoveLine
-
-	FCKScriptLoader.OnEmpty = LoadEditor ;
-
-	if( window.console ) window.console.log( 'Active Language: ' + FCKLanguageManager.ActiveLanguage.Code ) ;	// @Packager.Compactor.RemoveLine
-
-	FCKScriptLoader.AddScript( 'lang/' + FCKLanguageManager.ActiveLanguage.Code + '.js' ) ;
-}
-
-function LoadEditor()
-{
-	if( window.console ) window.console.log( 'LoadEditor()' ) ;	// @Packager.Compactor.RemoveLine
-
-	// Removes the OnEmpty listener.
-	FCKScriptLoader.OnEmpty = null ;
-
-	// Correct the editor layout to the correct language direction.
-	if ( FCKLang )
-		window.document.dir = FCKLang.Dir ;
-
-	// Starts the editor.
-	FCK.StartEditor() ;
-}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckplugins.js 1.4.1.src/fckeditor/editor/_source/internals/fckplugins.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckplugins.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckplugins.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -19,26 +19,24 @@
 
 var FCKPlugins = FCK.Plugins = new Object() ;
 FCKPlugins.ItemsCount = 0 ;
-FCKPlugins.Loaded = false ;
 FCKPlugins.Items = new Object() ;
-
-// Set the defined plugins scripts paths.
-for ( var i = 0 ; i < FCKConfig.Plugins.Items.length ; i++ )
-{
-	var oItem = FCKConfig.Plugins.Items[i] ;
-	FCKPlugins.Items[ oItem[0] ] = new FCKPlugin( oItem[0], oItem[1], oItem[2] ) ;
-	FCKPlugins.ItemsCount++ ;
-}
 	
 FCKPlugins.Load = function()
 {
-	// Load all items.
-	for ( var s in this.Items )
-		this.Items[s].Load() ;
-	
-	// Mark as loaded.
-	this.Loaded = true ;
-	
+	var oItems = FCKPlugins.Items ;
+
+	// build the plugins collection.
+	for ( var i = 0 ; i < FCKConfig.Plugins.Items.length ; i++ )
+	{
+		var oItem = FCKConfig.Plugins.Items[i] ;
+		var oPlugin = oItems[ oItem[0] ] = new FCKPlugin( oItem[0], oItem[1], oItem[2] ) ;
+		FCKPlugins.ItemsCount++ ;
+	}
+
+	// Load all items in the plugins collection.
+	for ( var s in oItems )
+		oItems[s].Load() ;
+
 	// This is a self destroyable function (must be called once).
 	FCKPlugins.Load = null ;
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckregexlib.js 1.4.1.src/fckeditor/editor/_source/internals/fckregexlib.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckregexlib.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckregexlib.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -23,7 +23,7 @@
 FCKRegexLib.AposEntity		= /&apos;/gi ;
 
 // Used by the Styles combo to identify styles that can't be applied to text.
-FCKRegexLib.ObjectElements	= /^(?:IMG|TABLE|TR|TD|INPUT|SELECT|TEXTAREA|HR|OBJECT)$/i ;
+FCKRegexLib.ObjectElements	= /^(?:IMG|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|HR|OBJECT|A|UL|OL|LI)$/i ;
 
 // START iCM MODIFICATIONS
 // Added TABLE and CAPTION to the block elements for ENTER key handling
@@ -32,7 +32,7 @@
 FCKRegexLib.BlockElements	= /^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TD|TABLE|CAPTION)$/i ;
 */
 // END iCM MODIFICATIONS
-FCKRegexLib.BlockElements	= /^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TD)$/i ;
+FCKRegexLib.BlockElements	= /^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TD|TH)$/i ;
 
 // Elements marked as empty "Empty" in the XHTML DTD.
 FCKRegexLib.EmptyElements	= /^(?:BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT)$/i ;
@@ -56,7 +56,7 @@
 FCKRegexLib.TableBorderClass = /\s*FCK__ShowTableBorders\s*/ ;
 
 // Validate element names.
-FCKRegexLib.ElementName = /^[A-Za-z_:][\w.-:]*$/ ;
+FCKRegexLib.ElementName = /(^[A-Za-z_:][\w.\-:]*\w$)|(^[A-Za-z_]$)/ ;
 
 // Used in conjuction with the FCKConfig.ForceSimpleAmpersand configuration option.
 FCKRegexLib.ForceSimpleAmpersand = /___FCKAmp___/g ;
@@ -90,3 +90,11 @@
 FCKRegexLib.EmCloser = /<\/EM>/gi ;
 
 FCKRegexLib.GeckoEntitiesMarker = /#\?-\:/g ;
+
+FCKRegexLib.ProtectUrlsAApo		= /(<a\s.*?href=)("|')(.+?)\2/gi ;
+FCKRegexLib.ProtectUrlsANoApo	= /(<a\s.*?href=)([^"'][^ >]+)/gi ;
+
+FCKRegexLib.ProtectUrlsImgApo	= /(<img\s.*?src=)("|')(.+?)\2/gi ;
+FCKRegexLib.ProtectUrlsImgNoApo	= /(<img\s.*?src=)([^"'][^ >]+)/gi ;
+
+FCKRegexLib.Html4DocType		= /HTML 4\.0 Transitional/i ;
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckscriptloader.js 1.4.1.src/fckeditor/editor/_source/internals/fckscriptloader.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckscriptloader.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckscriptloader.js	1969-12-31 18:00:00.000000000 -0600
@@ -1,156 +0,0 @@
-﻿/*
- * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
- * 
- * Licensed under the terms of the GNU Lesser General Public License:
- * 		http://www.opensource.org/licenses/lgpl-license.php
- * 
- * For further information visit:
- * 		http://www.fckeditor.net/
- * 
- * "Support Open Source software. What about a donation today?"
- * 
- * File Name: fckscriptloader.js
- * 	Defines the FCKScriptLoader object that is used to dynamically load
- * 	scripts in the editor.
- * 
- * File Authors:
- * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
- */
-
-// This object is used to download scripts and css files sequentialy.
-// A file download is not started until the previous file was not completelly
-// downloaded.
-var FCKScriptLoader = new Object() ;
-FCKScriptLoader.IsLoading = false ;
-FCKScriptLoader.Queue = new Array() ;
-
-// Adds a script or css to the queue.
-FCKScriptLoader.AddScript = function( scriptPath )
-{
-	FCKScriptLoader.Queue[ FCKScriptLoader.Queue.length ] = scriptPath ;
-	
-	if ( !this.IsLoading )
-		this.CheckQueue() ;
-}
-
-// Checks the queue to see if there is something to load.
-// This function should not be called by code. It's a internal function
-// that's called recursively.
-FCKScriptLoader.CheckQueue = function() 
-{
-	// Check if the queue is not empty.
-	if ( this.Queue.length > 0 )
-	{
-		this.IsLoading = true ;
-		
-		// Get the first item in the queue
-		var sScriptPath = this.Queue[0] ;
-		
-		// Removes the first item from the queue
-		var oTempArray = new Array() ;
-		for ( i = 1 ; i < this.Queue.length ; i++ )
-			oTempArray[ i - 1 ] = this.Queue[ i ] ;
-		this.Queue = oTempArray ;
-		
-		this.LoadFile( sScriptPath ) ;
-	}
-	else
-	{
-		this.IsLoading = false ;
-		
-		// Call the "OnEmpty" event.
-		if ( this.OnEmpty ) 
-			this.OnEmpty() ;
-	}
-}
-
-if ( FCKBrowserInfo.IsSafari )
-{
-	FCKScriptLoader.LoadFile = function( filePath ) 
-	{
-		if ( filePath.lastIndexOf( '.css' ) > 0 )
-		{
-			this.CheckQueue() ;
-			return ;
-		}
-		
-		var oXmlRequest = new XMLHttpRequest() ;
-		
-		// Load the script synchronously.
-		oXmlRequest.open( "GET", filePath, false ) ;
-		oXmlRequest.send( null ) ;
-		
-		// Evaluate the script.
-		if ( oXmlRequest.status == 200 )
-		{
-			try
-			{
-				eval( oXmlRequest.responseText ) ;
-			}
-			catch ( e )
-			{
-				alert( 'Error parsing ' + filePath + ': ' + e.message ) ;
-			}
-		}
-		else
-			alert( 'Error loading ' + filePath ) ;
-			
-		this.CheckQueue() ;
-	}
-}
-else
-{
-	FCKScriptLoader.LoadFile = function( filePath ) 
-	{
-		//window.status = ( 'Loading ' + filePath + '...' ) ;
-
-		// Dynamically load the file (it can be a CSS or a JS)
-		var e ;
-		
-		// If is a CSS
-		if ( filePath.lastIndexOf( '.css' ) > 0 )
-		{
-			e = document.createElement( 'LINK' ) ;
-			e.rel	= 'stylesheet' ;
-			e.type	= 'text/css' ;
-		}
-		// It is a JS
-		else
-		{
-			e = document.createElement( "script" ) ;
-				e.type	= "text/javascript" ;
-		}
-		
-		// Add the new object to the HEAD.
-		document.getElementsByTagName("head")[0].appendChild( e ) ; 
-
-		// Start downloading it.
-		if ( e.tagName == 'LINK' )
-		{
-			// IE must wait for the file to be downloaded.
-			if ( FCKBrowserInfo.IsIE )
-				e.onload = FCKScriptLoader_OnLoad ;
-			// Gecko doens't fire any event when the CSS is loaded, so we 
-			// can't wait for it.
-			else
-				FCKScriptLoader.CheckQueue() ;
-				
-			e.href = filePath ;
-		}
-		else
-		{
-			// Gecko fires the "onload" event and IE fires "onreadystatechange"
-			e.onload = e.onreadystatechange = FCKScriptLoader_OnLoad ;
-			e.src = filePath ;
-		}
-	}
-
-	function FCKScriptLoader_OnLoad()
-	{
-		// Gecko doesn't have a "readyState" property
-		if ( this.tagName == 'LINK' || !this.readyState || this.readyState == 'loaded' )
-			// Load the next script available in the queue
-			FCKScriptLoader.CheckQueue() ;
-	}
-}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckselection_gecko.js 1.4.1.src/fckeditor/editor/_source/internals/fckselection_gecko.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckselection_gecko.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckselection_gecko.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -26,11 +26,14 @@
 		this._Type = 'Text' ;
 
 		// Check if the actual selection is a Control (IMG, TABLE, HR, etc...).
-		var oSel = FCK.EditorWindow.getSelection() ;
+		var oSel ;
+		try { oSel = FCK.EditorWindow.getSelection() ; }
+		catch (e) {}
+		
 		if ( oSel && oSel.rangeCount == 1 )
 		{
 			var oRange = oSel.getRangeAt(0) ;
-			if ( oRange.startContainer == oRange.endContainer && (oRange.endOffset - oRange.startOffset) == 1 )
+			if ( oRange.startContainer == oRange.endContainer && (oRange.endOffset - oRange.startOffset) == 1 && oRange.startContainer.nodeType != Node.TEXT_NODE )
 				this._Type = 'Control' ;
 		}
 //	}
@@ -51,7 +54,7 @@
 FCKSelection.GetParentElement = function()
 {
 	if ( this.GetType() == 'Control' )
-		return FCKSelection.GetSelectedElement().parentElement ;
+		return FCKSelection.GetSelectedElement().parentNode ;
 	else
 	{
 		var oSel = FCK.EditorWindow.getSelection() ;
@@ -69,7 +72,7 @@
 
 FCKSelection.SelectNode = function( element )
 {
-	FCK.Focus() ;
+//	FCK.Focus() ;
 
 	var oRange = FCK.EditorDocument.createRange() ;
 	oRange.selectNode( element ) ;
@@ -139,6 +142,7 @@
 
 	return oSel ;
 }
+
 // START iCM MODIFICATIONS
 /*
 // Move the cursor position (the selection point) to a specific offset within a specific node
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckselection_ie.js 1.4.1.src/fckeditor/editor/_source/internals/fckselection_ie.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckselection_ie.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckselection_ie.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -53,17 +53,32 @@
 {
 	FCK.Focus() ;
 	FCK.EditorDocument.selection.empty() ;
-	var oRange = FCK.EditorDocument.selection.createRange() ;
-	oRange.moveToElementText( node ) ;
+
+	try 
+	{
+		// Try to select the node as a control.
+		var oRange = FCK.EditorDocument.body.createControlRange() ;
+		oRange.addElement( node ) ;
+	} 
+	catch(e) 
+	{
+		// If failed, select it as a text range.
+		var oRange = FCK.EditorDocument.selection.createRange() ;
+		oRange.moveToElementText( node ) ;
+	}
+
 	oRange.select() ;
 }
 
 FCKSelection.Collapse = function( toStart )
 {
 	FCK.Focus() ;
-	var oRange = FCK.EditorDocument.selection.createRange() ;
-	oRange.collapse( toStart == null || toStart === true ) ;
-	oRange.select() ;
+	if ( this.GetType() == 'Text' )
+	{
+		var oRange = FCK.EditorDocument.selection.createRange() ;
+		oRange.collapse( toStart == null || toStart === true ) ;
+		oRange.select() ;
+	}
 }
 
 // The "nodeTagName" parameter must be Upper Case.
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckselection.js 1.4.1.src/fckeditor/editor/_source/internals/fckselection.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckselection.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckselection.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -17,6 +17,4 @@
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
  */
 
-var FCKSelection = new Object() ;
-
-FCK.Selection = FCKSelection ;
+var FCKSelection = FCK.Selection = new Object() ;
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcktablehandler_gecko.js 1.4.1.src/fckeditor/editor/_source/internals/fcktablehandler_gecko.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcktablehandler_gecko.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fcktablehandler_gecko.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -26,7 +26,7 @@
 	// If the selection is a text.
 	if ( oSelection.rangeCount == 1 && oSelection.anchorNode.nodeType == 3 )
 	{
-		var oParent = FCKTools.GetElementAscensor( oSelection.anchorNode, 'TD' ) ;
+		var oParent = FCKTools.GetElementAscensor( oSelection.anchorNode, 'TD,TH' ) ;
 		
 		if ( oParent )
 		{
@@ -38,9 +38,14 @@
 	for ( var i = 0 ; i < oSelection.rangeCount ; i++ )
 	{
 		var oRange = oSelection.getRangeAt(i) ;
-		var oCell = oRange.startContainer.childNodes[ oRange.startOffset ] ;
+		var oCell ;
 		
-		if ( oCell.tagName == 'TD' )
+		if ( oRange.startContainer.tagName.Equals( 'TD', 'TH' ) )
+			oCell = oRange.startContainer ;
+		else
+			oCell = oRange.startContainer.childNodes[ oRange.startOffset ] ;
+		
+		if ( oCell.tagName.Equals( 'TD', 'TH' ) )
 			aCells[aCells.length] = oCell ;
 	}
 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcktablehandler_ie.js 1.4.1.src/fckeditor/editor/_source/internals/fcktablehandler_ie.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcktablehandler_ie.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fcktablehandler_ie.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -22,9 +22,10 @@
 	var aCells = new Array() ;
 
 	var oRange = FCK.EditorDocument.selection.createRange() ;
-	var oParent = oRange.parentElement() ;
+//	var oParent = oRange.parentElement() ;
+	var oParent = FCKSelection.GetParentElement() ;
 	
-	if ( oParent && oParent.tagName == "TD" )
+	if ( oParent && oParent.tagName.Equals( 'TD', 'TH' ) )
 		aCells[0] = oParent ;
 	else
 	{
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcktablehandler.js 1.4.1.src/fckeditor/editor/_source/internals/fcktablehandler.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcktablehandler.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fcktablehandler.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -62,10 +62,16 @@
 	// If no table has been passed as a parameer,
 	// then get the table where the selection is placed in.	
 	if ( !table )
-		table = FCKSelection.MoveToAncestorNode("TABLE") ;
+	{
+		var table = FCKSelection.GetSelectedElement() ;
+		if ( !table || table.tagName != 'TABLE' )
+			table = FCKSelection.MoveToAncestorNode("TABLE") ;
+	}
 	if ( !table ) return ;
 
 	// Delete the table.
+	FCKSelection.SelectNode( table ) ;
+	FCKSelection.Collapse();
 	table.parentNode.removeChild( table ) ;
 }
 
@@ -97,7 +103,7 @@
 		oCell = oRow.cells[iIndex-1].cloneNode(false) ;
 		
 		if ( FCKBrowserInfo.IsGecko )
-			oCell.innerHTML = FCKBrowserInfo.IsGecko ? GECKO_BOGUS : '' ;
+			oCell.innerHTML = GECKO_BOGUS ;
 		
 		// Get the cell that is placed in the new cell place.
 		var oBaseCell = oRow.cells[iIndex] ;
@@ -113,7 +119,8 @@
 FCKTableHandler.DeleteColumns = function()
 {
 	// Get the cell where the selection is placed in.
-	var oCell = FCKSelection.MoveToAncestorNode("TD") ;
+	var oCell = FCKSelection.MoveToAncestorNode('TD') || FCKSelection.MoveToAncestorNode('TH') ;
+
 	if ( !oCell ) return ;
 	
 	// Get the cell's table.	
@@ -156,7 +163,7 @@
 //	oNewCell.innerHTML = "&nbsp;" ;
 
 	// If it is the last cell in the row.
-	if ( oCell.cellIndex == oCell.parentNode.cells.lenght - 1 )
+	if ( oCell.cellIndex == oCell.parentNode.cells.length - 1 )
 	{
 		// Add the new cell at the end of the row.
 		oCell.parentNode.appendChild( oNewCell ) ;
@@ -211,21 +218,40 @@
 	var iColSpan = isNaN( aCells[0].colSpan ) ? 1 : aCells[0].colSpan ;
 
 	var sHtml = '' ;
+	var oCellsContents = FCK.EditorDocument.createDocumentFragment() ;
 	
-	for ( var i = aCells.length - 1 ; i > 0  ; i-- )
+	for ( var i = aCells.length - 1 ; i >= 0 ; i-- )
 	{
-		iColSpan += isNaN( aCells[i].colSpan ) ? 1 : aCells[i].colSpan ;
+		var eCell = aCells[i] ;
 		
-		// Append the HTML of each cell.
-		sHtml = aCells[i].innerHTML + sHtml ;
+		// Move its contents to the document fragment.
+		for ( var c = eCell.childNodes.length - 1 ; c >= 0 ; c-- )
+		{
+			var eChild = eCell.removeChild( eCell.childNodes[c] ) ;
+	
+			if ( ( eChild.hasAttribute && eChild.hasAttribute('_moz_editor_bogus_node') ) || ( eChild.getAttribute && eChild.getAttribute( 'type', 2 ) == '_moz' ) )
+				continue ;
+			
+				oCellsContents.insertBefore( eChild, oCellsContents.firstChild ) ;
+		}
 		
-		// Delete the cell.
-		FCKTableHandler.DeleteCell( aCells[i] ) ;
+		if ( i > 0 )
+		{
+			// Accumulate the colspan of the cell.
+			iColSpan += isNaN( eCell.colSpan ) ? 1 : eCell.colSpan ;
+
+			// Delete the cell.
+			FCKTableHandler.DeleteCell( eCell ) ;
+		}
 	}
 	
 	// Set the innerHTML of the remaining cell (the first one).
 	aCells[0].colSpan = iColSpan ;
-	aCells[0].innerHTML += sHtml ;
+	
+	if ( FCKBrowserInfo.IsGecko && oCellsContents.childNodes.length == 0 )
+		aCells[0].innerHTML = GECKO_BOGUS ;
+	else
+		aCells[0].appendChild( oCellsContents ) ;
 }
 
 FCKTableHandler.SplitCell = function()
@@ -354,4 +380,4 @@
 		else
 			aCells[i].innerHTML = '' ;
 	}
-}
\ No newline at end of file
+}
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcktoolbaritems.js 1.4.1.src/fckeditor/editor/_source/internals/fcktoolbaritems.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcktoolbaritems.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fcktoolbaritems.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -34,77 +34,78 @@
 
 	switch ( itemName )
 	{
-		case 'Source'			: oItem = new FCKToolbarButton( 'Source'	, FCKLang.Source, null, FCK_TOOLBARITEM_ICONTEXT, true, true ) ; break ;
-		case 'DocProps'			: oItem = new FCKToolbarButton( 'DocProps'	, FCKLang.DocProps ) ; break ;
-		case 'Templates'		: oItem = new FCKToolbarButton( 'Templates'	, FCKLang.Templates ) ; break ;
-		case 'Save'				: oItem = new FCKToolbarButton( 'Save'		, FCKLang.Save, null, null, true ) ; break ;
-		case 'NewPage'			: oItem = new FCKToolbarButton( 'NewPage'	, FCKLang.NewPage, null, null, true  ) ; break ;
-		case 'Preview'			: oItem = new FCKToolbarButton( 'Preview'	, FCKLang.Preview, null, null, true  ) ; break ;
-		case 'About'			: oItem = new FCKToolbarButton( 'About'		, FCKLang.About, null, null, true  ) ; break ;
-
-		case 'Cut'				: oItem = new FCKToolbarButton( 'Cut'		, FCKLang.Cut, null, null, false, true ) ; break ;
-		case 'Copy'				: oItem = new FCKToolbarButton( 'Copy'		, FCKLang.Copy, null, null, false, true ) ; break ;
-		case 'Paste'			: oItem = new FCKToolbarButton( 'Paste'		, FCKLang.Paste, null, null, false, true ) ; break ;
-		case 'PasteText'		: oItem = new FCKToolbarButton( 'PasteText'	, FCKLang.PasteText, null, null, false, true ) ; break ;
-		case 'PasteWord'		: oItem = new FCKToolbarButton( 'PasteWord'	, FCKLang.PasteWord, null, null, false, true ) ; break ;
-		case 'Print'			: oItem = new FCKToolbarButton( 'Print'		, FCKLang.Print, null, null, false, true ) ; break ;
-		case 'SpellCheck'		: oItem = new FCKToolbarButton( 'SpellCheck', FCKLang.SpellCheck ) ; break ;
-		case 'Undo'				: oItem = new FCKToolbarButton( 'Undo'		, FCKLang.Undo, null, null, false, true ) ; break ;
-		case 'Redo'				: oItem = new FCKToolbarButton( 'Redo'		, FCKLang.Redo, null, null, false, true ) ; break ;
-		case 'SelectAll'		: oItem = new FCKToolbarButton( 'SelectAll'	, FCKLang.SelectAll ) ; break ;
-		case 'RemoveFormat'		: oItem = new FCKToolbarButton( 'RemoveFormat', FCKLang.RemoveFormat, null, null, false, true ) ; break ;
-
-		case 'Bold'				: oItem = new FCKToolbarButton( 'Bold'		, FCKLang.Bold, null, null, false, true ) ; break ;
-		case 'Italic'			: oItem = new FCKToolbarButton( 'Italic'	, FCKLang.Italic, null, null, false, true  ) ; break ;
-		case 'Underline'		: oItem = new FCKToolbarButton( 'Underline'	, FCKLang.Underline, null, null, false, true ) ; break ;
-		case 'StrikeThrough'	: oItem = new FCKToolbarButton( 'StrikeThrough'	, FCKLang.StrikeThrough, null, null, false, true ) ; break ;
-		case 'Subscript'		: oItem = new FCKToolbarButton( 'Subscript'		, FCKLang.Subscript, null, null, false, true ) ; break ;
-		case 'Superscript'		: oItem = new FCKToolbarButton( 'Superscript'	, FCKLang.Superscript, null, null, false, true ) ; break ;
-
-		case 'OrderedList'		: oItem = new FCKToolbarButton( 'InsertOrderedList'		, FCKLang.NumberedListLbl, FCKLang.NumberedList, null, false, true ) ; break ;
-		case 'UnorderedList'	: oItem = new FCKToolbarButton( 'InsertUnorderedList'	, FCKLang.BulletedListLbl, FCKLang.BulletedList, null, false, true ) ; break ;
-		case 'Outdent'			: oItem = new FCKToolbarButton( 'Outdent'	, FCKLang.DecreaseIndent, null, null, false, true ) ; break ;
-		case 'Indent'			: oItem = new FCKToolbarButton( 'Indent'	, FCKLang.IncreaseIndent, null, null, false, true ) ; break ;
-
-		case 'Link'				: oItem = new FCKToolbarButton( 'Link'		, FCKLang.InsertLinkLbl, FCKLang.InsertLink, null, false, true ) ; break ;
-		case 'Unlink'			: oItem = new FCKToolbarButton( 'Unlink'	, FCKLang.RemoveLink, null, null, false, true ) ; break ;
-		case 'Anchor'			: oItem = new FCKToolbarButton( 'Anchor'	, FCKLang.Anchor ) ; break ;
-
-		case 'Image'			: oItem = new FCKToolbarButton( 'Image'			, FCKLang.InsertImageLbl, FCKLang.InsertImage ) ; break ;
-		case 'Flash'			: oItem = new FCKToolbarButton( 'Flash'			, FCKLang.InsertFlashLbl, FCKLang.InsertFlash ) ; break ;
-		case 'Table'			: oItem = new FCKToolbarButton( 'Table'			, FCKLang.InsertTableLbl, FCKLang.InsertTable ) ; break ;
-		case 'SpecialChar'		: oItem = new FCKToolbarButton( 'SpecialChar'	, FCKLang.InsertSpecialCharLbl, FCKLang.InsertSpecialChar ) ; break ;
-		case 'Smiley'			: oItem = new FCKToolbarButton( 'Smiley'		, FCKLang.InsertSmileyLbl, FCKLang.InsertSmiley ) ; break ;
-		case 'PageBreak'		: oItem = new FCKToolbarButton( 'PageBreak'		, FCKLang.PageBreakLbl, FCKLang.PageBreak ) ; break ;
-		case 'UniversalKey'		: oItem = new FCKToolbarButton( 'UniversalKey'	, FCKLang.UniversalKeyboard ) ; break ;
-
-		case 'Rule'				: oItem = new FCKToolbarButton( 'InsertHorizontalRule', FCKLang.InsertLineLbl, FCKLang.InsertLine, null, false, true ) ; break ;
-
-		case 'JustifyLeft'		: oItem = new FCKToolbarButton( 'JustifyLeft'	, FCKLang.LeftJustify, null, null, false, true ) ; break ;
-		case 'JustifyCenter'	: oItem = new FCKToolbarButton( 'JustifyCenter'	, FCKLang.CenterJustify, null, null, false, true ) ; break ;
-		case 'JustifyRight'		: oItem = new FCKToolbarButton( 'JustifyRight'	, FCKLang.RightJustify, null, null, false, true ) ; break ;
-		case 'JustifyFull'		: oItem = new FCKToolbarButton( 'JustifyFull'	, FCKLang.BlockJustify, null, null, false, true ) ; break ;
+		case 'Source'			: oItem = new FCKToolbarButton( 'Source'	, FCKLang.Source, null, FCK_TOOLBARITEM_ICONTEXT, true, true, 1 ) ; break ;
+		case 'DocProps'			: oItem = new FCKToolbarButton( 'DocProps'	, FCKLang.DocProps, null, null, null, null, 2 ) ; break ;
+		case 'Save'				: oItem = new FCKToolbarButton( 'Save'		, FCKLang.Save, null, null, true, null, 3 ) ; break ;
+		case 'NewPage'			: oItem = new FCKToolbarButton( 'NewPage'	, FCKLang.NewPage, null, null, true, null, 4  ) ; break ;
+		case 'Preview'			: oItem = new FCKToolbarButton( 'Preview'	, FCKLang.Preview, null, null, true, null, 5  ) ; break ;
+		case 'Templates'		: oItem = new FCKToolbarButton( 'Templates'	, FCKLang.Templates, null, null, null, null, 6 ) ; break ;
+		case 'About'			: oItem = new FCKToolbarButton( 'About'		, FCKLang.About, null, null, true, null, 47  ) ; break ;
+
+		case 'Cut'				: oItem = new FCKToolbarButton( 'Cut'		, FCKLang.Cut, null, null, false, true, 7 ) ; break ;
+		case 'Copy'				: oItem = new FCKToolbarButton( 'Copy'		, FCKLang.Copy, null, null, false, true, 8 ) ; break ;
+		case 'Paste'			: oItem = new FCKToolbarButton( 'Paste'		, FCKLang.Paste, null, null, false, true, 9 ) ; break ;
+		case 'PasteText'		: oItem = new FCKToolbarButton( 'PasteText'	, FCKLang.PasteText, null, null, false, true, 10 ) ; break ;
+		case 'PasteWord'		: oItem = new FCKToolbarButton( 'PasteWord'	, FCKLang.PasteWord, null, null, false, true, 11 ) ; break ;
+		case 'Print'			: oItem = new FCKToolbarButton( 'Print'		, FCKLang.Print, null, null, false, true, 12 ) ; break ;
+		case 'SpellCheck'		: oItem = new FCKToolbarButton( 'SpellCheck', FCKLang.SpellCheck, null, null, null, null, 13 ) ; break ;
+		case 'Undo'				: oItem = new FCKToolbarButton( 'Undo'		, FCKLang.Undo, null, null, false, true, 14 ) ; break ;
+		case 'Redo'				: oItem = new FCKToolbarButton( 'Redo'		, FCKLang.Redo, null, null, false, true, 15 ) ; break ;
+		case 'SelectAll'		: oItem = new FCKToolbarButton( 'SelectAll'	, FCKLang.SelectAll, null, null, null, null, 18 ) ; break ;
+		case 'RemoveFormat'		: oItem = new FCKToolbarButton( 'RemoveFormat', FCKLang.RemoveFormat, null, null, false, true, 19 ) ; break ;
+		case 'FitWindow'		: oItem = new FCKToolbarButton( 'FitWindow'	, FCKLang.FitWindow, null, null, true, true, 66 ) ; break ;
+
+		case 'Bold'				: oItem = new FCKToolbarButton( 'Bold'		, FCKLang.Bold, null, null, false, true, 20 ) ; break ;
+		case 'Italic'			: oItem = new FCKToolbarButton( 'Italic'	, FCKLang.Italic, null, null, false, true, 21 ) ; break ;
+		case 'Underline'		: oItem = new FCKToolbarButton( 'Underline'	, FCKLang.Underline, null, null, false, true, 22 ) ; break ;
+		case 'StrikeThrough'	: oItem = new FCKToolbarButton( 'StrikeThrough'	, FCKLang.StrikeThrough, null, null, false, true, 23 ) ; break ;
+		case 'Subscript'		: oItem = new FCKToolbarButton( 'Subscript'		, FCKLang.Subscript, null, null, false, true, 24 ) ; break ;
+		case 'Superscript'		: oItem = new FCKToolbarButton( 'Superscript'	, FCKLang.Superscript, null, null, false, true, 25 ) ; break ;
+
+		case 'OrderedList'		: oItem = new FCKToolbarButton( 'InsertOrderedList'		, FCKLang.NumberedListLbl, FCKLang.NumberedList, null, false, true, 26 ) ; break ;
+		case 'UnorderedList'	: oItem = new FCKToolbarButton( 'InsertUnorderedList'	, FCKLang.BulletedListLbl, FCKLang.BulletedList, null, false, true, 27 ) ; break ;
+		case 'Outdent'			: oItem = new FCKToolbarButton( 'Outdent'	, FCKLang.DecreaseIndent, null, null, false, true, 28 ) ; break ;
+		case 'Indent'			: oItem = new FCKToolbarButton( 'Indent'	, FCKLang.IncreaseIndent, null, null, false, true, 29 ) ; break ;
+
+		case 'Link'				: oItem = new FCKToolbarButton( 'Link'		, FCKLang.InsertLinkLbl, FCKLang.InsertLink, null, false, true, 34 ) ; break ;
+		case 'Unlink'			: oItem = new FCKToolbarButton( 'Unlink'	, FCKLang.RemoveLink, null, null, false, true, 35 ) ; break ;
+		case 'Anchor'			: oItem = new FCKToolbarButton( 'Anchor'	, FCKLang.Anchor, null, null, null, null, 36 ) ; break ;
+
+		case 'Image'			: oItem = new FCKToolbarButton( 'Image'			, FCKLang.InsertImageLbl, FCKLang.InsertImage, null, false, true, 37 ) ; break ;
+		case 'Flash'			: oItem = new FCKToolbarButton( 'Flash'			, FCKLang.InsertFlashLbl, FCKLang.InsertFlash, null, false, true, 38 ) ; break ;
+		case 'Table'			: oItem = new FCKToolbarButton( 'Table'			, FCKLang.InsertTableLbl, FCKLang.InsertTable, null, false, true, 39 ) ; break ;
+		case 'SpecialChar'		: oItem = new FCKToolbarButton( 'SpecialChar'	, FCKLang.InsertSpecialCharLbl, FCKLang.InsertSpecialChar, null, false, true, 42 ) ; break ;
+		case 'Smiley'			: oItem = new FCKToolbarButton( 'Smiley'		, FCKLang.InsertSmileyLbl, FCKLang.InsertSmiley, null, false, true, 41 ) ; break ;
+		case 'PageBreak'		: oItem = new FCKToolbarButton( 'PageBreak'		, FCKLang.PageBreakLbl, FCKLang.PageBreak, null, false, true, 43 ) ; break ;
+		case 'UniversalKey'		: oItem = new FCKToolbarButton( 'UniversalKey'	, FCKLang.UniversalKeyboard , null, null, false, true, 44) ; break ;
+
+		case 'Rule'				: oItem = new FCKToolbarButton( 'InsertHorizontalRule', FCKLang.InsertLineLbl, FCKLang.InsertLine, null, false, true, 40 ) ; break ;
+
+		case 'JustifyLeft'		: oItem = new FCKToolbarButton( 'JustifyLeft'	, FCKLang.LeftJustify, null, null, false, true, 30 ) ; break ;
+		case 'JustifyCenter'	: oItem = new FCKToolbarButton( 'JustifyCenter'	, FCKLang.CenterJustify, null, null, false, true, 31 ) ; break ;
+		case 'JustifyRight'		: oItem = new FCKToolbarButton( 'JustifyRight'	, FCKLang.RightJustify, null, null, false, true, 32 ) ; break ;
+		case 'JustifyFull'		: oItem = new FCKToolbarButton( 'JustifyFull'	, FCKLang.BlockJustify, null, null, false, true, 33 ) ; break ;
 
 		case 'Style'			: oItem = new FCKToolbarStyleCombo() ; break ;
 		case 'FontName'			: oItem = new FCKToolbarFontsCombo() ; break ;
 		case 'FontSize'			: oItem = new FCKToolbarFontSizeCombo() ; break ;
 		case 'FontFormat'		: oItem = new FCKToolbarFontFormatCombo() ; break ;
 
-		case 'TextColor'		: oItem = new FCKToolbarPanelButton( 'TextColor', FCKLang.TextColor ) ; break ;
-		case 'BGColor'			: oItem = new FCKToolbarPanelButton( 'BGColor'	, FCKLang.BGColor ) ; break ;
+		case 'TextColor'		: oItem = new FCKToolbarPanelButton( 'TextColor', FCKLang.TextColor, null, null, 45 ) ; break ;
+		case 'BGColor'			: oItem = new FCKToolbarPanelButton( 'BGColor'	, FCKLang.BGColor, null, null, 46 ) ; break ;
 
-		case 'Find'				: oItem = new FCKToolbarButton( 'Find'		, FCKLang.Find ) ; break ;
-		case 'Replace'			: oItem = new FCKToolbarButton( 'Replace'	, FCKLang.Replace ) ; break ;
+		case 'Find'				: oItem = new FCKToolbarButton( 'Find'		, FCKLang.Find, null, null, null, null, 16 ) ; break ;
+		case 'Replace'			: oItem = new FCKToolbarButton( 'Replace'	, FCKLang.Replace, null, null, null, null, 17 ) ; break ;
 
-		case 'Form'				: oItem = new FCKToolbarButton( 'Form'			, FCKLang.Form ) ; break ;
-		case 'Checkbox'			: oItem = new FCKToolbarButton( 'Checkbox'		, FCKLang.Checkbox ) ; break ;
-		case 'Radio'			: oItem = new FCKToolbarButton( 'Radio'			, FCKLang.RadioButton ) ; break ;
-		case 'TextField'		: oItem = new FCKToolbarButton( 'TextField'		, FCKLang.TextField ) ; break ;
-		case 'Textarea'			: oItem = new FCKToolbarButton( 'Textarea'		, FCKLang.Textarea ) ; break ;
-		case 'HiddenField'		: oItem = new FCKToolbarButton( 'HiddenField'	, FCKLang.HiddenField ) ; break ;
-		case 'Button'			: oItem = new FCKToolbarButton( 'Button'		, FCKLang.Button ) ; break ;
-		case 'Select'			: oItem = new FCKToolbarButton( 'Select'		, FCKLang.SelectionField ) ; break ;
-		case 'ImageButton'		: oItem = new FCKToolbarButton( 'ImageButton'	, FCKLang.ImageButton ) ; break ;
+		case 'Form'				: oItem = new FCKToolbarButton( 'Form'			, FCKLang.Form, null, null, null, null, 48 ) ; break ;
+		case 'Checkbox'			: oItem = new FCKToolbarButton( 'Checkbox'		, FCKLang.Checkbox, null, null, null, null, 49 ) ; break ;
+		case 'Radio'			: oItem = new FCKToolbarButton( 'Radio'			, FCKLang.RadioButton, null, null, null, null, 50 ) ; break ;
+		case 'TextField'		: oItem = new FCKToolbarButton( 'TextField'		, FCKLang.TextField, null, null, null, null, 51 ) ; break ;
+		case 'Textarea'			: oItem = new FCKToolbarButton( 'Textarea'		, FCKLang.Textarea, null, null, null, null, 52 ) ; break ;
+		case 'HiddenField'		: oItem = new FCKToolbarButton( 'HiddenField'	, FCKLang.HiddenField, null, null, null, null, 56 ) ; break ;
+		case 'Button'			: oItem = new FCKToolbarButton( 'Button'		, FCKLang.Button, null, null, null, null, 54 ) ; break ;
+		case 'Select'			: oItem = new FCKToolbarButton( 'Select'		, FCKLang.SelectionField, null, null, null, null, 53 ) ; break ;
+		case 'ImageButton'		: oItem = new FCKToolbarButton( 'ImageButton'	, FCKLang.ImageButton, null, null, null, null, 55 ) ; break ;
 
 		default:
 			alert( FCKLang.UnknownToolbarItem.replace( /%1/g, itemName ) ) ;
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcktoolbarset.js 1.4.1.src/fckeditor/editor/_source/internals/fcktoolbarset.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcktoolbarset.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fcktoolbarset.js	2006-09-03 13:05:03.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -18,62 +18,211 @@
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
  */
 
-var FCKToolbarSet = FCK.ToolbarSet = new Object() ;
+function FCKToolbarSet_Create( overhideLocation )
+{
+	var oToolbarSet ;
+	
+	var sLocation = overhideLocation || FCKConfig.ToolbarLocation ;
+	switch ( sLocation )
+	{
+		case 'In' :
+				document.getElementById( 'xToolbarRow' ).style.display = '' ;
+				oToolbarSet = new FCKToolbarSet( document ) ;
+			break ;
+			
+//		case 'OutTop' :
+			// Not supported.
+			
+		default :
+			FCK.Events.AttachEvent( 'OnBlur', FCK_OnBlur ) ;
+			FCK.Events.AttachEvent( 'OnFocus', FCK_OnFocus ) ;
+
+			var eToolbarTarget ;
+			
+			// Out:[TargetWindow]([TargetId])
+			var oOutMatch = sLocation.match( /^Out:(.+)\((\w+)\)$/ ) ;
+			if ( oOutMatch )
+			{
+				eToolbarTarget = eval( 'parent.' + oOutMatch[1] ).document.getElementById( oOutMatch[2] ) ;
+			}
+			else
+			{
+				// Out:[TargetId]
+				oOutMatch = sLocation.match( /^Out:(\w+)$/ ) ;
+				if ( oOutMatch )
+					eToolbarTarget = parent.document.getElementById( oOutMatch[1] ) ;
+			}
+			
+			if ( !eToolbarTarget )
+			{
+				alert( 'Invalid value for "ToolbarLocation"' ) ;
+				return this._Init( 'In' ) ;
+			}
+			
+			// If it is a shared toolbar, it may be already available in the target element.
+			if ( oToolbarSet = eToolbarTarget.__FCKToolbarSet )
+				break ;
+
+			// Create the IFRAME that will hold the toolbar inside the target element.
+			var eToolbarIFrame = FCKTools.GetElementDocument( eToolbarTarget ).createElement( 'iframe' ) ;
+			eToolbarIFrame.frameBorder = 0 ;
+			eToolbarIFrame.width = '100%' ;
+			eToolbarIFrame.height = '10' ;
+			eToolbarTarget.appendChild( eToolbarIFrame ) ;
+			eToolbarIFrame.unselectable = 'on' ;
+			
+			// Write the basic HTML for the toolbar (copy from the editor main page).
+			var eTargetDocument = eToolbarIFrame.contentWindow.document ;
+			eTargetDocument.open() ;
+			eTargetDocument.write( '<html><head><script type="text/javascript"> window.onload = window.onresize = function() { window.frameElement.height = document.body.scrollHeight ; } </script></head><body style="overflow: hidden">' + document.getElementById( 'xToolbarSpace' ).innerHTML + '</body></html>' ) ;
+			eTargetDocument.close() ;
+			
+			eTargetDocument.oncontextmenu = FCKTools.CancelEvent ;
 
-document.getElementById( 'ExpandHandle' ).title		= FCKLang.ToolbarExpand ;
-document.getElementById( 'CollapseHandle' ).title	= FCKLang.ToolbarCollapse ;
+			// Load external resources (must be done here, otherwise Firefox will not
+			// have the document DOM ready to be used right away.
+			FCKTools.AppendStyleSheet( eTargetDocument, FCKConfig.SkinPath + 'fck_editor.css' ) ;
+			
+			oToolbarSet = eToolbarTarget.__FCKToolbarSet = new FCKToolbarSet( eTargetDocument ) ;
+			oToolbarSet._IFrame = eToolbarIFrame ;
 
-FCKToolbarSet.Toolbars = new Array() ;
+			if ( FCK.IECleanup )
+				FCK.IECleanup.AddItem( eToolbarTarget, FCKToolbarSet_Target_Cleanup ) ;
+	}
+	
+	oToolbarSet.CurrentInstance = FCK ;
 
-// Array of toolbat items that are active only on WYSIWYG mode.
-FCKToolbarSet.ItemsWysiwygOnly = new Array() ;
+	FCK.AttachToOnSelectionChange( oToolbarSet.RefreshItemsState ) ;
 
-// Array of toolbar items that are sensitive to the cursor position.
-FCKToolbarSet.ItemsContextSensitive = new Array() ;
+	return oToolbarSet ;
+}
 
-FCKToolbarSet.Expand = function()
+function FCK_OnBlur( editorInstance )
 {
-	document.getElementById( 'Collapsed' ).style.display = 'none' ;
-	document.getElementById( 'Expanded' ).style.display = '' ;
+	var eToolbarSet = editorInstance.ToolbarSet ;
 	
-	if ( ! FCKBrowserInfo.IsIE )
-	{
-		// I had to use "setTimeout" because Gecko was not responding in a right
-		// way when calling window.onresize() directly.
-		window.setTimeout( "window.onresize()", 1 ) ;
-	}
+	if ( eToolbarSet.CurrentInstance == editorInstance )
+		eToolbarSet.Disable() ;
 }
 
-FCKToolbarSet.Collapse = function()
+function FCK_OnFocus( editorInstance )
 {
-	document.getElementById( 'Collapsed' ).style.display = '' ;
-	document.getElementById( 'Expanded' ).style.display = 'none' ;
+	var oToolbarset = editorInstance.ToolbarSet ;
+	var oInstance = editorInstance || FCK ;
 	
-	if ( ! FCKBrowserInfo.IsIE )
-	{
-		// I had to use "setTimeout" because Gecko was not responding in a right
-		// way when calling window.onresize() directly.
-		window.setTimeout( "window.onresize()", 1 ) ;
-	}
+	// Unregister the toolbar window from the current instance.
+	oToolbarset.CurrentInstance.FocusManager.RemoveWindow( oToolbarset._IFrame.contentWindow ) ;
+	
+	// Set the new current instance.
+	oToolbarset.CurrentInstance = oInstance ;
+	
+	// Register the toolbar window in the current instance.
+	oInstance.FocusManager.AddWindow( oToolbarset._IFrame.contentWindow, true ) ;
+
+	oToolbarset.Enable() ;
 }
 
-FCKToolbarSet.Restart = function()
+function FCKToolbarSet_Cleanup()
 {
+	this._TargetElement = null ;
+	this._IFrame = null ;
+}
+
+function FCKToolbarSet_Target_Cleanup()
+{
+	this.__FCKToolbarSet = null ;
+}
+
+var FCKToolbarSet = function( targetDocument )
+{
+	this._Document = targetDocument ; 
+
+	// Get the element that will hold the elements structure.
+	this._TargetElement	= targetDocument.getElementById( 'xToolbar' ) ;
+	
+	// Setup the expand and collapse handlers.
+	var eExpandHandle	= targetDocument.getElementById( 'xExpandHandle' ) ;
+	var eCollapseHandle	= targetDocument.getElementById( 'xCollapseHandle' ) ;
+
+	eExpandHandle.title		= FCKLang.ToolbarExpand ;
+	eExpandHandle.onclick	= FCKToolbarSet_Expand_OnClick ;
+	
+	eCollapseHandle.title	= FCKLang.ToolbarCollapse ;
+	eCollapseHandle.onclick	= FCKToolbarSet_Collapse_OnClick ;
+
+	// Set the toolbar state at startup.
 	if ( !FCKConfig.ToolbarCanCollapse || FCKConfig.ToolbarStartExpanded )
 		this.Expand() ;
 	else
 		this.Collapse() ;
+
+	// Enable/disable the collapse handler
+	eCollapseHandle.style.display = FCKConfig.ToolbarCanCollapse ? '' : 'none' ;
+
+	if ( FCKConfig.ToolbarCanCollapse )
+		eCollapseHandle.style.display = '' ;
+	else
+		targetDocument.getElementById( 'xTBLeftBorder' ).style.display = '' ;
+		
+	// Set the default properties.
+	this.Toolbars = new Array() ;
+	this.IsLoaded = false ;
+
+	if ( FCK.IECleanup )
+		FCK.IECleanup.AddItem( this, FCKToolbarSet_Cleanup ) ;
+}
+
+function FCKToolbarSet_Expand_OnClick()
+{
+	FCK.ToolbarSet.Expand() ;
+}
+
+function FCKToolbarSet_Collapse_OnClick()
+{
+	FCK.ToolbarSet.Collapse() ;
+}
+
+FCKToolbarSet.prototype.Expand = function()
+{
+	this._ChangeVisibility( false ) ;
+}
+
+FCKToolbarSet.prototype.Collapse = function()
+{
+	this._ChangeVisibility( true ) ;
+}
+
+FCKToolbarSet.prototype._ChangeVisibility = function( collapse )
+{
+	this._Document.getElementById( 'xCollapsed' ).style.display = collapse ? '' : 'none' ;
+	this._Document.getElementById( 'xExpanded' ).style.display = collapse ? 'none' : '' ;
 	
-	document.getElementById( 'CollapseHandle' ).style.display = FCKConfig.ToolbarCanCollapse ? '' : 'none' ;
+	if ( FCKBrowserInfo.IsGecko )
+	{
+		// I had to use "setTimeout" because Gecko was not responding in a right
+		// way when calling window.onresize() directly.
+		FCKTools.RunFunction( window.onresize ) ;
+	}
 }
 
-FCKToolbarSet.Load = function( toolbarSetName )
+FCKToolbarSet.prototype.Load = function( toolbarSetName )
 {
-	this.DOMElement = document.getElementById( 'eToolbar' ) ;
+	this.Name = toolbarSetName ;
+
+	this.Items = new Array() ;
+	
+	// Reset the array of toolbat items that are active only on WYSIWYG mode.
+	this.ItemsWysiwygOnly = new Array() ;
+
+	// Reset the array of toolbar items that are sensitive to the cursor position.
+	this.ItemsContextSensitive = new Array() ;
+	
+	// Cleanup the target element.
+	this._TargetElement.innerHTML = '' ;
 	
 	var ToolbarSet = FCKConfig.ToolbarSets[toolbarSetName] ;
 	
-	if (! ToolbarSet)
+	if ( !ToolbarSet )
 	{
 		alert( FCKLang.UnknownToolbarSet.replace( /%1/g, toolbarSetName ) ) ;
 		return ;
@@ -109,58 +258,95 @@
 					{
 						oToolbar.AddItem( oItem ) ;
 
+						this.Items.push( oItem ) ;
+
 						if ( !oItem.SourceView )
-							this.ItemsWysiwygOnly[this.ItemsWysiwygOnly.length] = oItem ;
+							this.ItemsWysiwygOnly.push( oItem ) ;
 						
 						if ( oItem.ContextSensitive )
-							this.ItemsContextSensitive[this.ItemsContextSensitive.length] = oItem ;
+							this.ItemsContextSensitive.push( oItem ) ;
 					}
 				}
 			}
 			
-			oToolbar.AddTerminator() ;
+			// oToolbar.AddTerminator() ;
 		}
+		
+		oToolbar.Create( this._TargetElement ) ;
 
 		this.Toolbars[ this.Toolbars.length ] = oToolbar ;
 	}
+	
+	FCKTools.DisableSelection( this._Document.getElementById( 'xCollapseHandle' ).parentNode ) ;
+
+	if ( FCK.Status != FCK_STATUS_COMPLETE )
+		FCK.Events.AttachEvent( 'OnStatusChange', this.RefreshModeState ) ;
+	else
+		this.RefreshModeState() ;
+
+	this.IsLoaded = true ;
+	this.IsEnabled = true ;
+
+	FCKTools.RunFunction( this.OnLoad ) ;
 }
 
-FCKToolbarSet.RefreshModeState = function()
+FCKToolbarSet.prototype.Enable = function()
 {
+	if ( this.IsEnabled )
+		return ;
+
+	this.IsEnabled = true ;
+
+	var aItems = this.Items ;
+	for ( var i = 0 ; i < aItems.length ; i++ )
+		aItems[i].RefreshState() ;
+}
+
+FCKToolbarSet.prototype.Disable = function()
+{
+	if ( !this.IsEnabled )
+		return ;
+
+	this.IsEnabled = false ;
+
+	var aItems = this.Items ;
+	for ( var i = 0 ; i < aItems.length ; i++ )
+		aItems[i].Disable() ;
+}
+
+FCKToolbarSet.prototype.RefreshModeState = function( editorInstance )
+{
+	if ( FCK.Status != FCK_STATUS_COMPLETE )
+		return ;
+
+	var oToolbarSet = editorInstance ? editorInstance.ToolbarSet : this ;
+	var aItems = oToolbarSet.ItemsWysiwygOnly ;
+	
 	if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
 	{
 		// Enable all buttons that are available on WYSIWYG mode only.
-		for ( var i = 0 ; i < FCKToolbarSet.ItemsWysiwygOnly.length ; i++ )
-			FCKToolbarSet.ItemsWysiwygOnly[i].Enable() ;
+		for ( var i = 0 ; i < aItems.length ; i++ )
+			aItems[i].Enable() ;
 
 		// Refresh the buttons state.
-		FCKToolbarSet.RefreshItemsState() ;
+		oToolbarSet.RefreshItemsState( editorInstance ) ;
 	}
 	else
 	{
 		// Refresh the buttons state.
-		FCKToolbarSet.RefreshItemsState() ;
+		oToolbarSet.RefreshItemsState( editorInstance ) ;
 
 		// Disable all buttons that are available on WYSIWYG mode only.
-		for ( var i = 0 ; i < FCKToolbarSet.ItemsWysiwygOnly.length ; i++ )
-			FCKToolbarSet.ItemsWysiwygOnly[i].Disable() ;
+		for ( var i = 0 ; i < aItems.length ; i++ )
+			aItems[i].Disable() ;
 	}	
 }
 
-FCKToolbarSet.RefreshItemsState = function()
+FCKToolbarSet.prototype.RefreshItemsState = function( editorInstance )
 {
-
-	for ( var i = 0 ; i < FCKToolbarSet.ItemsContextSensitive.length ; i++ )
-		FCKToolbarSet.ItemsContextSensitive[i].RefreshState() ;
-/*
-	TODO: Delete this commented block on stable version.
-	for ( var i = 0 ; i < FCKToolbarSet.Toolbars.length ; i++ )
-	{
-		var oToolbar = FCKToolbarSet.Toolbars[i] ;
-		for ( var j = 0 ; j < oToolbar.Items.length ; j++ )
-		{
-			oToolbar.Items[j].RefreshState() ;
-		}
-	}
-*/
+	
+	var aItems = ( editorInstance ? editorInstance.ToolbarSet : this ).ItemsContextSensitive ;
+	
+	for ( var i = 0 ; i < aItems.length ; i++ )
+		aItems[i].RefreshState() ;
 }
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcktools_gecko.js 1.4.1.src/fckeditor/editor/_source/internals/fcktools_gecko.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcktools_gecko.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fcktools_gecko.js	2006-09-03 13:05:03.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -18,7 +18,21 @@
  */
 
 // Constant for the Gecko Bogus Node.
-var GECKO_BOGUS = '<br _moz_editor_bogus_node="TRUE">' ;
+var GECKO_BOGUS = FCKBrowserInfo.IsGecko ? '<br _moz_editor_bogus_node="TRUE">' : '' ;
+
+FCKTools.CancelEvent = function( e )
+{
+	if ( e )
+		e.preventDefault() ;
+}
+
+FCKTools.DisableSelection = function( element )
+{
+	if ( FCKBrowserInfo.IsGecko )
+		element.style.MozUserSelect	= 'none' ;	// Gecko only.	
+	else
+		element.style.userSelect	= 'none' ;	// CSS3 (not supported yet).
+}
 
 // Appends a CSS file to a document.
 FCKTools.AppendStyleSheet = function( documentElement, cssFileUrl )
@@ -90,6 +104,85 @@
 	}
 	return null ;
 }
+
+FCKTools.GetScrollPosition = function( relativeWindow )
+{
+	return { X : relativeWindow.pageXOffset, Y : relativeWindow.pageYOffset } ;
+}
+
+FCKTools.AddEventListener = function( sourceObject, eventName, listener )
+{
+	sourceObject.addEventListener( eventName, listener, false ) ;
+}
+
+FCKTools.RemoveEventListener = function( sourceObject, eventName, listener )
+{
+	sourceObject.removeEventListener( eventName, listener, false ) ;
+}
+
+// Listeners attached with this function cannot be detached.
+FCKTools.AddEventListenerEx = function( sourceObject, eventName, listener, paramsArray )
+{
+	sourceObject.addEventListener( 
+		eventName, 
+		function( e )
+		{
+			listener.apply( sourceObject, [ e ].concat( paramsArray || [] ) ) ;
+		},
+		false 
+	) ;
+}
+
+// Returns and object with the "Width" and "Height" properties.
+FCKTools.GetViewPaneSize = function( win )
+{
+	return { Width : win.innerWidth, Height : win.innerHeight } ;
+}
+
+FCKTools.SaveStyles = function( element )
+{
+	var oSavedStyles = new Object() ;
+	
+	if ( element.className.length > 0 )
+	{
+		oSavedStyles.Class = element.className ;
+		element.className = '' ;
+	}
+
+	var sInlineStyle = element.getAttribute( 'style' ) ;
+
+	if ( sInlineStyle && sInlineStyle.length > 0 )
+	{
+		oSavedStyles.Inline = sInlineStyle ;
+		element.setAttribute( 'style', '', 0 ) ;	// 0 : Case Insensitive
+	}
+
+	return oSavedStyles ;
+}
+
+FCKTools.RestoreStyles = function( element, savedStyles )
+{
+	element.className = savedStyles.Class || '' ;
+
+	if ( savedStyles.Inline )
+		element.setAttribute( 'style', savedStyles.Inline, 0 ) ;	// 0 : Case Insensitive
+	else
+		element.removeAttribute( 'style', 0 ) ;
+}
+
+FCKTools.RegisterDollarFunction = function( targetWindow )
+{
+	targetWindow.$ = function( id ) 
+	{ 
+		return this.document.getElementById( id ) ;
+	} ;
+}
+
+FCKTools.AppendElement = function( target, elementName )
+{
+	return target.appendChild( target.ownerDocument.createElement( elementName ) ) ;
+}
+
 // START iCM Modifications
 /*
 // Starting at the specified node, find the first inline node of the sequence
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcktools_ie.js 1.4.1.src/fckeditor/editor/_source/internals/fcktools_ie.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcktools_ie.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fcktools_ie.js	2006-09-03 13:05:03.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -17,10 +17,15 @@
  * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
  */
 
+FCKTools.CancelEvent = function( e )
+{
+	return false ;
+}
+
 // Appends a CSS file to a document.
 FCKTools.AppendStyleSheet = function( documentElement, cssFileUrl )
 {
-	return documentElement.createStyleSheet( cssFileUrl ) ;
+	return documentElement.createStyleSheet( cssFileUrl ).owningElement ;
 }
 
 // Removes all attributes and values from the element.
@@ -74,4 +79,124 @@
 		alert( FCKLang.NoActiveX ) ;
 		FCKLang.NoActiveX = null ;
 	}
+}
+
+FCKTools.DisableSelection = function( element )
+{
+	element.unselectable = 'on' ;
+
+	var e, i = 0 ;
+	while ( e = element.all[ i++ ] )
+	{
+		switch ( e.tagName )
+		{
+			case 'IFRAME' :
+			case 'TEXTAREA' :
+			case 'INPUT' :
+			case 'SELECT' :
+				/* Ignore the above tags */
+				break ;
+			default :
+				e.unselectable = 'on' ;
+		}
+	}
+}
+
+FCKTools.GetScrollPosition = function( relativeWindow )
+{
+	var oDoc = relativeWindow.document ;
+
+	// Try with the doc element.
+	var oPos = { X : oDoc.documentElement.scrollLeft, Y : oDoc.documentElement.scrollTop } ;
+	
+	if ( oPos.X > 0 || oPos.Y > 0 )
+		return oPos ;
+
+	// If no scroll, try with the body.
+	return { X : oDoc.body.scrollLeft, Y : oDoc.body.scrollTop } ;
+}
+
+FCKTools.AddEventListener = function( sourceObject, eventName, listener )
+{
+	sourceObject.attachEvent( 'on' + eventName, listener ) ;
+}
+
+FCKTools.RemoveEventListener = function( sourceObject, eventName, listener )
+{
+	sourceObject.detachEvent( 'on' + eventName, listener ) ;
+}
+
+// Listeners attached with this function cannot be detached.
+FCKTools.AddEventListenerEx = function( sourceObject, eventName, listener, paramsArray )
+{
+	// Ok... this is a closures party, but is the only way to make it clean of memory leaks.
+	var o = new Object() ;
+	o.Source = sourceObject ;
+	o.Params = paramsArray || [] ;	// Memory leak if we have DOM objects here.
+	o.Listener = function( ev )
+	{
+		return listener.apply( o.Source, [ ev ].concat( o.Params ) ) ;
+	}
+	
+	if ( FCK.IECleanup )
+		FCK.IECleanup.AddItem( null, function() { o.Source = null ; o.Params = null ; } ) ;
+	
+	sourceObject.attachEvent( 'on' + eventName, o.Listener ) ;
+
+	sourceObject = null ;	// Memory leak cleaner (because of the above closure).
+	paramsArray = null ;	// Memory leak cleaner (because of the above closure).
+}
+
+// Returns and object with the "Width" and "Height" properties.
+FCKTools.GetViewPaneSize = function( win )
+{
+	var oSizeSource ;
+	
+	var oDoc = win.document.documentElement ;
+	if ( oDoc && oDoc.clientWidth )				// IE6 Strict Mode
+		oSizeSource = oDoc ;
+	else
+		oSizeSource = top.document.body ;		// Other IEs
+	
+	if ( oSizeSource )
+		return { Width : oSizeSource.clientWidth, Height : oSizeSource.clientHeight } ;
+	else
+		return { Width : 0, Height : 0 } ;
+}
+
+FCKTools.SaveStyles = function( element )
+{
+	var oSavedStyles = new Object() ;
+	
+	if ( element.className.length > 0 )
+	{
+		oSavedStyles.Class = element.className ;
+		element.className = '' ;
+	}
+
+	var sInlineStyle = element.style.cssText ;
+
+	if ( sInlineStyle.length > 0 )
+	{
+		oSavedStyles.Inline = sInlineStyle ;
+		element.style.cssText = '' ;
+	}
+	
+	return oSavedStyles ;
+}
+
+FCKTools.RestoreStyles = function( element, savedStyles )
+{
+	element.className		= savedStyles.Class || '' ;
+	element.style.cssText	= savedStyles.Inline || '' ;
+}
+
+FCKTools.RegisterDollarFunction = function( targetWindow )
+{
+	targetWindow.$ = targetWindow.document.getElementById ;
+}
+
+FCKTools.AppendElement = function( target, elementName )
+{
+	return target.appendChild( this.GetElementDocument( target ).createElement( elementName ) ) ;
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcktools.js 1.4.1.src/fckeditor/editor/_source/internals/fcktools.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fcktools.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fcktools.js	2006-09-03 13:05:03.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -19,20 +19,21 @@
 
 var FCKTools = new Object() ;
 
-//**
-// FCKTools.GetLinkedFieldValue: Gets the value of the hidden INPUT element
-// that is associated to the editor. This element has its ID set to the 
-// editor's instance name so the user reffers to the instance name when getting
-// the posted data.
+/**
+ * Gets the value of the hidden INPUT element that is associated to the editor.
+ * This element has its ID set to the editor's instance name so the user refers
+ * to the instance name when getting the posted data.
+ */
 FCKTools.GetLinkedFieldValue = function()
 {
 	return FCK.LinkedField.value ;
 }
 
-//**
-// FCKTools.AttachToLinkedFieldFormSubmit: attaches a function call to the 
-// submit event of the linked field form. This function us generally used to
-// update the linked field value before submitting the form.
+/**
+ * Attachs a function call to the submit event of the linked field form. This
+ * function us generally used to update the linked field value before
+ * submitting the form.
+ */
 FCKTools.AttachToLinkedFieldFormSubmit = function( functionPointer )
 {
 	// Gets the linked field form
@@ -45,7 +46,7 @@
 	if ( FCKBrowserInfo.IsIE )
 		oForm.attachEvent( "onsubmit", functionPointer ) ;
 	else
-		oForm.addEventListener( 'submit', functionPointer, true ) ;
+		oForm.addEventListener( 'submit', functionPointer, false ) ;
 	
 	//**
 	// Attaches the functionPointer call to the submit method 
@@ -85,42 +86,70 @@
 	this.originalSubmit() ;
 }
 
-//**
-// FCKTools.AddSelectOption: Adds a option to a SELECT element.
-FCKTools.AddSelectOption = function( targetDocument, selectElement, optionText, optionValue )
+// Get the window object where the element is placed in.
+FCKTools.GetElementWindow = function( element )
 {
-	var oOption = targetDocument.createElement("OPTION") ;
-
-	oOption.text	= optionText ;
-	oOption.value	= optionValue ;	
-
-	selectElement.options.add(oOption) ;
-
-	return oOption ;
+	return this.GetDocumentWindow( this.GetElementDocument( element ) ) ;
 }
 
-FCKTools.RemoveAllSelectOptions = function( selectElement )
+FCKTools.GetDocumentWindow = function( doc )
 {
-	for ( var i = selectElement.options.length - 1 ; i >= 0 ; i-- )
-	{
-		selectElement.options.remove(i) ;
-	}
+	// With Safari, there is not way to retrieve the window from the document, so we must fix it.
+	if ( FCKBrowserInfo.IsSafari && !doc.parentWindow )
+		this.FixDocumentParentWindow( window.top ) ;
+	
+	return doc.parentWindow || doc.defaultView ;
 }
 
-FCKTools.SelectNoCase = function( selectElement, value, defaultValue )
+FCKTools.GetElementPosition = function( el, relativeWindow )
 {
-	var sNoCaseValue = value.toString().toLowerCase() ;
+	// Initializes the Coordinates object that will be returned by the function.
+	var c = { X:0, Y:0 } ;
 	
-	for ( var i = 0 ; i < selectElement.options.length ; i++ )
+	var oWindow = relativeWindow || window ;
+
+	// Loop throw the offset chain.
+	while ( el )
 	{
-		if ( sNoCaseValue == selectElement.options[i].value.toLowerCase() )
+		c.X += el.offsetLeft - el.scrollLeft ;
+		c.Y += el.offsetTop - el.scrollTop  ;
+
+		if ( el.offsetParent == null )
 		{
-			selectElement.selectedIndex = i ;
-			return ;
+			var oOwnerWindow = FCKTools.GetElementWindow( el ) ;
+			
+			if ( oOwnerWindow != oWindow )
+				el = oOwnerWindow.frameElement ;
+			else
+			{
+				c.X += el.scrollLeft ;
+				c.Y += el.scrollTop  ;
+				break ;
+			}
 		}
+		else
+			el = el.offsetParent ;
 	}
+
+	// Return the Coordinates object
+	return c ;
+}
+
+/*
+	This is a Safari specific function that fix the reference to the parent 
+	window from the document object.
+*/
+FCKTools.FixDocumentParentWindow = function( targetWindow )
+{
+	targetWindow.document.parentWindow = targetWindow ; 
 	
-	if ( defaultValue != null ) FCKTools.SelectNoCase( selectElement, defaultValue ) ;
+	for ( var i = 0 ; i < targetWindow.frames.length ; i++ )
+		FCKTools.FixDocumentParentWindow( targetWindow.frames[i] ) ;
+}
+
+FCKTools.GetParentWindow = function( document )
+{
+	return document.contentWindow ? document.contentWindow : document.parentWindow ;
 }
 
 FCKTools.HTMLEncode = function( text )
@@ -128,80 +157,55 @@
 	if ( !text )
 		return '' ;
 
-	text = text.replace( /&/g, "&amp;" ) ;
-	text = text.replace( /"/g, "&quot;" ) ;
-	text = text.replace( /</g, "&lt;" ) ;
-	text = text.replace( />/g, "&gt;" ) ;
-	text = text.replace( /'/g, "&#39;" ) ;
+	text = text.replace( /&/g, '&amp;' ) ;
+	text = text.replace( /</g, '&lt;' ) ;
+	text = text.replace( />/g, '&gt;' ) ;
 
 	return text ;
 }
 
-//**
-// FCKTools.GetResultingArray: Gets a array from a string (where the elements 
-// are separated by a character), a fuction (that returns a array) or a array.
-FCKTools.GetResultingArray = function( arraySource, separator )
+/**
+ * Adds an option to a SELECT element.
+ */
+FCKTools.AddSelectOption = function( selectElement, optionText, optionValue )
 {
-	switch ( typeof( arraySource ) )
-	{
-		case "string" :
-			return arraySource.split( separator ) ;
-		case "function" :
-			return separator() ;
-		default :
-			if ( isArray( arraySource ) ) return arraySource ;
-			else return new Array() ;
-	}
+	var oOption = FCKTools.GetElementDocument( selectElement ).createElement( "OPTION" ) ;
+
+	oOption.text	= optionText ;
+	oOption.value	= optionValue ;	
+
+	selectElement.options.add(oOption) ;
+
+	return oOption ;
 }
 
-FCKTools.GetElementPosition = function( el )
+FCKTools.RunFunction = function( func, thisObject, paramsArray, timerWindow )
 {
-	// Initializes the Coordinates object that will be returned by the function.
-	var c = { X:0, Y:0 } ;
-	
-	// Loop throw the offset chain.
-	while ( el )
-	{
-		c.X += el.offsetLeft ;
-		c.Y += el.offsetTop ;
-		
-		el = el.offsetParent ;
-	}
-	
-	// Return the Coordinates object
-	return c ;
+	if ( func )
+		this.SetTimeout( func, 0, thisObject, paramsArray, timerWindow ) ;
 }
 
-// START iCM MODIFICATIONS
-// Amended to accept a list of one or more ascensor tag names
-// Amended to check the element itself before working back up through the parent hierarchy
-FCKTools.GetElementAscensor = function( element, ascensorTagNames )
+FCKTools.SetTimeout = function( func, milliseconds, thisObject, paramsArray, timerWindow )
 {
-//	var e = element.parentNode ;
-	var e = element ;
-	var lstTags = "," + ascensorTagNames.toUpperCase() + "," ;
-
-	while ( e )
-	{
-		if ( lstTags.indexOf( "," + e.nodeName.toUpperCase() + "," ) != -1 )
-			return e ;
-
-		e = e.parentNode ;
-	}
-	return null ;
+	return ( timerWindow || window ).setTimeout( 
+		function()
+		{
+			if ( paramsArray )
+				func.apply( thisObject, [].concat( paramsArray ) ) ;
+			else
+				func.apply( thisObject ) ;
+		},
+		milliseconds ) ;
 }
-// END iCM MODIFICATIONS
 
-FCKTools.Pause = function( miliseconds )
+FCKTools.SetInterval = function( func, milliseconds, thisObject, paramsArray, timerWindow )
 {
-	var oStart = new Date() ;
-
-	while (true)
-	{ 
-		var oNow = new Date() ;
-		if ( miliseconds < oNow - oStart ) 
-			return ;
-	}
+	return ( timerWindow || window ).setInterval( 
+		function()
+		{
+			func.apply( thisObject, paramsArray || [] ) ;
+		},
+		milliseconds ) ;
 }
 
 FCKTools.ConvertStyleSizeToHtml = function( size )
@@ -213,74 +217,43 @@
 {
 	return size.endsWith( '%' ) ? size : ( size + 'px' ) ;
 }
+
 // START iCM MODIFICATIONS
-/*
-// Transfers the supplied attributes to the supplied node
-FCKTools.SetElementAttributes = function( oElement, oAttributes ) 
+// Amended to accept a list of one or more ascensor tag names
+// Amended to check the element itself before working back up through the parent hierarchy
+FCKTools.GetElementAscensor = function( element, ascensorTagNames )
 {
-	for ( var i = 0; i < oAttributes.length; i++ ) 
+//	var e = element.parentNode ;
+	var e = element ;
+	var lstTags = "," + ascensorTagNames.toUpperCase() + "," ;
+
+	while ( e )
 	{
-		if ( oAttributes[i].specified ) // Needed for IE which always returns all attributes whether set or not
-			oElement.setAttribute( oAttributes[i].nodeName, oAttributes[i].nodeValue, 0 ) ;
-	}
-}
+		if ( lstTags.indexOf( "," + e.nodeName.toUpperCase() + "," ) != -1 )
+			return e ;
 
-// Get immediate block node (P, H1, for example) for the supplied node - the supplied node may itself be a block node in which
-// case it will be returned. If no block node found, returns null.
-FCKTools.GetParentBlockNode = function( oNode )
-{
-	if ( oNode.nodeName.toUpperCase() == "BODY" )
-		return null ;
-	else if ( oNode.nodeType == 1 && FCKRegexLib.BlockElements.test(oNode.tagName) )
-		return oNode ;
-	else
-		return FCKTools.GetParentBlockNode( oNode.parentNode ) ;
+		e = e.parentNode ;
+	}
+	return null ;
 }
+// END iCM MODIFICATIONS
 
-// Run through any children of the supplied node. If there are none, or they only comprise 
-// empty text nodes and BR nodes, then the node is effectively empty.
-// Sometimes (on Gecko) a seemingly empty node is coming back with several children that are solely
-// empty text nodes and BRs e.g. the first item in an OL list, for example, when 
-// UseBROnCarriageReturn is set to false. 
-// Seems to be due to the use of the <br _moz_editor_bogus_node="TRUE"> (GECKO_BOGUS) as fillers both
-// in fck_gecko_1.js when html is empty and in ENTER key handler ? If normal BR tags are
-// used instead this doesn't seem to happen....
-FCKTools.NodeIsEmpty = function( oNode )
+FCKTools.CreateEventListener = function( func, params )
 {
-	var oSibling = oNode.childNodes[0] ;
-	while ( oSibling )
+	var f = function()
 	{
-		if ( ( oSibling.nodeType != 1 && oSibling.nodeType != 3 ) || ( oSibling.nodeType == 1 && oSibling.nodeName.toUpperCase() != "BR" ) || ( oSibling.nodeType == 3 && oSibling.nodeValue && oSibling.nodeValue.trim() != '' ) )
-			return false ;
+		var aAllParams = [] ;
 		
-		oSibling = oSibling.nextSibling ;
-	}
-
-	return true ;
-}
+		for ( var i = 0 ; i < arguments.length ; i++ )
+			aAllParams.push( arguments[i] ) ;
 
-// Returns a document fragment that contains a copy of the specified range of nodes
-FCKTools.GetDocumentFragment = function( oParentNode, oFromNode, oToNode, bIncludeFromNode, bIncludeToNode, bClone )
-{	
-	if ( typeof bIncludeFromNode == "undefined" )  bIncludeFromNode = true ;
-	if ( typeof bIncludeToNode == "undefined" )  bIncludeToNode = true ;
-	if ( typeof bClone == "undefined" )  bClone = true ;
+		func.apply( this, aAllParams.concat( params ) ) ;
+	} 
 
-	var oFragment = FCK.EditorDocument.createDocumentFragment() ;
-	
-	var oNode = oFromNode ;
-	while ( oNode && oNode != oToNode )
-	{
-		if ( oNode != oFromNode || bIncludeFromNode )
-			oFragment.appendChild( bClone ? oNode.cloneNode( true ) : oNode ) ;
-			
-		oNode = oNode.nextSibling ;
-	}
-
-	if ( oNode && (oFromNode != oToNode && bIncludeToNode) )
-		oFragment.appendChild( bClone ? oNode.cloneNode( true ) : oNode ) ; // Include To Node
-
-	return oFragment ;
+	return f ;
 }
-*/
-// END iCM MODIFICATIONS
+
+FCKTools.GetElementDocument = function ( element )
+{
+	return element.ownerDocument || element.document ;
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckundo_gecko.js 1.4.1.src/fckeditor/editor/_source/internals/fckundo_gecko.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckundo_gecko.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckundo_gecko.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,4 +1,23 @@
-﻿var FCKUndo = new Object() ;
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckundo_gecko.js
+ * 	Fake implementation to ignore calls on Gecko.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKUndo = new Object() ;
 
 FCKUndo.SaveUndoStep = function()
 {}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckundo_ie.js 1.4.1.src/fckeditor/editor/_source/internals/fckundo_ie.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckundo_ie.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckundo_ie.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,4 +1,23 @@
-﻿var FCKUndo = new Object() ;
+﻿/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fckundo_ie.js
+ * 	IE specific implementation for the Undo/Redo system.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+var FCKUndo = new Object() ;
 
 FCKUndo.SavedData = new Array() ;
 FCKUndo.CurrentIndex = -1 ;
@@ -7,6 +26,9 @@
 
 FCKUndo.SaveUndoStep = function()
 {
+	if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+		return ;
+
 	// Shrink the array to the current level.
 	FCKUndo.SavedData = FCKUndo.SavedData.slice( 0, FCKUndo.CurrentIndex + 1 ) ;
 
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckurlparams.js 1.4.1.src/fckeditor/editor/_source/internals/fckurlparams.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckurlparams.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckurlparams.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckxhtmlentities.js 1.4.1.src/fckeditor/editor/_source/internals/fckxhtmlentities.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckxhtmlentities.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckxhtmlentities.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -19,304 +19,310 @@
 
 var FCKXHtmlEntities = new Object() ;
 
-if ( FCKConfig.ProcessHTMLEntities )
+FCKXHtmlEntities.Initialize = function()
 {
-	FCKXHtmlEntities.Entities = {
-		// Latin-1 Entities
-		' ':'nbsp',
-		'¡':'iexcl',
-		'¢':'cent',
-		'£':'pound',
-		'¤':'curren',
-		'¥':'yen',
-		'¦':'brvbar',
-		'§':'sect',
-		'¨':'uml',
-		'©':'copy',
-		'ª':'ordf',
-		'«':'laquo',
-		'¬':'not',
-		'­':'shy',
-		'®':'reg',
-		'¯':'macr',
-		'°':'deg',
-		'±':'plusmn',
-		'²':'sup2',
-		'³':'sup3',
-		'´':'acute',
-		'µ':'micro',
-		'¶':'para',
-		'·':'middot',
-		'¸':'cedil',
-		'¹':'sup1',
-		'º':'ordm',
-		'»':'raquo',
-		'¼':'frac14',
-		'½':'frac12',
-		'¾':'frac34',
-		'¿':'iquest',
-		'×':'times',
-		'÷':'divide',
-
-		// Symbols and Greek Letters 
-
-		'ƒ':'fnof',
-		'•':'bull',
-		'…':'hellip',
-		'′':'prime',
-		'″':'Prime',
-		'‾':'oline',
-		'⁄':'frasl',
-		'℘':'weierp',
-		'ℑ':'image',
-		'ℜ':'real',
-		'™':'trade',
-		'ℵ':'alefsym',
-		'←':'larr',
-		'↑':'uarr',
-		'→':'rarr',
-		'↓':'darr',
-		'↔':'harr',
-		'↵':'crarr',
-		'⇐':'lArr',
-		'⇑':'uArr',
-		'⇒':'rArr',
-		'⇓':'dArr',
-		'⇔':'hArr',
-		'∀':'forall',
-		'∂':'part',
-		'∃':'exist',
-		'∅':'empty',
-		'∇':'nabla',
-		'∈':'isin',
-		'∉':'notin',
-		'∋':'ni',
-		'∏':'prod',
-		'∑':'sum',
-		'−':'minus',
-		'∗':'lowast',
-		'√':'radic',
-		'∝':'prop',
-		'∞':'infin',
-		'∠':'ang',
-		'∧':'and',
-		'∨':'or',
-		'∩':'cap',
-		'∪':'cup',
-		'∫':'int',
-		'∴':'there4',
-		'∼':'sim',
-		'≅':'cong',
-		'≈':'asymp',
-		'≠':'ne',
-		'≡':'equiv',
-		'≤':'le',
-		'≥':'ge',
-		'⊂':'sub',
-		'⊃':'sup',
-		'⊄':'nsub',
-		'⊆':'sube',
-		'⊇':'supe',
-		'⊕':'oplus',
-		'⊗':'otimes',
-		'⊥':'perp',
-		'⋅':'sdot',
-		'◊':'loz',
-		'♠':'spades',
-		'♣':'clubs',
-		'♥':'hearts',
-		'♦':'diams',
-
-		// Other Special Characters 
-
-		'"':'quot',
-	//	'&':'amp',		// This entity is automatically handled by the XHTML parser.
-	//	'<':'lt',		// This entity is automatically handled by the XHTML parser.
-	//	'>':'gt',		// This entity is automatically handled by the XHTML parser.
-		'ˆ':'circ',
-		'˜':'tilde',
-		' ':'ensp',
-		' ':'emsp',
-		' ':'thinsp',
-		'‌':'zwnj',
-		'‍':'zwj',
-		'‎':'lrm',
-		'‏':'rlm',
-		'–':'ndash',
-		'—':'mdash',
-		'‘':'lsquo',
-		'’':'rsquo',
-		'‚':'sbquo',
-		'“':'ldquo',
-		'”':'rdquo',
-		'„':'bdquo',
-		'†':'dagger',
-		'‡':'Dagger',
-		'‰':'permil',
-		'‹':'lsaquo',
-		'›':'rsaquo',
-		'€':'euro'
-	} ;
-
-	FCKXHtmlEntities.Chars = '' ;
-
-	// Process Base Entities.
-	for ( var e in FCKXHtmlEntities.Entities )
-		FCKXHtmlEntities.Chars += e ;
+	if ( FCKXHtmlEntities.Entities )
+		return ;
 
-	// Include Latin Letters Entities.
-	if ( FCKConfig.IncludeLatinEntities )
+	if ( FCKConfig.ProcessHTMLEntities )
 	{
-		var oEntities = {
-			'À':'Agrave',
-			'Á':'Aacute',
-			'Â':'Acirc',
-			'Ã':'Atilde',
-			'Ä':'Auml',
-			'Å':'Aring',
-			'Æ':'AElig',
-			'Ç':'Ccedil',
-			'È':'Egrave',
-			'É':'Eacute',
-			'Ê':'Ecirc',
-			'Ë':'Euml',
-			'Ì':'Igrave',
-			'Í':'Iacute',
-			'Î':'Icirc',
-			'Ï':'Iuml',
-			'Ð':'ETH',
-			'Ñ':'Ntilde',
-			'Ò':'Ograve',
-			'Ó':'Oacute',
-			'Ô':'Ocirc',
-			'Õ':'Otilde',
-			'Ö':'Ouml',
-			'Ø':'Oslash',
-			'Ù':'Ugrave',
-			'Ú':'Uacute',
-			'Û':'Ucirc',
-			'Ü':'Uuml',
-			'Ý':'Yacute',
-			'Þ':'THORN',
-			'ß':'szlig',
-			'à':'agrave',
-			'á':'aacute',
-			'â':'acirc',
-			'ã':'atilde',
-			'ä':'auml',
-			'å':'aring',
-			'æ':'aelig',
-			'ç':'ccedil',
-			'è':'egrave',
-			'é':'eacute',
-			'ê':'ecirc',
-			'ë':'euml',
-			'ì':'igrave',
-			'í':'iacute',
-			'î':'icirc',
-			'ï':'iuml',
-			'ð':'eth',
-			'ñ':'ntilde',
-			'ò':'ograve',
-			'ó':'oacute',
-			'ô':'ocirc',
-			'õ':'otilde',
-			'ö':'ouml',
-			'ø':'oslash',
-			'ù':'ugrave',
-			'ú':'uacute',
-			'û':'ucirc',
-			'ü':'uuml',
-			'ý':'yacute',
-			'þ':'thorn',
-			'ÿ':'yuml',
-			'Œ':'OElig',
-			'œ':'oelig',
-			'Š':'Scaron',
-			'š':'scaron',
-			'Ÿ':'Yuml'
-		} ; 
-		
-		for ( var e in oEntities )
-		{
-			FCKXHtmlEntities.Entities[ e ] = oEntities[ e ] ;
+		FCKXHtmlEntities.Entities = {
+			// Latin-1 Entities
+			' ':'nbsp',
+			'¡':'iexcl',
+			'¢':'cent',
+			'£':'pound',
+			'¤':'curren',
+			'¥':'yen',
+			'¦':'brvbar',
+			'§':'sect',
+			'¨':'uml',
+			'©':'copy',
+			'ª':'ordf',
+			'«':'laquo',
+			'¬':'not',
+			'­':'shy',
+			'®':'reg',
+			'¯':'macr',
+			'°':'deg',
+			'±':'plusmn',
+			'²':'sup2',
+			'³':'sup3',
+			'´':'acute',
+			'µ':'micro',
+			'¶':'para',
+			'·':'middot',
+			'¸':'cedil',
+			'¹':'sup1',
+			'º':'ordm',
+			'»':'raquo',
+			'¼':'frac14',
+			'½':'frac12',
+			'¾':'frac34',
+			'¿':'iquest',
+			'×':'times',
+			'÷':'divide',
+
+			// Symbols and Greek Letters 
+
+			'ƒ':'fnof',
+			'•':'bull',
+			'…':'hellip',
+			'′':'prime',
+			'″':'Prime',
+			'‾':'oline',
+			'⁄':'frasl',
+			'℘':'weierp',
+			'ℑ':'image',
+			'ℜ':'real',
+			'™':'trade',
+			'ℵ':'alefsym',
+			'←':'larr',
+			'↑':'uarr',
+			'→':'rarr',
+			'↓':'darr',
+			'↔':'harr',
+			'↵':'crarr',
+			'⇐':'lArr',
+			'⇑':'uArr',
+			'⇒':'rArr',
+			'⇓':'dArr',
+			'⇔':'hArr',
+			'∀':'forall',
+			'∂':'part',
+			'∃':'exist',
+			'∅':'empty',
+			'∇':'nabla',
+			'∈':'isin',
+			'∉':'notin',
+			'∋':'ni',
+			'∏':'prod',
+			'∑':'sum',
+			'−':'minus',
+			'∗':'lowast',
+			'√':'radic',
+			'∝':'prop',
+			'∞':'infin',
+			'∠':'ang',
+			'∧':'and',
+			'∨':'or',
+			'∩':'cap',
+			'∪':'cup',
+			'∫':'int',
+			'∴':'there4',
+			'∼':'sim',
+			'≅':'cong',
+			'≈':'asymp',
+			'≠':'ne',
+			'≡':'equiv',
+			'≤':'le',
+			'≥':'ge',
+			'⊂':'sub',
+			'⊃':'sup',
+			'⊄':'nsub',
+			'⊆':'sube',
+			'⊇':'supe',
+			'⊕':'oplus',
+			'⊗':'otimes',
+			'⊥':'perp',
+			'⋅':'sdot',
+			'◊':'loz',
+			'♠':'spades',
+			'♣':'clubs',
+			'♥':'hearts',
+			'♦':'diams',
+
+			// Other Special Characters 
+
+			'"':'quot',
+		//	'&':'amp',		// This entity is automatically handled by the XHTML parser.
+		//	'<':'lt',		// This entity is automatically handled by the XHTML parser.
+		//	'>':'gt',		// This entity is automatically handled by the XHTML parser.
+			'ˆ':'circ',
+			'˜':'tilde',
+			' ':'ensp',
+			' ':'emsp',
+			' ':'thinsp',
+			'‌':'zwnj',
+			'‍':'zwj',
+			'‎':'lrm',
+			'‏':'rlm',
+			'–':'ndash',
+			'—':'mdash',
+			'‘':'lsquo',
+			'’':'rsquo',
+			'‚':'sbquo',
+			'“':'ldquo',
+			'”':'rdquo',
+			'„':'bdquo',
+			'†':'dagger',
+			'‡':'Dagger',
+			'‰':'permil',
+			'‹':'lsaquo',
+			'›':'rsaquo',
+			'€':'euro'
+		} ;
+
+		FCKXHtmlEntities.Chars = '' ;
+
+		// Process Base Entities.
+		for ( var e in FCKXHtmlEntities.Entities )
 			FCKXHtmlEntities.Chars += e ;
-		}
-		
-		oEntities = null ;
-	}
 
-	// Include Greek Letters Entities.
-	if ( FCKConfig.IncludeGreekEntities )
-	{
-		var oEntities = {
-			'Α':'Alpha',
-			'Β':'Beta',
-			'Γ':'Gamma',
-			'Δ':'Delta',
-			'Ε':'Epsilon',
-			'Ζ':'Zeta',
-			'Η':'Eta',
-			'Θ':'Theta',
-			'Ι':'Iota',
-			'Κ':'Kappa',
-			'Λ':'Lambda',
-			'Μ':'Mu',
-			'Ν':'Nu',
-			'Ξ':'Xi',
-			'Ο':'Omicron',
-			'Π':'Pi',
-			'Ρ':'Rho',
-			'Σ':'Sigma',
-			'Τ':'Tau',
-			'Υ':'Upsilon',
-			'Φ':'Phi',
-			'Χ':'Chi',
-			'Ψ':'Psi',
-			'Ω':'Omega',
-			'α':'alpha',
-			'β':'beta',
-			'γ':'gamma',
-			'δ':'delta',
-			'ε':'epsilon',
-			'ζ':'zeta',
-			'η':'eta',
-			'θ':'theta',
-			'ι':'iota',
-			'κ':'kappa',
-			'λ':'lambda',
-			'μ':'mu',
-			'ν':'nu',
-			'ξ':'xi',
-			'ο':'omicron',
-			'π':'pi',
-			'ρ':'rho',
-			'ς':'sigmaf',
-			'σ':'sigma',
-			'τ':'tau',
-			'υ':'upsilon',
-			'φ':'phi',
-			'χ':'chi',
-			'ψ':'psi',
-			'ω':'omega'
-		} ;
+		// Include Latin Letters Entities.
+		if ( FCKConfig.IncludeLatinEntities )
+		{
+			var oEntities = {
+				'À':'Agrave',
+				'Á':'Aacute',
+				'Â':'Acirc',
+				'Ã':'Atilde',
+				'Ä':'Auml',
+				'Å':'Aring',
+				'Æ':'AElig',
+				'Ç':'Ccedil',
+				'È':'Egrave',
+				'É':'Eacute',
+				'Ê':'Ecirc',
+				'Ë':'Euml',
+				'Ì':'Igrave',
+				'Í':'Iacute',
+				'Î':'Icirc',
+				'Ï':'Iuml',
+				'Ð':'ETH',
+				'Ñ':'Ntilde',
+				'Ò':'Ograve',
+				'Ó':'Oacute',
+				'Ô':'Ocirc',
+				'Õ':'Otilde',
+				'Ö':'Ouml',
+				'Ø':'Oslash',
+				'Ù':'Ugrave',
+				'Ú':'Uacute',
+				'Û':'Ucirc',
+				'Ü':'Uuml',
+				'Ý':'Yacute',
+				'Þ':'THORN',
+				'ß':'szlig',
+				'à':'agrave',
+				'á':'aacute',
+				'â':'acirc',
+				'ã':'atilde',
+				'ä':'auml',
+				'å':'aring',
+				'æ':'aelig',
+				'ç':'ccedil',
+				'è':'egrave',
+				'é':'eacute',
+				'ê':'ecirc',
+				'ë':'euml',
+				'ì':'igrave',
+				'í':'iacute',
+				'î':'icirc',
+				'ï':'iuml',
+				'ð':'eth',
+				'ñ':'ntilde',
+				'ò':'ograve',
+				'ó':'oacute',
+				'ô':'ocirc',
+				'õ':'otilde',
+				'ö':'ouml',
+				'ø':'oslash',
+				'ù':'ugrave',
+				'ú':'uacute',
+				'û':'ucirc',
+				'ü':'uuml',
+				'ý':'yacute',
+				'þ':'thorn',
+				'ÿ':'yuml',
+				'Œ':'OElig',
+				'œ':'oelig',
+				'Š':'Scaron',
+				'š':'scaron',
+				'Ÿ':'Yuml'
+			} ; 
+			
+			for ( var e in oEntities )
+			{
+				FCKXHtmlEntities.Entities[ e ] = oEntities[ e ] ;
+				FCKXHtmlEntities.Chars += e ;
+			}
+			
+			oEntities = null ;
+		}
 
-		for ( var e in oEntities )
+		// Include Greek Letters Entities.
+		if ( FCKConfig.IncludeGreekEntities )
 		{
-			FCKXHtmlEntities.Entities[ e ] = oEntities[ e ] ;
-			FCKXHtmlEntities.Chars += e ;
+			var oEntities = {
+				'Α':'Alpha',
+				'Β':'Beta',
+				'Γ':'Gamma',
+				'Δ':'Delta',
+				'Ε':'Epsilon',
+				'Ζ':'Zeta',
+				'Η':'Eta',
+				'Θ':'Theta',
+				'Ι':'Iota',
+				'Κ':'Kappa',
+				'Λ':'Lambda',
+				'Μ':'Mu',
+				'Ν':'Nu',
+				'Ξ':'Xi',
+				'Ο':'Omicron',
+				'Π':'Pi',
+				'Ρ':'Rho',
+				'Σ':'Sigma',
+				'Τ':'Tau',
+				'Υ':'Upsilon',
+				'Φ':'Phi',
+				'Χ':'Chi',
+				'Ψ':'Psi',
+				'Ω':'Omega',
+				'α':'alpha',
+				'β':'beta',
+				'γ':'gamma',
+				'δ':'delta',
+				'ε':'epsilon',
+				'ζ':'zeta',
+				'η':'eta',
+				'θ':'theta',
+				'ι':'iota',
+				'κ':'kappa',
+				'λ':'lambda',
+				'μ':'mu',
+				'ν':'nu',
+				'ξ':'xi',
+				'ο':'omicron',
+				'π':'pi',
+				'ρ':'rho',
+				'ς':'sigmaf',
+				'σ':'sigma',
+				'τ':'tau',
+				'υ':'upsilon',
+				'φ':'phi',
+				'χ':'chi',
+				'ψ':'psi',
+				'ω':'omega'
+			} ;
+
+			for ( var e in oEntities )
+			{
+				FCKXHtmlEntities.Entities[ e ] = oEntities[ e ] ;
+				FCKXHtmlEntities.Chars += e ;
+			}
+
+			oEntities = null ;
 		}
 
-		oEntities = null ;
+		// Create and Compile the Regex used to separate the entities from the text.
+		FCKXHtmlEntities.EntitiesRegex = new RegExp('[' + FCKXHtmlEntities.Chars + ']|[^' + FCKXHtmlEntities.Chars + ']+','g') ;
+	//	FCKXHtmlEntities.EntitiesRegex.compile( '[' + FCKXHtmlEntities.Chars + ']|[^' + FCKXHtmlEntities.Chars + ']+', 'g' ) ;
+	}
+	else
+	{
+		// Even if we are not processing the entities, we must respect the &nbsp;.
+		FCKXHtmlEntities.Entities = { ' ':'nbsp' } ;
+		FCKXHtmlEntities.EntitiesRegex = /[ ]|[^ ]+/g ;
 	}
-
-	// Create and Compile the Regex used to separate the entities from the text.
-	FCKXHtmlEntities.EntitiesRegex = new RegExp('','') ;
-	FCKXHtmlEntities.EntitiesRegex.compile( '[' + FCKXHtmlEntities.Chars + ']|[^' + FCKXHtmlEntities.Chars + ']+', 'g' ) ;
-}
-else
-{
-	// Even if we are not processing the entities, we must respect the &nbsp;.
-	FCKXHtmlEntities.Entities = { ' ':'nbsp' } ;
-	FCKXHtmlEntities.EntitiesRegex = /[ ]|[^ ]+/g ;
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckxhtml_gecko.js 1.4.1.src/fckeditor/editor/_source/internals/fckxhtml_gecko.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckxhtml_gecko.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckxhtml_gecko.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -49,8 +49,8 @@
 			var sAttName = oAttribute.nodeName.toLowerCase() ;
 			var sAttValue ;
 
-			// The "_fckxhtmljob" attribute is used to mark the already processed elements.
-			if ( sAttName == '_fckxhtmljob' )
+			// Ignore any attribute starting with "_fck".
+			if ( sAttName.startsWith( '_fck' ) )
 				continue ;
 			// There is a bug in Mozilla that returns '_moz_xxx' attributes as specified.
 			else if ( sAttName.indexOf( '_moz' ) == 0 )
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckxhtml_ie.js 1.4.1.src/fckeditor/editor/_source/internals/fckxhtml_ie.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckxhtml_ie.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckxhtml_ie.js	2006-06-17 16:25:26.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -41,8 +41,8 @@
 			var sAttName = oAttribute.nodeName.toLowerCase() ;
 			var sAttValue ;
 
-			// The "_fckxhtmljob" attribute is used to mark the already processed elements.
-			if ( sAttName == '_fckxhtmljob' )
+			// Ignore any attribute starting with "_fck".
+			if ( sAttName.startsWith( '_fck' ) )
 				continue ;
 			// The following must be done because of a bug on IE regarding the style
 			// attribute. It returns "null" for the nodeValue.
@@ -123,9 +123,13 @@
 	return node ;
 }
 
-// There is a BUG in IE regarding the ABBR tag.
+// There is a BUG in IE regarding the ABBR tag (it has no support for it).
 FCKXHtml.TagProcessors['abbr'] = function( node, htmlNode )
 {
+	// TODO: The XHTML processor duplicates the ABBR contents because of this 
+	// code. We should find some way to move to the node after the /ABBR in the
+	// _AppendChildNodes loop.
+
 	var oNextNode = htmlNode.nextSibling ;
 
 	while ( true )
@@ -174,7 +178,7 @@
 
 FCKXHtml.TagProcessors['form'] = function( node, htmlNode )
 {
-	if ( htmlNode.acceptCharset.length > 0 && htmlNode.acceptCharset != 'UNKNOWN' )
+	if ( htmlNode.acceptCharset && htmlNode.acceptCharset.length > 0 && htmlNode.acceptCharset != 'UNKNOWN' )
 		FCKXHtml._AppendAttribute( node, 'accept-charset', htmlNode.acceptCharset ) ;
 
 	if ( htmlNode.name ) 
@@ -194,4 +198,15 @@
 	FCKXHtml._AppendChildNodes( node, htmlNode ) ; 
  
 	return node ; 
-} 
\ No newline at end of file
+} 
+
+// On very rare cases, IE is loosing the "align" attribute for DIV. (right align and apply bulleted list)
+FCKXHtml.TagProcessors['div'] = function( node, htmlNode )
+{
+	if ( htmlNode.align.length > 0 )
+		FCKXHtml._AppendAttribute( node, 'align', htmlNode.align ) ;
+
+	FCKXHtml._AppendChildNodes( node, htmlNode ) ;
+
+	return node ;
+}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckxhtml.js 1.4.1.src/fckeditor/editor/_source/internals/fckxhtml.js
--- 1.4.0sr5-1.src/fckeditor/editor/_source/internals/fckxhtml.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/editor/_source/internals/fckxhtml.js	2006-09-03 13:05:03.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -23,6 +23,10 @@
 
 FCKXHtml.GetXHTML = function( node, includeNode, format )
 {
+	FCKXHtmlEntities.Initialize() ;
+	
+	this._CreateNode = FCKConfig.ForceStrongEm ? FCKXHtml_CreateNode_StrongEm : FCKXHtml_CreateNode_Normal ;
+
 	// Special blocks are blocks of content that remain untouched during the
 	// process. It is used for SCRIPTs and STYLEs.
 	FCKXHtml.SpecialBlocks = new Array() ;
@@ -91,16 +95,14 @@
 {
 	var iCount = 0 ;
 	
-	if ( htmlNode.hasChildNodes() )
+	var oNode = htmlNode.firstChild ;
+
+	while ( oNode )
 	{
-		// Get all children nodes.
-		var oChildren = htmlNode.childNodes ;
+		if ( this._AppendNode( xmlNode, oNode ) )
+			iCount++ ;
 
-		for ( var i = 0 ; i < oChildren.length ; i++ )
-		{
-			if ( this._AppendNode( xmlNode, oChildren[i] ) )
-				iCount++ ;
-		}
+		oNode = oNode.nextSibling ;
 	}
 	
 	if ( iCount == 0 )
@@ -120,10 +122,16 @@
 
 FCKXHtml._AppendNode = function( xmlNode, htmlNode )
 {
+	if ( !htmlNode )
+		return ;
+
 	switch ( htmlNode.nodeType )
 	{
 		// Element Node.
 		case 1 :
+
+			// Here we found an element that is not the real element, but a 
+			// fake one (like the Flash placeholder image), so we must get the real one.
 			if ( htmlNode.getAttribute('_fckfakelement') )
 				return FCKXHtml._AppendNode( xmlNode, FCK.GetRealElement( htmlNode ) ) ;
 		
@@ -131,13 +139,21 @@
 			if ( FCKBrowserInfo.IsGecko && htmlNode.hasAttribute('_moz_editor_bogus_node') )
 				return false ;
 			
-			if ( htmlNode.getAttribute('_fckdelete') )
+			// This is for elements that are instrumental to FCKeditor and 
+			// must be removed from the final HTML.
+			if ( htmlNode.getAttribute('_fcktemp') )
 				return false ;
 
-			// Create the Element.
+			// Get the element name.
 			var sNodeName = htmlNode.nodeName ;
+			
+			//Add namespace:
+			if ( FCKBrowserInfo.IsIE && htmlNode.scopeName && htmlNode.scopeName != 'HTML' )
+				sNodeName = htmlNode.scopeName + ':' + sNodeName ;
 
 			// Check if the node name is valid, otherwise ignore this tag.
+			// If the nodeName starts with a slash, it is a orphan closing tag.
+			// On some strange cases, the nodeName is empty, even if the node exists.
 			if ( !FCKRegexLib.ElementName.test( sNodeName ) )
 				return false ;
 
@@ -150,25 +166,20 @@
 			// So here, the "mark" is checked... if the element is Ok, then mark it.
 			if ( htmlNode._fckxhtmljob && htmlNode._fckxhtmljob == FCKXHtml.CurrentJobNum )
 				return false ;
-			else
-				htmlNode._fckxhtmljob = FCKXHtml.CurrentJobNum ;
-
-			// If the nodeName starts with a slash, it is a orphan closing tag.
-			// On some strange cases, the nodeName is empty, even if the node exists.
-//			if ( sNodeName.length == 0 || sNodeName.substr(0,1) == '/' )
-//				break ;
 
 			var oNode = this._CreateNode( sNodeName ) ;
 			
 			// Add all attributes.
 			FCKXHtml._AppendAttributes( xmlNode, htmlNode, oNode, sNodeName ) ;
+			
+			htmlNode._fckxhtmljob = FCKXHtml.CurrentJobNum ;
 
 			// Tag specific processing.
 			var oTagProcessor = FCKXHtml.TagProcessors[ sNodeName ] ;
 
 			if ( oTagProcessor )
 			{
-				oNode = oTagProcessor( oNode, htmlNode ) ;
+				oNode = oTagProcessor( oNode, htmlNode, xmlNode ) ;
 				if ( !oNode ) break ;
 			}
 			else
@@ -197,34 +208,29 @@
 	return true ;
 }
 
-if ( FCKConfig.ForceStrongEm )
+function FCKXHtml_CreateNode_StrongEm( nodeName )
 {
-	FCKXHtml._CreateNode = function( nodeName )
+	switch ( nodeName )
 	{
-		switch ( nodeName )
-		{
-			case 'b' :
-				nodeName = 'strong' ;
-				break ;
-			case 'i' :
-				nodeName = 'em' ;
-				break ;
-		}
-		return this.XML.createElement( nodeName ) ;
+		case 'b' :
+			nodeName = 'strong' ;
+			break ;
+		case 'i' :
+			nodeName = 'em' ;
+			break ;
 	}
+	return this.XML.createElement( nodeName ) ;
 }
-else
+
+function FCKXHtml_CreateNode_Normal( nodeName )
 {
-	FCKXHtml._CreateNode = function( nodeName )
-	{
-		return this.XML.createElement( nodeName ) ;
-	}
+	return this.XML.createElement( nodeName ) ;
 }
 
 // Append an item to the SpecialBlocks array and returns the tag to be used.
 FCKXHtml._AppendSpecialItem = function( item )
 {
-	return '___FCKsi___' + FCKXHtml.SpecialBlocks.addItem( item ) ;
+	return '___FCKsi___' + FCKXHtml.SpecialBlocks.AddItem( item ) ;
 }
 
 //if ( FCKConfig.ProcessHTMLEntities )
@@ -265,12 +271,27 @@
 // An object that hold tag specific operations.
 FCKXHtml.TagProcessors = new Object() ;
 
-FCKXHtml.TagProcessors['img'] = function( node )
+FCKXHtml.TagProcessors['img'] = function( node, htmlNode )
 {
 	// The "ALT" attribute is required in XHTML.
 	if ( ! node.attributes.getNamedItem( 'alt' ) )
 		FCKXHtml._AppendAttribute( node, 'alt', '' ) ;
 
+	var sSavedUrl = htmlNode.getAttribute( '_fcksavedurl' ) ;
+	if ( sSavedUrl && sSavedUrl.length > 0 )
+		FCKXHtml._AppendAttribute( node, 'src', sSavedUrl ) ;
+
+	return node ;
+}
+
+FCKXHtml.TagProcessors['a'] = function( node, htmlNode )
+{
+	var sSavedUrl = htmlNode.getAttribute( '_fcksavedurl' ) ;
+	if ( sSavedUrl && sSavedUrl.length > 0 )
+		FCKXHtml._AppendAttribute( node, 'href', sSavedUrl ) ;
+
+	FCKXHtml._AppendChildNodes( node, htmlNode, false ) ;
+
 	return node ;
 }
 
@@ -287,11 +308,6 @@
 
 FCKXHtml.TagProcessors['style'] = function( node, htmlNode )
 {
-	// The "_fcktemp" attribute is used to mark the <STYLE> used by the editor
-	// to set some behaviors.
-	if ( htmlNode.getAttribute( '_fcktemp' ) )
-		return null ;
-
 	// The "TYPE" attribute is required in XHTML.
 	if ( ! node.attributes.getNamedItem( 'type' ) )
 		FCKXHtml._AppendAttribute( node, 'type', 'text/css' ) ;
@@ -308,29 +324,6 @@
 	return node ;
 }
 
-FCKXHtml.TagProcessors['base'] = function( node, htmlNode )
-{
-	// The "_fcktemp" attribute is used to mark the <BASE> tag when the editor
-	// automatically sets it using the FCKConfig.BaseHref configuration.
-	if ( htmlNode.getAttribute( '_fcktemp' ) )
-		return null ;
-
-	// IE duplicates the BODY inside the <BASE /> tag (don't ask me why!).
-	// This tag processor does nothing... in this way, no child nodes are added
-	// (also because the BASE tag must be empty).
-	return node ;
-}
-
-FCKXHtml.TagProcessors['link'] = function( node, htmlNode )
-{
-	// The "_fcktemp" attribute is used to mark the fck_internal.css <LINK>
-	// reference.
-	if ( htmlNode.getAttribute( '_fcktemp' ) )
-		return null ;
-
-	return node ;
-}
-
 FCKXHtml.TagProcessors['table'] = function( node, htmlNode )
 {
 	// There is a trick to show table borders when border=0. We add to the
@@ -351,4 +344,27 @@
 	FCKXHtml._AppendChildNodes( node, htmlNode, false ) ;
 
 	return node ;
+}
+
+// Fix nested <ul> and <ol>.
+FCKXHtml.TagProcessors['ol'] = FCKXHtml.TagProcessors['ul'] = function( node, htmlNode, targetNode )
+{
+	if ( htmlNode.innerHTML.trim().length == 0 )
+		return ;
+
+	var ePSibling = targetNode.lastChild ;
+	
+	if ( ePSibling && ePSibling.nodeType == 3 )
+		ePSibling = ePSibling.previousSibling ;
+	
+	if ( ePSibling && ePSibling.nodeName.toUpperCase() == 'LI' )
+	{
+		htmlNode._fckxhtmljob = null ;
+		FCKXHtml._AppendNode( ePSibling, htmlNode ) ;
+		return ;
+	}
+
+	FCKXHtml._AppendChildNodes( node, htmlNode ) ;
+
+	return node ;
 }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/fckconfig.js 1.4.1.src/fckeditor/fckconfig.js
--- 1.4.0sr5-1.src/fckeditor/fckconfig.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/fckconfig.js	2006-09-03 13:05:03.000000000 -0500
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  *         http://www.opensource.org/licenses/lgpl-license.php
@@ -8,6 +8,8 @@
  * For further information visit:
  *         http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fckconfig.js
  *     Editor configuration settings.
  *     See the documentation for more info.
@@ -20,32 +22,32 @@
 
 FCKConfig.EditorAreaCSS = FCKConfig.BasePath + 'css/fck_editorarea.css' ;
 
-FCKConfig.DocType = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' ;
+FCKConfig.DocType = '' ;
 
 FCKConfig.BaseHref = '' ;
 
 FCKConfig.FullPage = false ;
 
 FCKConfig.Debug = false ;
+FCKConfig.AllowQueryStringDebug = true ;
 
-FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/office2003/' ;
+FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/' ;
+FCKConfig.PreloadImages = [ FCKConfig.SkinPath + 'images/toolbar.start.gif', FCKConfig.SkinPath + 'images/toolbar.buttonarrow.gif' ] ;
 
 FCKConfig.PluginsPath = FCKConfig.BasePath + 'plugins/' ;
 
-// FCKConfig.Plugins.Add( 'placeholder', 'en,it' ) ;
+FCKConfig.Plugins.Add( 'autogrow' ) ;
+FCKConfig.AutoGrowMax = 400 ;
 
-FCKConfig.ProtectedSource.Add( /<script[\s\S]*?\/script>/gi ) ;	// <SCRIPT> tags.
-// FCKConfig.ProtectedSource.Add( /<%[\s\S]*?%>/g ) ;	// ASP style server side code <%...%>
-// FCKConfig.ProtectedSource.Add( /<\?[\s\S]*?\?>/g ) ;	// PHP style server side code <?...?>
-// FCKConfig.ProtectedSource.Add( /(<asp:[^\>]+>[\s|\S]*?<\/asp:[^\>]+>)|(<asp:[^\>]+\/>)/gi ) ;	// ASP.Net style tags <asp:control>
+FCKConfig.ProtectedSource.Add( /<script[\s\S]*?<\/script>/gi ) ; // <SCRIPT> tags.
+// FCKConfig.ProtectedSource.Add( /<%[\s\S]*?%>/g ) ;    // ASP style server side code <%...%>
+// FCKConfig.ProtectedSource.Add( /<\?[\s\S]*?\?>/g ) ;    // PHP style server side code
+// FCKConfig.ProtectedSource.Add( /(<asp:[^\>]+>[\s|\S]*?<\/asp:[^\>]+>)|(<asp:[^\>]+\/>)/gi ) ;    // ASP.Net style tags <asp:control>
 
 FCKConfig.AutoDetectLanguage    = true ;
 FCKConfig.DefaultLanguage        = 'en' ;
 FCKConfig.ContentLangDirection    = 'ltr' ;
 
-FCKConfig.EnableXHTML        = true ;    // Unsupported: Do not change.
-FCKConfig.EnableSourceXHTML    = true ;
-
 FCKConfig.ProcessHTMLEntities    = true ;
 FCKConfig.IncludeLatinEntities    = true ;
 FCKConfig.IncludeGreekEntities    = true ;
@@ -56,84 +58,45 @@
 FCKConfig.FormatOutput        = true ;
 FCKConfig.FormatIndentator    = '    ' ;
 
-// Determine how Bold and Italic emphasis are treated - what html format to use.
-FCKConfig.ForceStrongEm = false ;   // Setting of True use <strong> else <b> tag
-FCKConfig.GeckoUseSPAN  = false ;   // Setting of True use <span> tags
-
-FCKConfig.StartupFocus    = true ;
+FCKConfig.ForceStrongEm = true ;
+FCKConfig.GeckoUseSPAN    = false ;
+FCKConfig.StartupFocus    = false ;
 FCKConfig.ForcePasteAsPlainText    = false ;
-FCKConfig.AutoDetectPasteFromWord = true ;	// IE only.
+FCKConfig.AutoDetectPasteFromWord = true ;    // IE only.
 FCKConfig.ForceSimpleAmpersand    = false ;
 FCKConfig.TabSpaces        = 0 ;
 FCKConfig.ShowBorders    = true ;
-FCKConfig.UseBROnCarriageReturn    = false ;
+FCKConfig.SourcePopup    = false ;
+FCKConfig.UseBROnCarriageReturn    = false ;    // IE only.
 FCKConfig.ToolbarStartExpanded    = true ;
 FCKConfig.ToolbarCanCollapse    = true ;
-FCKConfig.IEForceVScroll = false ;
 FCKConfig.IgnoreEmptyParagraphValue = true ;
+FCKConfig.PreserveSessionOnFileBrowser = false ;
+FCKConfig.FloatingPanelsZIndex = 10000 ;
 
-FCKConfig.Plugins.Add( 'FullWindow' ) ;
-FCKConfig.Plugins.Add( 'CloseWindow' ) ;
-
-FCKConfig.ToolbarSets["NewToolbarClose"] = [
-    ['Source','-','Undo','Redo','-','Link','Unlink','-','Bold','Italic','Underline','StrikeThrough',
-    '-','JustifyLeft','JustifyCenter','JustifyRight','JustifyFull',
-    '-','OrderedList','UnorderedList','Outdent','Indent'],
-    ['PasteText','PasteWord','-','FontName','FontSize','TextColor','BGColor','-','Rule','-','Image','Table','CloseWindow','-','About']
-] ;
-FCKConfig.ToolbarSets["editor-toolbar1"] = [
-    ['Source','-','Undo','Redo','-','Link','Unlink','-','Bold','Italic',
-    '-','JustifyLeft','JustifyCenter','JustifyRight',
-    '-','OrderedList','UnorderedList','Outdent','Indent','FullWindow','About']
-] ;
-
-
-FCKConfig.ToolbarSets["editor-toolbar2"] = [
-    ['Source','-','Undo','Redo','-','Link','Unlink','-','Bold','Italic','Underline','StrikeThrough',
-    '-','JustifyLeft','JustifyCenter','JustifyRight','JustifyFull',
-    '-','OrderedList','UnorderedList','Outdent','Indent'],
-    ['PasteText','PasteWord','-','FontName','FontSize','TextColor','BGColor','-','Rule','-','Image','Table','FullWindow','-','About']
-] ;
+FCKConfig.ToolbarLocation = 'In' ;
 
-FCKConfig.ToolbarSets["editor-toolbar3"] = [
-    ['Source','Templates','-','Cut','Copy','Paste','PasteText','PasteWord','-',
-    'Undo','Redo','-','Link','Unlink','-','SpellCheck','Rule','-',
-    'Bold','Italic','Underline','StrikeThrough','-','Image','Table'],
-    ['TextColor','BGColor','-','JustifyLeft','JustifyCenter','JustifyRight','-',
-    'OrderedList','UnorderedList','-','Outdent','Indent','FontName','FontSize','-','About']
-] ;
-
-FCKConfig.ToolbarSets["editor-toolbar4"] = [
-    ['Source','Templates','-','Cut','Copy','Paste','PasteText','PasteWord','-',
-    'Find','Replace','-','Undo','Redo','-','RemoveFormat','-','Link','Unlink','-',
-    'Image','SpecialChar','-','Print','SpellCheck'],
-    ['Table','Rule','Bold','Italic','Underline','StrikeThrough','-',
-    'Subscript','Superscript','-','JustifyLeft','JustifyCenter','JustifyRight','JustifyFull','-',
-    'OrderedList','UnorderedList','-','Outdent','Indent','-','TextColor','BGColor','-','About'],
-    ['Style','-','FontFormat','-','FontName','-','FontSize']
-] ;
 FCKConfig.ToolbarSets["Default"] = [
     ['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],
     ['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],
     ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
+    ['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],
+    ['Smiley','SpecialChar','PageBreak','UniversalKey'], ['TextColor','BGColor'],
+    ['Image','Flash','Table','Rule'],
+    '/',
     ['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
     ['OrderedList','UnorderedList','-','Outdent','Indent'],
     ['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
-    ['Link','Unlink','Anchor'],
-    ['Image','Flash','Table'],
-	['Rule','Smiley','SpecialChar','UniversalKey'],
-    ['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],
+    ['Link','Unlink','Anchor'],['FitWindow','-','About'],
     '/',
-    ['Style','FontFormat','FontName','FontSize'],
-    ['TextColor','BGColor'],
-    ['About']
+    ['Style','FontFormat','FontName','FontSize']
 ] ;
 
 FCKConfig.ToolbarSets["Basic"] = [
     ['Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','About']
 ] ;
 
-FCKConfig.ContextMenu = ['Generic','Link','Anchor','Image','Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField','ImageButton','Button','BulletedList','NumberedList','TableCell','Table','Form'] ;
+FCKConfig.ContextMenu = ['Generic','Link','Anchor','Image','Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField','ImageButton','Button','BulletedList','NumberedList','Table','Form'] ;
 
 FCKConfig.FontColors = '000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,808080,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF' ;
 
@@ -145,12 +108,12 @@
 FCKConfig.TemplatesXmlPath    = FCKConfig.EditorPath + 'fcktemplates.xml' ;
 
 FCKConfig.SpellChecker            = 'ieSpell' ;    // 'ieSpell' | 'SpellerPages'
-FCKConfig.IeSpellDownloadUrl    = 'http://www.iespell.com/rel/ieSpellSetup211325.exe' ;
+FCKConfig.IeSpellDownloadUrl    = 'http://iespell.huhbw.com/ieSpellSetup220647.exe' ;
 
 FCKConfig.MaxUndoLevels = 15 ;
 
-FCKConfig.DisableImageHandles = false ;
-FCKConfig.DisableTableHandles = false ;
+FCKConfig.DisableObjectResizing = false ;
+FCKConfig.DisableFFTableHandles = true ;
 
 FCKConfig.LinkDlgHideTarget        = false ;
 FCKConfig.LinkDlgHideAdvanced    = false ;
@@ -160,42 +123,52 @@
 
 FCKConfig.FlashDlgHideAdvanced    = false ;
 
-FCKConfig.LinkBrowser = false;
-FCKConfig.LinkBrowserURL = '';
-FCKConfig.LinkBrowserWindowWidth    = screen.width * 0.7 ;    // 70%
-FCKConfig.LinkBrowserWindowHeight    = screen.height * 0.7 ;    // 70%
-
-FCKConfig.ImageBrowser = false;
-FCKConfig.ImageBrowserURL = '';
-FCKConfig.ImageBrowserWindowWidth  = screen.width * 0.7 ;    // 70% ;
-FCKConfig.ImageBrowserWindowHeight = screen.height * 0.7 ;    // 70% ;
-
-FCKConfig.FlashBrowser = false;
-FCKConfig.FlashBrowserURL = '';
-FCKConfig.FlashBrowserWindowWidth  = screen.width * 0.7 ;    //70% ;
-FCKConfig.FlashBrowserWindowHeight = screen.height * 0.7 ;    //70% ;
+// The following value defines which File Browser connector and Quick Upload 
+// "uploader" to use. It is valid for the default implementaion and it is here
+// just to make this configuration file cleaner. 
+// It is not possible to change this value using an external file or even 
+// inline when creating the editor instance. In that cases you must set the 
+// values of LinkBrowserURL, ImageBrowserURL and so on.
+// Custom implementations should just ignore it.
+var _FileBrowserLanguage    = 'php' ;    // asp | aspx | cfm | lasso | perl | php | py
+var _QuickUploadLanguage    = 'php' ;    // asp | aspx | cfm | lasso | php
+
+// Don't care about the following line. It just calculates the correct connector 
+// extension to use for the default File Browser (Perl uses "cgi").
+var _FileBrowserExtension = _FileBrowserLanguage == 'perl' ? 'cgi' : _FileBrowserLanguage ;
+
+FCKConfig.LinkBrowser = true ;
+FCKConfig.LinkBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Connector=connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ;
+FCKConfig.LinkBrowserWindowWidth    = FCKConfig.ScreenWidth * 0.7 ;        // 70%
+FCKConfig.LinkBrowserWindowHeight    = FCKConfig.ScreenHeight * 0.7 ;    // 70%
+
+FCKConfig.ImageBrowser = true ;
+FCKConfig.ImageBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Image&Connector=connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ;
+FCKConfig.ImageBrowserWindowWidth  = FCKConfig.ScreenWidth * 0.7 ;    // 70% ;
+FCKConfig.ImageBrowserWindowHeight = FCKConfig.ScreenHeight * 0.7 ;    // 70% ;
+
+FCKConfig.FlashBrowser = true ;
+FCKConfig.FlashBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ;
+FCKConfig.FlashBrowserWindowWidth  = FCKConfig.ScreenWidth * 0.7 ;    //70% ;
+FCKConfig.FlashBrowserWindowHeight = FCKConfig.ScreenHeight * 0.7 ;    //70% ;
 
-/*
-FCKConfig.LinkUpload = false ;
-FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/upload/php/upload.php' ;
+FCKConfig.LinkUpload = true ;
+FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/upload/' + _QuickUploadLanguage + '/upload.' + _QuickUploadLanguage ;
 FCKConfig.LinkUploadAllowedExtensions    = "" ;            // empty for all
 FCKConfig.LinkUploadDeniedExtensions    = ".(php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi)$" ;    // empty for no one
 
 FCKConfig.ImageUpload = true ;
-FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/upload/php/upload.php?Type=Image' ;
+FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/upload/' + _QuickUploadLanguage + '/upload.' + _QuickUploadLanguage + '?Type=Image' ;
 FCKConfig.ImageUploadAllowedExtensions    = ".(jpg|gif|jpeg|png)$" ;        // empty for all
 FCKConfig.ImageUploadDeniedExtensions    = "" ;                            // empty for no one
 
 FCKConfig.FlashUpload = true ;
-FCKConfig.FlashUploadURL = FCKConfig.BasePath + 'filemanager/upload/php/upload.php?Type=Flash' ;
+FCKConfig.FlashUploadURL = FCKConfig.BasePath + 'filemanager/upload/' + _QuickUploadLanguage + '/upload.' + _QuickUploadLanguage + '?Type=Flash' ;
 FCKConfig.FlashUploadAllowedExtensions    = ".(swf|fla)$" ;        // empty for all
 FCKConfig.FlashUploadDeniedExtensions    = "" ;                    // empty for no one
-*/
 
 FCKConfig.SmileyPath    = FCKConfig.BasePath + 'images/smiley/msn/' ;
 FCKConfig.SmileyImages    = ['regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','confused_smile.gif','tounge_smile.gif','embaressed_smile.gif','omg_smile.gif','whatchutalkingabout_smile.gif','angry_smile.gif','angel_smile.gif','shades_smile.gif','devil_smile.gif','cry_smile.gif','lightbulb.gif','thumbs_down.gif','thumbs_up.gif','heart.gif','broken_heart.gif','kiss.gif','envelope.gif'] ;
 FCKConfig.SmileyColumns = 8 ;
 FCKConfig.SmileyWindowWidth        = 320 ;
-FCKConfig.SmileyWindowHeight    = 240 ;
-
-if( window.console ) window.console.log( 'Config is loaded!' ) ;    // @Packager.Compactor.RemoveLine
+FCKConfig.SmileyWindowHeight    = 240 ;
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/fckeditor.js 1.4.1.src/fckeditor/fckeditor.js
--- 1.4.0sr5-1.src/fckeditor/fckeditor.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/fckeditor.js	2006-09-03 13:05:03.000000000 -0500
@@ -1,6 +1,6 @@
 ﻿/*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -8,6 +8,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fckeditor.js
  * 	This is the integration file for JavaScript.
  * 
@@ -32,6 +34,7 @@
 	this.CheckBrowser	= true ;
 	this.DisplayErrors	= true ;
 	this.EnableSafari	= false ;		// This is a temporary property, while Safari support is under development.
+	this.EnableOpera	= false ;		// This is a temporary property, while Opera support is under development.
 
 	this.Config			= new Object() ;
 
@@ -39,12 +42,15 @@
 	this.OnError		= null ;	// function( source, errorNumber, errorDescription )
 }
 
+FCKeditor.prototype.Version			= '2.3.1' ;
+FCKeditor.prototype.VersionBuild	= '1062' ;
+
 FCKeditor.prototype.Create = function()
 {
 	// Check for errors
 	if ( !this.InstanceName || this.InstanceName.length == 0 )
 	{
-		this._ThrowError( 701, 'You must specify a instance name.' ) ;
+		this._ThrowError( 701, 'You must specify an instance name.' ) ;
 		return ;
 	}
 
@@ -52,7 +58,7 @@
 
 	if ( !this.CheckBrowser || this._IsCompatibleBrowser() )
 	{
-		document.write( '<input type="hidden" id="' + this.InstanceName + '" name="' + this.InstanceName + '" value="' + this._HTMLEncode( this.Value ) + '" />' ) ;
+		document.write( '<input type="hidden" id="' + this.InstanceName + '" name="' + this.InstanceName + '" value="' + this._HTMLEncode( this.Value ) + '" style="display:none" />' ) ;
 		document.write( this._GetConfigHtml() ) ;
 		document.write( this._GetIFrameHtml() ) ;
 	}
@@ -60,7 +66,7 @@
 	{
 		var sWidth  = this.Width.toString().indexOf('%')  > 0 ? this.Width  : this.Width  + 'px' ;
 		var sHeight = this.Height.toString().indexOf('%') > 0 ? this.Height : this.Height + 'px' ;
-		document.write('<textarea name="' + this.InstanceName + '" rows="4" cols="40" style="WIDTH: ' + sWidth + '; HEIGHT: ' + sHeight + '" wrap="virtual">' + this._HTMLEncode( this.Value ) + '<\/textarea>') ;
+		document.write('<textarea name="' + this.InstanceName + '" rows="4" cols="40" style="WIDTH: ' + sWidth + '; HEIGHT: ' + sHeight + '">' + this._HTMLEncode( this.Value ) + '<\/textarea>') ;
 	}
 
 	document.write( '</div>' ) ;
@@ -70,14 +76,20 @@
 {
 	if ( !this.CheckBrowser || this._IsCompatibleBrowser() )
 	{
+		// We must check the elements firstly using the Id and then the name.
 		var oTextarea = document.getElementById( this.InstanceName ) ;
+		var colElementsByName = document.getElementsByName( this.InstanceName ) ;
+		var i = 0;
+		while ( oTextarea || i == 0 )
+		{
+			if ( oTextarea && oTextarea.tagName == 'TEXTAREA' )
+				break ;
+			oTextarea = colElementsByName[i++] ;
+		}
 		
 		if ( !oTextarea )
-			oTextarea = document.getElementsByName( this.InstanceName )[0] ;
-		
-		if ( !oTextarea || oTextarea.tagName != 'TEXTAREA' )
 		{
-			alert( 'Error: The TEXTAREA id "' + this.InstanceName + '" was not found' ) ;
+			alert( 'Error: The TEXTAREA with id or name set to "' + this.InstanceName + '" was not found' ) ;
 			return ;
 		}
 
@@ -109,36 +121,43 @@
 		sConfig += escape(o) + '=' + escape( this.Config[o] ) ;
 	}
 
-	return '<input type="hidden" id="' + this.InstanceName + '___Config" value="' + sConfig + '" />' ;
+	return '<input type="hidden" id="' + this.InstanceName + '___Config" value="' + sConfig + '" style="display:none" />' ;
 }
 
 FCKeditor.prototype._GetIFrameHtml = function()
 {
 	var sFile = (/fcksource=true/i).test( window.top.location.search ) ? 'fckeditor.original.html' : 'fckeditor.html' ;
+
 	var sLink = this.BasePath + 'editor/' + sFile + '?InstanceName=' + this.InstanceName ;
 	if (this.ToolbarSet) sLink += '&Toolbar=' + this.ToolbarSet ;
 
-	return '<iframe id="' + this.InstanceName + '___Frame" src="' + sLink + '" width="' + this.Width + '" height="' + this.Height + '" frameborder="no" scrolling="no"></iframe>' ;
+	return '<iframe id="' + this.InstanceName + '___Frame" src="' + sLink + '" width="' + this.Width + '" height="' + this.Height + '" frameborder="0" scrolling="no"></iframe>' ;
 }
 
 FCKeditor.prototype._IsCompatibleBrowser = function()
 {
 	var sAgent = navigator.userAgent.toLowerCase() ;
-
+	
 	// Internet Explorer
 	if ( sAgent.indexOf("msie") != -1 && sAgent.indexOf("mac") == -1 && sAgent.indexOf("opera") == -1 )
 	{
 		var sBrowserVersion = navigator.appVersion.match(/MSIE (.\..)/)[1] ;
 		return ( sBrowserVersion >= 5.5 ) ;
 	}
-	// Gecko
-	else if ( navigator.product == "Gecko" && navigator.productSub >= 20030210 )
+
+	// Gecko (Opera 9 tries to behave like Gecko at this point).
+	if ( navigator.product == "Gecko" && navigator.productSub >= 20030210 && !( typeof(opera) == 'object' && opera.postError ) )
 		return true ;
+
+	// Opera
+	if ( this.EnableOpera && navigator.appName == 'Opera' && parseInt( navigator.appVersion ) >= 9 )
+			return true ;
+
 	// Safari
-	else if ( this.EnableSafari && sAgent.indexOf( 'safari' ) != -1 )
+	if ( this.EnableSafari && sAgent.indexOf( 'safari' ) != -1 )
 		return ( sAgent.match( /safari\/(\d+)/ )[1] >= 312 ) ;	// Build must be at least 312 (1.3)
-	else
-		return false ;
+	
+	return false ;
 }
 
 FCKeditor.prototype._ThrowError = function( errorNumber, errorDescription )
diff -ruN 1.4.0sr5-1.src/fckeditor/fckeditor.php 1.4.1.src/fckeditor/fckeditor.php
--- 1.4.0sr5-1.src/fckeditor/fckeditor.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/fckeditor.php	2006-06-17 16:25:25.000000000 -0500
@@ -1,7 +1,7 @@
 <?php 
 /*
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -9,6 +9,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fckeditor.php
  * 	This is the integration file for PHP.
  * 	
@@ -33,7 +35,7 @@
 	function __construct( $instanceName )
  	{
 		$this->InstanceName	= $instanceName ;
-		$this->BasePath		= '/FCKeditor/' ;
+		$this->BasePath		= '/fckeditor/' ;
 		$this->Width		= '100%' ;
 		$this->Height		= '200' ;
 		$this->ToolbarSet	= 'Default' ;
@@ -72,13 +74,13 @@
 				$Link .= "&amp;Toolbar={$this->ToolbarSet}" ;
 
 			// Render the linked hidden field.
-			$Html .= "<input type=\"hidden\" id=\"{$this->InstanceName}\" name=\"{$this->InstanceName}\" value=\"{$HtmlValue}\" />" ;
+			$Html .= "<input type=\"hidden\" id=\"{$this->InstanceName}\" name=\"{$this->InstanceName}\" value=\"{$HtmlValue}\" style=\"display:none\" />" ;
 
 			// Render the configurations hidden field.
-			$Html .= "<input type=\"hidden\" id=\"{$this->InstanceName}___Config\" value=\"" . $this->GetConfigFieldString() . "\" />" ;
+			$Html .= "<input type=\"hidden\" id=\"{$this->InstanceName}___Config\" value=\"" . $this->GetConfigFieldString() . "\" style=\"display:none\" />" ;
 
 			// Render the editor IFRAME.
-			$Html .= "<iframe id=\"{$this->InstanceName}___Frame\" src=\"{$Link}\" width=\"{$this->Width}\" height=\"{$this->Height}\" frameborder=\"no\" scrolling=\"no\"></iframe>" ;
+			$Html .= "<iframe id=\"{$this->InstanceName}___Frame\" src=\"{$Link}\" width=\"{$this->Width}\" height=\"{$this->Height}\" frameborder=\"0\" scrolling=\"no\"></iframe>" ;
 		}
 		else
 		{
@@ -92,7 +94,7 @@
 			else
 				$HeightCSS = $this->Height ;
 
-			$Html .= "<textarea name=\"{$this->InstanceName}\" rows=\"4\" cols=\"40\" style=\"width: {$WidthCSS}; height: {$HeightCSS}\" wrap=\"virtual\">{$HtmlValue}</textarea>" ;
+			$Html .= "<textarea name=\"{$this->InstanceName}\" rows=\"4\" cols=\"40\" style=\"width: {$WidthCSS}; height: {$HeightCSS}\">{$HtmlValue}</textarea>" ;
 		}
 
 		$Html .= '</div>' ;
diff -ruN 1.4.0sr5-1.src/fckeditor/fckstyles.xml 1.4.1.src/fckeditor/fckstyles.xml
--- 1.4.0sr5-1.src/fckeditor/fckstyles.xml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/fckstyles.xml	2006-06-17 16:25:25.000000000 -0500
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -9,6 +9,8 @@
  * For further information visit:
  * 		http://www.fckeditor.net/
  * 
+ * "Support Open Source software. What about a donation today?"
+ * 
  * File Name: fckstyles.xml
  * 	This is the sample style definitions file. It makes the styles combo
  * 	completely customizable.
diff -ruN 1.4.0sr5-1.src/fckeditor/fcktemplates.xml 1.4.1.src/fckeditor/fcktemplates.xml
--- 1.4.0sr5-1.src/fckeditor/fcktemplates.xml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/fcktemplates.xml	2006-06-17 16:25:25.000000000 -0500
@@ -1,4 +1,24 @@
 <?xml version="1.0" encoding="utf-8" ?>
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: fcktemplates.xml
+ * 	This is the sample templates definitions file. It makes the "templates" 
+ * 	command completely customizable.
+ * 	See FCKConfig.TemplatesXmlPath in the configuration file.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+-->
 <Templates imagesBasePath="fck_template/images/">
 	<Template title="Image and Title" image="template1.gif">
 		<Description>One main image with a title and text that surround the image.</Description>
diff -ruN 1.4.0sr5-1.src/fckeditor/htaccess.txt 1.4.1.src/fckeditor/htaccess.txt
--- 1.4.0sr5-1.src/fckeditor/htaccess.txt	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/htaccess.txt	2006-06-17 16:25:25.000000000 -0500
@@ -0,0 +1,29 @@
+#
+# FCKeditor - The text editor for internet
+# Copyright (C) 2003-2006 Frederico Caldeira Knabben
+# 
+# Licensed under the terms of the GNU Lesser General Public License:
+# 		http://www.opensource.org/licenses/lgpl-license.php
+# 
+# For further information visit:
+# 		http://www.fckeditor.net/
+# 
+# "Support Open Source software. What about a donation today?"
+#
+# ----------------------------------------------------------------------------- 
+#
+# On some specific Linux installations you could face problems with Firefox. 
+# It could give you errors when loading the editor saying that some illegal
+# characters were found (three strange chars in the beginning of the file).
+# This could happen if you map the .js or .css files to PHP, for example.
+#
+# Those characters are the Byte Order Mask (BOM) of the Unicode encoded files.
+# All FCKeditor files are Unicode encoded.
+#
+# Just rename this file to ".htaccess" and live it in the editor directory. 
+# There are no security issues on doing it. It just set the ".js" and ".css" 
+# files to their correct content types.
+#
+
+AddType application/x-javascript .js
+AddType text/css .css
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/myconfig.js 1.4.1.src/fckeditor/myconfig.js
--- 1.4.0sr5-1.src/fckeditor/myconfig.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/fckeditor/myconfig.js	2006-06-17 16:25:25.000000000 -0500
@@ -0,0 +1,23 @@
+FCKConfig.ToolbarSets["editor-toolbar1"] = [
+    ['Source','-','Undo','Redo','-','Link','Unlink','-','Bold','Italic',
+    '-','JustifyLeft','JustifyCenter','JustifyRight',
+    '-','OrderedList','UnorderedList','Outdent','Indent','FitWindow','About']
+] ;
+
+
+FCKConfig.ToolbarSets["editor-toolbar2"] = [
+    ['Source','-','Undo','Redo','-','Link','Unlink','-','Bold','Italic','Underline','StrikeThrough',
+    '-','JustifyLeft','JustifyCenter','JustifyRight','JustifyFull',
+    '-','OrderedList','UnorderedList','Outdent','Indent'],
+    ['PasteText','PasteWord','-','FontName','FontSize','TextColor','BGColor','-','Rule','-','Image','Table','FitWindow','-','About']
+] ;
+
+FCKConfig.ToolbarSets["editor-toolbar3"] = [
+    ['Source','Templates','-','Cut','Copy','Paste','PasteText','PasteWord','-',
+    'Find','Replace','-','Undo','Redo','-','RemoveFormat','-','Link','Unlink','-',
+    'Image','SpecialChar','-','Print','SpellCheck','FitWindow'],
+    ['Table','Rule','Bold','Italic','Underline','StrikeThrough','-',
+    'Subscript','Superscript','-','JustifyLeft','JustifyCenter','JustifyRight','JustifyFull','-',
+    'OrderedList','UnorderedList','-','Outdent','Indent','-','TextColor','BGColor','-','About'],
+    ['Style','-','FontFormat','-','FontName','-','FontSize']
+] ;
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/fckeditor/_whatsnew.html 1.4.1.src/fckeditor/_whatsnew.html
--- 1.4.0sr5-1.src/fckeditor/_whatsnew.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/fckeditor/_whatsnew.html	2006-09-03 13:05:03.000000000 -0500
@@ -1,7 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
  * FCKeditor - The text editor for internet
- * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2006 Frederico Caldeira Knabben
  * 
  * Licensed under the terms of the GNU Lesser General Public License:
  * 		http://www.opensource.org/licenses/lgpl-license.php
@@ -11,2122 +11,2173 @@
  * 
  * "Support Open Source software. What about a donation today?"
 -->
-<html>
-	<head>
-		<title>FCKeditor - What's New?</title>
-		<style>
-			BODY { FONT-FAMILY: Arial, Verdana, Sans-Serif }
-			P { MARGIN-LEFT: 20px }
-			</style>
-	</head>
-	<body>
-		<H3>
-			Version 2.1.1</H3>
-		<P>New Features and Improvements:</P>
-		<UL>
-			<LI>
-				The new "<STRONG>Insert Page Break</STRONG>"&nbsp;command (for printing)&nbsp;has been introduced.*
-  <LI>The editor package now has a root directory called "FCKeditor".</LI></UL>
-		<P>Fixed Bugs:</P>
-		<UL>
-			<LI>
-				[<A 
-  href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1326285&amp;group_id=75348&amp;atid=543653" 
-  target="_blank">SF BUG-1326285</A>] [<A 
-  href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1316430&amp;group_id=75348&amp;atid=543653" 
-  target="_blank">SF BUG-1316430</A>] [<A 
-  href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1323662&amp;group_id=75348&amp;atid=543653" 
-  target="_blank">SF BUG-1323662</A>] [<A 
-  href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1326223&amp;group_id=75348&amp;atid=543653" 
-  target="_blank">SF BUG-1326223</A>] We are doing a little step back with this 
-  version. The ENTER and BACKSPACE behavior changes for Firefox have been 
-  remove. It is a nice feature, but we need much more testing&nbsp;on it. It 
-  introduced some bugs and so its preferable to not have that feature, avoiding 
-  problems (even if that feature was intended to solve some issues).
-  <LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1289372&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1275714</A>] Comments in the beginning of the 
-			source are now preserved when using the "undo" and "redo" commands.
-			<LI>
-				The "undo" and "redo" commands now work for the Style 
-  command.
-  <LI>An error in the execution of the pasting commands on 
-  Firefox has been fixed.
-  <LI>[<A 
-  href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1326184&amp;group_id=75348" 
-  target="_blank">SF BUG-1326184</A>] No strange (invalid) entities are created 
-  when using Firefox. Also, the &amp;nbsp; used by the FillEmptyBlocks setting 
-  is maintained even if you disable the ProcessHTMLEntities setting.</LI></UL>
-		<P>* This version has been partially sponsored by <A href="http://www.acttive.com.br/" target="_blank">
-				Acctive Software&nbsp;S.A.</A>.</P>
-		<H3>Version 2.1</H3>
-		<P>New Features and Improvements:</P>
-		<UL>
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1200328&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1200328</A>] The editor now offers a way to 
-			"protect" part of the source to remain untouched while editing or changing 
-			views.&nbsp;Just use the "FCKConfig.ProtectedSource" object to configure it and 
-			customize to your needs. It is based on regular expressions. See fckconfig.js 
-			for some samples.
-			<LI>
-				The editor now offers native support for <STRONG>Lasso</STRONG>. Thanks and 
-			welcome&nbsp;to our new developer Jason Huck.
-			<LI>
-				New language files are available:
-				<UL>
-					<LI>
-						<STRONG>Faraose</STRONG>
-					(by Smin Lassaberg and&nbsp;Helgi Arnthorsson)
-					<LI>
-						<STRONG>Malay</STRONG>
-					(by Fairul Izham Mohd Mokhlas)
-					<LI>
-						<STRONG>Mongolian</STRONG>
-					(by Lkamtseren Odonbaatar)
-					<LI>
-						<STRONG>Vietnamese</STRONG> (by Phan Binh Giang)</LI></UL>
-			<LI>
-			A new configurable&nbsp;ColdFusion connector is available. Thanks to Mark 
-			Woods. Many enhancements has been introduced with it.
-			<LI>
-			The PHP connector for the default File Browser now sorts the folders and files 
-			names.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1289372&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1289372</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1282758&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1282758</A>] In the PHP connector it is now 
-			possible to set the absolute (server) path to the User Files directory, 
-			avoiding problems with Virtual Directories, Symbolic Links or Aliases. Take a 
-			look at the config.php file.
-			<LI>
-			The ASP.Net uploader (for Quick Uploads) has been added to the package.
-			<LI>
-				A new way to define <STRONG>simple "combo" toolbar items</STRONG>
-			, like Style and Font, has been introduced.&nbsp;Thanks&nbsp;to Steve 
-			Lineberry.&nbsp;See sample06.html and the "simplecommands" plugin&nbsp;to fully 
-			understand it.
-			<LI>
-			A new test case has been added that shows how to set the editor background 
-			dynamically without using a CSS.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155906&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1155906</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1110116&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1110116</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1216332&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1216332</A>] The "AutoDetectPasteFromWord" 
-			configuration option is back (IE only feature).
-			<LI>
-			The&nbsp;new "OnAfterLinkedFieldUpdate" event has been introduced. If is fired 
-			when the editor updates its hidden associated field.
-			<LI>
-			Attention: The color of the right border of the toolbar (left on RTL 
-			interfaces) has been moved from code to the CSS (TB_SideBorder class). Update 
-			your custom skins.
-			<LI>
-			A&nbsp;sample "htaccess.txt" file has been added to the editor's package to 
-			show how to configure some Linux sites that could present problems on Firefox 
-			with "Illegal characters" errors. Respectively the "﻿" chars.
-			<LI>
-			With the JavaScript, ASP and PHP integration files, you can set the QueryString 
-			value "fcksource=true" to load the editor using the source files (located in 
-			the _source directory) instead of the compressed ones. Thanks to Kae Verens for 
-			the suggestion.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1246623&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1246623</A>] The new configuration option 
-			"ForceStrongEm" has been introduced so you can force the editor to convert all 
-			&lt;B&gt; and &lt;I&gt; tags to &lt;STRONG&gt; and &lt;EM&gt; respectively.
-			<LI>
-				A nice contribution has been done by Goss Interactive Ltd:
-				<UL>
-					<LI>
-						[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1246949&amp;group_id=75348&amp;atid=543653"
-							target="_blank">SF BUG-1246949</A>] Implemented ENTER key and BACKSPACE key 
-						handlers for Gecko so that P tags (or an appropriate block element) get 
-						inserted instead of BR tags when not in the UseBROnCarriageReturn config mode.
-						<BR>
-						The ENTER key handling has been written to function much the same as the ENTER 
-						key handling on IE : as soon as the ENTER key is pressed, existing content will 
-						be wrapped with a suitable block element (P tag) as appropriate and a new block 
-						element (P tag) will be started.
-						<BR>
-					The ENTER key handler also caters for pressing ENTER within empty list items - 
-					ENTER in an empty item at the top of a list will remove that list item and 
-					start a new P tag above the list; ENTER in an empty item at the bottom of a 
-					list will remove that list item and start a new P tag below the list; ENTER in 
-					an empty item in the middle of a list will remove that list item, split the 
-					list into two, and start a new P tag between the two lists.
-					<LI>
-					Any tables that are found to be incorrectly nested within a block element (P 
-					tag) will be moved out of the block element when loaded into the editor. This 
-					is required for the new ENTER/BACKSPACE key handlers and it also avoids 
-					non-compliant HTML.&nbsp;
-					<LI>
-						The InsertOrderedList and InsertUnorderedList commands have been overridden on 
-						Gecko to ensure that block elements (P tags) are placed around a list item's 
-						content when it is moved out of the list due to clicking on the editor's list 
-						toolbar buttons (when not in the UseBROnCarriageReturn config mode).
-					</LI>
-				</UL>
-			</LI>
-		</UL>
-		<P>Fixed Bugs:</P>
-		<UL>
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1253255&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1253255</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1253255&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1265520</A>] Due to changes on version 2.0, the 
-			anchor list was not anymore visible in the link dialog window. It has been 
-			fixed.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1242979&amp;group_id=75348"
-					target="_blank">SF BUG-1242979</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1251354&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1251354</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1256178&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1256178</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1274841&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1274841</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1303949&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1303949</A>] Due to a bug on Firefox, some keys 
-			stopped working on startup over Firefox. It has been fixed.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1251373&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1251373</A>
-			] The above fix also has&nbsp;corrected some strange behaviors on Firefox.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1144258"
-					target="_blank">SF BUG-1144258</A>] [<A href="https://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1092081"
-					target="_blank">SF BUG-1092081</A>] The File Browsers now run on 
-			the&nbsp;same server session used in the page where the editor is placed in (IE 
-			issue). Thanks to Simone Chiaretta.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1305619&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1305619</A>
-			] No more repeated login dialogs when running the editor with Windows 
-			Integrated Security with IIS.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1245304&amp;group_id=75348&amp;atid=543655"
-					target="_blank">SF Patch-1245304</A>] The Test Case 004 is now working 
-			correctly. It has been changed to set the editor hidden at startup.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1290610&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1290610</A>
-			] Over HTTPS, there were some warnings when loading the Images, Flash and Link 
-			dialogs. Fixed.
-			<LI>
-			Due to Gecko bugs, two errors were thrown when loading the editor in a hidden 
-			div. Workarounds have been introduced. In any case, the testcase 004 hack is 
-			needed when showing the editor (as in a tabbed interface).
-			<LI>
-			An invalid path in the dialogs CSS file has been corrected.
-			<LI>
-			On IE, the Undo/Redo can now be controlled using the Ctrl+Z and Ctrl+Y shortcut 
-			keys.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1295538&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1295538</A>
-			] A few Undo/Redo fixes for IE have been done.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1247070&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1247070</A>] On Gecko, it is now possible to use 
-			the shortcut keys for Bold (CTRL+B), Italic (CTRL+I) and Underline (CTRL+U), 
-			like in IE.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1274303&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1274303</A>] The "Insert Column" command is now 
-			working correctly on TH cells. It also copies any attribute applied to the 
-			source cells.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1287070&amp;group_id=75348&amp;atid=543655"
-					target="_blank">SF Patch-1287070</A>
-			] In the Universal Keyboard, the Arabic keystrokes translator is now working 
-			with Firefox. Thanks again to Abdul-Aziz Al-Oraij.
-			<LI>
-			The editor now handles AJAX requests with HTTP status 304.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1157780&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1157780</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1229077&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1229077</A>] Weird comments are now handled 
-			correctly (ignored on some cases).
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155774&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1155774</A>] A spelling error in the Bulleted 
-			List Properties dialog has been corrected.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1272018&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1272018</A>] The ampersand character can now be 
-			added from the Special Chars dialog.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1263161&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1263161</A>] A small fix has been applied to the 
-			sampleposteddata.php file. Thanks to Mike Wallace.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1241504&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1241504</A>] The editor now looks also for the 
-			ID of the hidden linked field.
-			<LI>
-			The caption property on tables is now working on Gecko. Thanks to Helen Somers 
-			(Goss Interactive Ltd).
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1297431&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1297431</A>] With IE, the editor now works 
-			locally when its files are placed in a directory path that contains spaces.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1279551&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1279551</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1242105&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1242105</A>] On IE, some features are dependant 
-			of ActiveX components (secure... distributed&nbsp;with IE itself). Some 
-			security setting could avoid the usage of those components and the editor would 
-			stop working. Now a message is shown, indicating the use the minimum necessary 
-			settings need&nbsp;by the editor to run.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1298880&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1298880</A>] Firefox can't handle the STRONG and 
-			EM tags. Those tags are now converted to B and I so it works accordingly.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1271723&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1271723</A>] On IE, it is now possible to select 
-			the text and work correctly in the contents of absolute positioned/dimensioned 
-			divs.
-			<LI>
-			On IE, there is no need to click twice in the editor to&nbsp;activate the 
-			cursor in the editing area.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1221621&amp;group_id=75348"
-					target="_blank">SF BUG-1221621</A>] Many "warnings" in the Firefox 
-			console are not thrown anymore.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1295526&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1295526</A>] While&nbsp;editing on "FullPage" 
-			mode the basehref is now active for CSS "link" tags.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1222584&amp;group_id=75348&amp;atid=543655"
-					target="_blank">SF Patch-1222584</A>] A small fix to the PHP connector 
-			has been applied.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1281313&amp;group_id=75348&amp;atid=543655"
-					target="_blank">SF Patch-1281313</A>] A few small changes to avoid 
-			problems with Plone. Thanks to Jean-mat.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1275911&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1275911</A>] A check for double dots sequences on 
-				directory names on creation has been introduced to the PHP and ASP connectors.</LI></UL>
-		<H3>Version 2.0</H3>
-		<P>New Features and Improvements:</P>
-		<UL>
-			<LI>
-				The&nbsp;new "<STRONG>Flash</STRONG>" command is available. Now you can 
-			easily handle Flash content, over IE and Gecko, including server browser 
-			integration and context menu support. Due to limitations of the browsers, it is 
-			not possible to see the preview of the movie while editing, so a nice 
-			"placeholder" is used instead. *
-			<LI>
-				A&nbsp;"<STRONG>Quick Upload</STRONG>
-			" option is now available in the link, image and flash dialog windows, so the 
-			user don't need to go (or have) the File Browser for this operations. The ASP 
-			and PHP uploader&nbsp;are included.&nbsp;Take a look at the configuration 
-			file.***
-			<LI>
-				Added support for <STRONG>Active FoxPro Pages</STRONG>
-			. Thanks to our new developer, Snke Freitag.
-			<LI>
-				It is now possible to <STRONG>disable the size handles</STRONG>
-			for images and tables (IE only feature). Take a look at the DisableImageHandles 
-			and DisableTableHandles configuration options.
-			<LI>
-			The handles on form fields&nbsp;(small squares around them) and the inline 
-			editing of&nbsp;its contents&nbsp;have been disabled. This makes it easier to 
-			users to use the controls.
-			<LI>
-			A much better support for Word pasting operations has been introduced. Now it 
-			uses a dialog box, in this way we have better results and more control.**
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1225372&amp;group_id=75348&amp;atid=543655"
-					target="_blank">SF Patch-1225372</A>] A small change has been done to the 
-				PHP integration file. The generic __construct constructor has been added for 
-				better PHP 5 sub-classing&nbsp;compatibility (backward compatible). Thanks to 
-				Marcus Bointon.</LI></UL>
-		<P>Fixed Bugs:</P>
-		<UL>
-			<LI>
-			ATTENTION: Some security changes have been made to the connectors. Now you must 
-			explicitly enable the connector you want to use. Please test your application 
-			before deploying this update.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1211591"
-					target="_blank">SF BUG-1211591</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1204273&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1204273</A>] The connectors have been changed so 
-			it is not possible to use ".." on directory names.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1219734&amp;group_id=75348&amp;atid=543655"
-					target="_blank">SF Patch-1219734</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1219728&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1219728</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1208654&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1208654</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1205442&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1205442</A>] There was an error in the page 
-			unload on some cases that has been fixed.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1209708"
-					target="_blank">SF BUG-1209708</A>] [<A href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1214125"
-					target="_blank">SF BUG-1214125</A>] The undo on IE is now working 
-			correctly when the user starts typing.
-			<LI>
-			The preview now loads "Full Page" editing correctly. It also uses the same 
-			XHTML code produced by the final output.
-			<LI>
-			The "Templates" dialog was not working on some very specific (and strange) 
-			occasions over IE.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1199631&amp;group_id=75348"
-					target="_blank">SF BUG-1199631</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1171944&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1171944</A>] A new option is available to avoid 
-			a bad IE behavior that shows the horizontal scrollbar even when not needed. You 
-			can now force the vertical scrollbar to be always visible. Just set the 
-			"IEForceVScroll" configuration option to "true". Thanks to Grant Bartlett.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1212026&amp;group_id=75348&amp;atid=543655"
-					target="_blank">SF Patch-1212026</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1228860&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1228860</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1211775&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1211775</A>] [<A href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1199824"
-					target="_blank">SF BUG-1199824</A>] An error in the Packager has been 
-			corrected.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1163669"
-					target="_blank">SF BUG-1163669</A>] The XHTML processor now adds a 
-			space before the closing slash of tags that don't have a closing tag, like 
-			&lt;br /&gt;.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1213733&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1213733</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1216866&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1216866</A>]&nbsp;[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1209673&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1209673</A>]&nbsp;[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155454&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1155454</A>]&nbsp;[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1187936&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1187936</A>
-			]&nbsp;Now, on Gecko, the source is opened in a dialog window to avoid fatal 
-			errors (Gecko bugs).
-			<LI>
-			Some pages have been changed to avoid importing errors on Plone. Thanks to 
-			Arthur Kalmenson.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1171606&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1171606</A>] There&nbsp;is a bug on IE that 
-			makes the editor to not work if the instance name matches a meta tag name. 
-			Fixed.
-			<LI>
-			On Firefox, the source code is now opened in a dialog box, to avoid error on 
-			pages with more than one editor.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1225703&amp;group_id=75348&amp;atid=543655"
-					target="_blank">SF Patch-1225703</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1214941&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1214941</A>] The "ForcePasteAsPlainText" 
-			configuration option is now working correctly on Gecko browsers. Thanks to 
-			Manuel Polo.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1228836&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1228836</A>] The "Show Table Borders" feature is 
-			now working on Gecko browsers.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1212529&amp;group_id=75348&amp;atid=543655"
-					target="_blank">SF Patch-1212529</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1212517&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1212517</A>] The default File Browser now 
-			accepts connectors with querystring parameters (with "?"). Thanks to Tomas 
-			Jucius.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1233318&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1233318</A>] A JavaScript error thrown when 
-			using the Print command has been fixed.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1229696&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1229696</A>] A regular expression has been 
-			escaped to avoid problems when opening the code in some editors. It has been 
-			moved to a&nbsp;dialog window.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1231978&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1231978</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1228939&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1228939</A>] The Preview window is now using the 
-			Content Type and Base href.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1232056&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1232056</A>] The&nbsp;anchor icon is now working 
-			correctly on IE.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1232056&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1202468</A>] The anchor icon is now available on 
-			Gecko too.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1236279&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1236279</A>] A security warning has been 
-			corrected when using the File Browser over HTTPS.
-			<LI>
-			The ASP implementation now avoid errors when setting the editor value to null 
-			values.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1237359&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1237359</A>] The trailing &lt;BR&gt; added by 
-			Gecko at the end of the source is now removed.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1170828"
-					target="_blank">SF BUG-1170828</A>] No more &amp;nbsp; is added to the 
-			source when using the "New Page" button.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1165264&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1165264</A>] A&nbsp;new configuration option has 
-			been included to force the editor to ignore empty paragraph 
-			values&nbsp;(&lt;p&gt;&amp;nbsp;&lt;/p&gt;), returning empty ("").
-			<LI>
-			No more &amp;nbsp; is added when creating a table or adding columns, rows or 
-			cells.
-			<LI>
-			The &lt;TD&gt; tags are now included in the FillEmptyBlocks configuration 
-			handling.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1224829&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1224829</A>] A small bug in the "Find" dialog 
-			has been fixed.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1221307&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1221307</A>] A small bug in the "Image" dialog 
-			has been fixed.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1219981&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1219981</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155726&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1155726</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1178473&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1178473</A>] It is handling the &lt;FORM&gt;, 
-			&lt;TEXTAREA&gt; and &lt;SELECT&gt; tags "name" attribute correctly. Thanks to 
-			thc33.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1205403&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1205403</A>] The checkbox and radio button 
-			values are now handled correctly in their dialog windows. Thanks to thc33.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1236626&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1236626</A>] The toolbar now doesn't need to 
-			collapse when unloading the page (IE only).
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1212559&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1212559</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1017231&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1017231</A>] The "Save" button now calls the 
-			"onsubmit" event before posting the form. The submit can be cancelled if the 
-			onsubmit returns "false".
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1215823&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1215823</A>] The editor now works correctly on 
-			Firefox if it values is set to "&lt;p&gt;&lt;/p&gt;".
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1217546&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1217546</A>] No error is thrown when "pasting as 
-			plain text" and no text is available for pasting (as an image for example).
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1207031&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1207031</A>] [<A href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1223978"
-					target="_blank">SF BUG-1223978</A>] The context menu is now available 
-			in the source view.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1213871"
-					target="_blank">SF BUG-1213871</A>] Undo has been added to table 
-			creation and table operation commands.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1205211&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1205211</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1229941&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1229941</A>] Small bug in the mcpuk file 
-				browser&nbsp;have been corrected.</LI></UL>
-		<P>* This version has been partially sponsored by <A href="http://www.infineon.com/" target="_blank">
-				Infineon Technologies AG</A>.<BR>
-			** This version has been partially sponsored by <a href="http://www.visualsoft.co.uk">
-				Visualsoft</a> <a href="http://www.visualsoft.co.uk/websolutions.html">Web 
-				Solutions</a>.<BR>
-			*** This version has been partially sponsored by <A href="http://www.webcrossing.com" target="_blank">
-				Web Crossing, Inc</A>.</P>
-		<H3>Version 2.0&nbsp;FC (Final Candidate)</H3>
-		<P>New Features and Improvements:</P>
-		<UL>
-			<LI>
-				A new tab called "<STRONG>Link</STRONG>" is available in the<STRONG> Image Dialog</STRONG>
-			window. In this way you can insert or modify the image link directly from that 
-			dialog.*
-			<LI>
-				The new "<STRONG>Templates</STRONG>" command is now available. Now the user 
-			can select from a list of pre-build HTML and fill the editor with it. Take a 
-			look at the "_docs" for more info.**
-			<LI>
-				The <A href="http://mcpuk.net/fbxp/" target="_blank">mcpuk's</A>
-			File Browser for PHP has been included in the package. He became the official 
-			developer of the File Manager for FCKeditor, so we can expect good news in the 
-			future.
-			<LI>
-				New configuration options are available to <STRONG>hide tabs</STRONG> from the <STRONG>
-					Image</STRONG> Dialog&nbsp;and <STRONG>Link</STRONG>
-			Dialog windows: LinkDlgHideTarget, LinkDlgHideAdvanced, ImageDlgHideLink and 
-			ImageDlgHideAdvanced.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1189442&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1189442</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1187164&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1187164</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1185905&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1185905</A>] It is now possible to configure the 
-				editor to <STRONG>not convert Greek</STRONG> or special&nbsp;<STRONG>Latin </STRONG>
-			letters to ther specific HTML entities. You can also configure it to not 
-			convert any character at all. Take a look at the "ProcessHTMLEntities", 
-			"IncludeLatinEntities" and "IncludeGreekEntities" configuration options.
-			<LI>
-				New language files are available:
-				<UL>
-					<LI>
-						<STRONG>Basque</STRONG>
-					(by Ibon Igartua)
-					<LI>
-						<STRONG>English (Australia / United Kingdom)</STRONG>
-					(by Christopher Dawes)
-					<LI>
-						<STRONG>Ukrainian</STRONG> (by Alexander Pervak)</LI></UL>
-			<LI>
-			The version and date information have been removed from the files headers to 
-			avoid unecessary diffs in source control systems when new versions are released 
-			(from now on).
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1159854&amp;group_id=75348&amp;atid=543655"
-					target="_blank">SF Patch-1159854</A>] Ther HTML output rendered by the 
-			server side integration files are now XHTML compatible.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1181823&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1181823</A>] It is now possible to set the 
-			desired DOCTYPE to use when edit HTML fragments (not in Full Page mode).
-			<LI>
-				There is now an optional way to implement different "mouse over" effects to the 
-				buttons when they are "on" of "off".</LI></UL>
-		<P>Fixed Bugs:</P>
-		<UL>
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1162200&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1162200</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1161633&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1161633</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1050293&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1050293</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1058948&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1058948</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1109120&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1109120</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155408&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1155408</A>] The IE memory leak bug has been 
-			solved. The code has been completely reviewed and many memory usage 
-			improvements have been done.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1179645&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1179645</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1183252&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1183252</A> ] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1166779&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1181647</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155627&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1155627</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155782&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1155782</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155750&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1155750</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1157166&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1157166</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1157857&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1157857</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1158121&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1158121</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1177153&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1177153</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1175847&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1175847</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155747&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1155747</A>] There was a loading problem in 
-			Gecko browsers in some cases. It has been solved.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1161147&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1161147</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1157635&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1157635</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1149805&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1149805</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1124600&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1124600</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1117535&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1117535</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1118145&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1118145</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1098113&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1098113</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1092272&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1092272</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1086416&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1086416</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1027952&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1027952</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=978441&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-978441</A>
-			] A custom Undo/Redo system has been implemented for IE.
-			<LI>
-			The editor startup execution is now made in the right order (so configurations 
-			override works correctly).
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1166779&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1166779</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1166651&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1166651</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1066198&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1066198</A>]&nbsp;[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090388&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1090388</A>
-			]&nbsp;No more "illegible" characters in the toolbar when "ClearType" is 
-			active.
-			<LI>
-			It is now possible to set the "width" style of the BODY tag in the 
-			EditorAreaCSS to limit the editing area size.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1113620&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1113620</A>] In IE, the editor doesn't generate 
-			new entries in the browser history anymore.
-			<LI>
-			The editor now uses the same method used on version RC2 to load its contents on 
-			Gecko. It is now possible to have more than one editor in the page. This change 
-			has a negative impact: the BaseHref property is not working.
-			<LI>
-			Changes have been made to make the editor work with PHP versions&nbsp;older 
-			than&nbsp;2.1.0.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1190835&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1190835</A>] [<A href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1196547&amp;group_id=75348"
-					target="_blank">SF BUG-1196547</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1156863&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1156863</A>] The "Insert Horizontal Line" 
-			command is now working correctly. Thanks to Hector Raul Colonia Coral.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1101861&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1101861</A>] The editor now shows a normal 
-			textarea correctly (as expected) on Safari browsers (and all "like Gecko" 
-			browsers). Thanks to Bob Paul.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1182224&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1182224</A>] The PHP connector can now handle 
-			file extensions in upper case,&nbsp;like JPG or Gif, correctly. Thanks to Georg 
-			Ivancsic.
-			<LI>
-			The "sample06.html" is now working correctly with Gecko browsers.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1156660&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1156660</A>] Some fixes have been applied to the 
-			Universal Keyboard. Thanks to Abdul-Aziz Al-Oraij.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1192881&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1192881</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1185006&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1185006</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1156068&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1156068</A>] The "Browse Server" button is now 
-			working correctly for the Background Image in the "Document Properties" dialog 
-			window (full page editing). The active "BaseHref" is also set to the preview 
-			window.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1191704&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1191704</A>] Invalid HTML tags (according to the 
-			W3C naming standards for XHTML) are ignored with no errors.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1185911&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1185911</A>] The Greek language file name has 
-			been corrected to "el.js".
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1181572&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1181572</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1158421&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1158421</A>] The "Print" button is now active on 
-			startup.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1181572&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1165219</A>] No error occours when the user 
-			defines just one color to the FontColors on "in page" configurations.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1162957&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1162957</A>] The small problem with Zope 
-			(ZPT)&nbsp;has been solved.
-			<LI>
-				Some small RTL / LTR corrections has been done in the interface and the Farsi 
-				language has been added to the Universal Keyboard. Thanks to Silver 
-				Baghdasarian.</LI></UL>
-		<P>* This version has been partially sponsored by the <A href="http://www.hamilton.edu">
-				Hamilton College</A>.<BR>
-			** This version has been partially sponsored by <A href="http://www.infineon.com/" target="_blank">
-				Infineon Technologies AG</A>.</P>
-		<H3>Version 2.0 RC3 (Release Candidate 3)</H3>
-		<P>New Features and Improvements:</P>
-		<UL>
-			<LI>
-				The editor now offers native <STRONG>Perl integration</STRONG>! Thanks and 
-			welcome to Takashi Yamaguchi, our official Perl developer.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1026584&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1026584</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1112692&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1112692</A>] <STRONG>Formatting </STRONG>has 
-				been introduced to the <STRONG>Source View</STRONG>. The output HTML can 
-			also be formatted. You can choose to use spaces or tab for indentation. See the 
-			configuration file.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1031492&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1031492</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1004293&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1004293</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=784281&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-784281</A>] It is now possible to edit <STRONG>full 
-					HTML pages</STRONG>
-			with the editor. Use the "FullPage" configuration setting to activate it.
-			<LI>
-				The&nbsp;new toolbar command, "<STRONG>Document Properties</STRONG>"&nbsp;is 
-			available to edit document header info, title, colors, background, etc... Full 
-			page editing must be enabled.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1151448&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1151448</A>] <STRONG>Spell Check</STRONG> is now 
-				available. You can use <STRONG>ieSpell</STRONG> or <STRONG>Speller Pages</STRONG>
-			right from FCKeditor. More info about configuration can be found in the _docs 
-			folder.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1041686&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1041686</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1086386&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1086386</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1124602&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1124602</A>] New "<STRONG>Insert Anchor</STRONG>" 
-			command has been introduced. (The anchor icon is visible only over&nbsp;IE for 
-			now).
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1123816&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1123816</A>] It is now possible to configure the 
-				editor to <STRONG>show "fake" table borders</STRONG>
-			when the border size is set to zero. (It is working only on IE for now).
-			<LI>
-				<STRONG>Numbered</STRONG> and <STRONG>Bulleted</STRONG> lists can now be <STRONG>configured</STRONG>
-			. Just right click on then.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1088608&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1088608</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1144047&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1144047</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1149808&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1149808</A>] A new configuration setting is 
-				available, "<STRONG>BaseHref</STRONG>
-			", to set the URL used to resolve relative links.
-			<LI>
-				It is now possible to set&nbsp;the <STRONG>content language direction</STRONG>
-			. See the "FCKConfig.ContentLangDirection" configurations setting.
-			<LI>
-				All <STRONG>Field Commands</STRONG> available on version 1.6 have been upgraded 
-				and&nbsp;included in this version: <STRONG>form</STRONG>, <STRONG>checkbox</STRONG>,
-				<STRONG>radio button</STRONG>, <STRONG>text field</STRONG>, text <STRONG>area</STRONG>,
-				<STRONG>select field</STRONG>, <STRONG>button</STRONG>, <STRONG>image button</STRONG>
-				and <STRONG>hidden field</STRONG>
-			.
-			<LI>
-				<STRONG>Context menu</STRONG> options (right-click) has been added for: <STRONG>anchors</STRONG>,
-				<STRONG>select field</STRONG>, <STRONG>textarea</STRONG>, <STRONG>checkbox</STRONG>,
-				<STRONG>radio button</STRONG>, <STRONG>text field</STRONG>, <STRONG>hidden field</STRONG>,
-				<STRONG>textarea</STRONG>, <STRONG>button</STRONG>, <STRONG>image button</STRONG>,
-				<STRONG>form</STRONG>, <STRONG>bulleted list</STRONG> and <STRONG>numbered list</STRONG>
-			.
-			<LI>
-				The "<STRONG>Universal Keyboard</STRONG>" has been converted from version 
-			1.6 to this one and it's now available.
-			<LI>
-				It is now possible to <STRONG>configure</STRONG> the items to be shown in the <STRONG>
-					context menu</STRONG>
-			. Just use the FCKConfig.ContextMenu option&nbsp;at fckconfig.js.
-			<LI>
-				A new configuration (FillEmptyBlocks)&nbsp;is available to force the editor to <STRONG>
-					automatically insert a &amp;nbsp;</STRONG>
-			on empty block elements (p, div, pre, h1, etc...) to avoid differences from the 
-			editing and the final result. (Actually, the editor automatically "grows" empty 
-			elements to make the user able to enter text on it). Attention: the extra 
-			&amp;nbsp; will be added when switching from WYSIWYG to Source View, so the 
-			user may see an additional space on empty blocks. (XHTML support must be 
-			enabled).
-			<LI>
-				It is now possible to configure the <STRONG>toolbar</STRONG> to "<STRONG>break</STRONG>
-			" between two toolbar strips. Just insert a "/" between then. Take a look at 
-			fckconfig.js for a sample.
-			<LI>
-				New Language files are available:
-				<UL>
-					<LI>
-						<STRONG>Brazilian Portuguese</STRONG>
-					(by Carlos Alberto Tomatis Loth)
-					<LI>
-						<STRONG>Bulgarian</STRONG>
-					(by Miroslav Ivanov)
-					<LI>
-						<STRONG>Esperanto</STRONG>
-					(by Tim Morley)
-					<LI>
-						<STRONG>Galician</STRONG>
-					(by Fernando Riveiro Lopez)
-					<LI>
-						<STRONG>Japanese</STRONG>
-					( by Takashi Yamaguchi)
-					<LI>
-						<STRONG>Persian</STRONG>
-					(by Hamed Taj-Abadi)
-					<LI>
-						<STRONG>Romanian</STRONG>
-					(by Adrian Nicoara)
-					<LI>
-						<STRONG>Slovak</STRONG>
-					(by Gabriel Kiss)
-					<LI>
-						<STRONG>Thai </STRONG>
-					(by Audy Charin Arsakit)
-					<LI>
-						<STRONG>Turkish</STRONG>
-					(by Reha Bier)
-					<LI>
-						The Chinese Traditional has been set as the default (zn) instead of zn-tw.</LI></UL>
-			<LI>
-			Warning: All toolbar image images have been changed. The "button." prefix has 
-			been removed. If you have your custom skin, please rename your files.
-			<LI>
-				A new plugin is available in the package: "<STRONG>Placeholders</STRONG>". 
-			In this way you can insert non editable tags in your document to be processed 
-			on server side (very specific usage).
-			<LI>
-			The ASPX files are no longer available in this package. They have been moved to 
-			the FCKeditor.Net package. In this way the ASP.Net integration is much better 
-			organized.
-			<LI>
-			The FCKeditor.Packager program is now part of the main package. It is not 
-			anymore&nbsp;distributed separately.
-			<LI>
-			The PHP connector now sets the uploaded file permissions (chmod)&nbsp;to 0777.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090215&amp;group_id=75348&amp;atid=543655"
-					target="_blank">SF Patch-1090215</A>] It's now possible to give back 
-			more info from your custom image browser calling the SetUrl( url [, width] [, 
-			height] [, alt] ). Thanks to Ben Noblet.
-			<LI>
-			The package files now maintain their original "Last Modified" date, so 
-			incremental FTP uploads can be used to update to&nbsp;new versions of the 
-			editor (from now on).
-			<LI>
-				The "Source" view now forces its contents to be written in "Left to Right" 
-				direction even when the editor interface language is running a RTL language 
-				(like Arabic, Hebrew or Persian).</LI>
-		</UL>
-		<P>Fixed Bugs:</P>
-		<UL>
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1124220&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1124220</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1119894&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1119894</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090986&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1090986</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1100408&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1100408</A>] The editor now works correctly when 
-			starting with an empty value and switching to the Source mode.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1119380&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1119380</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1115750&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1115750</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1101808&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1101808</A>] The problem with the scrollbar and 
-			the toolbar combos (Style, Font, etc...) over Mac has been fixed.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1098460&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1098460</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1076544&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1076544</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077845&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1077845</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1092395&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1092395</A>] A new upload class has been 
-			included for the ASP File Manager Connector. It uses the "ADODB.Stream" object. 
-			Many thanks to "NetRube".
-			<LI>
-			I small correction has been made to the ColdFusion integration files. Thanks to 
-			Hendrik Kramer.
-			<LI>
-			There was a very specific problem when the editor was running over a FRAME 
-			executed on another domain.
-			<LI>
-			The performance problem on Gecko while typing&nbsp;quickly has been solved.
-			<LI>
-			The &lt;br type= "_moz"&gt;is not anymore shown on XHTML source.
-			<LI>
-			It has been introduced a mechanism to avoid automatic contents duplication on 
-			very specific occasions (bad formatted HTML).
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1146407&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1146407</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1145800&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1145800</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1118803&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1118803</A>
-			] Other&nbsp;issues in the XHTML processor have been solved.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1143969&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1143969</A>] The editor now accepts the 
-			"accept-charset" attribute in the FORM tag (IE specific bug).
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1122742&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1122742</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1089548&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1089548</A>
-			] Now, the contents of the SCRIPT and STYLE tags remain untouched.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1114748&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1114748</A>] The PHP File Manager Connector now 
-			sets the new folders permissions (chmod)&nbsp;to 0777 correctly.
-			<LI>
-			The PHP File Manager Connector now has a configuration file 
-			(editor/filemanager/browser/default/connectors/php/config.php) to set some 
-			security preferences.
-			<LI>
-			The&nbsp;ASP File Manager Connector now has a configuration file 
-			(editor/filemanager/browser/default/connectors/asp/config.asp) to set some 
-			security preferences.
-			<LI>
-			A small bug in the toolbar rendering (strips auto position) has been corrected.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1093732&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1093732</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1091377&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1091377</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1083044&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1083044</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1096307&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1096307</A>] The configurations are now encoded 
-			so a user can use values that has special chars (&amp;=/).
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1103688&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1103688</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1092331&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1092331</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1088220&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1088220</A>] PHP samples now use PHP_SELF to 
-			automatically discover the editor's base path.
-			<LI>
-			Some small wrapping problems with some labels in the Image and Table dialog 
-			windows have been fixed.
-			<LI>
-			All .js files are now encoded in UTF-8 format with the BOM (byte order mask) to 
-			avoid some errors on specific Linux installations.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1114449&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1114449</A>] The editor packager program has 
-			been modified so now it is possible to use the source files to run the editor 
-			as described in the documentation. The new packager must be downloaded.
-			<LI>
-			A small problem with the editor focus while in&nbsp;source&nbsp;mode has been 
-			corrected. Thanks to Eric (ric1607).
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1108167&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1108167</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1085149&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1085149</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1151296&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1151296</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1082433&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1082433</A>] No more IFRAMEs without src 
-			attribute. Now it points to a blank page located in the editor's package. In 
-			this way we avoid security warnings when using the editor over HTTPS. Thanks to 
-			Guillermo Bozovich.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1117779&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1117779</A>] The editor now works well if you 
-			have more than one element named "submit"&nbsp;on its form (even if it is not 
-			correct to have this situation).
-			<LI>
-			The XHTML processor was duplicating the text on some specific situation. It has 
-			been fixed.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090213&amp;group_id=75348&amp;atid=543655"
-					target="_blank">SF Patch-1090213</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1098929&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF Patch-1098929</A>] With ASP, the editor now works 
-			correctly on pages using "Option Explicit". Thanks to Ben Noblet.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1100759&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1100759</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1029125&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1029125</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=966130&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-966130</A>] The editor was not working with old 
-			IE 5.5 browsers. There was a problem with the XML parser. It has been fixed.
-			<LI>
-			The localization engine is now working correctly over IE 5.5 browsers.
-			<LI>
-			Some commands where not working well over IE 5.5 (emoticons, image,...). It has 
-			been fixed.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1146441&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1146441</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1149777&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1149777</A>] The editor now uses the TEXTAREA 
-			id&nbsp;in the ReplaceTextarea function. If the id is now found, it uses the 
-			"name". The docs have been updated.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1144297&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1144297</A>] Some corrections have been made to 
-			the Dutch language file. Thanks to Erwin Dondorp.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1121365&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1121365</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090102&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1090102</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1152171&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1152171</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1102907&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1102907</A>] There is no problem now to start 
-			the editor with values like "&lt;div&gt;&lt;/div&gt;" or "&lt;p&gt;&lt;/p&gt;".
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1114059&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1114059</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1041861&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1041861</A>] The click on the disabled options 
-			in the Context Menu has no effects now.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1152617&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1152617</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1102441&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1102441</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1095312&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1095312</A>] Some problems when setting the 
-			editor source to very specific values has been fixed.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1093514&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1093514</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1089204&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1089204</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077609&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1077609</A>] The editor now runs correctly if 
-			called directly (locally)&nbsp;without a server installation (just opening the 
-			HTML sample files).
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1088248&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1088248</A>] The editor now uses a different 
-			method to load its contents. In this way the URLs remain untouched.
-			<LI>
-				The PHP integration file now detects Internet Explorer 5.5 correctly.</LI></UL>
-		<h3>Version 2.0 RC2 (Release Candidate 2)</h3>
-		<ul>
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1042034&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1042034</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1075961&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1075961</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1083200&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1083200</A>] A new dialog window for the <STRONG>table 
-					cell properties</STRONG>
-			is now available (right-click).
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1042034&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1042034</A>] The new "<STRONG>Split Cell</STRONG>
-			", to split a table cell in two columns, has been introduced (right-click).
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1042034&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1042034</A>] The new "<STRONG>Merge Cells</STRONG>", 
-			to merge table cells (in the same row), has been introduced (right-click).
-			<LI>
-				The "fake" <STRONG>TAB key support</STRONG>
-			(available by default over Gecko browsers is now available over IE too. You can 
-			set the number of spaces to add setting the FCKConfig.TabSpaces configuration 
-			setting. Set it to 0 (zero) to disable this feature (IE).
-			<LI>
-				It now possible to tell IE to send a <STRONG>&lt;BR&gt;</STRONG> when the user 
-				presses the <STRONG>Enter key</STRONG>. Take a look at the 
-			FCKConfig.UseBROnCarriageReturn configuration setting.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1085422&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1085422</A>] <STRONG>ColdFusion</STRONG>: The <STRONG>
-					File Manager connector</STRONG>
-			is now available! (Thanks to Hendrik Kramer).
-			<LI>
-				The editor is now available in <STRONG>29 languages!</STRONG> The new language 
-				files available are:&nbsp;
-				<UL>
-					<LI>
-						[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1067775&amp;group_id=75348&amp;atid=543656"
-							target="_blank">SF Feature-1067775</A>] <STRONG>Chinese Simplified and 
-							Traditional</STRONG>
-					(Taiwan and Hong Kong) (by NetRube).
-					<LI>
-						<STRONG>Czech</STRONG>
-					(by David Hork).
-					<LI>
-						<STRONG>Danish</STRONG>
-					(by Jesper Michelsen).
-					<LI>
-						<STRONG>Dutch</STRONG>
-					(by Bram Crins).
-					<LI>
-						<STRONG>German</STRONG>
-					(by Maik Unruh).
-					<LI>
-						<STRONG>Portuguese</STRONG>
-					(Portugal) (by Francisco Pereira).
-					<LI>
-						<STRONG>Russian</STRONG>
-					(by Andrey Grebnev).
-					<LI>
-						<STRONG>Slovenian</STRONG> (by Boris Volaric).</LI></UL>
-			<LI>
-				Updates to the <STRONG>French</STRONG>
-			language files (by Hubert Garrido).
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1085816&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1085816</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1083743&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1083743</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1078783&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1078783</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077861&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1077861</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077861&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1037404</A>] Many&nbsp;small bugs&nbsp;in the XHTML 
-				processor has been corrected (workarounds to browser specific bugs). These are 
-				some things to consider regarding the changes:
-				<UL>
-					<LI>
-						[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1083744&amp;group_id=75348&amp;atid=543653"
-							target="_blank">SF BUG-1083744</A>] On Gecko browsers, any element 
-					attribute that the name starts with "_moz" will be ignored.
-					<LI>
-						[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1060073&amp;group_id=75348&amp;atid=543653"
-							target="_blank">SF BUG-1060073</A>] The &lt;STYLE&gt; and &lt;SCRIPT&gt; 
-						elements contents will be handled as is, without CDATA tag surrounding. This 
-						may break XHTML validation. In any case the use of external files for scripts 
-						and styles is recommended (W3C recommendation).</LI></UL>
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1088310&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1088310</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1078837&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1078837</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=999792&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-999792</A>] URLs now remain untouched when 
-			initializing the editor or switching from WYSYWYG to Source and vice versa.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1082323&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1082323</A>] The&nbsp;problem in the ASP and PHP 
-			connectors when handling non "strange" chars in file names has been corrected.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1085034&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1085034</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1076796&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1076796</A>] Some bugs in the PHP connector have 
-			been corrected.
-			<LI>
-			A&nbsp;problem with the "Format" command on IE browsers on languages different 
-			of English has been solved. The negative side of this correction is that due to 
-			a IE bad design it is not possible to update the "Format" combo while moving 
-			throw the text (context sensitive).
-			<LI>
-			On Gecko browsers, when selecting an image and executing the "New Page" 
-			command, the image handles still appear, even if the image is not available 
-			anymore (this is a Gecko bug). When clicking in&nbsp;a "phanton" randle, the 
-			browser crashes. It doesn't&nbsp;happen (the crash)&nbsp;anymore.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1082197&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1082197</A>] On ASP, the bug in the browser 
-			detection system for Gecko browsers has been corrected. Thanks to Alex Varga.
-			<LI>
-			Again on ASP, the browser detection for IE had some problems on servers that 
-			use comma for decimal separators on numbers. It has been corrected. Thanks to 
-			Agrotic.
-			<LI>
-			No error is thrown now when&nbsp;non existing&nbsp;language is configured in 
-			the editor. The English language file is loaded in that case.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077747&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1077747</A>] The missing images on the 
-			Office2003 and Silver skins are now included in the package.
-			<LI>
-			On some Gecko browsers, the dialog window was not loading correctly. I couldn't 
-			reproduce the problem, but a fix has been applied based on users tests.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1004078&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1004078</A>] ColdFusion: The "config" 
-			structure/hash table with keys and values is in ColdFusion not(!) case 
-			sensitive. All keys returned by ColdFusion are in upper case format. Because 
-			the FCKeditor configuration keys must be case sensitive, we had to match all 
-			structure/hash keys with a list of the correct configuration names in mixed 
-			case. This has been added to the fckeditor.cfc and fckeditor.cfm.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1075166&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1075166</A>] ColdFusion: The "fallback" variant 
-			of the texteditor (&lt;textarea&gt;) has a bug in the fckeditor.cfm. This has 
-			been fixed.
-			<LI>
-			A typo in the Polish language file has been corrected. Thanks to Pawel Tomicki.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1086370&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1086370</A>] A small coding type in the Link dialog 
-				window has been corrected.</LI>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>FCKeditor - What's New?</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<style type="text/css">
+		body { font-family: arial, verdana, sans-serif }
+		p { margin-left: 20px }
+	</style>
+</head>
+<body>
+	<h3>
+		Version 2.3.1</h3>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="https://sourceforge.net/support/tracker.php?aid=1506126">SF
+			BUG-1506126</a>] Fixed the Catalan language file, which had been published with
+			problems in accented letters. </li>
+		<li>More performance improvements in the default File Browser.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1506701&group_id=75348&atid=543653">SF
+			BUG-1506701</a>] Fixed compatibility issues with IE 5.5.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1509073&group_id=75348&atid=543653">SF
+			BUG-1509073</a>] Fixed the "Image Properties" dialog window, which was making invalid
+			calls to the "editor/dialog/" directory, generating error 400 entries in the web
+			server log.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1507294&group_id=75348&atid=543653">SF
+			BUG-1507294</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1507953&group_id=75348&atid=543653">SF
+				BUG-1507953</a>] The editing area was getting a fixed size when using the "SetHTML"
+			API command or even when switching back from the source view. Fixed.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1507755&group_id=75348">SF
+			BUG-1507755</a>] Fixed a conflict between the "DisableObjectResizing" and "ShowBorders"
+			configuration options over IE.</li>
+		<li>Opera 9 tries to "mimic" Gecko in the browser detection system of FCKeditor. As
+			this browser is not "yet" supported, the editor was broken on it. It has been fixed,
+			and now a textarea is displayed, as in any other unsupported browser. Support for
+			Opera is still experimental and can be activated by setting the property "EnableOpera"
+			to true when creating an instance of the editor with the JavaScript integration
+			files.</li>
+		<li>With Opera 9, the toolbar was jumping on buttons rollover. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1509479&group_id=75348&atid=543656">SF
+			BUG-1509479</a>] The iframes used in Firefox for all editor panels (dropdown combos,
+			context menu, etc...) are now being placed right before the main iframe that holds
+			the editor. In this way, if the editor container element is removed from the DOM
+			(by DHTML) they are removed together with it.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1271070&group_id=75348&atid=543653">SF
+			BUG-1271070</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1411430&group_id=75348&atid=543653">SF
+				BUG-1411430</a>] The editor API now works well on DHTML pages that create and
+			remove instances of FCKeditor dynamically. </li>
+		<li>A second call to a page with the editor was not working correctly with Firefox 1.0.x.
+			Fixed.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1511460&group_id=75348&atid=543653">SF
+			BUG-1511460</a>] Small correction to the &lt;script&gt; protected source regex.
+			Thanks to Randall Severy.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1521754&group_id=75348">SF
+			BUG-1521754</a>] Small fix to the paths of the internal CSS files used by FCKeditor.
+			Thanks to johnw_ceb.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1511442&group_id=75348&atid=543653">SF
+			BUG-1511442</a>] The &lt;base&gt; tag is now correctly handled in IE, no matter
+			its position in the source code.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1507773&group_id=75348&atid=543653">SF
+			BUG-1507773</a>] The "Lock" and "Reset" buttons in the Image Properties dialog window
+			are not anymore jumping with Firefox 1.5.</li>
+	</ul>
+	<h3>
+		Version 2.3</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>The <strong>Toolbar Sharing</strong> system has been completed. See sample10.html
+			and sample11.html.*</li><li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1407500&group_id=75348&atid=543655">SF
+				Patch-1407500</a>] Small enhancement to the Find and Replace dialog windows.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>Small security fixes.</li>
+		<li>The context menu system has been optimized. Nested menus now open "onmouseover".
+		</li>
+		<li>An error in the image preloader system was making the toolbar strip being downloaded
+			once for each button on slow connections. Some enhancements have also been made
+			so now the smaple05.html is loading fast for all skins.</li><li>Fixed many memory leak
+				issues with IE.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1489768&group_id=75348&atid=543653">SF
+			BUG-1489768</a>] The panels (context menus, toolbar combos and color selectors),
+			where being displayed in the wrong position if the contents of the editor, or its
+			containing window were scrolled down. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1493176&group_id=75348">SF
+			BUG-1493176</a>] Using ASP, the connector was not working on servers with buffer
+			disable by default.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1491784&group_id=75348&atid=543653">SF
+			BUG-1491784</a>] Language files have been updated to not include html entities.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1490259&group_id=75348&atid=543653">SF
+			BUG-1490259</a>] No more security warning on IE over HTTPS.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1493173&group_id=75348&atid=543653">SF
+			BUG-1493173</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1499708&group_id=75348">SF
+				BUG-1499708</a>] We now assume that, if a user is in source editing, he/she
+			wants to control the HTML, so the editor doesn't make changes to it when posting
+			the form being in source view or when calling the GetXHTML function in the API.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1490610&group_id=75348&atid=543653">SF
+			BUG-1490610</a>] The FitWindow is now working on elements set with relative position.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1493438&group_id=75348&atid=543653">SF
+			BUG-1493438</a>] The "Word Wrap" combo in the cell properties dialog now accepts
+			only Yes/No (no more &lt;Not Set&gt; value).</li>
+		<li>The context menu is now being hidden when a nested menu option is selected.</li>
+		<li>Table cell context menu operations are now working correctly.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1494549&group_id=75348&atid=543653">SF
+			BUG-1494549</a>] The code formatter was having problems with dollar signs inside
+			&lt;pre&gt; tags.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1459740&group_id=75348&atid=543655">SF
+			Patch-1459740</a>] The "src" element of images can now be set by styles definitions.
+			Thanks to joelwreed.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1437052&group_id=75348&atid=543655">SF
+			Patch-1437052</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1436166&group_id=75348&atid=543655">SF
+				Patch-1436166</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1352385&group_id=75348&atid=543655">SF
+					Patch-1352385</a>] Small fix to the FCK.InsertHtml, FCKTools.AppendStyleSheet
+			and FCKSelection.SelectNode functions over IE. Thanks to Alfonso Martinez.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1349765&group_id=75348&atid=543655">SF
+			Patch-1349765</a>] Small fix to the FCKSelection.GetType over Firefox. Thanks to
+			Alfonso Martinez.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543655&aid=1495422&group_id=75348">SF
+			Patch-1495422</a>] The editor now creates link based on the URL when no selection
+			is available. Thanks to Dominik Pesch.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543655&aid=1478859&group_id=75348">SF
+			Patch-1478859</a>] On some circumstances, the Yahoo popup blocker was blocking the
+			File Browser window, giving no feedback to the user. Now an alert message is displayed.</li>
+		<li>When using the editor in a RTL localized interface, like Arabic, the toolbar combos
+			were not showing completely in the first click. Fixed.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1500212&group_id=75348">SF
+			BUG-1500212</a>] All "_samples/html" samples are now working when loading directly
+			from the Windows Explorer. Thanks to Alfonso Martinez.</li>
+		<li>The "FitWindow" feature was breaking the editor under Firefox 1.0.x.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1500032&group_id=75348&atid=543655">SF
+			Patch-1500032</a>] In Firefox, the caret position now follows the user clicks when
+			clicking in the white area bellow the editor contents. Thanks to Alfonso Martinez.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1499522&group_id=75348">SF
+			BUG-1499522</a>] In Firefox, the link dialog window was loosing the focus (and quickly
+			reacquiring it) when opening. This behavior was blocking the dialog in some Linux
+			installations. </li>
+		<li>Drastically improved the loading performance of the file list in the default File
+			Browser.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&atid=543653&aid=1503059&group_id=75348">SF
+			BUG-1503059</a>] The default "BasePath" for FCKeditor in all integration files has
+			been now unified to "/fckeditor/" (lower-case). This is the usual casing system
+			in case sensitive OSs like Linux.</li>
+		<li>The "DisableFFTableHandles" setting is now honored when switching the full screen
+			mode with FitWindow.</li>
+		<li>Some fixes has been applied to the cell merging in Firefox.</li>
+	</ul>
+	<p>
+		* This version has been partially sponsored by <a href="http://www.footsteps.nl/">Footsteps</a>
+		and <a href="http://www.kentico.com/">Kentico</a>.</p>
+	<h3>
+		Version 2.3 Beta</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li><span><strong>Extremely Fast Loading!</strong> The editor now loads more than 3
+			times faster than before, with no impact on its advanced features.</span> </li>
+		<li><span><strong>New toolbar system</strong>:</span>
+			<ul>
+				<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1454850&amp;group_id=75348&amp;atid=543656">SF
+					Feature-1454850</a>] The toolbar will now <strong>load much faster</strong>. All
+					images have being merged in a single image file using a unique system available
+					only with FCKeditor. </li>
+				<li>The &quot;Text Color&quot; and &quot;Background Color&quot; commands buttons have
+					enhancements on the interface.</li>
+				<li><strong><span style="color: #ff0000">Attention</span></strong>: As a completely
+					new system has being developed. Skins created for versions prior this one will not
+					work. Skin styles definitions have being merged, added and removed. All skins have
+					been a little bit reviewed. </li>
+				<li>It is possible to <strong>detach the toolbar</strong> from an editor instance and
+					share it with other instances. In this way you may have only one toolbar (in the
+					top of the window, for example, that can be used by many editors (see <a href="_samples/html/sample10.html">
+						sample10.html</a>). This feature is still under development (issues with IE
+					focus still to be solved).* </li>
+			</ul>
+		</li>
+		<li><strong><span>New context menu system</span></strong>:
+			<ul>
+				<li>It uses the same (fast) loading system as the toolbar. </li>
+				<li>Sub-Menus are now available to group features (try the context menu over a table
+					cell). </li>
+				<li>It is now possible to create your own context menu entries by creating plugins.
+				</li>
+			</ul>
+		</li>
+		<li><strong>New "FitWindow" toolbar button</strong>, based on the <a href="https://sourceforge.net/tracker/index.php?func=detail&aid=1431638&group_id=75348&atid=737639">
+			plugin</a> published by Paul Moers. Thanks Paul!</li>
+		<li><strong>&quot;Auto Grow&quot; Plugin</strong>: automatically resizes the editor
+			until a maximum height, based on its contents size.** </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1444943&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1444943</a>] <strong>Multiple CSS files</strong> can now be used in the
+			editing area. Just define FCKConfig.EditorAreaCSS as an array of strings (each one
+			is a path to a different css file). It works also as a simple string, as on prior
+			versions. </li>
+		<li>New language files:<ul>
+			<li><strong>Bengali / Bangla</strong> (by Richard Walledge).</li>
+			<li><strong>English (Canadian)</strong> (by Kevin Bennett). </li>
+			<li><strong>Khmer</strong> (by Sengtha Chay).</li>
 		</ul>
-		<h3>Version 2.0 RC1 (Release Candidate 1)</h3>
-		<ul>
-			<li>
-				<strong>ASP</strong>
-			support is now available (including the&nbsp;File Manager connector).
-			<li>
-				<strong>PHP</strong>
-			support is now available (including the File Manager connector).
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1063217&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1063217</a>] The new advanced&nbsp;<strong>Style</strong>
-			command is available in the toolbar: full preview, context sensitive, style 
-			definitions are loaded from a XML file (see documentation for more 
-			instructions).
-			<li>
-				The <strong>Font Format</strong>, <strong>Font Name</strong> and <strong>Font Size</strong>
-				toolbar command now show a <strong>preview</strong>
-			of the available options.
-			<li>
-				The new <strong>Find</strong> and <strong>Replace</strong>
-			features has been introduced.
-			<li>
-				A new <strong>Plug-in</strong>
-			system has been developed. Now it is quite easy to customize the editor to your 
-			needs. (Take a look at the html/sample06.html file).
-			<li>
-				The editor now handles <strong>HTML entities</strong>
-			in the right way (XHTML support must be set to "true"). It handles all entities 
-			defined in the W3C&nbsp;XHTML DTD file.
-			<li>
-				A new "_docs" folder has been introduced for the <strong>documentation</strong>. 
-			It is not yet complete, but I hope the community will help us to fill it 
-			better.
-			<li>
-			It is now possible (even if it is not recommended by the W3C) to force the use 
-			of simple ampersands (&amp;) on attributes (like the links href) instead of its 
-			entity &amp;amp;. Just set FCKConfig.ForceSimpleAmpersand = true in 
-			the&nbsp;configuration file.
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1026866&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1026866</a>] The "<strong>EditorAreaCSS</strong>" 
-			configuration option has been introduced. In this way you can set the CSS to 
-			use in the editor (editable area).
-			<li>
-			The editing area is not anymore clipped if the toolbar is too large and exceeds 
-			the window width.
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1064902&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1064902</a>] [<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1033933&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1033933</a>] The editor <strong>interface</strong> is 
-				now completely <strong>localizable</strong>. The version ships with 19 
-				languages including: <b>Arabic</b>, <b>Bosnian</b>, <b>Catalan</b>, <b>English</b>,
-				<b>Spanish</b>, <b>Estonian</b>, <b>Finnish</b>, <b>French</b>, <b>Greek</b>, <b>Hebrew</b>,
-				<b>Croatian</b>, <b>Italian</b>, <b>Korean</b>, <b>Lithuanian</b>, <b>Norwegian</b>,
-				<STRONG>Polish</STRONG>, <STRONG>Serbian (Cyrillic)</STRONG>, <STRONG>Serbian 
-					(Latin)</STRONG> and <STRONG>Swedish</STRONG>.<li>[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1027858&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1027858</a>] Firefox 1.0 
-			PR&nbsp;introduced&nbsp;a bug that made the editor stop working on it. A 
-			workaround has been developed to fix the problem.
-			<li>
-			There was a positioning problem over IE&nbsp;with the color panel. It has been 
-			corrected.
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1049842&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1049842</a>] [<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1033832&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1033832</a>] [<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1028623&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1028623</a>] [<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1026610&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1026610</a>] [<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1064498&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1064498</a>] The combo commands in the toolbar 
-			were not opening in the right way. It has been fixed.
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1053399&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1053399</a>] [<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=965318&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-965318</a>] [<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1018296&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1018296</a>] The toolbar buttons icons were not 
-			showing on some IE and Firefox/Mac installations. It has been fixed.
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1054621&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1054621</a>] Color pickers are now working with 
-			the "office2003" and "silver" skins.
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1054108&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1054108</a>] IE doesnt recognize the 
-			"&amp;apos;" entity for apostrophes, so a workaround has been developed to 
-			replace it with "&amp;#39;" (its numeric entity representation).
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=983434&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-983434</a>] [<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=983398&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-983398</a>] [<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1028103&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1028103</a>] [<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1072496&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1072496</a>] The problem with elements with name 
-			"submit" inside the editor's form has been solved.
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1018743&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1018743</a>] The problem with Gecko when 
-			collapsing the toolbar while in source mode has been fixed.
-			<li>
-				[<a href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1065268&amp;group_id=75348"
-					target="_blank">SF BUG-1065268</a>] [<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1034354&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1034354</a>] The XHTML processor now doesnt use 
-			the minimized tag syntax (like &lt;br/&gt;) for empty elements that are not 
-			marked as EMPTY in the W3C XHTML DTD specifications.
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1029654&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1029654</a>] [<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1046500&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1046500</a>] Due to a bug on Gecko there was a 
-			problem when creating links. It has been fixed.
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1065973&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1065973</a>] [<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=999792&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-999792</a>] The editor now handles relative URLs 
-			in IE. In effect IE transform all relative URLs to absolute links, pointing to 
-			the site the editor is running. So now the editor removes the protocol and host 
-			part of the link if it matches the running server.
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1071824&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1071824</a>] The color dialog box bug has been 
-			fixed.
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1052856&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1052856</a>] [<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1046493&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1046493</a>] [<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1023530&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1023530</a>] [<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1025978&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1025978</a>] The editor now doesnt throw an 
-			error if no selection was made and the create link command is used.
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1036756&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1036756</a>] The XHTML processor has been 
-			reviewed.
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1029101&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1029101</a>] The Paste from Word feature is 
-			working correctly.
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1034623&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1034623</a>] There is an IE bug when setting the 
-			editor value to "&lt;p&gt;&lt;hr&gt;&lt;/p&gt;". A workaround has been 
-			developed.
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1052695&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1052695</a>] There are some rendering 
-			differences between Netscape and Mozilla. (Actually that is a bug on both 
-			browsers). A workaround has been developed to solve it.
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1073053&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1073053</a>] [<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1050394&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1050394</a>] The editor doesnt throw errors 
-			when hidden.
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1066321&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1066321</a>] Scrollbars should not appear on 
-			dialog boxes (at least for the Image and Link ones).
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1046490&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1046490</a>] Dialogs now are forced to show on 
-			foreground over Mac.
-			<li>
-				[<a href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1073955&amp;group_id=75348"
-					target="_blank">SF BUG-1073955</a>] A small bug in the image dialog 
-			window has been corrected.
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1049534&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1049534</a>] The Resources Browser window is now 
-			working well over Gecko browsers.
-			<li>
-				[<a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1036675&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1036675</a>] The Resources Browser window now 
-				displays the server error on bad installations.</li></ul>
-		<H3>Version 2.0 Beta 2</H3>
-		<UL>
-			<LI>
-				There is a new configuration - "<STRONG>GeckoUseSPAN</STRONG>" - that can 
-			be used to tell Gecko browsers to use &lt;SPAN style...&gt; or &lt;B&gt;, 
-			&lt;I&gt; and &lt;U&gt; for the bold, italic and underline commands.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1002622&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-1002622</A>] New <STRONG>Text Color</STRONG> and&nbsp;<STRONG>Background 
-					Color</STRONG>
-			&nbsp;commands have been added to the editor.
-			<LI>
-			On Gecko browsers, a message is shown when,&nbsp;because of&nbsp;security 
-			settings,&nbsp;the user&nbsp;is not able to&nbsp;cut, copy or paste data from 
-			the clipboard using the toolbar buttons or the context menu.
-			<LI>
-				The new "<STRONG>Paste as Plain Text</STRONG>
-			" command has been introduced.
-			<LI>
-				The new "<STRONG>Paste from Word</STRONG>
-			" command has been introduced.
-			<LI>
-			A new configuration named&nbsp;"StartupFocus" can be used to tell the editor to 
-			get the focus when the page is loaded.
-			<LI>
-				All <STRONG>Java </STRONG>
-			integration files has been moved to a new separated package.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1016781&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1016781</A>] <STRONG>Table operations</STRONG> are 
-				now working when right click inside a table. The following commands has been 
-				introduced: <STRONG>Insert Row</STRONG>, <STRONG>Delete Row</STRONG>, <STRONG>Insert 
-					Column</STRONG>, <STRONG>Delete Column</STRONG>, <STRONG>Insert Cell</STRONG>
-				and <STRONG>Delete Cells</STRONG>
-			.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=965067&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-965067</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1010379&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1010379</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=977713&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-977713</A>] XHTML support was not working with 
-			FireFox, blocking the editor when submitting data. It has been fixed.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1007547&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1007547</A> ] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=974595&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-974595</A>
-			]&nbsp;The "FCKLang not defined" error when loading has been fixed.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1021028&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-1021028</A>] If the editor doesn't have the 
-			focus, some commands were been executed outside the editor in the place where 
-			the focus is. It has been fixed.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=981191&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-981191</A>] We are now using &lt;!--- ---&gt; for 
-				ColdFusion comments.</LI></UL>
-		<H3>Version 2.0 Beta 1</H3>
-		<P>This is the first beta of the 2.x series. It brings a lot of new and important 
-			things. Beta versions will be released until all features available on version 
-			1.x will be introduced in the 2.0.<BR>
-			<BR>
-			<STRONG>Note:</STRONG> As it is a beta, it is not yet completely developed. 
-			Future versions can bring new features that can break backward compatibility 
-			with this version.
-		</P>
-		<UL>
-			<LI>
-				Gecko browsers (<STRONG>Mozilla</STRONG> and <STRONG>Netscape</STRONG>) 
-			support.
-			<LI>
-				<STRONG>Quick startup</STRONG>
-			response times.
-			<LI>
-				Complete <STRONG>XHTML</STRONG>
-			1.0 support.
-			<LI>
-				<STRONG>Advanced link</STRONG> dialog box:
-				<UL>
-					<LI>
-					Target selection.
-					<LI>
-					Popup configurator.
-					<LI>
-					E-Mail link.
-					<LI>
-						Anchor selector.
-					</LI>
-				</UL>
-			<LI>
-				New <STRONG>File Manager</STRONG>.
-			<LI>
-				New dialog box system, with <STRONG>tabbed dialogs</STRONG>
-			support.
-			<LI>
-				New <STRONG>context menus</STRONG>
-			with icons.
-			<LI>
-			New toolbar with "expand/collapse" feature.
-			<LI>
-				<STRONG>Skins</STRONG>
-			support.
-			<LI>
-				<STRONG>Right to left languages</STRONG> support.
-			</LI>
-		</UL>
-		<H3>Version 1.6.1</H3>
-		<UL>
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=862364&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-862364</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=812733&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-812733</A>] There was a problem when the user 
-			tried to delete the last row, collumn or cell in a table. It has been 
-			corrected.*
-			<LI>
-			New Estonian language file. Thanks to Kristjan Kivikangur
-			<LI>
-			New Croatian language file. Thanks to Alex Varga.
-			<LI>
-			Updated language file for Czech. Thanks to Plachow.
-			<LI>
-			Updated language file for Chineze (zh-cn). Thanks to Yanglin.
-			<LI>
-				Updated language file for Catalan. Thanks to Jordi Cerdan.</LI></UL>
-		<P>* This version has been partially sponsored by <A href="http://www.genuitec.com/">Genuitec, 
-				LLC</A>.</P>
-		<H3>Version 1.6</H3>
-		<UL>
-			<LI>
-				<STRONG>Context Menu</STRONG> support for <STRONG>form</STRONG>
-			elements.*
-			<LI>
-				New <STRONG>"Selection Field" command</STRONG>
-			with advanced dialog box for options definitions.*
-			<LI>
-				New <STRONG>"Image Button" command</STRONG>
-			is available.*
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=936196&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-936196</A>] Many form elements <STRONG>bugs has been 
-					fixed</STRONG> and <STRONG>many improvements</STRONG>
-			has been done.*
-			<LI>
-				New <STRONG>Java Integration Module</STRONG>. There is a complete Java API 
-			and Tag Library implementations. Take a look at the _jsp directory. Thanks to 
-			Simone Chiaretta and Hao Jiang.
-			<LI>
-				The <STRONG>Word Spell Checker</STRONG>
-			can be used. To be able to run it, your browser security configuration 
-			"Initialize and script ActiveX controls not marked as safe" must be set to 
-			"Enable" or "Prompt". And easier and more secure way to do that is to add your 
-			site in the list of trusted sites. IeSpell can still be used. Take a look at 
-			the fck_config.js file for some configuration options. Thanks to EdwardRF.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=748807&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-748807</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=801030&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-801030</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=880684&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-880684</A>] New "<STRONG>Anchor" command</STRONG>, 
-			including context menu support. Thanks to G.Meijer.
-			<LI>
-			Special characters are replaced with their decimal HTML entities when the XHMTL 
-			support is enabled (only over IE5.5+).
-			<LI>
-				New <STRONG>Office 2003 Style</STRONG> toolbar icons are available. Just 
-				uncomment the config.ToolbarImagesPath key in the fck_config.js file. Thanks to 
-				Abdul-Aziz A. Al-Oraij. <STRONG>Attention</STRONG>: the default toolbar 
-			items have been moved to the "images/toolbar/default" directory.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=934566&amp;group_id=75348&amp;atid=543655"
-					target="_blank">SF Patch-934566</A>] <STRONG>Double click support</STRONG>
-			for Images, Tables, Links, Anchors and all Form elements. Thanks to Top Man.
-			<LI>
-				New <STRONG>"New Page" command</STRONG>
-			to start a typing from scratch. Thanks to Abdul-Aziz A. Al-Oraij.
-			<LI>
-				New <STRONG>"Replace" command</STRONG>. Thanks to Abdul-Aziz A. Al-Oraij.
-			<LI>
-				New <STRONG>"Advanced Font Style" command</STRONG>. Thanks to Abdul-Aziz A. 
-			Al-Oraij.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=738193&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-738193</A>] New <STRONG>"Save" command</STRONG>. 
-			It can be used to simulate a save action, but in fact it just submits the form 
-			where the editor is placed in. Thanks to Abdul-Aziz A. Al-Oraij.
-			<LI>
-				New <STRONG>"Universal Keyboard" command</STRONG>. This 22 charsets are 
-			available: Arabic, Belarusian, Bulgarian, Croatian, Czech, Danish, Finnish, 
-			French, Greek, Hebrew, Hungarian, Diacritical, Macedonian, Norwegian, Polish, 
-			Russian, Serbian (Cyrillic), Serbian (Latin), Slovak, Spanish, Ukrainian and 
-			Vietnamese. Includes a keystroke listener to type Arabic on none Arabic OS or 
-			machine. Thanks to Abdul-Aziz A. Al-Oraij.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=935358&amp;group_id=75348&amp;atid=543655"
-					target="_blank">SF Patch-935358</A>] New <STRONG>"Preview" command</STRONG>. 
-			Context menu option is included and can be deactivated throw the 
-			config.ShowPreviewContextMenu configuration. Thanks to Ben Ramsey.
-			<LI>
-				New "<STRONG>Table Auto Format</STRONG>" context menu command. Hack a 
-			little the fck_config.js and the fck_editorarea.css files. Thanks to Alexandros 
-			Lezos.
-			<LI>
-				New "<STRONG>Bulleted List Properties</STRONG>
-			" context menu to define its type and class. Thanks to Alexandros Lezos.
-			<LI>
-				The <STRONG>image dialog</STRONG> box has been a <STRONG>redesigned</STRONG>
-			. Thanks to Mark Fierling.
-			<LI>
-				Images now always have the <STRONG>"alt" attribute</STRONG>
-			set, even when it's value is empty. Thanks to Andreas Barnet.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=942250&amp;group_id=75348&amp;atid=543655"
-					target="_blank">SF Patch-942250</A>] You can set on fck_config.js to <STRONG>automatically 
-					clean Word</STRONG>
-			pasting operations without a user confirmation.
-			<LI>
-			Forms element dialogs and other localization pending labels has been updated.
-			<LI>
-				A new <STRONG>Lithuanian</STRONG>
-			language file is available. Thanks to Tauras Paliulis.
-			<LI>
-				A new <STRONG>Hebrew</STRONG>
-			language file is available. Thanks to Ophir Radnitz.
-			<LI>
-				A new <STRONG>Serbian</STRONG>
-			language file is available. Thanks to Zoran Subic.
-			<LI>
-				<STRONG>Danish</STRONG>
-			language file updates. Thanks to Flemming Jensen.
-			<LI>
-				<STRONG>Catalan</STRONG>
-			language file updates. Thanks to Jordi Cerdan.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=936514&amp;group_id=75348&amp;atid=543655"
-					target="_blank">SF Patch-936514</A>] [<A href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=918716&amp;group_id=75348">SF 
-					BUG-918716</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=931037&amp;group_id=75348&amp;atid=543653">SF 
-					BUG-931037</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=865864&amp;group_id=75348&amp;atid=543653">SF 
-					BUG-865864</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=915410&amp;group_id=75348&amp;atid=543653">SF 
-					BUG-915410</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=918716&amp;group_id=75348&amp;atid=543653">SF 
-					BUG-918716</A>] Some <STRONG>languages files</STRONG> were not saved on <STRONG>
-					UTF-8</STRONG>
-			format causing some javascript errors on loading the editor or making 
-			"undefined" to show on editor labels. This problem was solved.
-			<LI>
-			Updates on the testsubmit.php file. Thanks to Geat and Gabriel Schillaci
-			<LI>
-				[<A href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=924620&amp;group_id=75348">SF 
-					BUG-924620</A>] There was a problem when setting a name to an editor 
-			instance when the name is used by another tag. For example when using 
-			"description" as the name in a page with the &lt;META name="description"&gt; 
-			tag.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=935018&amp;group_id=75348&amp;atid=543653">SF 
-					BUG-935018</A>] The "buletted" typo has been corrected.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=902122&amp;group_id=75348&amp;atid=543653">SF 
-					BUG-902122</A>] Wrong css and js file references have been corrected.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=918942&amp;group_id=75348&amp;atid=543653">SF 
-					BUG-918942</A>] All dialog boxes now accept Enter and Escape keys as Ok and 
-				Cancel buttons.</LI></UL>
-		<P>* This version has been partially sponsored by <A href="http://www.genuitec.com/">Genuitec, 
-				LLC</A>.</P>
-		<H3>Version 1.5</H3>
-		<UL>
-			<LI>
-				[<A href="https://sourceforge.net/tracker/?func=detail&amp;atid=543656&amp;aid=913777&amp;group_id=75348"
-					target="_blank">SF Feature-913777</A>] <STRONG>New Form Commands</STRONG>
-			are now available! Special thanks to G.Meijer.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=861149&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-861149</A>] <STRONG>Print Command</STRONG>
-			is now available!
-			<LI>
-				[<A href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=743546&amp;group_id=75348"
-					target="_blank">SF BUG-743546</A>] The <STRONG>XHTML content duplication 
-					problem </STRONG>has been <STRONG>solved</STRONG>
-			. Thanks to Paul Hutchison.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=875853&amp;group_id=75348"
-					target="_blank">SF BUG-875853</A>] The <STRONG>image dialog box</STRONG>
-			now gives precedence for width and height values set as styles. In this way a 
-			user can change the size of the image directly inside the editor and the 
-			changes will be reflected in the dialog box.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/?func=detail&amp;atid=543656&amp;aid=913777&amp;group_id=75348"
-					target="_blank">SF Feature-788368</A>] The sample <STRONG>file upload </STRONG>
-				manager for ASPX now uses <STRONG>guids</STRONG>
-			for the file name generation. In this way a support XML file is not needed 
-			anymore.
-			<LI>
-				It's possible now to <STRONG>programmatically change the Base Path</STRONG> of 
-				the editor if it's installed in a directory different of "/FCKeditor/". 
-				Something like this:<BR>
-				oFCKeditor.BasePath = '/FCKeditor/' ;<BR>
-			Take a look at the _test directory for samples.
-			<LI>
-			There was a little bug in the TAB feature that moved the insertion point if 
-			there were any object (images, tables) in the content. It has been fixed.
-			<LI>
-				The problem with <STRONG>accented and international characters</STRONG>
-			on the PHP test page was solved.
-			<LI>
-				A new <STRONG>Chinese (Taiwan)</STRONG>
-			language file is available. Thanks to Nil.
-			<LI>
-				A new <STRONG>Slovenian</STRONG>
-			language file is available. Thanks to Pavel Rotar.
-			<LI>
-				A new <STRONG>Catalan</STRONG>
-			language file is available. Thanks to Jordi Cerdan.
-			<LI>
-				A new <STRONG>Arabic</STRONG>
-			language file is available. Thanks to Abdul-Aziz A. Al-Oraij.
-			<LI>
-				Small corrections on the <STRONG>Norwegian</STRONG>
-			language file.
-			<LI>
-			A Java version for the test results (testsubmit.jsp) is now available. Thanks 
-			to Pritpal Dhaliwal.
-			<LI>
-			When using Javascript to create a editor instance it's possible now to easily 
-			get the editor's value calling oFCKeditor.GetValue() (eg.). Better Javascript 
-			API interfaces will be available on version 2.0.
-			<LI>
-				If <STRONG>XHTML</STRONG>
-			is enabled the editor cleans the HTML before showing it on the Source View, so 
-			the exact result can be viewed by the user. This option can be activated 
-			setting config.EnableSourceXHTML = true in the fck_config.js file.
-			<LI>
-				The <STRONG>JS integration object</STRONG> now escapes all configuration 
-				settings, in this way a user can use <STRONG>reserved chars</STRONG> on it. For 
-				example:
-				<BR>
-			oFCKeditor.Config["ImageBrowserURL"] = 
-			'/imgs/browse.asp?filter=abc*.jpg&amp;userid=1';
-			<LI>
-				A minimal browse server sample is now available in ASP. Thanks to Andreas 
-				Barnet.
-			</LI>
-		</UL>
-		<H3>Version 1.4</H3>
-		<UL>
-			<LI>
-				<STRONG>ATTENTION: For PHP users</STRONG>: The editor was changed and now uses <STRONG>
-					htmlspecialchars</STRONG> instead of <STRONG>htmlentities</STRONG>
-			when handling the initial value. It should works well, but please make some 
-			tests before upgrading definitively. If there is any problem just uncomment the 
-			line in the fckeditor.php file (and send me a message!).
-			<LI>
-				The editor is now integrated with <STRONG>ieSpell</STRONG> (<A href="http://www.iespell.com">http://www.iespell.com</A>) 
-				for <STRONG>Spell Checking</STRONG>. You can configure the download URL in 
-			then fck_config.js file. Thanks to Sanjay Sharma. (ieSpell is free for personal 
-			use but must be paid for commercial use)
-			<LI>
-				<STRONG>Table</STRONG> and <STRONG>table cell</STRONG> dialogs has been 
-				changed. Now you can <STRONG>select the class</STRONG>
-			you want to be applied. Thanks to Alexander Lezos.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=865378&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-865378</A>]A new <STRONG>upload support is available 
-					for ASP</STRONG>. It uses the /UserImages/ folder in the root of the 
-			web site as the files container and a counter controlled by the upload.cnt 
-			file. Both must have write permissions set to the IUSR_xxx user. Thanks to Trax 
-			and Juanjo.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=798128&amp;group_id=75348&amp;atid=543655"
-					target="_blank">SF Patch-798128</A>] The user (programmer) can now define a <STRONG>
-					custom separator</STRONG>
-			for the list items of a combo in the toolbar. Thanks to Wulff D. Heiss.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=741963&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-741963</A>][<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=878941&amp;group_id=75348&amp;atid=543656"
-					target="_blank">SF Feature-878941</A>][<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=869389&amp;group_id=75348&amp;atid=543655"
-					target="_blank">SF Patch-869389</A>] A minimal support for a fake <STRONG>TAB 
-					is now available</STRONG>, even if HTML has no support for TAB. Now 
-			when the user presses the TAB key a configurable number of spaces (&amp;nbsp;) 
-			is added. Take a look at config.TabSpaces on the fck_config.js file. No action 
-			is performed if it is set to zero. The default value is 4. Thanks to Phil 
-			Hassey.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=782779&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-782779</A>][<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=790939&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-790939</A>] The problem with big images has been 
-			corrected. Thanks to Raver.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=853374&amp;group_id=75348"
-					target="_blank">SF BUG-862975</A>] Now the editor does nothing if no 
-			image is selected in the image dialog box and the OK button is hit.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=851609&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-851609</A>] The problem with ASP and null values 
-			has been solved.
-			<LI>
-				<STRONG>Norwegean</STRONG>
-			language pack. Thanks to Martin Kronstad.
-			<LI>
-				<STRONG>Hungarian</STRONG>
-			language pack. Thanks to Balzs Szab.
-			<LI>
-				<STRONG>Bosnian</STRONG>
-			language pack. Thanks to Trax.
-			<LI>
-				<STRONG>Japanese</STRONG>
-			language pack. Thanks to Kato Yuichiro.
-			<LI>
-				Updates on the <STRONG>Polish</STRONG>
-			language pack. Thanks to Norbert Neubauer.
-			<LI>
-				The <STRONG>Chinese (Taiwan)</STRONG> (zh-tw) has been removed from the package 
-				because it's corrupt. I'm sorry. I hope someone could send me a good version 
-				soon.
-			</LI>
-		</UL>
-		<H3>Version 1.3.1</H3>
-		<UL>
-			<LI>
-				It's now possible to configure the editor the insert a <STRONG>&lt;BR&gt; tag 
-					instead of &lt;P&gt;</STRONG> when the user presses the <STRONG>&lt;Enter&gt;</STRONG>
-				key. Take a look at the fck_config.js configuration file for the "<STRONG>UseBROnCarriageReturn</STRONG>" 
-			key. This option is disabled by default.
-			<LI>
-				<STRONG>Icelandic</STRONG>
-			language pack. Thanks to Andri skarsson.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=853374&amp;group_id=75348">SF 
-					BUG-853374</A>] On IE 5.0 there was a little error introduced with 
-			version 1.3 on initialization. It was corrected.
-			<LI>
-				[<A href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=853372&amp;group_id=75348">SF 
-					BUG-853372</A>] On IE 5.0 there was a little error introduced with 
-			version 1.3 when setting the focus in the editor. It was corrected.
-			<LI>
-				Minor errors on the language file for <STRONG>english</STRONG>
-			has been corrected. Thanks to Anders Madsen.
-			<LI>
-				Minor errors on the language file for <STRONG>danish</STRONG> has been 
-				corrected. Thanks to Martin Johansen.
-			</LI>
-		</UL>
-		<H3>Version 1.3</H3>
-		<UL>
-			<LI>
-				Language support for <STRONG>Danish, Polish, Simple Chinese, Slovak, Swedish and 
-					Turkish</STRONG>.
-			<LI>
-				Language updates for <STRONG>Romanian</STRONG>.
-			<LI>
-				It's now possible to <STRONG>override</STRONG> any of the <STRONG>editor's 
-					configurations</STRONG>
-			(for now it's implemented just for JavaScript, ASPX and HTC modules). See 
-			_test/test.html for a sample. I'm now waiting for the Community for the ASP, 
-			CFM and PHP versions.
-			<LI>
-				A new method is available for <STRONG>PHP</STRONG> users. It's called <STRONG>ReturnFCKeditor</STRONG>. 
-				It works exactly like CreateFCKeditor, but it <STRONG>returns a string with the 
-					HTML</STRONG>
-			for the editor instead of output it (echo). This feature is useful for people 
-			who are working with Smarty Templates or something like that. Thanks to Timothy 
-			J. Finucane.
-			<LI>
-				Many people have had problems with <STRONG>international characters</STRONG> over
-				<STRONG>PHP</STRONG>. I had also the same problem. PHP have strange problems 
-				with character encoding. The code hasn't been changed but just saved again with 
-				Western European encoding. <STRONG>Now it works well</STRONG> in my system.<BR>
-			Take a look also at the "default_charset" configuration option at the php.ini 
-			file. It doesn't seem to be an editor's problem but a PHP issue.
-			<LI>
-				The "<STRONG>testsubmit.php</STRONG>" file now strips the "<STRONG>Magic Quotes</STRONG>
-			" that are automatically added by PHP on form posts.
-			<LI>
-				A <STRONG>new language</STRONG> integration module is available for <STRONG>ASP/Jscript</STRONG>. 
-			Thanks to Dimiter Naydenov.
-			<LI>
-				<STRONG>New configuration</STRONG> options are available to <STRONG>customize the 
-					Target</STRONG> combo box in the <STRONG>Insert/Modify Link</STRONG>
-			dialog box. Now you can hide it, or set which options are available in the 
-			combo box. Take a look at the fck_config.js file.
-			<LI>
-				The <STRONG>Text as Plain Text</STRONG> toolbar <STRONG>icon</STRONG> has been 
-				changed <STRONG>to avoid confusion</STRONG>
-			with the Normal Paste or. Thanks to Kaupo Kalda.
-			<LI>
-				The file <STRONG>dhtmled.cab has been removed</STRONG>
-			from the package. It's not needed to the editor to work and caused some 
-			confusion for a few users.
-			<LI>
-				The <STRONG>editor's content</STRONG> now <STRONG>doesn't loose the focus</STRONG>
-			when the user clicks with the mouse in a toolbar button.
-			<LI>
-				On <STRONG>drag-and-drop</STRONG> operations the data to be inserted in the 
-				editor is now <STRONG>converted to plain text</STRONG> when the "<STRONG>ForcePasteAsPlainText</STRONG>" 
-				configuration is set to <STRONG>true</STRONG>.
-			<LI>
-				The <STRONG>image browser</STRONG> sample in PHP now <STRONG>sorts the files</STRONG>
-			by name. Thanks to Sergey Lupashko.
-			<LI>
-				Two <STRONG>new configuration</STRONG> options are available to <STRONG>turn on/off 
-					by default</STRONG> the "<STRONG>Show Borders</STRONG>" and "<STRONG>Show 
-					Details</STRONG>" commands.
-			<LI>
-				Some <STRONG>characters have been removed</STRONG> from the "<STRONG>Insert Special 
-					Chars</STRONG>" dialog box because they were causing encoding problems 
-			in some languages. Thanks to Abomb Hua.
-			<LI>
-				<STRONG>JSP</STRONG> versions of the <STRONG>image and file upload and browsing</STRONG>
-				features. Thanks to Simone Chiaretta.</LI></UL>
-		<H3>Version 1.2.4</H3>
-		<UL>
-			<LI>
-				Language support for <STRONG>Spanish, Finnish, Romanian and Korean</STRONG>.
-			<LI>
-				Language updates for <STRONG>German</STRONG>.
-			<LI>
-				New <STRONG>Zoom</STRONG> toolbar option. (<A href="https://sourceforge.net/forum/forum.php?thread_id=904116&amp;forum_id=257180">Thanks 
-					to "mtn_roadie"</A>)</LI></UL>
-		<H3>Version 1.2.2</H3>
-		<UL>
-			<LI>
-				Language support for <STRONG>French</STRONG>.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=782779&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-782779</A>] Version 1.2 introduced a bug on the 
-				image dialog window: when changing the image, no update was done. This bug is 
-				now fixed.
-			</LI>
-		</UL>
-		<H3>Version 1.2</H3>
-		<UL>
-			<LI>
-				Enhancements to the <STRONG>Word cleaning</STRONG>
-			feature (Thanks to Karl von Randow).
-			<LI>
-				The <STRONG>Table dialog box</STRONG>
-			now handles the Style width and height set in the table (Thanks to Roberto 
-			Arruda). There where many problems on prior version when people changed 
-			manually the table's size, dragging the size handles, and then it was not 
-			possible to set a new size using the table dialog box.
-			<LI>
-				For the <STRONG>Image dialog box:</STRONG>
-				<UL>
-					<LI>
-					No image is shown in the preview pane if no image has been set.
-					<LI>
-						If no HSpace is set in the image a "-1" value was shown in the dialog box. Now, 
-						nothing is shown if the value is negative.
-					</LI>
-				</UL>
-			<LI>
-				[<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=739630&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-739630</A>] Image with link lost the link when 
-			changing its properties. The problem is solved.
-			<LI>
-				Due to some problems in the XHTML cleaning (content duplication when the source 
-				HTML is dirty and malformed), the <STRONG>XHTML support is turned off by default</STRONG>
-			from this version. You can still change this behavior and turn it on in the 
-			configuration file.
-			<LI>
-				Some little updates on the <STRONG>English </STRONG>
-			language file.
-			<LI>
-			A few addition of missing entries on all languages files (translations for 
-			these changes are pending).
-			<LI>
-				Language files has been added for the following languages:
-				<UL>
-					<LI>
-						<STRONG>Brazilian Portuguese</STRONG>
-					(pt-br)
-					<LI>
-						<STRONG>Czech</STRONG>
-					(cz)
-					<LI>
-						<STRONG>Dutch</STRONG>
-					(nl)
-					<LI>
-						<STRONG>Russian</STRONG>
-					(ru)
-					<LI>
-						<STRONG>Chinese (Taiwan)</STRONG>
-					(zh-tw)
-					<LI>
-						<STRONG>Greek</STRONG>
-					(gr)
-					<LI>
-						<STRONG>German</STRONG> (de)</LI></UL>
-			</LI>
-		</UL>
-		<H3>Version 1.1</H3>
-		<UL>
-			<LI>
-				The "<STRONG>Multi Language</STRONG>" system is now available. This version 
-				ships with English and Italian versions completed. Other languages will be 
-				available soon. The editor automatically detects the client language and sets 
-				all labels, tooltips and dialog boxes to it, if available. The auto detection 
-				and the default language can be set in the <STRONG>fck_config.file</STRONG>.
-			<LI>
-				Two files can now be created to isolate customizations code from the original 
-				source code of the editor: <STRONG>fckeditor.config.js</STRONG> and <STRONG>fckeditor.custom.js</STRONG>. 
-			Create these files in the root folder of your web site, if needed. The first 
-			one can be used to add or override configurations set on fck_config.js. The 
-			second one is used for custom actions and behaviors.
-			<LI>
-			A problem with relative links and images like "/test/test.doc" has been solved. 
-			In prior versions, only with XHTML support enabled, the URL was changed to 
-			something like "http://www.mysite.xxx/test/test.doc" (The domain was 
-			automatically added). Now the XHTML cleaning procedure gets the URLs exactly 
-			how they are defined in the editors HTML.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=742168&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-742168</A>] Mouse drag and drop from toolbar 
-			buttons has been disabled.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=768210&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-768210</A>] HTML entities, like <STRONG>&amp;lt;</STRONG>, 
-			were not load correctly. The problem is solved.
-			<LI>
-				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=748812&amp;group_id=75348&amp;atid=543653"
-					target="_blank">SF BUG-748812</A>] The link dialog window doesn't open when 
-				the link button is grayed.
-			</LI>
-		</UL>
-		<H3>Version 1.0</H3>
-		<UL>
-			<LI>
-			Three new options are available in the configuration file to set what file 
-			types are allowed / denied to be uploaded from the "Insert Link" and "Insert 
-			Image" dialog boxes.
-			<LI>
-			Upload options, for links and images, are automatically hidden on IE 5.0 
-			browsers (it's not compatible).
-			<LI>
-			[SF BUG-734894] Fixed a problem on XHTML cleaning: the value on INPUT fields 
-			were lost.
-			<LI>
-			[SF BUG-713797] Fixed some image dialog errors when trying to set image 
-			properties when no image is available.
-			<LI>
-			[SF BUG-736414] Developed a workaround for a DHTML control bug when loading in 
-			the editor some HTML started with &lt;p&gt;&lt;hr&gt;&lt;/p&gt;.
-			<LI>
-			[SF BUG-737143] Paste from Word cleaning changed to solve some IE 5.0 errors. 
-			This feature is still not available over IE 5.0.
-			<LI>
-			[SF BUG-737233] CSS mappings are now OK on the PHP image browser module.
-			<LI>
-			[SF BUG-737495] The image preview in the image dialog box is now working 
-			correctly.
-			<LI>
-			[SF BUG-737532] The editor automatically switches to WYSIWYG mode when the form 
-			is posted.
-			<LI>
-				[SF BUG-739571] The editor is now working well over Opera (as for Netscape, a 
-				TEXTAREA is shown).
-			</LI>
-		</UL>
-		<H3>Version 1.0 Final Candidate</H3>
-		<UL>
-			<LI>
-			A new dialog box for the "Link" command is available. Now you can upload and 
-			browse the server exactly like the image dialog box. It's also possible to 
-			define the link title and target window (_blank, _self, _parent and _top). As 
-			with the image dialog box, a sample (and simple) file server browser is 
-			available.
-			<LI>
-			A new configuration option is available to force every paste action to be 
-			handled as plain text. See "config.ForcePasteAsPlainText" in fck_config.js.
-			<LI>
-			A new Toolbar button is available: "Paste from Word". It automatically cleans 
-			the clipboard content before pasting (removesWord styles, classes, xml stuff, 
-			etc...). This command is available for IE 5.5 and more. For IE 5.0 users, a 
-			message is displayed advising that the text will not be cleaned before pasting.
-			<LI>
-			The editor automatically detects Word clipboard data on pasting operations and 
-			asks the user to clean it before pasting. This option is turned on by default 
-			but it can be configured. See "config.AutoDetectPasteFromWord" in 
-			fck_config.js.
-			<LI>
-			Table properties are now available in cells' right click context menu.
-			<LI>
-				It's now possible to edit cells advanced properties from it's right click 
-				context menu.
-			</LI>
-		</UL>
-		<H3>Version 1.0 Release Candidate 1 (RC1)</H3>
-		<UL>
-			<LI>
-			Some performance improvements.
-			<LI>
-			The file dhtmled.cab has been added to the package for clients ho needs to 
-			install the Microsoft DHTML Editor component.
-			<LI>
-			[SF BUG-713952] The format command options are localized, so it depends on the 
-			IE language to work. Until version 0.9.5 it was working only over English IE 
-			browsers. Now the options are load dynamically on the client using the client's 
-			language.
-			<LI>
-			[SF BUG-712103] The style command is localized, so it depends on the IE 
-			language to work. Until version 0.9.5 it was working only over English IE 
-			browsers. Now it configures itself using the client's language.
-			<LI>
-				[SF BUG-726137] On version 0.9.5, some commands (special chars, image, 
-				emoticons, ...) remove the next available character before inserting the 
-				required content even if no selection was made in the editor. Now the editor 
-				replaces only the selected content (if available).
-			</LI>
-		</UL>
-		<H3>Version 0.9.5 beta</H3>
-		<UL>
-			<LI>
-			XHTML support is now available! It can be enabled/disabled in the fck_config.js 
-			file.
-			<LI>
-			"Show Table Borders" option: show borders for tables with borders size set to 
-			zero.
-			<LI>
-			"Show Details" option: show hidden elements (comments, scripts, paragraphs, 
-			line breaks)
-			<LI>
-			IE behavior integration module. Thanks to Daniel Shryock.
-			<LI>
-			"Find" option: to find text in the document.
-			<LI>
-			More performance enhancements.
-			<LI>
-			New testsubmit.php file. Thansk to Jim Michaels.
-			<LI>
-			Two initial PHP upload manager implementations (not working yet). Thanks to 
-			Frederic Tyndiuk and Christian Liljedahl.
-			<LI>
-			Initial PHP image browser implementation (not working yet). Thanks to Frederic 
-			Tyndiuk.
-			<LI>
-				Initial CFM upload manager implementation. Thanks to John Watson.
-			</LI>
-		</UL>
-		<H3>Version 0.9.4 beta</H3>
-		<UL>
-			<LI>
-			ColdFusion module integration is now available! Thanks to John Watson.
-			<LI>
-			"Insert Smiley" toolbar option! Thanks to Fredox. Take a look at fck_config.js 
-			for configuration options.
-			<LI>
-			"Paste as plain text" toolbar option!
-			<LI>
-			Right click support for links (edit / remove).
-			<LI>
-			Buttons now are shown in gray when disabled.
-			<LI>
-			Buttons are shown just when the image is downloaded (no more "red x" while 
-			waiting for it).
-			<LI>
-			The toolbar background color can be set with a CSS style (see fck_editor.css).
-			<LI>
-				Toolbar images have been reviewed:
-				<UL>
-					<LI>
-					Now they are transparent.
-					<LI>
-					No more over...gif for every button (so the editor loads quicker).
-					<LI>
-						Buttons states are controlled with CSS styles. (see fck_editor.css).</LI></UL>
-			<LI>
-			Internet Explorer 5.0 compatibility, except for the image uploading popup.
-			<LI>
-			Optimizations when loading the editor.
-			<LI>
-			[SF BUG-709544] - Toolbar buttons wait for the images to be downloaded to start 
-			watching and responding the user actions (turn buttons on/off when the user 
-			changes position inside the editor).
-			<LI>
-			Javascript integration is now Object Oriented. CreateFCKeditor function is not 
-			available anymore. Take a look in test.html.
-			<LI>
-				Two new configuration options, ImageBrowser and ImageUpload, are available to 
-				turn on and off the image upload and image browsing options in the Image dialog 
-				box. This options can be hidden for a specific editor instance throw specific 
-				URL parameter in the editors IFRAME (upload=true/false&amp;browse=true/false). 
-				All specific language integration modules handle this option. For sample see 
-				the _test directory.
-			</LI>
-		</UL></SPAN>
-	</body>
+		</li>
+		<li>The source view is now available in the editing area on Gecko browsers. Previously
+			a popup was used for it (due to a Firefox bug). </li>
+		<li><span>As some people may prefer the popup way for source editing, a new configuration
+			option (SourcePopup) has being introduced.</span> </li>
+		<li>The IEForceVScroll configuration option has been removed. The editor now automatically
+			shows the vertical scrollbar when needed (for XHTML doctypes). </li>
+		<li>The configuration file doesn't define a default DOCTYPE to be used now. </li>
+		<li>It is now possible to easily change the toolbar using the JavaScript API by just
+			calling &lt;EditorInstance&gt;.ToolbarSet.Load( '&lt;ToolbarName&gt;' ). See _testcases/010.html
+			for a sample. </li>
+		<li>The &quot;OnBlur&quot; and &quot;OnFocus&quot; JavaScript API events are now compatible
+			with all supported browsers. </li>
+		<li>Some few updates in the Lasso connector and uploader. </li>
+		<li>The GeckoUseSPAN setting is now set to "false" by default. In this way, the code
+			produced by the bold, italic and underline commands are the same on all browsers.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li><strong>Important security fixes have been applied to the File Manager, Uploader
+			and Connectors. Upgrade is highly recommended.</strong> Thanks to Alberto Moro,
+			Baudouin Lamourere and James Bercegay.</li><li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1399966&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1399966</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1249853&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1249853</a>] The &quot;BaseHref&quot; configuration is now working with
+				Firefox in both normal and full page modes.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1405263&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1405263</a>] A typo in the configuration file was impacting the Quick Upload
+			feature. </li>
+		<li>Nested &lt;ul&gt; and &lt;ol&gt; tags are now generating valid html.</li>
+		<li>The &quot;wmode&quot; and &quot;quality&quot; attributes are now preserved for Flash
+			embed tags, in case they are entered manually in the source view. Also, empty attributes
+			are removed from that tag. </li>
+		<li>Tables where not being created correctly on Opera. </li>
+		<li>The XHTML processor will ignore invalid tags with names ending with &quot;:&quot;,
+			like http:. </li>
+		<li><span>On Firefox, the scrollbar is not anymore displayed on toolbar dropdown commands
+			when not needed.</span> </li>
+		<li><span>Some small fixes have being done to the dropdown commands rendering for FF</span>.
+		</li>
+		<li>The table dialog window has been a little bit enlarged to avoid contents being cropped
+			on some languages, like Russian. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1465203&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1465203</a>] The ieSpell download URL has been updated. The problem is that
+			they don't have a fixed URL for it, so let's hope the mirror will be up for it.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1456332&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1456332</a>] Small fix in the Spanish language file. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1457078&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1457078</a>] The File Manager was generating 404 calls in the server. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1459846&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1459846</a>] Fixed a problem with the config file if PHP is set to parse .js
+			files. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1432120&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1432120</a>] The &quot;UserFilesAbsolutePath&quot; setting is not correctly
+			used in the PHP uploader. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1432120&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1408869</a>] The collapse handler is now rendering correctly in Firefox 1.5.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1410082&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1410082</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1424240&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1424240</a>] The &quot;moz-bindings.xml&quot; file is now well formed. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1413980&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1413980</a>] All frameborder &quot;yes/no&quot; values have been changes to
+			&quot;1/0&quot;. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1414101&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1414101</a>] The fake table borders are now showing correctly when running under
+			the &quot;file://&quot; protocol. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1414155&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1414155</a>] Small typo in the cell properties dialog window.</li>
+		<li>Fixed a problem in the File Manager. It was not working well with folder or file
+			names with apostrophes ('). Thanks to René de Jong.</li>
+		<li>Small "lenght" type corrected in the select dialog window. Thanks to Bernd Nussbaumer.</li>
+		<li>The about box is now showing correctly in Firefox 1.5.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1464020&group_id=75348&atid=543655">SF
+			Patch-1464020</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1155793&group_id=75348&atid=543653">SF
+				BUG-1155793</a>] The "Unlink" command is now working correctly under Firefox
+			if you don't have a complete link selection. Thanks to Johnny Egeland.</li>
+		<li>In the File Manager, it was not possible to upload files to folders with ampersands
+			in the name. Thanks to Mike Pone.</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&aid=1178359&group_id=75348&atid=543653">SF
+			BUG-1178359</a>] Elements from the toolbar are not anymore draggable in the editing
+			area.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&aid=1487544&group_id=75348&atid=543653">SF
+			BUG-1487544</a>] Fixed a small issue in the code formatter for &lt;br /&gt; and
+			&lt;hr /&gt; tags.</li>
+		<li>The "Background Color" command now works correctly when the GeckoUseSPAN setting
+			is disabled (default).</li>
+		<li>Links are now rendered in blue with Firefox (they were black before). Actually,
+			an entry for it has been added to the editing area CSS, so you can customize with
+			the color you prefer. </li>
+	</ul>
+	<p>
+		* This version has been partially sponsored by <a href="http://www.footsteps.nl/">Footsteps</a>
+		and <a href="http://www.kentico.com/">Kentico</a>.
+		<br />
+		** This version has been partially sponsored by <a href="http://www.nextide.ca/">Nextide</a>.</p>
+	<h3>
+		Version 2.2</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>Let's welcome Wim Lemmens (didgiman). He's our new responsible for the ColdFusion
+			integration. In this version we are introducing his new files with the following
+			changes:
+			<ul>
+				<li>The &quot;<strong>Uploader</strong>&quot;, used for quick uploads,&nbsp;is now available
+					<strong>natively for ColdFusion</strong>. </li>
+				<li>Small bugs have been corrected in the <strong>File Browser connector</strong>. </li>
+				<li>The samples now work as is, even if you don't install the editor in the &quot;/FCKeditor&quot;
+					directory.</li>
+			</ul>
+		</li>
+		<li>And a big welcome also to &quot;Andrew Liu&quot;, our responsible for the <strong>
+			Python</strong> integration. This version is bringing <strong>native support for Python</strong>
+			, including the File Browser connector and Quick Upload. </li>
+		<li>The &quot;<strong>IsDirty()</strong>&quot; and &quot;<strong>ResetIsDirty()</strong>&quot;
+			functions have been&nbsp;added to the&nbsp;JavaScript API&nbsp;to check if the editor
+			content has been changed.* </li>
+		<li>New language files:
+			<ul>
+				<li><strong>Hindi</strong> (by Utkarshraj Atmaram) </li>
+				<li><strong>Latvian </strong>(by Janis Klavin&scaron;)</li>
+			</ul>
+		</li>
+		<li>For&nbsp;the interface, now we have complete <strong>RTL support</strong> also for
+			the drop-down toolbar commands, color selectors and context menu. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1325113&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1325113</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1277661&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1277661</a>] The new &quot;Delete Table&quot; command is available in the
+			Context Menu when right-clicking inside a table. </li>
+		<li>The &quot;FCKConfig.DisableTableHandles&quot; configuration option is now working
+			on Firefox 1.5. </li>
+		<li>The new &quot;<strong>OnBlur</strong>&quot; and &quot;<strong>OnFocus</strong>&quot;
+			events have been added to the JavaScript API (IE only). See&nbsp;&quot;_samples/html/sample09.html&quot;&nbsp;*
+		</li>
+		<li><strong><font color="#ff0000">Attention</font></strong>: The &quot;<strong>GetHTML</strong>&quot;
+			function has been deprecated. It now returns the same value as &quot;<strong>GetXHTML</strong>&quot;.
+			The same is valid for the &quot;EnableXHTML&quot; and &quot;EnableSourceXHTML&quot;
+			that have no effects now. The editor now works with XHTML output only. </li>
+		<li><strong><font color="#ff0000">Attention</font></strong>: A new &quot;<strong>PreserveSessionOnFileBrowser</strong>&quot;
+			configuration option has been introduced. It makes it possible to set whenever is
+			needed to maintain the user session in the File Browser. It is disabled by default,
+			as it has very specific usage and may cause the File Browser to be blocked by popup
+			blockers. If you have custom File Browsers that depends on session information,
+			remember to activate it. </li>
+		<li><strong><font color="#ff0000">Attention</font></strong>: The &quot;<strong>fun</strong>&quot;
+			smileys set has been removed from the package. If you are using it, you must manually
+			copy it to newer installations and upgrades. </li>
+		<li><strong><font color="#ff0000">Attention</font></strong>: The &quot;<strong>mcpuk</strong>&quot;
+			file browser has been removed from the package. We have no ways to support it. There
+			were also some licensing issues with it. Its web site can still be found at <a href="http://mcpuk.net/fbxp/">
+				http://mcpuk.net/fbxp/</a>. </li>
+		<li>It is now possible to set different CSS styles for the chars in the Special Chars
+			dialog window by adding the &quot;SpecialCharsOut&quot; and &quot;SpecialCharsOver&quot;
+			in the &quot;fck_dialog.css&quot; skin file.* </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1268726&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1268726</a>] Added table &quot;summary&quot; support in the table dialog.
+			Thanks to Sebastien-Mahe. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1284380&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1284380</a>] It is now possible to define the icon of a FCKToolbarPanelButton
+			object without being tied to the skin path (just like FCKToolbarButton). Thanks
+			to Ian Sullivan. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1338610&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1338610</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1263009&amp;group_id=75348&amp;atid=543656">SF
+				Patch-1263009</a>] New characters have been added to the &quot;Special Characters&quot;
+			dialog window. Thanks to Deian. </li>
+		<li>You can set the QueryString value &quot;fckdebug=true&quot; to activate &quot;debug
+			mode&quot; in the editor (showing the debug window), overriding the configurations.
+			The &quot;AllowQueryStringDebug&quot; configuration option is also available so
+			you can disable this feature.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1363548&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1363548</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1364425&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1364425</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1335045&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1335045</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1289661&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1289661</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1225370&amp;group_id=75348&amp;atid=543653">SF
+							BUG-1225370</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1156291&amp;group_id=75348&amp;atid=543653">SF
+								BUG-1156291</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1165914&amp;group_id=75348&amp;atid=543653">SF
+									BUG-1165914</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1111877&amp;group_id=75348&amp;atid=543653">SF
+										BUG-1111877</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1092373&amp;group_id=75348&amp;atid=543653">SF
+											BUG-1092373</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1101596&amp;group_id=75348&amp;atid=543653">SF
+												BUG-1101596</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1246952&amp;group_id=75348&amp;atid=543653">SF
+													BUG-1246952</a>] The URLs for links and
+			images are now correctly preserved as entered, no matter if you are using relative
+			or absolute paths. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1162809&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1162809</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1205638&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1205638</a>] The &quot;Image&quot; and &quot;Flash&quot;&nbsp;dialog windows
+			now loads the preview correctly if the &quot;BaseHref&quot; configuration option
+			is set. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1329807&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1329807</a>] The alert boxes are now showing correctly when doing cut/copy/paste
+			operations on Firefox installations when it is not possible to execute that operations
+			due to security settings. </li>
+		<li>A new &quot;Panel&quot; system (used in the drop-dowm toolbar commands, color selectors
+			and context menu) has been developed. The following bugs have been fixed with it:
+			<ul>
+				<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1186927&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1186927</a>] On IE, sometimes the context menu was being partially hidden.*
+				</li>
+				<li>On Firefox, the context menu was flashing in the wrong position before showing.
+				</li>
+				<li>On Firefox 1.5, the Color Selector was not working. </li>
+				<li>On Firefox 1.5, the fonts in the panels were too big. </li>
+				<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1076435&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1076435</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1200631&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1200631</a>] On Firefox, sometimes the context menu was being shown in the
+					wrong position.</li>
+			</ul>
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1364094&amp;group_id=75348">SF
+			BUG-1364094</a>] Font families were <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=317572">
+				not being rendered correctly on Firefox</a> . </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1315954&amp;group_id=75348">SF
+			BUG-1315954</a>] No error is thrown when pasting some case specific code from editor
+			to editor. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1341553&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1341553</a>] A small fix for a security alert in the File&nbsp;Browser has been
+			applied. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1370953&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1370953</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1339898&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1339898</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1323319&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1323319</a>] A message will be shown to the user (instead of a JS error)&nbsp;if
+			a &quot;popup blocker&quot; blocks the &quot;Browser Server&quot; button. Thanks
+			to Erwin Verdonk. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1370355&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1370355</a>] Anchor links that points to a single character anchor, like &quot;#A&quot;,
+			are now correctly detected in the Link dialog window. Thanks to Ricky Casey. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1368998&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1368998</a>] Custom error processing has been added to the file upload on the
+			File Browser. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1367802&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1367802</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1207740&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1207740</a>] A message is shown to the user if a dialog box is blocked by
+			a popup blocker in Firefox. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1358891&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1358891</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1340960&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1340960</a>] The editor not works locally (without a web server) on directories
+			where the path contains spaces. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1357247&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1357247</a>] The editor now intercepts SHIFT + INS keystrokes when needed. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1328488&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1328488</a>] <strong><font color="#ff0000">Attention</font></strong>: The Page
+			Break command now produces different tags&nbsp;to avoid&nbsp;XHTML compatibility
+			issues. Any Page Break previously applied to content produced with previous versions
+			of FCKeditor will not me rendered now, even if&nbsp;they will still be working correctly.
+		</li>
+		<li>It is now possible to allow cut/copy/past operations on Firefox using the <a
+			href="http://kb.mozillazine.org/Granting_JavaScript_access_to_the_clipboard"
+			target="_blank">user.js</a> file. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1336792&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1336792</a>] A fix has been applied to the XHTML processor to allow tag names
+			with the &quot;minus&quot; char (-). </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1339560&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1339560</a>] The editor now correctly removes the &quot;selected&quot; option
+			for checkboxes and radio buttons. </li>
+		<li>The Table dialog box now selects the table correctly when right-clicking on objects
+			(like images) placed inside the table. </li>
+		<li><strong><font color="#ff0000">Attention</font></strong> : A few changes have been
+			made in the skins. If you have a custom skin, it is recommended you to make a diff
+			of the fck_contextmenu.css file of the default skin with your implementation. </li>
+		<li>Mouse select (marking&nbsp;things in blue, like selecting text) has been disabled
+			on panels (drop-down menu commands, color selector and context menu) and toolbar,
+			for both IE and Firefox. </li>
+		<li>On Gecko, fake borders will not be applied to tables with the border attribute set
+			to more than 0, but placed inside tables with border set to 0. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1360717&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1360717</a>] A wrapping issue in the &quot;Silver&quot; skin has been corrected.
+			Thanks to Ricky Casey. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1251145&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1251145</a>] In IE, the focus is now maintained in the text when clicking in
+			the empty area&nbsp;following it. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1181386&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1181386</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1237791&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1237791</a>] The &quot;Stylesheet Classes&quot; field in the Link dialog
+			window in now applied correctly on IE. Thanks to Andrew Crowe. </li>
+		<li>The &quot;Past from Word&quot; dialog windows is now showing correctly on Firefox
+			on some languages. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1315008&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1315008</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1241992&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1241992</a>] IE, when selecting objects (like images) and hitting the &quot;Backspace&quot;
+			button, the browser's &quot;back&quot; will not get executed anymore and the object
+			will be correctly deleted. </li>
+		<li>The &quot;AutoDetectPasteFromWord&quot; is now working correctly in IE. Thanks to
+			Juan Ant. G&oacute;mez. </li>
+		<li>A small enhancement has been made in the Word pasting detection. Thanks to Juan
+			Ant. G&oacute;mez. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090686&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1090686</a>] No more conflict with Firefox &quot;Type-Ahead Find&quot; feature.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=942653&amp;group_id=75348&amp;atid=543653">SF
+			BUG-942653</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155856&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1155856</a>] The &quot;width&quot; and &quot;height&quot; of images sized
+			using the inline handlers are now correctly loaded in the image dialog box. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1209093&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1209093</a>] When &quot;Full Page Editing&quot; is active, in the &quot;Document
+			Properties&quot; dialog, the &quot;Browse Server&quot; button for the page background
+			is now correctly hidden if &quot;ImageBrowser&quot; is set to &quot;false&quot;
+			in the configurations file. Thanks to Richard. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1120266&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1120266</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1186196&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1186196</a>] The editor now retains the focus when selecting commands in
+			the toolbar. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1244480&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1244480</a>] The editor now will look first to linked fields &quot;ids&quot;
+			and&nbsp;second to &quot;names&quot;. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1252905&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1252905</a>] The &quot;InsertHtml&quot; function now preserves URLs as entered.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1266317&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1266317</a>] Toolbar commands are not anymore executed outside the editor. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1365664&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1365664</a>] The &quot;wrap=virtual&quot; attribute has been removed from the
+			integration files for validation purposes. No big impact. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=972193&amp;group_id=75348&amp;atid=543653">SF
+			BUG-972193</a>] Now just one click is needed to active the cursor inside the editor.
+		</li>
+		<li>The hidden fields used by the editor are now protected from changes using the &quot;Web
+			Developer Add-On &gt; Forms &gt; Display Forms Details&quot; extension. Thanks to
+			Jean-Marie Griess. </li>
+		<li>On IE, the &quot;Format&quot; toolbar dropdown now reflects the current paragraph
+			type on IE. Because of a bug in the browser, it is quite dependent on the browser
+			language and the editor interface language (both must be the same). Also, as the
+			&quot;Normal (DIV)&quot; type is seen by IE as &quot;Normal&quot;, to avoid confusion,
+			both types are ignored by this fix. </li>
+		<li>On some very rare cases, IE was loosing the &quot;align&quot; attribute for DIV
+			tags. Fixed. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1388799&amp;group_id=75348">SF
+			BUG-1388799</a>] The code formatter was removing spaces on the beginning of lines
+			inside PRE tags. Fixed. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1387135&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1387135</a>] No more &quot;NaN&quot; values in the image dialog, when changing
+			the sizes in some situations. </li>
+		<li>Corrected a small type in the table handler. </li>
+		<li>You can now set the &quot;z-index&quot; for floating panels (toolbar dropdowns,
+			color selectors, context menu) in Firefox, avoiding having them hidden under another
+			objects. By default it is set to 10,000. Use the FloatingPanelsZIndex configuration
+			option to change this value.</li>
+	</ul>
+	<p>
+		<strong>Special thanks</strong> to <a target="_blank" href="https://sourceforge.net/users/alfonsoml/">
+			Alfonso Martinez</a>, who have provided many patches and suggestions for the
+		following features / fixes present in this version. I encourage all you to <a href="https://sourceforge.net/donate/index.php?user_id=1356422">
+			donate</a> to Alfonso, as a way to say thanks for his nice open source approach.
+		Thanks Alfonso!. Check out his contributions:</p>
+	<ul>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1364094&amp;group_id=75348">SF
+			BUG-1352539</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1208348&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1208348</a>] With Firefox, no more &quot;fake&quot; selections are appearing
+			when inserting images, tables, special chars or when using the &quot;insertHtml&quot;
+			function. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543655&amp;aid=1382588&amp;group_id=75348">SF
+			Patch-1382588</a>] The &quot;FCKConfig.DisableImageHandles&quot; configuration option
+			is not working on Firefox 1.5. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1368586&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1368586</a>] Some fixes have been applied to the Flash dialog box and the
+			Flash pre-processor. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1360253&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1360253</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1378782&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1378782</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1305899&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1305899</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1344738&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1344738</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1347808&amp;group_id=75348&amp;atid=543653">SF
+							BUG-1347808</a>] On dialogs, some fields&nbsp;became impossible
+			to select or change when using Firefox. It has been fixed. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1357445&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1357445</a>] Add support for DIV in the Format drop-down combo for Firefox.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1350465&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1350465</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1376175&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1376175</a>] The &quot;Cell Properties&quot; dialog now works correctly
+			when right-clicking in an object (image, for example) placed inside the cell itself.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1349166&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1349166</a>] On IE, there is now support for namespaces on tags names. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1350552&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1350552</a>] Fix the display issue when applying styles on tables. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1352320&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1352320</a> ] Fixed&nbsp;a wrong&nbsp;usage of the &quot;parentElement&quot;
+			property on Gecko. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1355007&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1355007</a>] The new &quot;FCKDebug.OutputObject&quot; function is available
+			to dump all object information in the debug window. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1329500&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1329500</a>] It is now possible to delete table columns when clicking on a
+			TH cell of the column. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1315351&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1315351</a>] It is now possible to pass the image width and height to the
+			&quot;SetUrl&quot; function of the Flash dialog box. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1327384&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1327384</a>] TH tags are now correctly handled by the source code formatter
+			and the &quot;FillEmptyBlocks&quot; configuration option. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1327406&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1327406</a>] Fake borders are now displayed for TH elements on tables with
+			border set to 0. Also, on Firefox, it will now work even if the border attribute
+			is not defined and the borders are not dotted. </li>
+		<li>Hidden fields now get rendered on Firefox. </li>
+		<li>The BasePath is now included in the debugger URL to avoid problems when calling
+			it from plugins.</li>
+	</ul>
+	<p>
+		* This version has been partially sponsored by <a target="_blank" href="http://www.alkacon.com">
+			Alkacon Software</a>.</p>
+	<h3>
+		Version 2.1.1</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>The new &quot;<strong>Insert Page Break</strong>&quot;&nbsp;command (for printing)&nbsp;has
+			been introduced.* </li>
+		<li>The editor package now has a root directory called &quot;FCKeditor&quot;.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1326285&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1326285</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1316430&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1316430</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1323662&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1323662</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1326223&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1326223</a>] We are doing a little step back with this version.
+			The ENTER and BACKSPACE behavior changes for Firefox have been remove. It is a nice
+			feature, but we need much more testing&nbsp;on it. It introduced some bugs and so
+			its preferable to not have that feature, avoiding problems (even if that feature
+			was intended to solve some issues). </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1289372&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1275714</a>] Comments in the beginning of the source are now preserved when
+			using the &quot;undo&quot; and &quot;redo&quot; commands. </li>
+		<li>The &quot;undo&quot; and &quot;redo&quot; commands now work for the Style command.
+		</li>
+		<li>An error in the execution of the pasting commands on Firefox has been fixed. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1326184&amp;group_id=75348">SF
+			BUG-1326184</a>] No strange (invalid) entities are created when using Firefox. Also,
+			the &amp;nbsp; used by the FillEmptyBlocks setting is maintained even if you disable
+			the ProcessHTMLEntities setting.</li>
+	</ul>
+	<p>
+		* This version has been partially sponsored by <a target="_blank" href="http://www.acttive.com.br/">
+			Acctive Software&nbsp;S.A.</a>.</p>
+	<h3>
+		Version 2.1</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1200328&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1200328</a>] The editor now offers a way to &quot;protect&quot; part of the
+			source to remain untouched while editing or changing views.&nbsp;Just use the &quot;FCKConfig.ProtectedSource&quot;
+			object to configure it and customize to your needs. It is based on regular expressions.
+			See fckconfig.js for some samples. </li>
+		<li>The editor now offers native support for <strong>Lasso</strong>. Thanks and welcome&nbsp;to
+			our new developer Jason Huck. </li>
+		<li>New language files are available:
+			<ul>
+				<li><strong>Faraose</strong> (by S&iacute;min Lassaberg and&nbsp;Helgi Arnthorsson)
+				</li>
+				<li><strong>Malay</strong> (by Fairul Izham Mohd Mokhlas) </li>
+				<li><strong>Mongolian</strong> (by Lkamtseren Odonbaatar) </li>
+				<li><strong>Vietnamese</strong> (by Phan Binh Giang)</li>
+			</ul>
+		</li>
+		<li>A new configurable&nbsp;ColdFusion connector is available. Thanks to Mark Woods.
+			Many enhancements has been introduced with it. </li>
+		<li>The PHP connector for the default File Browser now sorts the folders and files names.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1289372&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1289372</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1282758&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1282758</a>] In the PHP connector it is now possible to set the absolute
+			(server) path to the User Files directory, avoiding problems with Virtual Directories,
+			Symbolic Links or Aliases. Take a look at the config.php file. </li>
+		<li>The ASP.Net uploader (for Quick Uploads) has been added to the package. </li>
+		<li>A new way to define <strong>simple &quot;combo&quot; toolbar items</strong> , like
+			Style and Font, has been introduced.&nbsp;Thanks&nbsp;to Steve Lineberry.&nbsp;See
+			sample06.html and the &quot;simplecommands&quot; plugin&nbsp;to fully understand
+			it. </li>
+		<li>A new test case has been added that shows how to set the editor background dynamically
+			without using a CSS. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155906&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1155906</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1110116&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1110116</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1216332&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1216332</a>] The &quot;AutoDetectPasteFromWord&quot; configuration option
+			is back (IE only feature). </li>
+		<li>The&nbsp;new &quot;OnAfterLinkedFieldUpdate&quot; event has been introduced. If
+			is fired when the editor updates its hidden associated field. </li>
+		<li>Attention: The color of the right border of the toolbar (left on RTL interfaces)
+			has been moved from code to the CSS (TB_SideBorder class). Update your custom skins.
+		</li>
+		<li>A&nbsp;sample &quot;htaccess.txt&quot; file has been added to the editor's package
+			to show how to configure some Linux sites that could present problems on Firefox
+			with &quot;Illegal characters&quot; errors. Respectively the &quot;&iuml;&raquo;&iquest;&quot;
+			chars. </li>
+		<li>With the JavaScript, ASP and PHP integration files, you can set the QueryString
+			value &quot;fcksource=true&quot; to load the editor using the source files (located
+			in the _source directory) instead of the compressed ones. Thanks to Kae Verens for
+			the suggestion. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1246623&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1246623</a>] The new configuration option &quot;ForceStrongEm&quot; has
+			been introduced so you can force the editor to convert all &lt;B&gt; and &lt;I&gt;
+			tags to &lt;STRONG&gt; and &lt;EM&gt; respectively. </li>
+		<li>A nice contribution has been done by Goss Interactive Ltd:
+			<ul>
+				<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1246949&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1246949</a>] Implemented ENTER key and BACKSPACE key handlers for Gecko so that
+					P tags (or an appropriate block element) get inserted instead of BR tags when not
+					in the UseBROnCarriageReturn config mode.
+					<br />
+					The ENTER key handling has been written to function much the same as the ENTER key
+					handling on IE : as soon as the ENTER key is pressed, existing content will be wrapped
+					with a suitable block element (P tag) as appropriate and a new block element (P
+					tag) will be started.
+					<br />
+					The ENTER key handler also caters for pressing ENTER within empty list items - ENTER
+					in an empty item at the top of a list will remove that list item and start a new
+					P tag above the list; ENTER in an empty item at the bottom of a list will remove
+					that list item and start a new P tag below the list; ENTER in an empty item in the
+					middle of a list will remove that list item, split the list into two, and start
+					a new P tag between the two lists. </li>
+				<li>Any tables that are found to be incorrectly nested within a block element (P tag)
+					will be moved out of the block element when loaded into the editor. This is required
+					for the new ENTER/BACKSPACE key handlers and it also avoids non-compliant HTML.&nbsp;
+				</li>
+				<li>The InsertOrderedList and InsertUnorderedList commands have been overridden on Gecko
+					to ensure that block elements (P tags) are placed around a list item's content when
+					it is moved out of the list due to clicking on the editor's list toolbar buttons
+					(when not in the UseBROnCarriageReturn config mode). </li>
+			</ul>
+		</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1253255&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1253255</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1253255&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1265520</a>] Due to changes on version 2.0, the anchor list was not anymore
+			visible in the link dialog window. It has been fixed. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1242979&amp;group_id=75348">SF
+			BUG-1242979</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1251354&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1251354</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1256178&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1256178</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1274841&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1274841</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1303949&amp;group_id=75348&amp;atid=543653">SF
+							BUG-1303949</a>] Due to a bug on Firefox, some keys stopped working
+			on startup over Firefox. It has been fixed. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1251373&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1251373</a> ] The above fix also has&nbsp;corrected some strange behaviors on
+			Firefox. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1144258">SF
+			BUG-1144258</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1092081">SF
+				BUG-1092081</a>] The File Browsers now run on the&nbsp;same server session used
+			in the page where the editor is placed in (IE issue). Thanks to Simone Chiaretta.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1305619&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1305619</a> ] No more repeated login dialogs when running the editor with Windows
+			Integrated Security with IIS. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1245304&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1245304</a>] The Test Case 004 is now working correctly. It has been changed
+			to set the editor hidden at startup. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1290610&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1290610</a> ] Over HTTPS, there were some warnings when loading the Images,
+			Flash and Link dialogs. Fixed. </li>
+		<li>Due to Gecko bugs, two errors were thrown when loading the editor in a hidden div.
+			Workarounds have been introduced. In any case, the testcase 004 hack is needed when
+			showing the editor (as in a tabbed interface). </li>
+		<li>An invalid path in the dialogs CSS file has been corrected. </li>
+		<li>On IE, the Undo/Redo can now be controlled using the Ctrl+Z and Ctrl+Y shortcut
+			keys. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1295538&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1295538</a> ] A few Undo/Redo fixes for IE have been done. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1247070&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1247070</a>] On Gecko, it is now possible to use the shortcut keys for Bold
+			(CTRL+B), Italic (CTRL+I) and Underline (CTRL+U), like in IE. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1274303&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1274303</a>] The &quot;Insert Column&quot; command is now working correctly
+			on TH cells. It also copies any attribute applied to the source cells. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1287070&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1287070</a> ] In the Universal Keyboard, the Arabic keystrokes translator
+			is now working with Firefox. Thanks again to Abdul-Aziz Al-Oraij. </li>
+		<li>The editor now handles AJAX requests with HTTP status 304. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1157780&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1157780</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1229077&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1229077</a>] Weird comments are now handled correctly (ignored on some cases).
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155774&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1155774</a>] A spelling error in the Bulleted List Properties dialog has been
+			corrected. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1272018&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1272018</a>] The ampersand character can now be added from the Special Chars
+			dialog. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1263161&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1263161</a>] A small fix has been applied to the sampleposteddata.php file.
+			Thanks to Mike Wallace. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1241504&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1241504</a>] The editor now looks also for the ID of the hidden linked field.
+		</li>
+		<li>The caption property on tables is now working on Gecko. Thanks to Helen Somers (Goss
+			Interactive Ltd). </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1297431&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1297431</a>] With IE, the editor now works locally when its files are placed
+			in a directory path that contains spaces. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1279551&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1279551</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1242105&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1242105</a>] On IE, some features are dependant of ActiveX components (secure...
+			distributed&nbsp;with IE itself). Some security setting could avoid the usage of
+			those components and the editor would stop working. Now a message is shown, indicating
+			the use the minimum necessary settings need&nbsp;by the editor to run. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1298880&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1298880</a>] Firefox can't handle the STRONG and EM tags. Those tags are now
+			converted to B and I so it works accordingly. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1271723&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1271723</a>] On IE, it is now possible to select the text and work correctly
+			in the contents of absolute positioned/dimensioned divs. </li>
+		<li>On IE, there is no need to click twice in the editor to&nbsp;activate the cursor
+			in the editing area. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1221621&amp;group_id=75348">SF
+			BUG-1221621</a>] Many &quot;warnings&quot; in the Firefox console are not thrown
+			anymore. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1295526&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1295526</a>] While&nbsp;editing on &quot;FullPage&quot; mode the basehref is
+			now active for CSS &quot;link&quot; tags. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1222584&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1222584</a>] A small fix to the PHP connector has been applied. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1281313&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1281313</a>] A few small changes to avoid problems with Plone. Thanks to Jean-mat.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1275911&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1275911</a>] A check for double dots sequences on directory names on creation
+			has been introduced to the PHP and ASP connectors.</li>
+	</ul>
+	<h3>
+		Version 2.0</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>The&nbsp;new &quot;<strong>Flash</strong>&quot; command is available. Now you can
+			easily handle Flash content, over IE and Gecko, including server browser integration
+			and context menu support. Due to limitations of the browsers, it is not possible
+			to see the preview of the movie while editing, so a nice &quot;placeholder&quot;
+			is used instead. * </li>
+		<li>A&nbsp;&quot;<strong>Quick Upload</strong> &quot; option is now available in the
+			link, image and flash dialog windows, so the user don't need to go (or have) the
+			File Browser for this operations. The ASP and PHP uploader&nbsp;are included.&nbsp;Take
+			a look at the configuration file.*** </li>
+		<li>Added support for <strong>Active FoxPro Pages</strong> . Thanks to our new developer,
+			S&ouml;nke Freitag. </li>
+		<li>It is now possible to <strong>disable the size handles</strong> for images and tables
+			(IE only feature). Take a look at the DisableImageHandles and DisableTableHandles
+			configuration options. </li>
+		<li>The handles on form fields&nbsp;(small squares around them) and the inline editing
+			of&nbsp;its contents&nbsp;have been disabled. This makes it easier to users to use
+			the controls. </li>
+		<li>A much better support for Word pasting operations has been introduced. Now it uses
+			a dialog box, in this way we have better results and more control.** </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1225372&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1225372</a>] A small change has been done to the PHP integration file. The
+			generic __construct constructor has been added for better PHP 5 sub-classing&nbsp;compatibility
+			(backward compatible). Thanks to Marcus Bointon.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>ATTENTION: Some security changes have been made to the connectors. Now you must
+			explicitly enable the connector you want to use. Please test your application before
+			deploying this update. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1211591">SF
+			BUG-1211591</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1204273&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1204273</a>] The connectors have been changed so it is not possible to use
+			&quot;..&quot; on directory names. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1219734&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1219734</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1219728&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1219728</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1208654&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1208654</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1205442&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1205442</a>] There was an error in the page unload on some cases
+			that has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1209708">SF
+			BUG-1209708</a>] [<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1214125">SF
+				BUG-1214125</a>] The undo on IE is now working correctly when the user starts
+			typing. </li>
+		<li>The preview now loads &quot;Full Page&quot; editing correctly. It also uses the
+			same XHTML code produced by the final output. </li>
+		<li>The &quot;Templates&quot; dialog was not working on some very specific (and strange)
+			occasions over IE. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1199631&amp;group_id=75348">SF
+			BUG-1199631</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1171944&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1171944</a>] A new option is available to avoid a bad IE behavior that shows
+			the horizontal scrollbar even when not needed. You can now force the vertical scrollbar
+			to be always visible. Just set the &quot;IEForceVScroll&quot; configuration option
+			to &quot;true&quot;. Thanks to Grant Bartlett. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1212026&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1212026</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1228860&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1228860</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1211775&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1211775</a>] [<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1199824">SF
+						BUG-1199824</a>] An error in the Packager has been corrected. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1163669">SF
+			BUG-1163669</a>] The XHTML processor now adds a space before the closing slash of
+			tags that don't have a closing tag, like &lt;br /&gt;. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1213733&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1213733</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1216866&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1216866</a>]&nbsp;[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1209673&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1209673</a>]&nbsp;[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155454&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1155454</a>]&nbsp;[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1187936&amp;group_id=75348&amp;atid=543653">SF
+							BUG-1187936</a> ]&nbsp;Now, on Gecko, the source is opened in a
+			dialog window to avoid fatal errors (Gecko bugs). </li>
+		<li>Some pages have been changed to avoid importing errors on Plone. Thanks to Arthur
+			Kalmenson. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1171606&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1171606</a>] There&nbsp;is a bug on IE that makes the editor to not work if
+			the instance name matches a meta tag name. Fixed. </li>
+		<li>On Firefox, the source code is now opened in a dialog box, to avoid error on pages
+			with more than one editor. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1225703&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1225703</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1214941&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1214941</a>] The &quot;ForcePasteAsPlainText&quot; configuration option
+			is now working correctly on Gecko browsers. Thanks to Manuel Polo. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1228836&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1228836</a>] The &quot;Show Table Borders&quot; feature is now working on Gecko
+			browsers. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1212529&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1212529</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1212517&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1212517</a>] The default File Browser now accepts connectors with querystring
+			parameters (with &quot;?&quot;). Thanks to Tomas Jucius. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1233318&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1233318</a>] A JavaScript error thrown when using the Print command has been
+			fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1229696&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1229696</a>] A regular expression has been escaped to avoid problems when opening
+			the code in some editors. It has been moved to a&nbsp;dialog window. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1231978&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1231978</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1228939&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1228939</a>] The Preview window is now using the Content Type and Base href.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1232056&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1232056</a>] The&nbsp;anchor icon is now working correctly on IE. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1232056&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1202468</a>] The anchor icon is now available on Gecko too. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1236279&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1236279</a>] A security warning has been corrected when using the File Browser
+			over HTTPS. </li>
+		<li>The ASP implementation now avoid errors when setting the editor value to null values.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1237359&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1237359</a>] The trailing &lt;BR&gt; added by Gecko at the end of the source
+			is now removed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1170828">SF
+			BUG-1170828</a>] No more &amp;nbsp; is added to the source when using the &quot;New
+			Page&quot; button. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1165264&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1165264</a>] A&nbsp;new configuration option has been included to force the
+			editor to ignore empty paragraph values&nbsp;(&lt;p&gt;&amp;nbsp;&lt;/p&gt;), returning
+			empty (&quot;&quot;). </li>
+		<li>No more &amp;nbsp; is added when creating a table or adding columns, rows or cells.
+		</li>
+		<li>The &lt;TD&gt; tags are now included in the FillEmptyBlocks configuration handling.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1224829&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1224829</a>] A small bug in the &quot;Find&quot; dialog has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1221307&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1221307</a>] A small bug in the &quot;Image&quot; dialog has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1219981&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1219981</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155726&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1155726</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1178473&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1178473</a>] It is handling the &lt;FORM&gt;, &lt;TEXTAREA&gt; and &lt;SELECT&gt;
+			tags &quot;name&quot; attribute correctly. Thanks to thc33. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1205403&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1205403</a>] The checkbox and radio button values are now handled correctly
+			in their dialog windows. Thanks to thc33. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1236626&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1236626</a>] The toolbar now doesn't need to collapse when unloading the page
+			(IE only). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1212559&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1212559</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1017231&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1017231</a>] The &quot;Save&quot; button now calls the &quot;onsubmit&quot;
+			event before posting the form. The submit can be cancelled if the onsubmit returns
+			&quot;false&quot;. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1215823&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1215823</a>] The editor now works correctly on Firefox if it values is set to
+			&quot;&lt;p&gt;&lt;/p&gt;&quot;. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1217546&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1217546</a>] No error is thrown when &quot;pasting as plain text&quot; and no
+			text is available for pasting (as an image for example). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1207031&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1207031</a>] [<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1223978">SF
+				BUG-1223978</a>] The context menu is now available in the source view. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653&amp;func=detail&amp;aid=1213871">SF
+			BUG-1213871</a>] Undo has been added to table creation and table operation commands.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1205211&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1205211</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1229941&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1229941</a>] Small bug in the mcpuk file browser&nbsp;have been corrected.</li>
+	</ul>
+	<p>
+		* This version has been partially sponsored by <a target="_blank" href="http://www.infineon.com/">
+			Infineon Technologies AG</a>.<br />
+		** This version has been partially sponsored by <a href="http://www.visualsoft.co.uk">
+			Visualsoft</a> <a href="http://www.visualsoft.co.uk/websolutions.html">Web Solutions</a>.<br />
+		*** This version has been partially sponsored by <a target="_blank" href="http://www.webcrossing.com">
+			Web Crossing, Inc</a>.</p>
+	<h3>
+		Version 2.0&nbsp;FC (Final Candidate)</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>A new tab called &quot;<strong>Link</strong>&quot; is available in the<strong> Image
+			Dialog</strong> window. In this way you can insert or modify the image link directly
+			from that dialog.* </li>
+		<li>The new &quot;<strong>Templates</strong>&quot; command is now available. Now the
+			user can select from a list of pre-build HTML and fill the editor with it. Take
+			a look at the &quot;_docs&quot; for more info.** </li>
+		<li>The <a target="_blank" href="http://mcpuk.net/fbxp/">mcpuk's</a> File Browser for
+			PHP has been included in the package. He became the official developer of the File
+			Manager for FCKeditor, so we can expect good news in the future. </li>
+		<li>New configuration options are available to <strong>hide tabs</strong> from the <strong>
+			Image</strong> Dialog&nbsp;and <strong>Link</strong> Dialog windows: LinkDlgHideTarget,
+			LinkDlgHideAdvanced, ImageDlgHideLink and ImageDlgHideAdvanced. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1189442&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1189442</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1187164&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1187164</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1185905&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1185905</a>] It is now possible to configure the editor to <strong>not convert Greek</strong>
+			or special&nbsp;<strong>Latin </strong>letters to ther specific HTML entities. You
+			can also configure it to not convert any character at all. Take a look at the &quot;ProcessHTMLEntities&quot;,
+			&quot;IncludeLatinEntities&quot; and &quot;IncludeGreekEntities&quot; configuration
+			options. </li>
+		<li>New language files are available:
+			<ul>
+				<li><strong>Basque</strong> (by Ibon Igartua) </li>
+				<li><strong>English (Australia / United Kingdom)</strong> (by Christopher Dawes) </li>
+				<li><strong>Ukrainian</strong> (by Alexander Pervak)</li>
+			</ul>
+		</li>
+		<li>The version and date information have been removed from the files headers to avoid
+			unecessary diffs in source control systems when new versions are released (from
+			now on). </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1159854&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1159854</a>] Ther HTML output rendered by the server side integration files
+			are now XHTML compatible. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1181823&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1181823</a>] It is now possible to set the desired DOCTYPE to use when edit
+			HTML fragments (not in Full Page mode). </li>
+		<li>There is now an optional way to implement different &quot;mouse over&quot; effects
+			to the buttons when they are &quot;on&quot; of &quot;off&quot;.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1162200&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1162200</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1161633&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1161633</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1050293&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1050293</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1058948&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1058948</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1109120&amp;group_id=75348&amp;atid=543653">SF
+							BUG-1109120</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155408&amp;group_id=75348&amp;atid=543653">SF
+								BUG-1155408</a>] The IE memory leak bug has been solved. The
+			code has been completely reviewed and many memory usage improvements have been done.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1179645&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1179645</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1183252&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1183252</a> ] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1166779&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1181647</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155627&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1155627</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155782&amp;group_id=75348&amp;atid=543653">SF
+							BUG-1155782</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155750&amp;group_id=75348&amp;atid=543653">SF
+								BUG-1155750</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1157166&amp;group_id=75348&amp;atid=543653">SF
+									BUG-1157166</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1157857&amp;group_id=75348&amp;atid=543653">SF
+										BUG-1157857</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1158121&amp;group_id=75348&amp;atid=543653">SF
+											BUG-1158121</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1177153&amp;group_id=75348&amp;atid=543653">SF
+												BUG-1177153</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1175847&amp;group_id=75348&amp;atid=543653">SF
+													BUG-1175847</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1155747&amp;group_id=75348&amp;atid=543653">SF
+														BUG-1155747</a>] There was a loading
+			problem in Gecko browsers in some cases. It has been solved. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1161147&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1161147</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1157635&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1157635</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1149805&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1149805</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1124600&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1124600</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1117535&amp;group_id=75348&amp;atid=543653">SF
+							BUG-1117535</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1118145&amp;group_id=75348&amp;atid=543653">SF
+								BUG-1118145</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1098113&amp;group_id=75348&amp;atid=543653">SF
+									BUG-1098113</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1092272&amp;group_id=75348&amp;atid=543653">SF
+										BUG-1092272</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1086416&amp;group_id=75348&amp;atid=543653">SF
+											BUG-1086416</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1027952&amp;group_id=75348&amp;atid=543653">SF
+												BUG-1027952</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=978441&amp;group_id=75348&amp;atid=543653">SF
+													BUG-978441</a> ] A custom Undo/Redo system
+			has been implemented for IE. </li>
+		<li>The editor startup execution is now made in the right order (so configurations override
+			works correctly). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1166779&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1166779</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1166651&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1166651</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1066198&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1066198</a>]&nbsp;[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090388&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1090388</a> ]&nbsp;No more &quot;illegible&quot; characters in the
+			toolbar when &quot;ClearType&quot; is active. </li>
+		<li>It is now possible to set the &quot;width&quot; style of the BODY tag in the EditorAreaCSS
+			to limit the editing area size. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1113620&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1113620</a>] In IE, the editor doesn't generate new entries in the browser history
+			anymore. </li>
+		<li>The editor now uses the same method used on version RC2 to load its contents on
+			Gecko. It is now possible to have more than one editor in the page. This change
+			has a negative impact: the BaseHref property is not working. </li>
+		<li>Changes have been made to make the editor work with PHP versions&nbsp;older than&nbsp;2.1.0.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1190835&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1190835</a>] [<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1196547&amp;group_id=75348">SF
+				BUG-1196547</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1156863&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1156863</a>] The &quot;Insert Horizontal Line&quot; command is now working
+			correctly. Thanks to Hector Raul Colonia Coral. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1101861&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1101861</a>] The editor now shows a normal textarea correctly (as expected)
+			on Safari browsers (and all &quot;like Gecko&quot; browsers). Thanks to Bob Paul.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1182224&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1182224</a>] The PHP connector can now handle file extensions in upper case,&nbsp;like
+			JPG or Gif, correctly. Thanks to Georg Ivancsic. </li>
+		<li>The &quot;sample06.html&quot; is now working correctly with Gecko browsers. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1156660&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1156660</a>] Some fixes have been applied to the Universal Keyboard. Thanks
+			to Abdul-Aziz Al-Oraij. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1192881&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1192881</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1185006&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1185006</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1156068&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1156068</a>] The &quot;Browse Server&quot; button is now working correctly
+			for the Background Image in the &quot;Document Properties&quot; dialog window (full
+			page editing). The active &quot;BaseHref&quot; is also set to the preview window.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1191704&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1191704</a>] Invalid HTML tags (according to the W3C naming standards for XHTML)
+			are ignored with no errors. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1185911&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1185911</a>] The Greek language file name has been corrected to &quot;el.js&quot;.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1181572&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1181572</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1158421&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1158421</a>] The &quot;Print&quot; button is now active on startup. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1181572&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1165219</a>] No error occours when the user defines just one color to the FontColors
+			on &quot;in page&quot; configurations. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1162957&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1162957</a>] The small problem with Zope (ZPT)&nbsp;has been solved. </li>
+		<li>Some small RTL / LTR corrections has been done in the interface and the Farsi language
+			has been added to the Universal Keyboard. Thanks to Silver Baghdasarian.</li>
+	</ul>
+	<p>
+		* This version has been partially sponsored by the <a href="http://www.hamilton.edu">
+			Hamilton College</a>.<br />
+		** This version has been partially sponsored by <a target="_blank" href="http://www.infineon.com/">
+			Infineon Technologies AG</a>.</p>
+	<h3>
+		Version 2.0 RC3 (Release Candidate 3)</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>The editor now offers native <strong>Perl integration</strong>! Thanks and welcome
+			to Takashi Yamaguchi, our official Perl developer. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1026584&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1026584</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1112692&amp;group_id=75348&amp;atid=543656">SF
+				Feature-1112692</a>] <strong>Formatting </strong>has been introduced to the
+			<strong>Source View</strong>. The output HTML can also be formatted. You can choose
+			to use spaces or tab for indentation. See the configuration file. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1031492&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1031492</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1004293&amp;group_id=75348&amp;atid=543656">SF
+				Feature-1004293</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=784281&amp;group_id=75348&amp;atid=543656">SF
+					Feature-784281</a>] It is now possible to edit <strong>full HTML pages</strong>
+			with the editor. Use the &quot;FullPage&quot; configuration setting to activate
+			it. </li>
+		<li>The&nbsp;new toolbar command, &quot;<strong>Document Properties</strong>&quot;&nbsp;is
+			available to edit document header info, title, colors, background, etc... Full page
+			editing must be enabled. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1151448&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1151448</a>] <strong>Spell Check</strong> is now available. You can use
+			<strong>ieSpell</strong> or <strong>Speller Pages</strong> right from FCKeditor.
+			More info about configuration can be found in the _docs folder. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1041686&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1041686</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1086386&amp;group_id=75348&amp;atid=543656">SF
+				Feature-1086386</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1124602&amp;group_id=75348&amp;atid=543656">SF
+					Feature-1124602</a>] New &quot;<strong>Insert Anchor</strong>&quot; command
+			has been introduced. (The anchor icon is visible only over&nbsp;IE for now). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1123816&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1123816</a>] It is now possible to configure the editor to <strong>show &quot;fake&quot;
+				table borders</strong> when the border size is set to zero. (It is working only
+			on IE for now). </li>
+		<li><strong>Numbered</strong> and <strong>Bulleted</strong> lists can now be <strong>
+			configured</strong> . Just right click on then. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1088608&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1088608</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1144047&amp;group_id=75348&amp;atid=543656">SF
+				Feature-1144047</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1149808&amp;group_id=75348&amp;atid=543656">SF
+					Feature-1149808</a>] A new configuration setting is available, &quot;<strong>BaseHref</strong>
+			&quot;, to set the URL used to resolve relative links. </li>
+		<li>It is now possible to set&nbsp;the <strong>content language direction</strong> .
+			See the &quot;FCKConfig.ContentLangDirection&quot; configurations setting. </li>
+		<li>All <strong>Field Commands</strong> available on version 1.6 have been upgraded
+			and&nbsp;included in this version: <strong>form</strong>, <strong>checkbox</strong>,
+			<strong>radio button</strong>, <strong>text field</strong>, text <strong>area</strong>,
+			<strong>select field</strong>, <strong>button</strong>, <strong>image button</strong>
+			and <strong>hidden field</strong> . </li>
+		<li><strong>Context menu</strong> options (right-click) has been added for: <strong>
+			anchors</strong>, <strong>select field</strong>, <strong>textarea</strong>, <strong>
+				checkbox</strong>, <strong>radio button</strong>, <strong>text field</strong>,
+			<strong>hidden field</strong>, <strong>textarea</strong>, <strong>button</strong>,
+			<strong>image button</strong>, <strong>form</strong>, <strong>bulleted list</strong>
+			and <strong>numbered list</strong> . </li>
+		<li>The &quot;<strong>Universal Keyboard</strong>&quot; has been converted from version
+			1.6 to this one and it's now available. </li>
+		<li>It is now possible to <strong>configure</strong> the items to be shown in the <strong>
+			context menu</strong> . Just use the FCKConfig.ContextMenu option&nbsp;at fckconfig.js.
+		</li>
+		<li>A new configuration (FillEmptyBlocks)&nbsp;is available to force the editor to <strong>
+			automatically insert a &amp;nbsp;</strong> on empty block elements (p, div, pre,
+			h1, etc...) to avoid differences from the editing and the final result. (Actually,
+			the editor automatically &quot;grows&quot; empty elements to make the user able
+			to enter text on it). Attention: the extra &amp;nbsp; will be added when switching
+			from WYSIWYG to Source View, so the user may see an additional space on empty blocks.
+			(XHTML support must be enabled). </li>
+		<li>It is now possible to configure the <strong>toolbar</strong> to &quot;<strong>break</strong>
+			&quot; between two toolbar strips. Just insert a &quot;/&quot; between then. Take
+			a look at fckconfig.js for a sample. </li>
+		<li>New Language files are available:
+			<ul>
+				<li><strong>Brazilian Portuguese</strong> (by Carlos Alberto Tomatis Loth) </li>
+				<li><strong>Bulgarian</strong> (by Miroslav Ivanov) </li>
+				<li><strong>Esperanto</strong> (by Tim Morley) </li>
+				<li><strong>Galician</strong> (by Fernando Riveiro Lopez) </li>
+				<li><strong>Japanese</strong> ( by Takashi Yamaguchi) </li>
+				<li><strong>Persian</strong> (by Hamed Taj-Abadi) </li>
+				<li><strong>Romanian</strong> (by Adrian Nicoara) </li>
+				<li><strong>Slovak</strong> (by Gabriel Kiss) </li>
+				<li><strong>Thai </strong>(by Audy Charin Arsakit) </li>
+				<li><strong>Turkish</strong> (by Reha Bi&ccedil;er) </li>
+				<li>The Chinese Traditional has been set as the default (zn) instead of zn-tw.</li>
+			</ul>
+		</li>
+		<li>Warning: All toolbar image images have been changed. The &quot;button.&quot; prefix
+			has been removed. If you have your custom skin, please rename your files. </li>
+		<li>A new plugin is available in the package: &quot;<strong>Placeholders</strong>&quot;.
+			In this way you can insert non editable tags in your document to be processed on
+			server side (very specific usage). </li>
+		<li>The ASPX files are no longer available in this package. They have been moved to
+			the FCKeditor.Net package. In this way the ASP.Net integration is much better organized.
+		</li>
+		<li>The FCKeditor.Packager program is now part of the main package. It is not anymore&nbsp;distributed
+			separately. </li>
+		<li>The PHP connector now sets the uploaded file permissions (chmod)&nbsp;to 0777. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090215&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1090215</a>] It's now possible to give back more info from your custom image
+			browser calling the SetUrl( url [, width] [, height] [, alt] ). Thanks to Ben Noblet.
+		</li>
+		<li>The package files now maintain their original &quot;Last Modified&quot; date, so
+			incremental FTP uploads can be used to update to&nbsp;new versions of the editor
+			(from now on). </li>
+		<li>The &quot;Source&quot; view now forces its contents to be written in &quot;Left
+			to Right&quot; direction even when the editor interface language is running a RTL
+			language (like Arabic, Hebrew or Persian). </li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1124220&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1124220</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1119894&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1119894</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090986&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1090986</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1100408&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1100408</a>] The editor now works correctly when starting with an
+			empty value and switching to the Source mode. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1119380&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1119380</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1115750&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1115750</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1101808&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1101808</a>] The problem with the scrollbar and the toolbar combos (Style,
+			Font, etc...) over Mac has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1098460&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1098460</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1076544&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1076544</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077845&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1077845</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1092395&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1092395</a>] A new upload class has been included for the ASP File
+			Manager Connector. It uses the &quot;ADODB.Stream&quot; object. Many thanks to &quot;NetRube&quot;.
+		</li>
+		<li>I small correction has been made to the ColdFusion integration files. Thanks to
+			Hendrik Kramer. </li>
+		<li>There was a very specific problem when the editor was running over a FRAME executed
+			on another domain. </li>
+		<li>The performance problem on Gecko while typing&nbsp;quickly has been solved. </li>
+		<li>The &lt;br type= &quot;_moz&quot;&gt;is not anymore shown on XHTML source. </li>
+		<li>It has been introduced a mechanism to avoid automatic contents duplication on very
+			specific occasions (bad formatted HTML). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1146407&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1146407</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1145800&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1145800</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1118803&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1118803</a> ] Other&nbsp;issues in the XHTML processor have been solved.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1143969&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1143969</a>] The editor now accepts the &quot;accept-charset&quot; attribute
+			in the FORM tag (IE specific bug). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1122742&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1122742</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1089548&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1089548</a> ] Now, the contents of the SCRIPT and STYLE tags remain untouched.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1114748&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1114748</a>] The PHP File Manager Connector now sets the new folders permissions
+			(chmod)&nbsp;to 0777 correctly. </li>
+		<li>The PHP File Manager Connector now has a configuration file (editor/filemanager/browser/default/connectors/php/config.php)
+			to set some security preferences. </li>
+		<li>The&nbsp;ASP File Manager Connector now has a configuration file (editor/filemanager/browser/default/connectors/asp/config.asp)
+			to set some security preferences. </li>
+		<li>A small bug in the toolbar rendering (strips auto position) has been corrected.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1093732&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1093732</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1091377&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1091377</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1083044&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1083044</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1096307&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1096307</a>] The configurations are now encoded so a user can use
+			values that has special chars (&amp;=/). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1103688&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1103688</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1092331&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1092331</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1088220&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1088220</a>] PHP samples now use PHP_SELF to automatically discover
+			the editor's base path. </li>
+		<li>Some small wrapping problems with some labels in the Image and Table dialog windows
+			have been fixed. </li>
+		<li>All .js files are now encoded in UTF-8 format with the BOM (byte order mask) to
+			avoid some errors on specific Linux installations. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1114449&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1114449</a>] The editor packager program has been modified so now it is possible
+			to use the source files to run the editor as described in the documentation. The
+			new packager must be downloaded. </li>
+		<li>A small problem with the editor focus while in&nbsp;source&nbsp;mode has been corrected.
+			Thanks to Eric (ric1607). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1108167&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1108167</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1085149&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1085149</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1151296&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1151296</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1082433&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1082433</a>] No more IFRAMEs without src attribute. Now it points
+			to a blank page located in the editor's package. In this way we avoid security warnings
+			when using the editor over HTTPS. Thanks to Guillermo Bozovich. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1117779&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1117779</a>] The editor now works well if you have more than one element named
+			&quot;submit&quot;&nbsp;on its form (even if it is not correct to have this situation).
+		</li>
+		<li>The XHTML processor was duplicating the text on some specific situation. It has
+			been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090213&amp;group_id=75348&amp;atid=543655">SF
+			Patch-1090213</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1098929&amp;group_id=75348&amp;atid=543653">SF
+				Patch-1098929</a>] With ASP, the editor now works correctly on pages using &quot;Option
+			Explicit&quot;. Thanks to Ben Noblet. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1100759&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1100759</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1029125&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1029125</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=966130&amp;group_id=75348&amp;atid=543653">SF
+					BUG-966130</a>] The editor was not working with old IE 5.5 browsers. There
+			was a problem with the XML parser. It has been fixed. </li>
+		<li>The localization engine is now working correctly over IE 5.5 browsers. </li>
+		<li>Some commands where not working well over IE 5.5 (emoticons, image,...). It has
+			been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1146441&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1146441</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1149777&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1149777</a>] The editor now uses the TEXTAREA id&nbsp;in the ReplaceTextarea
+			function. If the id is now found, it uses the &quot;name&quot;. The docs have been
+			updated. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1144297&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1144297</a>] Some corrections have been made to the Dutch language file. Thanks
+			to Erwin Dondorp. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1121365&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1121365</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1090102&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1090102</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1152171&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1152171</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1102907&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1102907</a>] There is no problem now to start the editor with values
+			like &quot;&lt;div&gt;&lt;/div&gt;&quot; or &quot;&lt;p&gt;&lt;/p&gt;&quot;. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1114059&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1114059</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1041861&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1041861</a>] The click on the disabled options in the Context Menu has no
+			effects now. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1152617&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1152617</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1102441&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1102441</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1095312&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1095312</a>] Some problems when setting the editor source to very specific
+			values has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1093514&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1093514</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1089204&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1089204</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077609&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1077609</a>] The editor now runs correctly if called directly (locally)&nbsp;without
+			a server installation (just opening the HTML sample files). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1088248&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1088248</a>] The editor now uses a different method to load its contents. In
+			this way the URLs remain untouched. </li>
+		<li>The PHP integration file now detects Internet Explorer 5.5 correctly.</li>
+	</ul>
+	<h3>
+		Version 2.0 RC2 (Release Candidate 2)</h3>
+	<ul>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1042034&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1042034</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1075961&amp;group_id=75348&amp;atid=543656">SF
+				Feature-1075961</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1083200&amp;group_id=75348&amp;atid=543656">SF
+					Feature-1083200</a>] A new dialog window for the <strong>table cell properties</strong>
+			is now available (right-click). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1042034&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1042034</a>] The new &quot;<strong>Split Cell</strong> &quot;, to split
+			a table cell in two columns, has been introduced (right-click). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1042034&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1042034</a>] The new &quot;<strong>Merge Cells</strong>&quot;, to merge
+			table cells (in the same row), has been introduced (right-click). </li>
+		<li>The &quot;fake&quot; <strong>TAB key support</strong> (available by default over
+			Gecko browsers is now available over IE too. You can set the number of spaces to
+			add setting the FCKConfig.TabSpaces configuration setting. Set it to 0 (zero) to
+			disable this feature (IE). </li>
+		<li>It now possible to tell IE to send a <strong>&lt;BR&gt;</strong> when the user presses
+			the <strong>Enter key</strong>. Take a look at the FCKConfig.UseBROnCarriageReturn
+			configuration setting. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1085422&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1085422</a>] <strong>ColdFusion</strong>: The <strong>File Manager connector</strong>
+			is now available! (Thanks to Hendrik Kramer). </li>
+		<li>The editor is now available in <strong>29 languages!</strong> The new language files
+			available are:&nbsp;
+			<ul>
+				<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1067775&amp;group_id=75348&amp;atid=543656">SF
+					Feature-1067775</a>] <strong>Chinese Simplified and Traditional</strong> (Taiwan
+					and Hong Kong) (by NetRube). </li>
+				<li><strong>Czech</strong> (by David Hor&aacute;k). </li>
+				<li><strong>Danish</strong> (by Jesper Michelsen). </li>
+				<li><strong>Dutch</strong> (by Bram Crins). </li>
+				<li><strong>German</strong> (by Maik Unruh). </li>
+				<li><strong>Portuguese</strong> (Portugal) (by Francisco Pereira). </li>
+				<li><strong>Russian</strong> (by Andrey Grebnev). </li>
+				<li><strong>Slovenian</strong> (by Boris Volaric).</li>
+			</ul>
+		</li>
+		<li>Updates to the <strong>French</strong> language files (by Hubert Garrido). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1085816&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1085816</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1083743&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1083743</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1078783&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1078783</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077861&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1077861</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077861&amp;group_id=75348&amp;atid=543653">SF
+							BUG-1037404</a>] Many&nbsp;small bugs&nbsp;in the XHTML processor
+			has been corrected (workarounds to browser specific bugs). These are some things
+			to consider regarding the changes:
+			<ul>
+				<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1083744&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1083744</a>] On Gecko browsers, any element attribute that the name starts with
+					&quot;_moz&quot; will be ignored. </li>
+				<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1060073&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1060073</a>] The &lt;STYLE&gt; and &lt;SCRIPT&gt; elements contents will be
+					handled as is, without CDATA tag surrounding. This may break XHTML validation. In
+					any case the use of external files for scripts and styles is recommended (W3C recommendation).</li>
+			</ul>
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1088310&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1088310</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1078837&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1078837</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=999792&amp;group_id=75348&amp;atid=543653">SF
+					BUG-999792</a>] URLs now remain untouched when initializing the editor or
+			switching from WYSYWYG to Source and vice versa. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1082323&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1082323</a>] The&nbsp;problem in the ASP and PHP connectors when handling non
+			&quot;strange&quot; chars in file names has been corrected. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1085034&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1085034</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1076796&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1076796</a>] Some bugs in the PHP connector have been corrected. </li>
+		<li>A&nbsp;problem with the &quot;Format&quot; command on IE browsers on languages different
+			of English has been solved. The negative side of this correction is that due to
+			a IE bad design it is not possible to update the &quot;Format&quot; combo while
+			moving throw the text (context sensitive). </li>
+		<li>On Gecko browsers, when selecting an image and executing the &quot;New Page&quot;
+			command, the image handles still appear, even if the image is not available anymore
+			(this is a Gecko bug). When clicking in&nbsp;a &quot;phanton&quot; randle, the browser
+			crashes. It doesn't&nbsp;happen (the crash)&nbsp;anymore. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1082197&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1082197</a>] On ASP, the bug in the browser detection system for Gecko browsers
+			has been corrected. Thanks to Alex Varga. </li>
+		<li>Again on ASP, the browser detection for IE had some problems on servers that use
+			comma for decimal separators on numbers. It has been corrected. Thanks to Agrotic.
+		</li>
+		<li>No error is thrown now when&nbsp;non existing&nbsp;language is configured in the
+			editor. The English language file is loaded in that case. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1077747&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1077747</a>] The missing images on the Office2003 and Silver skins are now included
+			in the package. </li>
+		<li>On some Gecko browsers, the dialog window was not loading correctly. I couldn't
+			reproduce the problem, but a fix has been applied based on users tests. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1004078&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1004078</a>] ColdFusion: The &quot;config&quot; structure/hash table with keys
+			and values is in ColdFusion not(!) case sensitive. All keys returned by ColdFusion
+			are in upper case format. Because the FCKeditor configuration keys must be case
+			sensitive, we had to match all structure/hash keys with a list of the correct configuration
+			names in mixed case. This has been added to the fckeditor.cfc and fckeditor.cfm.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1075166&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1075166</a>] ColdFusion: The &quot;fallback&quot; variant of the texteditor
+			(&lt;textarea&gt;) has a bug in the fckeditor.cfm. This has been fixed. </li>
+		<li>A typo in the Polish language file has been corrected. Thanks to Pawel Tomicki.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1086370&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1086370</a>] A small coding type in the Link dialog window has been corrected.
+		</li>
+	</ul>
+	<h3>
+		Version 2.0 RC1 (Release Candidate 1)</h3>
+	<ul>
+		<li><strong>ASP</strong> support is now available (including the&nbsp;File Manager connector).
+		</li>
+		<li><strong>PHP</strong> support is now available (including the File Manager connector).
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1063217&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1063217</a>] The new advanced&nbsp;<strong>Style</strong> command is available
+			in the toolbar: full preview, context sensitive, style definitions are loaded from
+			a XML file (see documentation for more instructions). </li>
+		<li>The <strong>Font Format</strong>, <strong>Font Name</strong> and <strong>Font Size</strong>
+			toolbar command now show a <strong>preview</strong> of the available options. </li>
+		<li>The new <strong>Find</strong> and <strong>Replace</strong> features has been introduced.
+		</li>
+		<li>A new <strong>Plug-in</strong> system has been developed. Now it is quite easy to
+			customize the editor to your needs. (Take a look at the html/sample06.html file).
+		</li>
+		<li>The editor now handles <strong>HTML entities</strong> in the right way (XHTML support
+			must be set to &quot;true&quot;). It handles all entities defined in the W3C&nbsp;XHTML
+			DTD file. </li>
+		<li>A new &quot;_docs&quot; folder has been introduced for the <strong>documentation</strong>.
+			It is not yet complete, but I hope the community will help us to fill it better.
+		</li>
+		<li>It is now possible (even if it is not recommended by the W3C) to force the use of
+			simple ampersands (&amp;) on attributes (like the links href) instead of its entity
+			&amp;amp;. Just set FCKConfig.ForceSimpleAmpersand = true in the&nbsp;configuration
+			file. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1026866&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1026866</a>] The &quot;<strong>EditorAreaCSS</strong>&quot; configuration
+			option has been introduced. In this way you can set the CSS to use in the editor
+			(editable area). </li>
+		<li>The editing area is not anymore clipped if the toolbar is too large and exceeds
+			the window width. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1064902&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1064902</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1033933&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1033933</a>] The editor <strong>interface</strong> is now completely <strong>localizable</strong>.
+			The version ships with 19 languages including: <b>Arabic</b>, <b>Bosnian</b>, <b>Catalan</b>,
+			<b>English</b>, <b>Spanish</b>, <b>Estonian</b>, <b>Finnish</b>, <b>French</b>,
+			<b>Greek</b>, <b>Hebrew</b>, <b>Croatian</b>, <b>Italian</b>, <b>Korean</b>, <b>Lithuanian</b>,
+			<b>Norwegian</b>, <strong>Polish</strong>, <strong>Serbian (Cyrillic)</strong>,
+			<strong>Serbian (Latin)</strong> and <strong>Swedish</strong>.</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1027858&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1027858</a>] Firefox 1.0 PR&nbsp;introduced&nbsp;a bug that made the editor
+			stop working on it. A workaround has been developed to fix the problem. </li>
+		<li>There was a positioning problem over IE&nbsp;with the color panel. It has been corrected.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1049842&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1049842</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1033832&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1033832</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1028623&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1028623</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1026610&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1026610</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1064498&amp;group_id=75348&amp;atid=543653">SF
+							BUG-1064498</a>] The combo commands in the toolbar were not opening
+			in the right way. It has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1053399&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1053399</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=965318&amp;group_id=75348&amp;atid=543653">SF
+				BUG-965318</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1018296&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1018296</a>] The toolbar buttons icons were not showing on some IE and
+			Firefox/Mac installations. It has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1054621&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1054621</a>] Color pickers are now working with the &quot;office2003&quot; and
+			&quot;silver&quot; skins. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1054108&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1054108</a>] IE doesn&rsquo;t recognize the &quot;&amp;apos;&quot; entity for
+			apostrophes, so a workaround has been developed to replace it with &quot;&amp;#39;&quot;
+			(its numeric entity representation). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=983434&amp;group_id=75348&amp;atid=543653">SF
+			BUG-983434</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=983398&amp;group_id=75348&amp;atid=543653">SF
+				BUG-983398</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1028103&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1028103</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1072496&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1072496</a>] The problem with elements with name &quot;submit&quot;
+			inside the editor's form has been solved. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1018743&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1018743</a>] The problem with Gecko when collapsing the toolbar while in source
+			mode has been fixed. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1065268&amp;group_id=75348">SF
+			BUG-1065268</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1034354&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1034354</a>] The XHTML processor now doesn&rsquo;t use the minimized tag
+			syntax (like &lt;br/&gt;) for empty elements that are not marked as EMPTY in the
+			W3C XHTML DTD specifications. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1029654&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1029654</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1046500&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1046500</a>] Due to a bug on Gecko there was a problem when creating links.
+			It has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1065973&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1065973</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=999792&amp;group_id=75348&amp;atid=543653">SF
+				BUG-999792</a>] The editor now handles relative URLs in IE. In effect IE transform
+			all relative URLs to absolute links, pointing to the site the editor is running.
+			So now the editor removes the protocol and host part of the link if it matches the
+			running server. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1071824&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1071824</a>] The color dialog box bug has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1052856&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1052856</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1046493&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1046493</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1023530&amp;group_id=75348&amp;atid=543653">SF
+					BUG-1023530</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1025978&amp;group_id=75348&amp;atid=543653">SF
+						BUG-1025978</a>] The editor now doesn&rsquo;t throw an error if no selection
+			was made and the create link command is used. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1036756&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1036756</a>] The XHTML processor has been reviewed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1029101&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1029101</a>] The Paste from Word feature is working correctly. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1034623&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1034623</a>] There is an IE bug when setting the editor value to &quot;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;&quot;.
+			A workaround has been developed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1052695&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1052695</a>] There are some rendering differences between Netscape and Mozilla.
+			(Actually that is a bug on both browsers). A workaround has been developed to solve
+			it. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1073053&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1073053</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1050394&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1050394</a>] The editor doesn&rsquo;t throw errors when hidden. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1066321&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1066321</a>] Scrollbars should not appear on dialog boxes (at least for the
+			Image and Link ones). </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1046490&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1046490</a>] Dialogs now are forced to show on foreground over Mac. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=1073955&amp;group_id=75348">SF
+			BUG-1073955</a>] A small bug in the image dialog window has been corrected. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1049534&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1049534</a>] The Resources Browser window is now working well over Gecko browsers.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1036675&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1036675</a>] The Resources Browser window now displays the server error on bad
+			installations.</li>
+	</ul>
+	<h3>
+		Version 2.0 Beta 2</h3>
+	<ul>
+		<li>There is a new configuration - &quot;<strong>GeckoUseSPAN</strong>&quot; - that
+			can be used to tell Gecko browsers to use &lt;SPAN style...&gt; or &lt;B&gt;, &lt;I&gt;
+			and &lt;U&gt; for the bold, italic and underline commands. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1002622&amp;group_id=75348&amp;atid=543656">SF
+			Feature-1002622</a>] New <strong>Text Color</strong> and&nbsp;<strong>Background Color</strong>
+			&nbsp;commands have been added to the editor. </li>
+		<li>On Gecko browsers, a message is shown when,&nbsp;because of&nbsp;security settings,&nbsp;the
+			user&nbsp;is not able to&nbsp;cut, copy or paste data from the clipboard using the
+			toolbar buttons or the context menu. </li>
+		<li>The new &quot;<strong>Paste as Plain Text</strong> &quot; command has been introduced.
+		</li>
+		<li>The new &quot;<strong>Paste from Word</strong> &quot; command has been introduced.
+		</li>
+		<li>A new configuration named&nbsp;&quot;StartupFocus&quot; can be used to tell the
+			editor to get the focus when the page is loaded. </li>
+		<li>All <strong>Java </strong>integration files has been moved to a new separated package.
+		</li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1016781&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1016781</a>] <strong>Table operations</strong> are now working when right click
+			inside a table. The following commands has been introduced: <strong>Insert Row</strong>,
+			<strong>Delete Row</strong>, <strong>Insert Column</strong>, <strong>Delete Column</strong>,
+			<strong>Insert Cell</strong> and <strong>Delete Cells</strong> . </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=965067&amp;group_id=75348&amp;atid=543653">SF
+			BUG-965067</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1010379&amp;group_id=75348&amp;atid=543653">SF
+				BUG-1010379</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=977713&amp;group_id=75348&amp;atid=543653">SF
+					BUG-977713</a>] XHTML support was not working with FireFox, blocking the
+			editor when submitting data. It has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1007547&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1007547</a> ] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=974595&amp;group_id=75348&amp;atid=543653">SF
+				BUG-974595</a> ]&nbsp;The &quot;FCKLang not defined&quot; error when loading
+			has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1021028&amp;group_id=75348&amp;atid=543653">SF
+			BUG-1021028</a>] If the editor doesn't have the focus, some commands were been executed
+			outside the editor in the place where the focus is. It has been fixed. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=981191&amp;group_id=75348&amp;atid=543653">SF
+			BUG-981191</a>] We are now using &lt;!--- ---&gt; for ColdFusion comments.</li>
+	</ul>
+	<h3>
+		Version 2.0 Beta 1</h3>
+	<p>
+		This is the first beta of the 2.x series. It brings a lot of new and important things.
+		Beta versions will be released until all features available on version 1.x will
+		be introduced in the 2.0.<br />
+		<br />
+		<strong>Note:</strong> As it is a beta, it is not yet completely developed. Future
+		versions can bring new features that can break backward compatibility with this
+		version.
+	</p>
+	<ul>
+		<li>Gecko browsers (<strong>Mozilla</strong> and <strong>Netscape</strong>) support.
+		</li>
+		<li><strong>Quick startup</strong> response times. </li>
+		<li>Complete <strong>XHTML</strong> 1.0 support. </li>
+		<li><strong>Advanced link</strong> dialog box:
+			<ul>
+				<li>Target selection. </li>
+				<li>Popup configurator. </li>
+				<li>E-Mail link. </li>
+				<li>Anchor selector. </li>
+			</ul>
+		</li>
+		<li>New <strong>File Manager</strong>. </li>
+		<li>New dialog box system, with <strong>tabbed dialogs</strong> support. </li>
+		<li>New <strong>context menus</strong> with icons. </li>
+		<li>New toolbar with &quot;expand/collapse&quot; feature. </li>
+		<li><strong>Skins</strong> support. </li>
+		<li><strong>Right to left languages</strong> support. </li>
+	</ul>
+	<h3>
+		Version 1.6.1</h3>
+	<ul>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=862364&amp;group_id=75348&amp;atid=543653">SF
+			BUG-862364</a>] [<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=812733&amp;group_id=75348&amp;atid=543653">SF
+				BUG-812733</a>] There was a problem when the user tried to delete the last row,
+			collumn or cell in a table. It has been corrected.* </li>
+		<li>New Estonian language file. Thanks to Kristjan Kivikangur </li>
+		<li>New Croatian language file. Thanks to Alex Varga. </li>
+		<li>Updated language file for Czech. Thanks to Plachow. </li>
+		<li>Updated language file for Chineze (zh-cn). Thanks to Yanglin. </li>
+		<li>Updated language file for Catalan. Thanks to Jordi Cerdan.</li>
+	</ul>
+	<p>
+		* This version has been partially sponsored by <a href="http://www.genuitec.com/">Genuitec,
+			LLC</a>.</p>
+	<h3>
+		Version 1.6</h3>
+	<ul>
+		<li><strong>Context Menu</strong> support for <strong>form</strong> elements.* </li>
+		<li>New <strong>&quot;Selection Field&quot; command</strong> with advanced dialog box
+			for options definitions.* </li>
+		<li>New <strong>&quot;Image Button&quot; command</strong> is available.* </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=936196&amp;group_id=75348&amp;atid=543656">SF
+			Feature-936196</a>] Many form elements <strong>bugs has been fixed</strong> and
+			<strong>many improvements</strong> has been done.* </li>
+		<li>New <strong>Java Integration Module</strong>. There is a complete Java API and Tag
+			Library implementations. Take a look at the _jsp directory. Thanks to Simone Chiaretta
+			and Hao Jiang. </li>
+		<li>The <strong>Word Spell Checker</strong> can be used. To be able to run it, your
+			browser security configuration &quot;Initialize and script ActiveX controls not
+			marked as safe&quot; must be set to &quot;Enable&quot; or &quot;Prompt&quot;. And
+			easier and more secure way to do that is to add your site in the list of trusted
+			sites. IeSpell can still be used. Take a look at the fck_config.js file for some
+			configuration options. Thanks to EdwardRF. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=748807&amp;group_id=75348&amp;atid=543656">SF
+			Feature-748807</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=801030&amp;group_id=75348&amp;atid=543656">SF
+				Feature-801030</a>] [<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=880684&amp;group_id=75348&amp;atid=543656">SF
+					Feature-880684</a>] New &quot;<strong>Anchor&quot; command</strong>, including
+			context menu support. Thanks to G.Meijer. </li>
+		<li>Special characters are replaced with their decimal HTML entities when the XHMTL
+			support is enabled (only over IE5.5+). </li>
+		<li>New <strong>Office 2003 Style</strong> toolbar icons are available. Just uncomment
+			the config.ToolbarImagesPath key in the fck_config.js file. Thanks to Abdul-Aziz
+			A. Al-Oraij. <strong>Attention</strong>: the default toolbar items have been moved
+			to the &quot;images/toolbar/default&quot; directory. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=934566&amp;group_id=75348&amp;atid=543655">SF
+			Patch-934566</a>] <strong>Double click support</strong> for Images, Tables, Links,
+			Anchors and all Form elements. Thanks to Top Man. </li>
+		<li>New <strong>&quot;New Page&quot; command</strong> to start a typing from scratch.
+			Thanks to Abdul-Aziz A. Al-Oraij. </li>
+		<li>New <strong>&quot;Replace&quot; command</strong>. Thanks to Abdul-Aziz A. Al-Oraij.
+		</li>
+		<li>New <strong>&quot;Advanced Font Style&quot; command</strong>. Thanks to Abdul-Aziz
+			A. Al-Oraij. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=738193&amp;group_id=75348&amp;atid=543656">SF
+			Feature-738193</a>] New <strong>&quot;Save&quot; command</strong>. It can be used
+			to simulate a save action, but in fact it just submits the form where the editor
+			is placed in. Thanks to Abdul-Aziz A. Al-Oraij. </li>
+		<li>New <strong>&quot;Universal Keyboard&quot; command</strong>. This 22 charsets are
+			available: Arabic, Belarusian, Bulgarian, Croatian, Czech, Danish, Finnish, French,
+			Greek, Hebrew, Hungarian, Diacritical, Macedonian, Norwegian, Polish, Russian, Serbian
+			(Cyrillic), Serbian (Latin), Slovak, Spanish, Ukrainian and Vietnamese. Includes
+			a keystroke listener to type Arabic on none Arabic OS or machine. Thanks to Abdul-Aziz
+			A. Al-Oraij. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=935358&amp;group_id=75348&amp;atid=543655">SF
+			Patch-935358</a>] New <strong>&quot;Preview&quot; command</strong>. Context menu
+			option is included and can be deactivated throw the config.ShowPreviewContextMenu
+			configuration. Thanks to Ben Ramsey. </li>
+		<li>New &quot;<strong>Table Auto Format</strong>&quot; context menu command. Hack a
+			little the fck_config.js and the fck_editorarea.css files. Thanks to Alexandros
+			Lezos. </li>
+		<li>New &quot;<strong>Bulleted List Properties</strong> &quot; context menu to define
+			its type and class. Thanks to Alexandros Lezos. </li>
+		<li>The <strong>image dialog</strong> box has been a <strong>redesigned</strong> . Thanks
+			to Mark Fierling. </li>
+		<li>Images now always have the <strong>&quot;alt&quot; attribute</strong> set, even
+			when it's value is empty. Thanks to Andreas Barnet. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=942250&amp;group_id=75348&amp;atid=543655">SF
+			Patch-942250</a>] You can set on fck_config.js to <strong>automatically clean Word</strong>
+			pasting operations without a user confirmation. </li>
+		<li>Forms element dialogs and other localization pending labels has been updated. </li>
+		<li>A new <strong>Lithuanian</strong> language file is available. Thanks to Tauras Paliulis.
+		</li>
+		<li>A new <strong>Hebrew</strong> language file is available. Thanks to Ophir Radnitz.
+		</li>
+		<li>A new <strong>Serbian</strong> language file is available. Thanks to Zoran Subic.
+		</li>
+		<li><strong>Danish</strong> language file updates. Thanks to Flemming Jensen. </li>
+		<li><strong>Catalan</strong> language file updates. Thanks to Jordi Cerdan. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=936514&amp;group_id=75348&amp;atid=543655">SF
+			Patch-936514</a>] [<a href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=918716&amp;group_id=75348">SF
+				BUG-918716</a>] [<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=931037&amp;group_id=75348&amp;atid=543653">SF
+					BUG-931037</a>] [<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=865864&amp;group_id=75348&amp;atid=543653">SF
+						BUG-865864</a>] [<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=915410&amp;group_id=75348&amp;atid=543653">SF
+							BUG-915410</a>] [<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=918716&amp;group_id=75348&amp;atid=543653">SF
+								BUG-918716</a>] Some <strong>languages files</strong> were not
+			saved on <strong>UTF-8</strong> format causing some javascript errors on loading
+			the editor or making &quot;undefined&quot; to show on editor labels. This problem
+			was solved. </li>
+		<li>Updates on the testsubmit.php file. Thanks to Geat and Gabriel Schillaci </li>
+		<li>[<a href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=924620&amp;group_id=75348">SF
+			BUG-924620</a>] There was a problem when setting a name to an editor instance when
+			the name is used by another tag. For example when using &quot;description&quot;
+			as the name in a page with the &lt;META name=&quot;description&quot;&gt; tag. </li>
+		<li>[<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=935018&amp;group_id=75348&amp;atid=543653">SF
+			BUG-935018</a>] The &quot;buletted&quot; typo has been corrected. </li>
+		<li>[<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=902122&amp;group_id=75348&amp;atid=543653">SF
+			BUG-902122</a>] Wrong css and js file references have been corrected. </li>
+		<li>[<a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=918942&amp;group_id=75348&amp;atid=543653">SF
+			BUG-918942</a>] All dialog boxes now accept Enter and Escape keys as Ok and Cancel
+			buttons.</li>
+	</ul>
+	<p>
+		* This version has been partially sponsored by <a href="http://www.genuitec.com/">Genuitec,
+			LLC</a>.</p>
+	<h3>
+		Version 1.5</h3>
+	<ul>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543656&amp;aid=913777&amp;group_id=75348">SF
+			Feature-913777</a>] <strong>New Form Commands</strong> are now available! Special
+			thanks to G.Meijer. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=861149&amp;group_id=75348&amp;atid=543656">SF
+			Feature-861149</a>] <strong>Print Command</strong> is now available! </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=743546&amp;group_id=75348">SF
+			BUG-743546</a>] The <strong>XHTML content duplication problem </strong>has been
+			<strong>solved</strong> . Thanks to Paul Hutchison. </li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=875853&amp;group_id=75348">SF
+			BUG-875853</a>] The <strong>image dialog box</strong> now gives precedence for width
+			and height values set as styles. In this way a user can change the size of the image
+			directly inside the editor and the changes will be reflected in the dialog box.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543656&amp;aid=913777&amp;group_id=75348">SF
+			Feature-788368</a>] The sample <strong>file upload </strong>manager for ASPX now
+			uses <strong>guids</strong> for the file name generation. In this way a support
+			XML file is not needed anymore. </li>
+		<li>It's possible now to <strong>programmatically change the Base Path</strong> of the
+			editor if it's installed in a directory different of &quot;/FCKeditor/&quot;. Something
+			like this:<br />
+			oFCKeditor.BasePath = '/FCKeditor/' ;<br />
+			Take a look at the _test directory for samples. </li>
+		<li>There was a little bug in the TAB feature that moved the insertion point if there
+			were any object (images, tables) in the content. It has been fixed. </li>
+		<li>The problem with <strong>accented and international characters</strong> on the PHP
+			test page was solved. </li>
+		<li>A new <strong>Chinese (Taiwan)</strong> language file is available. Thanks to Nil.
+		</li>
+		<li>A new <strong>Slovenian</strong> language file is available. Thanks to Pavel Rotar.
+		</li>
+		<li>A new <strong>Catalan</strong> language file is available. Thanks to Jordi Cerdan.
+		</li>
+		<li>A new <strong>Arabic</strong> language file is available. Thanks to Abdul-Aziz A.
+			Al-Oraij. </li>
+		<li>Small corrections on the <strong>Norwegian</strong> language file. </li>
+		<li>A Java version for the test results (testsubmit.jsp) is now available. Thanks to
+			Pritpal Dhaliwal. </li>
+		<li>When using JavaScript to create a editor instance it's possible now to easily get
+			the editor's value calling oFCKeditor.GetValue() (eg.). Better JavaScript API interfaces
+			will be available on version 2.0. </li>
+		<li>If <strong>XHTML</strong> is enabled the editor cleans the HTML before showing it
+			on the Source View, so the exact result can be viewed by the user. This option can
+			be activated setting config.EnableSourceXHTML = true in the fck_config.js file.
+		</li>
+		<li>The <strong>JS integration object</strong> now escapes all configuration settings,
+			in this way a user can use <strong>reserved chars</strong> on it. For example:
+			<br />
+			oFCKeditor.Config[&quot;ImageBrowserURL&quot;] = '/imgs/browse.asp?filter=abc*.jpg&amp;userid=1';
+		</li>
+		<li>A minimal browse server sample is now available in ASP. Thanks to Andreas Barnet.
+		</li>
+	</ul>
+	<h3>
+		Version 1.4</h3>
+	<ul>
+		<li><strong>ATTENTION: For PHP users</strong>: The editor was changed and now uses <strong>
+			htmlspecialchars</strong> instead of <strong>htmlentities</strong> when handling
+			the initial value. It should works well, but please make some tests before upgrading
+			definitively. If there is any problem just uncomment the line in the fckeditor.php
+			file (and send me a message!). </li>
+		<li>The editor is now integrated with <strong>ieSpell</strong> (<a href="http://www.iespell.com">http://www.iespell.com</a>)
+			for <strong>Spell Checking</strong>. You can configure the download URL in then
+			fck_config.js file. Thanks to Sanjay Sharma. (ieSpell is free for personal use but
+			must be paid for commercial use) </li>
+		<li><strong>Table</strong> and <strong>table cell</strong> dialogs has been changed.
+			Now you can <strong>select the class</strong> you want to be applied. Thanks to
+			Alexander Lezos. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=865378&amp;group_id=75348&amp;atid=543656">SF
+			Feature-865378</a>]A new <strong>upload support is available for ASP</strong>. It
+			uses the /UserImages/ folder in the root of the web site as the files container
+			and a counter controlled by the upload.cnt file. Both must have write permissions
+			set to the IUSR_xxx user. Thanks to Trax and Juanjo. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=798128&amp;group_id=75348&amp;atid=543655">SF
+			Patch-798128</a>] The user (programmer) can now define a <strong>custom separator</strong>
+			for the list items of a combo in the toolbar. Thanks to Wulff D. Heiss. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=741963&amp;group_id=75348&amp;atid=543656">SF
+			Feature-741963</a>][<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=878941&amp;group_id=75348&amp;atid=543656">SF
+				Feature-878941</a>][<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=869389&amp;group_id=75348&amp;atid=543655">SF
+					Patch-869389</a>] A minimal support for a &ldquo;fake&rdquo; <strong>TAB is now available</strong>,
+			even if HTML has no support for TAB. Now when the user presses the TAB key a configurable
+			number of spaces (&amp;nbsp;) is added. Take a look at config.TabSpaces on the fck_config.js
+			file. No action is performed if it is set to zero. The default value is 4. Thanks
+			to Phil Hassey. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=782779&amp;group_id=75348&amp;atid=543653">SF
+			BUG-782779</a>][<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=790939&amp;group_id=75348&amp;atid=543653">SF
+				BUG-790939</a>] The problem with big images has been corrected. Thanks to Raver.
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=853374&amp;group_id=75348">SF
+			BUG-862975</a>] Now the editor does nothing if no image is selected in the image
+			dialog box and the OK button is hit. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=851609&amp;group_id=75348&amp;atid=543653">SF
+			BUG-851609</a>] The problem with ASP and null values has been solved. </li>
+		<li><strong>Norwegean</strong> language pack. Thanks to Martin Kronstad. </li>
+		<li><strong>Hungarian</strong> language pack. Thanks to Bal&aacute;zs Szab&oacute;.
+		</li>
+		<li><strong>Bosnian</strong> language pack. Thanks to Trax. </li>
+		<li><strong>Japanese</strong> language pack. Thanks to Kato Yuichiro. </li>
+		<li>Updates on the <strong>Polish</strong> language pack. Thanks to Norbert Neubauer.
+		</li>
+		<li>The <strong>Chinese (Taiwan)</strong> (zh-tw) has been removed from the package
+			because it's corrupt. I'm sorry. I hope someone could send me a good version soon.
+		</li>
+	</ul>
+	<h3>
+		Version 1.3.1</h3>
+	<ul>
+		<li>It's now possible to configure the editor the insert a <strong>&lt;BR&gt; tag instead
+			of &lt;P&gt;</strong> when the user presses the <strong>&lt;Enter&gt;</strong> key.
+			Take a look at the fck_config.js configuration file for the &quot;<strong>UseBROnCarriageReturn</strong>&quot;
+			key. This option is disabled by default. </li>
+		<li><strong>Icelandic</strong> language pack. Thanks to Andri &Oacute;skarsson. </li>
+		<li>[<a href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=853374&amp;group_id=75348">SF
+			BUG-853374</a>] On IE 5.0 there was a little error introduced with version 1.3 on
+			initialization. It was corrected. </li>
+		<li>[<a href="https://sourceforge.net/tracker/?func=detail&amp;atid=543653&amp;aid=853372&amp;group_id=75348">SF
+			BUG-853372</a>] On IE 5.0 there was a little error introduced with version 1.3 when
+			setting the focus in the editor. It was corrected. </li>
+		<li>Minor errors on the language file for <strong>english</strong> has been corrected.
+			Thanks to Anders Madsen. </li>
+		<li>Minor errors on the language file for <strong>danish</strong> has been corrected.
+			Thanks to Martin Johansen. </li>
+	</ul>
+	<h3>
+		Version 1.3</h3>
+	<ul>
+		<li>Language support for <strong>Danish, Polish, Simple Chinese, Slovak, Swedish and
+			Turkish</strong>. </li>
+		<li>Language updates for <strong>Romanian</strong>. </li>
+		<li>It's now possible to <strong>override</strong> any of the <strong>editor's configurations</strong>
+			(for now it's implemented just for JavaScript, ASPX and HTC modules). See _test/test.html
+			for a sample. I'm now waiting for the Community for the ASP, CFM and PHP versions.
+		</li>
+		<li>A new method is available for <strong>PHP</strong> users. It's called <strong>ReturnFCKeditor</strong>.
+			It works exactly like CreateFCKeditor, but it <strong>returns a string with the HTML</strong>
+			for the editor instead of output it (echo). This feature is useful for people who
+			are working with Smarty Templates or something like that. Thanks to Timothy J. Finucane.
+		</li>
+		<li>Many people have had problems with <strong>international characters</strong> over
+			<strong>PHP</strong>. I had also the same problem. PHP have strange problems with
+			character encoding. The code hasn't been changed but just saved again with Western
+			European encoding. <strong>Now it works well</strong> in my system.<br />
+			Take a look also at the &quot;default_charset&quot; configuration option at the
+			php.ini file. It doesn't seem to be an editor's problem but a PHP issue. </li>
+		<li>The &quot;<strong>testsubmit.php</strong>&quot; file now strips the &quot;<strong>Magic
+			Quotes</strong> &quot; that are automatically added by PHP on form posts. </li>
+		<li>A <strong>new language</strong> integration module is available for <strong>ASP/Jscript</strong>.
+			Thanks to Dimiter Naydenov. </li>
+		<li><strong>New configuration</strong> options are available to <strong>customize the
+			Target</strong> combo box in the <strong>Insert/Modify Link</strong> dialog box.
+			Now you can hide it, or set which options are available in the combo box. Take a
+			look at the fck_config.js file. </li>
+		<li>The <strong>Text as Plain Text</strong> toolbar <strong>icon</strong> has been changed
+			<strong>to avoid confusion</strong> with the Normal Paste or. Thanks to Kaupo Kalda.
+		</li>
+		<li>The file <strong>dhtmled.cab has been removed</strong> from the package. It's not
+			needed to the editor to work and caused some confusion for a few users. </li>
+		<li>The <strong>editor's content</strong> now <strong>doesn't loose the focus</strong>
+			when the user clicks with the mouse in a toolbar button. </li>
+		<li>On <strong>drag-and-drop</strong> operations the data to be inserted in the editor
+			is now <strong>converted to plain text</strong> when the &quot;<strong>ForcePasteAsPlainText</strong>&quot;
+			configuration is set to <strong>true</strong>. </li>
+		<li>The <strong>image browser</strong> sample in PHP now <strong>sorts the files</strong>
+			by name. Thanks to Sergey Lupashko. </li>
+		<li>Two <strong>new configuration</strong> options are available to <strong>turn on/off
+			by default</strong> the &quot;<strong>Show Borders</strong>&quot; and &quot;<strong>Show
+				Details</strong>&quot; commands. </li>
+		<li>Some <strong>characters have been removed</strong> from the &quot;<strong>Insert
+			Special Chars</strong>&quot; dialog box because they were causing encoding problems
+			in some languages. Thanks to Abomb Hua. </li>
+		<li><strong>JSP</strong> versions of the <strong>image and file upload and browsing</strong>
+			features. Thanks to Simone Chiaretta.</li>
+	</ul>
+	<h3>
+		Version 1.2.4</h3>
+	<ul>
+		<li>Language support for <strong>Spanish, Finnish, Romanian and Korean</strong>. </li>
+		<li>Language updates for <strong>German</strong>. </li>
+		<li>New <strong>Zoom</strong> toolbar option. (<a href="https://sourceforge.net/forum/forum.php?thread_id=904116&amp;forum_id=257180">Thanks
+			to &quot;mtn_roadie&quot;</a>)</li>
+	</ul>
+	<h3>
+		Version 1.2.2</h3>
+	<ul>
+		<li>Language support for <strong>French</strong>. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=782779&amp;group_id=75348&amp;atid=543653">SF
+			BUG-782779</a>] Version 1.2 introduced a bug on the image dialog window: when changing
+			the image, no update was done. This bug is now fixed. </li>
+	</ul>
+	<h3>
+		Version 1.2</h3>
+	<ul>
+		<li>Enhancements to the <strong>Word cleaning</strong> feature (Thanks to Karl von Randow).
+		</li>
+		<li>The <strong>Table dialog box</strong> now handles the Style width and height set
+			in the table (Thanks to Roberto Arruda). There where many problems on prior version
+			when people changed manually the table's size, dragging the size handles, and then
+			it was not possible to set a new size using the table dialog box. </li>
+		<li>For the <strong>Image dialog box:</strong>
+			<ul>
+				<li>No image is shown in the preview pane if no image has been set. </li>
+				<li>If no HSpace is set in the image a &quot;-1&quot; value was shown in the dialog
+					box. Now, nothing is shown if the value is negative. </li>
+			</ul>
+		</li>
+		<li>[<a target="_blank" href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=739630&amp;group_id=75348&amp;atid=543653">SF
+			BUG-739630</a>] Image with link lost the link when changing its properties. The
+			problem is solved. </li>
+		<li>Due to some problems in the XHTML cleaning (content duplication when the source
+			HTML is dirty and malformed), the <strong>XHTML support is turned off by default</strong>
+			from this version. You can still change this behavior and turn it on in the configuration
+			file. </li>
+		<li>Some little updates on the <strong>English </strong>language file. </li>
+		<li>A few addition of missing entries on all languages files (translations for these
+			changes are pending). </li>
+		<li>Language files has been added for the following languages:
+			<ul>
+				<li><strong>Brazilian Portuguese</strong> (pt-br) </li>
+				<li><strong>Czech</strong> (cz) </li>
+				<li><strong>Dutch</strong> (nl) </li>
+				<li><strong>Russian</strong> (ru) </li>
+				<li><strong>Chinese (Taiwan)</strong> (zh-tw) </li>
+				<li><strong>Greek</strong> (gr) </li>
+				<li><strong>German</strong> (de)</li>
+			</ul>
+		</li>
+	</ul>
+	<h3>
+		Version 1.1</h3>
+	<ul>
+		<li>The &quot;<strong>Multi Language</strong>&quot; system is now available. This version
+			ships with English and Italian versions completed. Other languages will be available
+			soon. The editor automatically detects the client language and sets all labels,
+			tooltips and dialog boxes to it, if available. The auto detection and the default
+			language can be set in the <strong>fck_config.file</strong>. </li>
+		<li>Two files can now be created to isolate customizations code from the original source
+			code of the editor: <strong>fckeditor.config.js</strong> and <strong>fckeditor.custom.js</strong>.
+			Create these files in the root folder of your web site, if needed. The first one
+			can be used to add or override configurations set on fck_config.js. The second one
+			is used for custom actions and behaviors. </li>
+		<li>A problem with relative links and images like &quot;/test/test.doc&quot; has been
+			solved. In prior versions, only with XHTML support enabled, the URL was changed
+			to something like &quot;http://www.mysite.xxx/test/test.doc&quot; (The domain was
+			automatically added). Now the XHTML cleaning procedure gets the URLs exactly how
+			they are defined in the editor&rsquo;s HTML. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=742168&amp;group_id=75348&amp;atid=543653">SF
+			BUG-742168</a>] Mouse drag and drop from toolbar buttons has been disabled. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=768210&amp;group_id=75348&amp;atid=543653">SF
+			BUG-768210</a>] HTML entities, like <strong>&amp;lt;</strong>, were not load correctly.
+			The problem is solved. </li>
+		<li>[<a target="_blank" href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=748812&amp;group_id=75348&amp;atid=543653">SF
+			BUG-748812</a>] The link dialog window doesn't open when the link button is grayed.
+		</li>
+	</ul>
+	<h3>
+		Version 1.0</h3>
+	<ul>
+		<li>Three new options are available in the configuration file to set what file types
+			are allowed / denied to be uploaded from the &quot;Insert Link&quot; and &quot;Insert
+			Image&quot; dialog boxes. </li>
+		<li>Upload options, for links and images, are automatically hidden on IE 5.0 browsers
+			(it's not compatible). </li>
+		<li>[SF BUG-734894] Fixed a problem on XHTML cleaning: the value on INPUT fields were
+			lost. </li>
+		<li>[SF BUG-713797] Fixed some image dialog errors when trying to set image properties
+			when no image is available. </li>
+		<li>[SF BUG-736414] Developed a workaround for a DHTML control bug when loading in the
+			editor some HTML started with &lt;p&gt;&lt;hr&gt;&lt;/p&gt;. </li>
+		<li>[SF BUG-737143] Paste from Word cleaning changed to solve some IE 5.0 errors. This
+			feature is still not available over IE 5.0. </li>
+		<li>[SF BUG-737233] CSS mappings are now OK on the PHP image browser module. </li>
+		<li>[SF BUG-737495] The image preview in the image dialog box is now working correctly.
+		</li>
+		<li>[SF BUG-737532] The editor automatically switches to WYSIWYG mode when the form
+			is posted. </li>
+		<li>[SF BUG-739571] The editor is now working well over Opera (as for Netscape, a TEXTAREA
+			is shown). </li>
+	</ul>
+	<h3>
+		Version 1.0 Final Candidate</h3>
+	<ul>
+		<li>A new dialog box for the &quot;Link&quot; command is available. Now you can upload
+			and browse the server exactly like the image dialog box. It's also possible to define
+			the link title and target window (_blank, _self, _parent and _top). As with the
+			image dialog box, a sample (and simple) file server browser is available. </li>
+		<li>A new configuration option is available to force every paste action to be handled
+			as plain text. See &quot;config.ForcePasteAsPlainText&quot; in fck_config.js. </li>
+		<li>A new Toolbar button is available: &quot;Paste from Word&quot;. It automatically
+			cleans the clipboard content before pasting (removesWord styles, classes, xml stuff,
+			etc...). This command is available for IE 5.5 and more. For IE 5.0 users, a message
+			is displayed advising that the text will not be cleaned before pasting. </li>
+		<li>The editor automatically detects Word clipboard data on pasting operations and asks
+			the user to clean it before pasting. This option is turned on by default but it
+			can be configured. See &quot;config.AutoDetectPasteFromWord&quot; in fck_config.js.
+		</li>
+		<li>Table properties are now available in cells' right click context menu. </li>
+		<li>It's now possible to edit cells advanced properties from it's right click context
+			menu. </li>
+	</ul>
+	<h3>
+		Version 1.0 Release Candidate 1 (RC1)</h3>
+	<ul>
+		<li>Some performance improvements. </li>
+		<li>The file dhtmled.cab has been added to the package for clients ho needs to install
+			the Microsoft DHTML Editor component. </li>
+		<li>[SF BUG-713952] The format command options are localized, so it depends on the IE
+			language to work. Until version 0.9.5 it was working only over English IE browsers.
+			Now the options are load dynamically on the client using the client's language.
+		</li>
+		<li>[SF BUG-712103] The style command is localized, so it depends on the IE language
+			to work. Until version 0.9.5 it was working only over English IE browsers. Now it
+			configures itself using the client's language. </li>
+		<li>[SF BUG-726137] On version 0.9.5, some commands (special chars, image, emoticons,
+			...) remove the next available character before inserting the required content even
+			if no selection was made in the editor. Now the editor replaces only the selected
+			content (if available). </li>
+	</ul>
+	<h3>
+		Version 0.9.5 beta</h3>
+	<ul>
+		<li>XHTML support is now available! It can be enabled/disabled in the fck_config.js
+			file. </li>
+		<li>&quot;Show Table Borders&quot; option: show borders for tables with borders size
+			set to zero. </li>
+		<li>&quot;Show Details&quot; option: show hidden elements (comments, scripts, paragraphs,
+			line breaks) </li>
+		<li>IE behavior integration module. Thanks to Daniel Shryock. </li>
+		<li>&quot;Find&quot; option: to find text in the document. </li>
+		<li>More performance enhancements. </li>
+		<li>New testsubmit.php file. Thansk to Jim Michaels. </li>
+		<li>Two initial PHP upload manager implementations (not working yet). Thanks to Frederic
+			Tyndiuk and Christian Liljedahl. </li>
+		<li>Initial PHP image browser implementation (not working yet). Thanks to Frederic Tyndiuk.
+		</li>
+		<li>Initial CFM upload manager implementation. Thanks to John Watson. </li>
+	</ul>
+	<h3>
+		Version 0.9.4 beta</h3>
+	<ul>
+		<li>ColdFusion module integration is now available! Thanks to John Watson. </li>
+		<li>&quot;Insert Smiley&quot; toolbar option! Thanks to Fredox. Take a look at fck_config.js
+			for configuration options. </li>
+		<li>&quot;Paste as plain text&quot; toolbar option! </li>
+		<li>Right click support for links (edit / remove). </li>
+		<li>Buttons now are shown in gray when disabled. </li>
+		<li>Buttons are shown just when the image is downloaded (no more &quot;red x&quot; while
+			waiting for it). </li>
+		<li>The toolbar background color can be set with a CSS style (see fck_editor.css). </li>
+		<li>Toolbar images have been reviewed:
+			<ul>
+				<li>Now they are transparent. </li>
+				<li>No more over...gif for every button (so the editor loads quicker). </li>
+				<li>Buttons states are controlled with CSS styles. (see fck_editor.css).</li>
+			</ul>
+		</li>
+		<li>Internet Explorer 5.0 compatibility, except for the image uploading popup. </li>
+		<li>Optimizations when loading the editor. </li>
+		<li>[SF BUG-709544] - Toolbar buttons wait for the images to be downloaded to start
+			watching and responding the user actions (turn buttons on/off when the user changes
+			position inside the editor). </li>
+		<li>JavaScript integration is now Object Oriented. CreateFCKeditor function is not available
+			anymore. Take a look in test.html. </li>
+		<li>Two new configuration options, ImageBrowser and ImageUpload, are available to turn
+			on and off the image upload and image browsing options in the Image dialog box.
+			This options can be hidden for a specific editor instance throw specific URL parameter
+			in the editor&rsquo;s IFRAME (upload=true/false&amp;browse=true/false). All specific
+			language integration modules handle this option. For sample see the _test directory.
+		</li>
+	</ul>
+</body>
 </html>
diff -ruN 1.4.0sr5-1.src/getimage.php 1.4.1.src/getimage.php
--- 1.4.0sr5-1.src/getimage.php	2006-08-08 02:53:59.000000000 -0500
+++ 1.4.1.src/getimage.php	2006-05-26 08:35:39.000000000 -0500
@@ -29,7 +29,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: getimage.php,v 1.6.2.1 2006/05/27 15:38:45 dhaun Exp $
+// $Id: getimage.php,v 1.7 2006/05/26 13:35:39 dhaun Exp $
 
 /**
 * For really strict webhosts, this file an be used to show images in pages that
diff -ruN 1.4.0sr5-1.src/help/advancedsearch.html 1.4.1.src/help/advancedsearch.html
--- 1.4.0sr5-1.src/help/advancedsearch.html	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/help/advancedsearch.html	2006-05-14 12:34:44.000000000 -0500
@@ -66,7 +66,7 @@
 
 <td>Select the type of the search.&nbsp; Your options are "All", which searches
 through all the searchable content of the site, or you can restrict your
-search to only one of "Stories", "Comments", "Links", "Events", as well as one
+search to only one of "Stories", "Comments" as well as one
 of the installed plugins (e.g. "Static Pages").</td>
 </tr>
 
Binary files 1.4.0sr5-1.src/images/buttons/valid-css.png and 1.4.1.src/images/buttons/valid-css.png differ
Binary files 1.4.0sr5-1.src/images/buttons/valid-html.png and 1.4.1.src/images/buttons/valid-html.png differ
diff -ruN 1.4.0sr5-1.src/index.php 1.4.1.src/index.php
--- 1.4.0sr5-1.src/index.php	2006-08-08 02:53:59.000000000 -0500
+++ 1.4.1.src/index.php	2006-12-10 06:08:39.000000000 -0600
@@ -2,13 +2,13 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Geeklog 1.3                                                               |
+// | Geeklog 1.4                                                               |
 // +---------------------------------------------------------------------------+
 // | index.php                                                                 |
 // |                                                                           |
 // | Geeklog homepage.                                                         |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2004 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs        - tony@tonybibbs.com                           |
 // |          Mark Limburg      - mlimburg@users.sourceforge.net               |
@@ -32,7 +32,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: index.php,v 1.75 2005/12/03 12:45:29 ospiess Exp $
+// $Id: index.php,v 1.89 2006/12/10 12:08:39 dhaun Exp $
 
 require_once ('lib-common.php');
 require_once ($_CONF['path_system'] . 'lib-story.php');
@@ -68,7 +68,11 @@
 
 $display .= COM_siteHeader();
 if (isset ($_GET['msg'])) {
-    $display .= COM_showMessage (COM_applyFilter ($_GET['msg'], true),COM_applyFilter ($_GET['plugin']));
+    $plugin = '';
+    if (isset ($_GET['plugin'])) {
+        $plugin = COM_applyFilter ($_GET['plugin']);
+    }
+    $display .= COM_showMessage (COM_applyFilter ($_GET['msg'], true), $plugin);
 }
 
 
@@ -124,7 +128,7 @@
 COM_featuredCheck();
 
 // Retrieve the archive topic - currently only one supported
-$archivetid = DB_getItem ($_TABLES['topics'], 'tid', "archive_flag='1'");
+$archivetid = DB_getItem ($_TABLES['topics'], 'tid', "archive_flag=1");
 
 // Scan for any stories that have expired and should be archived or deleted
 $asql = "SELECT sid,tid,title,expire,statuscode FROM {$_TABLES['stories']} ";
@@ -142,7 +146,7 @@
             DB_query ("UPDATE {$_TABLES['stories']} SET tid = '$archivetid', frontpage = '0', featured = '0' WHERE sid='{$sid}'");
         }
     } else if ($statuscode == STORY_DELETE_ON_EXPIRE) {
-        COM_errorLOG("Delete Story and comments: $sid, Topic: $expiretopic, Title: $titler, Expired: $expire");
+        COM_errorLOG("Delete Story and comments: $sid, Topic: $expiretopic, Title: $title, Expired: $expire");
         STORY_deleteImages ($sid);
         DB_query("DELETE FROM {$_TABLES['comments']} WHERE sid='{$sid}' AND type = 'article'");
         DB_query("DELETE FROM {$_TABLES['stories']} WHERE sid='{$sid}'");
@@ -151,14 +155,19 @@
 
 $sql = " (date <= NOW()) AND (draft_flag = 0)";
 
+if (empty ($topic)) {
+    $sql .= COM_getLangSQL ('tid', 'AND', 's');
+}
+
 // if a topic was provided only select those stories.
 if (!empty($topic)) {
     $sql .= " AND s.tid = '$topic' ";
 } elseif (!$newstories) {
     $sql .= " AND frontpage = 1 ";
 }
-if ($topic != $_CONF['archivetopic']) {
-    $sql .= " AND s.tid != '{$_CONF['archivetopic']}' ";
+
+if ($topic != $archivetid) {
+    $sql .= " AND s.tid != '{$archivetid}' ";
 }
 
 $sql .= COM_getPermSQL ('AND', 0, 2, 's');
@@ -178,16 +187,33 @@
 }
 
 $offset = ($page - 1) * $limit;
-$sql .= "ORDER BY featured DESC, date DESC";
+$userfields = 'u.username, u.fullname';
+if ($_CONF['allow_user_photo'] == 1) {
+    $userfields .= ', u.photo';
+    if ($_CONF['use_gravatar']) {
+        $userfields .= ', u.email';
+    }
+}
+
+$msql = array();
+$msql['mysql']="SELECT STRAIGHT_JOIN s.*, UNIX_TIMESTAMP(s.date) AS day, "
+         . $userfields . ", t.topic, t.imageurl "
+         . "FROM {$_TABLES['stories']} AS s, {$_TABLES['users']} AS u, "
+         . "{$_TABLES['topics']} AS t WHERE (s.uid = u.uid) AND (s.tid = t.tid) AND"
+         . $sql . "ORDER BY featured DESC, date DESC LIMIT $offset, $limit";
+
+$msql['mssql']="SELECT STRAIGHT_JOIN s.sid, s.uid, s.draft_flag, s.tid, s.date, s.title, cast(s.introtext as text) as introtext, cast(s.bodytext as text) as bodytext, s.hits, s.numemails, s.comments, s.trackbacks, s.related, s.featured, s.show_topic_icon, s.commentcode, s.trackbackcode, s.statuscode, s.expire, s.postmode, s.frontpage, s.in_transit, s.owner_id, s.group_id, s.perm_owner, s.perm_group, s.perm_members, s.perm_anon, s.advanced_editor_mode, "
+         . " UNIX_TIMESTAMP(s.date) AS day, "
+         . $userfields . ", t.topic, t.imageurl "
+         . "FROM {$_TABLES['stories']} AS s, {$_TABLES['users']} AS u, "
+         . "{$_TABLES['topics']} AS t WHERE (s.uid = u.uid) AND (s.tid = t.tid) AND"
+         . $sql . "ORDER BY featured DESC, date DESC LIMIT $offset, $limit";
+         
+$result = DB_query ($msql);
 
-$result = DB_query ("SELECT STRAIGHT_JOIN s.*, UNIX_TIMESTAMP(s.date) as day, "
-         . "u.username, u.fullname, u.photo, t.topic, t.imageurl "
-         . "FROM {$_TABLES['stories']} as s, {$_TABLES['users']} as u, "
-	 . "{$_TABLES['topics']} as t WHERE (s.uid = u.uid) AND (s.tid = t.tid) AND"
-         . $sql . " LIMIT $offset, $limit");
 $nrows = DB_numRows ($result);
 
-$data = DB_query ("SELECT COUNT(*) AS count FROM {$_TABLES['stories']} as s WHERE" . $sql);
+$data = DB_query ("SELECT COUNT(*) AS count FROM {$_TABLES['stories']} AS s WHERE" . $sql);
 $D = DB_fetchArray ($data);
 $num_pages = ceil ($D['count'] / $limit);
 
@@ -205,8 +231,8 @@
         $display .= PLG_showCenterblock (2, $page, $topic);
     }
 
-    // get reamaining stories
-    while ( $A = DB_fetchArray($result) ) {
+    // get remaining stories
+    while ($A = DB_fetchArray ($result)) {
         $display .= STORY_renderArticle ($A, 'y');
     }
 
@@ -214,23 +240,30 @@
     $display .= PLG_showCenterblock (3, $page, $topic); // bottom blocks
 
     // Print Google-like paging navigation
-    if (empty($topic)) {
-        $base_url = $_CONF['site_url'] . '/index.php';
-        if ($newstories) {
-            $base_url .= '?display=new';
+    if (!isset ($_CONF['hide_main_page_navigation']) ||
+            ($_CONF['hide_main_page_navigation'] == 0)) {
+        if (empty ($topic)) {
+            $base_url = $_CONF['site_url'] . '/index.php';
+            if ($newstories) {
+                $base_url .= '?display=new';
+            }
+        } else {
+            $base_url = $_CONF['site_url'] . '/index.php?topic=' . $topic;
         }
-    } else {
-        $base_url = $_CONF['site_url'] . '/index.php?topic=' . $topic;
+        $display .= COM_printPageNavigation ($base_url, $page, $num_pages);
     }
-    $display .= COM_printPageNavigation($base_url,$page, $num_pages);
 } else { // no stories to display
-    $display .= COM_startBlock ($LANG05[1], '',
+    if (!isset ($_CONF['hide_no_news_msg']) ||
+            ($_CONF['hide_no_news_msg'] == 0)) {
+        $display .= COM_startBlock ($LANG05[1], '',
                     COM_getBlockTemplate ('_msg_block', 'header')) . $LANG05[2];
-    if (!empty($topic)) {
-        $topicname = DB_getItem ($_TABLES['topics'], 'topic', "tid='{$topic}'");
-        $display .= sprintf ($LANG05[3], $topicname);
+        if (!empty ($topic)) {
+            $topicname = DB_getItem ($_TABLES['topics'], 'topic',
+                                     "tid = '$topic'");
+            $display .= sprintf ($LANG05[3], $topicname);
+        }
+        $display .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
     }
-    $display .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
 
     $display .= PLG_showCenterblock (3, $page, $topic); // bottom blocks
 }
diff -ruN 1.4.0sr5-1.src/javascript/advanced_editor.js 1.4.1.src/javascript/advanced_editor.js
--- 1.4.0sr5-1.src/javascript/advanced_editor.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/javascript/advanced_editor.js	2006-06-17 15:31:24.000000000 -0500
@@ -1,6 +1,6 @@
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2003,2004,2005 by the following authors:                    |
-// | Version 1.0    Date: Jun 4, 2005                                          |
+// | Copyright (C) 2003,2004,2005,2006 by the following authors:               |
+// | Version 1.1    Date: Jun 4, 2006                                          |
 // | Authors:   Blaine Lang - blaine@portalparts.com                           |
 // |                                                                           |
 // | Javascript functions for Geeklog Advanced Editor                          |
@@ -24,25 +24,47 @@
         f.elements["expire_ampm"].disabled=!disable;
     }
 
-    function showhideEditorDiv(option) {
+    function showhideEditorDiv(option,selindex) {
         var obj = document.getElementById('adveditor');
-        var divarray1 = new Array('text_editor','html_editor');
-        var divarray = new Array('publish','images','archive','perms');
+        var divarray = new Array('publish','images','archive','perms','options','bottom');
 
-        if (option != 'preview') {
-            for (i=0; i < divarray.length; i++) {
-                div = 'se_' + divarray[i];
-                if (option != 'all' && option != divarray[i]) {
-                    document.getElementById(div).style.display = 'none';
-                } else {
-                    document.getElementById(div).style.display = '';
-                }
+        // Reset the current selected navbar tab
+        var navbar = document.getElementById('current');
+        if (navbar) navbar.id = '';
+        // Cycle thru the navlist child elements - buiding an array of just the link items 
+        var navbar = document.getElementById('navlist');
+        var menuitems = new Array(8);
+        var item = 0;
+        for (var i=0 ;i < navbar.childNodes.length ; i++ ) {
+            if (navbar.childNodes[i].nodeName.toLowerCase() == 'li') {
+                menuitems[item] = navbar.childNodes[i];
+                item++;
             }
         }
+        // Now that I have just the link items I can set the selected tab using the passed selected Item number
+        // Set the <a tag to have an id called 'current'
+        var menuitem = menuitems[selindex];
+        for (var j=0 ;j < menuitem.childNodes.length ; j++ ) {
+            if (menuitem.childNodes[j].nodeName.toLowerCase() == 'a')  menuitem.childNodes[j].id = 'current';
+        }
+
+        // Reset or show all the main divs - editor tab sections
+        for (i=0; i < divarray.length; i++) {
+            div = 'se_' + divarray[i];
+            if (option != 'all' && option != divarray[i]) {
+                document.getElementById(div).style.display = 'none';
+            } else {
+                document.getElementById(div).style.display = '';
+            }
+        }
+        document.getElementById('text_editor').style.display = 'none';
+        document.getElementById('html_editor').style.display = 'none';
+        document.getElementById('preview').style.display = 'none';
 
         if (option == 'editor' || option == 'all') {
             document.getElementById('editor_mode').style.display = '';
-            if (document.getElementById('sel_editmode').value == 'html') {
+            document.getElementById('se_bottom').style.display = '';
+            if (document.getElementById('sel_editmode').value == 'adveditor') {
                 document.getElementById('text_editor').style.display = 'none';
                 document.getElementById('html_editor').style.display = '';
             } else {
@@ -51,24 +73,35 @@
             }
             if (option == 'all') {
                 document.getElementById('se_options').style.display = '';
-            } else {
-                document.getElementById('se_options').style.display = 'none';
-            }
-
-        } else if (option == 'preview') {
-            if (document.getElementById('preview').style.display == 'none') {
                 document.getElementById('preview').style.display = '';
-            } else {
-                document.getElementById('preview').style.display = 'none';
             }
 
+        } else if (option == 'preview') {
+            document.getElementById('preview').style.display = '';
+            document.getElementById('editor_mode').style.display = 'none';
         } else {
             document.getElementById('se_options').style.display = '';
+            document.getElementById('se_bottom').style.display = '';
             document.getElementById('text_editor').style.display = 'none';
             document.getElementById('html_editor').style.display = 'none';
             document.getElementById('editor_mode').style.display = 'none';
+            document.getElementById('preview').style.display = 'none';
         }
-        document.getElementById('navcontainer').scrollIntoView(true);
 
     }
- 
\ No newline at end of file
+
+    /* Enable if you want to have toolbar only auto-collapse when not editing in field */
+    /*
+    function FCKeditor_OnComplete( editorInstance )  {
+        editorInstance.Events.AttachEvent( 'OnBlur'    , FCKeditor_OnBlur ) ;
+        editorInstance.Events.AttachEvent( 'OnFocus', FCKeditor_OnFocus ) ;
+    }
+
+    function FCKeditor_OnBlur( editorInstance ) {
+        editorInstance.ToolbarSet.Collapse() ;
+    }
+
+    function FCKeditor_OnFocus( editorInstance ) {
+        editorInstance.ToolbarSet.Expand() ;
+    }
+    */
diff -ruN 1.4.0sr5-1.src/javascript/common.js 1.4.1.src/javascript/common.js
--- 1.4.0sr5-1.src/javascript/common.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/javascript/common.js	2006-08-19 22:38:38.000000000 -0500
@@ -0,0 +1,47 @@
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Geeklog 1.3                                                               |
+// +---------------------------------------------------------------------------+
+// | Commmon javascript functions                                              |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2005,2006 by the following authors:                         |
+// |                                                                           |
+// |            Blaine Lang - blaine@portalparts.com                           |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is free software; you can redistribute it and/or             |
+// | modify it under the terms of the GNU General Public License               |
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
+// | GNU General Public License for more details.                              |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+
+// -------------------------------------------------------------------
+// caItems(form object)
+// Check All Items - generic function that can be used to check and un-check all items in a list
+// Used in the Admin Lists - like on the moderation page
+// -------------------------------------------------------------------
+   function caItems(f) {  
+       var n=f.elements.length;
+       for (i=0;i<n; i++) {
+           var field=f.elements[i];
+           if (field.type == 'checkbox' && field.name.match("delitem")) {
+                if (f.chk_selectall.checked) {
+                    field.checked=true;
+                } else {
+                    field.checked=false;
+                }
+           }
+
+       }
+   }
diff -ruN 1.4.0sr5-1.src/javascript/profile_editor.js 1.4.1.src/javascript/profile_editor.js
--- 1.4.0sr5-1.src/javascript/profile_editor.js	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/javascript/profile_editor.js	2006-07-27 23:09:12.000000000 -0500
@@ -0,0 +1,56 @@
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2003,2004,2005,2006 by the following authors:               |
+// | Version 1.0    Date: Jun 24, 2006                                         |
+// | Authors:   Blaine Lang - blaine@portalparts.com                           |
+// |                                                                           |
+// | Javascript functions for Account Profile Editor                           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+
+    function showhideProfileEditorDiv(option,selindex) {
+        var obj = document.getElementById('adveditor');
+        var divarray = new Array('preview','namepass','userinfo','layout','content','privacy'); 
+
+        // Reset the current selected navbar tab
+        var navbar = document.getElementById('current');
+        if (navbar) navbar.id = '';
+        // Cycle thru the navlist child elements - buiding an array of just the link items 
+        var navbar = document.getElementById('navlist');
+        var menuitems = new Array(7);
+        var item = 0;
+        for (var i=0 ;i < navbar.childNodes.length ; i++ ) {
+            if (navbar.childNodes[i].nodeName.toLowerCase() == 'li') {
+                menuitems[item] = navbar.childNodes[i];
+                item++;
+            }
+        }
+        // Now that I have just the link items I can set the selected tab using the passed selected Item number
+        // Set the <a tag to have an id called 'current'
+        var menuitem = menuitems[selindex];
+        for (var j=0 ;j < menuitem.childNodes.length ; j++ ) {
+            if (menuitem.childNodes[j].nodeName.toLowerCase() == 'a')  menuitem.childNodes[j].id = 'current';
+        }
+
+        // Reset or show all the main divs - editor tab sections
+        for (i=0; i < divarray.length; i++) {
+            var div = 'pe_' + divarray[i];
+            if (option != divarray[i]) {
+                document.getElementById(div).style.display = 'none';
+            } else {
+                document.getElementById(div).style.display = '';
+            }
+        }
+
+        document.getElementById('pe_preview').style.display = 'none';
+
+        if (option != 'preview') {
+            document.getElementById('save_button').style.display = '';
+        } else if (option == 'preview') {
+            document.getElementById('pe_preview').style.display = '';
+            document.getElementById('save_button').style.display = 'none';
+        } else {
+            document.getElementById('pe_preview').style.display = '';
+            document.getElementById('save_button').style.display = 'none';
+        }
+
+    }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/javascript/staticpages_fckeditor.js 1.4.1.src/javascript/staticpages_fckeditor.js
--- 1.4.0sr5-1.src/javascript/staticpages_fckeditor.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/javascript/staticpages_fckeditor.js	2006-07-16 23:11:21.000000000 -0500
@@ -3,7 +3,7 @@
 // | Version 1.0    Date: Jun 4, 2005                                          |
 // | Authors:   Blaine Lang - blaine@portalparts.com                           |
 // |                                                                           |
-// | Javascript functions for FCKEditor Integration into Geeklog                |
+// | Javascript functions for FCKEditor Integration into Geeklog               |
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 
@@ -11,29 +11,48 @@
     window.onload = function() {
         var oFCKeditor1 = new FCKeditor( 'sp_content' ) ;
         oFCKeditor1.BasePath = geeklogEditorBasePath;
-        oFCKeditor1.ToolbarSet = 'editor-toolbar3' ;
+        oFCKeditor1.Config['CustomConfigurationsPath'] = geeklogEditorBaseUrl + '/fckeditor/myconfig.js';
+        oFCKeditor1.ToolbarSet = 'editor-toolbar2' ;
         oFCKeditor1.Height = 200 ;
+        oFCKeditor1.AutoGrowMax = 1200        
         oFCKeditor1.ReplaceTextarea() ;
     }
 
-    function changeHTMLAreaSize(option) {
-        var size = 0;
-        var size = document.getElementById('sp_content___Frame').height;
-        if (option == 'larger') {
-            document.getElementById('sp_content___Frame').height = +(size) + 50;
-
-        } else if (option == 'smaller') {
-            document.getElementById('sp_content___Frame').height = +(size) - 50;
+   function changeToolbar(toolbar) {
+        var oEditor1 = FCKeditorAPI.GetInstance('sp_content');       
+        oEditor1.ToolbarSet.Load( toolbar ) ;
+   }
+   
+    function change_editmode(obj) {
+        if (obj.value == 'adveditor') {
+            document.getElementById('advanced_editarea').style.display='';
+            document.getElementById('sel_toolbar').style.display='';             
+            document.getElementById('html_editarea').style.display='none';
+            swapEditorContent('advanced');
+        } else {
+            document.getElementById('advanced_editarea').style.display='none';
+            document.getElementById('sel_toolbar').style.display='none';             
+            document.getElementById('html_editarea').style.display='';
+            swapEditorContent('html');
         }
-    }
+    } 
 
-   function changeToolbar(toolbar) {
-        var basePath= geeklogEditorBasePath ;
-        var instanceName='sp_content';
-        editor_frame = document.getElementById(instanceName+'___Frame');
-        //alert(editor_frame.src);
-        if (editor_frame!=null) {
-            editor_frame.src=basePath+'editor/fckeditor.html?InstanceName='+instanceName+'&Toolbar='+toolbar;
-            //editor_frame.src='http://localhost/geekcvs/fckeditor/editor/fckeditor.html?InstanceName=sp_content&Toolbar=editor-toolbar1';
+    function swapEditorContent(curmode) {
+        var content = '';
+        var oEditor = FCKeditorAPI.GetInstance('sp_content');
+        if (curmode == 'advanced') {
+            content = document.getElementById('html_content').value;
+            oEditor.SetHTML(content);
+        } else {
+            content = oEditor.GetXHTML( true );
+            document.getElementById('html_content').value = content;         
+       }
+    }
+    
+    function set_postcontent() { 
+        if (document.getElementById('sel_editmode').value == 'adveditor') {
+            var oEditor = FCKeditorAPI.GetInstance('sp_content');        
+            content = oEditor.GetXHTML( true );        
+            document.getElementById('html_content').value = content;
         }
-   }
\ No newline at end of file
+    }          
diff -ruN 1.4.0sr5-1.src/javascript/storyeditor_fckeditor.js 1.4.1.src/javascript/storyeditor_fckeditor.js
--- 1.4.0sr5-1.src/javascript/storyeditor_fckeditor.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/javascript/storyeditor_fckeditor.js	2006-06-17 15:31:24.000000000 -0500
@@ -1,38 +1,44 @@
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2003,2004 by the following authors:                         |
-// | Version 1.0    Date: Jun 4, 2005                                          |
+// | Copyright (C) 2003,2004,2005,2006 by the following authors:               |
+// | Version 1.1    Date: Jun 4, 2006                                          |
 // | Authors:   Blaine Lang - blaine@portalparts.com                           |
 // |                                                                           |
-// | Javascript functions for FCKEditor Integration into Geeklog                |
+// | Javascript functions for FCKEditor Integration into Geeklog               |
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 
     window.onload = function() {
         var oFCKeditor1 = new FCKeditor( 'introhtml' ) ;
         oFCKeditor1.BasePath = geeklogEditorBasePath;
-        oFCKeditor1.ToolbarSet = 'editor-toolbar1' ;
+        oFCKeditor1.Config['CustomConfigurationsPath'] = geeklogEditorBaseUrl + '/fckeditor/myconfig.js';
+        oFCKeditor1.ToolbarSet = 'editor-toolbar2' ;
         oFCKeditor1.Height = 200 ;
         oFCKeditor1.ReplaceTextarea() ;
 
         var oFCKeditor2 = new FCKeditor( 'bodyhtml' ) ;
         oFCKeditor2.BasePath = geeklogEditorBasePath ;
-        oFCKeditor2.ToolbarSet = 'editor-toolbar1' ;
+        oFCKeditor2.Config['CustomConfigurationsPath'] = geeklogEditorBaseUrl + '/fckeditor/myconfig.js';
+        oFCKeditor2.ToolbarSet = 'editor-toolbar2' ;
         oFCKeditor2.Height = 200 ;
         oFCKeditor2.ReplaceTextarea() ;
-
     }
 
     function change_editmode(obj) {
         if (obj.value == 'html') {
+            document.getElementById('html_editor').style.display='none';
+            document.getElementById('text_editor').style.display='';
+            swapEditorContent('html','introhtml');
+            swapEditorContent('html','bodyhtml');
+        } else if (obj.value == 'adveditor') {
             document.getElementById('text_editor').style.display='none';
             document.getElementById('html_editor').style.display='';
-            swapEditorContent('html','intro');
-            swapEditorContent('html','body');
+            swapEditorContent('adveditor','introhtml');
+            swapEditorContent('adveditor','bodyhtml');
         } else {
-            document.getElementById('text_editor').style.display='';
             document.getElementById('html_editor').style.display='none';
-            swapEditorContent('text','intro');
-            swapEditorContent('text','body');
+            document.getElementById('text_editor').style.display='';
+            swapEditorContent('text','introhtml');
+            swapEditorContent('text','bodyhtml');
         }
     }
 
@@ -59,55 +65,46 @@
 
 
     function getEditorContent(instanceName) {
-        editor_frame = document.getElementById(instanceName+'___Frame');
-        editor_source = editor_frame.contentWindow.document.getElementById('eEditorArea');
-        if (editor_source!=null) {
-            return editor_source.contentWindow.document.body.innerHTML;
-        } else {
-            return '';
-        }
+        // Get the editor instance that we want to interact with.
+        var oEditor = FCKeditorAPI.GetInstance(instanceName) ;
+        // return the editor contents in XHTML.
+        return oEditor.GetXHTML( true );
     }
 
-    function swapEditorContent(curmode,instance) {
+    function swapEditorContent(curmode,instanceName) {
         var content = '';
-        if (instance == 'intro' )  {
-            editor_frame = document.getElementById('introhtml___Frame');
-        } else {
-            editor_frame = document.getElementById('bodyhtml___Frame');
-        }
-        editor_source = editor_frame.contentWindow.document.getElementById('eEditorArea');
-
-        if (curmode == 'html') {
-            if (instance == 'intro' )  {
+        var oEditor = FCKeditorAPI.GetInstance(instanceName) ;
+        //alert(curmode + ':' + instanceName);
+        if (curmode == 'adveditor') { // Switching from Text to HTML mode
+            // Get the content from the textarea 'text' content and copy it to the editor
+            if (instanceName == 'introhtml' )  {
                 content = document.getElementById('introtext').value;
+                //alert('Intro :' + instanceName + '\n' + content);
             } else {
                 content = document.getElementById('bodytext').value;
+                //alert('HTML :' + instanceName + '\n' + content);
             }
-            editor_source.contentWindow.document.body.innerHTML = content;
+            oEditor.SetHTML(content);
         } else {
-            content = editor_source.contentWindow.document.body.innerHTML;
-            if (instance == 'intro' )  {
-                document.getElementById('introtext').value = content;
-            } else {
-                document.getElementById('bodytext').value = content;
-            }
-        }
+               content = getEditorContent(instanceName);
+              if (instanceName == 'introhtml' )  {
+                  document.getElementById('introtext').value = content;
+              } else {
+                  document.getElementById('bodytext').value = content;
+              }
+          }
     }
 
-    function set_postcontent() {
-        if (document.getElementById('sel_editmode').value == 'html') {
+    function set_postcontent() { 
+        if (document.getElementById('sel_editmode').value == 'adveditor') {
             document.getElementById('introtext').value = getEditorContent('introhtml');
             document.getElementById('bodytext').value = getEditorContent('bodyhtml');
         }
     }
 
    function changeToolbar(toolbar) {
-        var basePath= geeklogEditorBasePath ;
-        var instanceName='introhtml';
-        editor_frame = document.getElementById(instanceName+'___Frame');
-        //alert(editor_frame.src);
-        if (editor_frame!=null) {
-            editor_frame.src=basePath+'editor/fckeditor.html?InstanceName='+instanceName+'&Toolbar='+toolbar;
-            //editor_frame.src='http://localhost/geekcvs/fckeditor/editor/fckeditor.html?InstanceName=introhtml&Toolbar=editor-toolbar1';
-        }
+        var oEditor1 = FCKeditorAPI.GetInstance('introhtml');
+        oEditor1.ToolbarSet.Load( toolbar ) ;
+        var oEditor2 = FCKeditorAPI.GetInstance('bodyhtml');
+        oEditor2.ToolbarSet.Load( toolbar ) ;
    }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/javascript/submitcomment_fckeditor.js 1.4.1.src/javascript/submitcomment_fckeditor.js
--- 1.4.0sr5-1.src/javascript/submitcomment_fckeditor.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/javascript/submitcomment_fckeditor.js	2006-06-17 15:31:24.000000000 -0500
@@ -10,11 +10,11 @@
     window.onload = function() {
         var oFCKeditor1 = new FCKeditor( 'comment_html' ) ;
         oFCKeditor1.BasePath = geeklogEditorBasePath;
+        oFCKeditor1.Config['CustomConfigurationsPath'] = geeklogEditorBaseUrl + '/fckeditor/myconfig.js';
         oFCKeditor1.ToolbarSet = 'editor-toolbar1' ;
         oFCKeditor1.Height = 200 ;
         oFCKeditor1.ReplaceTextarea() ;
     }
-
     function change_editmode(obj) {
         if (obj.value == 'html') {
             document.getElementById('text_editor').style.display='none';
@@ -27,33 +27,28 @@
         }
     }
 
-
-    function getEditorContent(instanceName) {
-        editor_frame = document.getElementById(instanceName+'___Frame');
-        editor_source = editor_frame.contentWindow.document.getElementById('eEditorArea');
-        if (editor_source!=null) {
-            return editor_source.contentWindow.document.body.innerHTML;
-        } else {
-            return '';
-        }
+    function getEditorContent() {
+        // Get the editor instance that we want to interact with.
+        var oEditor = FCKeditorAPI.GetInstance('comment_html') ;
+        // return the editor contents in XHTML.
+        return oEditor.GetXHTML( true );
     }
 
     function swapEditorContent(curmode) {
         var content = '';
-        editor_frame = document.getElementById('comment___Frame');
-        editor_source = editor_frame.contentWindow.document.getElementById('eEditorArea');
-
-        if (curmode == 'html') {
+        var oEditor = FCKeditorAPI.GetInstance('comment_html') ;
+        if (curmode == 'html') { // Switching from Text to HTML mode
+            // Get the content from the textarea 'text' content and copy it to the editor
             content = document.getElementById('comment_text').value;
-            editor_source.contentWindow.document.body.innerHTML = content;
+            oEditor.SetHTML(content);
         } else {
-            content = editor_source.contentWindow.document.body.innerHTML;
-            document.getElementById('comment_text').value = content;
-        }
+              content = getEditorContent();
+              document.getElementById('comment_text').value = content;
+          }
     }
 
     function set_postcontent() {
         if (document.getElementById('sel_editmode').value == 'html') {
-            document.getElementById('comment_text').value = getEditorContent('comment_html');
+            document.getElementById('comment_text').value = getEditorContent();
         }
     }
diff -ruN 1.4.0sr5-1.src/javascript/submitstory_fckeditor.js 1.4.1.src/javascript/submitstory_fckeditor.js
--- 1.4.0sr5-1.src/javascript/submitstory_fckeditor.js	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/javascript/submitstory_fckeditor.js	2006-06-17 15:31:24.000000000 -0500
@@ -11,6 +11,7 @@
     window.onload = function() {
         var oFCKeditor1 = new FCKeditor( 'introhtml' ) ;
         oFCKeditor1.BasePath = geeklogEditorBasePath;
+        oFCKeditor1.Config['CustomConfigurationsPath'] = geeklogEditorBaseUrl + '/fckeditor/myconfig.js';
         oFCKeditor1.ToolbarSet = 'editor-toolbar1' ;
         oFCKeditor1.Height = 200 ;
         oFCKeditor1.ReplaceTextarea() ;
@@ -28,65 +29,28 @@
         }
     }
 
-    function changeHTMLTextAreaSize(element, option) {
-        var size = 0;
-        var size = document.getElementById(element + '___Frame').height;
-        if (option == 'larger') {
-            document.getElementById(element + '___Frame').height = +(size) + 50;
-
-        } else if (option == 'smaller') {
-            document.getElementById(element + '___Frame').height = +(size) - 50;
-        }
-    }
-
-    function changeTextAreaSize(element, option) {
-        var size = 0;
-        var size = document.getElementById(element).rows;
-        if (option == 'larger') {
-            document.getElementById(element).rows = +(size) + 3;
-        } else if (option == 'smaller') {
-            document.getElementById(element).rows = +(size) - 3;
-        }
-    }
-
-
-    function getEditorContent(instanceName) {
-        editor_frame = document.getElementById(instanceName+'___Frame');
-        editor_source = editor_frame.contentWindow.document.getElementById('eEditorArea');
-        if (editor_source!=null) {
-            return editor_source.contentWindow.document.body.innerHTML;
-        } else {
-            return '';
-        }
+    function getEditorContent() {
+        // Get the editor instance that we want to interact with.
+        var oEditor = FCKeditorAPI.GetInstance('introhtml') ;
+        // return the editor contents in XHTML.
+        return oEditor.GetXHTML( true );
     }
 
     function swapEditorContent(curmode) {
         var content = '';
-        editor_frame = document.getElementById('introhtml___Frame');
-        editor_source = editor_frame.contentWindow.document.getElementById('eEditorArea');
-
-        if (curmode == 'html') {
+        var oEditor = FCKeditorAPI.GetInstance('introhtml') ;
+        if (curmode == 'html') { // Switching from Text to HTML mode
+            // Get the content from the textarea 'text' content and copy it to the editor
             content = document.getElementById('introtext').value;
-            editor_source.contentWindow.document.body.innerHTML = content;
+            oEditor.SetHTML(content);
         } else {
-            content = editor_source.contentWindow.document.body.innerHTML;
-            document.getElementById('introtext').value = content;
-        }
+              content = getEditorContent();
+              document.getElementById('introtext').value = content;
+          }
     }
 
     function set_postcontent() {
         if (document.getElementById('sel_editmode').value == 'html') {
-            document.getElementById('introtext').value = getEditorContent('introhtml');
+            document.getElementById('introtext').value = getEditorContent();
         }
     }
-
-   function changeToolbar(toolbar) {
-        var basePath= "{site_url}/fckeditor/" ;
-        var instanceName='introhtml';
-        editor_frame = document.getElementById(instanceName+'___Frame');
-        //alert(editor_frame.src);
-        if (editor_frame!=null) {
-            //editor_frame.src=basePath+'editor/fckeditor.html?InstanceName='+instanceName+'&Toolbar='+toolbar;
-            editor_frame.src='http://localhost/geekcvs/fckeditor/editor/fckeditor.html?InstanceName=introhtml&Toolbar=editor-toolbar1';
-        }
-   }
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/block/blockeditor.thtml 1.4.1.src/layout/professional/admin/block/blockeditor.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/block/blockeditor.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/block/blockeditor.thtml	2006-09-15 22:09:46.000000000 -0500
@@ -1,55 +1,55 @@
                                 {start_block_editor}
                                 <form action="{site_admin_url}/block.php" method="post">
-		                            <table border="0" cellspacing="0" cellpadding="3" width="100%">
-		                                <tr>
-		                                    <td align="right">{lang_blocktitle}:</td>
-		                                    <td><input type="text" size="48" name="title" value="{block_title}"></td>
-		                                </tr>
-		                                <tr>
-                                            <td align="right">{lang_enabled}:</td>
+                                    <table border="0" cellspacing="0" cellpadding="3" width="100%">
+                                        <tr>
+                                            <td width="180" class="alignright">{lang_blocktitle}:</td>
+                                            <td><input type="text" size="48" name="title" value="{block_title}"></td>
+                                        </tr>
+                                        <tr>
+                                            <td class="alignright">{lang_enabled}:</td>
                                             <td><input type="checkbox" name="is_enabled" {is_enabled}></td>
                                         </tr>
                                         <tr>
-                                            <td align="right" valign="top">{lang_blockhelpurl}:</td>
-                                            <td><input type="text" name="help" value="{block_help}" size="48"> {lang_includehttp}<br>{lang_explanation}</td>
+                                            <td class="alignright" style="vertical-align:top">{lang_blockhelpurl}:</td>
+                                            <td><input type="text" name="help" value="{block_help}" size="48" maxlength="{max_url_length}"><div class="pluginMediumText">{lang_includehttp}&nbsp;{lang_explanation}</div></td>
+                                        </tr>
+                                        <tr>
+                                            <td class="alignright" style="vertical-align:top">{lang_blockname}:</td>
+                                            <td><input type="text" size="48" name="name" value="{block_name}"><br>{lang_nospaces}</td>
                                         </tr>
-		                                <tr>
-		                                    <td align="right" valign="top">{lang_blockname}:</td>
-		                                    <td><input type="text" size="48" name="name" value="{block_name}"><br>{lang_nospaces}</td>
-		                                </tr>
-		                                <tr>
-		                                    <td align="right">{lang_topic}:</td>
-		                                    <td>
+                                        <tr>
+                                            <td class="alignright">{lang_topic}:</td>
+                                            <td>
                                                 <select name="tid">
-		                                            <option value="all" {all_selected}>{lang_all}</option>
-		                                            <option value="homeonly" {homeonly_selected}>{lang_homeonly}</option>
+                                                    <option value="all" {all_selected}>{lang_all}</option>
+                                                    <option value="homeonly" {homeonly_selected}>{lang_homeonly}</option>
                                                     {topic_options}
-		                                        </select>
+                                                </select>
                                             </td>
-		                                </tr>
-		                                <tr>
-		                                    <td align="right">{lang_side}:</td>
-		                                    <td>
+                                        </tr>
+                                        <tr>
+                                            <td class="alignright">{lang_side}:</td>
+                                            <td>
                                                 <select name="onleft">
-		                                            <option value="1" {left_selected}>{lang_left}</option>
+                                                    <option value="1" {left_selected}>{lang_left}</option>
                                                     <option value="0" {right_selected}>{lang_right}</option>
-		                                        </select>
+                                                </select>
                                            </td>
                                         </tr>
                                         <tr>
-                                            <td align="right">{lang_blockorder}:</td>
+                                            <td class="alignright">{lang_blockorder}:</td>
                                             <td><input type="text" size="4" name="blockorder" value="{block_order}"> 0 - 9999</td>
-		                                </tr>
+                                        </tr>
                                         <tr>
-                                            <td align="right">{lang_blocktype}:</td>
-		                                    <td>
+                                            <td class="alignright">{lang_blocktype}:</td>
+                                            <td>
                                                 <select name="type">
-		                                            <option value="normal" {normal_selected}>{lang_normalblock}</option>
-		                                            <option value="phpblock" {php_selected}>{lang_phpblock}</option>
+                                                    <option value="normal" {normal_selected}>{lang_normalblock}</option>
+                                                    <option value="phpblock" {php_selected}>{lang_phpblock}</option>
                                                     <option value="portal" {portal_selected}>{lang_portalblock}</option>
-		                                        </select>
+                                                </select>
                                             </td>
-		                                </tr>
+                                        </tr>
                                         <tr>
                                             <td colspan="2"><hr></td>
                                         </tr>
@@ -57,8 +57,8 @@
                                             <td colspan="2"><b>{lang_phpblockoptions}</b></td>
                                         </tr>
                                         <tr>
-                                            <td align="right">{lang_blockfunction}:</td>
-                                            <td><input type="text" size="50" maxlength="50" name="phpblockfn" value="{block_phpblockfn}"></td>
+                                            <td class="alignright">{lang_blockfunction}:</td>
+                                            <td><input type="text" size="50" maxlength="64" name="phpblockfn" value="{block_phpblockfn}"></td>
                                         </tr>
                                         <tr>
                                             <td colspan="2">{lang_phpblockwarning}</td>
@@ -68,15 +68,15 @@
                                             <td colspan="2"><b>{lang_portalblockoptions}</b></td>
                                         </tr>
                                         <tr>
-                                            <td align="right">{lang_rdfurl}:</td>
+                                            <td class="alignright">{lang_rdfurl}:</td>
                                             <td><input type="text" size="50" maxlength="{max_url_length}" name="rdfurl" value="{block_rdfurl}"></td>
                                         </tr>
                                         <tr>
-                                            <td align="right">{lang_rdflimit}:</td>
+                                            <td class="alignright">{lang_rdflimit}:</td>
                                             <td><input type="text" size="3" maxlength="3" name="rdflimit" value="{block_rdflimit}"></td>
                                         </tr>
                                         <tr>
-                                            <td align="right">{lang_lastrdfupdate}:</td>
+                                            <td class="alignright">{lang_lastrdfupdate}:</td>
                                             <td><input type="text" size="19" name="rdfupdated" value="{block_rdfupdated}"></td>
                                         </tr>
                                         <tr><td colspan="2"><hr></td></tr>
@@ -84,25 +84,30 @@
                                             <td colspan="2"><b>{lang_normalblockoptions}</b></td>
                                         </tr>
                                         <tr>
-                                            <td align="right" valign="top">{lang_blockcontent}:</td>
-                                            <td><textarea name="content" cols="50" rows="12">{block_content}</textarea></td>
+                                            <td class="alignright" style="vertical-align:top">{lang_blockcontent}:</td>
+                                            <td><textarea name="content" rows="12" style="width:100%;">{block_content}</textarea><br>
+                                                <span class="warningsmall">{lang_allowed_html}</span></td>
+                                        </tr>
+                                        <tr>
+                                            <td class="alignright">{lang_autotags}:</td>
+                                            <td><input type="checkbox" name="allow_autotags" {allow_autotags}> ({lang_use_autotags})</td>
                                         </tr>
-		                                <tr>
+                                        <tr>
                                             <td colspan="2"><hr></td>
                                         </tr>
                                         <tr>
                                             <td colspan="2"><b>{lang_accessrights}</b></td>
                                         </tr>
                                         <tr>
-                                            <td align="right">{lang_owner}:</td>
-                                            <td>{owner_username} <input type="hidden" name="owner_id" value="{owner_id}">
+                                            <td class="alignright">{lang_owner}:</td>
+                                            <td>{owner_name} <input type="hidden" name="owner_id" value="{owner_id}">
                                             </td>
-		                                </tr>
+                                        </tr>
                                         <tr>
-                                            <td align="right">{lang_group}:</td>
+                                            <td class="alignright">{lang_group}:</td>
                                             <td>
                                                 {group_dropdown}
-	                                        </td>
+                                            </td>
                                         </tr>
                                         <tr>
                                             <td colspan="2"><b>{lang_permissions}:</b></td>
@@ -116,15 +121,15 @@
                                         <tr>
                                             <td colspan="2">{lang_permissions_msg}<td>
                                         </tr>
-		                                <tr><td>&nbsp;</td></tr>
-		                                <tr>
-		                                    <td colspan="2">
+                                        <tr><td>&nbsp;</td></tr>
+                                        <tr>
+                                            <td colspan="2">
                                             <input type="submit" value="{lang_save}" name="mode">
-		                                        <input type="submit" value="{lang_cancel}" name="mode">
+                                                <input type="submit" value="{lang_cancel}" name="mode">
                                             {delete_option}
                                             <input type="hidden" name="bid" value="{block_bid}">
                                         </td>
-		                                </tr>
+                                        </tr>
                                     </table>
                                 </form>
                                 {end_block}
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/block/defaultblockeditor.thtml 1.4.1.src/layout/professional/admin/block/defaultblockeditor.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/block/defaultblockeditor.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/block/defaultblockeditor.thtml	2006-09-15 22:09:46.000000000 -0500
@@ -1,23 +1,23 @@
                             <form action="{site_admin_url}/block.php" method="post">
                                 <table border="0" cellspacing="0" cellpadding="3" width="100%">
                                     <tr>
-                                        <td align="right">{lang_blocktitle}:</td>
+                                        <td class="alignright">{lang_blocktitle}:</td>
                                         <td><input type="text" name="title" value="{block_title}" size="48"></td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_enabled}:</td>
+                                        <td class="alignright">{lang_enabled}:</td>
                                         <td><input type="checkbox" name="is_enabled" {is_enabled}></td>
                                     </tr>
                                     <tr>
-                                        <td align="right" valign="top">{lang_blockhelpurl}:</td>
-                                        <td><input type="text" name="help" value="{block_help}" size="48"> {lang_includehttp}<br>{lang_explanation}</td>
+                                        <td class="alignright" style="vertical-align:top;">{lang_blockhelpurl}:</td>
+                                        <td><input type="text" name="help" value="{block_help}" size="48" maxlength="{max_url_length}"> {lang_includehttp}<br>{lang_explanation}</td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_blockname}:</td>
+                                        <td class="alignright">{lang_blockname}:</td>
                                         <td>{block_name}<input type="hidden" name="name" value="{block_name}"></td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_topic}:</td>
+                                        <td class="alignright">{lang_topic}:</td>
                                         <td>
                                             <select name="tid">
                                                 <option value="all" {all_selected}>{lang_all}</option>
@@ -27,7 +27,7 @@
                                         </td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_side}:</td>
+                                        <td class="alignright">{lang_side}:</td>
                                         <td>
                                             <select name="onleft">
                                                 <option value="1" {left_selected}>{lang_left}</option>
@@ -36,11 +36,11 @@
                                         </td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_blockorder}:</td>
+                                        <td class="alignright">{lang_blockorder}:</td>
                                         <td><input type="text" size="4" name="blockorder" value="{block_order}"> 0 - 9999</td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_blocktype}:</td>
+                                        <td class="alignright">{lang_blocktype}:</td>
                                         <td>gldefault<input type="hidden" name="type" value="gldefault"></td>
                                     </tr>
                                     <tr>
@@ -50,12 +50,12 @@
                                         <td colspan="2"><b>{lang_accessrights}</b></td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_owner}:</td>
-                                        <td>{owner_username}<input type="hidden" name="owner_id" value="{owner_id}"></td>
+                                        <td class="alignright">{lang_owner}:</td>
+                                        <td>{owner_name}<input type="hidden" name="owner_id" value="{owner_id}"></td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_group}:</td>
-                                        <td>{group_name}<input type="hidden" name="group_id" value="{group_id}"></td>
+                                        <td class="alignright">{lang_group}:</td>
+                                        <td>{group_dropdown}</td>
                                     </tr>
                                     <tr>
                                         <td colspan="2"><b>{lang_permissions}</b>:</td>
@@ -76,7 +76,7 @@
                                     </tr>
                                     <tr><td>&nbsp;</td></tr>
                                     <tr>
-		                                    <td colspan="2">
+                                            <td colspan="2">
                                             <input type="submit" value="{lang_save}" name="mode">
                                             <input type="submit" value="{lang_cancel}" name="mode"> 
                                             <input type="hidden" name="bid" value="{block_id}">
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/common/edit_permissions.thtml 1.4.1.src/layout/professional/admin/common/edit_permissions.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/common/edit_permissions.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/layout/professional/admin/common/edit_permissions.thtml	2006-04-27 06:40:23.000000000 -0500
@@ -0,0 +1,16 @@
+<table cellpadding="0" cellspacing="0" border="0">
+    <tr>
+        <td colspan="2" class="edit-perm-up"><b>{owner}</b></td>
+        <td colspan="2" class="edit-perm-up"><b>{group}</b></td>
+        <td class="edit-perm-up"><b>{members}</b></td>
+        <td class="edit-perm-up"><b>{anonymous}</b></td>
+    </tr>
+    <tr>
+        <td class="edit-perm-down"><b>R</b><br><input type="checkbox" name="perm_owner[]" value="2"{owner_r_checked}></td>
+        <td class="edit-perm-down"><b>E</b><br><input type="checkbox" name="perm_owner[]" value="1"{owner_e_checked}></td>
+        <td class="edit-perm-down"><b>R</b><br><input type="checkbox" name="perm_group[]" value="2"{group_r_checked}></td>
+        <td class="edit-perm-down"><b>E</b><br><input type="checkbox" name="perm_group[]" value="1"{group_e_checked}></td>
+        <td class="edit-perm-down"><b>R</b><br><input type="checkbox" name="perm_members[]" value="2"{members_checked}></td>
+        <td class="edit-perm-down"><b>R</b><br><input type="checkbox" name="perm_anon[]" value="2"{anon_checked}></td>
+    </tr>
+</table>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/event/eventeditor.thtml 1.4.1.src/layout/professional/admin/event/eventeditor.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/event/eventeditor.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/event/eventeditor.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,176 +0,0 @@
-                            <form action="{site_admin_url}/event.php" name="events" method="post">
-                                <table border="0" cellspacing="0" cellpadding="3">
-                                    <tr>
-                                        <td align="right"><b>{lang_eventtitle}:</b></td>
-                                        <td>
-                                            <input type="text" size="48" maxlength="96" name="title" value="{event_title}">
-                                        </td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_eventtype}:</b></td>
-                                        <td>
-                                            <select name="event_type">
-                                                <option value="">--</option>
-                                                {type_options}
-                                            </select>
-                                        </td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right" valign="top"><b>{lang_eventstartdate}:</b></td>
-                                        <td>
-                                            <select name="start_month">
-                                                {startmonth_options}
-                                            </select>
-                                            /
-                                            <select name="start_day">
-                                                {startday_options}
-                                            </select>
-                                            /
-                                            <select name="start_year">
-                                                {startyear_options}
-                                            </select>&nbsp;&nbsp;
-                                            <b>{lang_starttime}: </b>
-                                            <select name="start_hour">
-                                                {starthour_options}
-                                            </select>
-                                            :
-                                            <select name="start_minute">
-                                                <option value="00" {startminuteoption1_selected}>00</option>
-                                                <option value="15" {startminuteoption2_selected}>15</option>
-                                                <option value="30" {startminuteoption3_selected}>30</option>
-                                                <option value="45" {startminuteoption4_selected}>45</option>
-                                            </select>
-                                            <select name="start_ampm">
-                                                <option value="am" {startam_selected}>am</option>
-                                                <option value="pm" {startpm_selected}>pm</option>
-                                            </select>
-                                        </td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right" valign="top"><b>{lang_eventenddate}:</b></td>
-                                        <td>
-                                            <select name="end_month">
-                                                {endmonth_options}
-                                            </select>
-                                            /
-                                            <select name="end_day">
-                                                {endday_options}
-                                            </select>
-                                            /
-                                            <select name="end_year">
-                                                {endyear_options}
-                                            </select>&nbsp;&nbsp;
-                                            <b>{lang_endtime}: </b>
-                                            <select name="end_hour">
-                                                {endhour_options}
-                                            </select>
-                                            :
-                                            <select name="end_minute">
-                                                <option value="00" {endminuteoption1_selected}>00</option>
-                                                <option value="15" {endminuteoption2_selected}>15</option>
-                                                <option value="30" {endminuteoption3_selected}>30</option>
-                                                <option value="45" {endminuteoption4_selected}>45</option>
-                                            </select>
-                                            <select name="end_ampm">
-                                                <option value="am" {endam_selected}>am</option>
-                                                <option value="pm" {endpm_selected}>pm</option>
-                                            </select>
-                                        </td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_alldayevent}:</b></td>
-                                        <td><input type="checkbox" name="allday" {allday_checked}></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right" valign="top"><b>{lang_location}:</b></td>
-                                        <td>
-                                            <textarea name="location" cols="45" rows="2">{event_location}</textarea>
-                                        </td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_addressline1}:</b></td>
-                                        <td><input type="text" name="address1" size="36" value="{event_address1}"></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_addressline2}:</b></td>
-                                        <td><input type="text" name="address2" size="36" value="{event_address2}"></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_city}:</b></td>
-                                        <td><input type="text" name="city" size="36" value="{event_city}"></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_state}:</b></td>
-                                        <td>
-                                            <select name="state">
-                                                {state_options}
-                                            </select>
-                                        </td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_zipcode}:</b></td>
-                                        <td><input type="text" name="zipcode" size="5" maxlength="5" value="{event_zipcode}"></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_eventurl}:</b></td>
-                                        <td><input type="text" size="48"  maxlength="{max_url_length}" name="url" value="{event_url}"> {lang_includehttp}</td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right" valign="top"><b>{lang_eventdescription}:</b></td>
-                                        <td><textarea name="description" cols="50" rows="8">{event_description}</textarea></td>
-                                    </tr>
-                                    <tr valign="top">
-                                        <td align="right"><b>{lang_postmode}:</b></td>
-                                        <td>
-                                            <select name="postmode">
-                                                {post_options}
-                                            </select>
-                                            <br>
-                                            {lang_allowed_html}
-                                        </td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_hits}:</b></td>
-                                        <td>{hits}</td>
-                                    </tr>
-                                    <tr>
-                                        <td colspan="2"><hr></td>
-                                    </tr>
-                                    <tr>
-                                        <td colspan="2"><b>{lang_accessrights}</b></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right">{lang_owner}:</td>
-                                        <td>{owner_username}<input type="hidden" name="owner_id" value="{owner_id}"></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right">{lang_group}:</td>
-                                        <td>
-                                            {group_dropdown}
-                                        </td>
-                                    <tr>
-                                    <tr>
-                                        <td colspan="2"><b>{lang_permissions}</b>:</td>
-                                    </tr>
-                                    <tr>
-                                        <td colspan="2"></td>
-                                    </tr>
-                                    <tr>
-                                        <td colspan="2">{lang_permissionskey}</td>
-                                    </tr>
-                                    <tr>
-                                        <td colspan="2">
-                                            {permissions_editor} 
-                                        </td>
-                                    </tr>
-                                    <tr><td>&nbsp;</td></tr>
-                                    <tr>
-                                        <td colspan="2">
-                                            <input type="submit" value="{lang_save}" name="mode"> 
-                                            <input type="submit" value="{lang_cancel}" name="mode"> 
-                                            <input type="hidden" name="eid" value="{event_id}">
-                                            {delete_option}
-                                        </td>
-                                    </tr>
-                                </table>
-                            </form>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/group/groupeditor.thtml 1.4.1.src/layout/professional/admin/group/groupeditor.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/group/groupeditor.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/group/groupeditor.thtml	2006-09-15 22:09:46.000000000 -0500
@@ -1,13 +1,19 @@
                             <form action="{site_admin_url}/group.php" method="post">
                                 <table border="0" cellspacing="0" cellpadding="2" width="100%">
                                     <tr>
-                                        <td align="right">{lang_groupname}:</td>
+                                        <td class="alignright">{lang_groupname}:</td>
                                         <td>{groupname_static}<input type="{groupname_inputtype}" size="20" maxlength="50" name="grp_name" value="{group_name}"></td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_description}:</td>
+                                        <td class="alignright">{lang_description}:</td>
                                         <td><input type="text" size="40" maxlength="255" name="grp_descr" value="{group_description}"></td>
                                     </tr>
+                                    <tr{hide_adminoption}>
+                                        <td class="alignright">{lang_admingroup}:</td>
+                                        <td><input type="checkbox" name="chk_grpadmin" value="1" {chk_adminuse}>
+                                            <span class="fieldhelp" style="padding-left:10px;">{lang_admingrp_msg}</span>
+                                        </td>
+                                    </tr>
                                     <tr>
                                         <td colspan="2"><hr></td>
                                     </tr>
@@ -42,10 +48,11 @@
                                     <tr>
                                         <td colspan="2">
                                             <input type="submit" value="{lang_save}" name="mode"> 
-                                            {delete_option}
                                             <input type="submit" value="{lang_cancel}" name="mode"> 
+                                            {delete_option}
                                             <input type="hidden" name="grp_gl_core" value="{group_core}">
                                             <input type="hidden" name="grp_id" value="{group_id}">
+                                            <input type="hidden" name="chk_showall" value="{show_all}">
                                         </td>
                                     </tr>
                                 </table>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/group/groupmembers.thtml 1.4.1.src/layout/professional/admin/group/groupmembers.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/group/groupmembers.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/group/groupmembers.thtml	2006-09-15 22:09:46.000000000 -0500
@@ -4,7 +4,7 @@
         <td rowspan="2">
             <img src="{layout_url}/images/icons/group.png" alt="">
         </td>
-        <td>[ <a href="{site_admin_url}/group.php">{lang_grouplist}</a> | <a href="{site_admin_url}">{lang_adminhome}</a> ]
+        <td><a href="{group_listing_url}">{lang_grouplist}</a> | <a href="{site_admin_url}">{lang_adminhome}</a>
         </td>
     </tr>
     <tr>
@@ -12,34 +12,37 @@
     </tr>
 </table>
 <div style="border: 1px solid grey">
-<form name="groupusers" action="{phpself}?group={groupid}" method="post" style="margin:0px;"> 
-<table width="100%" cellspacing="0" cellpadding="0" border="0" class="pluginBG" style="padding:15px;">
-    <tr align="middle">
-        <td class="blocktitle" style="padding:5px; text-align:middle;">{LANG_sitemembers}</th>
+<form name="groupusers" action="{phpself}" method="post" style="margin:0px;"> 
+<table width="99%" cellspacing="0" cellpadding="0" border="0" class="pluginBG" style="padding:15px;">
+    <tr>
+        <td class="blocktitle" style="padding:5px 40px 5px 5px; text-align:right;">{LANG_sitemembers}</th>
         <td>&nbsp;</th>
-        <td class="blocktitle" style="padding:5px; text-align:middle;">{LANG_grpmembers}</th>
+        <td class="blocktitle" style="padding:5px 5px 5px 20px; text-align:left;">{LANG_grpmembers}</th>
     </tr>
-    <tr align="middle">
-        <td>
+    <tr>
+        <td width="40%" style="text-align:right;padding-right:5px;">
             <select multiple size="10" name="fieldFrom" style="width: 15em; height: 20em; padding: 2px;" onDblClick="moveSelectedOptions(this.form['fieldFrom'],this.form['fieldTo'],false)">{sitemembers}</select>
         </td> 
-    <td valign="middle" align="center">
+    <td class="aligncenter">
         <input type="button" name="right" value="{LANG_add}" onclick="moveSelectedOptions(this.form['fieldFrom'],this.form['fieldTo'],false)">
         <br><br>
         <input type="button" name="left"  value="{LANG_remove}" onclick="moveSelectedOptions(this.form['fieldTo'],this.form['fieldFrom'],false)">
         <br><br>
     </td>
-        <td>
+        <td width="40%" style="text-align:left;padding-left:5px;">
             <select multiple size="10" name="fieldTo" style="width: 15em; height: 20em; padding: 2px;" onDblClick="moveSelectedOptions(this.form['fieldTo'],this.form['fieldFrom'],false)">{group_list}</select>
         </td> 
     </tr>
-    <tr align="middle"><td colspan="3"><br>
+    <tr>
+        <td class="aligncenter" colspan="3"><br>
         <input type="hidden" name="mode" value="savegroupusers">
         <input type="hidden" name="groupmembers">
         <input type="hidden" name="grp_id" value="{group_id}">
+        <input type="hidden" name="chk_showall" value="{show_all}">         
         <input type="button" value="{lang_cancel}" onclick="javascript:history.go(-1)">&nbsp;&nbsp;
         <input type="submit" value="{lang_save}" onclick="return setUsers(this.form)">
-        </td></tr>
+        </td>
+    </tr>
 </table>
 </form>
-</div>
+</div>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/lists/field.thtml 1.4.1.src/layout/professional/admin/lists/field.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/lists/field.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/lists/field.thtml	2006-03-07 23:00:56.000000000 -0600
@@ -1 +1 @@
-                                    <td class="admin-list-field" {colspan}>{itemtext}</td>
+                                    <td class="{class}"{colspan}>{itemtext}</td>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/lists/header.thtml 1.4.1.src/layout/professional/admin/lists/header.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/lists/header.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/lists/header.thtml	2006-10-21 14:40:29.000000000 -0500
@@ -1 +1 @@
-<th class="admin-list-headerfield" {mouse_over} {on_click}>{header_text}{img_arrow}</th>
+<th class="{class}"{th_subtags} nowrap="nowrap">{header_text}</th>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/lists/list.thtml 1.4.1.src/layout/professional/admin/lists/list.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/lists/list.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/lists/list.thtml	2006-11-01 21:23:30.000000000 -0600
@@ -1,9 +1,13 @@
                             {top_menu}
+                            <form action="{form_url}" method="post">
                             <table class="admin-list-table">
                                 <tr style="background:#FFFFFF;">
                                  {header_row}
                                 </tr>
                                 {item_row}
                             </table>
-                            <center><b>{message}</b></center><br>
+                            <div style="padding:5px 0px 0px 9px;{show_deleteimage}">
+                                <input type="image" src="{layout_url}/images/deleteitem.png" title="{lang_deleteall}" onclick="return confirm('{lang_delconfirm}');">
+                            </div>
+                            <p class="aligncenter" style="{show_message}"><b>{message}</b></p>
                             {google_paging}
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/lists/topmenu_nosearch.thtml 1.4.1.src/layout/professional/admin/lists/topmenu_nosearch.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/lists/topmenu_nosearch.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/lists/topmenu_nosearch.thtml	2006-09-12 02:27:32.000000000 -0500
@@ -1,12 +1,13 @@
-                            <table border="0" cellspacing="0" cellpadding="2" width="100%" style="margin-top:5px;">
-                                <tr>
-                                    <td rowspan="2">
-                                        <img src="{icon}" alt="">
-                                    </td>
-                                    <td>[ {menu_fields} ]
-                                    </td>
-                                </tr>
-                                <tr>
-                                    <td>{lang_instructions}</td>
-                                </tr>
-                            </table>
+                            <div>
+                                <div class="admin-list-icon">
+                                    {icon}
+                                </div>
+                                <div>
+                                    <div>
+                                        {menu_fields}
+                                    </div>
+                                    <div>
+                                        {lang_instructions}
+                                    </div>
+                                </div>
+                            </div>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/lists/topmenu.thtml 1.4.1.src/layout/professional/admin/lists/topmenu.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/lists/topmenu.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/lists/topmenu.thtml	2006-09-14 22:42:43.000000000 -0500
@@ -1,31 +1,23 @@
-                            <table border="0" cellspacing="0" cellpadding="2" width="100%" style="margin-top:5px;">
-                                <tr>
-                                    <td rowspan="2">
-                                        <img src="{icon}" alt="">
-                                    </td>
-                                    <td>[ {menu_fields} ]
-                                    </td>
-                                </tr>
-                                <tr>
-                                    <td>{lang_instructions}</td>
-                                </tr>
-                                <tr>
-                                    <td colspan="2" align="center">
-                                        <form action="{form_url}" method="post">
-                                            {filter}
-                                            {lang_search}: <input type="text" size="20" name="q" value="{last_query}">
-                                            &nbsp;&nbsp;{lang_limit_results}:
-                                                <select name="query_limit">
-                                                    <option value="10" {10_selected}>10</option>
-                                                    <option value="20" {20_selected}>20</option>
-                                                    <option value="50" {50_selected}>50</option>
-                                                    <option value="75" {75_selected}>75</option>
-                                                    <option value="100" {100_selected}>100</option>
-                                                    <option value="200" {200_selected}>200</option>
-                                                    <option value="500" {500_selected}>500</option>
-                                                </select>
-                                            <input type="submit" value="{lang_submit}">
-                                        </form>
-                                    </td>
-                                </tr>
-                            </table>
+<div class="admin-list-icon">
+    {icon}
+</div>
+{menu_fields_pre}{menu_fields}{menu_fields_aft}<br>
+{lang_instructions}
+<div class="admin-list-search">
+    <form action="{form_url}" method="post">
+        {filter}
+        {lang_search}: <input type="text" size="20" name="q" value="{last_query}">
+        &nbsp;&nbsp;{lang_limit_results}:
+            <select name="query_limit">
+                <option value="10" {10_selected}>10</option>
+                <option value="20" {20_selected}>20</option>
+                <option value="50" {50_selected}>50</option>
+                <option value="75" {75_selected}>75</option>
+                <option value="100" {100_selected}>100</option>
+                <option value="200" {200_selected}>200</option>
+                <option value="500" {500_selected}>500</option>
+            </select>
+        <input type="submit" value="{lang_submit}">
+        &nbsp;&nbsp;{lang_records_found}:&nbsp;{records_found}
+    </form>
+</div>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/mail/mailform.thtml 1.4.1.src/layout/professional/admin/mail/mailform.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/mail/mailform.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/mail/mailform.thtml	2006-09-15 22:09:47.000000000 -0500
@@ -9,7 +9,7 @@
     </table>
     <table border="0" cellpadding="2" cellspacing="0">
         <tr>
-            <td align="right">{lang_to}:</td>
+            <td class="alignright">{lang_to}:</td>
             <td>
                 <select name="to_group">
                     <option value="">{lang_selectgroup}</option>
@@ -18,23 +18,23 @@
             </td>            
         </tr>
         <tr>
-            <td align="right">{lang_from}:</td>
+            <td class="alignright">{lang_from}:</td>
             <td><input type="text" name="fra" value="{site_name}" size="40"></td>
         </tr>
         <tr>
-            <td align="right">{lang_replyto}:</td>
+            <td class="alignright">{lang_replyto}:</td>
             <td><input type="text" name="fraepost" value="{site_mail}" size="40"></td>
         </tr>
         <tr>
-            <td align="right">{lang_subject}:</td>
+            <td class="alignright">{lang_subject}:</td>
             <td><input type="text" name="subject" size="40"></td>
         </tr>
         <tr>
-            <td align="right" valign="top">{lang_body}:</td>
+            <td class="alignright" style="vertical-align:top;">{lang_body}:</td>
             <td><textarea rows="12" name="message" cols="44"></textarea></td>
         </tr>
         <tr>
-            <td colspan="2" align="left"><b>{lang_options}</b></td>
+            <td colspan="2" class="alignleft"><b>{lang_options}</b></td>
         </tr>
         <tr>
             <td>&nbsp;</td>
@@ -49,7 +49,7 @@
             <td><input type="checkbox" name="overstyr"> {lang_ignoreusersettings}</td>
         </tr>
         <tr>
-            <td colspan="2" align="center">
+            <td colspan="2" class="aligncenter">
                 <input type="submit" value="{lang_send}">
             </td>
         </tr>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/moderation/ccitem.thtml 1.4.1.src/layout/professional/admin/moderation/ccitem.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/moderation/ccitem.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/moderation/ccitem.thtml	2006-09-15 22:09:47.000000000 -0500
@@ -1,5 +1,5 @@
-        <td align="center" width="{cell_width}">
-            <a href="{page_url}"><img src="{page_image}" border="0" alt=""><br> 
-                {option_label}
+        <div class="moderation-cc-item" style="width:{cc_icon_width}%">
+            <a href="{page_url}"><img src="{page_image}" border="0" alt="">
+                <div>{option_label}</div>
             </a>
-        </td>
+        </div>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/moderation/ccrow.thtml 1.4.1.src/layout/professional/admin/moderation/ccrow.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/moderation/ccrow.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/moderation/ccrow.thtml	2006-09-12 03:31:44.000000000 -0500
@@ -1,3 +1,3 @@
-    <tr align="center" valign="bottom">
-{cc_main_options}
-    </tr>
+    <div class="moderation-cc-row">
+        {cc_main_options}
+    </div>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/moderation/moderation.thtml 1.4.1.src/layout/professional/admin/moderation/moderation.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/moderation/moderation.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/moderation/moderation.thtml	2006-09-12 03:31:44.000000000 -0500
@@ -1,3 +1,3 @@
-<table border="0" cellspacing="0" cellpadding="2" width="100%">
-{cc_rows}
-</table>
+<div class="moderation-cc">
+    {cc_rows}
+</div>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/plugins/editor.thtml 1.4.1.src/layout/professional/admin/plugins/editor.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/plugins/editor.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/plugins/editor.thtml	2006-09-15 22:09:47.000000000 -0500
@@ -6,7 +6,7 @@
                                             <table border="0" cellspacing="0" cellpadding="3">
                                                 <tr>
                                                     <td><img src="{pi_icon}" alt=""></td>
-                                                    <td align="left">
+                                                    <td>
                                                         <input type="submit" value="{lang_save}" name="mode">
                                                         <input type="submit" value="{lang_cancel}" name="mode">
                                                         {delete_option}&nbsp;{update_option}
@@ -19,31 +19,31 @@
                                                     </td>
                                                 <tr>
                                                 <tr>
-                                                    <td align="right"><b>{lang_pluginname}:</b></td>
+                                                    <td class="alignright"><b>{lang_pluginname}:</b></td>
                                                     <td>{pi_name}</td>
                                                 </tr>
                                                 <tr>
-                                                    <td align="right"><b>{lang_pluginhomepage}:</b></td>
+                                                    <td class="alignright"><b>{lang_pluginhomepage}:</b></td>
                                                     <td><a href="{pi_homepage}">{pi_homepage}</a></td>
                                                 </tr>
                                                 <tr>
-                                                    <td align="right"><b>{lang_pluginversion}:</b></td>
+                                                    <td class="alignright"><b>{lang_pluginversion}:</b></td>
                                                     <td>{pi_version}</td>
                                                 </tr>
                                                 <tr>
-                                                    <td align="right"><b>{lang_plugincodeversion}:</b></td>
+                                                    <td class="alignright"><b>{lang_plugincodeversion}:</b></td>
                                                     <td>{pi_codeversion}</td>
-                                                </tr>												
+                                                </tr>
                                                 <tr>
-                                                    <td align="right"><b>{lang_geeklogversion}:</b></td>
+                                                    <td class="alignright"><b>{lang_geeklogversion}:</b></td>
                                                     <td>{pi_gl_version}</td>
                                                 </tr>
                                                 <tr>
-                                                    <td align="right"><b>{lang_enabled}:</b></td>
+                                                    <td class="alignright"><b>{lang_enabled}:</b></td>
                                                     <td><input type="checkbox" name="enabled" {enabled_checked}>
                                                 </tr>
                                             </table>
-                                        </form>                               
+                                        </form>
                                     </td>
                                 </tr>
                             </table>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/plugins/newlistitem.thtml 1.4.1.src/layout/professional/admin/plugins/newlistitem.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/plugins/newlistitem.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/plugins/newlistitem.thtml	2006-09-15 22:09:47.000000000 -0500
@@ -1,5 +1,5 @@
   <tr class="pluginRow{cssid}" >
-    <td align="left">{row_num}</td>
-    <td align="left" width="30%" style="padding-left:5px;" nowrap>{pi_name}</td>
+    <td>{row_num}</td>
+    <td width="30%" style="padding-left:5px;" nowrap>{pi_name}</td>
     <td style="padding-left:10px;">{start_install_anchortag}{lang_install}{end_install_anchortag}</td>
 </tr>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/plugins/newpluginlist.thtml 1.4.1.src/layout/professional/admin/plugins/newpluginlist.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/plugins/newpluginlist.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/plugins/newpluginlist.thtml	2006-09-15 22:09:47.000000000 -0500
@@ -1,8 +1,8 @@
 {start_block_newlist}
 <table cellpadding="3" cellspacing="1" border="0" width="100%">
   <tr>
-    <th align="left" width="5%">#</th>
-    <th colspan="2" align="left">{lang_pluginname}</th>
+    <th width="5%">#</th>
+    <th colspan="2">{lang_pluginname}</th>
   </tr>
     {plugin_list}
 </table>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/story/storyeditor_advanced.thtml 1.4.1.src/layout/professional/admin/story/storyeditor_advanced.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/story/storyeditor_advanced.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/story/storyeditor_advanced.thtml	2006-09-23 08:54:12.000000000 -0500
@@ -6,10 +6,10 @@
 </noscript>
 <script type="text/javascript">
     // Setup editor path for FCKeditor JS Functions
-    geeklogEditorBasePath = "{site_url}/fckeditor/" ;
+    geeklogEditorBasePath = "{site_url}/fckeditor/";
 </script>
-<script type="text/JavaScript" src="{site_url}/javascript/advanced_editor.js"></script>
-<script type="text/JavaScript" src="{site_url}/javascript/storyeditor_fckeditor.js"></script>
+<script type="text/javascript" src="{site_url}/javascript/advanced_editor.js"></script>
+<script type="text/javascript" src="{site_url}/javascript/storyeditor_fckeditor.js"></script>
 <br>
 <div id="advanced_editor" style="display:none;">
 <!-- Hide the Advanced Editor as Javascript is required. If JS is enabled then the JS below will un-hide it -->
@@ -17,22 +17,23 @@
     document.getElementById('advanced_editor').style.display=''
 </script>
 {navbar}
+    <div>
                             <form name="frmstory" action="{site_admin_url}/story.php" method="post" enctype="multipart/form-data" onSubmit='set_postcontent();'>
                                 <table id='adveditor' border="0" cellspacing="0" cellpadding="3" width="100%" style="margin-top:10px;border:1px solid #ECE9D8;">
                                     <tr>
-                                        <td width="20%" align="right">{lang_author}:</td>
+                                        <td width="20%" class="alignright">{lang_author}:</td>
                                         <td>{story_author}<input type="hidden" name="uid" value="{story_uid}"></td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_title}:</td>
+                                        <td class="alignright">{lang_title}:</td>
                                         <td><input type="text" size="48" maxlength="255" name="title" value="{story_title}"></td>
                                     </tr>
                                     <tr>
-                                        <td valign="top" align="right">{lang_sid}:</td>
+                                        <td class="alignright" style="vertical-align:top;">{lang_sid}:</td>
                                         <td><input type="text" size="48" maxlength="40" name="sid" value="{story_id}"></td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_topic}:</td>
+                                        <td class="alignright">{lang_topic}:</td>
                                         <td>
                                             <select name="tid">
                                                 {topic_options}
@@ -40,26 +41,23 @@
                                         </td>
                                     </tr>
                                     <tr>
-                                        <td align="right" nowrap>Story Stats:</td>
+                                        <td class="alignright" nowrap>{lang_story_stats}:</td>
                                         <td>
                                           <table border="0" cellspacing="0" cellpadding="3" width="50%">
                                             <tr>
-                                                <td align="right">{lang_hits}:</td>
+                                                <td class="alignright">{lang_hits}:</td>
                                                 <td><input type="hidden" name="hits" value="{story_hits}">{story_hits}</td>
-                                                <td align="right">{lang_comments}:</td>
+                                                <td class="alignright">{lang_comments}:</td>
                                                 <td><input type="hidden" name="comments" value="{story_comments}">{story_comments}</td>
-                                                <td align="right">{lang_emails}:</td>
+                                                <td class="alignright">{lang_emails}:</td>
                                                 <td><input type="hidden" name="numemails" value="{story_emails}">{story_emails}</td>
                                             </tr>
                                          </table>
                                         </td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_show_topic_icon}:</td>
-                                        <td>
-                                            <input type="checkbox" name="show_topic_icon" {show_topic_icon_checked}>
-                                            <span style="padding-left:30px;padding-right:5px;">{lang_draft}:</span><input type="checkbox" name="draft_flag" {is_checked}>
-                                        </td>
+                                        <td class="alignright">{lang_show_topic_icon}:<input type="checkbox" name="show_topic_icon" {show_topic_icon_checked}> </td>
+                                        <td style="padding-left:25px;">{lang_draft}:<input type="checkbox" name="draft_flag" {is_checked}><span style="padding-left:30px;">{lang_postmode}:</span>&nbsp;<select id="sel_editmode" name="postmode" {change_editormode}>{post_options}</select></td>
                                     </tr>
                                 </table>
                                 <!-- Basic textarea field - no editor -->
@@ -67,8 +65,8 @@
                                     <tr>
                                         <td>{lang_introtext}:
                                             <span style="padding-left:10px;">
-                                                <img src="{layout_url}/images/expand.gif" border="0" TITLE="{lang_expandhelp}" onclick="changeTextAreaSize('introtext','larger');">
-                                                <span style="padding-left:5px;"><img src="{layout_url}/images/collapse.gif" border="0" TITLE="{lang_reducehelp}" onclick="changeTextAreaSize('introtext','smaller');"></span>
+                                                <img src="{layout_url}/images/expand.png" border="0" title="{lang_expandhelp}" onclick="changeTextAreaSize('introtext','larger');">
+                                                <span style="padding-left:5px;"><img src="{layout_url}/images/collapse.png" border="0" title="{lang_reducehelp}" onclick="changeTextAreaSize('introtext','smaller');"></span>
                                             </span>
                                         </td>
                                     </tr>
@@ -78,8 +76,8 @@
                                     <tr>
                                         <td>{lang_bodytext}:
                                             <span style="padding-left:10px;">
-                                                <img src="{layout_url}/images/expand.gif" border="0" TITLE="{lang_expandhelp}" onclick="changeTextAreaSize('bodytext','larger');">
-                                                <span style="padding-left:5px;"><img src="{layout_url}/images/collapse.gif" border="0" TITLE="{lang_reducehelp}" onclick="changeTextAreaSize('bodytext','smaller');"></span>
+                                                <img src="{layout_url}/images/expand.png" border="0" title="{lang_expandhelp}" onclick="changeTextAreaSize('bodytext','larger');">
+                                                <span style="padding-left:5px;"><img src="{layout_url}/images/collapse.png" border="0" title="{lang_reducehelp}" onclick="changeTextAreaSize('bodytext','smaller');"></span>
                                             </span>
                                         </td>
                                     </tr>
@@ -92,20 +90,16 @@
                                      <tr>
                                         <td style="padding-left:15px;">{lang_introtext}:
                                             <span style="padding-left:10px;">
-                                                <img src="{layout_url}/images/expand.gif" border="0" TITLE="{lang_expandhelp}" onclick="changeHTMLTextAreaSize('introhtml','larger');">
-                                                <span style="padding-left:5px;"><img src="{layout_url}/images/collapse.gif" border="0" TITLE="{lang_reducehelp}" onclick="changeHTMLTextAreaSize('introhtml','smaller');"></span>
-                                                <!-- BL: Not supported yet. Works in Firefox but not in IE
+                                                <img src="{layout_url}/images/expand.png" border="0" title="{lang_expandhelp}" onclick="changeHTMLTextAreaSize('introhtml','larger');">
+                                                <span style="padding-left:5px;"><img src="{layout_url}/images/collapse.png" border="0" title="{lang_reducehelp}" onclick="changeHTMLTextAreaSize('introhtml','smaller');"></span>
                                                 <span style="padding-left:15px;">{lang_toolbar}:&nbsp;
                                                   <select id="fckeditor_toolbar_selector" name="fckeditor_toolbar_selector" onchange="changeToolbar(this.value);">
                                                        <option value="editor-toolbar1">{toolbar1}</option>
-                                                       <option value="editor-toolbar2">{toolbar2}</option>
+                                                       <option value="editor-toolbar2" selected="selected">{toolbar2}</option>
                                                        <option value="editor-toolbar3">{toolbar3}</option>
-                                                       <option value="editor-toolbar4">{toolbar4}</option>
                                                        <option value="Default">{toolbar5}</option>
-                                                       
                                                   </select>
                                                 </span>
-                                                -->
                                             </span>
                                         </td>
                                     <tr>
@@ -114,8 +108,8 @@
                                     <tr>
                                         <td style="padding-left:15px;">{lang_bodytext}:
                                             <span style="padding-left:10px;">
-                                                <img src="{layout_url}/images/expand.gif" border="0" TITLE="lang_expandhelp" onclick="changeHTMLTextAreaSize('bodyhtml','larger');">
-                                                <span style="padding-left:5px;"><img src="{layout_url}/images/collapse.gif" border="0" TITLE="{lang_reducehelp}" onclick="changeHTMLTextAreaSize('bodyhtml','smaller');"></span>
+                                                <img src="{layout_url}/images/expand.png" border="0" title="lang_expandhelp" onclick="changeHTMLTextAreaSize('bodyhtml','larger');">
+                                                <span style="padding-left:5px;"><img src="{layout_url}/images/collapse.png" border="0" title="{lang_reducehelp}" onclick="changeHTMLTextAreaSize('bodyhtml','smaller');"></span>
                                             </span>
                                         </td>
                                     <tr>
@@ -123,14 +117,6 @@
                                     </tr>
                                 </table>
                                 <table border="0" cellspacing="0" cellpadding="3" width="100%" id="editor_mode" style="margin-top:10px;border:1px solid #ECE9D8;display:{show_htmleditor};">
-                                    <tr valign="top">
-                                        <td width="10%" style=padding-left:20px;" nowrap><b>{lang_postmode}:</b></td>
-                                        <td style="padding-left:20px;" nowrap>
-                                            <select id="sel_editmode" name="postmode" {change_editormode}>
-                                                {post_options}
-                                            </select>
-                                        </td>
-                                     </tr>
                                      <tr>
                                         <td colspan="2" style=padding:5px;">{lang_allowed_html}</td>
                                     </tr>
@@ -142,7 +128,7 @@
                                                 <fieldset><legend>{lang_publishdate}</legend>
                                                     <table border="0" cellspacing="0" cellpadding="3" width="100%">
                                                         <tr>
-                                                            <td align="right" valign="top">{lang_date}:</td>
+                                                            <td class="alignright" style="vertical-align:top;">{lang_date}:</td>
                                                             <td>
                                                                 <select name="publish_month">
                                                                     {publish_month_options}
@@ -162,10 +148,7 @@
                                                                 <select name="publish_minute">
                                                                     {publish_minute_options}
                                                                 </select>
-                                                                <select name="publish_ampm">
-                                                                    <option value="am" {publisham_selected}>am</option>
-                                                                    <option value="pm" {publishpm_selected}>pm</option>
-                                                                </select><br>
+                                                                {publishampm_selection}<br>
                                                                 <input type="hidden" name="publish_second" value="{publish_second}">
                                                                 <br>{publish_date_explanation}
                                                             </td>
@@ -176,9 +159,7 @@
                                                     <table border="0" cellspacing="3" cellpadding="3" width="100%">
                                                         <tr>
                                                             <td>
-                                                                <select name="featured">
-                                                                    {featured_options}
-                                                                </select>
+                                                                {featured_options}
                                                             </td>
                                                             <td width="75%">
                                                                 <select name="frontpage">
@@ -221,34 +202,31 @@
                                                             <td width="20%">{lang_enabled}:<input type="checkbox" name="archiveflag" value="1" {is_checked2} onclick="enablearchive(this);"></td>
                                                             <td style="text-align:left;">
                                                                 <label for="storycode10"> 
-                                                                    <input type="radio" name="statuscode" id="storycode10" value="10" {is_checked3} {archivedisabled}>{lang_optionarchive}
+                                                                    <input type="radio" name="statuscode" id="storycode10" value="10" {is_checked3}>{lang_optionarchive}
                                                                 </label>&nbsp; 
                                                             <label for="storycode11"> 
-                                                                <input type="radio" name="statuscode" id="storycode11" value="11" {is_checked4} {archivedisabled}>{lang_optiondelete}
+                                                                <input type="radio" name="statuscode" id="storycode11" value="11" {is_checked4}>{lang_optiondelete}
                                                             </label>
                                                         </tr>
                                                         <tr>
                                                             <td style="text-align:right;vertical-align:top;padding-right:5px;">{lang_date}:</td>
                                                             <td colspan="2">
-                                                                <select id="expire_month" name="expire_month" {archivedisabled}>
+                                                                <select id="expire_month" name="expire_month"}>
                                                                     {expire_month_options}
                                                                 </select>
-                                                                <select name="expire_day" {archivedisabled}>
+                                                                <select name="expire_day">
                                                                     {expire_day_options}
                                                                 </select>
-                                                                <select name="expire_year" {archivedisabled}>
+                                                                <select name="expire_year">
                                                                     {expire_year_options}
                                                                 </select>
-                                                                <select name="expire_hour" {archivedisabled}>
+                                                                <select name="expire_hour">
                                                                     {expire_hour_options}
                                                                 </select>&nbsp;:
-                                                                <select name="expire_minute" {archivedisabled}>
+                                                                <select name="expire_minute">
                                                                     {expire_minute_options}
                                                                 </select>
-                                                                <select name="expire_ampm" {archivedisabled}>
-                                                                    <option value="am" {expiream_selected}>am</option>
-                                                                    <option value="pm" {expirepm_selected}>pm</option>
-                                                                </select><br>
+                                                                {expireampm_selection}<br>
                                                                 <input type="hidden" name="expire_second" value="{expire_second}">
                                                             </td>
                                                         </tr>
@@ -260,7 +238,7 @@
                                                     <table border="0" cellspacing="0" cellpadding="3" width="100%">
                                                         <tr>
                                                             <td style="padding-left:20px;" width="10%">{lang_owner}:</td>
-                                                            <td>{owner_username}<input type="hidden" name="owner_id" value="{owner_id}"></td>
+                                                            <td>{owner_name}<input type="hidden" name="owner_id" value="{owner_id}"></td>
                                                         </tr>
                                                         <tr>
                                                             <td style="padding-left:20px;" width="10%">{lang_group}:</td>
@@ -291,7 +269,7 @@
                                         </td>
                                     </tr>
                                 </table>
-                                <table id="bottom" border="0" cellspacing="0" cellpadding="3" width="100%" style="margin-top:20px;">
+                                <table id="se_bottom" border="0" cellspacing="0" cellpadding="3" width="100%" style="margin-top:20px;">
                                     <tr>
                                         <td colspan="2" style="padding-left:20px;">
                                             <input type="submit" value="{lang_save}" name="mode">
@@ -300,10 +278,12 @@
                                             {delete_option}
                                             {submission_option}
                                             <input type="hidden" name="old_sid" value="{old_story_id}">
+                                            <input type="hidden" name="hour_mode" value="{hour_mode}">
                                         </td>
                                     </tr>
                                 </table>
                             </form>
+</div>
 <table border="0" width="99%" id="preview" style="border:1px dashed grey;padding:5px;margin:10px;display:{show_preview};">
     <tr>
         <td>
@@ -325,6 +305,8 @@
     document.frmstory.expire_ampm.disabled=true;
     document.frmstory.storycode10.disabled=true;
     document.frmstory.storycode11.disabled=true;
+
 }
+
 </script>
 </div>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/story/storyeditor.thtml 1.4.1.src/layout/professional/admin/story/storyeditor.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/story/storyeditor.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/story/storyeditor.thtml	2006-09-15 22:09:47.000000000 -0500
@@ -18,11 +18,11 @@
                             <form name="frmstory" action="{site_admin_url}/story.php" method="post" enctype="multipart/form-data">
                                 <table border="0" cellspacing="0" cellpadding="3" width="100%">
                                     <tr>
-                                        <td align="right">{lang_author}:</td>
+                                        <td width="100px" class="alignright">{lang_author}:</td>
                                         <td>{story_author}<input type="hidden" name="uid" value="{story_uid}"></td>
                                     </tr>
                                     <tr>
-                                        <td align="right" valign="top">{lang_date}:</td>
+                                        <td class="alignright" style="vertical-align:top;">{lang_date}:</td>
                                         <td>
                                             <select name="publish_month">
                                                 {publish_month_options}
@@ -42,20 +42,17 @@
                                             <select name="publish_minute">
                                                 {publish_minute_options}
                                             </select>
-                                            <select name="publish_ampm">
-                                                <option value="am" {publisham_selected}>am</option>
-                                                <option value="pm" {publishpm_selected}>pm</option>
-                                            </select><br>
+                                            {publishampm_selection}<br>
                                             <input type="hidden" name="publish_second" value="{publish_second}">
                                             {publish_date_explanation}
                                         </td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_title}:</td>
+                                        <td class="alignright">{lang_title}:</td>
                                         <td><input type="text" size="48" maxlength="255" name="title" value="{story_title}"></td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_topic}:</td>
+                                        <td class="alignright">{lang_topic}:</td>
                                         <td>
                                             <select name="tid">
                                                 {topic_options}
@@ -63,18 +60,18 @@
                                         </td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_show_topic_icon}:</td>
+                                        <td class="alignright">{lang_show_topic_icon}:</td>
                                         <td>
                                             <input type="checkbox" name="show_topic_icon" {show_topic_icon_checked}>
                                         </td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_draft}:</td>
+                                        <td class="alignright">{lang_draft}:</td>
                                         <td><input type="checkbox" name="draft_flag" {is_checked}></td>
                                     </tr>
                                     <tr>
                                         <td colspan="2">
-                                            <table border="0" cellspacing="0" cellpadding="3" width="100%" style="border-style:solid;">
+                                            <table border="0" cellspacing="0" cellpadding="3" width="100%">
                                                 <tr>
                                                     <td colspan="3" style="padding-left:20px;">{lang_archivetitle}</td>
                                                 <tr>
@@ -82,76 +79,71 @@
                                                     <td width="20%">{lang_enabled}:<input type="checkbox" name="archiveflag" value="1" {is_checked2} onclick="enablearchive(this);"></td>
                                                     <td style="text-align:left;">
                                                         <label for="storycode10"> 
-                                                            <input type="radio" name="statuscode" id="storycode10" value="10" {is_checked3} {archivedisabled}>{lang_optionarchive}
+                                                            <input type="radio" name="statuscode" id="storycode10" value="10" {is_checked3}>{lang_optionarchive}
                                                         </label>&nbsp; 
                                                     <label for="storycode11"> 
-                                                        <input type="radio" name="statuscode" id="storycode11" value="11" {is_checked4} {archivedisabled}>{lang_optiondelete}
+                                                        <input type="radio" name="statuscode" id="storycode11" value="11" {is_checked4}>{lang_optiondelete}
                                                     </label>
                                                 </tr>
                                                 <tr>
                                                     <td style="text-align:right;vertical-align:top;padding-right:5px;">{lang_date}:</td>
                                                     <td colspan="2">
-                                                        <select id="expire_month" name="expire_month" {archivedisabled}>
+                                                        <select id="expire_month" name="expire_month">
                                                             {expire_month_options}
                                                         </select>
                                                         /
-                                                        <select name="expire_day" {archivedisabled}>
+                                                        <select name="expire_day">
                                                             {expire_day_options}
                                                         </select>
                                                         /
-                                                        <select name="expire_year" {archivedisabled}>
+                                                        <select name="expire_year">
                                                             {expire_year_options}
                                                         </select>&nbsp;&nbsp;
-                                                        <select name="expire_hour" {archivedisabled}>
+                                                        <select name="expire_hour">
                                                             {expire_hour_options}
                                                         </select>
                                                         :
-                                                        <select name="expire_minute" {archivedisabled}>
+                                                        <select name="expire_minute">
                                                             {expire_minute_options}
                                                         </select>
-                                                        <select name="expire_ampm" {archivedisabled}>
-                                                            <option value="am" {expiream_selected}>am</option>
-                                                            <option value="pm" {expirepm_selected}>pm</option>
-                                                        </select><br>
+                                                        {expireampm_selection}<br>
                                                         <input type="hidden" name="expire_second" value="{expire_second}">
-                                                        <p />
                                                     </td>
                                                 </tr>
                                             </table>
                                          </td>
                                     </tr>
                                     <tr>
-                                        <td valign="top" align="right">{lang_mode}:</td>
-                                        <td>
-                                            <select name="featured">
-                                                {featured_options}
-                                            </select> 
+                                        <td class="alignright" style="vertical-align:top;">{lang_mode}:</td>
+                                        <td style="vertical-align:top;">
+                                            {featured_options}
                                             <select name="frontpage">
                                                 {frontpage_options}
-                                            </select><br>
+                                            </select><div style="padding-top:5px;">
                                             <select name="commentcode">
                                                 {comment_options}
                                             </select>
                                             <select name="trackbackcode">
                                                 {trackback_options}
                                             </select>
+                                            </div>
                                         </td>
                                     </tr>
                                     <tr>
-                                        <td valign="top" align="right">{lang_sid}:</td>
+                                        <td class="alignright" style="vertical-align:top;">{lang_sid}:</td>
                                         <td><input type="text" size="40" maxlength="40" name="sid" value="{story_id}"></td>
                                     </tr>
                                     <tr>
-                                        <td valign="top" align="right">{lang_introtext}:</td>
-                                        <td><textarea name="introtext" cols="90" rows="12">{story_introtext}</textarea></td>
+                                        <td class="alignright" style="vertical-align:top;">{lang_introtext}:</td>
+                                        <td><textarea name="introtext" rows="12" style="width:100%">{story_introtext}</textarea></td>
                                     </tr>
                                     <tr>
-                                        <td valign="top" align="right">{lang_bodytext}:</td>
-                                        <td><textarea name="bodytext" cols="90" rows="20">{story_bodytext}</textarea></td>
+                                        <td class="alignright" style="vertical-align:top;">{lang_bodytext}:</td>
+                                        <td><textarea name="bodytext" rows="20" style="width:100%">{story_bodytext}</textarea></td>
                                     </tr>
-                                    <tr valign="top">
-                                        <td align="right"><b>{lang_postmode}:</b></td>
-                                        <td>
+                                    <tr>
+                                        <td class="alignright" style="vertical-align:top;"><b>{lang_postmode}:</b></td>
+                                        <td style="vertical-align:top;">
                                             <select name="postmode">
                                                 {post_options}
                                             </select>
@@ -160,23 +152,30 @@
                                         </td>
                                     </tr>
                                     <tr>
-                                        <td valign="top" align="right"><b>{lang_images}:</b></td>
-                                        <td>
+                                        <td class="alignright" style="vertical-align:top;"><b>{lang_images}:</b></td>
+                                        <td style="vertical-align:top;">
                                             {saved_images}
                                             {image_form_elements}
                                         </td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_hits}:</td>
-                                        <td><table border="0" cellspacing="0" cellpadding="0" width="100%"><tr>
-                                        <td align="left"><input type="hidden" name="hits" value="{story_hits}">{story_hits}</td>
-                                        <td>{lang_comments}:
-                                        <input type="hidden" name="comments" value="{story_comments}">{story_comments}</td>
-                                        <td>{lang_trackbacks}:
-                                        <input type="hidden" name="trackbacks" value="{story_trackbacks}">{story_trackbacks}</td>
-                                        <td align="right">{lang_emails}:
-                                        <input type="hidden" name="numemails" value="{story_emails}">{story_emails}</td>
-                                        </tr></table></td>
+                                        <td class="alignright">{lang_hits}:</td>
+                                        <td>
+                                            <table border="0" cellspacing="0" cellpadding="0" width="100%">
+                                                <tr>
+                                                    <td class="alignleft">
+                                                        <input type="hidden" name="hits" value="{story_hits}">{story_hits}
+                                                        <input type="hidden" name="comments" value="{story_comments}">
+                                                        <input type="hidden" name="trackbacks" value="{story_trackbacks}">
+                                                        <input type="hidden" name="numemails" value="{story_emails}">
+                                                        <input type="hidden" name="owner_id" value="{owner_id}">
+                                                    </td>
+                                                    <td>{lang_comments}:{story_comments}</td>
+                                                    <td>{lang_trackbacks}:{story_trackbacks}</td>
+                                                    <td class="alignright">{lang_emails}:{story_emails}</td>
+                                                </tr>
+                                            </table>
+                                        </td>
                                     </tr>
                                     <tr>
                                         <td colspan="2"><hr></td>
@@ -185,11 +184,11 @@
                                         <td colspan="2"><b>{lang_accessrights}</b></td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_owner}:</td>
-                                        <td>{owner_username}<input type="hidden" name="owner_id" value="{owner_id}"></td>
+                                        <td class="alignright">{lang_owner}:</td>
+                                        <td>{owner_name}</td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_group}:</td>
+                                        <td class="alignright">{lang_group}:</td>
                                         <td>
                                             {group_dropdown}
                                         </td>
@@ -221,12 +220,13 @@
                                             {submission_option}
                                             <input type="hidden" name="old_sid" value="{old_story_id}">
                                             <input type="hidden" name="editopt" value="default">
+                                            <input type="hidden" name="hour_mode" value="{hour_mode}">
                                         </td>
                                     </tr>
                                 </table>
                             </form>
 <script>
-<!-- This code will only be executed by a browser that suppports Javascript -->
+<!-- This code will only be executed by a browser that supports Javascript -->
 var jstest = {showarchivedisabled};
 if (jstest) {
     document.frmstory.expire_month.disabled=true;
@@ -234,6 +234,7 @@
     document.frmstory.expire_year.disabled=true;
     document.frmstory.expire_hour.disabled=true;
     document.frmstory.expire_minute.disabled=true;
+    document.frmstory.expire_ampm.disabled=true;
     document.frmstory.storycode10.disabled=true;
     document.frmstory.storycode11.disabled=true;
 }
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/syndication/feededitor.thtml 1.4.1.src/layout/professional/admin/syndication/feededitor.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/syndication/feededitor.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/syndication/feededitor.thtml	2006-09-15 22:09:47.000000000 -0500
@@ -2,24 +2,24 @@
 <form action="{site_admin_url}/syndication.php" method="post">
 <table border="0" cellspacing="0" cellpadding="3" width="100%">
 <tr>
-  <td align="right">{lang_feedtitle}:</td>
+  <td class="alignright">{lang_feedtitle}:</td>
   <td><input type="text" size="48" name="title" value="{feed_title}"></td>
 </tr>
 <tr>
-  <td align="right">{lang_enabled}:</td>
+  <td class="alignright">{lang_enabled}:</td>
   <td><input type="checkbox" name="is_enabled" {is_enabled}></td>
 </tr>
 <tr>
-  <td align="right">{lang_type}:</td>
+  <td class="alignright">{lang_type}:</td>
   <td>{feed_type_display}
     <input type="hidden" name="type" value="{feed_type}"></td>
 </tr>
 <tr>
-  <td align="right">{lang_topic}:</td>
+  <td class="alignright">{lang_topic}:</td>
   <td>{feed_topic}</td>
 </tr>
 <tr>
-    <td align="right">{lang_header_topic}:</td>
+    <td class="alignright">{lang_header_topic}:</td>
     <td>
         <select name="header_tid">
         <option value="none" {none_selected}>{lang_header_none}</option>
@@ -29,39 +29,39 @@
     </td>
 </tr>
 <tr>
-  <td align="right">{lang_format}:</td>
+  <td class="alignright">{lang_format}:</td>
   <td>{feed_format}</td>
 </tr>
 <tr>
-  <td align="right">{lang_limits}:</td>
+  <td class="alignright">{lang_limits}:</td>
   <td><input type="text" size="4" name="limits" value="{feed_limits}"> {feed_limits_what}</td>
 </tr>
 <tr>
-  <td align="right">{lang_content_length}:</td>
+  <td class="alignright">{lang_content_length}:</td>
   <td><input type="text" size="4" name="content_length" value="{feed_content_length}"> <small>{lang_clen_explain}</small></td>
 </tr>
 <tr>
-  <td align="right" valign="top">{lang_description}:</td>
+  <td class="alignright" style="vertical-align:top;">{lang_description}:</td>
   <td><textarea name="description" cols="50" rows="8">{feed_description}</textarea></td>
 </tr>
 <tr>
-  <td align="right" valign="top">{lang_feedlogo}:</td>
-  <td><input type="text" maxlength="255" size="40" name="feedlogo" value="{feed_logo}"/> <small>{lang_feedlogo_explain}</small></td>
+  <td class="alignright" style="vertical-align:top;">{lang_feedlogo}:</td>
+  <td><input type="text" maxlength="255" size="40" name="feedlogo" value="{feed_logo}"> <small>{lang_feedlogo_explain}</small></td>
 </tr>
 <tr>
-  <td align="right">{lang_filename}:</td>
+  <td class="alignright">{lang_filename}:</td>
   <td><input type="text" size="40" name="filename" value="{feed_filename}"></td>
 </tr>
 <tr>
-  <td align="right">{lang_charset}:</td>
+  <td class="alignright">{lang_charset}:</td>
   <td><input type="text" size="20" name="charset" value="{feed_charset}"></td>
 </tr>
 <tr>
-  <td align="right">{lang_language}:</td>
+  <td class="alignright">{lang_language}:</td>
   <td><input type="text" size="20" name="language" value="{feed_language}"></td>
 </tr>
 <tr>
-  <td align="right">{lang_updated}:</td>
+  <td class="alignright">{lang_updated}:</td>
   <td>{feed_updated}</td>
 </tr>
 <tr><td colspan="2">&nbsp;</td></tr>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/syndication/selecttype.thtml 1.4.1.src/layout/professional/admin/syndication/selecttype.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/syndication/selecttype.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/syndication/selecttype.thtml	2006-09-15 22:09:47.000000000 -0500
@@ -1,5 +1,5 @@
 <form action="{site_admin_url}/syndication.php" method="POST">
 <p>{lang_explain}</p>
-<p align="center">{type_selection}&nbsp;&nbsp;&nbsp;
+<p class="aligncenter">{type_selection}&nbsp;&nbsp;&nbsp;
   <input type="submit" value="{lang_go}" name="mode"></p>
 </form>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/topic/listitem.thtml 1.4.1.src/layout/professional/admin/topic/listitem.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/topic/listitem.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/topic/listitem.thtml	2006-09-17 10:58:11.000000000 -0500
@@ -1,5 +1,5 @@
                             {begin_row} 
                             <td>
-                                <a href="{site_admin_url}/topic.php?mode=edit&amp;tid={topic_id}">{image_tag}{topic_name}</a>{default_topic} ({topic_access})
+                                <a href="{site_admin_url}/topic.php?mode=edit&amp;tid={topic_id}">{image_tag}<div>{topic_name}</div></a>{default_topic} ({topic_access})
                             </td>
-                            {end_row}
+                            {end_row}
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/topic/topiceditor.thtml 1.4.1.src/layout/professional/admin/topic/topiceditor.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/topic/topiceditor.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/topic/topiceditor.thtml	2006-09-15 22:09:47.000000000 -0500
@@ -1,35 +1,35 @@
                             <form action="{site_admin_url}/topic.php" method="post" enctype="multipart/form-data">
                                 <table border="0" cellspacing="0" cellpadding=2 width="100%">
                                     <tr>
-                                        <td align="right">{lang_topicid}:</td>
+                                        <td class="alignright">{lang_topicid}:</td>
                                         <td><input type="text" size="20" name="tid" value="{topic_id}"> {lang_donotusespaces}</td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_sortorder}:</td>
+                                        <td class="alignright">{lang_sortorder}:</td>
                                         <td>{sort_order}</td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_storiesperpage}:</td>
+                                        <td class="alignright">{lang_storiesperpage}:</td>
                                         <td><input type="text" size="3" maxlength="3" name="limitnews" value="{story_limit}"> ({lang_defaultis} {default_limit})</td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_topicname}:</td>
+                                        <td class="alignright">{lang_topicname}:</td>
                                         <td><input type="text" size="48" name="topic" value="{topic_name}"></td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_topicimage}:</td>
+                                        <td class="alignright">{lang_topicimage}:</td>
                                         <td><input type="text" size="48" maxlength="{max_url_length}" name="imageurl" value="{image_url}"></td>
                                     </tr>
-									<tr>
-										<td align="right">{lang_uploadimage}:</td>
-										<td><input type="file" name="newicon"> ({lang_maxsize} {icon_dimensions})</td>
-									</tr>
                                     <tr>
-                                        <td align="right">{lang_defaulttopic}:</td>
+                                        <td class="alignright">{lang_uploadimage}:</td>
+                                        <td><input type="file" name="newicon"> ({lang_maxsize} {icon_dimensions})</td>
+                                    </tr>
+                                    <tr>
+                                        <td class="alignright">{lang_defaulttopic}:</td>
                                         <td><input type="checkbox" name="is_default" {default_checked}> ({lang_defaulttext})</td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_archivetopic}:</td>
+                                        <td class="alignright">{lang_archivetopic}:</td>
                                         <td><input type="checkbox" name="is_archive" {archive_checked} {archive_disabled}> ({lang_archivetext})</td>
                                     </tr>
                                     <tr>
@@ -39,11 +39,11 @@
                                         <td colspan="2"><b>{lang_accessrights}</b></td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_owner}:</td>
-                                        <td>{owner_username}<input type="hidden" name="owner_id" value="{owner_id}"></td>
+                                        <td class="alignright">{lang_owner}:</td>
+                                        <td>{owner_name}<input type="hidden" name="owner_id" value="{owner_id}"></td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_group}:</td>
+                                        <td class="alignright">{lang_group}:</td>
                                         <td>
                                             {group_dropdown}
                                         </td>
@@ -71,10 +71,10 @@
                                     <tr><td>&nbsp;</td></tr>
                                     <tr>
                                         <td colspan="2">
-                                            <input type="submit" value="{lang_save}" name="mode"> 
+                                            <input type="submit" value="{lang_save}" name="mode">
                                             <input type="submit" value="{lang_cancel}" name="mode">
                                             {delete_option}
                                         </td>
                                     </tr>
                                 </table>
-                            </form> 
+                            </form>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/topic/topiclist.thtml 1.4.1.src/layout/professional/admin/topic/topiclist.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/topic/topiclist.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/topic/topiclist.thtml	2006-03-10 10:01:11.000000000 -0600
@@ -4,7 +4,7 @@
                                         <td rowspan="2">
                                             <img src="{layout_url}/images/icons/topic.png" alt="">
                                         </td>
-                                        <td>[ <a href="{site_admin_url}/topic.php?mode=edit">{lang_newtopic}</a> | <a href="{site_admin_url}">{lang_adminhome}</a> ]</td>
+                                        <td><a href="{site_admin_url}/topic.php?mode=edit">{lang_newtopic}</a> | <a href="{site_admin_url}">{lang_adminhome}</a></td>
                                     </tr>
                                     <tr>
                                         <td>{lang_instructions}</td>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/trackback/pingbackform.thtml 1.4.1.src/layout/professional/admin/trackback/pingbackform.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/trackback/pingbackform.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/trackback/pingbackform.thtml	2006-09-15 22:09:47.000000000 -0500
@@ -2,13 +2,13 @@
     <p>{lang_explain}</p>
     <table border="0" cellspacing="0" cellpadding="2" width="100%">
         <tr>
-            <td align="right"><b>{lang_pingback_url}:</b></td>
+            <td class="alignright"><b>{lang_pingback_url}:</b></td>
             <td>
-                <input type="text" size="50" maxsize="{max_url_length}" name="target" value="{target_url}">
+                <input type="text" size="50" maxlength="{max_url_length}" name="target" value="{target_url}">
             </td>
         </tr>
         <tr>
-            <td align="right">{lang_site_url}:</td>
+            <td class="alignright">{lang_site_url}:</td>
             <td>
                 <b>{site_url}</b>
             </td>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/trackback/pingform.thtml 1.4.1.src/layout/professional/admin/trackback/pingform.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/trackback/pingform.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/trackback/pingform.thtml	2006-09-15 22:09:47.000000000 -0500
@@ -3,18 +3,18 @@
 <form action="{php_self}" method="POST">
     <table border="0" cellspacing="0" cellpadding="2" width="100%">
         <tr>
-            <td align="center">{pingback_button}</td>
+            <td class="aligncenter">{pingback_button}</td>
             <td>{lang_pingback_short} </td>
         </tr>
         <tr>
-            <td align="center">{ping_button}</td>
+            <td class="aligncenter">{ping_button}</td>
             <td>{lang_ping_short} </td>
         </tr>
         <tr>
-            <td align="center">{trackback_button}</td>
+            <td class="aligncenter">{trackback_button}</td>
             <td>{lang_trackback_short} </td>
         </tr>
     </table>
     {hidden_input_fields}
-    <p class="warningsmall" align="center">{lang_may_take_a_while}</p>
+    <p class="warningsmall aligncenter">{lang_may_take_a_while}</p>
 </form>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/trackback/serviceeditor.thtml 1.4.1.src/layout/professional/admin/trackback/serviceeditor.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/trackback/serviceeditor.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/trackback/serviceeditor.thtml	2006-09-15 22:09:47.000000000 -0500
@@ -1,29 +1,29 @@
 <form action="{site_admin_url}/trackback.php" method="POST">
     <table border="0" cellspacing="0" cellpadding="2" width="100%">
         <tr>
-            <td align="right">{lang_name}:</td>
+            <td class="alignright">{lang_name}:</td>
             <td>
                 <input type="text" size="48" maxlength="80" name="service_name" value="{service_name}">
             </td>
         </tr>
         <tr>
-            <td align="right">{lang_enabled}:</td>
+            <td class="alignright">{lang_enabled}:</td>
             <td><input type="checkbox" name="is_enabled" {is_enabled}></td>
         </tr>
         <tr>
-            <td align="right">{lang_site_url}:</td>
+            <td class="alignright">{lang_site_url}:</td>
             <td>
-                <input type="text" size="50" maxsize="{max_url_length}" name="service_site_url" value="{service_site_url}">
+                <input type="text" size="50" maxlength="{max_url_length}" name="service_site_url" value="{service_site_url}">
             </td>
         </tr>
         <tr>
-            <td align="right">{lang_ping_url}:</td>
+            <td class="alignright">{lang_ping_url}:</td>
             <td>
-                <input type="text" size="50" maxsize="{max_url_length}" name="service_ping_url" value="{service_ping_url}">
+                <input type="text" size="50" maxlength="{max_url_length}" name="service_ping_url" value="{service_ping_url}">
             </td>
         </tr>
         <tr>
-            <td align="right" valign="top">{lang_method}:</td>
+            <td class="alignright" style="vertical-align:top;">{lang_method}:</td>
             <td>
                 <input type="radio" name="method" value="standard" {standard_is_checked}> {lang_method_standard} (<code>weblogUpdates.ping</code>)<br>
                 <input type="radio" name="method" value="extended" {extended_is_checked}> {lang_method_extended} (<code>weblogUpdates.extendedPing</code>)
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/trackback/trackbackeditor.thtml 1.4.1.src/layout/professional/admin/trackback/trackbackeditor.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/trackback/trackbackeditor.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/trackback/trackbackeditor.thtml	2006-09-15 22:09:47.000000000 -0500
@@ -2,33 +2,33 @@
     <p>{lang_explain}</p>
     <table border="0" cellspacing="0" cellpadding="2" width="100%">
         <tr>
-            <td align="right"><b>{lang_trackback_url}:</b></td>
+            <td class="alignright"><b>{lang_trackback_url}:</b></td>
             <td>
-                <input type="text" size="50" maxsize="{max_url_length}" name="target" value="{target_url}">
+                <input type="text" size="50" maxlength="{max_url_length}" name="target" value="{target_url}">
             </td>
         </tr>
         <tr>
-            <td align="right">{lang_blog_name}:</td>
+            <td class="alignright">{lang_blog_name}:</td>
             <td>
-                <input type="text" size="48" maxlength="80" name="blog_name" value="{blog_name}">
+                <input type="text" size="50" maxlength="80" name="blog_name" value="{blog_name}">
             </td>
         </tr>
         <tr>
-            <td align="right"><b>{lang_entry_url}:</b></td>
+            <td class="alignright"><b>{lang_entry_url}:</b></td>
             <td>
-                <input type="text" size="50" maxsize="{max_url_length}" name="url" value="{url}">
+                <input type="text" size="50" maxlength="{max_url_length}" name="url" value="{url}">
             </td>
         </tr>
         <tr>
-            <td align="right">{lang_title}:</td>
+            <td class="alignright">{lang_title}:</td>
             <td>
-                <input type="text" size="48" maxlength="255" name="title" value="{title}">
+                <input type="text" size="50" maxlength="255" name="title" value="{title}">
             </td>
         </tr>
         <tr>
-            <td align="right" valign="top">{lang_excerpt}:</td>
+            <td class="alignright" style="vertical-align:top;">{lang_excerpt}:</td>
             <td>
-                <textarea name="excerpt" cols="50" rows="8">{excerpt}</textarea><br>
+                <textarea name="excerpt" style="width:100%" rows="8">{excerpt}</textarea><br>
                 <p class="warningsmall">{lang_excerpt_truncated}</p>
             </td>
         </tr>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/user/batchdelete_options.thtml 1.4.1.src/layout/professional/admin/user/batchdelete_options.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/user/batchdelete_options.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/layout/professional/admin/user/batchdelete_options.thtml	2006-09-21 19:39:42.000000000 -0500
@@ -0,0 +1 @@
+<input type="radio" name="usr_type" value="{sel_id}"{selector}> <strong>{lang_description}:</strong>&nbsp;{lang_text_start} <input style="text-align:center" type="text" name="usr_time[{sel_id}]" value="{id_value}" size="3"{selector}>{lang_text_end}<br>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/user/batchdelete.thtml 1.4.1.src/layout/professional/admin/user/batchdelete.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/user/batchdelete.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/layout/professional/admin/user/batchdelete.thtml	2006-11-01 21:23:30.000000000 -0600
@@ -0,0 +1,8 @@
+<form style="display:inline" action="{site_admin_url}/user.php?mode=batchdelete" method="post">
+    <input type="hidden" name="mode" value="batchdelete">
+    <input type="hidden" name="usr_type" value="{usr_type}">
+    <input type="hidden" name="usr_time[{usr_type}]" value="{usr_time}">
+    {lang_instruction}
+    <p>{options_list}</p>
+    <input type="submit" name="submit" value="{lang_updatelist}">&nbsp;
+</form>
diff -ruN 1.4.0sr5-1.src/layout/professional/admin/user/edituser.thtml 1.4.1.src/layout/professional/admin/user/edituser.thtml
--- 1.4.0sr5-1.src/layout/professional/admin/user/edituser.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/admin/user/edituser.thtml	2006-09-15 22:09:47.000000000 -0500
@@ -1,48 +1,48 @@
                             <form action="{site_admin_url}/user.php" method="post">
                                 <table border="0" cellspacing="0" cellpadding="3" width="100%">
                                     <tr>
-                                        <td align="right">{lang_userid}:</td>
+                                        <td class="alignright">{lang_userid}:</td>
                                         <td>{user_id}<input type="hidden" name="uid" value="{user_id}"></td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_regdate}:</td>
+                                        <td class="alignright">{lang_regdate}:</td>
                                         <td>
                                             <input type="hidden" name="regdate" value="{regdate_timestamp}">{user_regdate}</td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_lastlogin}:</td>
+                                        <td class="alignright">{lang_lastlogin}:</td>
                                         <td>{user_lastlogin}</td>
                                     </tr>
                                     <tr>
-                                        <td align="right" valign="top">{lang_username}:</td>
+                                        <td class="alignright" style="vertical-align:top;">{lang_username}:</td>
                                         <td>
-                                            <input type="text" size="16" maxlength="16" name="username" value="{username}"> {do_not_use_spaces}<br>
+                                            <input type="text" size="16" maxlength="16" name="username" value="{username}"><br>
                                             {user_photo}<br>
                                             {lang_delete_photo} {delete_photo_option}
                                         </td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_fullname}:</td>
+                                        <td class="alignright">{lang_fullname}:</td>
                                         <td><input type="text" size="48" maxlength="80" name="fullname" value="{user_fullname}"></td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_password}:</td>
+                                        <td class="alignright">{lang_password}:</td>
                                         <td><input type="password" size="16" name="passwd" value=""></td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_password_conf}:</td>
+                                        <td class="alignright">{lang_password_conf}:</td>
                                         <td><input type="password" size="16" name="passwd_conf" value=""></td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_emailaddress}:</td>
+                                        <td class="alignright">{lang_emailaddress}:</td>
                                         <td><input type="text" size="48" maxlength="255" name="email" value="{user_email}"></td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_homepage}:</td>
+                                        <td class="alignright">{lang_homepage}:</td>
                                         <td><input type="text" size="48" maxlength="255" name="homepage" value="{user_homepage}"></td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_user_status}:</td>
+                                        <td class="alignright">{lang_user_status}:</td>
                                         <td>{user_status}</td>
                                     </tr>
                                     <tr>
@@ -53,8 +53,8 @@
                                     <tr>
                                         <td colspan="2">
                                             <input type="submit" value="{lang_save}" name="mode"> 
-                                            {delete_option}
                                             <input type="submit" value="{lang_cancel}" name="mode"> 
+                                            {delete_option}
                                         </td>
                                     </tr>
                                 </table>
diff -ruN 1.4.0sr5-1.src/layout/professional/advanced_editor_header.thtml 1.4.1.src/layout/professional/advanced_editor_header.thtml
--- 1.4.0sr5-1.src/layout/professional/advanced_editor_header.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/advanced_editor_header.thtml	2006-10-14 12:02:59.000000000 -0500
@@ -1,5 +1,6 @@
-
 <!-- Load Advanced Editor -->
-<link rel="stylesheet" type="text/css" href="{site_url}/fckeditor/editor/css/fck_editorarea.css">
 <script type="text/javascript" src="{site_url}/fckeditor/fckeditor.js"></script>
-<!-- End of Editor Load -->
\ No newline at end of file
+<script type="text/javascript">
+    var geeklogEditorBaseUrl = '{site_url}';
+</script>
+<!-- End of Editor Load -->
diff -ruN 1.4.0sr5-1.src/layout/professional/archivestorytext.thtml 1.4.1.src/layout/professional/archivestorytext.thtml
--- 1.4.0sr5-1.src/layout/professional/archivestorytext.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/archivestorytext.thtml	2006-10-14 12:29:44.000000000 -0500
@@ -1,27 +1,20 @@
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
-    <tr>
-      <td width="100%" class="story-title"><img src="{site_url}/images/speck.gif" width="1" height="0" alt=""><h2>{start_storylink_anchortag}{story_title}{end_storylink_anchortag}</h2></td>
-      <td class="story-title" width="5%" align="right" nowrap>&nbsp;{email_icon}&nbsp;{print_icon}&nbsp;{pdf_icon}</td>
-    </tr>
-    <tr>
-      <td class="story-box" colspan="2">
-            <table border="0" cellpadding="3" cellspacing="0" width="100%">
-                <tr><td class="story-information" width="100%">
-                        {story_date}<br>
-                        {lang_contributed_by} {start_contributedby_anchortag}{contributedby_user}{end_contributedby_anchortag}<br>
-                        {lang_views} {story_hits}
-                </td></tr>
-                <tr><td>{story_anchortag_and_image}{story_introtext}</td></tr>
-            </table>
-            <table border="0" cellpadding="3" cellspacing="0" width="100%">
-              <tr><td align="center">{edit_link}&nbsp;{page_selector}<br>
-                                     {readmore_link} {post_comment_link}<br>
-                                     {start_comments_anchortag}{comments_with_count}{end_comments_anchortag} {start_trackbacks_anchortag}{trackbacks_with_count}{end_trackbacks_anchortag}
-              </td></tr>
-            </table>
-      </td>
-    </tr>
-  </table>
-<table cellspacing="0" cellpadding="0" align="center" width="100%" class="block-divider">
-    <tr><td><img src="{site_url}/images/speck.gif" width="1" height="2" alt=""></td></tr>
-</table> 
+<div class="story">
+    <span class="story-icons">
+        &nbsp;{email_icon}&nbsp;{print_icon}&nbsp;{pdf_icon}
+    </span>
+    <h1>{start_storylink_anchortag}{story_title}{end_storylink_anchortag}</h1>
+    <div class="story-information">
+        {story_date}<br>
+        {lang_contributed_by} {start_contributedby_anchortag}{contributedby_author}{end_contributedby_anchortag}<br>
+        {lang_views} {story_hits}
+    </div>
+    <div class="story-body">
+        {story_anchortag_and_image}{story_introtext}
+    </div>
+    <div class="story-footer">
+        {edit_link}&nbsp;{page_selector}<br>
+        {readmore_link} {post_comment_link}<br>
+        {start_comments_anchortag}{comments_with_count}{end_comments_anchortag} {start_trackbacks_anchortag}{trackbacks_with_count}{end_trackbacks_anchortag}
+    </div>
+</div>
+<div class="block-divider"> </div>
diff -ruN 1.4.0sr5-1.src/layout/professional/article/article.thtml 1.4.1.src/layout/professional/article/article.thtml
--- 1.4.0sr5-1.src/layout/professional/article/article.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/article/article.thtml	2006-09-15 22:09:48.000000000 -0500
@@ -1,7 +1,7 @@
         {formatted_article} {send_trackback_link}
         <table border="0" width="100%">
-            <tr><td valign="top">{whats_related}</td>
-                <td valign="top">{story_options}</td></tr>
+            <tr><td style="vertical-align:top;">{whats_related}</td>
+                <td style="vertical-align:top;">{story_options}</td></tr>
         </table>
         {trackback}
         {commentbar}
diff -ruN 1.4.0sr5-1.src/layout/professional/article/printable.thtml 1.4.1.src/layout/professional/article/printable.thtml
--- 1.4.0sr5-1.src/layout/professional/article/printable.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/article/printable.thtml	2006-04-13 04:05:02.000000000 -0500
@@ -12,7 +12,7 @@
 
     <p>{story_bodytext}</p>
 
-    <p><a href="{site_url}/article.php?story={story_id}#comments">{story_comments} {lang_comments}</a></p>
+    <p>{start_comments_anchortag}{comments_with_count}{end_comments_anchortag}</p>
 
     <hr>
 
diff -ruN 1.4.0sr5-1.src/layout/professional/blockfooter-left.thtml 1.4.1.src/layout/professional/blockfooter-left.thtml
--- 1.4.0sr5-1.src/layout/professional/blockfooter-left.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/blockfooter-left.thtml	2006-10-14 14:08:33.000000000 -0500
@@ -1,2 +1,5 @@
-</td></tr></table></td></tr></table>
-<table cellspacing="0" cellpadding="0" align="center" width="90%" class="block-divider-left"><tr><td><img src="{site_url}/images/speck.gif" width="1" height="1" alt=""></td></tr></table>
+</div>
+<div class="aligncenter">
+    <div class="block-divider-left"></div>
+</div>
+
diff -ruN 1.4.0sr5-1.src/layout/professional/blockfooter-related.thtml 1.4.1.src/layout/professional/blockfooter-related.thtml
--- 1.4.0sr5-1.src/layout/professional/blockfooter-related.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/blockfooter-related.thtml	2006-10-14 14:08:33.000000000 -0500
@@ -1 +1,2 @@
-</td></tr></table></td></tr></table><br>
+</div>
+
diff -ruN 1.4.0sr5-1.src/layout/professional/blockfooter-right.thtml 1.4.1.src/layout/professional/blockfooter-right.thtml
--- 1.4.0sr5-1.src/layout/professional/blockfooter-right.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/blockfooter-right.thtml	2006-10-14 14:08:33.000000000 -0500
@@ -1,2 +1,4 @@
-</td></tr></table></td></tr></table>
-<table cellspacing="0" cellpadding="0" align="center" width="90%" class="block-divider-right"><tr><td><img src="{site_url}/images/speck.gif" width="1" height="1" alt=""></td></tr></table>
+</div>
+<div class="aligncenter">
+    <div class="block-divider-right"></div>
+</div>
diff -ruN 1.4.0sr5-1.src/layout/professional/blockfooter.thtml 1.4.1.src/layout/professional/blockfooter.thtml
--- 1.4.0sr5-1.src/layout/professional/blockfooter.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/blockfooter.thtml	2006-10-14 14:08:33.000000000 -0500
@@ -1,2 +1,4 @@
-</td></tr></table></td></tr></table><br>
-<table cellspacing="0" cellpadding="0" align="center" width="100%" class="block-divider"><tr><td><img src="{site_url}/images/speck.gif" width="1" height="2" alt=""></td></tr></table>
+</div>
+<div class="aligncenter">
+    <div class="block-divider"></div>
+</div>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/layout/professional/blockheader-left.thtml 1.4.1.src/layout/professional/blockheader-left.thtml
--- 1.4.0sr5-1.src/layout/professional/blockheader-left.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/blockheader-left.thtml	2006-10-14 14:08:33.000000000 -0500
@@ -1,6 +1,5 @@
-<table width="100%" border="0" cellspacing="0" cellpadding="10" class="blocktable-left">
-  <tr>
-    <td>
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
-    <tr><td height="22" align="left" valign="middle" class="block-title-left">{block_title}</td><td align="right">{block_help}</td>
-	</tr><tr><td colspan="2" width="100%" class="block-info-left">
+<div class="block-box-left">
+    <span class="block-helpicon">
+        {block_help}
+    </span>
+    <h2>{block_title}</h2>
diff -ruN 1.4.0sr5-1.src/layout/professional/blockheader-message.thtml 1.4.1.src/layout/professional/blockheader-message.thtml
--- 1.4.0sr5-1.src/layout/professional/blockheader-message.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/blockheader-message.thtml	2006-09-15 22:09:47.000000000 -0500
@@ -1,8 +1,8 @@
 <table border="0" cellpadding="0" cellspacing="0" width="95%" style="margin:10px;border:1px solid black;">
     <tr>
         <td class="blocktitle" width="10" style="border:0px;background:url({layout_url}/images/header-bg.png) #1A3955;">{showhide}</td>
-        <td class="blocktitle" width="90%" align="left" style="border:0px;color:white;background:url({layout_url}/images/header-bg.png) #1A3955;padding:6px 3px 3px 3px;font-weight: bold;">{block_title}</td>
-        <td class="blocktitle" width="20" valign="middle" style="border:0px;text-align:right;background:url({layout_url}/images/header-bg.png) #1A3955;" nowrap>{block_help}&nbsp;</td>
+        <td class="blocktitle" width="90%" style="text-align:left;border:0px;color:white;background:url({layout_url}/images/header-bg.png) #1A3955;padding:6px 3px 3px 3px;font-weight: bold;">{block_title}</td>
+        <td class="blocktitle" width="20" style="vertical-align:middle;border:0px;text-align:right;background:url({layout_url}/images/header-bg.png) #1A3955;" nowrap>{block_help}&nbsp;</td>
     </tr>
     <tr>
         <td width="100%" colspan="3" style="padding:5px 15px 5px 15px;border-top:3px solid black;padding-bottom:5px;background:#E7E7E7;font-weight:bold;">
diff -ruN 1.4.0sr5-1.src/layout/professional/blockheader-related.thtml 1.4.1.src/layout/professional/blockheader-related.thtml
--- 1.4.0sr5-1.src/layout/professional/blockheader-related.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/blockheader-related.thtml	2006-10-14 14:08:33.000000000 -0500
@@ -1,6 +1,5 @@
-<table width="100%" border="0" cellspacing="0" cellpadding="0" class="blocktable">
-  <tr>
-    <td>
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
-    <tr><td height="22" align="left" valign="middle" class="block-title">{block_title}</td><td align="right">{block_help}</td>
-	</tr><tr><td colspan="2" width="100%" class="block-info">
+<div class="block-box-left">
+    <span class="block-helpicon">
+        {block_help}
+    </span>
+    <h2>{block_title}</h2>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/layout/professional/blockheader-right.thtml 1.4.1.src/layout/professional/blockheader-right.thtml
--- 1.4.0sr5-1.src/layout/professional/blockheader-right.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/blockheader-right.thtml	2006-10-14 14:08:33.000000000 -0500
@@ -1,6 +1,5 @@
-<table width="100%" border="0" cellspacing="0" cellpadding="10" class="blocktable-right">
-  <tr>
-    <td>
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
-    <tr><td height="22" align="left" valign="middle" class="block-title-right">{block_title}</td><td align="right">{block_help}</td>
-	</tr><tr><td colspan="2" width="100%" class="block-info-right">
+<div class="block-box-right">
+    <span class="block-helpicon">
+        {block_help}
+    </span>
+    <h2>{block_title}</h2>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/layout/professional/blockheader.thtml 1.4.1.src/layout/professional/blockheader.thtml
--- 1.4.0sr5-1.src/layout/professional/blockheader.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/blockheader.thtml	2006-10-14 14:08:33.000000000 -0500
@@ -1,6 +1,5 @@
-<table width="100%" border="0" cellspacing="0" cellpadding="0" class="blocktable">
-  <tr>
-    <td>
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
-    <tr><td height="22" align="left" valign="middle" class="block-title">{block_title}</td><td align="right">{block_help}</td>
-	</tr><tr><td colspan="2" width="100%" class="block-info">
+<div class="block-box">
+    <span class="block-helpicon">
+        {block_help}
+    </span>
+    <h2>{block_title}</h2>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/layout/professional/calendar/addeventoption.thtml 1.4.1.src/layout/professional/calendar/addeventoption.thtml
--- 1.4.0sr5-1.src/layout/professional/calendar/addeventoption.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/calendar/addeventoption.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,6 +0,0 @@
-                                            <form method="post" action="{site_url}/submit.php?type=event">
-                                                <input type="submit" name="action" value="{lang_addevent}">
-                                                <input type="hidden" name="month" value="{cal_curmo_num}">
-                                                <input type="hidden" name="year" value="{cal_curyr_num}">
-                                                <input type="hidden" name="mode" value="{mode}">
-                                            </form>
diff -ruN 1.4.0sr5-1.src/layout/professional/calendar/addevent.thtml 1.4.1.src/layout/professional/calendar/addevent.thtml
--- 1.4.0sr5-1.src/layout/professional/calendar/addevent.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/calendar/addevent.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,41 +0,0 @@
-                            <table cellpadding="2" cellspacing="2" border="0">
-                                <tr>
-                                    <td>{intro_msg}</td>
-                                </tr>
-				                <tr>
-                                    <td>
-                            	        <table cellpadding="2" cellspacing="2" border="0">
-                                            <tr>
-                                                <td align="right"><b>{lang_event}:</b></td>
-                                                <td>{event_begin_anchortag}{event_title}{event_end_anchortag}</td>
-                                            </tr>
-                                            <tr>
-                                                <td align="right"><b>{lang_starts}:</b></td>
-                                                <td>{event_start}</td>
-                                            </tr>
-                                            <tr>
-                                                <td align="right"><b>{lang_ends}:</b></td>
-                                                <td>{event_end}</td>
-                                            </tr>
-                                            <tr>
-                                                <td align="right" valign="top"><b>{lang_where}:</b></td>
-                                                <td>{event_location}</td>
-                                            </tr>
-                                            <tr>
-                                                <td align="right"><b>{lang_description}:</b></td>
-                                                <td>{event_description}</td>
-                                            </tr>
-                                            <tr>
-                                                <td colspan="2">
-                            		                <form name="userevent" method="post" action="{site_url}/calendar_event.php">
-                                                        <input type="hidden" name="action" value="saveuserevent">
-                                                        <input type="hidden" name="eid" value="{event_id}">
-                                                        <input type="submit" value="{lang_addtomycalendar}">
-                            		                </form>
-                                                </td>
-                                            </tr>
-                                        </table>
-                                    </td>
-                                </tr>
-                            </table>
-
diff -ruN 1.4.0sr5-1.src/layout/professional/calendar/addremoveevent.thtml 1.4.1.src/layout/professional/calendar/addremoveevent.thtml
--- 1.4.0sr5-1.src/layout/professional/calendar/addremoveevent.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/calendar/addremoveevent.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1 +0,0 @@
-&nbsp;<font size="-2">[{addremove_begin_anchortag}{lang_addremovefromcal}{addremove_end_anchortag}]</font>
diff -ruN 1.4.0sr5-1.src/layout/professional/calendar/calendarday.thtml 1.4.1.src/layout/professional/calendar/calendarday.thtml
--- 1.4.0sr5-1.src/layout/professional/calendar/calendarday.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/calendar/calendarday.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,4 +0,0 @@
-                                        <td valign="top" class="{cal_day_style}">
-                                            {cal_day_anchortags}
-                                            {cal_day_entries}
-                                        </td>
diff -ruN 1.4.0sr5-1.src/layout/professional/calendar/calendarevent.thtml 1.4.1.src/layout/professional/calendar/calendarevent.thtml
--- 1.4.0sr5-1.src/layout/professional/calendar/calendarevent.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/calendar/calendarevent.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1 +0,0 @@
-                                            {event_anchortags}
diff -ruN 1.4.0sr5-1.src/layout/professional/calendar/calendar.thtml 1.4.1.src/layout/professional/calendar/calendar.thtml
--- 1.4.0sr5-1.src/layout/professional/calendar/calendar.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/calendar/calendar.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,103 +0,0 @@
-
-                                <!-- Begin Calendar -->
-
-                                <table width="100%" cellpadding="5" cellspacing="0" border="0" class="cal-header">
-                                    <tr align="center" class="dayview_times">
-                                        <td width="33%" align="center"><a href="{site_url}/calendar.php?mode={mode}&amp;view=day">{lang_day}</a></td>
-                                        <td width="33%" align="center"><a href="{site_url}/calendar.php?mode={mode}&amp;view=week">{lang_week}</a></td>
-                                        <td width="33%" align="center"><b>{lang_month}</b></td>
-                                    </tr>
-                                </table><br>
-                                <table width="100%" cellpadding="5" cellspacing="1" border="0" class="cal-body">
-                                    <tr align="center">
-                                        <td colspan="8" class="cal-month">
-                                            <table border="0" width="100%">
-                                                <tr>
-                                                    <td class="cal-month" valign="top">
-                                                        {previous_months_calendar}
-                                                    </td>
-                                                    <td width="100%" class="cal-month" align="center">
-                                                        <table border="0" cellpadding="5" cellspacing="0">
-                                                            <tr>
-                                                                <td colspan="2" align="center"> 
-						                    <form method="post" action="calendar.php">
-                                                                        <input type="hidden" name="mode" value="{mode}">
-                                                                        <select name="month" onChange="this.form.submit()">
-                                                                            <option value="1" {selected_jan}>{lang_january}</option>
-                                                                            <option value="2" {selected_feb}>{lang_february}</option>
-                                                                            <option value="3" {selected_mar}>{lang_march}</option>
-                                                                            <option value="4" {selected_apr}>{lang_april}</option>
-                                                                            <option value="5" {selected_may}>{lang_may}</option>
-                                                                            <option value="6" {selected_jun}>{lang_june}</option>
-                                                                            <option value="7" {selected_jul}>{lang_july}</option>
-                                                                            <option value="8" {selected_aug}>{lang_august}</option>
-                                                                            <option value="9" {selected_sep}>{lang_september}</option>
-                                                                            <option value="10" {selected_oct}>{lang_october}</option>
-                                                                            <option value="11" {selected_nov}>{lang_november}</option>
-                                                                            <option value="12" {selected_dec}>{lang_december}</option>
-                                                                        </select>&nbsp;
-                                                                        <select name="year" onChange="this.form.submit()">
-                                                                        {year_options}
-                                                                        </select>
-                                                                    </form><br>
-                                                                </td>
-                                                            </tr>
-                                                            <tr>
-                                                                <td align="right">
-                                                                    {add_event_option} 
-                                                                </td>
-                                                                <td>
-                                                                    {personal_calendar_option} 
-                                                                    {master_calendar_option}
-                                                                </td>
-                                                            </tr>
-                                                        </table>
-                                                    </td>
-                                                    <td class="cal-month" valign="top">
-                                                        {next_months_calendar}
-                                                    </td>
-                                            </table>
-                                        </td>
-                                    </tr>
-                                    <tr>
-                                        <td>&nbsp;</td>
-                                        <td width="15%" class="cal-day">{lang_sunday}</td>
-                                        <td width="14%" class="cal-day">{lang_monday}</td>
-                                        <td width="14%" class="cal-day">{lang_tuesday}</td>
-                                        <td width="14%" class="cal-day">{lang_wednesday}</td>
-                                        <td width="14%" class="cal-day">{lang_thursday}</td>
-                                        <td width="14%" class="cal-day">{lang_friday}</td>
-                                        <td width="15%" class="cal-day">{lang_saturday}</td>
-                                    </tr>
-                                    {cal_week}
-                                </table>
-                                <table align="center">
-                                    <tr>
-                                        <td>
-                                            <form method="post" action="calendar.php">
-                                                <input type="submit" value="<<">
-                                                <input type="hidden" name="month" value="{cal_prevmo_num}">
-                                                <input type="hidden" name="year" value="{cal_prevyr_num}">
-                                                <input type="hidden" name="mode" value="{mode}">
-                                            </form>
-                                        </td>
-                                        <td>
-                                            {add_event_option}
-                                        </td>
-                                        <td>
-                                        {personal_calendar_option}
-                                        {master_calendar_option}
-                                        </td>
-                                        <td>
-                                            <form method="post" action="calendar.php">
-                                                <input type="submit" value=">>">
-                                                <input type="hidden" name="month" value="{cal_nextmo_num}">
-                                                <input type="hidden" name="year" value="{cal_nextyr_num}">
-                                                <input type="hidden" name="mode" value="{mode}">
-                                            </form>
-                                        </td>
-                                    </tr>
-                                </table>
-
-                                <!-- End Calendar -->
-                                
diff -ruN 1.4.0sr5-1.src/layout/professional/calendar/calendarweek.thtml 1.4.1.src/layout/professional/calendar/calendarweek.thtml
--- 1.4.0sr5-1.src/layout/professional/calendar/calendarweek.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/calendar/calendarweek.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,4 +0,0 @@
-                                    <tr>
-                                        <td class="cal-weekpointers" valign="middle" align="center"><b><a href="{site_url}/calendar.php?mode={mode}&amp;view=week&amp;month={wmonth}&amp;day={wday}&amp;year={wyear}">&gt;&gt;</a></b></td>
-                                        {cal_days}
-                                    </tr>
diff -ruN 1.4.0sr5-1.src/layout/professional/calendar/dayview/column.thtml 1.4.1.src/layout/professional/calendar/dayview/column.thtml
--- 1.4.0sr5-1.src/layout/professional/calendar/dayview/column.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/calendar/dayview/column.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1 +0,0 @@
-<td class="cal-dayx-times2">{event_entry}</td>
diff -ruN 1.4.0sr5-1.src/layout/professional/calendar/dayview/dayview.thtml 1.4.1.src/layout/professional/calendar/dayview/dayview.thtml
--- 1.4.0sr5-1.src/layout/professional/calendar/dayview/dayview.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/calendar/dayview/dayview.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,125 +0,0 @@
-<table width="100%" border="0" cellpadding="5" cellspacing="0" class="cal-header">
-  <tr align="center">
-    <td width="33%" align="center"><b>{lang_day}</b></td>
-    <td width="33%" align="center"><a href="{site_url}/calendar.php?mode={mode}&amp;view=week">{lang_week}</a></td>
-    <td width="33%" align="center"><a href="{site_url}/calendar.php?mode={mode}">{lang_month}</a></td>
-  </tr>
-</table>
-<br>
-<table cellpadding="2" cellspacing="1" border="0" width="100%" class="cal-dayx-body">
-                                <tr>
-                                    <td colspan="2" class="cal-dayx-cur"><table width="100%" border="0">
-                                      <tr>
-                                        <td colspan="2" class="cal-dayx-cur"><a href="{site_url}/calendar.php?mode={mode}&amp;view=day&amp;month={prevmonth}&amp;day={prevday}&amp;year={prevyear}">&lt;&lt;</a>&nbsp;&nbsp;{currentday}&nbsp;&nbsp;<a href="{site_url}/calendar.php?mode={mode}&amp;view=day&amp;month={nextmonth}&amp;day={nextday}&amp;year={nextyear}">&gt;&gt;</a></td>
-                                        <td>&nbsp;</td>
-                                      </tr>
-                                      <tr>
-                                        <td colspan="2" class="cal-dayx-subcur">{calendar_title} {calendar_toggle}</td>
-                                        <td>&nbsp;</td>
-                                      </tr>
-                                    </table></td>
-                                
-                                <tr>
-                                    <td width="1%" nowrap class="cal-dayx-weekevent"><div align="right">{lang_week} {week_num}</div></td>
-                                    <td>{allday_events}</td>
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=0">{0_hour}</a></div></td>
-                                    {0_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=1">{1_hour}</a></div></td>
-                                    {1_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=2">{2_hour}</a></div></td>
-                                    {2_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=3">{3_hour}</a></div></td>
-                                    {3_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=4">{4_hour}</a></div></td>
-                                    {4_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=5">{5_hour}</a></div></td>
-                                    {5_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=6">{6_hour}</a></div></td>
-                                    {6_cols}
-                                </tr>
-
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=7">{7_hour}</a></div></td>
-                                    {7_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=8">{8_hour}</a></div></td>
-                                    {8_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=9">{9_hour}</a></div></td>
-                                    {9_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=10">{10_hour}</a></div></td>
-                                    {10_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=11">{11_hour}</a></div></td>
-                                    {11_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=12">{12_hour}</a></div></td>
-                                    {12_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=13">{13_hour}</a></div></td>
-                                    {13_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=14">{14_hour}</a></div></td>
-                                    {14_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=15">{15_hour}</a></div></td>
-                                    {15_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=16">{16_hour}</a></div></td>
-                                    {16_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=17">{17_hour}</a></div></td>
-                                    {17_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=18">{18_hour}</a></div></td>
-                                    {18_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=19">{19_hour}</a></div></td>
-                                    {19_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=20">{20_hour}</a></div></td>
-                                    {20_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=21">{21_hour}</a></div></td>
-                                    {21_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=22">{22_hour}</a></div></td>
-                                    {22_cols}
-                                </tr>
-                                <tr>
-                                    <td width="1%" valign="top" class="cal-dayx-times"><div align="right"><a href="{site_url}/submit.php?type=event&amp;mode={mode}&amp;month={month}&amp;day={day}&amp;year={year}&amp;hour=23">{23_hour}</a></div></td>
-                                    {23_cols}
-                                </tr>
-</table>
-<br>
-                            {quickadd_form}
diff -ruN 1.4.0sr5-1.src/layout/professional/calendar/dayview/quickaddform.thtml 1.4.1.src/layout/professional/calendar/dayview/quickaddform.thtml
--- 1.4.0sr5-1.src/layout/professional/calendar/dayview/quickaddform.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/calendar/dayview/quickaddform.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,54 +0,0 @@
-                            <form action="{site_url}/submit.php" method="post">
-                                <input type="hidden" name="mode" value="{lang_submit}">
-                                <input type="hidden" name="type" value="event">
-                                <input type="hidden" name="calendar_type" value="personal">
-                                <table cellpadding="0" cellspacing="1" border="0" width="100%">
-                                    <tr>
-                                        <td>{lang_quickadd}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>
-                                            <table cellpadding="0" cellspacing="0" border="0" width="100%" class="cal-quickadd">
-                                                <tr>
-                                                    <td><b>{lang_event}</b></td>
-                                                    <td><b>{lang_date}</b></td>
-                                                    <td><b>{lang_time}</b></td>
-                                                </tr>
-                                                <tr>
-                                                    <td><input type="text" size="20" maxlength="96" name="title"></td>
-                                                    <td>
-                                                        <select name="start_month">
-                                                            {month_options}
-                                                        </select>
-                                                        /
-                                                        <select name="start_day">
-                                                            {day_options}
-                                                        </select>
-                                                        /
-                                                        <select name="start_year">
-                                                            {year_options}
-                                                        </select>
-                                                    </td>
-                                                    <td>
-                                                        <select name="start_hour">
-                                                            {hour_options}
-                                                        </select>
-                                                        :
-                                                        <select name="start_minute">
-                                                            <option value="00">00</option>
-                                                            <option value="15">15</option>
-                                                            <option value="30">30</option>
-                                                            <option value="45">45</option>
-                                                        </select>
-                                                        <select name="start_ampm">
-                                                            <option value="am" {am_selected}>am</option>
-                                                            <option value="pm" {pm_selected}>pm</option>
-                                                        </select>
-                                                        <input type="submit" value="{lang_add}">
-                                                    </td>
-                                                </tr>
-                                            </table>
-                                        </td>
-                                    </tr>
-                                </table>
-                            </form>
diff -ruN 1.4.0sr5-1.src/layout/professional/calendar/dayview/singleevent.thtml 1.4.1.src/layout/professional/calendar/dayview/singleevent.thtml
--- 1.4.0sr5-1.src/layout/professional/calendar/dayview/singleevent.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/calendar/dayview/singleevent.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1 +0,0 @@
-{delete_imagelink} {event_time} <a href="{site_url}/calendar_event.php?mode={mode}&amp;eid={eid}">{event_title}</a>{br}
diff -ruN 1.4.0sr5-1.src/layout/professional/calendar/editpersonalevent.thtml 1.4.1.src/layout/professional/calendar/editpersonalevent.thtml
--- 1.4.0sr5-1.src/layout/professional/calendar/editpersonalevent.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/calendar/editpersonalevent.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,134 +0,0 @@
-                            <form action="{site_url}/submit.php" method="post">
-                                <input type="hidden" name="calendar_type" value="personal">
-                                <input type="hidden" name="eid" value="{eid}">
-                                <input type="hidden" name="uid" value="{uid}">
-                                <table border="0" cellspacing="0" cellpadding="3">
-                                    <tr>
-                                        <td align="right"><b>{lang_title}:</b></td>
-                                        <td><input type="text" size="36" maxlength="96" name="title" value="{event_title}"></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_eventtype}:</b></td>
-                                        <td>
-                                            <select name="event_type">
-                                                <option value="">--</option>
-                                                {type_options}
-                                            </select>
-                                        </td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_startdate}:</b></td>
-                                        <td>
-                                            <select name="start_month">
-                                                {startmonth_options}
-                                            </select>
-                                            /
-                                            <select name="start_day">
-                                                {startday_options}
-                                            </select>
-                                            /
-                                            <select name="start_year">
-                                                {startyear_options}
-                                            </select>&nbsp;&nbsp;
-                                            <b>{lang_starttime}: </b>
-                                            <select name="start_hour">
-                                                {starthour_options}
-                                            </select>
-                                            :
-                                            <select name="start_minute">
-                                                <option value="00" {start00_selected}>00</option>
-                                                <option value="15" {start15_selected}>15</option>
-                                                <option value="30" {start30_selected}>30</option>
-                                                <option value="45" {start45_selected}>45</option>
-                                            </select>
-                                            <select name="start_ampm">
-                                                <option value="am" {startam_selected}>am</option>
-                                                <option value="pm" {startpm_selected}>pm</option>
-                                            </select>
-                                        </td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_enddate}:</b></td>
-                                        <td>
-                                            <select name="end_month">
-                                                {endmonth_options}
-                                            </select>
-                                            /
-                                            <select name="end_day">
-                                                {endday_options}
-                                            </select>
-                                            /
-                                            <select name="end_year">
-                                                {endyear_options}
-                                            </select>&nbsp;&nbsp;
-                                            <b>{lang_endtime}: </b>
-                                            <select name="end_hour">
-                                                {endhour_options}
-                                            </select>
-                                            :
-                                            <select name="end_minute">
-                                                <option value="00" {end00_selected}>00</option>
-                                                <option value="15" {end15_selected}>15</option>
-                                                <option value="30" {end30_selected}>30</option>
-                                                <option value="45" {end45_selected}>45</option>
-                                            </select>
-                                            <select name="end_ampm">
-                                                <option value="am" {endam_selected}>am</option>
-                                                <option value="pm" {endpm_selected}>pm</option>
-                                            </select>
-                                        </td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_alldayevent}:</b></td>
-                                        <td><input type="checkbox" name="allday" {allday_checked}></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_location}:</b></td>
-                                        <td>
-                                            <textarea name="location" cols="45" rows="2">{event_location}</textarea>
-                                        </td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_addressline1}:</b></td>
-                                        <td><input type="text" name="address1" size="36" value="{event_address1}"></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_addressline2}:</b></td>
-                                        <td><input type="text" name="address2" size="36" value="{event_address2}"></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_city}:</b></td>
-                                        <td><input type="text" name="city" size="36" value="{event_city}"></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_state}:</b></td>
-                                        <td>
-                                            <select name="state">
-                                                {state_options}
-                                            </select>
-                                        </td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_zipcode}:</b></td>
-                                        <td><input type="text" name="zipcode" size="5" maxlength="5" value="{event_zipcode}"></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_link}:</b></td>
-                                        <td><input type="text" size="36" maxlength="128" name="url" value="{event_url}"></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_description}:</b></td>
-                                        <td><textarea name="description" cols="50" rows="20">{event_description}</textarea></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="center" colspan="2">{lang_htmlnotallowed}</td>
-                                    </tr>
-                                    <tr>
-                                        <td align="center" colspan="2">
-                                            <input type="hidden" name="type" value="event">
-                                            <input type="submit" name="mode" value="{lang_submit}">
-                                            <input type="submit" name="mode" value="{lang_delete}">
-                                        </td>
-                                    </tr>
-                                </table>
-                            </form>
diff -ruN 1.4.0sr5-1.src/layout/professional/calendar/eventdetails.thtml 1.4.1.src/layout/professional/calendar/eventdetails.thtml
--- 1.4.0sr5-1.src/layout/professional/calendar/eventdetails.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/calendar/eventdetails.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,29 +0,0 @@
-                            <table cellspacing="0" cellpadding="3" border="0" width="100%">
-                                <tr>
-                                    <td colspan="2">
-                                        <h1>{event_begin_anchortag}{event_title}{event_end_anchortag}</h1>
-                                    </td>
-                                </tr>
-                                <tr valign="top">
-                                    <td align="right"><b>{lang_when}:</b></td>
-                                    <td width="100%">{event_start} - {event_end}</td>
-                                </tr>
-                                <tr valign="top">
-                                    <td align="right"><b>{lang_event_type}:</b></td>
-                                    <td width="100%">{event_type}</td>
-                                </tr>
-                                <tr valign="top">
-                                    <td align="right"><b>{lang_where}:</b></td>
-                                    <td width="100%">
-                                        {event_location}{br0}
-                                        {event_address1}{br1}
-                                        {event_address2}{br2}
-                                        {event_city}{event_state} {event_zip}
-                                    </td>
-                                </tr>
-                                <tr valign="top">
-                                    <td align="right"><b>{lang_description}:</b></td>
-                                    <td width="100%">{event_description}</td>
-                                </tr>
-                                <tr><td colspan="2">{addremove_event} {edit_icon}</td></tr>
-                            </table><br><br>
diff -ruN 1.4.0sr5-1.src/layout/professional/calendar/events.thtml 1.4.1.src/layout/professional/calendar/events.thtml
--- 1.4.0sr5-1.src/layout/professional/calendar/events.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/calendar/events.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,3 +0,0 @@
-                            [ <a href="{site_url}/submit.php?type=event{calendar_mode}">{lang_addevent}</a> ][ <a href="{site_url}/calendar.php">{lang_backtocalendar}</a> ]<br><br>
-                            <h1>{lang_month} {event_year}</h1>
-                            {event_details}
diff -ruN 1.4.0sr5-1.src/layout/professional/calendar/mastercalendaroption.thtml 1.4.1.src/layout/professional/calendar/mastercalendaroption.thtml
--- 1.4.0sr5-1.src/layout/professional/calendar/mastercalendaroption.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/calendar/mastercalendaroption.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,3 +0,0 @@
-                                            <form method="post" action="calendar.php">
-                                                <input type="submit" name="action" value="{lang_mastercal}">
-                                            </form>
diff -ruN 1.4.0sr5-1.src/layout/professional/calendar/personalcalendaroption.thtml 1.4.1.src/layout/professional/calendar/personalcalendaroption.thtml
--- 1.4.0sr5-1.src/layout/professional/calendar/personalcalendaroption.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/calendar/personalcalendaroption.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,3 +0,0 @@
-                                            <form method="post" action="calendar.php?mode=personal">
-                                                <input type="submit" name="action" value="{lang_mycalendar}">
-                                            </form>
diff -ruN 1.4.0sr5-1.src/layout/professional/calendar/weekview/events.thtml 1.4.1.src/layout/professional/calendar/weekview/events.thtml
--- 1.4.0sr5-1.src/layout/professional/calendar/weekview/events.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/calendar/weekview/events.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,2 +0,0 @@
-{delete_imagelink} {event_starttime} {event_endtime}  {event_title_and_link}<br>
-<table cellspacing="0" cellpadding="0" align="center" width="100%" class="cal-hr"><tr><td><img src="{site_url}/images/speck.gif" width="1" height="1" alt=""></td></tr></table>
diff -ruN 1.4.0sr5-1.src/layout/professional/calendar/weekview/weekview.thtml 1.4.1.src/layout/professional/calendar/weekview/weekview.thtml
--- 1.4.0sr5-1.src/layout/professional/calendar/weekview/weekview.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/calendar/weekview/weekview.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,70 +0,0 @@
-<table width="100%" border="0" cellpadding="5" cellspacing="0" class="cal-header">
-  <tr align="center">
-    <td width="33%" align="center"><a href="{site_url}/calendar.php?mode={mode}&amp;view=day">{lang_day}</a></td>
-    <td width="33%" align="center"><b>{lang_week}</b></td>
-    <td width="33%" align="center"><a href="{site_url}/calendar.php?mode={mode}">{lang_month}</a></td>
-  </tr>
-</table>
-<br>
-<table width="100%" cellspacing="0" border="0">
-                                <tr>
-                                    <td colspan="2" class="cal-weekview-daterange"><a href="{site_url}/calendar.php?mode={mode}&amp;view=week&amp;month={prevmonth}&amp;day={prevday}&amp;year={prevyear}">&lt;&lt;</a>&nbsp;&nbsp;{date_range}&nbsp;&nbsp<a href="{site_url}/calendar.php?mode={mode}&amp;view=week&amp;month={nextmonth}&amp;day={nextday}&amp;year={nextyear}">&gt;&gt;</a></td>
-                                </tr>
-                                <tr>
-                                    <td colspan="2" class="cal-weekview-caltitle">{calendar_title} {calendar_toggle}</td>                                   
-                                </tr>
-                                <tr>
-                                  <td colspan="2">&nbsp;</td>
-                                </tr>
-                                <tr class="{class1}">
-                                    <td width="80%" class="cal-weekview-dayformat">{day1}</td><td align="right" nowrap class="cal-weekview-addevent">{langlink_addevent1}</td>
-                                </tr>
-                                <tr>
-                                    <td colspan="2" valign="bottom" class="cal-dayview-times">{events_day1}</td>
-                                </tr>
-                                <tr><td colspan="2">&nbsp;</td></tr>
-                                <tr class="{class2}">
-                                    <td class="cal-weekview-dayformat">{day2}</td><td align="right" nowrap class="cal-weekview-addevent">{langlink_addevent2}</td>
-                                </tr>
-                                <tr>
-                                    <td colspan="2" class="cal-dayview-times">{events_day2}</td>
-                                </tr>
-                                <tr><td colspan="2">&nbsp;</td></tr>
-                                <tr class="{class3}">
-                                    <td class="cal-weekview-dayformat">{day3}</td><td align="right" nowrap class="cal-weekview-addevent">{langlink_addevent3}</td>
-                                </tr>
-                                <tr>
-                                    <td colspan="2" class="cal-dayview-times">{events_day3}</td>
-                                </tr>
-                                <tr><td colspan="2">&nbsp;</td></tr>
-                                <tr class="{class4}">
-                                    <td class="cal-weekview-dayformat">{day4}</td><td align="right" nowrap class="cal-weekview-addevent">{langlink_addevent4}</td>
-                                </tr>
-                                <tr>
-                                    <td colspan="2" class="cal-dayview-times">{events_day4}</td>
-                                </tr>
-                                <tr><td colspan="2">&nbsp;</td></tr>
-                                <tr class="{class5}">
-                                    <td class="cal-weekview-dayformat">{day5}</td><td align="right" nowrap class="cal-weekview-addevent">{langlink_addevent5}</td>
-                                </tr>
-                                <tr>
-                                    <td colspan="2" class="cal-dayview-times">{events_day5}</td>
-                                </tr>
-                                <tr><td colspan="2">&nbsp;</td></tr>
-                                <tr class="{class6}">
-                                    <td class="cal-weekview-dayformat">{day6}</td><td align="right" nowrap class="cal-weekview-addevent">{langlink_addevent6}</td>
-                                </tr>
-                                <tr>
-                                    <td colspan="2" class="cal-dayview-times">{events_day6}</td>
-                                </tr>
-                                <tr><td colspan="2">&nbsp;</td></tr>
-                                <tr class="{class7}">
-                                    <td class="cal-weekview-dayformat">{day7}</td><td align="right" nowrap class="cal-weekview-addevent">{langlink_addevent7}</td>
-                                </tr>
-                                <tr>
-                                    <td colspan="2" class="cal-dayview-times">{events_day7}</td>
-                                </tr>
-                                <tr><td colspan="2">&nbsp;</td></tr>
-</table>
-<br>
-                            {quickadd_form}
diff -ruN 1.4.0sr5-1.src/layout/professional/comment/commentbar.thtml 1.4.1.src/layout/professional/comment/commentbar.thtml
--- 1.4.0sr5-1.src/layout/professional/comment/commentbar.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/comment/commentbar.thtml	2006-12-04 06:43:41.000000000 -0600
@@ -1,23 +1,23 @@
-<table cellspacing="0" cellpadding="0" align="center" width="100%" class="block-divider"><tr><td><img src="{site_url}/images/speck.gif" width="1" height="2" alt=""></td></tr></table>
+<div class="block-divider"> </div>
 <a name="comments"></a>
-<table cellspacing="0" cellpadding="0" border="0" width="100%">
-  <tr><td align="center" class="commentbar1"><b>{start_storylink_anchortag}{story_title}{end_storylink_anchortag}</b> | {num_comments} {lang_comments} | {user_nullname} <a href="{login_logout_url}" class="commentbar1">{lang_login_logout}</a></td></tr>
-  <tr>
-    <td align="center" class="commentbar2">
-      <form style="display: inline" action="{parent_url}" method="POST">
+<div class="commentbar-line1">
+    <b>{start_storylink_anchortag}{story_title}{end_storylink_anchortag}</b> | {num_comments} {lang_comments} | {user_nullname} <a href="{login_logout_url}" rel="nofollow" class="commentbar1">{lang_login_logout}</a>
+</div>
+<div class="commentbar-line2">
+    <form style="display: inline" action="{parent_url}" method="POST">
         {hidden_field}
         {order_selector}
         {mode_selector}
         <input type="submit" value="{lang_refresh}">
         <input type="hidden" name="type" value="{comment_type}">
-      </form>
-      <form style="display: inline" action="{site_url}/comment.php" method="POST">
+    </form>
+    <form style="display: inline" action="{site_url}/comment.php" method="POST">
         <input type="hidden" name="sid" value="{sid}">
         <input type="hidden" name="pid" value="0">
         <input type="hidden" name="type" value="{comment_type}">
         <input type="submit" name="reply" value="{lang_reply}">
-      </form>
-    </td>
-  </tr>
-  <tr><td align="center" class="commentbar3">{lang_disclaimer}</td></tr>
-</table>
+    </form>
+</div>
+<div class="commentbar-line3">
+    {lang_disclaimer}
+</div>
diff -ruN 1.4.0sr5-1.src/layout/professional/comment/commentform_advanced.thtml 1.4.1.src/layout/professional/comment/commentform_advanced.thtml
--- 1.4.0sr5-1.src/layout/professional/comment/commentform_advanced.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/comment/commentform_advanced.thtml	2006-12-09 16:35:16.000000000 -0600
@@ -8,21 +8,21 @@
                                             <form action="{site_url}/comment.php" method="post" onSubmit='set_postcontent();'>
                                                 <table cellspacing="0" cellpadding="3" border="0" width="100%">
                                                     <tr>
-                                                        <td align="right"><b>{lang_username}:</b></td>
+                                                        <td class="alignright"><b>{lang_username}:</b></td>
                                                         <td>
                                                             <input type="hidden" name="sid" value="{sid}">
                                                             <input type="hidden" name="pid" value="{pid}">
                                                             <input type="hidden" name="type" value="{type}">
                                                             <input type="hidden" name="comment" value="">
-                                                            <input type="hidden" name="uid" value="{uid}">{username} [ <a href="{action_url}">{lang_logoutorcreateaccount}</a> ]
+                                                            <input type="hidden" name="uid" value="{uid}">{username} [ <a href="{action_url}" rel="nofollow">{lang_logoutorcreateaccount}</a> ]
                                                         </td>
                                                     </tr>
                                                     <tr>
-                                                        <td align="right"><b>{lang_title}:</b></td>
+                                                        <td class="alignright"><b>{lang_title}:</b></td>
                                                         <td><input type="text" name="title" size="32" value="{title}" maxlength="96"></td>
                                                     </tr>
                                                     <tr>
-                                                        <td align="right" valign="top"><b>{lang_comment}:</b></td>
+                                                        <td class="alignright" style="vertical-align:top;"><b>{lang_comment}:</b></td>
                                                         <td>
                                                             <div id="text_editor" style="display:{show_texteditor};">
                                                                 <textarea id="comment_text" name="comment" cols="60" rows="10">{comment}</textarea>
@@ -32,15 +32,16 @@
                                                             </div>
                                                         </td>
                                                     </tr>
-                                                    <tr valign="top">
-                                                        <td align="right"><b>{lang_postmode}:</b></td>
-                                                        <td>
+                                                    <tr>
+                                                        <td class="alignright" style="vertical-align:top;"><b>{lang_postmode}:</b></td>
+                                                        <td style="vertical-align:top;">
                                                             <select id="sel_editmode" name="postmode" onChange="change_editmode(this);">
                                                                 {postmode_options}
                                                             </select><br>
                                                             <span class="warningsmall">{allowed_html}</span>
                                                         </td>
                                                     </tr>
+                                                    {captcha}
                                                     <tr>
                                                         <td colspan="2"><hr></td>
                                                     </tr>
diff -ruN 1.4.0sr5-1.src/layout/professional/comment/commentform.thtml 1.4.1.src/layout/professional/comment/commentform.thtml
--- 1.4.0sr5-1.src/layout/professional/comment/commentform.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/comment/commentform.thtml	2006-12-09 16:35:16.000000000 -0600
@@ -1,32 +1,33 @@
                                 {start_block_postacomment}
                                             <form action="{site_url}/comment.php" method="post">
-                                                <table cellspacing="0" cellpadding="3" border="0" width="100%">
+                                                <table cellspacing="0" cellpadding="3" border="0" width="95%">
                                                     <tr>
-                                                        <td align="right"><b>{lang_username}:</b></td>
+                                                        <td class="alignright"><b>{lang_username}:</b></td>
                                                         <td>
                                                             <input type="hidden" name="sid" value="{sid}">
                                                             <input type="hidden" name="pid" value="{pid}">
                                                             <input type="hidden" name="type" value="{type}">
-                                                            <input type="hidden" name="uid" value="{uid}">{username} [ <a href="{action_url}">{lang_logoutorcreateaccount}</a> ]
+                                                            <input type="hidden" name="uid" value="{uid}">{username} [ <a href="{action_url}" rel="nofollow">{lang_logoutorcreateaccount}</a> ]
                                                         </td>
                                                     </tr>
                                                     <tr>
-                                                        <td align="right"><b>{lang_title}:</b></td>
+                                                        <td class="alignright"><b>{lang_title}:</b></td>
                                                         <td><input type="text" name="title" size="32" value="{title}" maxlength="96"></td>
                                                     </tr>
                                                     <tr>
-                                                        <td align="right" valign="top"><b>{lang_comment}:</b></td>
-                                                        <td><textarea name="comment" wrap="physical" rows="10" cols="60">{comment}</textarea></td>
+                                                        <td class="alignright" style="vertical-align:top;"><b>{lang_comment}:</b></td>
+                                                        <td><textarea name="comment" rows="10" style="width:95%">{comment}</textarea></td>
                                                     </tr>
-                                                    <tr valign="top">
-                                                        <td align="right"><b>{lang_postmode}:</b></td>
-                                                        <td>
+                                                    <tr>
+                                                        <td class="alignright" style="vertical-align:top;"><b>{lang_postmode}:</b></td>
+                                                        <td style="vertical-align:top;">
                                                             <select name="postmode">
                                                                 {postmode_options}
                                                             </select><br>
                                                             <span class="warningsmall">{allowed_html}</span>
                                                         </td>
                                                     </tr>
+                                                    {captcha}
                                                     <tr>
                                                         <td colspan="2"><hr></td>
                                                     </tr>
diff -ruN 1.4.0sr5-1.src/layout/professional/comment/comment.thtml 1.4.1.src/layout/professional/comment/comment.thtml
--- 1.4.0sr5-1.src/layout/professional/comment/comment.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/comment/comment.thtml	2006-06-11 05:25:07.000000000 -0500
@@ -2,7 +2,7 @@
   <div class="commenttitle">{title}</div>
   <div>{lang_authoredby} {start_author_anchortag}{author}{end_author_anchortag} {lang_on}
 {date}</div>
-  <div style="verticle-align: top">{comments}</div>
+  <div style="vertical-align: top">{comments}</div>
   <div>
    <span {hide_if_preview}>
     [ <a href="{reply_link}">{lang_replytothis}</a> {parent_link} {delete_option} | <a href="{site_url}/comment.php?mode=view&amp;cid={cid}" rel="self bookmark" title="{lang_permlink}">#</a> ]
diff -ruN 1.4.0sr5-1.src/layout/professional/comment/startcomment.thtml 1.4.1.src/layout/professional/comment/startcomment.thtml
--- 1.4.0sr5-1.src/layout/professional/comment/startcomment.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/comment/startcomment.thtml	2006-09-15 22:09:48.000000000 -0500
@@ -1,5 +1,5 @@
 <div id="commentarea">
 {commentbar}
 {comments}
-<center>{pagenav}</center>
+<p class="aligncenter">{pagenav}</p>
 </div>
diff -ruN 1.4.0sr5-1.src/layout/professional/customlogin-footer.thtml 1.4.1.src/layout/professional/customlogin-footer.thtml
--- 1.4.0sr5-1.src/layout/professional/customlogin-footer.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/customlogin-footer.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1 +0,0 @@
-<!--only put here to keep all code within customlogin-header.thtml-->
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/layout/professional/customlogin-header.thtml 1.4.1.src/layout/professional/customlogin-header.thtml
--- 1.4.0sr5-1.src/layout/professional/customlogin-header.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/customlogin-header.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,45 +0,0 @@
-<table width="100%" border="0" cellspacing="0" cellpadding="10">
-  <tr>
-    <td>
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
-    <tr>
-      <td height="22" colspan="3" align="left" valign="middle" class="block-title-left">Members Login</td>
-    </tr>
-    <tr>
-      <td class="block-info-left">
-<form style="margin-bottom:0;" action="{site_url}/users.php" method="POST">
-        <b>Username:</b><br>
-        <input name="loginname" type="text" class="xpinputfield" id="loginname" size="30"> 
-        <b>Password:</b><br>
-        <input name="passwd" type="password" class="xpinputfield" id="passwd" size="30">
-	<table width="100%"  border="0" cellspacing="0" cellpadding="0">
-      <tr>
-        <td width="32"><input type="image" width="32" height="20" src="{layout_url}/images/logbutton.gif" value="Submit now"
-alt="One Step Login" align="bottom" name="Submit now2"></td>
-        <td>&nbsp;<a href="{site_url}/users.php?mode=getpassword">Forgot Password?</a></td>
-      </tr>
-    </table>
-</form><br>
-	  </td>
-    </tr>
-    <tr>
-      <td height="22" colspan="3" align="left" valign="middle" class="block-title-left">New Users Register</td>
-    </tr>
-    <tr><td width="100%" class="block-info-left">
-<form style="margin-bottom:0;" action={site_url}/users.php method=post>
-        <b>Username:</b><br>
-        <input name="username" type="text" class="xpinputfield" id="username" size="30">
-        <b>E-mail:</b><br>
-        <input name="email" type="text" class="xpinputfield" id="email" size="30">
-	<input type="hidden" name="mode" value="create">	
-	<table width="100%"  border="0" cellspacing="0" cellpadding="0">
-      <tr>
-        <td width="47"><input type="image" width="47" height="20" src="{layout_url}/images/regbutton.gif" value="Submit now"
-alt="One Step Registration" align="bottom" name="Submit now"></td>
-        <td>&nbsp;<a href="{site_url}/staticpages/index.php?page=privacystatement">Privacy Policy</a> </td>
-      </tr>
-    </table>
-</form>
-	</td>
-</tr></table></td></tr></table>
-<table cellspacing="0" cellpadding="0" align="center" height="1" width="90%" class="block-divider-left"><tr><td><img src="{site_url}/images/speck.gif" width="1" height="1" alt=""></td></tr></table>
diff -ruN 1.4.0sr5-1.src/layout/professional/featuredstorytext.thtml 1.4.1.src/layout/professional/featuredstorytext.thtml
--- 1.4.0sr5-1.src/layout/professional/featuredstorytext.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/featuredstorytext.thtml	2006-10-14 12:02:59.000000000 -0500
@@ -1,31 +1,20 @@
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
-    <tr>
-      <td width="100%" class="story-title-featured"><img src="{site_url}/images/speck.gif" width="1" height="0" alt=""><h1>{start_storylink_anchortag}{story_title}{end_storylink_anchortag}</h1></td>
-      <td class="story-title-featured" width="5%" align="right" nowrap>&nbsp;{email_icon}&nbsp;{print_icon}&nbsp;{pdf_icon}</td>
-    </tr>
-    <tr>
-      <td class="story-box" colspan="2">
-            <table border="0" cellpadding="3" cellspacing="0" width="100%">
-                <tr>
-                  <td class="story-information" width="100%">
-                      {story_date}<br>
-                      {lang_contributed_by} {start_contributedby_anchortag}{contributedby_user}{end_contributedby_anchortag}<br>
-                      {lang_views} {story_hits}
-                  </td>
-                </tr>
-                <tr>
-                  <td>{story_anchortag_and_image}{story_introtext}</td>
-                </tr>
-            </table>
-            <table border="0" cellpadding="3" cellspacing="0" width="100%">
-              <tr><td align="center">{edit_link}&nbsp;{page_selector}<br>
-                                     {readmore_link} {post_comment_link}<br>
-                                     {start_comments_anchortag}{comments_with_count}{end_comments_anchortag} {start_trackbacks_anchortag}{trackbacks_with_count}{end_trackbacks_anchortag}
-              </td></tr>
-            </table>
-      </td>
-    </tr>
-</table>
-<table cellspacing="0" cellpadding="0" align="center" width="100%" class="block-divider">
-    <tr><td><img src="{site_url}/images/speck.gif" width="1" height="2" alt=""></td></tr>
-</table> 
+<div class="story-featured">
+    <span class="story-icons">
+        &nbsp;{email_icon}&nbsp;{print_icon}&nbsp;{pdf_icon}
+    </span>
+    <h1>{start_storylink_anchortag}{story_title}{end_storylink_anchortag}</h1>
+    <div class="story-information">
+        {story_date}<br>
+        {lang_contributed_by} {start_contributedby_anchortag}{contributedby_author}{end_contributedby_anchortag}<br>
+        {lang_views} {story_hits}
+    </div>
+    <div class="story-body">
+        {story_anchortag_and_image}{story_introtext}
+    </div>
+    <div class="story-footer">
+        {edit_link}&nbsp;{page_selector}<br>
+        {readmore_link} {post_comment_link}<br>
+        {start_comments_anchortag}{comments_with_count}{end_comments_anchortag} {start_trackbacks_anchortag}{trackbacks_with_count}{end_trackbacks_anchortag}
+    </div>
+</div>
+<div class="block-divider"> </div>
diff -ruN 1.4.0sr5-1.src/layout/professional/footer.thtml 1.4.1.src/layout/professional/footer.thtml
--- 1.4.0sr5-1.src/layout/professional/footer.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/footer.thtml	2006-11-24 02:07:46.000000000 -0600
@@ -1,16 +1,13 @@
-                  <!-- End Content Area -->
-                </td>
-                {right_blocks} </tr>
-          </table>
-	  {centerblockfooter-span}
-<table cellspacing="0" cellpadding="0" align="center" width="100%" class="block-divider-right"><tr><td><img src="{site_url}/images/speck.gif" width="1" height="1" alt=""></td></tr></table>
-          <table border="0" cellpadding="0" cellspacing="0" width="100%">
-            <tr>
-              <td width="70%" class="footerblock" valign="middle" align="left">{copyright_notice}</td>
-              <td width="30%" class="footerblock" valign="middle" align="right">{powered_by} <a href="{geeklog_url}">Geeklog</a>&nbsp;<br>
-      {execution_textandtime}&nbsp;</td>
-            </tr>
-          </table>
+            <!-- End Content Area -->
+          </td>
+          {right_blocks} </tr>
+    </table>
+    {centerblockfooter-span}
+    <table border="0" cellpadding="0" cellspacing="0" width="100%" class="footer-divider-top">
+      <tr>
+        <td width="70%" class="footerblock">{copyright_notice}</td>
+        <td width="30%" class="footerblock" style="text-align:right">{powered_by} <a href="{geeklog_url}">Geeklog</a>&nbsp;<br>{execution_textandtime}&nbsp;</td>
+      </tr>
     </table>
 </body>
 </html>
diff -ruN 1.4.0sr5-1.src/layout/professional/functions.php 1.4.1.src/layout/professional/functions.php
--- 1.4.0sr5-1.src/layout/professional/functions.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/functions.php	2006-06-15 13:26:45.000000000 -0500
@@ -1,5 +1,6 @@
 <?php
 
+// this file can't be used on its own
 if (strpos ($_SERVER['PHP_SELF'], 'functions.php') !== false) {
     die ('This file can not be used on its own!');
 }
@@ -19,7 +20,6 @@
 
 $_BLOCK_TEMPLATE['_msg_block'] = 'blockheader-message.thtml,blockfooter-message.thtml';
 
-$_BLOCK_TEMPLATE['customlogin'] = 'customlogin-header.thtml,customlogin-footer.thtml';
 $_BLOCK_TEMPLATE['whats_related_block'] = 'blockheader-related.thtml,blockfooter-related.thtml';
 $_BLOCK_TEMPLATE['story_options_block'] = 'blockheader-related.thtml,blockfooter-related.thtml';
 
diff -ruN 1.4.0sr5-1.src/layout/professional/header.thtml 1.4.1.src/layout/professional/header.thtml
--- 1.4.0sr5-1.src/layout/professional/header.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/header.thtml	2006-11-24 02:07:46.000000000 -0600
@@ -1,4 +1,4 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <title>{page_title}</title>
@@ -8,54 +8,40 @@
 -->
 <link rel="stylesheet" type="text/css" href="{css_url}" title="{theme}">
 {feed_url}
+{rel_links}
 {plg_headercode}
 {advanced_editor}
+<!-- Load Common Javascript Libraries -->
+<script type="text/javascript" src="{site_url}/javascript/common.js"></script>
 
-<script type="text/javascript">
-    function delconfirm()
-    {
-        if (confirm("Do you really want to delete this item?"))
-        {
-          return true;
-        } else {
-          return false;
-        }
-    }
-</script>
 </head>
 
-<body class="sitebody" dir="{direction}">
-<table width="99%" align="center" border="0" cellspacing="0" cellpadding="0" class="header-envelope">
-    <tr>
-        <td>
-            <table width="100%"  border="0" cellspacing="0" cellpadding="0" class="header-navigation-container">
-              <tr>
-                <td align="right" valign="middle" class="header-navigation">{menu_elements}</td>
-              </tr>
-            </table>
-        </td>
-    <tr>
-        <td width="100%">
-            <table width="100%" border="0" cellpadding="0" cellspacing="0" class="header-logobg-container-outer">
-                <tr>
-                    <td>
-                        <table width="100%" border="0" cellpadding="0" cellspacing="0" class="header-logobg-container-inner">
-                            <tr>
-                                <td class="header-logobg" width="50%" height="78" align="left" valign="middle">&nbsp;&nbsp;&nbsp;&nbsp;<a href="{site_url}/"><img src="{site_logo}" width="151" height="56" alt="{site_name}" border="0"></a></td>
-                                <td class="header-logobg" width="50%" height="78" align="right" valign="middle"><span class="site-slogan">{site_slogan}</span>&nbsp;&nbsp;&nbsp;&nbsp;</td>
-                            </tr>
-                        </table>
-                    </td>
-                </tr>
-            </table>
-            <table border="0" cellspacing="0" cellpadding="0" width="100%">
-                <tr>
-                    {left_blocks}
-                    <td class="story-container" width="100%" valign="top">
-                    <table width="100%" border="0" cellspacing="0" cellpadding="0" class="header-welcomeanddate">
-                      <tr>
-                        <td>&nbsp;<a href="{site_url}">{welcome_msg}</a><br>&nbsp;{datetime}</td>
-                      </tr>
-                    </table>
+<body dir="{direction}">
+    <div class="header-navigation-container">
+        <div class="header-navigation-line">
+            {menu_elements}
+        </div>
+    </div>
+    <div class="header-logobg-container-outer">
+        <table width="100%" border="0" cellpadding="0" cellspacing="0" class="header-logobg-container-inner">
+            <tr>
+                <td class="header-logobg-left">
+                    <a href="{site_url}/"><img src="{site_logo}" width="151" height="56" alt="{site_name}" border="0"></a>
+                </td>
+                <td class="header-logobg-right">
+                    <span class="site-slogan">{site_slogan}</span>
+                </td>
+            </tr>
+        </table>
+    </div>
+    <table border="0" cellspacing="0" cellpadding="0" width="100%">
+        <tr>
+            {left_blocks}
+            <td class="story-container" width="100%" style="vertical-align:top;">
+                <div class="header-welcomeanddate-box">
+                    <div class="header-welcomeanddate-text">
+                        <a href="{site_url}">{welcome_msg}</a><br>{datetime}
+                    </div>
+                </div>
 
-            <!-- START OF CONTENT AREA -->
+                <!-- START OF CONTENT AREA -->
Binary files 1.4.0sr5-1.src/layout/professional/images/admin/plugins.gif and 1.4.1.src/layout/professional/images/admin/plugins.gif differ
Binary files 1.4.0sr5-1.src/layout/professional/images/buttons/geekpower2.gif and 1.4.1.src/layout/professional/images/buttons/geekpower2.gif differ
Binary files 1.4.0sr5-1.src/layout/professional/images/buttons/mysql.gif and 1.4.1.src/layout/professional/images/buttons/mysql.gif differ
Binary files 1.4.0sr5-1.src/layout/professional/images/buttons/php.gif and 1.4.1.src/layout/professional/images/buttons/php.gif differ
Binary files 1.4.0sr5-1.src/layout/professional/images/buttons/valid-css.png and 1.4.1.src/layout/professional/images/buttons/valid-css.png differ
Binary files 1.4.0sr5-1.src/layout/professional/images/buttons/valid-html.png and 1.4.1.src/layout/professional/images/buttons/valid-html.png differ
Binary files 1.4.0sr5-1.src/layout/professional/images/collapse.gif and 1.4.1.src/layout/professional/images/collapse.gif differ
Binary files 1.4.0sr5-1.src/layout/professional/images/collapse.png and 1.4.1.src/layout/professional/images/collapse.png differ
Binary files 1.4.0sr5-1.src/layout/professional/images/deleteitem.png and 1.4.1.src/layout/professional/images/deleteitem.png differ
Binary files 1.4.0sr5-1.src/layout/professional/images/expand.gif and 1.4.1.src/layout/professional/images/expand.gif differ
Binary files 1.4.0sr5-1.src/layout/professional/images/expand.png and 1.4.1.src/layout/professional/images/expand.png differ
Binary files 1.4.0sr5-1.src/layout/professional/images/icon_info.png and 1.4.1.src/layout/professional/images/icon_info.png differ
Binary files 1.4.0sr5-1.src/layout/professional/images/logo-bg.gif and 1.4.1.src/layout/professional/images/logo-bg.gif differ
Binary files 1.4.0sr5-1.src/layout/professional/images/pdf.gif and 1.4.1.src/layout/professional/images/pdf.gif differ
Binary files 1.4.0sr5-1.src/layout/professional/images/pdf.png and 1.4.1.src/layout/professional/images/pdf.png differ
Binary files 1.4.0sr5-1.src/layout/professional/images/person.gif and 1.4.1.src/layout/professional/images/person.gif differ
Binary files 1.4.0sr5-1.src/layout/professional/images/person.png and 1.4.1.src/layout/professional/images/person.png differ
diff -ruN 1.4.0sr5-1.src/layout/professional/leftblocks.thtml 1.4.1.src/layout/professional/leftblocks.thtml
--- 1.4.0sr5-1.src/layout/professional/leftblocks.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/leftblocks.thtml	2006-10-14 12:02:59.000000000 -0500
@@ -1,25 +1,20 @@
-        <td class="block-featured-left" valign="top">
-<table width="100%" border="0" cellpadding="0" cellspacing="0" class="searchform">
-  <tr align="right">
-    <td align="right">
-<form style="margin-bottom:0;" action="{site_url}/search.php" method="GET">
-    <input type="text" name="query" size="30" maxlength="255" class="xpinputfield">
-  <table width="100%"  border="0" cellspacing="0" cellpadding="0">
-    <tr>
-      <td align="right"><input type="hidden" name="type" value="all">
-        <a href="{site_url}/search.php" class="advancedsearch">{button_advsearch}</a>&nbsp;&nbsp;
-        <input type="hidden" name="mode" value="search"></td>
-      <td width="40"><input type="submit" value="{button_search}"></td>
-    </tr>
-  </table>
-</form>
-    </td>
-  </tr>
-</table>
-
-<table width="100%" class="block-hightopborder-left"><tr><td valign="top">
-    {geeklog_blocks}
-<img src="{site_url}/images/speck.gif" width="180" height="1" alt="">
-</td></tr></table>
-</td><td class="block-outerborder-left"><img src="{site_url}/images/speck.gif" width="10" height="1" alt=""></td>
+<!-- Start of Left blocks -->
+<td class="block-featured-left" style="vertical-align:top;">
+                    <div class="searchform-box">
+                        <form class="searchform-elements" action="{site_url}/search.php" method="GET">
+                            <input type="text" name="query" size="28" maxlength="255"><br>
+                            <input type="hidden" name="type" value="all">
+                            <a href="{site_url}/search.php" class="advancedsearch">{button_advsearch}</a>&nbsp;
+                            <input type="hidden" name="mode" value="search">
+                            <input type="submit" value="{button_search}">
+                        </form>
+                    </div>
+                    <div class="block-bg-left">
+                        {geeklog_blocks}
+                        <div class="block-bg-spreader"></div>
+                    </div>
+                </td>
+                <td class="block-outerborder-left">
+                    <div style="background:transparent; width:10px; height:1px;"></div>
+                </td>
 
diff -ruN 1.4.0sr5-1.src/layout/professional/links/categoryactivecol.thtml 1.4.1.src/layout/professional/links/categoryactivecol.thtml
--- 1.4.0sr5-1.src/layout/professional/links/categoryactivecol.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/links/categoryactivecol.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1 +0,0 @@
-<td width="{width}%"><strong>{category_name} ({category_count})</strong></td>
diff -ruN 1.4.0sr5-1.src/layout/professional/links/categorycol.thtml 1.4.1.src/layout/professional/links/categorycol.thtml
--- 1.4.0sr5-1.src/layout/professional/links/categorycol.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/links/categorycol.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1 +0,0 @@
-<td width="{width}%"><a href="{category_link}">{category_name} ({category_count})</a></td>
diff -ruN 1.4.0sr5-1.src/layout/professional/links/categorylinks.thtml 1.4.1.src/layout/professional/links/categorylinks.thtml
--- 1.4.0sr5-1.src/layout/professional/links/categorylinks.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/links/categorylinks.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,4 +0,0 @@
-<h3>{link_category}</h3>
-<ul>
-  {link_details}
-</ul>
diff -ruN 1.4.0sr5-1.src/layout/professional/links/categorynavigation.thtml 1.4.1.src/layout/professional/links/categorynavigation.thtml
--- 1.4.0sr5-1.src/layout/professional/links/categorynavigation.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/links/categorynavigation.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,5 +0,0 @@
-<h2>{lang_categories}</h2>
-
-<table width="100%">
-{category_row}
-</table>
diff -ruN 1.4.0sr5-1.src/layout/professional/links/categoryrow.thtml 1.4.1.src/layout/professional/links/categoryrow.thtml
--- 1.4.0sr5-1.src/layout/professional/links/categoryrow.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/links/categoryrow.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1 +0,0 @@
-<tr>{category_col}</tr>
diff -ruN 1.4.0sr5-1.src/layout/professional/links/linkdetails.thtml 1.4.1.src/layout/professional/links/linkdetails.thtml
--- 1.4.0sr5-1.src/layout/professional/links/linkdetails.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/links/linkdetails.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,4 +0,0 @@
-<li>
-  <strong><a href="{link_url}" title="{link_actual_url}">{link_name}</a></strong> ({link_hits}) {link_edit}<br>
-  {link_description}
-</li>
diff -ruN 1.4.0sr5-1.src/layout/professional/links/links.thtml 1.4.1.src/layout/professional/links/links.thtml
--- 1.4.0sr5-1.src/layout/professional/links/links.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/links/links.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,4 +0,0 @@
-{category_navigation}
-<p>[ <a href="{site_url}/submit.php?type=link">{lang_addalink}</a> ]</p>
-{category_links}
-{page_navigation}
diff -ruN 1.4.0sr5-1.src/layout/professional/links/pagenavigation.thtml 1.4.1.src/layout/professional/links/pagenavigation.thtml
--- 1.4.0sr5-1.src/layout/professional/links/pagenavigation.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/links/pagenavigation.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1 +0,0 @@
-<p align="center">{begin_backlink}{lang_back}{end_backlink}&nbsp;[{lang_page_of}]&nbsp;{begin_nextlink}{lang_next}{end_nextlink}</p>
diff -ruN 1.4.0sr5-1.src/layout/professional/loginform.thtml 1.4.1.src/layout/professional/loginform.thtml
--- 1.4.0sr5-1.src/layout/professional/loginform.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/loginform.thtml	2006-09-16 13:07:25.000000000 -0500
@@ -1,4 +1,4 @@
-<form action="{site_url}/users.php" method="POST">
+<form action="{site_url}/users.php" method="POST" style="margin-top:5px;margin-bottom:5px;">
   <b><label for="loginname">{lang_username}</label>:</b><br>
   <input type="text" size="10" name="loginname" value="" id="loginname"><br>
   {services}
diff -ruN 1.4.0sr5-1.src/layout/professional/navbar/breadcrumb_link.thtml 1.4.1.src/layout/professional/navbar/breadcrumb_link.thtml
--- 1.4.0sr5-1.src/layout/professional/navbar/breadcrumb_link.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/layout/professional/navbar/breadcrumb_link.thtml	2006-06-07 09:01:20.000000000 -0500
@@ -0,0 +1 @@
+{link_separator}<a class="breadcrumb_link" href="{link_url}" TITLE="{link_title}">{link_label}</a>
diff -ruN 1.4.0sr5-1.src/layout/professional/navbar/breadcrumbs.thtml 1.4.1.src/layout/professional/navbar/breadcrumbs.thtml
--- 1.4.0sr5-1.src/layout/professional/navbar/breadcrumbs.thtml	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/layout/professional/navbar/breadcrumbs.thtml	2006-06-07 09:01:20.000000000 -0500
@@ -0,0 +1,3 @@
+<p class="breadcrumbs">
+    {breadcrumb_links}{last_label}
+</p>
Binary files 1.4.0sr5-1.src/layout/professional/navbar/images/tableftI.gif and 1.4.1.src/layout/professional/navbar/images/tableftI.gif differ
Binary files 1.4.0sr5-1.src/layout/professional/navbar/images/tableftJ.gif and 1.4.1.src/layout/professional/navbar/images/tableftJ.gif differ
Binary files 1.4.0sr5-1.src/layout/professional/navbar/images/tabrightI.gif and 1.4.1.src/layout/professional/navbar/images/tabrightI.gif differ
Binary files 1.4.0sr5-1.src/layout/professional/navbar/images/tabrightJ.gif and 1.4.1.src/layout/professional/navbar/images/tabrightJ.gif differ
diff -ruN 1.4.0sr5-1.src/layout/professional/navbar/menuitem.thtml 1.4.1.src/layout/professional/navbar/menuitem.thtml
--- 1.4.0sr5-1.src/layout/professional/navbar/menuitem.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/navbar/menuitem.thtml	2006-09-16 14:35:58.000000000 -0500
@@ -1 +1,2 @@
-        <li {cssactive}><a href="{link}{parms}"{onclick}{csscurrent}><span style="padding-top:5px;">{label}</span></a></li>
+        <li><a {csscurrent} href="{link}{parms}"{onclick}><span style="padding-top:5px;">{label}</span></a></li>
+        
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/layout/professional/navbar/navbar.thtml 1.4.1.src/layout/professional/navbar/navbar.thtml
--- 1.4.0sr5-1.src/layout/professional/navbar/navbar.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/navbar/navbar.thtml	2006-06-06 23:04:19.000000000 -0500
@@ -1,5 +1,11 @@
-<div id="navcontainer">
-    <ul id="navlist" style="padding-left:15px;">
-{menuitems}
-    </ul>
-</div>
\ No newline at end of file
+<table width="100%" cellpadding="0" cellspacing="0" border="0">
+    <tr>
+        <td>
+            <div id="navcontainer">
+                <ul id="navlist" style="padding-left:15px;">
+                    {menuitems}
+                </ul>
+            </div>
+        </td>
+    </tr>
+</table>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/layout/professional/preferences/boxesblock.thtml 1.4.1.src/layout/professional/preferences/boxesblock.thtml
--- 1.4.0sr5-1.src/layout/professional/preferences/boxesblock.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/preferences/boxesblock.thtml	2006-07-28 00:01:29.000000000 -0500
@@ -1,10 +1,10 @@
-{start_block_boxes}
-<table border="0" cellspacing="0" cellpadding="3">
-  <tr>
-    <td>{lang_boxes}</td>
-  </tr>
-  <tr>
-    <td>{boxes_checklist}</td>
-  </tr>
-</table>
-{end_block}
+<fieldset style="margin-top:10px;">
+    <legend>{lang_boxes_title}</legend>
+      <div class="notes">
+        <h4>{lang_boxes_help_title}</h4>
+        {lang_boxes}
+       </div>
+    <div>
+        {boxes_checklist}
+    </div>
+</fieldset>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/layout/professional/preferences/commentblock.thtml 1.4.1.src/layout/professional/preferences/commentblock.thtml
--- 1.4.0sr5-1.src/layout/professional/preferences/commentblock.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/preferences/commentblock.thtml	2006-07-28 00:01:29.000000000 -0500
@@ -1,20 +1,20 @@
-{start_block_comment}
-<table border="0" cellspacing="0" cellpadding="3">
-  <tr valign="top">
-    <td align="right"><b>{lang_displaymode}</b><br>
-      <small>{lang_displaymode_text}</small></td>
+<fieldset style="margin-top:10px;"><legend>{lang_comment_title}</legend>
+      <div class="notes">
+        <h4>{lang_comment_help_title}</h4>
+        {lang_comment_help}
+       </div>
+<table class="inputTable">
+  <tr>
+    <td><label>{lang_displaymode}</label></td>
     <td>{displaymode_selector}</td>
   </tr>
-  <tr valign="top">
-    <td align="right"><b>{lang_sortorder}</b><br>
-      <small>{lang_sortorder_text}</small></td>
+  <tr>
+    <td><label>{lang_sortorder}</label></td>
     <td>{sortorder_selector}</td>
   </tr>
-  <tr valign="top">
-    <td align="right"><b>{lang_commentlimit}</b><br>
-      <small>{lang_commentlimit_text}</small></td>
-    <td><input type="text" size="5" maxlength="5" name="commentlimit"
-      value="{commentlimit_value}"></td>
+  <tr>
+     <td><label for="commentlimit">{lang_commentlimit}:</label></td>
+     <td><input type="text" id="commentlimit" name="commentlimit" size="5" maxlength="5" value="{commentlimit_value}"></td>
   </tr>
 </table>
-{end_block}
+</fieldset>
diff -ruN 1.4.0sr5-1.src/layout/professional/preferences/deleteaccount.thtml 1.4.1.src/layout/professional/preferences/deleteaccount.thtml
--- 1.4.0sr5-1.src/layout/professional/preferences/deleteaccount.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/preferences/deleteaccount.thtml	2006-10-15 03:26:09.000000000 -0500
@@ -1,8 +1,15 @@
-{start_block_delete_account}
-<form action="{site_url}/usersettings.php" method="POST">
-<p>{delete_text}</p>
-<p align="center"><input type="submit" value="{lang_button_delete}">
-  <input type="hidden" name="mode" value="{delete_mode}">
-  <input type="hidden" name="account_id" value="{account_id}"></p>
-</form>
-{end_block_delete_account}
+
+      <div class="notes">
+        <h4>{lang_deleteaccount}</h4>
+        <p class="last">{delete_text}</p>
+       </div>
+        <table class="inputTable" style="margin-top:20px;">
+            <tr>
+                <td width="150px"><label for="old_passwd" class="warningsmall">{lang_deleteoption}:</label></td>
+                <td>
+                      <input type="submit" name="btnsubmit" value="{lang_button_delete}">
+                      <input type="hidden" name="mode" value="{delete_mode}">
+                      <input type="hidden" name="account_id" value="{account_id}">
+                </td>
+            </tr>
+        </table>
diff -ruN 1.4.0sr5-1.src/layout/professional/preferences/digestblock.thtml 1.4.1.src/layout/professional/preferences/digestblock.thtml
--- 1.4.0sr5-1.src/layout/professional/preferences/digestblock.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/preferences/digestblock.thtml	2006-07-28 00:01:29.000000000 -0500
@@ -1,8 +1,9 @@
-{start_block_digest}
-<table border="0" cellspacing="0" cellpadding="3">
-  <tr align="top">
-    <td>{lang_emailedtopics}<br>
-      {email_topic_checklist}</td>
-  </tr>
-</table>
-{end_block}
+<fieldset style="margin-top:10px;">
+    <legend>{lang_digest_top_header}</legend>
+      <div class="notes">
+        <h4>{lang_digest_help_header}</h4>
+        {lang_emailedtopics}
+       </div>
+    <div>{email_topic_checklist}</div>
+</fieldset>
+
diff -ruN 1.4.0sr5-1.src/layout/professional/preferences/displayblock.thtml 1.4.1.src/layout/professional/preferences/displayblock.thtml
--- 1.4.0sr5-1.src/layout/professional/preferences/displayblock.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/preferences/displayblock.thtml	2006-07-28 00:01:29.000000000 -0500
@@ -1,26 +1,26 @@
-{start_block_display}
-<table border="0" cellspacing="0" cellpadding="3">
-  {language_selection}
-  {theme_selection}
-  <tr valign="top">
-    <td align="right"><b>{lang_noicons}:</b><br>
-      <small>{lang_noicons_text}</small></td>
-    <td><input type="checkbox" name="noicons" {noicons_checked}></td>
-  </tr>
-  <tr valign="top">
-    <td align="right"><b>{lang_noboxes}:</b><br>
-      <small>{lang_noboxes_text}</small></td>
-    <td><input type="checkbox" name="noboxes" {noboxes_checked}</td>
-  </tr>
-  <tr valign="top">
-    <td align="right"><b>{lang_maxstories}</b><br>
-      <small>{lang_maxstories_text}</small></td>
-    <td><input type="text" size="3" maxlength="3" name="maxstories"
-      value="{maxstories_value}"></td>
-  </tr>
-  <tr valign="top">
-    <td align="right"><b>{lang_dateformat}:</b></td>
-    <td>{dateformat_selector}</td>
-  </tr>
-</table>
-{end_block}
+    <fieldset id="pe_userinfo" style="margin-top:10px;"><legend>{lang_misc_title}</legend>
+      <div class="notes">
+        <h4>{lang_misc_help_title}</h4>
+            {lang_misc_help}
+       </div>
+       <table class="inputTable">
+            {language_selection}
+            {theme_selection}
+           <tr>
+                <td width="100px"><label for="noicons">{lang_noicons}:</label></td>
+                <td><input type="checkbox" id="noicons" name="noicons" {noicons_checked}></td>
+           </tr>
+           <tr>
+                <td width="100px"><label for="noboxes">{lang_noboxes}:</label></td>
+                <td><input type="checkbox" id="noboxes" name="noboxes" {noboxes_checked}></td>
+           </tr>
+           <tr>
+                <td width="100px"><label for="maxstories">{lang_maxstories}:</label></td>
+                <td><input type="text" size="3" maxlength="3" id="maxstories" name="maxstories" value="{maxstories_value}"></td>
+           </tr>
+           <tr>
+                <td width="100px"><label>{lang_dateformat}:</label></td>
+                <td>{dateformat_selector}</td>
+           </tr>
+        </table>
+    </fieldset>
diff -ruN 1.4.0sr5-1.src/layout/professional/preferences/displayprefs.thtml 1.4.1.src/layout/professional/preferences/displayprefs.thtml
--- 1.4.0sr5-1.src/layout/professional/preferences/displayprefs.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/preferences/displayprefs.thtml	2006-08-20 12:04:48.000000000 -0500
@@ -1,13 +1,12 @@
-<form action="{site_url}/usersettings.php" method="POST">
-  {display_block}
-  {comment_block}
-  {privacy_block}
-  {exclude_block}
-  {digest_block}
-  {boxes_block}
-
-  <div align="center">
-    <input type="submit" value="{lang_submit}">
-    <input type="hidden" name="mode" value="savepreferences">
-  </div>
-</form>
+<div id="pe_layout" class="jsenabled_hide">
+        {display_block}
+        {comment_block}
+</div>
+<div id="pe_content" class="jsenabled_hide">
+        {exclude_block}
+        {digest_block}
+        {boxes_block}
+</div>
+<div id="pe_privacy" class="jsenabled_hide">
+        {privacy_block}
+</div>
diff -ruN 1.4.0sr5-1.src/layout/professional/preferences/excludeblock.thtml 1.4.1.src/layout/professional/preferences/excludeblock.thtml
--- 1.4.0sr5-1.src/layout/professional/preferences/excludeblock.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/preferences/excludeblock.thtml	2006-09-15 22:09:48.000000000 -0500
@@ -1,12 +1,15 @@
-{start_block_exclude}
-<table border="0" cellspacing="0" cellpadding="3">
-  <tr><td colspan="3">{lang_excludeditems}</td></tr>
-  <tr valign="top">
-    <td><b>{lang_topics}</b><br>
-      {exclude_topic_checklist}</td>
-    <td><img src="{site_url}/images/speck.gif" width="40" height="1" alt=""></td>
-    <td><b>{lang_authors}</b><br>
-      {exclude_author_checklist}</td>
-  </tr>
-</table>
-{end_block}
+<fieldset style="margin-top:10px;">
+    <legend>{lang_exclude_title}</legend>
+      <div class="notes">
+        <h4>{lang_excluded_items_title}</h4>
+        {lang_excluded_items}
+       </div>
+    <table>
+        <tr>
+            <td style="vertical-align:top;padding-right:45px"><b>{lang_topics}</b><br>
+            {exclude_topic_checklist}</td>
+            <td style="vertical-align:top;"><b>{lang_authors}</b><br>
+            {exclude_author_checklist}</td>
+        </tr>
+    </table>
+</fieldset>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/layout/professional/preferences/language.thtml 1.4.1.src/layout/professional/preferences/language.thtml
--- 1.4.0sr5-1.src/layout/professional/preferences/language.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/preferences/language.thtml	2006-07-27 23:09:12.000000000 -0500
@@ -1,4 +1,4 @@
-  <tr valign="top">
-    <td align="right"><b>{lang_language}:</b></td>
-    <td>{language_selector}</td>
-  </tr>
+   <tr>
+        <td width="100px"><label>{lang_language}:</label></td>
+        <td>{language_selector}</td>
+   </tr>
diff -ruN 1.4.0sr5-1.src/layout/professional/preferences/privacyblock.thtml 1.4.1.src/layout/professional/preferences/privacyblock.thtml
--- 1.4.0sr5-1.src/layout/professional/preferences/privacyblock.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/preferences/privacyblock.thtml	2006-07-28 00:01:29.000000000 -0500
@@ -1,19 +1,20 @@
-{start_block_privacy}
-<table border="0" cellspacing="0" cellpadding="3">
-  <tr valign="top">
-    <td align="right"><b>{lang_emailfromuser}:</b><br>
-      <small>{lang_emailfromuser_text}</small></td>
-    <td><input type="checkbox" name="emailfromuser" {emailfromuser_checked}></td>
+<fieldset style="margin-top:10px;"><legend>{lang_privacy_title}</legend>
+      <div class="notes">
+        <h4>{lang_privacy_help_title}</h4>
+        {lang_privacy_help}
+       </div>
+<table class="inputTable">
+  <tr>
+    <td width="100px"><label for="emailfromuser">{lang_emailfromuser}:</label></td>
+    <td><input type="checkbox" id="emailfromuser" name="emailfromuser" {emailfromuser_checked}></td>
   </tr>
-  <tr valign="top">
-    <td align="right"><b>{lang_emailfromadmin}:</b><br>
-      <small>{lang_emailfromadmin_text}</small></td>
-    <td><input type="checkbox" name="emailfromadmin" {emailfromadmin_checked}></td>
+  <tr>
+    <td width="100px"><label for="emailfromadmin">{lang_emailfromadmin}:</label></td>
+    <td><input type="checkbox" id="emailfromadmin" name="emailfromadmin" {emailfromadmin_checked}></td>
   </tr>
-  <tr valign="top">
-    <td align="right"><b>{lang_showonline}:</b><br>
-      <small>{lang_showonline_text}</small></td>
-    <td><input type="checkbox" name="showonline" {showonline_checked}></td>
+  <tr>
+    <td width="100px"><label for="showonline">{lang_showonline}:</label></td>
+    <td><input type="checkbox" id="showonline" name="showonline" {showonline_checked}></td>
   </tr>
 </table>
-{end_block}
+</fieldset>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/layout/professional/preferences/profile.thtml 1.4.1.src/layout/professional/preferences/profile.thtml
--- 1.4.0sr5-1.src/layout/professional/preferences/profile.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/preferences/profile.thtml	2006-12-28 07:38:17.000000000 -0600
@@ -1,79 +1,110 @@
-{start_block_profile}
+<noscript><div class="pluginAlert" style="padding:10px;">{no_javascript_warning}</div></noscript>
+<script type="text/JavaScript" src="{site_url}/javascript/profile_editor.js"></script>
+
+<div id="pe_navbar" class="jsenabled_show" style="display:none">{navbar}</div>
 <form action="{site_url}/usersettings.php" method="POST" {enctype}>
-<table border="0" cellspacing="0" cellpadding="3">
-  {username_option}
-  <tr valign="top">
-    <td align="right"><b>{lang_fullname}</b><br>
-      <small>{lang_fullname_text}</small></td>
-    <td><input type="text" name="fullname" size="60" maxlength="80"
-      value="{fullname_value}"></td>
-  </tr>
-  <tr valign="top">
-    <td align="right"><b>{lang_old_password}</b><br>
-      <small>{lang_old_password_text}</small></td>
-    <td><input type="password" name="old_passwd" size="32" maxlength="32"
-      value=""></td>
-  </tr>
-  <tr valign="top">
-    <td align="right"><b>{lang_password}</b><br>
-      <small>{lang_password_text}</small></td>
-    <td><input type="password" name="passwd" size="32" maxlength="32"
-      value="{password_value}"></td>
-  </tr>
-  <tr valign="top">
-    <td align="right"><b>{lang_password_conf}</b><br>
-      <small>{lang_password_text_conf}</small></td>
-    <td><input type="password" name="passwd_conf" size="32" maxlength="32"
-      value="{password_value}"></td>
-  </tr>
-  <tr valign="top">
-    <td align="right"><b>{lang_cooktime}</b><br>
-      <small>{lang_cooktime_text}</small></td>
-    <td>{cooktime_selector}</td>
-  </tr>
-  <tr valign="top">
-    <td align="right"><b>{lang_email}</b><br>
-      <small>{lang_email_text}</small></td>
-    <td><input type="text" name="email" size="60" maxlength="96"
-      value="{email_value}"></td>
-  </tr>
-  <tr valign="top">
-    <td align="right"><b>{lang_homepage}</b><br>
-      <small>{lang_homepage_text}</small></td>
-    <td><input type="text" name="homepage" size="60" maxlength="96"
-      value="{homepage_value}"></td>
-  </tr>
-  <tr valign="top">
-    <td align="right"><b>{lang_location}</b><br>
-      <small>{lang_location_text}</small></td>
-    <td><input type="text" name="location" size="60" maxlength="96"
-      value="{location_value}"></td>
-  </tr>
-  <tr valign="top">
-    <td align="right"><b>{lang_signature}</b><br>
-      <small>{lang_signature_text}</small></td>
-    <td><textarea name="sig" cols="60" rows="4">{signature_value}</textarea></td>
-  </tr>
-  {userphoto_option}
-  <tr valign="top">
-    <td align="right"><b>{lang_about}</b><br>
-      <small>{lang_about_text}</small></td>
-    <td><textarea name="about" cols="60" rows="6">{about_value}</textarea></td>
-  </tr>
-  <tr valign="top">
-    <td align="right"><b>{lang_pgpkey}</b><br>
-      <small>{lang_pgpkey_text}</small></td>
-    <td><textarea name="pgpkey" cols="60" rows="6">{pgpkey_value}</textarea></td>
-  </tr>
-  <tr valign="top">
-    <td align="center" colspan="2">
-      <input type="hidden" name="uid" value="{uid_value}">
-      <input type="hidden" name="mode" value="saveuser">
-      <input type="hidden" name="username" value="{username_value}">
-      <input type="submit" value="{lang_submit}">
-    </td>
-  </tr>
-</table>
+<div id="pe_preview" style="display:none;">
+    <fieldset style="margin-top:10px;">
+        <legend>{lang_preview_title}</legend>
+        {preview}
+    </fieldset>
+</div>
+<div id="pe_namepass">
+    <fieldset style="margin-top:10px;"><legend>{lang_name_legend}</legend>
+       <table class="inputTable">
+               {username_option}
+           <tr>
+                <td width="150px"><label for="fullname">{lang_fullname}:</label></td>
+                <td><input type="text" id="fullname" name="fullname" size="60" maxlength="80" value="{fullname_value}"></td>
+           </tr>
+        </table>
+    </fieldset>
+    <fieldset style="margin-top:10px;"><legend>{lang_password_email_legend}</legend>
+      <div class="notes">
+        <h4>{lang_password_help_title}</h4>
+        <p class="last">{lang_password_help}</p>
+        <span class="warningsmall">{lang_enter_current_password}</span>
+       </div>
+       <table class="inputTable">
+           <tr>
+                <td width="150px"><label for="passwd">{lang_password}:</label></td>
+                <td><input type="password" id="passwd" name="passwd" size="32" maxlength="32" value="{password_value}"></td>
+           </tr>
+           <tr>
+               <td><label for="passwd_conf">{lang_password_conf}:</label></td>
+               <td><input type="password" id="passwd_conf" name="passwd_conf" size="32" maxlength="32" value="{password_value}"></td>
+            </tr>
+           <tr>
+               <td><label>{lang_cooktime}:</label></td>
+               <td>{cooktime_selector}</td>
+           </tr>
+           <tr>
+               <td><label for="email">{lang_email}:</label></td>
+               <td><input type="text" id="email" name="email" size="50" maxlength="96" value="{email_value}"></td>
+            </tr>
+            <tr>
+               <td><label for="email_conf">{lang_email_conf}:</label></td>
+               <td><input type="text" id="email_conf" name="email_conf" size="50" maxlength="96" value="{email_value}"></td>
+            </tr>
+            <tr>
+               <td><label for="old_passwd" class="warningsmall">{lang_old_password}:</label></td>
+               <td><input type="password" id="old_passwd" name="old_passwd" size="32" maxlength="32" value=""></td>
+            </tr>
+        </table>
+        {delete_account_option}
+</fieldset>
+</div>
+<div id="pe_userinfo" class="jsenabled_hide">
+    <fieldset id="pe_userinfo" style="margin-top:10px;"><legend>{lang_personal_info_legend}</legend>
+      <div class="notes">
+        <h4>{lang_userinfo_help_title}</h4>
+        <p class="last">{lang_userinfo_help}</p>
+       </div>
+       <table class="inputTable">
+           <tr>
+                <td width="100px"><label for="homepage">{lang_homepage}:</label></td>
+                <td><input type="text" id="homepage" name="homepage" size="55" maxlength="128" value="{homepage_value}"></td>
+           </tr>
+           <tr>
+                <td width="100px"><label for="location">{lang_location}:</label></td>
+                <td><input type="text" id="location" name="location" size="55" maxlength="96" value="{location_value}"></td>
+           </tr>
+           {userphoto_option}
+           <tr>
+                <td width="100px"><label for="sig">{lang_signature}:</label></td>
+                <td><textarea id="sig" name="sig" style="width:100%" rows="4">{signature_value}</textarea></td>
+           </tr>
+           <tr>
+                <td width="100px"><label for="about">{lang_about}:</label></td>
+                <td><textarea id="about" name="about" style="width:100%" rows="4">{about_value}</textarea></td>
+           </tr>
+           <tr>
+                <td width="100px"><label for="pgpkey">{lang_pgpkey}:</label></td>
+                <td><textarea id="pgpkey" name="pgpkey" style="width:100%" rows="4">{pgpkey_value}</textarea></td>
+           </tr>
+        </table>
+</fieldset>
+</div>
+{prefs}
+<p class="aligncenter" id="save_button">
+  <input type="hidden" name="uid" value="{uid_value}">
+  <input type="hidden" name="mode" value="saveuser">
+  <input type="hidden" name="username" value="{username_value}">
+  <span style="padding-right:50px;"><input type="submit" name="btnsubmit" value="{lang_submit}"></span>
+  <input type="submit" name="btncancel" value="{lang_cancel}">
+</p>
 </form>
-{end_block}
-{delete_account_option}
+
+<!-- JS Functions which will execute only if JS enabled will un-hide the special features that enhance the profile editor -->
+<script type="text/JavaScript">
+var el;
+el=document.getElementsByTagName('div');
+for(i=0;i<el.length;i++){
+    if(el[i].className == 'jsenabled_show'){
+        el[i].style.display = '';
+    } else if(el[i].className == 'jsenabled_hide'){
+        el[i].style.display = 'none';
+    }
+}
+
+</script>
diff -ruN 1.4.0sr5-1.src/layout/professional/preferences/theme.thtml 1.4.1.src/layout/professional/preferences/theme.thtml
--- 1.4.0sr5-1.src/layout/professional/preferences/theme.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/preferences/theme.thtml	2006-07-27 23:09:12.000000000 -0500
@@ -1,5 +1,4 @@
-  <tr valign="top">
-    <td align="right"><b>{lang_theme}:</b><br>
-      <small>{lang_theme_text}</small></td>
-    <td>{theme_selector}</td>
-  </tr>
+   <tr>
+        <td width="100px"><label>{lang_theme}:</label></td>
+        <td>{theme_selector}</td>
+   </tr>
diff -ruN 1.4.0sr5-1.src/layout/professional/preferences/username.thtml 1.4.1.src/layout/professional/preferences/username.thtml
--- 1.4.0sr5-1.src/layout/professional/preferences/username.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/preferences/username.thtml	2006-07-27 23:09:12.000000000 -0500
@@ -1,6 +1,4 @@
-  <tr valign="top">
-    <td align="right"><b>{lang_username}</b><br>
-      <small>{lang_username_text}</small></td>
-    <td><input type="text" name="new_username" size="16" maxlength="16"
-      value="{new_username_value}"></td>
-  </tr>
+   <tr>
+       <td><label for="new_username">{lang_username}:</label></td>
+       <td><input type="text" id="new_username" name="new_username" size="16" maxlength="16" value="{new_username_value}"></td>
+    </tr>
diff -ruN 1.4.0sr5-1.src/layout/professional/preferences/userphoto.thtml 1.4.1.src/layout/professional/preferences/userphoto.thtml
--- 1.4.0sr5-1.src/layout/professional/preferences/userphoto.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/preferences/userphoto.thtml	2006-07-27 23:09:12.000000000 -0500
@@ -1,5 +1,4 @@
-  <tr valign="top">
-    <td align="right"><b>{lang_userphoto}</b><br>
-      <small>{lang_userphoto_text}</small></td>
-    <td><input type="file" name="photo">{display_photo}</td>
-  </tr>
+           <tr>
+                <td width="100px"><label for="photo">{lang_userphoto}:</label></td>
+                <td><input type="file" id="photo" name="photo" size="30"><br>{display_photo}</td>
+           </tr>
diff -ruN 1.4.0sr5-1.src/layout/professional/profiles/contactauthorform.thtml 1.4.1.src/layout/professional/profiles/contactauthorform.thtml
--- 1.4.0sr5-1.src/layout/professional/profiles/contactauthorform.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/profiles/contactauthorform.thtml	2006-12-09 15:55:10.000000000 -0600
@@ -1,45 +1,34 @@
-                                {start_block_mailstory2friend}
-                                <table border="0" cellpadding="3" cellspacing="0" width="100%">
-                                    <tr>
-                                        <td>
-                                            <table align="center">
-                                                <tr>
-                                                    <td>
-                                                        <form action="{site_url}/profiles.php" method="post" name="contact">
-                                                            <table cellspacing="0" cellpadding="3" border="0" width="100%">
-                                                                <tr>
-                                                                    <td align="right"><b>{lang_fromname}:</b></td>
-                                                                    <td><input type="text" name="from" size="30" maxlength="96" value="{name}"></td>
-                                                                </tr>
-                                                                <tr>
-                                                                    <td align="right"><b>{lang_fromemailaddress}:</b></td>
-                                                                    <td><input type="text" name="fromemail" size="30" maxlength="96" value="{email}"></td>
-                                                                </tr>
-                                                                <tr>
-                                                                    <td align="right"><b>{lang_toname}:</b></td>
-                                                                    <td><input type="text" name="to" size="30" maxlength="96" value="{toname}"></td>
-                                                                </tr>
-                                                                <tr>
-                                                                    <td align="right"><b>{lang_toemailaddress}:</b></td>
-                                                                    <td><input type="text" name="toemail" size="30" maxlength="96" value="{toemail}"></td>
-                                                                </tr>
-                                                                <tr>
-                                                                    <td align="right" valign="top"><b>{lang_shortmessage}:</b></td>
-                                                                    <td><textarea name="shortmsg" rows="8" cols="60">{shortmsg}</textarea></td>
-                                                                </tr>
-                                                                <tr>
-                                                                    <td colspan="2" class="warning" align="center"><br>{lang_warning}<br><br>
-                                                                        <input type="hidden" name="sid" value="{story_id}">
-                                                                        <input type="hidden" name="what" value="sendstory">
-                                                                        <input type="submit" value="{lang_sendmessage}">
-                                                                    </td>
-                                                                </tr>
-                                                            </table>
-                                                        </form>                               
-                                                    </td>
-                                                </tr>
-                                            </table>
-                                        </td>
-                                    </tr>
-                                </table>
-                                {end_block}
+{start_block_mailstory2friend}
+<form action="{site_url}/profiles.php" method="post" name="contact">
+    <table cellspacing="0" cellpadding="3" border="0" width="100%">
+        <tr>
+            <td class="alignright"><b>{lang_fromname}:</b></td>
+            <td><input type="text" name="from" size="40" maxlength="96" value="{name}"></td>
+        </tr>
+        <tr>
+            <td class="alignright"><b>{lang_fromemailaddress}:</b></td>
+            <td><input type="text" name="fromemail" size="40" maxlength="96" value="{email}"></td>
+        </tr>
+        <tr>
+            <td class="alignright"><b>{lang_toname}:</b></td>
+            <td><input type="text" name="to" size="40" maxlength="96" value="{toname}"></td>
+        </tr>
+        <tr>
+            <td class="alignright"><b>{lang_toemailaddress}:</b></td>
+            <td><input type="text" name="toemail" size="40" maxlength="96" value="{toemail}"></td>
+        </tr>
+        <tr>
+            <td class="alignright" style="vertical-align:top;"><b>{lang_shortmessage}:</b></td>
+            <td><textarea name="shortmsg" rows="8" style="width:100%">{shortmsg}</textarea></td>
+        </tr>
+        {captcha}
+        <tr>
+            <td colspan="2" class="warning aligncenter"><br>{lang_warning}<br><br>
+                <input type="hidden" name="sid" value="{story_id}">
+                <input type="hidden" name="what" value="sendstory">
+                <input type="submit" value="{lang_sendmessage}">
+            </td>
+        </tr>
+    </table>
+</form>
+{end_block}
diff -ruN 1.4.0sr5-1.src/layout/professional/profiles/contactuserform.thtml 1.4.1.src/layout/professional/profiles/contactuserform.thtml
--- 1.4.0sr5-1.src/layout/professional/profiles/contactuserform.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/profiles/contactuserform.thtml	2006-12-09 15:55:10.000000000 -0600
@@ -1,7 +1,7 @@
 <form action="{site_url}/profiles.php" method="POST" name="contact">
-  <table cellspacing="0" cellpadding="0" border="0" width="100%">
+  <table cellspacing="0" cellpadding="0" border="0" width="100%" class="plugin">
     <tr>
-      <td colspan="2">{lang_description}</td>
+      <td colspan="2" class="pluginInfo">{lang_description}</td>
     </tr>
     <tr>
       <td>{lang_username}</td>
@@ -16,14 +16,15 @@
       <td><input type="text" name="subject" size="32" maxlength="96" value="{subject}"></td>
     </tr>
     <tr>
-      <td valign="top">{lang_message}</td>
+      <td style="vertical-align:top;">{lang_message}</td>
       <td><textarea name="message" wrap="physical" rows="10" cols="50">{message}</textarea></td>
     </tr>
+    {captcha}
     <tr>
-      <td colspan="2" class="warning" align="center">{lang_nohtml}<br>
+      <td colspan="2" class="warning alignleft" style="padding-left:200px;padding-top:10px;">{lang_nohtml}<div style="padding:5px;">
         <input type="hidden" name="what" value="contact">
         <input type="hidden" name="uid" value="{uid}">
-        <input type="submit" value="{lang_submit}"></td>
+        <input type="submit" value="{lang_submit}"></div></td>
     </tr>
   </table>
 </form>
diff -ruN 1.4.0sr5-1.src/layout/professional/rightblocks.thtml 1.4.1.src/layout/professional/rightblocks.thtml
--- 1.4.0sr5-1.src/layout/professional/rightblocks.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/rightblocks.thtml	2006-10-14 12:02:59.000000000 -0500
@@ -1,9 +1,12 @@
-<td class="block-outerborder-right"><img src="{site_url}/images/speck.gif" width="1" height="1" alt=""></td>
-<td class="block-featured-right" valign="top">
-<table width="100%" class="blocksbg-right"><tr><td valign="top">
-  {geeklog_blocks}
-<img src="{site_url}/images/speck.gif" width="180" height="1" alt="">
-</td></tr></table>
+<!-- Start of Right Blocks -->
+<td class="block-outerborder-right">
+    <div style="background:transparent; width:1px; height:1px;"></div>
+</td>
+<td class="block-featured-right" style="vertical-align:top;">
+    <div class="block-bg-right">
+            {geeklog_blocks}
+            <div class="block-bg-spreader"></div>
+    </div>
 </td>
 <!--</td></tr></table>-->
 <!--If you want the splash, uncomment the last line. If you want no splash, make sure it is commented out.-->
diff -ruN 1.4.0sr5-1.src/layout/professional/search/headingcolumn.thtml 1.4.1.src/layout/professional/search/headingcolumn.thtml
--- 1.4.0sr5-1.src/layout/professional/search/headingcolumn.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/search/headingcolumn.thtml	2006-09-15 22:09:48.000000000 -0500
@@ -1 +1 @@
-<th align="left">{label}</th>
+<th class="alignleft">{label}</th>
diff -ruN 1.4.0sr5-1.src/layout/professional/search/resultcolumn.thtml 1.4.1.src/layout/professional/search/resultcolumn.thtml
--- 1.4.0sr5-1.src/layout/professional/search/resultcolumn.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/search/resultcolumn.thtml	2006-09-15 22:09:48.000000000 -0500
@@ -1 +1 @@
-<td align="left">{data}</td>
+<td class="alignleft">{data}</td>
diff -ruN 1.4.0sr5-1.src/layout/professional/search/resultsummary.thtml 1.4.1.src/layout/professional/search/resultsummary.thtml
--- 1.4.0sr5-1.src/layout/professional/search/resultsummary.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/search/resultsummary.thtml	2006-09-15 22:09:48.000000000 -0500
@@ -1 +1 @@
-<tr><td align="left" class=basicsm colspan = 3>{data}</td></tr>
\ No newline at end of file
+<tr><td  class="alignleft" class=basicsm colspan = 3>{data}</td></tr>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/layout/professional/search/resulttitle.thtml 1.4.1.src/layout/professional/search/resulttitle.thtml
--- 1.4.0sr5-1.src/layout/professional/search/resulttitle.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/search/resulttitle.thtml	2006-09-15 22:09:48.000000000 -0500
@@ -1 +1 @@
-<tr><td align="left" class=basic colspan = 3>{data}</td></tr>
\ No newline at end of file
+<tr><td class="alignleft" class=basic colspan = 3>{data}</td></tr>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/layout/professional/search/searchauthors.thtml 1.4.1.src/layout/professional/search/searchauthors.thtml
--- 1.4.0sr5-1.src/layout/professional/search/searchauthors.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/search/searchauthors.thtml	2006-09-15 22:09:48.000000000 -0500
@@ -1,5 +1,5 @@
                                     <tr>
-                                        <td align="right">{lang_authors}:</td>
+                                        <td class="alignright">{lang_authors}:</td>
                                         <td>
                                             <select name="author">
                                                 <option selected="selected" value="0">{lang_all}</option>
diff -ruN 1.4.0sr5-1.src/layout/professional/search/searchform.thtml 1.4.1.src/layout/professional/search/searchform.thtml
--- 1.4.0sr5-1.src/layout/professional/search/searchform.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/search/searchform.thtml	2006-09-15 22:09:48.000000000 -0500
@@ -2,7 +2,7 @@
                             <form action="{site_url}/search.php" method="get">
                                 <table border="0" cellspacing="0" cellpadding="3">
                                     <tr>
-                                        <td align="right">{lang_keywords}:</td>
+                                        <td class="alignright">{lang_keywords}:</td>
                                         <td><input type="text" name="query" size="35" maxlength="35" value="{query}">
                                         <select name="keyType">
                                             <option value="phrase" {key_phrase_selected}>{lang_exact_phrase}</option>
@@ -11,13 +11,13 @@
                                         </select></td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_date}:</td>
+                                        <td class="alignright">{lang_date}:</td>
                                         <td>
                                             <input type="text" name="datestart" size="10" maxlength="10" value="{datestart}"> {lang_to} <input type="text" name="dateend" size="10" maxlength="10" value="{dateend}"> {date_format} 
                                         </td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_topic}:</td>
+                                        <td class="alignright">{lang_topic}:</td>
                                         <td>
                                             <select name="topic">
                                                 <option selected="selected" value="0">{lang_all}</option>
@@ -26,20 +26,19 @@
                                         </td>
                                     </tr>
                                     <tr>
-                                        <td align="right">{lang_type}:</td>
+                                        <td class="alignright">{lang_type}:</td>
                                         <td>
                                             <select name="type">
                                                 <option value="all" {type_all_selected}>{lang_all}</option>
                                                 <option value="stories" {stories_selected}>{lang_stories}</option>
                                                 <option value="comments" {comments_selected}>{lang_comments}</option>
-                                                <option value="events" {events_selected}>{lang_events}</option>
-						                        {plugin_types}
+                                                {plugin_types}
                                             </select>
                                         </td>
                                     </tr>
                                     {author_form_element}
                                     <tr>
-                                        <td align="right">{lang_results}:</td>
+                                        <td class="alignright">{lang_results}:</td>
                                         <td>
                                         <select name="results">
                                             <option value="10" {10_selected}>10</option>
diff -ruN 1.4.0sr5-1.src/layout/professional/search/searchresults_rows.thtml 1.4.1.src/layout/professional/search/searchresults_rows.thtml
--- 1.4.0sr5-1.src/layout/professional/search/searchresults_rows.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/search/searchresults_rows.thtml	2006-09-15 22:09:48.000000000 -0500
@@ -1,3 +1,3 @@
-                                <tr align="center">
+                                <tr class="row_center">
                                     {results_columns}
                                 </tr>
diff -ruN 1.4.0sr5-1.src/layout/professional/stats/itemstatistics.thtml 1.4.1.src/layout/professional/stats/itemstatistics.thtml
--- 1.4.0sr5-1.src/layout/professional/stats/itemstatistics.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/stats/itemstatistics.thtml	2006-09-15 22:09:48.000000000 -0500
@@ -1,6 +1,6 @@
                             <table cellpadding="0" cellspacing="1" border="0" width="99%">
                                 <tr>
-                                    <td width="100%"><b>{item_label}</b></td><td align="right"><b>{stat_name}</b></td>
+                                    <td width="100%"><b>{item_label}</b></td><td class="alignright"><b>{stat_name}</b></td>
                                 </tr>
                                 {stat_row}
                             </table>
diff -ruN 1.4.0sr5-1.src/layout/professional/stats/singlestat.thtml 1.4.1.src/layout/professional/stats/singlestat.thtml
--- 1.4.0sr5-1.src/layout/professional/stats/singlestat.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/stats/singlestat.thtml	2006-09-15 22:09:48.000000000 -0500
@@ -2,5 +2,5 @@
                                     <td>
                                         <a href="{item_url}">{item_text}</a>
                                     </td>
-                                    <td align="right">{item_stat}</td>
+                                    <td class="alignright">{item_stat}</td>
                                 </tr>
diff -ruN 1.4.0sr5-1.src/layout/professional/stats/singlesummary.thtml 1.4.1.src/layout/professional/stats/singlesummary.thtml
--- 1.4.0sr5-1.src/layout/professional/stats/singlesummary.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/stats/singlesummary.thtml	2006-09-15 22:09:48.000000000 -0500
@@ -2,5 +2,5 @@
                                     <td>
                                         {item_text}
                                     </td>
-                                    <td align="right">{item_stat}</td>
+                                    <td class="alignright">{item_stat}</td>
                                 </tr>
diff -ruN 1.4.0sr5-1.src/layout/professional/stats/sitestatistics.thtml 1.4.1.src/layout/professional/stats/sitestatistics.thtml
--- 1.4.0sr5-1.src/layout/professional/stats/sitestatistics.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/stats/sitestatistics.thtml	2006-09-15 22:09:48.000000000 -0500
@@ -1,19 +1,15 @@
                             <table cellpadding="0" cellspacing="1" border="0" width="99%">
                                 <tr>
                                     <td>{lang_totalhitstosystem}</td>
-                                    <td align="right">{total_hits}</td>
+                                    <td class="alignright">{total_hits}</td>
                                 </tr>
                                 <tr>
                                     <td>{lang_active_users}</td>
-                                    <td align="right">{active_users}</td>
+                                    <td class="alignright">{active_users}</td>
                                 </tr>
                                 <tr>
                                     <td>{lang_stories_comments}</td>
-                                    <td align="right">{total_stories} ({total_comments})</td>
-                                </tr>
-                                <tr>
-                                    <td>{lang_events}</td>
-                                    <td align="right">{total_events}</td>
+                                    <td class="alignright">{total_stories} ({total_comments})</td>
                                 </tr>
                                 {summary_row}
                             </table>
diff -ruN 1.4.0sr5-1.src/layout/professional/storytext.thtml 1.4.1.src/layout/professional/storytext.thtml
--- 1.4.0sr5-1.src/layout/professional/storytext.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/storytext.thtml	2006-10-14 12:29:44.000000000 -0500
@@ -1,27 +1,20 @@
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
-    <tr>
-      <td width="100%" class="story-title"><img src="{site_url}/images/speck.gif" width="1" height="0" alt=""><h2>{start_storylink_anchortag}{story_title}{end_storylink_anchortag}</h2></td>
-      <td class="story-title" width="5%" align="right" nowrap>&nbsp;{email_icon}&nbsp;{print_icon}&nbsp;{pdf_icon}</td>
-    </tr>
-    <tr>
-      <td class="story-box" colspan="2">
-            <table border="0" cellpadding="3" cellspacing="0" width="100%">
-                <tr><td class="story-information" width="100%">
-                        {story_date}<br>
-                        {lang_contributed_by} {start_contributedby_anchortag}{contributedby_user}{end_contributedby_anchortag}<br>
-                        {lang_views} {story_hits}
-                </td></tr>
-                <tr><td>{story_anchortag_and_image}{story_introtext}</td></tr>
-            </table>
-            <table border="0" cellpadding="3" cellspacing="0" width="100%">
-              <tr><td align="center">{edit_link}&nbsp;{page_selector}<br>
-                                     {readmore_link} {post_comment_link}<br>
-                                     {start_comments_anchortag}{comments_with_count}{end_comments_anchortag} {start_trackbacks_anchortag}{trackbacks_with_count}{end_trackbacks_anchortag}
-              </td></tr>
-            </table>
-      </td>
-    </tr>
-  </table>
-<table cellspacing="0" cellpadding="0" align="center" width="100%" class="block-divider">
-    <tr><td><img src="{site_url}/images/speck.gif" width="1" height="2" alt=""></td></tr>
-</table> 
+<div class="story">
+    <span class="story-icons">
+        &nbsp;{email_icon}&nbsp;{print_icon}&nbsp;{pdf_icon}
+    </span>
+    <h1>{start_storylink_anchortag}{story_title}{end_storylink_anchortag}</h1>
+    <div class="story-information">
+        {story_date}<br>
+        {lang_contributed_by} {start_contributedby_anchortag}{contributedby_author}{end_contributedby_anchortag}<br>
+        {lang_views} {story_hits}
+    </div>
+    <div class="story-body">
+        {story_anchortag_and_image}{story_introtext}
+    </div>
+    <div class="story-footer">
+        {edit_link}&nbsp;{page_selector}<br>
+        {readmore_link} {post_comment_link}<br>
+        {start_comments_anchortag}{comments_with_count}{end_comments_anchortag} {start_trackbacks_anchortag}{trackbacks_with_count}{end_trackbacks_anchortag}
+    </div>
+</div>
+<div class="block-divider"> </div>
diff -ruN 1.4.0sr5-1.src/layout/professional/style.css 1.4.1.src/layout/professional/style.css
--- 1.4.0sr5-1.src/layout/professional/style.css	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/style.css	2006-11-28 13:03:34.000000000 -0600
@@ -1,26 +1,42 @@
-a:link.non-ul {
-  color:#000000;
-  background: transparent;
-  text-decoration: none;
-}
-a:visited.non-ul {
-  color:#000000;
-  background: transparent;
-  text-decoration: none;
-}
-a:hover.non-ul {
-  color:#000000;
-  background: transparent;
-  text-decoration: none;
-}
+/* STYLESHEET FORMAT GUIDE *****************************************************
+
+  split the following sections:
+  - semantics (direct formatting for <td>, <a > etc
+  - classes (.whatever)
+  - common plugin CSS
+  - navbar
+  Within these sections, entries are to be strictly alphabetized.
+
+  SAMPLE:
+  .poll-vote,
+  .poll-vote-results {
+    background:transparent;
+    color:#000000;
+    font-size:smaller;
+  }
+
+  These are the rough rules:
+  - always put a ';' after the last entry
+  - always a linebreak before .
+  - always a linebreak after , ; { and }
+  - always a . before all classes
+  - two spaces indent
+  - no tabs
+  - no spaces after colons
+*/
+
+/* SEMANTICS ******************************************************************/
+a:link.non-ul,
+a:visited.non-ul,
+a:hover.non-ul,
 a:active.non-ul {
   color:#000000;
-  background: transparent;
-  text-decoration: none;
+  background:transparent;
+  text-decoration:none;
 }
 a:link {
   background:transparent;
-  color:#0000FF
+  color:#0000FF;
 }
 a:visited {
   background:transparent;
@@ -34,52 +50,129 @@
   background:transparent;
   color:#FF0000
 }
-.sitebody {
+body {
+  width:99%;
   background:#FFFFFF;
   color:#000000;
-  font:100% tahoma,verdana,helvetica,arial,sans-serif;
+  font:.8em arial,sans-serif,verdana,tahoma,helvetica;
   padding:0px;
+  margin:0px auto;
+  border-bottom:1px solid #E7E7E7;
+  border-left:1px solid #E7E7E7;
+  border-right:1px solid #E7E7E7;
+  border-top:1px solid #E7E7E7;
+  padding-left:1px;
+  padding-right:1px;
+  text-align:left;
+}
+fieldset {
+  margin-bottom:1em;
+}
+fieldset p {
+  padding:5px;
   margin:0px;
-  /*
-    scrollbar-3dlight-color:#D1D7DC;
-    scrollbar-arrow-color:#006699;
-    scrollbar-darkshadow-color:#98AAB1;
-    scrollbar-face-color:#DEE3E7;
-    scrollbar-highlight-color:#FFFFFF;
-    scrollbar-shadow-color:#DEE3E7;
-    scrollbar-track-color:#EFEFEF;
-  */
+}
+fieldset p {
+  margin-top:5px;
+  margin-bottom:0px;
+}
+fieldset legend {
+  font-size:.9em;
+}
+form {
+  margin-top:5px;
+  margin-bottom:5px;
+}
+form div.notes p,
+form div small {
+  line-height:125%;
+}
+
+form div.notes li {
+  margin-left:10px;
+}
+form fieldset div.notes {
+  float:right;
+  width:170px;
+  height:auto;
+  margin:0px 0px 10px 10px;
+  padding:5px;
+  border:1px solid #666666;
+  background-color:#ffffe1;
+  color:#666666;
+  font-size:.75em;
+}
+
+form fieldset div.notes h4 {
+  background-image:url(images/icon_info.png);
+  background-repeat:no-repeat;
+  background-position:top left;
+  padding:3px 0px 2px 27px;
+  border-width:0px 0px 1px 0px;
+  border-style:solid;
+  border-color:#666666;
+  color:#666666;
+  margin-bottom:5px;
+  margin-top:0px;
+  font-size:1.3em;
+}
+
+form fieldset div.notes p {
+  margin:0em 0em 1.2em 0em;
+  color:#666666;
+}
+
+form fieldset div.notes p.last {
+  margin:0em;
+  padding-bottom:5px;
 }
 h1 {
-  font-size: 125%;
+  font-size:125%;
 }
 h2 {
-  font-size: 100%;
+  font-size:100%;
+}
+h3 {
+  font-size:100%;
+  margin:0px;
 }
 img {
-  border: 0;
+  border:0;
 }
-input, submit {
-  color:#000000;
-  font:82% Tahoma,verdana,helvetica,arial,sans-serif
-}
-select {
-  color:#000000;
-  font:82% Tahoma,verdana,helvetica,arial,sans-serif
+input {
+  font-size:.9em;
 }
+input,
+submit,
 td {
   color:#000000;
-  font:73% Tahoma,verdana,helvetica,arial,sans-serif
 }
 textarea {
   color:#000000;
-  font:100% Tahoma,verdana,helvetica,arial,sans-serif
+  font-family:arial,sans-serif,verdana,tahoma,helvetica;
 }
 th {
   color:#000000;
-  background-color: #DAE0ED;
-  font:bold smaller Tahoma,verdana,helvetica,arial,sans-serif;
+  background-color:#DAE0ED;
+  font-weight:bold;
+  font-size:larger;
   padding-left:3px;
+  text-align:left;
+}
+p {
+  margin-top:5px;
+}
+select {
+  color:#000000;
+  font-size:.9em;
+}
+
+/* CLASSES ********************************************************************/
+
+/* Admin lists ****************************************************************/
+.admin-list-icon {
+  float:left;
+  padding:5px;
 }
 .admin-list-table {
   width:100%;
@@ -89,6 +182,11 @@
 .admin-list-table form {
   margin:0px;
 }
+.admin-list-search{
+  text-align:center;
+  margin-top:5px;
+  margin-bottom:5px;
+}
 .admin-list-field {
   text-align:left;
   padding-left:5px;
@@ -98,270 +196,148 @@
   text-align:left;
   padding-left:5px;
   padding-right:5px;
+  font-size:larger;
+}
+/* general alignment classes **************************************************/
+.alignleft {
+  text-align:left;
+}
+.alignright {
+  text-align:right;
+}
+.aligncenter {
+  text-align:center;
+}
+.aligntop {
+  vertical-align:top;
+}
+/* Blocks *********************************************************************/
+.block-box-left {
+  margin:10px;
+}
+.block-box-left,
+.block-box-right,
+.block-box {
+  margin:5px 10px 15px 10px;
+}
+.block-box-left ul,
+.block-box-right ul {
+  /* do not indent lists in the blocks too much */
+  padding-left:20px;
+  margin-top:0px;
+  margin-bottom:0px;
+}
+.block-bg-left,
+.block-bg-right{
+  border-top:1px solid #FFFFFF;
+}
+.block-bg-spreader {
+  /* this is making sure that the blocks have a minimum width */
+  background:transparent;
+  width:180px;
+  height:1px;
+}
+.block-content,
+.block-content-right,
+.block-content-left {
+  background:transparent;
+  color:#000000;
+  padding-bottom:2px;
+  padding-top:2px;
+  clear:both;
+}
+.block-content-left ul,
+.block-content-right ul,
+.block-content ul {
+  margin-top:0;
+  margin-bottom:0;
+  margin-left:16px;
+  padding-left:0;
+  border:none;
 }
 .block-divider {
   background:#FFFFFF;
   border-bottom:1px solid #F7F7F7;
   border-top:1px solid #E7E7E7;
-  color:#000000
+  color:#000000;
+  padding-top:2px;
 }
 .block-divider-left {
-  background:#FFFFFF;
   border-top:1px solid #E7E7E7;
-  color:#000000
+  border-bottom:1px solid #FFFFFF;
+  width:90%;
+  margin:0 auto;
+  line-height:0px;
 }
 .block-divider-right {
-  background:#FFFFFF;
   border-top:1px solid #CCCCCC;
-  color:#000000
+  border-bottom:1px solid #FFFFFF;
+  width:90%;
+  margin:0 auto;
+  line-height:0px;
 }
 .block-featured-left {
   background:#F7F7F7;
   border-right:1px solid #FFFFFF;
   color:#000000;
-  font:100% Tahoma,verdana,helvetica,arial,sans-serif
 }
 .block-featured-right {
   background:#E7E7E7;
   border-left:1px solid #FFFFFF;
   color:#000000;
-  font:100% Tahoma,verdana,helvetica,arial,sans-serif
-}
-.block-hightopborder-left {
-  border-top:1px solid #FFFFFF
-}
-.block-info {
-  background:transparent;
-  color:#000000;
-  font:75% Tahoma,verdana,helvetica,arial,sans-serif
-}
-.block-info-left {
-  background:transparent;
-  color:#000000;
-  font:75% Tahoma,verdana,helvetica,arial,sans-serif;
-  padding-bottom:2px;
-  padding-top:2px
-}
-.block-info-left ul {
-  margin-top: 0;
-  margin-bottom: 0;
-  margin-left: 16px;
-  padding-left: 0;
-  border: none;
-}
-.block-info-right {
-  background:transparent;
-  color:#000000;
-  font:75% Tahoma,verdana,helvetica,arial,sans-serif;
-  padding-bottom:2px;
-  padding-top:2px
 }
-.block-info-right ul {
-  margin-top: 0;
-  margin-bottom: 0;
-  margin-left: 16px;
-  padding-left: 0;
-  border: none;
+.block-helpicon {
+  padding-top:0px;
+  text-align:right;
+  float:right;
 }
 .block-outerborder-left {
-  border-left:1px solid #E7E7E7
+  border-left:1px solid #E7E7E7;
 }
 .block-outerborder-right {
-  border-right:1px solid #CCCCCC
-}
-.block-title,blocktitle {
-  background:transparent;
-  color:#1A3955;
-  font:bold smaller Tahoma,verdana,helvetica,arial,sans-serif;
-  padding-top:13px
-}
-.block-title-left {
-  background:transparent;
-  color:#1A3955;
-  font:bold smaller Tahoma,verdana,helvetica,arial,sans-serif
+  border-right:1px solid #CCCCCC;
 }
+.block-title,
+.blocktitle,
+.block-title-left,
 .block-title-right {
   background:transparent;
   color:#1A3955;
-  font:bold smaller Tahoma,verdana,helvetica,arial,sans-serif
-}
-.block-vote {
-  background:transparent;
-  color:#000000;
-  font:90% Tahoma,verdana,helvetica,arial,sans-serif
-}
-.block-vote-results {
-  background:transparent;
-  color:#000000;
-  font:90% Tahoma,verdana,helvetica,arial,sans-serif
-}
-.cal-body {
-  background:#FFFFFF;
-  border-bottom:#E7E7E7 1px solid;
-  border-left:#E7E7E7 1px solid;
-  border-right:#E7E7E7 1px solid;
-  border-top:#E7E7E7 1px solid;
-  color:#000000;
-  font:bold 150% Tahoma,verdana,helvetica,arial,sans-serif
-}
-.cal-day,cal_day {
-  background:transparent;
-  border-bottom:#F7F7F7 1px dashed;
-  border-left:#F7F7F7 1px dashed;
-  border-top:#1A3955 2px solid;
-  color:#000000;
-  font:bold 75% Tahoma,verdana,helvetica,arial,sans-serif
-}
-.cal-dayview-times {
-  background:#F7F7F7;
-  border-bottom:#E7E7E7 1px solid;
-  border-left:#E7E7E7 1px solid;
-  border-right:#E7E7E7 1px solid;
-  border-top:#1A3955 1px dashed;
-  color:#000000;
-  font:bold 80% Tahoma,verdana,helvetica,arial,sans-serif
-}
-.cal-dayx-body {
-  background:#E7E7E7
-}
-.cal-dayx-cur {
-  background:#FFFFFF;
-  color:#000000;
-  font:bold 80% Tahoma,verdana,helvetica,arial,sans-serif
-}
-.cal-dayx-subcur {
-  background:#FFFFFF;
-  color:#000000;
-  font:bold 80% Tahoma,verdana,helvetica,arial,sans-serif;
-  padding-top:4px
-}
-.cal-dayx-times {
-  border-bottom:#FFFFFF 1px solid;
-  border-left:#FFFFFF 1px solid;
-  border-right:#FFFFFF 1px solid
-}
-.cal-dayx-times2 {
-  background:#FFFFFF
-}
-.cal-dayx-weekevent {
-  border-bottom:#FFFFFF 1px solid;
-  border-left:#FFFFFF 1px dashed;
-  border-right:#FFFFFF 1px dashed;
-  border-top:#E7E7E7 1px solid
-}
-.cal-futureday {
-  background:#F7F7F7
-}
-.cal-header {
-  background:#FFFFFF;
-  border-bottom:#F7F7F7 1px solid;
-  border-left:#F7F7F7 1px solid;
-  border-right:#F7F7F7 1px solid;
-  border-top:#F7F7F7 1px solid
-}
-.cal-hr {
-  background:#FFFFFF
-}
-.cal-month,cal_month {
-  background:#F7F7F7;
-  color:#000000
-}
-.cal-nullday {
-  background:#FFFFFF;
-  border-bottom:#F7F7F7 1px dashed;
-  border-left:#F7F7F7 1px dashed;
-  border-top:#F7F7F7 1px dashed;
-  color:#000000
-}
-.cal-oldday {
-  background:#E7E7E7;
-  color:#000000
-}
-.cal-quickadd,quickadd {
-  background:#F7F7F7;
-  border-bottom:#E7E7E7 1px solid;
-  border-left:#E7E7E7 1px solid;
-  border-right:#E7E7E7 1px solid;
-  border-top:#E7E7E7 1px solid;
-  padding:4px
-}
-.cal-today {
-  background:#FFFFFF;
-  border-bottom:#1A3955 1px dashed;
-  border-left:#1A3955 1px dashed;
-  border-right:#1A3955 1px dashed;
-  border-top:#1A3955 1px dashed
-}
-.cal-weekpointers {
-  border-bottom:#F7F7F7 1px dashed;
-  border-left:#F7F7F7 1px dashed
-}
-.cal-weekview-addevent {
-  background:#FFFFFF;
-  border-right:#E7E7E7 1px solid;
-  border-top:#E7E7E7 1px solid;
-  color:#000000;
-  font:bold 80% Tahoma,verdana,helvetica,arial,sans-serif;
-  padding:4px
-}
-.cal-weekview-caltitle {
-  background:#FFFFFF;
-  border-bottom:#E7E7E7 1px solid;
-  border-left:#E7E7E7 1px solid;
-  border-right:#E7E7E7 1px solid;
-  color:#000000;
-  font:bold 80% Tahoma,verdana,helvetica,arial,sans-serif;
-  padding:4px
-}
-.cal-weekview-curday,weekview_curday {
-  background:#F7F7F7;
-  color:#000000
-}
-.cal-weekview-daterange {
-  background:#FFFFFF;
-  border-left:#E7E7E7 1px solid;
-  border-right:#E7E7E7 1px solid;
-  border-top:#E7E7E7 1px solid;
-  color:#000000;
-  font:bold 80% Tahoma,verdana,helvetica,arial,sans-serif;
-  padding:4px
-}
-.cal-weekview-dayformat {
-  background:#FFFFFF;
-  border-left:#E7E7E7 1px solid;
-  border-top:#E7E7E7 1px solid;
-  color:#000000;
-  font:bold 80% Tahoma,verdana,helvetica,arial,sans-serif;
-  padding:4px
+  font-weight:bold;
+  padding-top:5px;
+  padding-bottom:5px;
+  text-align:left;
 }
-.cal-weekview-offday,weekview_offday {
-  background:transparent;
-  color:#000000
+
+/* Block Lists ****************************************************************/
+.list-feed,
+.list-new-plugins,
+.list-new-comments,
+.list-new-trackbacks,
+.list-older-stories { 
+  margin:0px;padding:0px;
 }
-.commentbar1 {
+
+/* Comments *******************************************************************/
+.commentbar-line1 {
   background:transparent;
   color:#000000;
-  font:75% Tahoma,verdana,helvetica,arial,sans-serif;
-  padding:3px 3px
+  padding:3px 3px;
+  text-align:center;
 }
-.commentbar2 {
+.commentbar-line2 {
   background:#E7E7E7;
   border-bottom:1px solid #FFFFFF;
   border-top:1px solid #FFFFFF;
-  font:75% Tahoma,verdana,helvetica,arial,sans-serif
+  text-align:center;
 }
-.commentbar3 {
+.commentbar-line3 {
   background:#FFFFFF;
   border-bottom:1px solid #FFFFFF;
   border-top:1px solid #E7E7E7;
   color:#000000;
-  font:75% Tahoma,verdana,helvetica,arial,sans-serif;
-  padding:3px 3px
-}
-.commentbar4 {
-  background:#E7E7E7;
-  color:#000000;
-  font:75% Tahoma,verdana,helvetica,arial,sans-serif
+  padding:3px 3px;
+  text-align:center;
 }
 .commenttitle {
   background:#F7F7F7;
@@ -369,277 +345,592 @@
   border-left:1px solid #E7E7E7;
   border-right:1px solid #E7E7E7;
   border-top:1px solid #E7E7E7;
-  font:bold smaller Tahoma,verdana,helvetica,arial,sans-serif;
-  padding:3px 0px 3px 10px
+  font-weight:bold;
+  font-size:smaller;
+  padding:3px 0px 3px 10px;
+}
+/******************************************************************************/
+.edit-perm-down {
+  text-align:center;
+}
+.edit-perm-up{
+  text-align:center;
+  padding-right:10px;
+  padding-left:10px;
+}
+.fieldhelp {
+  font-size:0.8em;
+  color:#666666;
 }
+/* Footer *********************************************************************/
 .footerblock {
   background:#1A3955;
   border-top:1px solid #CCCCCC;
   color:#FFFFFF;
-  font:70% Tahoma,verdana,helvetica,arial,sans-serif;
+  font-size:0.85em;
   padding-bottom:10px;
   padding-top:10px;
-  padding-left: 4px;
-  padding-right: 4px;
+  padding-left:4px;
+  padding-right:4px;
+  vertical-align:middle;
+  text-align:left;
 }
 .footerblock a:link {
   background:transparent;
   color:#FFFFFF;
-  font:100% Tahoma,verdana,helvetica,arial,sans-serif;
-  text-decoration:none
+  text-decoration:none;
 }
 .footerblock a:visited {
   background:transparent;
   color:#FFFFFF;
-  font:100% Tahoma,verdana,helvetica,arial,sans-serif;
-  text-decoration:none
+  text-decoration:none;
 }
 .footerblock a:hover {
   background:transparent;
   color:#008000;
-  font:100% Tahoma,verdana,helvetica,arial,sans-serif;
-  text-decoration:none
+  text-decoration:none;
 }
 .footerblock a:active {
   background:transparent;
   color:#FFFFFF;
-  font:100% Tahoma,verdana,helvetica,arial,sans-serif;
-  text-decoration:none
+  text-decoration:none;
 }
-.header-envelope {
-  border-bottom:1px solid #E7E7E7;
-  border-left:1px solid #E7E7E7;
-  border-right:1px solid #E7E7E7;
-  border-top:1px solid #E7E7E7;
-  padding-left:1px;
-  padding-right:1px
+.footer-divider-top {
+  background:#FFFFFF;
+  border-top:1px solid #CCCCCC;
+  padding-top:1px;
+  color:#000000;
+}
+/* Forms **********************************************************************/
+.form-description {
+  font-weight:bold;
+  float:left;
+  width:100px;
+  text-align:right;
+  padding-right:5px;
+  display:block;
 }
-.header-logobg {
-  padding-top:4px
+.form-field {
+  padding-bottom:5px;
+  margin-left:105px;
+}
+/* Header *********************************************************************/
+.header-logobg-left {
+  padding-top:4px;
+  text-align:left;
+  vertical-align:middle;
+  margin-top:11px;
+  padding-left:15px;
+  width:50%;
+  height:78px;
+}
+.header-logobg-right {
+  padding-top:4px;
+  text-align:right;
+  padding-right:15px;
+  vertical-align:middle;
+  width:50%;
+  height:78px;
 }
 .header-logobg-container-inner {
-  background:#FFFFFF;
   background:url(images/header-bg.png) #1A3955;
-  border-bottom:1px solid #CCCCCC
+  border-bottom:1px solid #CCCCCC;
 }
 .header-logobg-container-outer {
   background:#FFFFFF;
-  padding-bottom:1px
+  padding-bottom:1px;
 }
-.header-navigation {
+.header-navigation-container {
+  border-bottom:1px solid #FFFFFF;
+}
+.header-navigation-line {
   background:#E7E7E7;
   border-bottom:1px solid #CCCCCC;
   color:#FFFFFF;
-  font:82% Tahoma,verdana,helvetica,arial,sans-serif;
   padding-bottom:3px;
-  padding-top:4px
+  padding-top:4px;
+  text-align:right;
 }
-.header-navigation a:link {
+.header-navigation-line a:link {
   background:transparent;
   border-bottom:0px solid #CCCCCC;
   color:#0000FF;
-  font:82% Tahoma,verdana,helvetica,arial,sans-serif
+  font-size:.9em;
 }
-.header-navigation a:visited {
+.header-navigation-line a:visited {
   background:transparent;
   border-bottom:0px solid #CCCCCC;
   color:#800080;
-  font:82% Tahoma,verdana,helvetica,arial,sans-serif
+  font-size:0.9em;
 }
-.header-navigation a:hover {
+.header-navigation-line a:hover {
   background:transparent;
   border-bottom:0px solid #CCCCCC;
   color:#008000;
-  font:82% Tahoma,verdana,helvetica,arial,sans-serif
+  font-size:0.9em;
 }
-.header-navigation a:active {
+.header-navigation-line a:active {
   background:transparent;
   border-bottom:0px solid #CCCCCC;
   color:#FF0000;
-  font:82% Tahoma,verdana,helvetica,arial,sans-serif
-}
-.header-navigation-container {
-  border-bottom:1px solid #FFFFFF
+  font-size:0.9em;
 }
-.header-welcomeanddate {
+.header-welcomeanddate-box {
   border-bottom:1px solid #CCCCCC;
-  height:53px
+  height:52px;
 }
+.header-welcomeanddate-text {
+  position:relative;
+  top:12px;
+  left:4px;
+}
+/******************************************************************************/
 .highlight {
-  color: #000000;
-  background-color: yellow;
-  text-decoration: none;
+  color:#000000;
+  background-color:yellow;
+  text-decoration:none;
 }
-.pagenav {
-  text-align: center;
+.inputTable td {
+  padding:4px;
+  vertical-align:top;
+}
+.inputTable label {
+  font-weight:bold;
+  float:right;
+  white-space:nowrap;
+}
+.moderation-cc {
+  width:100%;
+}
+.moderation-cc-row {
+  clear:both;
+  height:80px;
+  width:100%;
+}
+.moderation-cc-item {
+  float:left;
+  text-align:center;
 }
-.row-even {
-  background-color: #E7E7E7;
+.pagenav {
+  text-align:center;
 }
-.row-odd {
-  background-color: #FFFFFF;
+.row_center td {
+  text-align:center;
 }
 .searchauth {
   background:transparent;
   color:#000000;
-  font:100% Tahoma,verdana,helvetica,arial,sans-serif;
-  text-align:left
+  text-align:left;
 }
 .searchdate {
   background:transparent;
   color:#000000;
-  font:100% Tahoma,verdana,helvetica,arial,sans-serif;
-  text-align:right
+  text-align:right;
 }
-.searchform {
+.searchform-box {
   background:#E7E7E7;
+  text-align:right;
   border-bottom:1px solid #CCCCCC;
-  height:53px;
-  padding:6px 4px 6px 1px
+  height:52px;
+  padding:0px 4px 0px 1px;
+  margin:0px;
+}
+.searchform-elements{
+  display:inline;
+  position:relative;
+  top:6px;
+}
+.searchform-elements input{
+  font-size:0.9em;
 }
 .searchhits {
   background:transparent;
   color:#000000;
-  font:100% Tahoma,verdana,helvetica,arial,sans-serif;
-  text-align:right
+  text-align:right;
 }
 .site-slogan {
   color:#ffffff;
   background:transparent;
 }
-.smallcal-week-even {
-  background:#E7E7E7;
-  color:#000000;
+/* Stats **********************************************************************/
+.stats-list-count {
+  text-align:right;
+  padding-left:5px;
+  padding-right:5px;
+}
+.stats-header-title {
+  text-align:left;
+  width:90%;
+  padding-left:5px;
+  padding-right:5px;
 }
-.story-box {
+.stats-header-count {
+  text-align:left;
+  width:10%;
+  padding-left:5px;
+  padding-right:5px;
+}
+/* Story **********************************************************************/
+.story {
+  /* the frame around all elements of one story */
   background:transparent;
   color:#000000;
-  font:100% Tahoma,verdana,helvetica,arial,sans-serif
 }
-.story-byline,storybyline {
+.story h1{
+  /* the title of a story */
   background:transparent;
   color:#000000;
-  font:90% Tahoma,verdana,helvetica,arial,sans-serif
+  font-weight:bold;
+  padding-left:1px;
 }
-.story-container {
-  padding-right:9px;
+.story-body {
+  /* this is the actual content of the story */
+  padding:3px;
 }
-.story-information {
+.story-featured {
+  /* the frame around all elements of a featured story */
   background:transparent;
   color:#000000;
-  font:70% Tahoma,verdana,helvetica,arial,sans-serif
 }
-.story-title {
+.story-featured h1 {
+  /* the title of a featured story */
   background:transparent;
   color:#000000;
-  font:bold 110% Tahoma,verdana,helvetica,arial,sans-serif
+  font-weight:bold;
+  font-size:1.4em;
+  padding-left:1px;
+}
+.story-icons {
+  /* print & mail icons in a storybox */
+  float:right;
+}
+.story-container {
+  /* frame around all stories & centerblocks*/
+  padding-right:9px;
+}
+.story-footer {
+  /* the bottom of the story with edit-links etc */
+  padding:3px;
+  text-align:center;
 }
-.story-title-featured {
+.story-information {
+  /* the author, views and date of a story */
+  padding:3px;
+  font-size:0.85em;
   background:transparent;
   color:#000000;
-  font:bold 110% Tahoma,verdana,helvetica,arial,sans-serif
+}
+/******************************************************************************/
+.topicoption,
+.topicoption-off {
 }
 .warning {
   background:transparent;
   color:#FF0000;
-  font:bold 100% Tahoma,verdana,helvetica,arial,sans-serif
+  font-weight:bold;
 }
 .warningsmall {
   background:transparent;
   color:#FF0000;
-  font:100% Tahoma,verdana,helvetica,arial,sans-serif
 }
-.xpinputfield {
-  border:1px solid #7B9EBD
-}
-
 
 /* Default Plugin CSS Declarations */
 /* Recommended CSS to be used by Plugin Authors - allows easier site themeing */
 
-.plugin                { color: #000; background-color: #EFEFEF; font-weight: normal; font-size: 12pt; font-family: Verdana, sans-serif; border:1px solid #CCC }
-.plugin th             { color: #000; font-size: .9em; background-color: #B7C1DC; padding:5px; text-align:left;}
-.plugin tr             { vertical-align:top; }
-.plugin td             { padding:2px 5px 2px 5px; }
-.pluginBG              { background-color: #EFEFEF; }
-.pluginAltBG           { background-color: #1C1E2D; }
-.pluginTitle           { color: #1C1E2D; background-color:#EFEFEF; font-weight: bold; font-size: 85%; font-family: Verdana, sans-serif; }
-.pluginHeader          { color: #1A3955; font-weight: bolder; font-size: 95%; background-color: #CCC; padding:5px; }
-.pluginFooter          { background-color:#EFEFEF; }
-.pluginAlert           { padding:5px 15px 5px 15px; color:#D8010E; background-color: #FEF1B4; font-weight:bold;}
-.pluginInfo            { padding:5px 15px 5px 15px; color:#707070; background-color: #FEF1B4; font-size: 8pt; font-weight:normal;}
-.pluginSubTable        { color: #000; background-color: #CCC; font-weight: normal; font-size: 12pt; font-family: Verdana, sans-serif; border:1px solid #CCC }
-.pluginSubTable th     { color: #000; font-size: .7em; background-color: #C9D1E4; padding:5px; text-align:left;}
-.pluginSubTable tr     { vertical-align:top; }
-.pluginSolidOutline    { background-color: #396998; }
-.pluginSolidFill       { background-color: #1A3955; }
-.pluginCellTitle       { color: #1C1E2D; font-weight: bold; font-size: 80%; font-family: Verdana, sans-serif; background-color: #E5E5EA; }
-.pluginCellFill        { background-color: #E5E5EA; }
-.pluginCellText        { color: #000; font-weight: normal; font-size: 75%; font-family: Verdana, sans-serif; background-color: #F7F7F7; }
-.pluginTinyText        { font-size:70%; }
-.pluginSmallText       { font-size:80%; }
-.pluginMediumText      { font-size:85%; }
-.pluginLargeText       { font-size:90%; }
-.pluginAltText         { color: #FFF }
-
-.pluginRow1 td         { background-color: #EFEFEF; }
-.pluginRow2 td         { background-color: #D9D9D9; }
-
-.pluginRollOver         { color: #1C1E2D; background-color: #FFFF8F; }
-.pluginRollOut          { color: #1C1E2D; background-color: #F7F7F7; }
-
-.pluginLinks A:link     { color: #0000FF; font-style: normal; font-weight: normal; text-decoration: none }
-.pluginLinks A:visited  { color: #1E1E8E; font-style: normal; font-weight: normal; text-decoration: none }
-.pluginLinks A:hover    { color: #0000FF; font-style: normal; font-weight: normal; text-decoration: underline }
-.pluginBreadCrumbs, .pluginBreadCrumbs A:link     { color: #EFEFEF; font-style: normal; font-weight: normal; text-decoration: none }
-.pluginBreadCrumbs A:visited  { color: #EFEFEF; font-style: normal; font-weight: normal; text-decoration: none }
-.pluginBreadCrumbs A:hover    { color: #FFD700; font-style: normal; font-weight: normal; text-decoration: none }
-
-A.pluginButton:link, A.pluginButton:visited {
-    color: #000;
-    text-align: center;
-    padding-top: 2px;
-    display: block;
-    height: 19px;
-    text-decoration: none;
-    background-color: transparent;
-}
-A.pluginButton:hover { 
-    color: blue; 
-    text-align: center; 
-    padding-top: 2px; 
-    background: center url(navbar/images/button_over.gif); 
-    background-repeat: repeat-x; 
-    display: block; 
-    height: 19px; 
-    text-decoration: none; 
-    background-color: 
-    transparent;
-}
-
-
-/* Navbar Class CSS */
-#navcontainer a { text-decoration: none; }
-#navcontainer ul  {
-    margin: 0px;
-    list-style-type: none;
-    position: relative;
-    border: 0px;
-    background-color: #667AB3;
-    padding: 5px 0px 0px 0px;
-    height:26px;
-}
-
-#navcontainer li { float: left; display: inline; margin:0px; padding-top:6px; padding-bottom:5px;}
-#navcontainer ul a,
-#navcontainer ul a:link,
-#navcontainer ul a:visited  { background-color: #4358E1; border:0px solid #4358E1; color: white; padding: 5px; margin:2px; }
-#navcontainer ul a:hover,
-#navcontainer ul a:focus  { background-color: #55516B; border: 0px solid black; padding-bottom:7px; color: white; }
-
-/* current Link */
-#navcontainer ul a#current { background-color: #F2F2F2; border: 0px solid black; padding-bottom:7px; color: #4358E1; }
-#navcontainer ul a#current:link,
-#navcontainer ul a#current:visited { font-weight: bold; }
-
-/* End of Default Plugin CSS Declarations */
+.plugin {
+  color:#000000;
+  background-color:#EFEFEF;
+  font-weight:normal;
+  border:1px solid #CCCCCC;
+}
+.plugin th {
+  color:#000000;
+  background-color:#B7C1DC;
+  padding:5px;
+  text-align:left;
+}
+.plugin tr {
+  vertical-align:top;
+}
+.plugin td {
+  padding:2px 5px 2px 5px;
+}
+.pluginBG {
+  color:#FEFEFE;
+  background-color:#7398BA;
+}
+.pluginAltBG {
+  background-color:#7398BA;
+}
+.pluginAltBG td {
+  color:#FFFFFF
+}
+.pluginCellTitle {
+  color:#FFFFFF;
+  font-weight:bold;
+  background-color:#7398BA;
+  padding:5px;
+}
+.pluginCellFill {
+  background-color:#F8FAFD;
+}
+.pluginCellText {
+  color:#636363;
+  font-weight:normal;
+}
+.pluginHeader {
+  color:#204275;
+  font-weight:bolder;
+  padding-top:3px;
+  padding-bottom:3px;
+}
+.pluginFooter, .pluginFooter td {
+  background-color:#507AA1;
+  color:#FFFFFF;
+  }
+.pluginAlert {
+  padding:5px 15px 5px 15px;
+  color:#D8010E;
+  background-color:#FEF1B4;
+  font-weight:bold;
+}
+.pluginInfo {
+  padding:5px 15px 5px 15px;
+  color:#707070;
+  background-color:#FEF1B4;
+  font-weight:normal;
+}
+.pluginSubTable {
+  color:#000000;
+  background-color:#CCCCCC;
+  font-weight:normal;
+  border:1px solid #CCCCCC;
+}
+.pluginSubTable th {
+  color:#000000;
+  background-color:#C9D1E4;
+  padding:5px;
+  text-align:left;
+}
+.pluginSubTable tr {
+  vertical-align:top;
+}
+.pluginSolidOutline {
+  background-color:#CCCCCC;
+}
+.pluginSolidFill {
+  background-color:#1A3955;
+}
+.pluginTitle {
+  background-color:#507AA1;
+  color:#F5F9FF;
+  padding:4px;
+  padding-left:6px;
+  padding-right:6px;
+}
+.pluginCellSubTitle {
+  background-color:#F7F7F7;
+  color:#000000;
+  padding:4px;
+  padding-left:6px;
+  padding-right:6px;
+}
+.pluginTinyText {
+  font-size:0.70em;
+}
+.pluginSmallText {
+  font-size:0.8em;
+}
+.pluginMediumText {
+  font-size:1em;
+}
+.pluginLargeText {
+  font-size:1.25em;
+}
+.pluginAltText {
+  color:#FFFFFF;
+}
+.pluginRow1, .pluginRow1 td {
+  color:#000000;
+  background-color:#F7F7F7;
+  line-height:120%;
+}
+.pluginRow2, .pluginRow2 td {
+  color:#000000;
+  background-color:#E7E7E7;
+  line-height: 120%;
+}
+.pluginRow1 .pluginRollOver,
+.pluginRow2 .pluginRollOver,
+.pluginRollOver {
+  color:#000000;
+  background-color:#FFFFFF;
+  line-height:120%;
+}
+.pluginRow1 .pluginRollOut,
+.pluginRow2 .pluginRollOut,
+.pluginRollOut {
+  color:#000000;
+  background-color:#F7F7F7;
+  line-height:120%;
+}
+.pluginLinks A:link {
+  color:#000000;
+  font-style:normal;
+  font-weight:normal;
+  text-decoration:none;
+}
+.pluginLinks A:visited {
+  color:#000000;
+  font-style:normal;
+  font-weight:normal;
+  text-decoration:none;
+}
+.pluginLinks A:hover {
+  color:#000000;
+  font-style:normal;
+  font-weight:normal;
+  text-decoration:underline;
+}
+.pluginBreadCrumbs,
+.pluginBreadCrumbs A:link {
+  color:#FFFFFF;
+  font-style:normal;
+  font-weight:normal;
+  text-decoration:none;
+}
+.pluginBreadCrumbs A:visited {
+  color:#FFFFFF;
+  font-style:normal;
+  font-weight:normal;
+  text-decoration:none;
+}
+.pluginBreadCrumbs A:hover {
+  color:#FFFFFF;
+  font-style:normal;
+  font-weight:normal;
+  text-decoration:none;
+}
+a.pluginButton:link, a.pluginButton:visited {
+  color:#000000;
+  text-align:center;
+  padding-top:2px;
+  display:block;
+  height:19px;
+  text-decoration:none;
+  background-color:transparent;
+}
+a.pluginButton:hover {
+  color:blue;
+  text-align:center;
+  padding-top:2px;
+  background:center url(navbar/images/button_over.gif);
+  background-repeat:repeat-x;
+  display:block;
+  height:19px;
+  text-decoration:none;
+  background-color:transparent;
+}
+
+/* Navbar Class CSS ***********************************************************/
+#navcontainer {
+  float:left;
+  width:100%;
+  background:#F4F4F4;
+  font-size:93%;
+  line-height:normal;
+  border-bottom:1px solid #24618E;
+  }
+#navcontainer ul {
+  margin:0px;
+  padding:10px 10px 0 50px;
+  list-style:none;
+}
+#navcontainer li {
+  display:inline;
+  margin:0px;
+  padding:0px;
+}
+#navcontainer a {
+  float:left;
+  background:url("navbar/images/tableftJ.gif") no-repeat left top;
+  margin:0px;
+  padding:0px 0px 0px 5px;
+  text-decoration:none;
+}
+#navcontainer a span {
+  float:left;
+  display:block;
+  background:url("navbar/images/tabrightJ.gif") no-repeat right top;
+  padding:5px 15px 4px 6px;
+  color:#24618E;
+}
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+#navcontainer a span {
+  float:none;
+}
+/* End IE5-Mac hack */
+#navcontainer a:hover span {
+  color:#FFFFFF;
+}
+#navcontainer a:hover {
+  background-position:0% -42px;
+}
+#navcontainer a:hover span {
+  background-position:100% -42px;
+}
+#navcontainer a#current span {
+  background:url("navbar/images/tabrightI.gif") no-repeat left top;
+  background-position:100% -42px;
+  color:#FFFFFF;
+}
+#navcontainer a:link#current,
+#navcontainer a:visited#current,
+#navcontainer a:hover#current {
+  background:url("navbar/images/tableftI.gif") no-repeat left top;
+  background-position:0% -42px;
+}
+
+/* Common CSS for on-hover tooltip feature */
+a.tooltip {
+  position: relative; /*this is the key*/
+  z-index:10;
+  color:#000;
+  text-decoration:none;
+}
+a.tooltip:hover  {
+  z-index:100;
+  text-decoration:none
+}
+a.tooltip span {
+  display: none
+}
+a.tooltip:hover span {
+  /*the span will display just on :hover state*/
+  z-index:100;
+  color:#033666;
+  font-style:normal;
+  font-size:.8em;
+  line-height: 125%;
+  display:block;
+  position:absolute;
+  border:1px solid #C8DAF7;
+  background-color:#E5EFFF;
+  padding:4px;
+  text-align: left;
+  text-decoration:none;
+  left:-20px;
+  top:10px;
+  min-width:150px;
+}
+/* End of common CSS for on-hover info feature */
+
+/* End of Common Plugin CSS */
+
+/* Poll Plugin ****************************************************************/
+.poll-vote,
+.poll-vote-results {
+  background:transparent;
+  color:#000000;
+  font-size:smaller;
+}
diff -ruN 1.4.0sr5-1.src/layout/professional/submit/submitevent.thtml 1.4.1.src/layout/professional/submit/submitevent.thtml
--- 1.4.0sr5-1.src/layout/professional/submit/submitevent.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/submit/submitevent.thtml	1969-12-31 18:00:00.000000000 -0600
@@ -1,141 +0,0 @@
-                            {explanation}
-                            <form action="{site_url}/submit.php" method="post">
-                                <table border="0" cellspacing="0" cellpadding="3">
-                                    <tr>
-                                        <td align="right"><b>{lang_title}:</b></td>
-                                        <td><input type="text" size="36" maxlength="96" name="title"></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_eventtype}:</b></td>
-                                        <td>
-                                            <select name="event_type">
-                                                <option value="">--</option>
-                                                {type_options}
-                                            </select>
-                                        </td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_addeventto}:</b></td>
-                                        <td>
-                                            <select name="calendar_type">
-                                                <option value="master" {master_checked}>{lang_mastercalendar}</option>
-                                                {personal_option}
-                                            </select> 
-                                        </td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_startdate}:</b></td>
-                                        <td>
-                                            <select name="start_month">
-                                                {month_options}
-                                            </select> 
-                                            /
-                                            <select name="start_day">
-                                                {day_options}
-                                            </select>
-                                            /
-                                            <select name="start_year">
-                                                {year_options}
-                                            </select>&nbsp;&nbsp;
-                                            <b>{lang_starttime}: </b>
-                                            <select name="start_hour">
-                                                {hour_options}
-                                            </select>
-                                            :
-                                            <select name="start_minute">
-                                                <option value="00">00</option>
-                                                <option value="15">15</option>
-                                                <option value="30">30</option>
-                                                <option value="45">45</option>
-                                            </select>
-                                            <select name="start_ampm">
-                                                <option value="am" {am_selected}>am</option>
-                                                <option value="pm" {pm_selected}>pm</option>
-                                            </select>
-                                        </td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_enddate}:</b></td>
-                                        <td>
-                                            <select name="end_month">
-                                                {month_options}
-                                            </select> 
-                                            /
-                                            <select name="end_day">
-                                                {day_options}
-                                            </select>
-                                            /
-                                            <select name="end_year">
-                                                {year_options}
-                                            </select>&nbsp;&nbsp;
-                                            <b>{lang_endtime}: </b>
-                                            <select name="end_hour">
-                                                {hour_options}
-                                            </select>
-                                            :
-                                            <select name="end_minute">
-                                                <option value="00">00</option>
-                                                <option value="15">15</option>
-                                                <option value="30">30</option>
-                                                <option value="45">45</option>
-                                            </select>
-                                            <select name="end_ampm">
-                                                <option value="am" {am_selected}>am</option>
-                                                <option value="pm" {pm_selected}>pm</option>
-                                            </select>
-                                        </td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_alldayevent}:</b></td>
-                                        <td><input type="checkbox" name="allday"></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_location}:</b></td>
-                                        <td>
-                                            <textarea name="location" cols="45" rows="2"></textarea>
-                                        </td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_addressline1}:</b></td>
-                                        <td><input type="text" name="address1" size="36"></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_addressline2}:</b></td>
-                                        <td><input type="text" name="address2" size="36"></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_city}:</b></td>
-                                        <td><input type="text" name="city" size="36"></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_state}:</b></td>
-                                        <td>
-                                            <select name="state">
-                                                {state_options}
-                                            </select>
-                                        </td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_zipcode}:</b></td>
-                                        <td><input type="text" name="zipcode" size="5" maxlength="5"></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_link}:</b></td>
-                                        <td><input type="text" size="36" maxlength="{max_url_length}" name="url" value="http://"></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="right"><b>{lang_description}:</b></td>
-                                        <td><textarea name="description" cols="45" rows="8"></textarea></td>
-                                    </tr>
-                                    <tr>
-                                        <td align="center" colspan="2">{lang_htmnotallowed}</td>
-                                    </tr>
-                                    <tr>
-                                        <td align="center" colspan="2">
-                                            <input type="hidden" name="mode" value="{lang_submit}">
-                                            <input type="hidden" name="type" value="event">
-                                            <input type="submit" value="{lang_submit}">
-                                        </td>
-                                    </tr>
-                                </table>
-                            </form>
diff -ruN 1.4.0sr5-1.src/layout/professional/submit/submitloginrequired.thtml 1.4.1.src/layout/professional/submit/submitloginrequired.thtml
--- 1.4.0sr5-1.src/layout/professional/submit/submitloginrequired.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/submit/submitloginrequired.thtml	2006-12-04 06:35:19.000000000 -0600
@@ -1,2 +1,2 @@
                             {login_message}<br><br>
-                            [ <a href="{site_url}/users.php">{lang_login}</a> | <a href="{site_url}/users.php?mode=new">{lang_newuser}</a> ]<br><br>
+                            [ <a href="{site_url}/users.php" rel="nofollow">{lang_login}</a> | <a href="{site_url}/users.php?mode=new" rel="nofollow">{lang_newuser}</a> ]<br><br>
diff -ruN 1.4.0sr5-1.src/layout/professional/submit/submitstory_advanced.thtml 1.4.1.src/layout/professional/submit/submitstory_advanced.thtml
--- 1.4.0sr5-1.src/layout/professional/submit/submitstory_advanced.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/submit/submitstory_advanced.thtml	2006-12-09 15:55:10.000000000 -0600
@@ -7,24 +7,24 @@
                             <form action="{site_url}/submit.php" method="post" onSubmit='set_postcontent();'>
                                 <table border="0" cellspacing="0" cellpadding="3">
                                     <tr>
-                                        <td align="right"><b>{lang_username}:</b></td>
-                                        <td>{story_username} [ <a href="{status_url}">{lang_loginout}</a>{seperator}{create_account} ]</td>
+                                        <td class="alignright"><b>{lang_username}:</b></td>
+                                        <td>{story_username} [ <a href="{status_url}" rel="nofollow">{lang_loginout}</a>{separator}{create_account} ]</td>
                                     </tr>
                                     <tr>
-                                        <td align="right"><b>{lang_title}:</b></td>
+                                        <td class="alignright"><b>{lang_title}:</b></td>
                                         <td><input type="text" size="36" maxlength="96" name="title" value="{story_title}"></td>
                                     </tr>
                                     <tr>
-                                        <td align="right"><b>{lang_topic}:</b></td>
+                                        <td class="alignright"><b>{lang_topic}:</b></td>
                                         <td>
-                                            <select name=tid>
+                                            <select name="tid">
                                                 {story_topic_options}
                                             </select>
                                         </td>
                                     </tr>
-                                    <tr valign="top">
-                                        <td align="right"><b>{lang_story}:</b></td>
-                                        <td>
+                                    <tr>
+                                        <td class="alignright" style="vertical-align:top;"><b>{lang_story}:</b></td>
+                                        <td style="vertical-align:top;">
                                             <div id="text_editor" style="display:{show_texteditor};">
                                                 <textarea id="introtext" name="introtext" cols="45" rows="15">{story_introtext}</textarea>
                                             </div>
@@ -33,17 +33,18 @@
                                             </div>
                                         </td>
                                     </tr>
-                                    <tr valign="top">
-                                        <td align="right"><b>{lang_postmode}:</b></td>
-                                        <td>
+                                    <tr>
+                                        <td class="alignright" style="vertical-align:top;"><b>{lang_postmode}:</b></td>
+                                        <td style="vertical-align:top;">
                                             <select id="sel_editmode" name="postmode" {change_editormode}>
                                                 {story_postmode_options}
                                             </select>
                                             <br><span class="warningsmall">{allowed_html}</span>
                                         </td>
                                     </tr>
+                                    {captcha}
                                     <tr>
-                                        <td align="center" colspan="2">
+                                        <td class="aligncenter" colspan="2">
                                             <input type="hidden" name="type" value=story>
                                             <input type="hidden" name="uid" value="{story_uid}">
                                             <input type="hidden" name="sid" value="{story_sid}">
diff -ruN 1.4.0sr5-1.src/layout/professional/submit/submitstory.thtml 1.4.1.src/layout/professional/submit/submitstory.thtml
--- 1.4.0sr5-1.src/layout/professional/submit/submitstory.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/submit/submitstory.thtml	2006-12-09 15:55:10.000000000 -0600
@@ -1,36 +1,37 @@
                             <form action="{site_url}/submit.php" method="post">
                                 <table border="0" cellspacing="0" cellpadding="3">
                                     <tr>
-                                        <td align="right"><b>{lang_username}:</b></td>
-                                        <td>{story_username} [ <a href="{status_url}">{lang_loginout}</a>{seperator}{create_account} ]</td>
+                                        <td class="alignright"><b>{lang_username}:</b></td>
+                                        <td>{story_username} [ <a href="{status_url}" rel="nofollow">{lang_loginout}</a>{separator}{create_account} ]</td>
                                     </tr>
                                     <tr>
-                                        <td align="right"><b>{lang_title}:</b></td>
+                                        <td class="alignright"><b>{lang_title}:</b></td>
                                         <td><input type="text" size="36" maxlength="96" name="title" value="{story_title}"></td>
                                     </tr>
                                     <tr>
-                                        <td align="right"><b>{lang_topic}:</b></td>
+                                        <td class="alignright"><b>{lang_topic}:</b></td>
                                         <td>
-                                            <select name=tid>
+                                            <select name="tid">
                                                 {story_topic_options}
                                             </select>
                                         </td>
                                     </tr>
-                                    <tr valign="top">
-                                        <td align="right"><b>{lang_story}:</b></td>
-                                        <td><textarea name="introtext" cols="45" rows="15">{story_introtext}</textarea></td>
+                                    <tr>
+                                        <td class="alignright" style="vertical-align:top;"><b>{lang_story}:</b></td>
+                                        <td style="vertical-align:top;"><textarea name="introtext" cols="45" rows="15">{story_introtext}</textarea></td>
                                     </tr>
-                                    <tr valign="top">
-                                        <td align="right"><b>{lang_postmode}:</b></td>
-                                        <td>
+                                    <tr>
+                                        <td class="alignright" style="vertical-align:top;"><b>{lang_postmode}:</b></td>
+                                        <td style="vertical-align:top;">
                                             <select name="postmode">
                                                 {story_postmode_options}
                                             </select>
                                             <br><span class="warningsmall">{allowed_html}</span>
                                         </td>
                                     </tr>
+                                    {captcha}
                                     <tr>
-                                        <td align="center" colspan="2">
+                                        <td class="aligncenter" colspan="2">
                                             <input type="hidden" name="type" value=story>
                                             <input type="hidden" name="uid" value="{story_uid}">
                                             <input type="hidden" name="sid" value="{story_sid}">
diff -ruN 1.4.0sr5-1.src/layout/professional/topcenterblock-span.thtmlx 1.4.1.src/layout/professional/topcenterblock-span.thtmlx
--- 1.4.0sr5-1.src/layout/professional/topcenterblock-span.thtmlx	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/topcenterblock-span.thtmlx	2006-09-15 22:09:47.000000000 -0500
@@ -1,3 +1,3 @@
 <style type="text/css"><!--.story-container-splash {padding-right: 9px; !important} .story-container {padding-right: 0px; !important}--></style>
 <table border="0" cellspacing="0" cellpadding="0">
-<tr><td class="story-container-splash" colspan="0" width="100%" valign="top">
\ No newline at end of file
+<tr><td class="story-container-splash" colspan="0" width="100%" style="vertical-align:top;">
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/layout/professional/topicoption_off.thtml 1.4.1.src/layout/professional/topicoption_off.thtml
--- 1.4.0sr5-1.src/layout/professional/topicoption_off.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/topicoption_off.thtml	2006-06-17 23:01:52.000000000 -0500
@@ -1 +1 @@
-{option_label} {option_count}<br>
+<div class="topicoption-off">{option_label} {option_count}</div>
diff -ruN 1.4.0sr5-1.src/layout/professional/topicoption.thtml 1.4.1.src/layout/professional/topicoption.thtml
--- 1.4.0sr5-1.src/layout/professional/topicoption.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/topicoption.thtml	2006-06-17 23:01:52.000000000 -0500
@@ -1 +1 @@
-<a href="{option_url}">{option_label}</a> {option_count}<br>
+<div class="topicoption"><a href="{option_url}">{option_label}</a> {option_count}</div>
diff -ruN 1.4.0sr5-1.src/layout/professional/users/getpasswordform.thtml 1.4.1.src/layout/professional/users/getpasswordform.thtml
--- 1.4.0sr5-1.src/layout/professional/users/getpasswordform.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/users/getpasswordform.thtml	2006-09-15 22:09:48.000000000 -0500
@@ -8,21 +8,21 @@
                                                                     <td colspan="2">{lang_instructions}</td>
                                                                 </tr>
                                                                 <tr>
-                                                                    <td align="right"><b>{lang_username}:</b></td>
+                                                                    <td class="alignright"><b>{lang_username}:</b></td>
                                                                     <td><input type="text" size="16" maxlength="16" name="username"></td>
                                                                 </tr>
                                                                 <tr>
-                                                                    <td align="right"><b>{lang_email}:</b></td>
+                                                                    <td class="alignright"><b>{lang_email}:</b></td>
                                                                     <td><input type="text" size="16" maxlength="96" name="email"></td>
                                                                 </tr>
                                                                 <tr>
-                                                                    <td align="center" colspan="2">
+                                                                    <td class="aligncenter" colspan="2">
                                                                         <input type="hidden" name="mode" value="emailpasswd">
                                                                         <input type="submit" value="{lang_emailpassword}">
                                                                     </td>
                                                                 </tr>
                                                             </table>
-                                                        </form>                                
+                                                        </form>
                                                     </td>
                                                 </tr>
                                             </table>
diff -ruN 1.4.0sr5-1.src/layout/professional/users/loginform.thtml 1.4.1.src/layout/professional/users/loginform.thtml
--- 1.4.0sr5-1.src/layout/professional/users/loginform.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/users/loginform.thtml	2006-12-04 06:36:41.000000000 -0600
@@ -8,24 +8,24 @@
                                                                     <td colspan="2">{lang_message}  {lang_newreglink}</td>
                                                                 </tr>
                                                                 <tr>
-                                                                    <td align="right"><b><label for="loginname">{lang_username}</label>:</b></td>
+                                                                    <td class="alignright"><b><label for="loginname">{lang_username}</label>:</b></td>
                                                                     <td><input type="text" size="16" name="loginname"></td>
                                                                 </tr>
                                                                 {services}
                                                                 <tr>
-                                                                    <td align="right"><b><label for="passwd">{lang_password}</label>:</b></td>
+                                                                    <td class="alignright"><b><label for="passwd">{lang_password}</label>:</b></td>
                                                                     <td><input type="password" name="passwd" size="16">
-                                                                        &nbsp;<a href="{site_url}/users.php?mode=getpassword">{lang_forgetpassword}</a>
+                                                                        &nbsp;<a href="{site_url}/users.php?mode=getpassword" rel="nofollow">{lang_forgetpassword}</a>
                                                                     </td>
                                                                 </tr>
                                                                 <tr>
-                                                                    <td align="right">&nbsp;</td>
-                                                                    <td align="left">
+                                                                    <td class="alignright">&nbsp;</td>
+                                                                    <td class="alignleft">
                                                                         <input type="submit" value="{lang_login}">
                                                                     </td>
                                                                 </tr>
                                                             </table>
-                                                        </form>                               
+                                                        </form>
                                                     </td>
                                                 </tr>
                                             </table>
diff -ruN 1.4.0sr5-1.src/layout/professional/users/newpassword.thtml 1.4.1.src/layout/professional/users/newpassword.thtml
--- 1.4.0sr5-1.src/layout/professional/users/newpassword.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/users/newpassword.thtml	2006-09-15 22:09:49.000000000 -0500
@@ -3,19 +3,19 @@
 <form action="{site_url}/users.php" method="POST">
   <table width="100%" border="0" cellpadding="3" cellspacing="0">
   <tr>
-    <td align="right">{lang_username}:</td>
-    <td align="left">{user_name}</td>
+    <td class="alignright">{lang_username}:</td>
+    <td class="alignleft">{user_name}</td>
   </tr>
   <tr>
-    <td align="right">{lang_newpassword}:</td>
-    <td align="left"><input type="password" name="passwd" size="16"></td>
+    <td class="alignright">{lang_newpassword}:</td>
+    <td class="alignleft"><input type="password" name="passwd" size="16"></td>
   </tr>
   <tr>
-    <td align="right">{lang_newpassword_conf}:</td>
-    <td align="left"><input type="password" name="passwd_conf" size="16"></td>
+    <td class="alignright">{lang_newpassword_conf}:</td>
+    <td class="alignleft"><input type="password" name="passwd_conf" size="16"></td>
   </tr>
   <tr>
-    <td colspan="2" align="center">
+    <td colspan="2" class="aligncenter">
       <input type="submit" value="{lang_setnewpwd}">
       <input type="hidden" name="mode" value="setnewpwd">
       <input type="hidden" name="uid" value="{user_id}">
diff -ruN 1.4.0sr5-1.src/layout/professional/users/profile.thtml 1.4.1.src/layout/professional/users/profile.thtml
--- 1.4.0sr5-1.src/layout/professional/users/profile.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/users/profile.thtml	2006-09-15 22:09:49.000000000 -0500
@@ -1,32 +1,32 @@
 {start_block_userprofile}
     <table border="0" cellspacing="0" cellpadding="3">
-        <tr valign="top">
-            <td align="right"><b>{lang_username}:</b></td>
-            <td>{username} ({user_fullname})<br> {user_photo}</td>
-        </tr>
-        <tr valign="top">
-            <td align="right"><b>{lang_membersince}:</b></td>
-            <td>{user_regdate}</td>
-        </tr>
-        <tr valign="top">
-            <td align="right"><b>{lang_email}:</b></td>
-            <td><a href="{site_url}/profiles.php?uid={user_id}">{lang_sendemail}</a></td>
-        </tr>
-        <tr valign="top">
-            <td align="right"><b>{lang_homepage}:</b></td>
-            <td><a href="{user_homepage}">{user_homepage}</a></td>
-        </tr>
-        <tr valign="top">
-            <td align="right"><b>{lang_location}:</b></td>
-            <td>{user_location}</td>
-        </tr>
-        <tr valign="top">
-            <td align="right"><b>{lang_bio}:</b></td>
-            <td>{user_bio}</td>
-        </tr>
-        <tr valign="top">
-            <td align="right"><b>{lang_pgpkey}:</b></td>
-            <td>{user_pgp}</td>
+        <tr>
+            <td class="alignright" style="vertical-align:top;"><b>{lang_username}:</b></td>
+            <td style="vertical-align:top;">{username} ({user_fullname}) {edit_link}<br> {user_photo}</td>
+        </tr>
+        <tr>
+            <td class="alignright" style="vertical-align:top;"><b>{lang_membersince}:</b></td>
+            <td style="vertical-align:top;">{user_regdate}</td>
+        </tr>
+        <tr>
+            <td class="alignright" style="vertical-align:top;"><b>{lang_email}:</b></td>
+            <td style="vertical-align:top;"><a href="{site_url}/profiles.php?uid={user_id}">{lang_sendemail}</a></td>
+        </tr>
+        <tr>
+            <td class="alignright" style="vertical-align:top;"><b>{lang_homepage}:</b></td>
+            <td style="vertical-align:top;"><a href="{user_homepage}">{user_homepage}</a></td>
+        </tr>
+        <tr>
+            <td class="alignright" style="vertical-align:top;"><b>{lang_location}:</b></td>
+            <td style="vertical-align:top;">{user_location}</td>
+        </tr>
+        <tr>
+            <td class="alignright" style="vertical-align:top;"><b>{lang_bio}:</b></td>
+            <td style="vertical-align:top;">{user_bio}</td>
+        </tr>
+        <tr>
+            <td class="alignright" style="vertical-align:top;"><b>{lang_pgpkey}:</b></td>
+            <td style="vertical-align:top;">{user_pgp}</td>
         </tr>
     </table>
 {end_block}
diff -ruN 1.4.0sr5-1.src/layout/professional/users/registrationform.thtml 1.4.1.src/layout/professional/users/registrationform.thtml
--- 1.4.0sr5-1.src/layout/professional/users/registrationform.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/users/registrationform.thtml	2006-12-09 13:19:38.000000000 -0600
@@ -5,21 +5,26 @@
                                         <form action="{site_url}/users.php" method="post">
                                             <table border="0" cellspacing="0" cellpadding="3">
                                                 <tr>
-                                                    <td colspan="2">{lang_instructions}</td>
+                                                    <td colspan="2" width="100%">{lang_instructions}</td>
                                                 </tr>
                                                 <tr>
-                                                    <td align="right"><b>{lang_username}:</b></td>
-                                                    <td><input type="text" size="16" maxlength="16" name="username"></td>
+                                                    <td class="alignright"><b>{lang_username}:</b></td>
+                                                    <td><input type="text" size="16" maxlength="16" name="username" value="{username}"></td>
                                                 </tr>
                                                 <tr>
-                                                    <td align="right"><b>{lang_email}:</b></td>
-                                                    <td><input type="text" size="16" maxlength="96" name="email"></td>
+                                                    <td class="alignright"><b>{lang_email}:</b></td>
+                                                    <td><input type="text" size="32" maxlength="96" name="email" value="{email}"></td>
                                                 </tr>
                                                 <tr>
-                                                    <td align="center" class="warning" colspan="2">{lang_warning}</td>
+                                                    <td class="alignright"><b>{lang_email_conf}:</b></td>
+                                                    <td><input type="text" size="32" maxlength="96" name="email_conf" value="{email_conf}"></td>
                                                 </tr>
                                                 <tr>
-                                                    <td align="center" colspan="2">
+                                                    <td class="aligncenter warning" colspan="2" width="100%">{lang_warning}</td>
+                                                </tr>
+                                                {captcha}
+                                                <tr>
+                                                    <td class="aligncenter" colspan="2" width="100%">
                                                         <input type="hidden" name="mode" value="create">
                                                         <input type="submit" value="{lang_register}">
                                                     </td>
diff -ruN 1.4.0sr5-1.src/layout/professional/users/services.thtml 1.4.1.src/layout/professional/users/services.thtml
--- 1.4.0sr5-1.src/layout/professional/users/services.thtml	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/layout/professional/users/services.thtml	2006-09-15 22:09:50.000000000 -0500
@@ -1,4 +1,4 @@
 <tr>
-	<td align="right"><b><label for="service">{lang_service}</label>:</b></td>
+	<td class="alignright"><b><label for="service">{lang_service}</label>:</b></td>
   <td>{select_service}</td>
 </tr>
\ No newline at end of file
diff -ruN 1.4.0sr5-1.src/lib-common.php 1.4.1.src/lib-common.php
--- 1.4.0sr5-1.src/lib-common.php	2006-08-08 02:55:55.000000000 -0500
+++ 1.4.1.src/lib-common.php	2008-01-18 11:15:54.000000000 -0600
@@ -33,7 +33,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: lib-common.php,v 1.514 2006/02/18 14:18:29 dhaun Exp $
+// $Id: lib-common.php,v 1.611 2006/12/16 18:10:37 dhaun Exp $
 
 // Prevent PHP from reporting uninitialized variables
 error_reporting( E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR );
@@ -60,6 +60,30 @@
 $_COM_VERBOSE = false;
 
 /**
+  * Here, we shall establish an error handler. This will mean that whenever a
+  * php level error is encountered, our own code handles it. This will hopefuly
+  * go someway towards preventing nasties like path exposures from ever being
+  * possible. That is, unless someone has overridden our error handler with one
+  * with a path exposure issue...
+  *
+  * Must make sure that the function hasn't been disabled before calling it.
+  *
+  */
+if( function_exists('set_error_handler') )
+{
+    if( PHP_VERSION >= 5 )
+    {
+        /* Tell the error handler to use the default error reporting options.
+         * you may like to change this to use it in more/less cases, if so,
+         * just use the syntax used in the call to error_reporting() above.
+         */
+        $defaultErrorHandler = set_error_handler('COM_handleError', error_reporting());
+    } else {
+        $defaultErrorHandler = set_error_handler('COM_handleError');
+    }
+}
+
+/**
 * Configuration Include: You should ONLY have to modify this line.
 * Leave the rest of this file intact!
 *
@@ -68,7 +92,6 @@
 */
 require_once( '[% installdir %]/cpanel-glprivate/config.php' );
 
-
 // Before we do anything else, check to ensure site is enabled
 
 if( isset( $_CONF['site_enabled'] ) && !$_CONF['site_enabled'] )
@@ -94,7 +117,7 @@
 }
 
 // this file can't be used on its own - redirect to index.php
-if( eregi( 'lib-common.php', $_SERVER['PHP_SELF'] ))
+if( strpos( $_SERVER['PHP_SELF'], 'lib-common.php' ) !== false )
 {
     echo COM_refresh( $_CONF['site_url'] . '/index.php' );
     exit;
@@ -236,6 +259,11 @@
 
 require_once( $_CONF['path_system'] . 'classes/kses.class.php' );
 
+/**
+* Multibyte functions
+*
+*/
+require_once( $_CONF['path_system'] . 'lib-mbyte.php' );
 
 // Set theme
 // Need to modify this code to check if theme was cached in user cookie.  That
@@ -307,7 +335,8 @@
 {
     $language = preg_replace( '/[^a-z0-9\-_]/', '',
                               $_COOKIE[$_CONF['cookie_language']] );
-    if( is_file( $_CONF['path_language'] . $language . '.php' ))
+    if( is_file( $_CONF['path_language'] . $language . '.php' ) &&
+            ( $_CONF['allow_user_language'] == 1 ))
     {
         $_USER['language'] = $language;
         $_CONF['language'] = $language;
@@ -315,11 +344,16 @@
 }
 else if( !empty( $_USER['language'] ))
 {
-    if( is_file( $_CONF['path_language'] . $_USER['language'] . '.php' ))
+    if( is_file( $_CONF['path_language'] . $_USER['language'] . '.php' ) &&
+            ( $_CONF['allow_user_language'] == 1 ))
     {
         $_CONF['language'] = $_USER['language'];
     }
 }
+else if( isset( $_CONF['languages'] ) && isset( $_CONF['language_files'] ))
+{
+    $_CONF['language'] = COM_getLanguage();
+}
 
 // Handle Who's Online block
 if( empty( $_USER['uid'] ) OR $_USER['uid'] == 1 )
@@ -353,6 +387,8 @@
 
 require_once( $_CONF['path_language'] . $_CONF['language'] . '.php' );
 
+COM_switchLocaleSettings();
+
 if( setlocale( LC_ALL, $_CONF['locale'] ) === false )
 {
     setlocale( LC_TIME, $_CONF['locale'] );
@@ -365,7 +401,14 @@
 *
 */
 
-$_GROUPS = SEC_getUserGroups( $_USER['uid'] );
+if( isset( $_USER['uid'] ))
+{
+    $_GROUPS = SEC_getUserGroups( $_USER['uid'] );
+}
+else
+{
+    $_GROUPS = SEC_getUserGroups( 1 );
+}
 
 /**
 * Global array of current user permissions [read,edit]
@@ -522,8 +565,7 @@
     if( empty( $_CONF['menu_elements'] ))
     {
         $_CONF['menu_elements'] = array( // default set of links
-                'contribute', 'calendar', 'search', 'stats',
-                'directory', 'plugins' );
+                'contribute', 'search', 'stats', 'directory', 'plugins' );
     }
 
     $anon = ( empty( $_USER['uid'] ) || ( $_USER['uid'] <= 1 )) ? true : false;
@@ -562,16 +604,6 @@
 
         switch( $item )
         {
-            case 'calendar':
-                $url = $_CONF['site_url'] . '/calendar.php';
-                $label = $LANG01[74];
-                if( $anon && ( $_CONF['loginrequired'] ||
-                        $_CONF['calendarloginrequired'] ))
-                {
-                    $allowed = false;
-                }
-                break;
-
             case 'contribute':
                 if( empty( $topic ))
                 {
@@ -795,7 +827,7 @@
 
     if( function_exists( $function ))
     {
-        return $function( $what, $pagetitle );
+        return $function( $what, $pagetitle, $headercode );
     }
 
     // send out the charset header
@@ -853,12 +885,12 @@
         $topic = COM_applyFilter( $_GET['topic'] );
     }
 
-    $feed_url = '';
+    $feed_url = array();
     if( $_CONF['backend'] == 1 ) // add feed-link to header if applicable
     {
         $baseurl = SYND_getFeedUrl();
 
-        $sql = 'SELECT format, filename, title FROM '
+        $sql = 'SELECT format, filename, title, language FROM '
              . $_TABLES['syndication'] . " WHERE (header_tid = 'all')";
         if( !empty( $topic ))
         {
@@ -875,14 +907,44 @@
                 $format_type = strtolower( $format[0] );
                 $format_name = ucwords( $format[0] );
 
-                $feed_url .= '<link rel="alternate" type="application/'
-                          . $format_type . '+xml" title="' . $format_name
-                          . ' Feed: ' . $A['title'] . '" href="' . $baseurl
-                          . $A['filename'] . '">' . LB;
+                $feed_url[] = '<link rel="alternate" type="application/'
+                          . $format_type . '+xml" hreflang="' . $A['language']
+                          . '" href="' . $baseurl . $A['filename'] . '" title="'
+                          . $format_name . ' Feed: ' . $A['title'] . '">';
             }
         }
     }
-    $header->set_var( 'feed_url', $feed_url );
+    $header->set_var( 'feed_url', implode( LB, $feed_url ));
+
+    $relLinks = array();
+    if( !COM_onFrontpage() )
+    {
+        $relLinks['home'] = '<link rel="home" href="' . $_CONF['site_url']
+                          . '/" title="' . $LANG01[90] . '">';
+    }
+    $loggedInUser = ( isset( $_USER['uid'] ) && ( $_USER['uid'] > 1 ));
+    if( $loggedInUser || (( $_CONF['loginrequired'] == 0 ) &&
+                ( $_CONF['searchloginrequired'] == 0 )))
+    {
+        if(( substr( $_SERVER['PHP_SELF'], -strlen( '/search.php' ))
+                != '/search.php' ) || isset( $_GET['mode'] ))
+        {
+            $relLinks['search'] = '<link rel="search" href="'
+                                . $_CONF['site_url'] . '/search.php" title="'
+                                . $LANG01[75] . '">';
+        }
+    }
+    if( $loggedInUser || (( $_CONF['loginrequired'] == 0 ) &&
+                ( $_CONF['directoryloginrequired'] == 0 )))
+    {
+        if( strpos( $_SERVER['PHP_SELF'], '/article.php' ) !== false ) {
+            $relLinks['contents'] = '<link rel="contents" href="'
+                        . $_CONF['site_url'] . '/directory.php" title="'
+                        . $LANG01[117] . '">';
+        }
+    }
+    // TBD: add a plugin API and a lib-custom.php function
+    $header->set_var( 'rel_links', implode( LB, $relLinks ));
 
     if( empty( $pagetitle ) && isset( $_CONF['pagetitle'] ))
     {
@@ -919,6 +981,45 @@
          $header->set_var( 'advanced_editor', '' );
     }
 
+    $langAttr = '';
+    if( isset( $_CONF['languages'] ) && isset( $_CONF['language_files'] ))
+    {
+        $langId = COM_getLanguageId();
+    }
+    else
+    {
+        // try to derive the language id from the locale
+        $l = explode( '.', $_CONF['locale'] );
+        $langId = $l[0];
+    }
+    if( !empty( $langId ))
+    {
+        $l = explode( '-', str_replace( '_', '-', $langId ));
+        if(( count( $l ) == 1 ) && ( strlen( $langId ) == 2 ))
+        {
+            $langAttr = 'lang="' . $langId . '"';
+        }
+        else if( count( $l ) == 2 )
+        {
+            if(( $l[0] == 'i' ) || ( $l[0] == 'x' ))
+            {
+                $langId = implode( '-', $l );
+                $langAttr = 'lang="' . $langId . '"';
+            }
+            else if( strlen( $l[0] ) == 2 )
+            {
+                $langId = implode( '-', $l );
+                $langAttr = 'lang="' . $langId . '"';
+            }
+            else
+            {
+                $langId = $l[0];
+            }
+        }
+    }
+    $header->set_var( 'lang_id', $langId );
+    $header->set_var( 'lang_attribute', $langAttr );
+
     $header->set_var( 'background_image', $_CONF['layout_url']
                                           . '/images/bg.' . $_IMAGE_TYPE );
     $header->set_var( 'site_url', $_CONF['site_url'] );
@@ -935,7 +1036,8 @@
 
     if( !empty( $_USER['username'] ))
     {
-        $msg .= ', ' . $_USER['username'];
+        $msg .= ', ' . COM_getDisplayName( $_USER['uid'], $_USER['username'],
+                                           $_USER['fullname'] );
     }
 
     $curtime =  COM_getUserDateTimeFormat();
@@ -976,7 +1078,6 @@
     $header->set_var( 'button_home', $LANG_BUTTONS[1] );
     $header->set_var( 'button_contact', $LANG_BUTTONS[2] );
     $header->set_var( 'button_contribute', $LANG_BUTTONS[3] );
-    $header->set_var( 'button_calendar', $LANG_BUTTONS[6] );
     $header->set_var( 'button_sitestats', $LANG_BUTTONS[7] );
     $header->set_var( 'button_personalize', $LANG_BUTTONS[8] );
     $header->set_var( 'button_search', $LANG_BUTTONS[9] );
@@ -1038,6 +1139,10 @@
             {
                 $lblocks = $function( $what[1], 'left' );
             }
+            else
+            {
+                $lblocks = COM_showBlocks( 'left', $topic );
+            }
         }
         else if( $what <> 'none' )
         {
@@ -1114,7 +1219,7 @@
 
     if( function_exists( $function ))
     {
-        return $function( $rightblock );
+        return $function( $rightblock, $custom );
     }
 
     // Set template directory
@@ -1408,7 +1513,7 @@
 }
 
 /**
-* Create and return a list of available topics
+* Create and return a dropdown-list of available topics
 *
 * This is a variation of COM_optionList() from lib-common.php. It will add
 * only those topics to the option list which are accessible by the current
@@ -1422,7 +1527,7 @@
 *
 */
 
-function COM_topicList( $selection, $selected='', $sortcol=1 )
+function COM_topicList( $selection, $selected = '', $sortcol = 1, $ignorelang = false )
 {
     global $_TABLES;
 
@@ -1431,8 +1536,26 @@
     $tmp = str_replace( 'DISTINCT ', '', $selection );
     $select_set = explode( ',', $tmp );
 
-    $result = DB_query( "SELECT * FROM {$_TABLES['topics']}" . COM_getPermSQL()
-            . " ORDER BY $select_set[$sortcol]" );
+    $sql = "SELECT $selection FROM {$_TABLES['topics']}";
+    if( $ignorelang )
+    {
+        $sql .= COM_getPermSQL();
+    }
+    else
+    {
+        $permsql = COM_getPermSQL();
+        if( empty( $permsql ))
+        {
+            $sql .= COM_getLangSQL( 'tid' );
+        }
+        else
+        {
+            $sql .= $permsql . COM_getLangSQL( 'tid', 'AND' );
+        }
+    }
+    $sql .=  " ORDER BY $select_set[$sortcol]";
+
+    $result = DB_query( $sql );
     $nrows = DB_numRows( $result );
 
     for( $i = 0; $i < $nrows; $i++ )
@@ -1442,7 +1565,7 @@
 
         if( $A[0] == $selected )
         {
-            $retval .= ' selected';
+            $retval .= ' selected="selected"';
         }
 
         $retval .= '>' . stripslashes( $A[1] ) . '</option>' . LB;
@@ -1671,6 +1794,9 @@
 
     if( !empty( $logentry ))
     {
+        $logentry = str_replace( array( '<?', '?>' ), array( '(@', '@)' ),
+                                 $logentry );
+
         $timestamp = strftime( '%c' );
 
         switch( $actionid )
@@ -1736,24 +1862,30 @@
 
     $retval = '';
 
-    $timestamp = strftime( '%c' );
-    $logfile = $_CONF['path_log'] . 'access.log';
-
-    if( !$file = fopen( $logfile, 'a' ))
+    if( !empty( $logentry ))
     {
-        return $LANG01[33] . $logfile . ' (' . $timestamp . ')<br>' . LB;
-    }
+        $logentry = str_replace( array( '<?', '?>' ), array( '(@', '@)' ),
+                                 $logentry );
 
-    if( isset( $_USER['uid'] ))
-    {
-        $byuser = $_USER['uid'] . '@' . $_SERVER['REMOTE_ADDR'];
-    }
-    else
-    {
-        $byuser = 'anon@' . $_SERVER['REMOTE_ADDR'];
-    }
+        $timestamp = strftime( '%c' );
+        $logfile = $_CONF['path_log'] . 'access.log';
 
-    fputs( $file, "$timestamp ($byuser) - $logentry\n" );
+        if( !$file = fopen( $logfile, 'a' ))
+        {
+            return $LANG01[33] . $logfile . ' (' . $timestamp . ')<br>' . LB;
+        }
+
+        if( isset( $_USER['uid'] ))
+        {
+            $byuser = $_USER['uid'] . '@' . $_SERVER['REMOTE_ADDR'];
+        }
+        else
+        {
+            $byuser = 'anon@' . $_SERVER['REMOTE_ADDR'];
+        }
+
+        fputs( $file, "$timestamp ($byuser) - $logentry\n" );
+    }
 
     return $retval;
 }
@@ -1762,36 +1894,45 @@
 * Shows all available topics
 *
 * Show the topics in the system the user has access to and prints them in HTML.
-* This function is used to show the topics in the sections block.
+* This function is used to show the topics in the topics block.
 *
-* @param        string      $topic      TopicID of currently selected
-* @return   string    HTML formatted topic list
+* @param    string    $topic      ID of currently selected topic
+* @return   string                HTML formatted topic list
 *
 */
 
 function COM_showTopics( $topic='' )
 {
-    global $_CONF, $_TABLES, $_USER, $LANG01, $_BLOCK_TEMPLATE,
-           $page, $newstories;
+    global $_CONF, $_TABLES, $_USER, $LANG01, $_BLOCK_TEMPLATE, $page;
+
+    $langsql = COM_getLangSQL( 'tid' );
+    if( empty( $langsql ))
+    {
+        $op = 'WHERE';
+    }
+    else
+    {
+        $op = 'AND';
+    }
 
-    $sql = "SELECT tid,topic,imageurl FROM {$_TABLES['topics']}";
+    $sql = "SELECT tid,topic,imageurl FROM {$_TABLES['topics']}" . $langsql;
     if( !empty( $_USER['uid'] ) && ( $_USER['uid'] > 1 ))
     {
         $tids = DB_getItem( $_TABLES['userindex'], 'tids',
                             "uid = '{$_USER['uid']}'" );
         if( !empty( $tids ))
         {
-            $sql .= " WHERE (tid NOT IN ('" . str_replace( ' ', "','", $tids )
+            $sql .= " $op (tid NOT IN ('" . str_replace( ' ', "','", $tids )
                  . "'))" . COM_getPermSQL( 'AND' );
         }
         else
         {
-            $sql .= COM_getPermSQL();
+            $sql .= COM_getPermSQL( $op );
         }
     }
     else
     {
-        $sql .= COM_getPermSQL();
+        $sql .= COM_getPermSQL( $op );
     }
     if( $_CONF['sortmethod'] == 'alpha' )
     {
@@ -1808,12 +1949,12 @@
     if( isset( $_BLOCK_TEMPLATE['topicoption'] ))
     {
         $templates = explode( ',', $_BLOCK_TEMPLATE['topicoption'] );
-        $sections->set_file( array( 'option' => $templates[0],
-                                     'current' => $templates[1] ));
+        $sections->set_file( array( 'option'  => $templates[0],
+                                    'current' => $templates[1] ));
     }
     else
     {
-        $sections->set_file( array( 'option' => 'topicoption.thtml',
+        $sections->set_file( array( 'option'   => 'topicoption.thtml',
                                     'inactive' => 'topicoption_off.thtml' ));
     }
     $sections->set_var( 'site_url', $_CONF['site_url'] );
@@ -1825,28 +1966,28 @@
         // Give a link to the homepage here since a lot of people use this for
         // navigating the site
 
-        if( COM_isFrontpage() )
+        if( COM_onFrontpage() )
         {
-            $sections->set_var( 'option_url',
-                                $_CONF['site_url'] . '/index.php' );
+            $sections->set_var( 'option_url', '' );
             $sections->set_var( 'option_label', $LANG01[90] );
             $sections->set_var( 'option_count', '' );
             $sections->set_var( 'topic_image', '' );
-            $retval .= $sections->parse( 'item', 'option' );
+            $retval .= $sections->parse( 'item', 'inactive' );
         }
         else
         {
-            $sections->set_var( 'option_url', '' );
+            $sections->set_var( 'option_url',
+                                $_CONF['site_url'] . '/index.php' );
             $sections->set_var( 'option_label', $LANG01[90] );
             $sections->set_var( 'option_count', '' );
             $sections->set_var( 'topic_image', '' );
-            $retval .= $sections->parse( 'item', 'inactive' );
+            $retval .= $sections->parse( 'item', 'option' );
         }
     }
 
     if( $_CONF['showstorycount'] )
     {
-        $sql = "SELECT tid, count(*) AS count FROM {$_TABLES['stories']} "
+        $sql = "SELECT tid, COUNT(*) AS count FROM {$_TABLES['stories']} "
              . 'WHERE (draft_flag = 0) AND (date <= NOW()) '
              . COM_getPermSQL( 'AND' )
              . ' GROUP BY tid';
@@ -1859,7 +2000,7 @@
 
     if( $_CONF['showsubmissioncount'] )
     {
-        $sql = "SELECT tid, count(*) AS count FROM {$_TABLES['storysubmission']} "
+        $sql = "SELECT tid, COUNT(*) AS count FROM {$_TABLES['storysubmission']} "
              . ' GROUP BY tid';
         $rcount = DB_query( $sql );
         while( $C = DB_fetchArray( $rcount ))
@@ -1981,29 +2122,13 @@
         $retval .= COM_startBlock( $title, $help,
                            COM_getBlockTemplate( 'user_block', 'header' ));
 
-        if( $_CONF['personalcalendars'] == 1 )
-        {
-            $url = $_CONF['site_url'] . '/calendar.php?mode=personal';
-            $usermenu->set_var( 'option_label', $LANG01[66] );
-            $usermenu->set_var( 'option_count', '' );
-            $usermenu->set_var( 'option_url', $url );
-            if( $thisUrl == $url )
-            {
-                $retval .= $usermenu->parse( 'item', 'current' );
-            }
-            else
-            {
-                $retval .= $usermenu->parse( 'item', 'option' );
-            }
-        }
-
         // This function will show the user options for all installed plugins
         // (if any)
 
         $plugin_options = PLG_getUserOptions();
         $nrows = count( $plugin_options );
 
-        for( $i = 1; $i <= $nrows; $i++ )
+        for( $i = 0; $i < $nrows; $i++ )
         {
             $plg = current( $plugin_options );
             $usermenu->set_var( 'option_label', $plg->adminlabel );
@@ -2042,19 +2167,6 @@
             $retval .= $usermenu->parse( 'item', 'option' );
         }
 
-        $url = $_CONF['site_url'] . '/usersettings.php?mode=preferences';
-        $usermenu->set_var( 'option_label', $LANG01[49] );
-        $usermenu->set_var( 'option_count', '' );
-        $usermenu->set_var( 'option_url', $url );
-        if( $thisUrl == $url )
-        {
-            $retval .= $usermenu->parse( 'item', 'current' );
-        }
-        else
-        {
-            $retval .= $usermenu->parse( 'item', 'option' );
-        }
-
         $url = $_CONF['site_url'] . '/users.php?mode=logout';
         $usermenu->set_var( 'option_label', $LANG01[19] );
         $usermenu->set_var( 'option_count', '' );
@@ -2138,7 +2250,8 @@
 
 function COM_adminMenu( $help = '', $title = '' )
 {
-    global $_TABLES, $_USER, $_CONF, $LANG01, $_BLOCK_TEMPLATE, $LANG_PDF;
+    global $_TABLES, $_USER, $_CONF, $LANG01, $_BLOCK_TEMPLATE, $LANG_PDF,
+           $_DB_dbms;
 
     $retval = '';
 
@@ -2148,9 +2261,9 @@
     }
 
     $plugin_options = PLG_getAdminOptions();
-    $nrows = count( $plugin_options );
+    $num_plugins = count( $plugin_options );
 
-    if( SEC_isModerator() OR SEC_hasrights( 'story.edit,block.edit,topic.edit,event.edit,user.edit,plugin.edit,user.mail', 'OR' ) OR ( $nrows > 0 ))
+    if( SEC_isModerator() OR SEC_hasRights( 'story.edit,block.edit,topic.edit,user.edit,plugin.edit,user.mail,syndication.edit', 'OR' ) OR ( $num_plugins > 0 ))
     {
         // what's our current URL?
         $thisUrl = COM_getCurrentURL();
@@ -2181,7 +2294,7 @@
                            COM_getBlockTemplate( 'admin_block', 'header' ));
 
         $topicsql = '';
-        if( SEC_isModerator() || SEC_hasrights( 'story.edit' ))
+        if( SEC_isModerator() || SEC_hasRights( 'story.edit' ))
         {
             $tresult = DB_query( "SELECT tid FROM {$_TABLES['topics']}"
                                  . COM_getPermSQL() );
@@ -2201,65 +2314,49 @@
             }
         }
 
-        if( SEC_isModerator()  || (( $_CONF['usersubmission'] == 1 ) && SEC_hasRights( 'user.edit,user.delete' )))
+        $modnum = 0;
+        if( SEC_hasRights( 'story.edit,story.moderate', 'OR' ) || (( $_CONF['usersubmission'] == 1 ) && SEC_hasRights( 'user.edit,user.delete' )))
         {
-            $num = 0;
 
-            if( SEC_hasrights( 'story.edit' ))
+            if( SEC_hasRights( 'story.moderate' ))
             {
                 if( empty( $topicsql ))
                 {
-                    $num += DB_count( $_TABLES['storysubmission'] );
+                    $modnum += DB_count( $_TABLES['storysubmission'] );
                 }
                 else
                 {
                     $sresult = DB_query( "SELECT COUNT(*) AS count FROM {$_TABLES['storysubmission']} WHERE" . $topicsql );
                     $S = DB_fetchArray( $sresult );
-                    $num += $S['count'];
-                }
-
-                if( $_CONF['listdraftstories'] == 1 )
-                {
-                    $sql = "SELECT COUNT(*) AS count FROM {$_TABLES['stories']} WHERE (draft_flag = 1)";
-                    if( !empty( $topicsql ))
-                    {
-                        $sql .= ' AND' . $topicsql;
-                    }
-                    $result = DB_query( $sql . COM_getPermSQL( 'AND', 0, 3 ));
-                    $A = DB_fetchArray( $result );
-                    $num += $A['count'];
+                    $modnum += $S['count'];
                 }
             }
 
-            if( SEC_hasrights( 'event.edit' ))
+            if(( $_CONF['listdraftstories'] == 1 ) && SEC_hasRights( 'story.edit' ))
             {
-                $num += DB_count( $_TABLES['eventsubmission'] );
+                $sql = "SELECT COUNT(*) AS count FROM {$_TABLES['stories']} WHERE (draft_flag = 1)";
+                if( !empty( $topicsql ))
+                {
+                    $sql .= ' AND' . $topicsql;
+                }
+                $result = DB_query( $sql . COM_getPermSQL( 'AND', 0, 3 ));
+                $A = DB_fetchArray( $result );
+                $modnum += $A['count'];
             }
 
-
             if( $_CONF['usersubmission'] == 1 )
             {
-                if( SEC_hasrights( 'user.edit' ) && SEC_hasrights( 'user.delete' ))
+                if( SEC_hasRights( 'user.edit' ) && SEC_hasRights( 'user.delete' ))
                 {
-                    $emptypwd = md5( '' );
-                    $num += DB_count( $_TABLES['users'], 'status', '2' );
+                    $modnum += DB_count( $_TABLES['users'], 'status', '2' );
                 }
             }
-
-            // now handle submissions for plugins
-
-            $num = $num + PLG_getSubmissionCount();
-
-            $url = $_CONF['site_admin_url'] . '/moderation.php';
-            $adminmenu->set_var( 'option_url', $url );
-            $adminmenu->set_var( 'option_label', $LANG01[10] );
-            $adminmenu->set_var( 'option_count', COM_numberFormat( $num ));
-            $menu_item = $adminmenu->parse( 'item',
-                    ( $thisUrl == $url ) ? 'current' : 'option' );
-            $link_array[$LANG01[10]] = $menu_item;
         }
 
-        if( SEC_hasrights( 'story.edit' ))
+        // now handle submissions for plugins
+        $modnum += PLG_getSubmissionCount();
+
+        if( SEC_hasRights( 'story.edit' ))
         {
             $url = $_CONF['site_admin_url'] . '/story.php';
             $adminmenu->set_var( 'option_url', $url );
@@ -2270,7 +2367,7 @@
             }
             else
             {
-                $nresult = DB_query( "SELECT COUNT(*) AS count from {$_TABLES['stories']} WHERE" . $topicsql );
+                $nresult = DB_query( "SELECT COUNT(*) AS count from {$_TABLES['stories']} WHERE" . $topicsql . COM_getPermSql( 'AND' ));
                 $N = DB_fetchArray( $nresult );
                 $numstories = $N['count'];
             }
@@ -2281,46 +2378,37 @@
             $link_array[$LANG01[11]] = $menu_item;
         }
 
-        if( SEC_hasrights( 'block.edit' ))
+        if( SEC_hasRights( 'block.edit' ))
         {
+            $result = DB_query( "SELECT COUNT(*) AS count FROM {$_TABLES['blocks']}" . COM_getPermSql());
+            list( $count ) = DB_fetchArray( $result );
+
             $url = $_CONF['site_admin_url'] . '/block.php';
             $adminmenu->set_var( 'option_url', $url );
             $adminmenu->set_var( 'option_label', $LANG01[12] );
-            $adminmenu->set_var( 'option_count',
-                    COM_numberFormat( DB_count( $_TABLES['blocks'] )));
+            $adminmenu->set_var( 'option_count', COM_numberFormat( $count ));
 
             $menu_item = $adminmenu->parse( 'item',
                     ( $thisUrl == $url ) ? 'current' : 'option' );
             $link_array[$LANG01[12]] = $menu_item;
         }
 
-        if( SEC_hasrights( 'topic.edit' ))
+        if( SEC_hasRights( 'topic.edit' ))
         {
+            $result = DB_query( "SELECT COUNT(*) AS count FROM {$_TABLES['topics']}" . COM_getPermSql());
+            list( $count ) = DB_fetchArray( $result );
+
             $url = $_CONF['site_admin_url'] . '/topic.php';
             $adminmenu->set_var( 'option_url', $url );
             $adminmenu->set_var( 'option_label', $LANG01[13] );
-            $adminmenu->set_var( 'option_count',
-                    COM_numberFormat( DB_count( $_TABLES['topics'] )));
+            $adminmenu->set_var( 'option_count', COM_numberFormat( $count ));
 
             $menu_item = $adminmenu->parse( 'item',
                     ( $thisUrl == $url ) ? 'current' : 'option' );
             $link_array[$LANG01[13]] = $menu_item;
         }
 
-        if( SEC_hasrights( 'event.edit' ))
-        {
-            $url = $_CONF['site_admin_url'] . '/event.php';
-            $adminmenu->set_var( 'option_url', $url );
-            $adminmenu->set_var( 'option_label', $LANG01[15] );
-            $adminmenu->set_var( 'option_count',
-                    COM_numberFormat( DB_count( $_TABLES['events'] )));
-
-            $menu_item = $adminmenu->parse( 'item',
-                    ( $thisUrl == $url ) ? 'current' : 'option' );
-            $link_array[$LANG01[15]] = $menu_item;
-        }
-
-        if( SEC_hasrights( 'user.edit' ))
+        if( SEC_hasRights( 'user.edit' ))
         {
             $url = $_CONF['site_admin_url'] . '/user.php';
             $adminmenu->set_var( 'option_url', $url );
@@ -2333,11 +2421,15 @@
             $link_array[$LANG01[17]] = $menu_item;
         }
 
-        if( SEC_hasrights( 'group.edit' ))
+        if( SEC_hasRights( 'group.edit' ))
         {
-            $thisUsersGroups = SEC_getUserGroups();
-            $grp_list = implode( ',', $thisUsersGroups );
-            $result = DB_query( "SELECT COUNT(*) AS count FROM {$_TABLES['groups']} WHERE grp_id IN ($grp_list)" );
+            if (SEC_inGroup('Root')) {
+                $grpFilter = '';
+            } else {
+                $thisUsersGroups = SEC_getUserGroups ();
+                $grpFilter = 'WHERE (grp_id IN (' . implode (',', $thisUsersGroups) . '))';
+            }
+            $result = DB_query( "SELECT COUNT(*) AS count FROM {$_TABLES['groups']} $grpFilter;" );
             $A = DB_fetchArray( $result );
 
             $url = $_CONF['site_admin_url'] . '/group.php';
@@ -2351,7 +2443,7 @@
             $link_array[$LANG01[96]] = $menu_item;
         }
 
-        if( SEC_hasrights( 'user.mail' ))
+        if( SEC_hasRights( 'user.mail' ))
         {
             $url = $_CONF['site_admin_url'] . '/mail.php';
             $adminmenu->set_var( 'option_url', $url );
@@ -2363,7 +2455,7 @@
             $link_array[$LANG01[105]] = $menu_item;
         }
 
-        if(( $_CONF['backend'] == 1 ) && SEC_inGroup( 'Root' ))
+        if(( $_CONF['backend'] == 1 ) && SEC_hasRights( 'syndication.edit' ))
         {
             $url = $_CONF['site_admin_url'] . '/syndication.php';
             $adminmenu->set_var( 'option_url', $url );
@@ -2412,7 +2504,7 @@
 
         // This will show the admin options for all installed plugins (if any)
 
-        for( $i = 1; $i <= $nrows; $i++ )
+        for( $i = 0; $i < $num_plugins; $i++ )
         {
             $plg = current( $plugin_options );
 
@@ -2436,7 +2528,8 @@
             next( $plugin_options );
         }
 
-        if( $_CONF['allow_mysqldump'] == 1 AND SEC_inGroup( 'Root' ))
+        if(( $_CONF['allow_mysqldump'] == 1 ) AND ( $_DB_dbms == 'mysql' ) AND
+                SEC_inGroup( 'Root' ))
         {
             $url = $_CONF['site_admin_url'] . '/database.php';
             $adminmenu->set_var( 'option_url', $url );
@@ -2449,7 +2542,7 @@
         }
 
         // Add PDF Generator Link if the feature is enabled
-        if(( $_CONF['pdf_enabled'] == 1 ) AND ( SEC_inGroup( 'Root' )))
+        if(( $_CONF['pdf_enabled'] == 1 ) AND SEC_inGroup( 'Root' ))
         {
             $url = $_CONF['site_url'] . '/pdfgenerator.php';
             $adminmenu->set_var( 'option_url', $url );
@@ -2481,15 +2574,25 @@
             $menu_item = $adminmenu->parse( 'item', 'option' );
             $link_array[$LANG01[107]] = $menu_item;
         }
-        if ($_CONF['sort_admin'] )
+
+        if( $_CONF['sort_admin'] )
         {
-            ksort($link_array);
+            uksort( $link_array, 'strcasecmp' );
         }
-        reset($link_array);
-        while (list($key, $val) = each($link_array))
+
+        $url = $_CONF['site_admin_url'] . '/moderation.php';
+        $adminmenu->set_var( 'option_url', $url );
+        $adminmenu->set_var( 'option_label', $LANG01[10] );
+        $adminmenu->set_var( 'option_count', COM_numberFormat( $modnum ));
+        $menu_item = $adminmenu->parse( 'item',
+                    ( $thisUrl == $url ) ? 'current' : 'option' );
+        $link_array = array( $menu_item ) + $link_array;
+
+        foreach( $link_array as $link )
         {
-          $retval .= "$val\n";
+            $retval .= $link;
         }
+
         $retval .= COM_endBlock( COM_getBlockTemplate( 'admin_block', 'footer' ));
     }
 
@@ -2565,7 +2668,7 @@
 
             for( $i = 0; $i < count( $_CONF['censorlist']); $i++ )
             {
-                $EditedMessage = eregi_replace( $RegExPrefix . $_CONF['censorlist'][$i] . $RegExSuffix, "\\1$Replacement\\2", $EditedMessage );
+                $EditedMessage = MBYTE_eregi_replace( $RegExPrefix . $_CONF['censorlist'][$i] . $RegExSuffix, "\\1$Replacement\\2", $EditedMessage );
             }
         }
     }
@@ -2626,28 +2729,28 @@
 {
     global $_CONF;
 
-    $str = stripslashes( $str );
+    // replace any \ with &#092; (HTML equiv)
+    $str = str_replace('\\', '&#092;', COM_stripslashes($str) );
 
     // Get rid of any newline characters
     $str = preg_replace( "/\n/", '', $str );
 
     // Replace any $ with &#36; (HTML equiv)
     $str = str_replace( '$', '&#36;', $str );
-
     // handle [code] ... [/code]
     do
     {
-        $start_pos = strpos( strtolower( $str ), '[code]' );
+        $start_pos = MBYTE_strpos( MBYTE_strtolower( $str ), '[code]' );
         if( $start_pos !== false )
         {
-            $end_pos = strpos( strtolower( $str ), '[/code]' );
+            $end_pos = MBYTE_strpos( MBYTE_strtolower( $str ), '[/code]' );
             if( $end_pos !== false )
             {
-                $encoded = COM_handleCode( substr( $str, $start_pos + 6,
+                $encoded = COM_handleCode( MBYTE_substr( $str, $start_pos + 6,
                         $end_pos - ( $start_pos + 6 )));
                 $encoded = '<pre><code>' . $encoded . '</code></pre>';
-                $str = substr( $str, 0, $start_pos ) . $encoded
-                     . substr( $str, $end_pos + 7 );
+                $str = MBYTE_substr( $str, 0, $start_pos ) . $encoded
+                     . MBYTE_substr( $str, $end_pos + 7 );
             }
             else // missing [/code]
             {
@@ -2655,9 +2758,9 @@
                 // special characters). However, the calling entity should
                 // better be checking for missing [/code] before calling this
                 // function ...
-                $encoded = COM_handleCode( substr( $str, $start_pos + 6 ));
+                $encoded = COM_handleCode( MBYTE_substr( $str, $start_pos + 6 ));
                 $encoded = '<pre><code>' . $encoded . '</code></pre>';
-                $str = substr( $str, 0, $start_pos ) . $encoded;
+                $str = MBYTE_substr( $str, 0, $start_pos ) . $encoded;
             }
         }
     }
@@ -2765,6 +2868,56 @@
     return( $rfc822->isValidInetAddress( $email ) ? true : false );
 }
 
+
+/**
+* Encode a string such that it can be used in an email header
+*
+* @param    string  $string     the text to be encoded
+* @return   string              encoded text
+*
+*/
+function COM_emailEscape( $string )
+{
+    global $_CONF, $LANG_CHARSET;
+
+    if( empty( $LANG_CHARSET ))
+    {
+        $charset = $_CONF['default_charset'];
+        if( empty( $charset ))
+        {
+            $charset = 'iso-8859-1';
+        }
+    }
+    else
+    {
+        $charset = $LANG_CHARSET;
+    }
+
+    if(( $charset == 'utf-8' ) && ( $string != utf8_decode( $string )))
+    {
+        if( function_exists( 'iconv_mime_encode' ))
+        {
+            $mime_parameters = array( 'input-charset'  => 'utf-8',
+                                      'output-charset' => 'utf-8',
+                                      // 'Q' encoding is more readable than 'B'
+                                      'scheme'         => 'Q'
+                                    );
+            $string = substr( iconv_mime_encode( '', $string,
+                                                 $mime_parameters ), 2 );
+        }
+        else
+        {
+            $string = '=?' . $charset . '?B?' . base64_encode( $string ) . '?=';
+        }
+    }
+    else if( preg_match( '/[^0-9a-z\-\.,:;\?! ]/i', $string ))
+    {
+        $string = '=?' . $charset . '?B?' . base64_encode( $string ) . '?=';
+    }
+
+    return $string;
+}
+
 /**
 * Takes a name and an email address and returns a string that vaguely
 * resembles an email address specification conforming to RFC(2)822 ...
@@ -2776,9 +2929,10 @@
 */
 function COM_formatEmailAddress( $name, $address )
 {
-    $formatted_name = $name;
+    $formatted_name = COM_emailEscape( $name );
 
-    if( eregi( '[^0-9a-z ]', $formatted_name ))
+    // if the name comes back unchanged, it's not UTF-8, so preg_match is fine
+    if(( $formatted_name == $name ) && preg_match( '/[^0-9a-z ]/i', $name ))
     {
         $formatted_name = str_replace( '"', '\\"', $formatted_name );
         $formatted_name = '"' . $formatted_name . '"';
@@ -2792,16 +2946,20 @@
 *
 * All emails sent by Geeklog are sent through this function now.
 *
-* @param    to         string   recipients name and email address
-* @param    subject    string   subject of the email
-* @param    message    string   the text of the email
-* @param    from       string   (optional) sender of the the email
-* @param    html       bool     true if to be sent as an HTML email
-* @param    priority   int      add X-Priority header, if > 0
-* @return   boolean             true if successful,  otherwise false
+* @param    string      $to         recipients name and email address
+* @param    string      $subject    subject of the email
+* @param    string      $message    the text of the email
+* @param    string      $from       (optional) sender of the the email
+* @param    boolean     $html       (optional) true if to be sent as HTML email
+* @param    int         $priority   (optional) add X-Priority header, if > 0
+* @param    string      $cc         (optional) other recipients (name + email)
+* @return   boolean                 true if successful,  otherwise false
+*
+* @note Please note that using the $cc parameter will expose the email addresses
+*       of all recipients. Use with care.
 *
 */
-function COM_mail( $to, $subject, $message, $from = '', $html = false, $priority = 0 )
+function COM_mail( $to, $subject, $message, $from = '', $html = false, $priority = 0, $cc = '' )
 {
     global $_CONF, $LANG_CHARSET;
 
@@ -2813,12 +2971,14 @@
     }
 
     $to = substr( $to, 0, strcspn( $to, "\r\n" ));
+    $cc = substr( $cc, 0, strcspn( $cc, "\r\n" ));
     $from = substr( $from, 0, strcspn( $from, "\r\n" ));
     $subject = substr( $subject, 0, strcspn( $subject, "\r\n" ));
+    $subject = COM_emailEscape( $subject );
 
     if( function_exists( 'CUSTOM_mail' ))
     {
-        return CUSTOM_mail( $to, $subject, $message, $from, $html, $priority );
+        return CUSTOM_mail( $to, $subject, $message, $from, $html, $priority, $cc );
     }
 
     include_once( 'Mail.php' );
@@ -2859,6 +3019,10 @@
     {
         $headers['To'] = $to;
     }
+    if( !empty( $cc ))
+    {
+        $headers['Cc'] = $cc;
+    }
     $headers['Date'] = date( 'r' ); // RFC822 formatted date
     if( $method == 'smtp' )
     {
@@ -2936,8 +3100,8 @@
                 }
 
                 $day2 = strftime( $dateonly, $A['day'] );
-                $string .= '<b>' . $daycheck . '</b> <small>' . $day2
-                        . '</small>' . LB;
+                $string .= '<h3>' . $daycheck . '<small>' . $day2
+                        . '</small></h3>' . LB;
                 $oldnews = array();
                 $day = $daycheck;
             }
@@ -2965,7 +3129,7 @@
 * This shows a single block and is typically called from
 * COM_showBlocks OR from plugin code
 *
-* @param        string      $name       Logical name of block (not same as title) -- 'user_block', 'admin_block', 'section_block', 'events_block', 'whats_new_block'.
+* @param        string      $name       Logical name of block (not same as title) -- 'user_block', 'admin_block', 'section_block', 'whats_new_block'.
 * @param        string      $help       Help file location
 * @param        string      $title      Title shown in block header
 * @see function COM_showBlocks
@@ -2979,7 +3143,7 @@
 
     $retval = '';
 
-    if( isset( $_USER['noboxes'] ))
+    if( !isset( $_USER['noboxes'] ))
     {
         if( !empty( $_USER['uid'] ))
         {
@@ -3009,13 +3173,6 @@
                 . COM_endBlock( COM_getBlockTemplate( $name, 'footer' ));
             break;
 
-        case 'events_block':
-            if( !$_USER['noboxes'] && $_CONF['showupcomingevents'] )
-            {
-                $retval .= COM_printUpcomingEvents( $help, $title );
-            }
-            break;
-
         case 'whats_new_block':
             if( !$_USER['noboxes'] )
             {
@@ -3044,7 +3201,7 @@
 
 function COM_showBlocks( $side, $topic='', $name='all' )
 {
-    global $_CONF, $_TABLES, $_USER, $LANG21, $topic, $page, $newstories;
+    global $_CONF, $_TABLES, $_USER, $LANG21, $topic, $page;
 
     $retval = '';
 
@@ -3064,30 +3221,31 @@
         }
     }
 
+    $sql = "SELECT *,UNIX_TIMESTAMP(rdfupdated) AS date "
+         . "FROM {$_TABLES['blocks']} WHERE is_enabled = 1";
+
     if( $side == 'left' )
     {
-        $sql = "SELECT *,UNIX_TIMESTAMP(rdfupdated) AS date "
-              ."FROM {$_TABLES['blocks']} WHERE onleft = 1 AND is_enabled = 1";
+        $sql .= " AND onleft = 1";
     }
     else
     {
-        $sql = "SELECT *,UNIX_TIMESTAMP(rdfupdated) AS date "
-              ."FROM {$_TABLES['blocks']} WHERE onleft = 0 AND is_enabled = 1";
+        $sql .= " AND onleft = 0";
     }
 
     if( !empty( $topic ))
     {
-        $sql .= " AND (tid = '$topic' OR (tid = 'all' AND type <> 'layout'))";
+        $sql .= " AND (tid = '$topic' OR tid = 'all')";
     }
     else
     {
-        if( COM_isFrontpage() )
+        if( COM_onFrontpage() )
         {
-            $sql .= " AND (tid = 'all' AND type <> 'layout')";
+            $sql .= " AND (tid = 'homeonly' OR tid = 'all')";
         }
         else
         {
-            $sql .= " AND (tid = 'homeonly' OR (tid = 'all' AND type <> 'layout'))";
+            $sql .= " AND (tid = 'all')";
         }
     }
 
@@ -3105,7 +3263,7 @@
 
     // convert result set to an array of associated arrays
     $blocks = array();
-    for( $i = 1; $i <= $nrows; $i++ )
+    for( $i = 0; $i < $nrows; $i++ )
     {
         $blocks[] = DB_fetchArray( $result );
     }
@@ -3117,11 +3275,11 @@
     // sort the resulting array by block order
     $column = 'blockorder';
     $sortedBlocks = $blocks;
-    for( $i = 0; $i < sizeof( $sortedBlocks )-1; $i++ )
+    for( $i = 0; $i < sizeof( $sortedBlocks ) - 1; $i++ )
     {
-        for ($j=0; $j<sizeof($sortedBlocks)-1-$i; $j++)
+        for( $j = 0; $j < sizeof( $sortedBlocks ) - 1 - $i; $j++ )
         {
-            if ($sortedBlocks[$j][$column] > $sortedBlocks[$j+1][$column])
+            if( $sortedBlocks[$j][$column] > $sortedBlocks[$j+1][$column] )
             {
                 $tmp = $sortedBlocks[$j];
                 $sortedBlocks[$j] = $sortedBlocks[$j + 1];
@@ -3131,10 +3289,11 @@
     }
     $blocks = $sortedBlocks;
 
-    // Loop though resulting sorted array aand pass associative arays to COM_formatBlock
+    // Loop though resulting sorted array and pass associative arrays
+    // to COM_formatBlock
     foreach( $blocks as $A )
     {
-        if( SEC_hasAccess( $A['owner_id'], $A['group_id'], $A['perm_owner'], $A['perm_group'], $A['perm_members'], $A['perm_anon']) > 0 or $A['type'] == 'dynamic' )
+        if( $A['type'] == 'dynamic' or SEC_hasAccess( $A['owner_id'], $A['group_id'], $A['perm_owner'], $A['perm_group'], $A['perm_members'], $A['perm_anon'] ) > 0 )
         {
            $retval .= COM_formatBlock( $A, $_USER['noboxes'] );
         }
@@ -3156,7 +3315,7 @@
 */
 function COM_formatBlock( $A, $noboxes = false )
 {
-    global $_CONF, $_TABLES, $_USER, $LANG21, $topic, $page, $newstories;
+    global $_CONF, $_TABLES, $_USER, $LANG21;
 
     $retval = '';
     if( $A['type'] == 'portal' )
@@ -3173,7 +3332,7 @@
         $retval .= COM_showBlock( $A['name'], $A['help'], $A['title'] );
     }
 
-    if( $A['type'] == 'phpblock' && !$_USER['noboxes'] )
+    if( $A['type'] == 'phpblock' && !$noboxes )
     {
         if( !( $A['name'] == 'whosonline_block' AND DB_getItem( $_TABLES['blocks'], 'is_enabled', "name='whosonline_block'" ) == 0 ))
         {
@@ -3203,10 +3362,9 @@
         }
     }
 
-    if( !empty( $A['content'] ) && !$_USER['noboxes'] )
+    if( !empty( $A['content'] ) && ( trim( $A['content'] ) != '' ) && !$noboxes )
     {
         $blockcontent = stripslashes( $A['content'] );
-        $blockcontent = str_replace( array( '<?', '?>' ), '', $blockcontent );
 
         // Hack: If the block content starts with a '<' assume it
         // contains HTML and do not call nl2br() which would only add
@@ -3217,6 +3375,11 @@
             $blockcontent = nl2br( $blockcontent );
         }
 
+        if ($A['allow_autotags'] == 1) {
+            $blockcontent = PLG_replaceTags( $blockcontent );
+        }
+        $blockcontent = str_replace( array( '<?', '?>' ), '', $blockcontent );
+
         $retval .= COM_startBlock( $A['title'], $A['help'],
                        COM_getBlockTemplate( $A['name'], 'header' ))
                 . $blockcontent . LB
@@ -3270,7 +3433,7 @@
 */
 function COM_rdfImport( $bid, $rdfurl, $maxheadlines = 0 )
 {
-    global $_CONF, $_TABLES, $LANG21;
+    global $_CONF, $_TABLES, $LANG21, $LANG_CHARSET;
 
     // Import the feed handling classes:
     require_once( $_CONF['path_system']
@@ -3307,16 +3470,38 @@
         $result = DB_change( $_TABLES['blocks'], 'rdfupdated', $update,
                                                  'bid', $bid );
 
+        if( empty( $LANG_CHARSET ))
+        {
+            $charset = $_CONF['default_charset'];
+            if( empty( $charset ))
+            {
+                $charset = 'iso-8859-1';
+            }
+        }
+        else
+        {
+            $charset = $LANG_CHARSET;
+        }
+
         // format articles for display
-        for( $i = 0; $i < $maxheadlines; $i++ )
+        $readmax = min( $maxheadlines, count( $feed->articles ));
+        for( $i = 0; $i < $readmax; $i++ )
         {
             if( empty( $feed->articles[$i]['title'] ))
             {
                 $feed->articles[$i]['title'] = $LANG21[61];
             }
 
+            if( $charset == 'utf-8' )
+            {
+                $title = $feed->articles[$i]['title'];
+            }
+            else
+            {
+                $title = utf8_decode( $feed->articles[$i]['title'] );
+            }
             $content = '<a href="' . $feed->articles[$i]['link'] . '">'
-                     . $feed->articles[$i]['title'] . '</a>';
+                     . $title . '</a>';
             $articles[] = $content;
         }
 
@@ -3332,6 +3517,9 @@
     {
         // failed to aquire info, 0 out the block and log an error
         COM_errorLog( "Unable to aquire feed reader for $rdfurl", 1 );
+        COM_errorLog( $factory->errorStatus[0] . ' ' .
+        							$factory->errorStatus[1] . ' ' .
+        							$factory->errorStatus[2] );
         $result = DB_change( $_TABLES['blocks'], 'content',
                              addslashes( $LANG21[4] ), 'bid', $bid );
     }
@@ -3439,7 +3627,7 @@
     global $_TABLES, $LANG01;
 
     $result = DB_query( "SELECT passwd FROM {$_TABLES['users']} WHERE username='$loginname'" );
-    $tmp = mysql_errno();
+    $tmp = DB_error();
     $nrows = DB_numRows( $result );
 
     if(( $tmp == 0 ) && ( $nrows == 1 ))
@@ -3523,276 +3711,43 @@
 }
 
 /**
-* Returns the upcoming event block
+* This will email new stories in the topics that the user is interested in
 *
-* Returns the HTML for any upcoming events in the calendar
+* In account information the user can specify which topics for which they
+* will receive any new article for in a daily digest.
 *
-* @param        string      $help       Help file for block
-* @param        string      $title      Title to be used in block header
-* @return   string  HTML formatted block containing events.
+* @return   void
 */
 
-function COM_printUpcomingEvents( $help='', $title='' )
+function COM_emailUserTopics()
 {
-    global $_TABLES, $LANG01, $_CONF, $_USER;
+    global $_CONF, $_TABLES, $LANG08, $LANG24;
 
-    $range = $_CONF['upcomingeventsrange'];
-    if( $range == 0 )
-    {
-        $range = 14; // fallback: 14 days
-    }
-    $dateonly = $_CONF['dateonly'];
-    if( empty( $dateonly ))
-    {
-        $dateonly = '%d-%b'; // fallback: day - abbrev. month name
-    }
+    $subject = strip_tags( $_CONF['site_name'] . $LANG08[30] . strftime( '%Y-%m-%d', time() ));
 
-    if( empty( $title ))
-    {
-        $title = DB_getItem( $_TABLES['blocks'], 'title', "name = 'events_block'" );
-    }
+    $authors = array();
 
-    $retval = COM_startBlock( $title, $help,
-                       COM_getBlockTemplate( 'events_block', 'header' ));
+    // Get users who want stories emailed to them
+    $usersql = "SELECT username,email,etids,{$_TABLES['users']}.uid AS uuid "
+        . "FROM {$_TABLES['users']}, {$_TABLES['userindex']} "
+        . "WHERE {$_TABLES['users']}.uid > 1 AND {$_TABLES['userindex']}.uid = {$_TABLES['users']}.uid AND (etids <> '-' OR etids IS NULL) ORDER BY {$_TABLES['users']}.uid";
 
-    $eventSql = 'SELECT eid,title,url,datestart,dateend,group_id,owner_id,perm_owner,perm_group,perm_members,perm_anon '
-        . "FROM {$_TABLES['events']} "
-        . "WHERE dateend >= NOW() AND (TO_DAYS(datestart) - TO_DAYS(NOW()) < $range) "
-        . 'ORDER BY datestart,timestart';
+    $users = DB_query( $usersql );
+    $nrows = DB_numRows( $users );
 
-    if(( $_CONF['personalcalendars'] == 1 ) && !empty( $_USER['uid'] ))
-    {
-        $personaleventsql = 'SELECT eid,title,url,datestart,dateend,group_id,owner_id,perm_owner,perm_group,perm_members,perm_anon '
-            . "FROM {$_TABLES['personal_events']} "
-            . "WHERE uid = {$_USER['uid']} AND dateend >= NOW() AND (TO_DAYS(datestart) - TO_DAYS(NOW()) < $range) "
-            . 'ORDER BY datestart, dateend';
-    }
+    $lastrun = DB_getItem( $_TABLES['vars'], 'value', "name = 'lastemailedstories'" );
 
-    $allEvents = DB_query( $eventSql );
-    $numRows = DB_numRows( $allEvents );
-    $totalrows = $numRows;
+    // For each user, pull the stories they want and email it to them
+    for( $x = 1; $x <= $nrows; $x++ )
+    {
+        $U = DB_fetchArray( $users );
 
-    $numDays = 0;          // Without limits, I'll force them.
-    $theRow = 1;           // Start with today!
-    $oldDate1 = 'no_day';  // Invalid Date!
-    $oldDate2 = 'last_d';  // Invalid Date!
+        $storysql = array();
+        $storysql['mysql'] = "SELECT sid,uid,date AS day,title,introtext,bodytext";
 
-    if( $_CONF['personalcalendars'] == 1 AND !empty( $_USER['uid'] ))
-    {
-        $iterations = 2;
-    }
-    else
-    {
-        $iterations = 1;
-    }
+        $storysql['mssql'] = "SELECT sid,uid,date AS day,title,CAST(introtext AS text) AS introtext,CAST(bodytext AS text) AS introtext";
 
-    $eventsFound = 0;
-    $skipFirstBreak = false;
-
-    for( $z = 1; $z <= $iterations; $z++ )
-    {
-        if( $z == 2 )
-        {
-            $allEvents = DB_query( $personaleventsql );
-            $numRows = DB_numRows( $allEvents );
-            $totalrows = $totalrows + $numRows;
-
-            $numDays = 0;          // Without limits, I'll force them.
-            $theRow = 1;           // Start with today!
-            $oldDate1 = 'no_day';  // Invalid Date!
-            $oldDate2 = 'last_d';  // Invalid Date!
-            $classname = 'list-personal-events';
-            $headline = false;
-        }
-        else
-        {
-            $classname = 'list-site-events';
-            $headline = false;
-        }
-        if( $_CONF['personalcalendars'] == 0 )
-        {
-            $headline = true; // no headline needed
-            $skipFirstBreak = true;
-        }
-
-        while( $theRow <= $numRows AND $numDays < $range )
-        {
-            // Retreive the next event, and format the start date.
-            $theEvent = DB_fetchArray( $allEvents );
-
-            if( SEC_hasAccess( $theEvent['owner_id'], $theEvent['group_id'], $theEvent['perm_owner'], $theEvent['perm_group'], $theEvent['perm_members'], $theEvent['perm_anon'] ) > 0 )
-            {
-                $eventsFound++;
-
-                if( !$headline )
-                {
-                    if($z == 2)
-                    {
-                        if( $numRows > 0 )
-                        {
-                            $retval .= '<p><b>' . $LANG01[101] . '</b><br>';
-                        }
-                    }
-                    else
-                    {
-                        if( $totalrows > 0 )
-                        {
-                            $retval .= '<b>' . $LANG01[102] . '</b><br>';
-                        }
-                    }
-
-                    $headline = true;
-                }
-
-                // Start Date strings...
-                $startDate = $theEvent['datestart'];
-                $theTime1 = strtotime( $startDate );
-                $dayName1 = strftime( '%A', $theTime1 );
-                $abbrDate1 = strftime( $dateonly, $theTime1 );
-
-                // End Date strings...
-                $endDate = $theEvent['dateend'];
-                $theTime2 = strtotime( $endDate );
-                $dayName2 = strftime( '%A', $theTime2 );
-                $abbrDate2 = strftime( $dateonly, $theTime2 );
-
-                $todaysEvent = false;
-                if( date( 'Ymd', $theTime1 ) == date( 'Ymd', time()))
-                {
-                    $todaysEvent = true;
-                    if( $z == 2 )
-                    {
-                        $todaysClassName = 'personal-event-today';
-                    }
-                    else
-                    {
-                        $todaysClassName = 'site-event-today';
-                    }
-                }
-
-                // If either of the dates [start/end] change, then display a new header.
-                if( $oldDate1 != $abbrDate1 OR $oldDate2 != $abbrDate2 )
-                {
-                    $oldDate1 = $abbrDate1;
-                    $oldDate2 = $abbrDate2;
-                    $numDays ++;
-
-                    if( $numDays < $range )
-                    {
-                        if( !empty( $newevents ))
-                        {
-                             $retval .= COM_makeList( $newevents, $classname );
-                        }
-
-                        if( $skipFirstBreak )
-                        {
-                            $skipFirstBreak = false;
-                        }
-                        else
-                        {
-                            $retval .= '<br>';
-                        }
-                        if( $todaysEvent )
-                        {
-                            $retval .= '<span class="' . $todaysClassName
-                                    . '">';
-                        }
-                        $retval .= '<b>' . $dayName1 . '</b>&nbsp;<small>'
-                                . $abbrDate1 . '</small>';
-
-                        // If different start and end dates, then display end date:
-                        if( $abbrDate1 != $abbrDate2 )
-                        {
-                            $retval .= ' - <br><b>' . $dayName2 . '</b>&nbsp;<small>' . $abbrDate2 . '</small>';
-                        }
-                        if( $todaysEvent )
-                        {
-                            $retval .= '</span>';
-                        }
-                    }
-
-                    $newevents = array();
-                }
-
-                // Now display this event record.
-                if( $numDays < $range )
-                {
-                    // Display the url now!
-                    $newevent = '<a href="' . $_CONF['site_url']
-                              . '/calendar_event.php?';
-
-                    if( $z == 2 )
-                    {
-                        $newevent .= 'mode=personal&amp;';
-                    }
-
-                    $newevent .= 'eid=' . $theEvent['eid'] . '"';
-                    if( $todaysEvent )
-                    {
-                        $newevent .= ' class="' . $todaysClassName . '"';
-                    }
-                    $newevent .= '>' . stripslashes( $theEvent['title'] )
-                              . '</a>';
-                    $newevents[] = $newevent;
-                }
-
-                if( !empty( $newevents ))
-                {
-                    $retval .= COM_makeList( $newevents, $classname );
-                    $newevents = array();
-                }
-            }
-
-            $theRow++;
-        }
-    } // end for z
-
-    if( $eventsFound == 0 )
-    {
-        // There aren't any upcoming events, show a nice message
-        $retval .= $LANG01[89];
-    }
-
-    $retval .= COM_endBlock( COM_getBlockTemplate( 'events_block', 'footer' ));
-
-    return $retval;
-}
-
-/**
-* This will email new stories in the topics that the user is interested in
-*
-* In account information the user can specify which topics for which they
-* will receive any new article for in a daily digest.
-*
-* @return   void
-*/
-
-function COM_emailUserTopics()
-{
-    global $_CONF, $_TABLES, $LANG08, $LANG24;
-
-    $subject = strip_tags( $_CONF['site_name'] . $LANG08[30] . strftime( '%Y-%m-%d', time() ));
-
-    $authors = array();
-
-    // Get users who want stories emailed to them
-    $usersql = "SELECT username,email,etids,{$_TABLES['users']}.uid AS uuid "
-        . "FROM {$_TABLES['users']}, {$_TABLES['userindex']} "
-        . "WHERE {$_TABLES['users']}.uid > 1 AND {$_TABLES['userindex']}.uid = {$_TABLES['users']}.uid AND (etids <> '-') ORDER BY {$_TABLES['users']}.uid";
-
-    $users = DB_query( $usersql );
-    $nrows = DB_numRows( $users );
-
-    $lastrun = DB_getItem( $_TABLES['vars'], 'value', "name = 'lastemailedstories'" );
-
-    // For each user, pull the stories they want and email it to them
-    for( $x = 1; $x <= $nrows; $x++ )
-    {
-        $U = DB_fetchArray( $users );
-
-        $storysql = "SELECT sid,uid,date AS day,title,introtext,bodytext "
-            . "FROM {$_TABLES['stories']} "
-            . "WHERE draft_flag = 0 AND date <= NOW() AND date >= '{$lastrun}'";
+        $commonsql = " FROM {$_TABLES['stories']} WHERE draft_flag = 0 AND date <= NOW() AND date >= '{$lastrun}'";
 
         $topicsql = "SELECT tid FROM {$_TABLES['topics']}"
                   . COM_getPermSQL( 'WHERE', $U['uuid'] );
@@ -3820,11 +3775,14 @@
 
         if( sizeof( $TIDS ) > 0)
         {
-            $storysql .= " AND (tid IN ('" . implode( "','", $TIDS ) . "'))";
+            $commonsql .= " AND (tid IN ('" . implode( "','", $TIDS ) . "'))";
         }
 
-        $storysql .= COM_getPermSQL( 'AND', $U['uuid'] );
-        $storysql .= ' ORDER BY featured DESC, date DESC';
+        $commonsql .= COM_getPermSQL( 'AND', $U['uuid'] );
+        $commonsql .= ' ORDER BY featured DESC, date DESC';
+
+        $storysql['mysql'] .= $commonsql;
+        $storysql['mssql'] .= $commonsql;
 
         $stories = DB_query( $storysql );
         $nsrows = DB_numRows( $stories );
@@ -3849,7 +3807,7 @@
             {
                 if( empty( $authors[$S['uid']] ))
                 {
-                    $storyauthor = DB_getItem( $_TABLES['users'], 'username', "uid = '{$S['uid']}'" );
+                    $storyauthor = COM_getDisplayName ($S['uid']);
                     $authors[$S['uid']] = $storyauthor;
                 }
                 else
@@ -3867,10 +3825,8 @@
 
                 if( $_CONF['emailstorieslength'] > 1 )
                 {
-                   if( strlen( $storytext ) > $_CONF['emailstorieslength'] )
-                   {
-                       $storytext = substr( $storytext, 0, $_CONF['emailstorieslength'] ) . '...';
-                   }
+                    $storytext = COM_truncate( $storytext,
+                                    $_CONF['emailstorieslength'], '...' );
                 }
 
                 $mailtext .= $storytext . "\n\n";
@@ -3920,8 +3876,15 @@
 
     if( $_CONF['hidenewstories'] == 0 )
     {
+        $archsql = '';
+        $archivetid = DB_getItem( $_TABLES['topics'], 'tid', "archive_flag=1" );
+        if( !empty( $archivetid ))
+        {
+            $archsql = " AND (tid <> '" . addslashes( $archivetid ) . "')";
+        }
+
         // Find the newest stories
-        $sql = "SELECT COUNT(*) AS count FROM {$_TABLES['stories']} WHERE (date >= (date_sub(NOW(), INTERVAL {$_CONF['newstoriesinterval']} SECOND))) AND (date <= NOW()) AND (draft_flag = 0)" . COM_getPermSQL( 'AND' ) . $topicsql;
+        $sql = "SELECT COUNT(*) AS count FROM {$_TABLES['stories']} WHERE (date >= (date_sub(NOW(), INTERVAL {$_CONF['newstoriesinterval']} SECOND))) AND (date <= NOW()) AND (draft_flag = 0)" . $archsql . COM_getPermSQL( 'AND' ) . $topicsql . COM_getLangSQL( 'sid', 'AND' );
         $result = DB_query( $sql );
         $A = DB_fetchArray( $result );
         $nrows = $A['count'];
@@ -3932,7 +3895,7 @@
         }
 
         // Any late breaking news stories?
-        $retval .= '<b>' . $LANG01[99] . '</b><br>';
+        $retval .= '<h3>' . $LANG01[99] . '</h3>';
 
         if( $nrows > 0 )
         {
@@ -3965,10 +3928,10 @@
     if( $_CONF['hidenewcomments'] == 0 )
     {
         // Go get the newest comments
-        $retval .= '<b>' . $LANG01[83] . '</b> <small>'
+        $retval .= '<h3>' . $LANG01[83] . ' <small>'
                 . COM_formatTimeString( $LANG_WHATSNEW['new_last'],
                                         $_CONF['newcommentsinterval'] )
-                . '</small><br>';
+                . '</small></h3>';
 
         $stwhere = '';
 
@@ -3982,7 +3945,7 @@
         {
             $stwhere .= "({$_TABLES['stories']}.perm_anon IS NOT NULL)";
         }
-        $sql = "SELECT DISTINCT count(*) AS dups, type, {$_TABLES['stories']}.title, {$_TABLES['stories']}.sid, max({$_TABLES['comments']}.date) as lastdate FROM {$_TABLES['comments']} LEFT JOIN {$_TABLES['stories']} ON (({$_TABLES['stories']}.sid = {$_TABLES['comments']}.sid)" . COM_getPermSQL( 'AND', 0, 2, $_TABLES['stories'] ) . " AND ({$_TABLES['stories']}.draft_flag = 0)" . $topicsql . ") WHERE ({$_TABLES['comments']}.date >= (DATE_SUB(NOW(), INTERVAL {$_CONF['newcommentsinterval']} SECOND))) AND ((({$stwhere}))) GROUP BY {$_TABLES['comments']}.sid ORDER BY 5 DESC LIMIT 15";
+        $sql = "SELECT DISTINCT COUNT(*) AS dups, type, {$_TABLES['stories']}.title, {$_TABLES['stories']}.sid, max({$_TABLES['comments']}.date) AS lastdate FROM {$_TABLES['comments']} LEFT JOIN {$_TABLES['stories']} ON (({$_TABLES['stories']}.sid = {$_TABLES['comments']}.sid)" . COM_getPermSQL( 'AND', 0, 2, $_TABLES['stories'] ) . " AND ({$_TABLES['stories']}.draft_flag = 0) AND ({$_TABLES['stories']}.commentcode = 0)" . $topicsql . COM_getLangSQL( 'sid', 'AND', $_TABLES['stories'] ) . ") WHERE ({$_TABLES['comments']}.date >= (DATE_SUB(NOW(), INTERVAL {$_CONF['newcommentsinterval']} SECOND))) AND ((({$stwhere}))) GROUP BY {$_TABLES['comments']}.sid,type, {$_TABLES['stories']}.title, {$_TABLES['stories']}.title, {$_TABLES['stories']}.sid ORDER BY 5 DESC LIMIT 15";
 
         $result = DB_query( $sql );
 
@@ -3998,17 +3961,17 @@
 
                 if(( $A['type'] == 'article' ) || empty( $A['type'] ))
                 {
-                    $titletouse = COM_undoSpecialChars( stripslashes( $A['title'] ));
-                    $itemlen = strlen( $titletouse );
                     $urlstart = '<a href="' . COM_buildUrl( $_CONF['site_url']
                         . '/article.php?story=' . $A['sid'] ) . '#comments' . '"';
                 }
 
-                // Trim the length if over 20 characters
-                if( $itemlen > 20 )
+                $title = COM_undoSpecialChars( stripslashes( $A['title'] ));
+                $titletouse = COM_truncate( $title, $_CONF['title_trim_length'],
+                                            '...' );
+
+                if( $title != $titletouse )
                 {
-                    $urlstart .= ' title="' . htmlspecialchars( $titletouse ) . '">';
-                    $titletouse = substr( $titletouse, 0, 17 ) . '...';
+                    $urlstart .= ' title="' . htmlspecialchars( $title ) . '">';
                 }
                 else
                 {
@@ -4042,12 +4005,12 @@
 
     if( $_CONF['trackback_enabled'] && ( $_CONF['hidenewtrackbacks'] == 0 ))
     {
-        $retval .= '<b>' . $LANG01[114] . '</b> <small>'
+        $retval .= '<h3>' . $LANG01[114] . ' <small>'
                 . COM_formatTimeString( $LANG_WHATSNEW['new_last'],
                                         $_CONF['newtrackbackinterval'] )
-                . '</small><br>';
+                . '</small></h3>';
 
-        $sql = "SELECT DISTINCT COUNT(*) AS count,{$_TABLES['stories']}.title,t.sid,max(t.date) AS lastdate FROM {$_TABLES['trackback']} AS t,{$_TABLES['stories']} WHERE (t.type = 'article') AND (t.sid = {$_TABLES['stories']}.sid) AND (t.date >= (DATE_SUB(NOW(), INTERVAL {$_CONF['newtrackbackinterval']} SECOND)))" . COM_getPermSQL( 'AND', 0, 2, $_TABLES['stories'] ) . " AND ({$_TABLES['stories']}.draft_flag = 0)" . $topicsql . " GROUP BY t.sid ORDER BY lastdate DESC LIMIT 15";
+        $sql = "SELECT DISTINCT COUNT(*) AS count,{$_TABLES['stories']}.title,t.sid,max(t.date) AS lastdate FROM {$_TABLES['trackback']} AS t,{$_TABLES['stories']} WHERE (t.type = 'article') AND (t.sid = {$_TABLES['stories']}.sid) AND (t.date >= (DATE_SUB(NOW(), INTERVAL {$_CONF['newtrackbackinterval']} SECOND)))" . COM_getPermSQL( 'AND', 0, 2, $_TABLES['stories'] ) . " AND ({$_TABLES['stories']}.draft_flag = 0) AND ({$_TABLES['stories']}.trackbackcode = 0)" . $topicsql . COM_getLangSQL( 'sid', 'AND', $_TABLES['stories'] ) . " GROUP BY t.sid, {$_TABLES['stories']}.title ORDER BY lastdate DESC LIMIT 15";
         $result = DB_query( $sql );
 
         $nrows = DB_numRows( $result );
@@ -4059,16 +4022,16 @@
             {
                 $A = DB_fetchArray( $result );
 
-                $titletouse = COM_undoSpecialChars( stripslashes( $A['title'] ));
-                $itemlen = strlen( $titletouse );
                 $urlstart = '<a href="' . COM_buildUrl( $_CONF['site_url']
                     . '/article.php?story=' . $A['sid'] ) . '#trackback' . '"';
 
-                // Trim the length if over 20 characters
-                if( $itemlen > 20 )
+                $title = COM_undoSpecialChars( stripslashes( $A['title'] ));
+                $titletouse = COM_truncate( $title, $_CONF['title_trim_length'],
+                                            '...' );
+
+                if( $title != $titletouse )
                 {
-                    $urlstart .= ' title="' . htmlspecialchars( $titletouse ) . '">';
-                    $titletouse = substr( $titletouse, 0, 17 ) . '...';
+                    $urlstart .= ' title="' . htmlspecialchars( $title ) . '">';
                 }
                 else
                 {
@@ -4106,15 +4069,15 @@
         {
             for( $i = 0; $i < $plugins; $i++ )
             {
-                $retval .= '<b>' . $headlines[$i] . '</b> <small>'
-                        . $smallheadlines[$i] . '</small><br>';
+                $retval .= '<h3>' . $headlines[$i] . ' <small>'
+                        . $smallheadlines[$i] . '</small></h3>';
                 if( is_array( $content[$i] ))
                 {
                     $retval .= COM_makeList( $content[$i], 'list-new-plugins' );
                 }
                 else
                 {
-                    $retval .= $content[$i] . '<br>' . LB;
+                    $retval .= $content[$i];
                 }
 
                 if( $i + 1 < $plugins )
@@ -4146,22 +4109,30 @@
 
     // This is the amount you have to divide the previous by to get the
     // different time intervals: hour, day, week, months
-    $time_divider = array ( 60, 60, 24, 7, 30 );
+    $time_divider = array( 60, 60, 24, 7, 30 );
 
     // These are the respective strings to the numbers above. They have to match
     // the strings in $LANG_WHATSNEW (i.e. these are the keys for the array -
     // the actual text strings are taken from the language file).
-    $times_description = array ( 'minutes', 'hours', 'days', 'weeks', 'months' );
-    $time_description = array ( 'minute', 'hour', 'day', 'week', 'month' );
+    $time_description  = array( 'minute',  'hour',  'day',  'week',  'month'  );
+    $times_description = array( 'minutes', 'hours', 'days', 'weeks', 'months' );
 
-    for ( $s = 0; $s < count( $time_divider ); $s++ )
+    for( $s = 0; $s < count( $time_divider ); $s++ )
     {
         $time = $time / $time_divider[$s];
-        if ( $time < $time_divider[$s + 1] )
+        if( $time < $time_divider[$s + 1] )
         {
-            if ( $time == 1 )
+            if( $time == 1 )
             {
-                $time_str = $time_description[$s];
+                if( $s == 0 )
+                {
+                    $time_str = $time_description[$s];
+                }
+                else // go back to the previous unit, e.g. 1 day -> 24 hours
+                {
+                    $time_str = $times_description[$s - 1];
+                    $time *= $time_divider[$s];
+                }
             }
             else
             {
@@ -4208,6 +4179,7 @@
             else
             {
                 $message = sprintf( $MESSAGE[61], $plugin );
+                COM_errorLog ($MESSAGE[61]. ": " . $var,1);
             }
         }
         else
@@ -4536,29 +4508,21 @@
 
 function COM_getMonthFormOptions( $selected = '' )
 {
-    global $LANG30;
+    global $LANG_MONTH;
 
     $month_options = '';
 
     for( $i = 1; $i <= 12; $i++ )
     {
-        if( $i < 10 )
-        {
-            $mval = '0' . $i;
-        }
-        else
-        {
-            $mval = $i;
-        }
-
-        $month_options .= '<option value="' . $mval . '" ';
+        $mval = $i;
+        $month_options .= '<option value="' . $mval . '"';
 
         if( $i == $selected )
         {
-            $month_options .= 'selected="selected"';
+            $month_options .= ' selected="selected"';
         }
 
-        $month_options .= '>' . $LANG30[$mval + 12] . '</option>';
+        $month_options .= '>' . $LANG_MONTH[$mval] . '</option>';
     }
 
     return $month_options;
@@ -4590,11 +4554,11 @@
             $dval = $i;
         }
 
-        $day_options .= '<option value="' . $dval . '" ';
+        $day_options .= '<option value="' . $dval . '"';
 
         if( $i == $selected )
         {
-            $day_options .= 'selected="selected"';
+            $day_options .= ' selected="selected"';
         }
 
         $day_options .= '>' . $dval . '</option>';
@@ -4633,11 +4597,11 @@
 
     for( $i = $start_year - 1; $i <= $cur_year + 5; $i++ )
     {
-        $year_options .= '<option value="' . $i . '" ';
+        $year_options .= '<option value="' . $i . '"';
 
         if( $i == $selected )
         {
-            $year_options .= 'selected="selected"';
+            $year_options .= ' selected="selected"';
         }
 
         $year_options .= '>' . $i . '</option>';
@@ -4649,49 +4613,76 @@
 /**
 * Gets the <option> values for clock hours
 *
-* @param        string      $selected       Selected hour
+* @param    string  $selected   Selected hour
+* @param    int     $mode       12 or 24 hour mode
+* @return   string              HTML string of options
 * @see function COM_getMonthFormOptions
 * @see function COM_getDayFormOptions
 * @see function COM_getYearFormOptions
 * @see function COM_getMinuteFormOptions
-* @return string    HTML string of options
 */
 
-function COM_getHourFormOptions( $selected = '' )
+function COM_getHourFormOptions( $selected = '', $mode = 12 )
 {
     $hour_options = '';
 
-    for( $i = 1; $i <= 11; $i++ )
+    if( $mode == 12 )
     {
-        if( $i < 10 )
+        for( $i = 1; $i <= 11; $i++ )
         {
-            $hval = '0' . $i;
-        }
-        else
-        {
-            $hval = $i;
-        }
+            if( $i < 10 )
+            {
+                $hval = '0' . $i;
+            }
+            else
+            {
+                $hval = $i;
+            }
 
-        if( $i == 1 )
-        {
-            $hour_options .= '<option value="12" ';
+            if( $i == 1 )
+            {
+                $hour_options .= '<option value="12"';
+
+                if( $selected == 12 )
+                {
+                    $hour_options .= ' selected="selected"';
+                }
+
+                $hour_options .= '>12</option>';
+            }
 
-            if( $selected == 12 )
+            $hour_options .= '<option value="' . $hval . '"';
+
+            if( $selected == $i )
             {
-                $hour_options .= 'selected="selected"';
+                $hour_options .= ' selected="selected"';
             }
 
-            $hour_options .= '>12</option>';
+            $hour_options .= '>' . $i . '</option>';
         }
+    }
+    else // if( $mode == 24 )
+    {
+        for( $i = 0; $i < 24; $i++ )
+        {
+            if( $i < 10 )
+            {
+                $hval = '0' . $i;
+            }
+            else
+            {
+                $hval = $i;
+            }
 
-        $hour_options .= '<option value="' . $hval . '" ';
+            $hour_options .= '<option value="' . $hval . '"';
 
-        if( $selected == $i )
-        {
-            $hour_options .= 'selected="selected"';
-        }
+            if( $selected == $i )
+            {
+                $hour_options .= ' selected="selected"';
+            }
 
-        $hour_options .= '>' . $i . '</option>';
+            $hour_options .= '>' . $i . '</option>';
+        }
     }
 
     return $hour_options;
@@ -4700,7 +4691,8 @@
 /**
 * Gets the <option> values for clock minutes
 *
-* @param        string      $selected       Selected minutes
+* @param    string      $selected   Selected minutes
+* @param    integer     $step       number of minutes between options, e.g. 15
 * @see function COM_getMonthFormOptions
 * @see function COM_getDayFormOptions
 * @see function COM_getHourFormOptions
@@ -4708,11 +4700,16 @@
 * @return string  HTML of option minutes
 */
 
-function COM_getMinuteOptions( $selected = '' )
+function COM_getMinuteFormOptions( $selected = '', $step = 1 )
 {
     $minute_options = '';
 
-    for( $i = 0; $i <= 59; $i++ )
+    if(( $step < 1 ) || ( $step > 30 ))
+    {
+        $step = 1;
+    }
+
+    for( $i = 0; $i <= 59; $i += $step )
     {
         if( $i < 10 )
         {
@@ -4723,11 +4720,11 @@
             $mval = $i;
         }
 
-        $minute_options .= '<option value="' . $mval . '" ';
+        $minute_options .= '<option value="' . $mval . '"';
 
         if( $selected == $i )
         {
-            $minute_options .= 'selected="selected"';
+            $minute_options .= ' selected="selected"';
         }
 
         $minute_options .= '>' . $mval . '</option>';
@@ -4737,6 +4734,58 @@
 }
 
 /**
+* for backward compatibility only
+* - this function should always have been called COM_getMinuteFormOptions
+*
+*/
+function COM_getMinuteOptions( $selected = '', $step = 1 )
+{
+    return COM_getMinuteFormOptions( $selected, $step );
+}
+
+/**
+* Create an am/pm selector dropdown menu
+*
+* @param    string  $name       name of the <select>
+* @param    string  $selected   preselection: 'am' or 'pm'
+* @return   string  HTML for the dropdown; empty string in 24 hour mode
+*
+*/
+function COM_getAmPmFormSelection( $name, $selected = '' )
+{
+    global $_CONF;
+
+    $retval = '';
+
+    if( isset( $_CONF['hour_mode'] ) && ( $_CONF['hour_mode'] == 24 ))
+    {
+        $retval = '';
+    }
+    else
+    {
+        if( empty( $selected ))
+        {
+            $selected = date( 'a' );
+        }
+
+        $retval .= '<select name="' . $name . '">' . LB;
+        $retval .= '<option value="am"';
+        if( $selected == 'am' )
+        {
+            $retval .= ' selected="selected"';
+        }
+        $retval .= '>am</option>' . LB . '<option value="pm"';
+        if( $selected == 'pm' )
+        {
+            $retval .= ' selected="selected"';
+        }
+        $retval .= '>pm</option>' . LB . '</select>' . LB;
+    }
+
+    return $retval;
+}
+
+/**
 * Creates an HTML unordered list from the given array.
 * It formats one list item per array element, using the list.thtml
 * and listitem.thtml templates.
@@ -4996,20 +5045,22 @@
     {
         $uid = $u_id;
     }
+
+    $UserGroups = array();
     if(( empty( $_USER['uid'] ) && ( $uid == 1 )) || ( $uid == $_USER['uid'] ))
     {
         if( empty( $_GROUPS ))
         {
             $_GROUPS = SEC_getUserGroups( $uid );
         }
-        $GROUPS = $_GROUPS;
+        $UserGroups = $_GROUPS;
     }
     else
     {
-        $GROUPS = SEC_getUserGroups( $uid );
+        $UserGroups = SEC_getUserGroups( $uid );
     }
 
-    if( empty( $_GROUPS ))
+    if( empty( $UserGroups ))
     {
         // this shouldn't really happen, but if it does, handle user
         // like an anonymous user
@@ -5027,7 +5078,7 @@
     {
         $sql .= "(({$table}owner_id = '{$uid}') AND ({$table}perm_owner >= $access)) OR ";
 
-        $sql .= "(({$table}group_id IN (" . implode( ',', $_GROUPS )
+        $sql .= "(({$table}group_id IN (" . implode( ',', $UserGroups )
              . ")) AND ({$table}perm_group >= $access)) OR ";
         $sql .= "({$table}perm_members >= $access)";
     }
@@ -5067,18 +5118,26 @@
         $table .= '.';
     }
 
+    $UserGroups = array();
     if(( $u_id <= 0 ) || ( $u_id == $_USER['uid'] ))
     {
-        $uid = $_USER['uid'];
-        $GROUPS = $_GROUPS;
+        if( isset( $_USER['uid'] ))
+        {
+            $uid = $_USER['uid'];
+        }
+        else
+        {
+            $uid = 1;
+        }
+        $UserGroups = $_GROUPS;
     }
     else
     {
         $uid = $u_id;
-        $GROUPS = SEC_getUserGroups( $uid );
+        $UserGroups = SEC_getUserGroups( $uid );
     }
 
-    if( empty( $_GROUPS ))
+    if( empty( $UserGroups ))
     {
         // this shouldn't really happen, but if it does, handle user
         // like an anonymous user
@@ -5174,6 +5233,71 @@
 }
 
 /**
+* Sanitize a URL
+*
+* @param    string  $url                URL to sanitized
+* @param    array   $allowed_protocols  array of allowed protocols
+* @param    string  $default_protocol   replacement protocol (default: http)
+* @return   string                      sanitized URL
+*
+*/
+function COM_sanitizeUrl( $url, $allowed_protocols = '', $default_protocol = '' )
+{
+    global $_CONF;
+
+    if( empty( $allowed_protocols ))
+    {
+        $allowed_protocols = $_CONF['allowed_protocols'];
+    }
+    else if( !is_array( $allowed_protocols ))
+    {
+        $allowed_protocols = array( $allowed_protocols );
+    }
+
+    if( empty( $default_protocol ))
+    {
+        $default_protocol = 'http:';
+    }
+    else if( substr( $default_protocol, -1 ) != ':' )
+    {
+        $default_protocol .= ':';
+    }
+
+    $url = strip_tags( $url );
+    if( !empty( $url ))
+    {
+        $pos = MBYTE_strpos( $url, ':' );
+        if( $pos === false )
+        {
+            $url = $default_protocol . '//' . $url;
+        }
+        else
+        {
+            $protocol = MBYTE_substr( $url, 0, $pos + 1 );
+            $found_it = false;
+            foreach( $allowed_protocols as $allowed )
+            {
+                if( substr( $allowed, -1 ) != ':' )
+                {
+                    $allowed .= ':';
+                }
+                if( $protocol == $allowed )
+                {
+                    $found_it = true;
+                    break;
+                }
+            }
+            if( !$found_it )
+            {
+                $url = $default_protocol . MBYTE_substr( $url, $pos + 1 );
+            }
+        }
+    }
+
+    return $url;
+}
+
+/**
 * Detect links in a plain-ascii text and turn them into clickable links.
 * Will detect links starting with "http:", "https:", "ftp:", and "www.".
 *
@@ -5234,7 +5358,8 @@
     {
         if( !empty( $searchword ))
         {
-            $text = preg_replace( '/(\>(((?>[^><]+)|(?R))*)\<)/ie', "preg_replace('/(?>$searchword+)/i','<span class=\"highlight\">$searchword</span>','\\0')", '<x>' . $text . '<x>' );
+            $searchword = preg_quote( str_replace( "'", "\'", $searchword ));
+            $text = preg_replace( '/(\>(((?>[^><]+)|(?R))*)\<)/ie', "preg_replace('/(?>$searchword+)/i','<span class=\"highlight\">$searchword</span>','\\0')", '<!-- x -->' . $text . '<!-- x -->' );
         }
     }
 
@@ -5426,13 +5551,13 @@
 * @return   bool    true = we're on the frontpage, false = we're not
 *
 */
-function COM_isFrontpage()
+function COM_onFrontpage()
 {
     global $_CONF, $topic, $page, $newstories;
 
     // Note: We can't use $PHP_SELF here since the site may not be in the
     // DocumentRoot
-    $isFrontpage = false;
+    $onFrontpage = false;
 
     // on a Zeus webserver, prefer PATH_INFO over SCRIPT_NAME
     if( empty( $_SERVER['PATH_INFO'] ))
@@ -5445,13 +5570,28 @@
     }
 
     preg_match( '/\/\/[^\/]*(.*)/', $_CONF['site_url'], $pathonly );
-    if(( $scriptName <> $pathonly[1] . '/index.php' ) OR
-            !empty( $topic ) OR ( $page > 1 ) OR $newstories )
+    if(( $scriptName == $pathonly[1] . '/index.php' ) &&
+            empty( $topic ) && ( $page == 1 ) && !$newstories )
     {
-        $isFrontpage = true;
+        $onFrontpage = true;
     }
 
-    return $isFrontpage;
+    return $onFrontpage;
+}
+
+/**
+* Check if we're on Geeklog's index page [deprecated]
+*
+* Note that this function returns FALSE when we're on the index page. Due to
+* the inverted return values, it has been deprecated and is only provided for
+* backward compatibility - use COM_onFrontpage() instead.
+*
+* @see COM_onFrontpage
+*
+*/
+function COM_isFrontpage()
+{
+    return !COM_onFrontpage();
 }
 
 /**
@@ -5507,7 +5647,10 @@
 */
 function COM_convertDate2Timestamp( $date, $time = '' )
 {
-    // Breakup the string using either a space, fwd slash, bkwd slash or
+    $atoks = array();
+    $btoks = array();
+
+    // Breakup the string using either a space, fwd slash, dash, bkwd slash or
     // colon as a delimiter
     $atok = strtok( $date, ' /-\\:' );
     while( $atok !== FALSE )
@@ -5515,6 +5658,15 @@
         $atoks[] = $atok;
         $atok = strtok( ' /-\\:' );  // get the next token
     }
+
+    for( $i = 0; $i < 3; $i++ )
+    {
+        if( !isset( $atoks[$i] ) || !is_numeric( $atoks[$i] ))
+        {
+            $atoks[$i] = 0;
+        }
+    }
+
     if( $time == '' )
     {
         $timestamp = mktime( 0, 0, 0, $atoks[1], $atoks[2], $atoks[0] );
@@ -5527,6 +5679,15 @@
             $btoks[] = $btok;
             $btok = strtok( ' /-\\:' );
         }
+
+        for( $i = 0; $i < 3; $i++ )
+        {
+            if( !isset( $btoks[$i] ) || !is_numeric( $btoks[$i] ))
+            {
+                $btoks[$i] = 0;
+            }
+        }
+
         $timestamp = mktime( $btoks[0], $btoks[1], $btoks[2],
                              $atoks[1], $atoks[2], $atoks[0] );
     }
@@ -5542,15 +5703,16 @@
 */
 function COM_getImgSizeAttributes( $file )
 {
-    $dimensions = GetImageSize( $file );
-    if( !empty( $dimensions[0] ) AND !empty( $dimensions[1] ))
-    {
-        $sizeattributes = 'width="' . $dimensions[0]
-                        . '" height="' . $dimensions[1] . '" ';
-    }
-    else
+    $sizeattributes = '';
+
+    if( file_exists( $file ))
     {
-        $sizeattributes = '';
+        $dimensions = getimagesize( $file );
+        if( !empty( $dimensions[0] ) AND !empty( $dimensions[1] ))
+        {
+            $sizeattributes = 'width="' . $dimensions[0]
+                            . '" height="' . $dimensions[1] . '" ';
+        }
     }
 
     return $sizeattributes;
@@ -5583,7 +5745,7 @@
 }
 
 /**
-* Return full URL of of topic icon
+* Return full URL of a topic icon
 *
 * @param    string  $imageurl   (relative) topic icon URL
 * @return   string              Full URL
@@ -5626,6 +5788,384 @@
     return $iconurl;
 }
 
+/**
+* Try to determine the user's preferred language by looking at the
+* "Accept-Language" header sent by their browser (assuming they bothered
+* to select a preferred language there).
+*
+* @return   string  name of the language file to use or an empty string
+*
+* Bugs: Does not take the quantity ('q') parameter into account, but only
+*       looks at the order of language codes.
+*
+* Sample header: Accept-Language: en-us,en;q=0.7,de-de;q=0.3
+*
+*/
+function COM_getLanguageFromBrowser()
+{
+    global $_CONF;
+
+    $retval = '';
+
+    if( isset( $_SERVER['HTTP_ACCEPT_LANGUAGE'] ))
+    {
+        $accept = explode( ',', $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
+        foreach( $accept as $l )
+        {
+            $l = explode( ';', trim( $l ));
+            $l = $l[0];
+            if( array_key_exists( $l, $_CONF['language_files'] ))
+            {
+                $retval = $_CONF['language_files'][$l];
+                break;
+            }
+            else
+            {
+                $l = explode( '-', $l );
+                $l = $l[0];
+                if( array_key_exists( $l, $_CONF['language_files'] ))
+                {
+                    $retval = $_CONF['language_files'][$l];
+                    break;
+                }
+            }
+        }
+
+    }
+
+    return $retval;
+}
+
+/**
+* Determine current language
+*
+* @return   string  name of the language file (minus the '.php' extension)
+*
+*/
+function COM_getLanguage()
+{
+    global $_CONF, $_USER;
+
+    $langfile = '';
+
+    if( !empty( $_USER['language'] ))
+    {
+        $langfile = $_USER['language'];
+    }
+    else if( !empty( $_COOKIE[$_CONF['cookie_language']] ))
+    {
+        $langfile = $_COOKIE[$_CONF['cookie_language']];
+    }
+    else
+    {
+        $langfile = COM_getLanguageFromBrowser();
+    }
+
+    $langfile = preg_replace( '/[^a-z0-9\-_]/', '', $langfile );
+    if( !empty( $langfile ))
+    {
+        if( is_file( $_CONF['path_language'] . $langfile . '.php' ))
+        {
+            return $langfile;
+        }
+    }
+
+    // if all else fails, return the default language
+    return $_CONF['language'];
+}
+
+/**
+* Determine the ID to use for the current language
+*
+* The $_CONF['language_files'] array maps language IDs to language file names.
+* This function returns the language ID for a certain language file, to be
+* used in language-dependent URLs.
+*
+* @param    string  $language   current language file name (optional)
+* @return   string              language ID, e.g 'en'; empty string on error
+*
+*/
+function COM_getLanguageId( $language = '' )
+{
+    global $_CONF;
+
+    if( empty( $language ))
+    {
+        $language = COM_getLanguage();
+    }
+
+    $lang_id = array_search( $language, $_CONF['language_files'] );
+    if( $lang_id === false)
+    {
+        // that looks like a misconfigured $_CONF['language_files'] array ...
+        COM_errorLog( 'Language "' . $language . '" not found in $_CONF[\'language_files\'] array!' );
+
+        $lang_id = ''; // not much we can do here ...
+    }
+
+    return $lang_id;
+}
+
+/**
+* Return SQL expression to request language-specific content
+*
+* Creates part of an SQL expression that can be used to request items in the
+* current language only.
+*
+* @param    string  $field  name of the "id" field, e.g. 'sid' for stories
+* @param    string  $type   part of the SQL expression, e.g. 'WHERE', 'AND'
+* @param    string  $table  table name if ambiguous, e.g. in JOINs
+* @return   string          SQL expression string (may be empty)
+*
+*/
+function COM_getLangSQL( $field, $type = 'WHERE', $table = '' )
+{
+    global $_CONF;
+
+    $sql = '';
+
+    if( isset( $_CONF['languages'] ) && isset( $_CONF['language_files'] ))
+    {
+        if( !empty( $table ))
+        {
+            $table .= '.';
+        }
+
+        $lang_id = COM_getLanguageId();
+
+        if( !empty( $lang_id ))
+        {
+            $sql = ' ' . $type . " ({$table}$field LIKE '%_$lang_id')";
+        }
+    }
+
+    return $sql;
+}
+
+/**
+* Provides a drop-down menu (or simple link, if you only have two languages)
+* to switch languages. This can be used as a PHP block or called from within
+* your theme's header.thtml: <?php print phpblock_switch_language(); ?>
+*
+* @return   string  HTML for drop-down or link to switch languages
+*
+*/
+function phpblock_switch_language()
+{
+    global $_CONF;
+
+    $retval = '';
+
+    if( !isset( $_CONF['languages'] ) || !isset( $_CONF['language_files'] ) ||
+          ( count( $_CONF['languages'] ) != count( $_CONF['language_files'] )))
+    {
+        return $retval;
+    }
+
+    $lang = COM_getLanguage();
+    $langId = COM_getLanguageId( $lang );
+
+    if( count( $_CONF['languages'] ) == 2 )
+    {
+        foreach( $_CONF['languages'] as $key => $value )
+        {
+            if( $key != $langId )
+            {
+                $newLang = $value;
+                $newLangId = $key;
+                break;
+            }
+        }
+
+        $switchUrl = COM_buildUrl( $_CONF['site_url'] . '/switchlang.php?lang='
+                                   . $newLangId );
+        $retval .= '<a href="' . $switchUrl . '">' . $newLang . '</a>';
+    }
+    else
+    {
+        $retval .= '<form name="change" action="'. $_CONF['site_url']
+                . '/switchlang.php" method="GET">' . LB;
+        $retval .= '<input type="hidden" name="oldlang" value="' . $langId
+                . '">' . LB;
+
+        $retval .= '<select onchange="change.submit()" name="lang">';
+        foreach( $_CONF['languages'] as $key => $value )
+        {
+            if( $lang == $_CONF['language_files'][$key] )
+            {
+                $selected = ' selected="selected"';
+            }
+            else
+            {
+                $selected = '';
+            }
+            $retval .= '<option value="' . $key . '"' . $selected . '>'
+                    . $value . '</option>' . LB;
+        }
+        $retval .= '</select>' . LB;
+        $retval .= '</form>' . LB;
+    }
+
+    return $retval;
+}
+
+/**
+* Switch locale settings
+*
+* When multi-language support is enabled, allow overwriting the default locale
+* settings with language-specific settings (date format, etc.). So in addition
+* to $_CONF['date'] you can have a $_CONF['date_en'], $_CONF['date_de'], etc.
+*
+*/
+function COM_switchLocaleSettings()
+{
+    global $_CONF;
+
+    if( isset( $_CONF['languages'] ) && isset( $_CONF['language_files'] ))
+    {
+        $overridables = array
+        (
+          'locale',
+          'date', 'daytime', 'shortdate', 'dateonly', 'timeonly',
+          'week_start', 'hour_mode',
+          'thousand_separator', 'decimal_separator'
+        );
+
+        $langId = COM_getLanguageId();
+        foreach( $overridables as $option )
+        {
+            if( isset( $_CONF[$option . '_' . $langId] ))
+            {
+                $_CONF[$option] = $_CONF[$option . '_' . $langId];
+            }
+        }
+    }
+}
+
+/**
+* Truncate a string
+*
+* Truncates a string to a max. length and optionally adds a filler string,
+* e.g. '...', to indicate the truncation.
+* This function is multi-byte string aware, based on a patch by Yusuke Sakata.
+*
+* @param    string  $text   the text string to truncate
+* @param    int     $maxlen max. number of characters in the truncated string
+* @param    string  $filler optional filler string, e.g. '...'
+* @return   string          truncated string
+*
+* @note The truncated string may be shorter but will never be longer than
+*       $maxlen characters, i.e. the $filler string is taken into account.
+*
+*/
+function COM_truncate( $text, $maxlen, $filler = '' )
+{
+    $newlen = $maxlen - MBYTE_strlen( $filler );
+    $len = MBYTE_strlen( $text );
+    if( $len > $maxlen )
+    {
+        $text = MBYTE_substr( $text, 0, $newlen ) . $filler;
+    }
+
+    return $text;
+}
+
+/**
+  * Handle errors.
+  *
+  * This function will handle all PHP errors thrown at it, without exposing
+  * paths, and hopefully, providing much more information to Root Users than
+  * the default white error page.
+  *
+  * This function will call out to CUSTOM_handleError if it exists, but, be
+  * advised, only override this function with a very, very stable function. I'd
+  * suggest one that outputs some static, basic HTML.
+  *
+  * The PHP feature that allows us to do so is documented here:
+  * http://uk2.php.net/manual/en/function.set-error-handler.php
+  *
+  * @param  int     $errno      Error Number.
+  * @param  string  $errstr     Error Message.
+  * @param  string  $errfile    The file the error was raised in.
+  * @param  int     $errline    The line of the file that the error was raised at.
+  * @param  array   $errcontext An array that points to the active symbol table at the point the error occurred.
+  */
+function COM_handleError($errno, $errstr, $errfile='', $errline=0, $errcontext='')
+{
+    global $_CONF, $_USER;
+
+    // Handle @ operator
+    if( error_reporting() == 0 )
+    {
+        return;
+    }
+
+    /* If in PHP4, then respect error_reporting */
+    if( (PHP_VERSION < 5) && (($errno & error_reporting()) == 0) ) return;
+
+    /*
+     * If we have a root user, then output detailed error message:
+     */
+    if( ( is_array($_USER) && function_exists('SEC_inGroup') ) || $_CONF['rootdebug'] )
+    {
+        if($_CONF['rootdebug'] || SEC_inGroup('Root'))
+        {
+            echo("
+                An error has occurred:<br/>
+                $errno - $errstr @ $errfile line $errline<br/>
+            <pre>");
+            ob_start();
+            var_dump($errcontext);
+            $errcontext = htmlspecialchars(ob_get_contents());
+            ob_end_clean();
+            echo("$errcontext</pre>
+            (This text is only displayed to users in the group 'Root')
+            ");
+            exit;
+        }
+    }
+
+    /* If there is a custom error handler, fail over to that, but only
+     * if the error wasn't in lib-custom.php
+     */
+    if( is_array($_CONF) && !(strstr($errfile, 'lib-custom.php')))
+    {
+        if( array_key_exists('path_system', $_CONF) )
+        {
+            require_once($_CONF['path_system'].'lib-custom.php');
+            if( function_exists('CUSTOM_handleError') )
+            {
+                CUSTOM_handleError($errno, $errstr, $errfile, $errline, $errcontext);
+                exit;
+            }
+        }
+    }
+
+    /* Does the theme implement an error message html file? */
+    if(file_exists($_CONF['path_layout'].'errormessage.html'))
+    {
+        // NOTE: NOT A TEMPLATE! JUST HTML!
+        include($_CONF['path_layout'].'errormessage.html');
+    } else {
+        /* Otherwise, display simple error message */
+        echo("
+        <html>
+            <head>
+                <title>{$_CONF['site_name']} - An Error Occurred</title>
+            </head>
+            <body>
+            <div style=\"width: 100%; text-align: center;\">
+            Unfortunately, an error has occurred rendering this page. Please try
+            again later.
+            </div>
+            </body>
+        </html>
+        ");
+    }
+
+    exit;
+}
+
 // Now include all plugin functions
 foreach( $_PLUGINS as $pi_name )
 {
@@ -5634,11 +6174,14 @@
 
 // Check and see if any plugins (or custom functions)
 // have scheduled tasks to perform
-if(( DB_getItem( $_TABLES['vars'], 'value', "name='last_scheduled_run'" )
-        + $_CONF['cron_schedule_interval'] ) <= time())
+if( $_CONF['cron_schedule_interval'] > 0 )
 {
-    PLG_runScheduledTask();
-    DB_query( "UPDATE {$_TABLES['vars']} SET value=UNIX_TIMESTAMP() WHERE name='last_scheduled_run'" );
+    if(( DB_getItem( $_TABLES['vars'], 'value', "name='last_scheduled_run'" )
+            + $_CONF['cron_schedule_interval'] ) <= time())
+    {
+        DB_query( "UPDATE {$_TABLES['vars']} SET value=UNIX_TIMESTAMP() WHERE name='last_scheduled_run'" );
+        PLG_runScheduledTask();
+    }
 }
 
 ?>
diff -ruN 1.4.0sr5-1.src/links/index.php 1.4.1.src/links/index.php
--- 1.4.0sr5-1.src/links/index.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/links/index.php	2006-11-12 16:45:38.000000000 -0600
@@ -4,17 +4,18 @@
 // +---------------------------------------------------------------------------+
 // | Links Plugin 1.0                                                          |
 // +---------------------------------------------------------------------------+
-// | /links/index.php                                                          |
+// | index.php                                                                 |
 // |                                                                           |
-// | This is the links page                                                    |
+// | This is the main page for the Geeklog Links Plugin                        |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
-// | Authors: Tony Bibbs        - tony@tonybibbs.com                           |
-// |          Mark Limburg      - mlimburg@users.sourceforge.net               |
-// |          Jason Whittenburg - jwhitten@securitygeeks.com                   |
-// |          Tom Willett       - tomw@pigstye.net                             |
-// |          Trinity Bays      - trinity@steubentech.com                      |
+// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
+// |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
+// |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
+// |          Tom Willett       - tomw AT pigstye DOT net                      |
+// |          Trinity Bays      - trinity AT steubentech DOT com               |
+// |          Dirk Haun         - dirk AT haun-online DOT de                   |
 // +---------------------------------------------------------------------------+
 // |                                                                           |
 // | This program is free software; you can redistribute it and/or             |
@@ -41,25 +42,65 @@
  * @filesource
  * @version 1.0
  * @since GL 1.4.0
- * @copyright Copyright &copy; 2005
+ * @copyright Copyright &copy; 2005-2006
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License 
- * @author Trinity Bays <trinity93@steubentech.com>
- * @author Tony Bibbs <tony@tonybibbs.com>
- * @author Tom Willett <twillett@users.sourceforge.net>
- * @author Blaine Lang <langmail@sympatico.ca>
- * @author Dirk Haun <dirk@haun-online.de>
+ * @author Tony Bibbs <tony AT tonybibbs DOT com>
+ * @author Mark Limburg <mlimburg AT users DOT sourceforge DOT net>
+ * @author Jason Whittenburg <jwhitten AT securitygeeks DOT com>
+ * @author Tom Willett <tomw AT pigstye DOT net>
+ * @author Trinity Bays <trinity AT steubentech DOT com>
+ * @author Dirk Haun <dirk AT haun-online DOT de>
  * 
  */
-// $Id: index.php,v 1.7 2005/12/28 10:11:52 dhaun Exp $
+// $Id: index.php,v 1.10 2006/11/12 22:45:38 blaine Exp $
 
 require_once ('../lib-common.php');
 
+/**
+* Prepare a link item for rendering
+*
+* @param    array   $A          link details
+* @param    ref     $template   reference of the links template
+*
+*/
+function prepare_link_item ($A, &$template)
+{
+    global $_CONF, $LANG_ADMIN, $_IMAGE_TYPE;
+
+    $url = COM_buildUrl ($_CONF['site_url']
+                 . '/links/portal.php?what=link&amp;item=' . $A['lid']);
+    $template->set_var ('link_url', $url);
+    $template->set_var ('link_actual_url', $A['url']);
+    $template->set_var ('link_name', stripslashes ($A['title']));
+    $template->set_var ('link_hits', COM_numberFormat ($A['hits']));
+    $template->set_var ('link_description',
+                        nl2br (stripslashes ($A['description'])));
+
+    if ((SEC_hasAccess ($A['owner_id'], $A['group_id'], $A['perm_owner'],
+            $A['perm_group'], $A['perm_members'], $A['perm_anon']) == 3) &&
+            SEC_hasRights ('links.edit')) {
+        $editurl = $_CONF['site_admin_url']
+                 . '/plugins/links/index.php?mode=edit&amp;lid=' . $A['lid'];
+        $template->set_var ('link_edit', '<a href="' . $editurl . '">'
+                 . $LANG_ADMIN['edit'] . '</a>');
+        $template->set_var ('edit_icon', '<a href="' . $editurl . '"><img src="'
+                 . $_CONF['layout_url'] . '/images/edit.' . $_IMAGE_TYPE
+                 . '" alt="' . $LANG_ADMIN['edit'] . '" title="'
+                 . $LANG_ADMIN['edit'] . '" border="0"></a>');
+    } else {
+        $template->set_var ('link_edit', '');
+        $template->set_var ('edit_icon', '');
+    }
+}
+
+
 // MAIN
 
-$display = COM_siteHeader ('menu', $LANG_LINKS[114]);
+$display = '';
 
 if (empty ($_USER['username']) &&
     (($_CONF['loginrequired'] == 1) || ($_LI_CONF['linksloginrequired'] == 1))) {
+    $display .= COM_siteHeader ('menu', $LANG_LINKS[114]);
     $display .= COM_startBlock ($LANG_LOGIN[1], '',
                                 COM_getBlockTemplate ('_msg_block', 'header'));
     $login = new Template ($_CONF['path_layout'] . 'submit');
@@ -80,8 +121,25 @@
     if (isset ($_GET['page'])) {
         $page = COM_applyFilter ($_GET['page'], true);
     }
+    if ($page == 0) {
+        $page = 1;
+    }
 
-    $display .= COM_startBlock ($LANG_LINKS[114]);
+    if (empty ($category)) {
+        if ($page > 1) {
+            $page_title = sprintf ($LANG_LINKS[114] . ' (%d)', $page);
+        } else {
+            $page_title = $LANG_LINKS[114];
+        }
+    } else {
+        if ($page > 1) {
+            $page_title = sprintf ($LANG_LINKS[114] . ': %s (%d)', $category,
+                                                                   $page);
+        } else {
+            $page_title = sprintf ($LANG_LINKS[114] . ': %s', $category);
+        }
+    }
+    $display .= COM_siteHeader ('menu', $page_title);
 
     $linklist = new Template ($_CONF['path'] . 'plugins/links/templates/');
     $linklist->set_file (array ('linklist' => 'links.thtml',
@@ -92,6 +150,8 @@
                                 'catcol'   => 'categorycol.thtml',
                                 'actcol'   => 'categoryactivecol.thtml',
                                 'pagenav'  => 'pagenavigation.thtml'));
+    $linklist->set_var ('blockheader',COM_startBlock($LANG_LINKS[114]));
+    $linklist->set_var ('layout_url',$_CONF['layout_url']);
 
     if ($_LI_CONF['linkcols'] > 0) {
         $result = DB_query ("SELECT DISTINCT category FROM {$_TABLES['links']}" . COM_getPermSQL () . " ORDER BY category");
@@ -99,7 +159,7 @@
         if ($nrows > 0) {
             $linklist->set_var ('lang_categories', $LANG_LINKS_ADMIN[14]);
             for ($i = 1; $i <= $nrows; $i++) {
-                $C = DB_fetchArray($result);
+                $C = DB_fetchArray ($result);
                 $cat = addslashes ($C['category']);
                 $result1 = DB_query ("SELECT COUNT(*) AS count FROM {$_TABLES['links']} WHERE category = '{$cat}'" . COM_getPermSQL ('AND'));
                 $D = DB_fetchArray ($result1);
@@ -137,139 +197,92 @@
     $linklist->set_var ('site_url', $_CONF['site_url']);
     $linklist->set_var ('lang_addalink', $LANG_LINKS[116]);
 
-    $sql = "SELECT lid,category,url,description,title,hits,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon FROM {$_TABLES['links']}";
+    $sql = 'SELECT lid,category,url,description,title,hits,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon';
+    $from_where = " FROM {$_TABLES['links']}";
     if ($_LI_CONF['linkcols'] > 0) {
         if (!empty ($category)) {
-            $sql .= " WHERE category = '" . addslashes ($category) . "'";
+            $from_where .= " WHERE category = '" . addslashes ($category) . "'";
         } else {
-            $sql .= " WHERE category = ''";
+            $from_where .= " WHERE category = ''";
         }
-        $sql .= COM_getPermSQL ('AND');
+        $from_where .= COM_getPermSQL ('AND');
     } else {
-        $sql .= COM_getPermSQL ();
+        $from_where .= COM_getPermSQL ();
     }
-    $sql .= ' ORDER BY category ASC,title';
-    $result = DB_query ($sql);
+    $order = ' ORDER BY category ASC,title';
+    $limit = '';
+    if ($_LI_CONF['linksperpage'] > 0) {
+        if ($page < 1) {
+            $start = 0;
+        } else {
+            $start = ($page - 1) * $_LI_CONF['linksperpage'];
+        }
+        $limit = ' LIMIT ' . $start . ',' . $_LI_CONF['linksperpage'];
+    }
+    $result = DB_query ($sql . $from_where . $order . $limit);
     $nrows = DB_numRows ($result);
     if ($nrows == 0) {
-        $page = 0;
-        $end = 10;
-
-        $result = DB_query ("SELECT lid,url,title,description,hits,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon FROM {$_TABLES['links']} WHERE (hits > 0)" . COM_getPermSQL ('AND') . " ORDER BY hits DESC LIMIT 10");
-        $nrows  = DB_numRows ($result);
-        if ($nrows > 0) {
-            $linklist->set_var ('link_details', '');
-            $linklist->set_var ('link_category', $LANG_LINKS_STATS['stats_headline']);
-            for ($i = 0; $i < $nrows; $i++) {
-                $A = DB_fetchArray ($result);
-                $linklist->set_var ('link_url', COM_buildUrl ($_CONF['site_url']
-                    . '/links/portal.php?what=link&amp;item=' . $A['lid']));
-                $linklist->set_var ('link_actual_url', $A['url']);
-                $linklist->set_var ('link_name', stripslashes($A['title']));
-                $linklist->set_var ('link_hits', COM_numberFormat ($A['hits']));
-                $linklist->set_var ('link_description',
-                        nl2br (stripslashes ($A['description'])));
-                if ((SEC_hasAccess ($A['owner_id'], $A['group_id'],
-                        $A['perm_owner'], $A['perm_group'], $A['perm_members'],
-                        $A['perm_anon']) == 3) && SEC_hasRights('links.edit')) {
-                    $editurl = $_CONF['site_admin_url']
-                             . '/plugins/links/index.php?mode=edit&amp;lid=' . $A['lid'];
-                    $linklist->set_var ('link_edit', '<a href="' . $editurl
-                            . '">' . $LANG01[4] . '</a>');
-                    $linklist->set_var ('edit_icon', '<a href="' . $editurl
-                            . '"><img src="' . $_CONF['layout_url']
-                            . '/images/edit.gif" alt="' . $LANG01[4]
-                            . '" title="' . $LANG01[4] . '" border="0"></a>');
-                } else {
-                    $linklist->set_var ('link_edit', '');
-                    $linklist->set_var ('edit_icon', '');
+        if (empty ($category) && ($page <= 1) && $_LI_CONF['show_top10']) {
+            $result = DB_query ("SELECT lid,url,title,description,hits,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon FROM {$_TABLES['links']} WHERE (hits > 0)" . COM_getPermSQL ('AND') . " ORDER BY hits DESC LIMIT 10");
+            $nrows  = DB_numRows ($result);
+            if ($nrows > 0) {
+                $linklist->set_var ('link_details', '');
+                $linklist->set_var ('link_category',
+                                    $LANG_LINKS_STATS['stats_headline']);
+                for ($i = 0; $i < $nrows; $i++) {
+                    $A = DB_fetchArray ($result);
+                    prepare_link_item ($A, $linklist);
+                    $linklist->parse ('link_details', 'link', true);
                 }
-                $linklist->parse ('link_details', 'link', true);
+                $linklist->parse ('category_links', 'catlinks', true);
             }
-            $linklist->parse ('category_links', 'catlinks', true);
         }
+        $linklist->set_var ('page_navigation', '');
     } else {
-        if ($_LI_CONF['linksperpage'] == 0) {
-            $start = 1;
-            $end = $nrows + 1;
-        } else {
-            if ($page > 0) {
-                $start = (($page - 1) * $_LI_CONF['linksperpage']) + 1;
-            } else {
-                $page = 1;
-                $start = 1;
-            }
-            $end = $start + $_LI_CONF['linksperpage'];
-            if ($nrows < $end) {
-                $end = $nrows + 1;
-            }
-        }
-
         $currentcategory = '';
-        for ($i = 1; $i < $end; $i++) {
+        for ($i = 0; $i < $nrows; $i++) {
             $A = DB_fetchArray ($result);
-            if ($i >= $start) {
-                if ((strcasecmp ($A['category'], $currentcategory) != 0) AND ($i > $start)) {
-                    // print the category and link
+            if (strcasecmp ($A['category'], $currentcategory) != 0) {
+                // print the category and link
+                if ($i > 0) {
                     $linklist->parse ('category_links', 'catlinks', true);
-                    $linklist->set_var ('link_details','');
-                    $currentcategory = $A['category'];
-                    $linklist->set_var ('link_category', $currentcategory);
-                } else if (strcasecmp ($A['category'], $currentcategory) != 0) {
-                    $currentcategory = $A['category'];
-                    $linklist->set_var ('link_category',$currentcategory);
-                }
-                $linklist->set_var ('link_url', COM_buildUrl ($_CONF['site_url']
-                    . '/links/portal.php?what=link&amp;item=' . $A['lid']));
-                $linklist->set_var ('link_actual_url', $A['url']);
-                $linklist->set_var ('link_name', stripslashes ($A['title']));
-                $linklist->set_var ('link_hits', COM_numberFormat ($A['hits']));
-                $linklist->set_var ('link_description',
-                        nl2br (stripslashes ($A['description'])));
-                if ((SEC_hasAccess ($A['owner_id'], $A['group_id'],
-                        $A['perm_owner'], $A['perm_group'], $A['perm_members'],
-                        $A['perm_anon']) == 3) && SEC_hasRights('links.edit')) {
-                    $editurl = $_CONF['site_admin_url']
-                             . '/plugins/links/index.php?mode=edit&amp;lid='
-                             . $A['lid'];
-                    $linklist->set_var ('link_edit', '<a href="' . $editurl
-                            . '">' . $LANG01[4] . '</a>');
-                    $linklist->set_var ('edit_icon', '<a href="' . $editurl
-                            . '"><img src="' . $_CONF['layout_url']
-                            . '/images/edit.gif" alt="' . $LANG01[4]
-                            . '" title="' . $LANG01[4] . '" border="0"></a>');
-                } else {
-                    $linklist->set_var ('link_edit', '');
-                    $linklist->set_var ('edit_icon', '');
+                    $linklist->set_var ('link_details', '');
                 }
-                $linklist->parse ('link_details', 'link', true);
+                $currentcategory = $A['category'];
+                $linklist->set_var ('link_category', $currentcategory);
             }
+
+            prepare_link_item ($A, $linklist);
+            $linklist->parse ('link_details', 'link', true);
         }
         $linklist->parse ('category_links', 'catlinks', true);
-    }
 
-    if ($_LI_CONF['linksperpage'] > 0) {
-        $pages = (int) ($nrows / $_LI_CONF['linksperpage']);
-        if (($nrows % $_LI_CONF['linksperpage']) > 0 ) {
-            $pages++;
+        $result = DB_query ('SELECT COUNT(*) AS count ' . $from_where);
+        list($numlinks) = DB_fetchArray ($result);
+        $pages = 0;
+        if ($_LI_CONF['linksperpage'] > 0) {
+            $pages = (int) ($numlinks / $_LI_CONF['linksperpage']);
+            if (($numlinks % $_LI_CONF['linksperpage']) > 0 ) {
+                $pages++;
+            }
         }
-    }
-    if ($pages > 0) {
-        if (($_LI_CONF['linkcols'] > 0) && isset ($currentcategory)) {
-            $catlink = '?category=' . urlencode ($currentcategory);
+        if ($pages > 0) {
+            if (($_LI_CONF['linkcols'] > 0) && isset ($currentcategory)) {
+                $catlink = '?category=' . urlencode ($currentcategory);
+            } else {
+                $catlink = '';
+            }
+            $linklist->set_var ('page_navigation',
+                    COM_printPageNavigation ($_CONF['site_url']
+                        . '/links/index.php' .  $catlink, $page, $pages));
         } else {
-            $catlink = '';
+            $linklist->set_var ('page_navigation', '');
         }
-        $linklist->set_var ('page_navigation',
-            COM_printPageNavigation ($_CONF['site_url'] . '/links/index.php' .
-                                     $catlink, $page, $pages));
-    } else {
-        $linklist->set_var ('page_navigation', '');
     }
-
+    $linklist->set_var ('blockfooter',COM_endBlock());
     $linklist->parse ('output', 'linklist');
     $display .= $linklist->finish ($linklist->get_var ('output'));
-    $display .= COM_endBlock ();
+
 }
 
 $display .= COM_siteFooter ();
diff -ruN 1.4.0sr5-1.src/links/portal.php 1.4.1.src/links/portal.php
--- 1.4.0sr5-1.src/links/portal.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/links/portal.php	2006-05-14 23:10:38.000000000 -0500
@@ -51,9 +51,9 @@
  * 
  */
 
-// $Id: portal.php,v 1.2 2005/11/26 06:37:32 trinity Exp $
+// $Id: portal.php,v 1.3 2006/05/15 04:10:38 vinny Exp $
 
-require_once('./../lib-common.php');
+require_once('../lib-common.php');
 
 // MAIN
 
diff -ruN 1.4.0sr5-1.src/pingback.php 1.4.1.src/pingback.php
--- 1.4.0sr5-1.src/pingback.php	2006-08-08 02:53:59.000000000 -0500
+++ 1.4.1.src/pingback.php	2006-09-30 14:15:27.000000000 -0500
@@ -29,7 +29,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 // 
-// $Id: pingback.php,v 1.12 2006/01/15 18:57:16 dhaun Exp $
+// $Id: pingback.php,v 1.16 2006/09/30 19:15:27 dhaun Exp $
 
 require_once ('lib-common.php');
 
@@ -62,15 +62,21 @@
 *
 * @param    string  $id     ID of entry that got pinged
 * @param    string  $type   type of that entry ('article' for stories, etc.)
+* @param    string  $url    URL of the page that pinged us
+* @param    string  $oururl URL that got pinged on our site
 * @return   object          XML-RPC response
 *
 */
-function PNB_handlePingback ($id, $type, $url)
+function PNB_handlePingback ($id, $type, $url, $oururl)
 {
     global $_CONF, $_TABLES, $PNB_ERROR;
 
     require_once ('HTTP/Request.php');
 
+    if (!isset ($_CONF['check_trackback_link'])) {
+        $_CONF['check_trackback_link'] = 2;
+    }
+
     // handle pingbacks to articles on our own site
     $skip_speedlimit = false;
     if ($_SERVER['REMOTE_ADDR'] == $_SERVER['SERVER_ADDR']) {
@@ -95,15 +101,54 @@
         }
     }
 
+    // update speed limit in any case
+    COM_updateSpeedlimit ('pingback');
+
+    if ($_SERVER['REMOTE_ADDR'] != $_SERVER['SERVER_ADDR']) {
+        if ($_CONF['check_trackback_link'] & 4) {
+            $parts = parse_url ($url);
+            if (empty ($parts['host'])) {
+                TRB_logRejected ('Pingback: No valid URL', $url);
+                return new XML_RPC_Response (0, 33, $PNB_ERROR['uri_invalid']);
+            } else {
+                $ip = gethostbyname ($parts['host']);
+                if ($ip != $_SERVER['REMOTE_ADDR']) {
+                    TRB_logRejected ('Pingback: IP address mismatch', $url);
+                    return new XML_RPC_Response (0, 49, $PNB_ERROR['spam']);
+                }
+            }
+        }
+    }
+
     // See if we can read the page linking to us and extract at least
     // the page's title out of it ...
     $title = '';
-    $req =& new HTTP_Request ($url);
-    $req->addHeader ('User-Agent', 'GeekLog ' . VERSION);
-    if (!PEAR::isError ($req->sendRequest ())) {
+    $req = new HTTP_Request ($url);
+    $req->addHeader ('User-Agent', 'GeekLog/' . VERSION);
+    $response = $req->sendRequest ();
+    if (PEAR::isError ($response)) {
+        if ($_CONF['check_trackback_link'] & 3) {
+            // we were supposed to check for backlinks but didn't get the page
+            COM_errorLog ("Pingback verification: " . $response->getMessage()
+                          . " when requesting $url");
+            return new XML_RPC_Response (0, 33, $PNB_ERROR['uri_invalid']);
+        }
+        // else: silently ignore errors - we'll simply do without the title
+    } else {
         if ($req->getResponseCode () == 200) {
-            preg_match (':<title>(.*)</title>:i', $req->getResponseBody (),
-                        $content);
+            $body = $req->getResponseBody ();
+
+            if ($_CONF['check_trackback_link'] & 3) {
+                if (!TRB_containsBacklink ($body, $oururl)) {
+                    TRB_logRejected ('Pingback: No link to us', $url);
+                    $comment = TRB_formatComment ($url);
+                    PLG_spamAction ($comment, $_CONF['spamx']);
+
+                    return new XML_RPC_Response (0, 49, $PNB_ERROR['spam']);
+                }
+            }
+
+            preg_match (':<title>(.*)</title>:i', $body, $content);
             if (empty ($content[1])) {
                 $title = ''; // no title found
             } else {
@@ -112,16 +157,18 @@
 
             // we could also run the rest of the other site's page
             // through the spam filter here ...
+        } else if ($_CONF['check_trackback_link'] & 3) {
+            COM_errorLog ("Pingback verification: Got HTTP response code "
+                          . $req->getResponseCode ()
+                          . " when requesting $url");
+            return new XML_RPC_Response (0, 33, $PNB_ERROR['uri_invalid']);
         }
+        // else: silently ignore errors - we'll simply do without the title
     }
-    // else: silently ignore errors - we'll simply do without the title
 
     // check for spam first
     $saved = TRB_checkForSpam ($url, $title);
 
-    // update speed limit in any case
-    COM_updateSpeedlimit ('pingback');
-
     if ($saved == TRB_SAVE_SPAM) {
         return new XML_RPC_Response (0, 49, $PNB_ERROR['spam']);
     }
@@ -289,7 +336,7 @@
         return new XML_RPC_Response (0, 49, $PNB_ERROR['no_access']);
     }
 
-    return PNB_handlePingback ($id, $type, $sourceURI);
+    return PNB_handlePingback ($id, $type, $sourceURI, $targetURI);
 }
 
 
diff -ruN 1.4.0sr5-1.src/polls/index.php 1.4.1.src/polls/index.php
--- 1.4.0sr5-1.src/polls/index.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/polls/index.php	2006-08-21 06:38:31.000000000 -0500
@@ -2,13 +2,13 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Geeklog 1.4                                                               |
+// | Polls Plugin 1.1                                                          |
 // +---------------------------------------------------------------------------+
-// | pollbooth.php                                                            |
+// | index.php                                                                 |
 // |                                                                           |
-// | This is the pollbooth page.                                               |
+// | Display poll results and past polls.                                      |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
 // |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
@@ -32,7 +32,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: index.php,v 1.14 2005/12/22 14:39:47 ospiess Exp $
+// $Id: index.php,v 1.20 2006/08/21 11:38:31 dhaun Exp $
 
 require_once ('../lib-common.php');
 
@@ -56,9 +56,7 @@
 
     $retval = '';
 
-    $pcount = DB_count ($_TABLES['pollvoters'], array ('ipaddress', 'qid' ),
-                        array ($_SERVER['REMOTE_ADDR'], $qid));
-    if ($pcount > 0) {
+    if (POLLS_ipAlreadyVoted ($qid)) {
         exit;
     }
 
@@ -82,6 +80,65 @@
     return $retval;
 }
 
+/**     
+* Shows all polls in system
+*       
+* List all the polls on the system if no $qid is provided
+*       
+* @return   string          HTML for poll listing
+*       
+*/
+function polllist ()
+{
+    global $_CONF, $_TABLES, $_USER, $_PO_CONF,
+           $LANG25, $LANG_LOGIN, $LANG_POLLS;
+
+    $retval = '';
+
+    if (empty ($_USER['username']) && (($_CONF['loginrequired'] == 1) ||
+            ($_PO_CONF['pollsloginrequired'] == 1))) {
+        $retval = COM_startBlock ($LANG_LOGIN[1], '',
+                          COM_getBlockTemplate ('_msg_block', 'header'));
+        $login = new Template ($_CONF['path_layout'] . 'submit');
+        $login->set_file (array ('login' => 'submitloginrequired.thtml'));
+        $login->set_var ('login_message', $LANG_LOGIN[2]);
+        $login->set_var ('site_url', $_CONF['site_url']);
+        $login->set_var ('lang_login', $LANG_LOGIN[3]);
+        $login->set_var ('lang_newuser', $LANG_LOGIN[4]);
+        $login->parse ('output', 'login');
+        $retval .= $login->finish ($login->get_var('output'));
+        $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
+    } else {
+        require_once( $_CONF['path_system'] . 'lib-admin.php' );
+        $header_arr = array(    // display 'text' and use table field 'field'
+                        array('text' => $LANG25[9], 'field' => 'question', 'sort' => true),
+                        array('text' => $LANG25[20], 'field' => 'voters', 'sort' => true),
+                        array('text' => $LANG25[3], 'field' => 'unixdate', 'sort' => true),
+                        array('text' => $LANG_POLLS['open_poll'], 'field' => 'display', 'sort' => true)
+        );
+
+        $defsort_arr = array('field' => 'unixdate', 'direction' => 'desc');
+
+        $menu_arr = array ();
+
+        $text_arr = array('has_menu' =>  false,
+                          'title' => $LANG_POLLS['pollstitle'], 'instructions' => "",
+                          'icon' => '', 'form_url' => '');
+
+        $query_arr = array('table' => 'pollquestions',
+                           'sql' => $sql = "SELECT *,UNIX_TIMESTAMP(date) AS unixdate, display FROM {$_TABLES['pollquestions']} WHERE 1=1",
+                           'query_fields' => array('question'),
+                           'default_filter' => COM_getPermSQL (),
+                           'query' => '',
+                           'query_limit' => 0);
+
+        $retval .= ADMIN_list ('polls', 'plugin_getListField_polls',
+                   $header_arr, $text_arr, $query_arr, $menu_arr, $defsort_arr);
+    }
+
+    return $retval;
+}
+
 // MAIN
 //
 // no qid will load a list of polls
@@ -91,8 +148,7 @@
 
 $display = '';
 
-if (isset ($_POST['reply'])
-        && ($_POST['reply'] == $LANG01[25])) {
+if (isset ($_POST['reply']) && ($_POST['reply'] == $LANG01[25])) {
     $display .= COM_refresh ($_CONF['site_url'] . '/comment.php?sid='
              . $_POST['qid'] . '&pid=' . $_POST['pid']
              . '&type=' . $_POST['type']);
@@ -128,57 +184,17 @@
 }
 
 if (empty($qid)) {
-    $display .= COM_siteHeader ('menu', $LANG_POLLS['pollstitle']);
-    if (empty ($_USER['username']) && (($_CONF['loginrequired'] == 1) ||
-            ($_PO_CONF['pollsloginrequired'] == 1))) {
-        $retval = COM_startBlock ($LANG_LOGIN[1], '',
-                          COM_getBlockTemplate ('_msg_block', 'header'));
-        $login = new Template($_CONF['path_layout'] . 'submit');
-        $login->set_file (array ('login'=>'submitloginrequired.thtml'));
-        $login->set_var ('login_message', $LANG_LOGIN[2]);
-        $login->set_var ('site_url', $_CONF['site_url']);
-        $login->set_var ('lang_login', $LANG_LOGIN[3]);
-        $login->set_var ('lang_newuser', $LANG_LOGIN[4]);
-        $login->parse ('output', 'login');
-        $retval .= $login->finish ($login->get_var('output'));
-        $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
-    } else {
-        require_once( $_CONF['path_system'] . 'lib-admin.php' );
-        $header_arr = array(      # dislay 'text' and use table field 'field'
-                        array('text' => $LANG25[9], 'field' => 'question', 'sort' => true),
-                        array('text' => $LANG25[20], 'field' => 'voters', 'sort' => true),
-                        array('text' => $LANG25[3], 'field' => 'unixdate', 'sort' => true),
-                        array('text' => $LANG_POLLS['open_poll'], 'field' => 'display', 'sort' => true)
-        );
-
-        $defsort_arr = array('field' => 'unixdate', 'direction' => 'desc');
-
-        $menu_arr = array ();
-
-        $text_arr = array('has_menu' =>  false,
-                          'title' => $LANG_POLLS['pollstitle'], 'instructions' => "",
-                          'icon' => '', 'form_url' => '');
-
-        $query_arr = array('table' => 'pollquestions',
-                           'sql' => $sql = "SELECT *,UNIX_TIMESTAMP(date) as unixdate, display FROM {$_TABLES['pollquestions']} WHERE 1",
-                           'query_fields' => array('question'),
-                           'default_filter' => COM_getPermSQL (),
-                           'query' => $_REQUEST['q'],
-                           'query_limit' => COM_applyFilter ($_REQUEST['query_limit'], true));
-
-        $display .= ADMIN_list ("polls", "plugin_getListField_polls", $header_arr, $text_arr,
-                                $query_arr, $menu_arr, $defsort_arr);
-    }
-    
+    $display .= COM_siteHeader ('menu', $LANG_POLLS['pollstitle'])
+             . polllist (); 
 } else if ($aid == 0) {
     $display .= COM_siteHeader();
-    if (empty($_COOKIE[$qid])) {
-        $display .= POLLS_pollVote($qid);
+    if (!isset ($_COOKIE[$qid]) && !POLLS_ipAlreadyVoted ($qid)) {
+        $display .= POLLS_pollVote ($qid);
     } else {
-        $display .= POLLS_pollResults($qid,400,$order,$mode);
+        $display .= POLLS_pollResults ($qid, 400, $order, $mode);
     }
 } else if (($aid > 0) && ($aid <= $_PO_CONF['maxanswers']) &&
-        empty($_COOKIE[$qid])) {
+        !isset ($_COOKIE[$qid])) {
     setcookie ($qid, $aid, time() + $_PO_CONF['pollcookietime'],
                $_CONF['cookie_path'], $_CONF['cookiedomain'],
                $_CONF['cookiesecure']);
@@ -187,7 +203,8 @@
     $question = DB_query ("SELECT question FROM {$_TABLES['pollquestions']} WHERE qid='$qid'" . COM_getPermSql ('AND'));
     $Q = DB_fetchArray ($question);
     if (empty ($Q['question'])) {
-        $display .= COM_siteHeader ('menu', $LANG_POLLS['pollstitle']) . polllist ($page);
+        $display .= COM_siteHeader ('menu', $LANG_POLLS['pollstitle'])
+                 . polllist ();
     } else {
         $display .= COM_siteHeader ('menu', $Q['question'])
                  . POLLS_pollResults ($qid, 400, $order, $mode);
diff -ruN 1.4.0sr5-1.src/portal.php 1.4.1.src/portal.php
--- 1.4.0sr5-1.src/portal.php	2006-08-08 02:53:59.000000000 -0500
+++ 1.4.1.src/portal.php	1969-12-31 18:00:00.000000000 -0600
@@ -1,66 +0,0 @@
-<?php
-
-/* Reminder: always indent with 4 spaces (no tabs). */
-// +---------------------------------------------------------------------------+
-// | Geeklog 1.3                                                               |
-// +---------------------------------------------------------------------------+
-// | portal.php                                                                |
-// |                                                                           |
-// | Geeklog portal page that tracks link click throughs.                      |
-// +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2004 by the following authors:                         |
-// |                                                                           |
-// | Authors: Tony Bibbs        - tony@tonybibbs.com                           |
-// |          Mark Limburg      - mlimburg@users.sourceforge.net               |
-// |          Jason Whittenburg - jwhitten@securitygeeks.com                   |
-// |          Dirk Haun         - dirk@haun-online.de                          |
-// +---------------------------------------------------------------------------+
-// |                                                                           |
-// | This program is free software; you can redistribute it and/or             |
-// | modify it under the terms of the GNU General Public License               |
-// | as published by the Free Software Foundation; either version 2            |
-// | of the License, or (at your option) any later version.                    |
-// |                                                                           |
-// | This program is distributed in the hope that it will be useful,           |
-// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
-// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
-// | GNU General Public License for more details.                              |
-// |                                                                           |
-// | You should have received a copy of the GNU General Public License         |
-// | along with this program; if not, write to the Free Software Foundation,   |
-// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
-// |                                                                           |
-// +---------------------------------------------------------------------------+
-//
-// $Id: portal.php,v 1.13 2004/09/19 09:44:49 dhaun Exp $
-
-require_once('lib-common.php');
-
-// MAIN
-
-$url = '';
-
-COM_setArgNames (array ('what', 'item'));
-$what = COM_getArgument ('what');
-
-if ($what == 'link') {
-
-    $item = COM_applyFilter (COM_getArgument ('item'));
-
-    if (!empty ($item)) {
-        $url = DB_getItem ($_TABLES['links'], 'url', "lid = '{$item}'");
-        if (!empty ($url)) {
-            DB_change ($_TABLES['links'], 'hits','hits + 1', 'lid',$item, '', true);
-        }
-    }
-}
-
-if (empty ($url)) {
-    $url = $_CONF['site_url'];
-}
-
-header ('HTTP/1.1 301 Moved');
-header ('Location: ' . $url);
-header ('Connection: close');
-
-?>
diff -ruN 1.4.0sr5-1.src/profiles.php 1.4.1.src/profiles.php
--- 1.4.0sr5-1.src/profiles.php	2006-08-08 02:53:59.000000000 -0500
+++ 1.4.1.src/profiles.php	2006-12-09 15:55:07.000000000 -0600
@@ -9,7 +9,7 @@
 // | This pages lets GL users communicate with each other without risk of      |
 // | their email address being intercepted by spammers.                        |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
 // |          Mark Limburg      - mlimburg AT users DOT sourceforge DOT net    |
@@ -33,7 +33,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: profiles.php,v 1.46 2005/12/28 10:11:50 dhaun Exp $
+// $Id: profiles.php,v 1.52 2006/12/09 21:02:51 dhaun Exp $
 
 require_once ('lib-common.php');
 
@@ -47,9 +47,11 @@
 * @param    string  $message        Text of message to send
 * @return   string                  Meta redirect or HTML for the contact form
 */
-function contactemail($uid,$author,$authoremail,$subject,$message) 
+function contactemail($uid,$author,$authoremail,$subject,$message)
 {
-    global $_CONF, $_TABLES, $_USER, $LANG08;
+    global $_CONF, $_TABLES, $_USER, $LANG04, $LANG08;
+
+    $retval = '';
 
     // check for correct $_CONF permission
     if (empty ($_USER['username']) &&
@@ -84,7 +86,7 @@
 
             // Append the user's signature to the message
             $sig = '';
-            if ($_USER['uid'] > 1) {
+            if (isset ($_USER['uid']) && ($_USER['uid'] > 1)) {
                 $sig = DB_getItem ($_TABLES['users'], 'sig', "uid={$_USER['uid']}");
                 if (!empty ($sig)) {
                     $sig = strip_tags (COM_stripslashes ($sig));
@@ -92,33 +94,55 @@
                 }
             }
 
-            $subject = strip_tags (COM_stripslashes ($subject));
+            $subject = COM_stripslashes ($subject);
+            $message = COM_stripslashes ($message);
+
+            // do a spam check with the unfiltered message text and subject
+            $mailtext = $subject . "\n" . $message . $sig;
+            $result = PLG_checkforSpam ($mailtext, $_CONF['spamx']);
+            if ($result > 0) {
+                COM_updateSpeedlimit ('mail');
+                COM_displayMessageAndAbort ($result, 'spamx', 403, 'Forbidden');
+            }
+
+            $msg = PLG_itemPreSave ('contact', $message);
+            if (!empty ($msg)) {
+                $retval .= COM_siteHeader ('menu', '')
+                        . COM_errorLog ($msg, 2)
+                        . contactform ($uid, $subject, $message)
+                        . COM_siteFooter ();
+
+                return $retval;
+            }
+
+            $subject = strip_tags ($subject);
             $subject = substr ($subject, 0, strcspn ($subject, "\r\n"));
-            $message = strip_tags (COM_stripslashes ($message)) . $sig;
+            $message = strip_tags ($message) . $sig;
             if (!empty ($A['fullname'])) {
                 $to = COM_formatEmailAddress ($A['fullname'], $A['email']);
             } else {
                 $to = COM_formatEmailAddress ($A['username'], $A['email']);
             }
             $from = COM_formatEmailAddress ($author, $authoremail);
+
             COM_mail ($to, $subject, $message, $from);
             COM_updateSpeedlimit ('mail');
 
             $retval .= COM_refresh($_CONF['site_url'] . '/index.php?msg=27');
-		} else {
+        } else {
             $retval .= COM_siteHeader ('menu', $LANG04[81])
                     . COM_errorLog ($LANG08[3], 2)
                     . contactform ($uid, $subject, $message)
                     . COM_siteFooter ();
-		}
-	} else {
+        }
+    } else {
         $retval .= COM_siteHeader ('menu', $LANG04[81])
                 . COM_errorLog ($LANG08[4], 2)
                 . contactform ($uid, $subject, $message)
                 . COM_siteFooter ();
-	}
+    }
 
-	return $retval;
+    return $retval;
 }
 
 /**
@@ -130,7 +154,7 @@
 * @return   string              HTML for the contact form
 *
 */
-function contactform ($uid, $subject = '', $message = '') 
+function contactform ($uid, $subject = '', $message = '')
 {
     global $_CONF, $_TABLES, $_USER, $LANG08, $LANG_LOGIN;
 
@@ -164,12 +188,18 @@
 
             $retval = COM_startBlock ($LANG08[10] . ' ' . $displayname);
             $mail_template = new Template ($_CONF['path_layout'] . 'profiles');
-            $mail_template->set_file ('form', 'contactuserform.thtml');	
+            $mail_template->set_file ('form', 'contactuserform.thtml');
             $mail_template->set_var ('site_url', $_CONF['site_url']);
             $mail_template->set_var ('lang_description', $LANG08[26]);
             $mail_template->set_var ('lang_username', $LANG08[11]);
             if (empty ($_USER['username'])) {
-                $mail_template->set_var ('username', '');
+                $sender = '';
+                if (isset ($_POST['author'])) {
+                    $sender = strip_tags ($_POST['author']);
+                    $sender = substr ($sender, 0, strcspn ($sender, "\r\n"));
+                    $sender = htmlspecialchars (trim ($sender), ENT_QUOTES);
+                }
+                $mail_template->set_var ('username', $sender);
             } else {
                 $mail_template->set_var ('username',
                         COM_getDisplayName ($_USER['uid'], $_USER['username'],
@@ -177,7 +207,13 @@
             }
             $mail_template->set_var ('lang_useremail', $LANG08[12]);
             if (empty ($_USER['email'])) {
-                $mail_template->set_var ('useremail', '');
+                $email = '';
+                if (isset ($_POST['authoremail'])) {
+                    $email = strip_tags ($_POST['authoremail']);
+                    $email = substr ($email, 0, strcspn ($email, "\r\n"));
+                    $email = htmlspecialchars (trim ($email), ENT_QUOTES);
+                }
+                $mail_template->set_var ('useremail', $email);
             } else {
                 $mail_template->set_var ('useremail', $_USER['email']);
             }
@@ -188,6 +224,7 @@
             $mail_template->set_var ('lang_nohtml', $LANG08[15]);
             $mail_template->set_var ('lang_submit', $LANG08[16]);
             $mail_template->set_var ('uid', $uid);
+            PLG_templateSetVars ('contact', $mail_template);
             $mail_template->parse ('output', 'form');
             $retval .= $mail_template->finish ($mail_template->get_var ('output'));
             $retval .= COM_endBlock ();
@@ -216,17 +253,17 @@
 *
 * Modification History
 *
-* Date		Author		Description
-* ----		------		-----------
-* 4/17/01	Tony Bibbs	Code now allows anonymous users to send email
-*				and it allows user to input a message as well
-*				Thanks to Yngve Wassvik Bergheim for some of
-*				this code
+* Date        Author        Description
+* ----        ------        -----------
+* 4/17/01    Tony Bibbs    Code now allows anonymous users to send email
+*                and it allows user to input a message as well
+*                Thanks to Yngve Wassvik Bergheim for some of
+*                this code
 *
 */
-function mailstory ($sid, $to, $toemail, $from, $fromemail, $shortmsg) 
+function mailstory ($sid, $to, $toemail, $from, $fromemail, $shortmsg)
 {
- 	global $_CONF, $_TABLES, $_USER, $LANG01, $LANG08;
+    global $_CONF, $_TABLES, $_USER, $LANG01, $LANG08;
 
     $retval = COM_refresh (COM_buildUrl ($_CONF['site_url']
                                          . '/article.php?story=' . $sid));
@@ -248,7 +285,7 @@
         return $retval;
     }
 
-    $sql = "SELECT uid,title,introtext,bodytext,UNIX_TIMESTAMP(date) AS day FROM {$_TABLES['stories']} WHERE sid = '$sid'";
+    $sql = "SELECT uid,title,introtext,bodytext,commentcode,UNIX_TIMESTAMP(date) AS day FROM {$_TABLES['stories']} WHERE sid = '$sid'";
     $result = DB_query ($sql);
     $A = DB_fetchArray ($result);
     $shortmsg = COM_stripslashes ($shortmsg);
@@ -270,28 +307,34 @@
               . strftime ($_CONF['date'], $A['day']) . LB;
 
     if ($_CONF['contributedbyline'] == 1) {
-        $author = DB_getItem ($_TABLES['users'], 'username', "uid={$A['uid']}");
+        $author = COM_getDisplayName ($A['uid']);
         $mailtext .= $LANG01[1] . ' ' . $author . LB;
     }
     $mailtext .= LB
-		. COM_undoSpecialChars(stripslashes(strip_tags($A['introtext']))).LB.LB
-		. COM_undoSpecialChars(stripslashes(strip_tags($A['bodytext']))).LB.LB
-		. '------------------------------------------------------------'.LB
-		. $LANG08[24] . LB
-        . COM_buildUrl ($_CONF['site_url'] . '/article.php?story=' . $sid
-                        . '#comments');
+        . COM_undoSpecialChars(stripslashes(strip_tags($A['introtext']))).LB.LB
+        . COM_undoSpecialChars(stripslashes(strip_tags($A['bodytext']))).LB.LB
+        . '------------------------------------------------------------'.LB;
+    if ($A['commentcode'] == 0) { // comments allowed
+        $mailtext .= $LANG08[24] . LB
+                  . COM_buildUrl ($_CONF['site_url'] . '/article.php?story='
+                                  . $sid . '#comments');
+    } else { // comments not allowed - just add the story's URL
+        $mailtext .= $LANG08[33] . LB
+                  . COM_buildUrl ($_CONF['site_url'] . '/article.php?story='
+                                  . $sid);
+    }
 
     $mailto = COM_formatEmailAddress ($to, $toemail);
     $mailfrom = COM_formatEmailAddress ($from, $fromemail);
- 	$subject = COM_undoSpecialChars(strip_tags(stripslashes('Re: '.$A['title'])));
+    $subject = COM_undoSpecialChars(strip_tags(stripslashes('Re: '.$A['title'])));
 
     COM_mail ($mailto, $subject, $mailtext, $mailfrom);
     COM_updateSpeedlimit ('mail');
 
-	// Increment numemails counter for story
+    // Increment numemails counter for story
     DB_query ("UPDATE {$_TABLES['stories']} SET numemails = numemails + 1 WHERE sid = '$sid'");
 
-	return $retval;
+    return $retval;
 }
 
 /**
@@ -302,7 +345,7 @@
 *
 */
 function mailstoryform ($sid, $to = '', $toemail = '', $from = '',
-                        $fromemail = '', $shortmsg = '', $msg = 0) 
+                        $fromemail = '', $shortmsg = '', $msg = 0)
 {
     global $_CONF, $_TABLES, $_USER, $LANG08, $LANG_LOGIN;
 
@@ -339,7 +382,7 @@
     }
 
     $mail_template = new Template($_CONF['path_layout'] . 'profiles');
-    $mail_template->set_file('form', 'contactauthorform.thtml');	
+    $mail_template->set_file('form', 'contactauthorform.thtml');
     $mail_template->set_var('site_url', $_CONF['site_url']);
     $mail_template->set_var('start_block_mailstory2friend', COM_startBlock($LANG08[17]));
     $mail_template->set_var('lang_fromname', $LANG08[20]);
@@ -355,10 +398,11 @@
     $mail_template->set_var('lang_warning', $LANG08[22]);
     $mail_template->set_var('lang_sendmessage', $LANG08[16]);
     $mail_template->set_var('story_id',$sid);
+    PLG_templateSetVars ('emailstory', $mail_template);
     $mail_template->set_var('end_block', COM_endBlock());
     $mail_template->parse('output', 'form');
     $retval .= $mail_template->finish($mail_template->get_var('output'));
-		
+
     return $retval;
 }
 
@@ -409,20 +453,30 @@
                     || !COM_isEmail ($_POST['toemail'])
                     || !COM_isEmail ($_POST['fromemail'])) {
                 $display .= COM_siteHeader ('menu', $LANG08[17])
-                         . mailstoryform ($sid, $_POST['to'], $_POST['toemail'],
-                                          $_POST['from'], $_POST['fromemail'],
-                                          $_POST['shortmsg'], 52)
+                         . mailstoryform ($sid, COM_applyFilter($_POST['to']), COM_applyFilter($_POST['toemail']),
+                                          COM_applyFilter($_POST['from']), COM_applyFilter($_POST['fromemail']),
+                                          COM_applyFilter($_POST['shortmsg']), 52)
                          . COM_siteFooter ();
             } else if (empty ($_POST['to']) || empty ($_POST['from']) ||
                     empty ($_POST['shortmsg'])) {
                 $display .= COM_siteHeader ('menu', $LANG08[17])
-                         . mailstoryform ($sid, $_POST['to'], $_POST['toemail'],
-                                          $_POST['from'], $_POST['fromemail'],
-                                          $_POST['shortmsg'])
+                         . mailstoryform ($sid, COM_applyFilter($_POST['to']), COM_applyFilter($_POST['toemail']),
+                                          COM_applyFilter($_POST['from']), COM_applyFilter($_POST['fromemail']),
+                                          COM_applyFilter($_POST['shortmsg']))
                          . COM_siteFooter ();
             } else {
-                $display .= mailstory ($sid, $_POST['to'], $_POST['toemail'],
-                    $_POST['from'], $_POST['fromemail'], $_POST['shortmsg']);
+                $msg = PLG_itemPreSave ('emailstory', $message);
+                if (!empty ($msg)) {
+                    $display .= COM_siteHeader ('menu', '')
+                             . COM_errorLog ($msg, 2)
+                             . mailstoryform ($sid, COM_applyFilter($_POST['to']), COM_applyFilter($_POST['toemail']),
+                                              COM_applyFilter($_POST['from']), COM_applyFilter($_POST['fromemail']),
+                                              COM_applyFilter($_POST['shortmsg']))
+                             . COM_siteFooter ();
+                } else {
+                    $display .= mailstory ($sid, $_POST['to'], $_POST['toemail'],
+                        $_POST['from'], $_POST['fromemail'], $_POST['shortmsg']);
+                }
             }
         }
         break;
diff -ruN 1.4.0sr5-1.src/staticpages/index.php 1.4.1.src/staticpages/index.php
--- 1.4.0sr5-1.src/staticpages/index.php	2006-08-08 02:39:06.000000000 -0500
+++ 1.4.1.src/staticpages/index.php	2006-12-10 06:08:40.000000000 -0600
@@ -2,13 +2,13 @@
 
 /* Reminder: always indent with 4 spaces (no tabs). */
 // +---------------------------------------------------------------------------+
-// | Static Page Geeklog Plugin 1.4.2                                          |
+// | Static Page Geeklog Plugin 1.4.3                                          |
 // +---------------------------------------------------------------------------+
 // | index.php                                                                 |
 // |                                                                           |
 // | This is the main page for the Geeklog Static Page Plugin                  |
 // +---------------------------------------------------------------------------+
-// | Copyright (C) 2000-2005 by the following authors:                         |
+// | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
 // | Authors: Tony Bibbs       - tony AT tonybibbs DOT com                     |
 // |          Tom Willett      - twillett AT users DOT sourceforge DOT net     |
@@ -31,50 +31,12 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: index.php,v 1.26 2005/12/28 10:11:53 dhaun Exp $
+// $Id: index.php,v 1.33 2006/12/10 12:08:40 dhaun Exp $
 
 require_once ('../lib-common.php');
 
 
 /**
-* Render the actual content of a static page.
-*
-* @param    string  $sp_content the content (HTML or PHP source)
-* @param    int     $sp_php     flag: 1 = content is PHP source, 0 = is HTML
-* @return   string              rendered content (HTML)
-*
-*/
-function render_content ($sp_content, $sp_php)
-{
-    global $_SP_CONF, $LANG_STATIC;
-
-    $retval = '';
-
-    if ($_SP_CONF['allow_php'] == 1) {
-        // Check for type (ie html or php)
-        if ($sp_php == 1) {
-            $retval .= eval ($sp_content);
-        } else if ($sp_php == 2) {
-            ob_start ();
-            eval ($sp_content);
-            $retval .= ob_get_contents ();
-            ob_end_clean ();
-        } else {
-            $retval .= PLG_replacetags ($sp_content);
-        }
-    } else {
-        if ($sp_php != 0) {
-            COM_errorLog ("PHP in static pages is disabled. Can not display page '$page'.", 1);
-            $retval .= $LANG_STATIC['deny_msg'];
-        } else {
-            $retval .= $sp_content;
-        }
-    }
-
-    return $retval;
-}
-
-/**
 * Prepare static page for display.
 *
 * @param    string  $page       static page id
@@ -85,7 +47,7 @@
 */
 function display_page ($page, $A, $noboxes)
 {
-    global $_CONF, $LANG01, $LANG11, $LANG_STATIC, $_IMAGE_TYPE;
+    global $_CONF, $LANG01, $LANG11, $LANG_STATIC, $_IMAGE_TYPE, $_SP_CONF;
 
     $retval = '';
 
@@ -97,16 +59,26 @@
         }
     }
     if (($A['sp_inblock'] == 1) && ($A['sp_format'] != 'blankpage')) {
-        $retval .= COM_startBlock (stripslashes ($A['sp_title']), '',
+        $retval .= COM_startBlock (stripslashes ($A['sp_title']), $A['sp_help'],
                         COM_getBlockTemplate ('_staticpages_block', 'header'));
     }
 
-    $retval .= render_content (stripslashes ($A['sp_content']), $A['sp_php']);
+    $retval .= SP_render_content (stripslashes ($A['sp_content']), $A['sp_php']);
 
     if ($A['sp_format'] <> 'blankpage') {
         $curtime = COM_getUserDateTimeFormat ($A['sp_date']);
-        $retval .= '<p align="center"><br>' . $LANG_STATIC['lastupdated']
-                . ' ' . $curtime[0]; 
+        $retval .= '<p align="center"><br>';
+        if ($_SP_CONF['show_date'] == 1) {
+            $retval .= $LANG_STATIC['lastupdated']. ' ' . $curtime[0];
+        }
+
+        if ($_SP_CONF['show_hits'] == 1) {
+            if ($_SP_CONF['show_date'] == 1) {
+                $retval .= "; ";
+            }
+            $retval .= ' ' . COM_numberFormat ($A['sp_hits'])
+                    . ' ' . $LANG_STATIC['hits'];
+        }
 
         if ($_CONF['hideprintericon'] == 0) {
             $retval .= ' <a href="' . COM_buildURL ($_CONF['site_url'] . '/staticpages/index.php?page=' . $page . '&amp;mode=print') . '"><img src="' . $_CONF['layout_url'] . '/images/print.' . $_IMAGE_TYPE . '" alt="' . $LANG01[65] . '" title="' . $LANG_STATIC['printable_format'] . '" border="0"></a>';
@@ -163,7 +135,7 @@
                                . '/staticpages/index.php?page=' . $page));
     $print->set_var ('sp_title', stripslashes ($A['sp_title']));
     $print->set_var ('sp_content',
-            render_content (stripslashes ($A['sp_content']), $A['sp_php']));
+            SP_render_content (stripslashes ($A['sp_content']), $A['sp_php']));
     $print->set_var ('sp_hits', COM_numberFormat ($A['sp_hits']));
     $print->parse ('output', 'print');
 
@@ -196,7 +168,10 @@
     if (!empty ($perms)) {
         $perms = ' AND ' . $perms;
     }
-    $result = DB_query ("SELECT * FROM {$_TABLES['staticpage']} WHERE (sp_id = '$page')" . $perms);
+    $sql = array();
+    $sql['mysql'] = "SELECT sp_title,sp_content,sp_hits,sp_date,sp_format,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon,sp_help,sp_php,sp_inblock FROM {$_TABLES['staticpage']} WHERE (sp_id = '$page')" . $perms;
+    $sql['mssql'] = "SELECT sp_title,CAST(sp_content AS text) AS sp_content,sp_hits,sp_date,sp_format,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon,sp_help,sp_php,sp_inblock FROM {$_TABLES['staticpage']} WHERE (sp_id = '$page')" . $perms;
+    $result = DB_query ($sql);
     $count = DB_numRows ($result);
 
     if ($count == 0 || $count > 1) {
@@ -215,7 +190,7 @@
     }
 
     // increment hit counter for page
-    DB_query ("UPDATE {$_TABLES['staticpage']} SET sp_hits = sp_hits + 1 WHERE sp_id = '$page'"); 
+    DB_query ("UPDATE {$_TABLES['staticpage']} SET sp_hits = sp_hits + 1 WHERE sp_id = '$page'");
 
 } else { // an error occured (page not found, access denied, ...)
 
diff -ruN 1.4.0sr5-1.src/stats.php 1.4.1.src/stats.php
--- 1.4.0sr5-1.src/stats.php	2006-08-08 02:53:59.000000000 -0500
+++ 1.4.1.src/stats.php	2006-10-11 15:08:41.000000000 -0500
@@ -32,7 +32,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: stats.php,v 1.45 2005/12/22 14:39:47 ospiess Exp $
+// $Id: stats.php,v 1.49 2006/10/11 20:08:41 dhaun Exp $
 
 require_once('lib-common.php');
 require_once( $_CONF['path_system'] . 'lib-admin.php' );
@@ -41,7 +41,7 @@
 
 if (empty ($_USER['username']) &&
     (($_CONF['loginrequired'] == 1) || ($_CONF['statsloginrequired'] == 1))) {
-    $display = COM_siteHeader('');
+    $display = COM_siteHeader ('menu', $LANG_LOGIN[1]);
     $display .= COM_startBlock ($LANG_LOGIN[1], '',
                                 COM_getBlockTemplate ('_msg_block', 'header'));
     $login = new Template($_CONF['path_layout'] . 'submit');
@@ -65,8 +65,8 @@
 // Overall Site Statistics
 
 $header_arr = array(
-    array('text' => $LANG10[1], 'field' => 'title'),
-    array('text' => "", 'field' => 'stats'),
+    array('text' => $LANG10[1], 'field' => 'title', 'width' => '90%', 'header_class' => 'stats-header-title'),
+    array('text' => "", 'field' => 'stats', 'width' => '10%', 'header_class' => 'stats-header-count', 'field_class' => 'stats-list-count'),
 );
 $data_arr = array();
 $text_arr = array('has_menu'     =>  false,
@@ -102,10 +102,6 @@
                     'stats' => COM_NumberFormat ($A['count'])
                            . " (". COM_NumberFormat ($A['ccount']) . ")");
 
-$result = DB_query ("SELECT COUNT(*) AS count FROM {$_TABLES['events']}" . COM_getPermSQL ());
-$A = DB_fetchArray ($result);
-$data_arr[] = array('title' => $LANG10[6], 'stats' => COM_NumberFormat ($A['count']));
-
 // new stats plugin API call
 $plg_stats = PLG_getPluginStats (3);
 if (count ($plg_stats) > 0) {
@@ -132,8 +128,8 @@
 
 if ($nrows > 0) {
     $header_arr = array(
-        array('text' => $LANG10[8], 'field' => 'sid'),
-        array('text' => $LANG10[9], 'field' => 'hits'),
+        array('text' => $LANG10[8], 'field' => 'sid', 'header_class' => 'stats-header-title'),
+        array('text' => $LANG10[9], 'field' => 'hits', 'header_class' => 'stats-header-count', 'field_class' => 'stats-list-count'),
     );
     $data_arr = array();
     $text_arr = array('has_menu'     =>  false,
@@ -162,8 +158,8 @@
 $nrows  = DB_numRows($result);
 if ($nrows > 0) {
     $header_arr = array(
-        array('text' => $LANG10[8], 'field' => 'sid'),
-        array('text' => $LANG10[12], 'field' => 'comments'),
+        array('text' => $LANG10[8], 'field' => 'sid', 'header_class' => 'stats-header-title'),
+        array('text' => $LANG10[12], 'field' => 'comments', 'header_class' => 'stats-header-count', 'field_class' => 'stats-list-count'),
     );
     $data_arr = array();
     $text_arr = array('has_menu'     =>  false,
@@ -188,12 +184,12 @@
 // Top Ten Trackback Comments
 
 if ($_CONF['trackback_enabled'] || $_CONF['pingback_enabled']) {
-    $result = DB_query ("SELECT {$_TABLES['stories']}.sid,{$_TABLES['stories']}.title,COUNT(*) AS count FROM {$_TABLES['stories']},{$_TABLES['trackback']} AS t WHERE (draft_flag = 0) AND ({$_TABLES['stories']}.date <= NOW()) AND ({$_TABLES['stories']}.sid = t.sid) AND (t.type = 'article')" . COM_getPermSql ('AND') . $topicsql . " GROUP BY t.sid ORDER BY count DESC LIMIT 10");
+    $result = DB_query ("SELECT {$_TABLES['stories']}.sid,{$_TABLES['stories']}.title,COUNT(*) AS count FROM {$_TABLES['stories']},{$_TABLES['trackback']} AS t WHERE (draft_flag = 0) AND ({$_TABLES['stories']}.date <= NOW()) AND ({$_TABLES['stories']}.sid = t.sid) AND (t.type = 'article')" . COM_getPermSql ('AND') . $topicsql . " GROUP BY t.sid,{$_TABLES['stories']}.sid,{$_TABLES['stories']}.title ORDER BY count DESC LIMIT 10");
     $nrows = DB_numRows ($result);
     if ($nrows > 0) {
         $header_arr = array(
-            array('text' => $LANG10[8], 'field' => 'sid'),
-            array('text' => $LANG10[12], 'field' => 'count'),
+            array('text' => $LANG10[8], 'field' => 'sid', 'header_class' => 'stats-header-title'),
+            array('text' => $LANG10[12], 'field' => 'count', 'header_class' => 'stats-header-count', 'field_class' => 'stats-list-count'),
         );
         $data_arr = array();
         $text_arr = array('has_menu'     =>  false,
@@ -223,8 +219,8 @@
 
 if ($nrows > 0) {
     $header_arr = array(
-        array('text' => $LANG10[8], 'field' => 'sid'),
-        array('text' => $LANG10[23], 'field' => 'numemails'),
+        array('text' => $LANG10[8], 'field' => 'sid', 'header_class' => 'stats-header-title'),
+        array('text' => $LANG10[23], 'field' => 'numemails', 'header_class' => 'stats-header-count', 'field_class' => 'stats-list-count'),
     );
     $data_arr = array();
     $text_arr = array('has_menu'     =>  false,
@@ -246,35 +242,6 @@
     $display .= COM_endBlock();
 }
 
-// Top Ten Events
-
-$result = DB_query("SELECT eid,title,hits from {$_TABLES['events']} WHERE (hits > 0)" . COM_getPermSQL ('AND') . " ORDER BY hits DESC LIMIT 10");
-$nrows  = DB_numRows($result);
-if ($nrows > 0) {
-    $header_arr = array(
-        array('text' => $LANG10[29], 'field' => 'sid'),
-        array('text' => $LANG10[30], 'field' => 'hits'),
-    );
-    $data_arr = array();
-    $text_arr = array('has_menu'     =>  false,
-                      'title'        => $LANG10[28],
-    );
-    for ($i = 0; $i < $nrows; $i++) {
-        $A = DB_fetchArray($result);
-        $A['title'] = stripslashes(str_replace('$','&#36;',$A['title']));
-        $A['sid'] = "<a href=\"" . COM_buildUrl ($_CONF['site_url']
-                  . "/calendar_event.php?eid={$A['eid']}"). "\">{$A['title']}</a>";
-        $A['hits'] = COM_NumberFormat ($A['hits']);
-        $data_arr[$i] = $A;
-    }
-    $display .= ADMIN_simpleList("", $header_arr, $text_arr, $data_arr);
-} else {
-    $display .= COM_startBlock($LANG10[28]);
-    $display .= $LANG10[31];
-    $display .= COM_endBlock();
-}
-
-
 // Now show stats for any plugins that want to be included
 $display .= PLG_getPluginStats(2);
 $display .= COM_siteFooter();
diff -ruN 1.4.0sr5-1.src/submit.php 1.4.1.src/submit.php
--- 1.4.0sr5-1.src/submit.php	2006-08-08 02:53:59.000000000 -0500
+++ 1.4.1.src/submit.php	2006-12-09 15:55:07.000000000 -0600
@@ -6,7 +6,7 @@
 // +---------------------------------------------------------------------------+
 // | submit.php                                                                |
 // |                                                                           |
-// | Let users submit stories, events and plugin stuff.                        |
+// | Let users submit stories and plugin stuff.                                |
 // +---------------------------------------------------------------------------+
 // | Copyright (C) 2000-2006 by the following authors:                         |
 // |                                                                           |
@@ -32,7 +32,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: submit.php,v 1.94.2.1 2006/05/28 07:56:36 dhaun Exp $
+// $Id: submit.php,v 1.113 2006/12/09 21:46:27 dhaun Exp $
 
 require_once ('lib-common.php');
 require_once ($_CONF['path_system'] . 'lib-story.php');
@@ -47,19 +47,15 @@
 *
 * This is the submission it is modular to allow us to write as little as
 * possible.  It takes a type and formats a form for the user.  Currently the
-* types are story and event.  If no type is provided, Story is assumed.
+* types is story.  If no type is provided, Story is assumed.
 *
-* @param    string  $type   type of submission ('event', 'story')
+* @param    string  $type   type of submission ('story')
 * @param    string  $mode   calendar mode ('personal' or empty string)
-* @param    int     $month  month (for events)
-* @param    int     $day    day (for events)
-* @param    int     $year   year (for events)
-* @param    int     $hour   hour (for events)
 * @param    string  $topic  topic (for stories)
 * @return   string          HTML for submission form
 *
 */
-function submissionform($type='story', $mode = '', $month='', $day='', $year='', $hour='', $topic = '')
+function submissionform($type='story', $mode = '', $topic = '')
 {
     global $_CONF, $_TABLES, $_USER, $LANG12, $LANG_LOGIN;
 
@@ -97,18 +93,16 @@
                     . $LANG12[9]
                     . COM_endBlock();
 
-            switch ($type) {
-                case 'event':
-                    $retval .= submitevent($mode,$month,$day,$year,$hour);
-                    break;
-
-                default:
-                    if ((strlen($type) > 0) && ($type <> 'story')) {
-                        $retval .= PLG_showSubmitForm($type);
-                        break;
-                    }
-                    $retval .= submitstory($topic);
-                    break;
+            if ((strlen($type) > 0) && ($type <> 'story')) {
+                $formresult = PLG_showSubmitForm($type);
+                if ($formresult == false) {
+                    COM_errorLog("Someone tried to submit an item to the $type-plugin, which cannot be found.", 1);
+                    COM_displayMessageAndAbort (79, '', 410, 'Gone');
+                } else {
+                    $retval .= $formresult;
+                }
+            } else {
+                $retval .= submitstory($topic);  
             }
         }
     }
@@ -117,117 +111,12 @@
 }
 
 /**
-* Shows the event submission form
-*
-*/
-function submitevent($mode = '', $month = '', $day = '', $year = '', $hour = -1)
-{
-    global $_CONF, $_USER, $LANG12, $LANG30, $_STATES;
-
-    $retval = '';
-
-    $retval .= COM_startBlock ($LANG12[4], 'submitevent.html');
-    $eventform = new Template ($_CONF['path_layout'] . 'submit');
-    $eventform->set_file ('eventform', 'submitevent.thtml');
-    $eventform->set_var ('explanation', $LANG12[37]);
-    $eventform->set_var ('site_url', $_CONF['site_url']);
-    $eventform->set_var ('layout_url', $_CONF['layout_url']);
-    $eventform->set_var ('lang_title', $LANG12[10]); 
-    $types = explode (',', $_CONF['event_types']);
-    $catdd = '';
-    foreach ($types as $event_type) {
-        $catdd .= '<option value="' . $event_type . '">' . $event_type
-               . '</option>';
-    }
-    $eventform->set_var('lang_eventtype', $LANG12[49]);
-    $eventform->set_var('lang_editeventtypes', $LANG12[50]);
-    $eventform->set_var('type_options', $catdd);
-    $eventform->set_var('lang_addeventto', $LANG12[38]);
-    $eventform->set_var('lang_mastercalendar', $LANG12[39]);
-
-    if (($_CONF['personalcalendars'] == 1) &&
-            isset ($_USER['uid']) && $_USER['uid'] > 1) {
-        $eventform->set_var('lang_personalcalendar', $LANG12[40]);
-        if ($mode == 'personal') {
-            $eventform->set_var('personal_option', '<option value="personal" selected="selected">' . $LANG12[40] . '</option>');
-        } else {
-            $eventform->set_var('personal_option', '<option value="personal">' . $LANG12[40] . '</option>');
-            $eventform->set_var('master_checked', 'selected="selected"');
-        }
-    } else {
-        $eventform->set_var('master_checked', 'selected="selected"');
-        $eventform->set_var('personal_option', '');
-    }
-
-    $eventform->set_var('lang_link', $LANG12[11]);
-    $eventform->set_var('max_url_length', 255);
-    $eventform->set_var('lang_startdate', $LANG12[12]);
-    $eventform->set_var('lang_starttime', $LANG12[42]);
-    if (empty ($month)) {
-        $month = date ('m', time ());
-    }
-    if (empty ($day)) {
-        $day = date ('d', time ());
-    }
-    if (empty ($year)) {
-        $year = date ('Y', time ());
-    } 
-    $eventform->set_var ('month_options', COM_getMonthFormOptions ($month));
-    $eventform->set_var ('day_options', COM_getDayFormOptions ($day));
-    $eventform->set_var ('year_options', COM_getYearFormOptions ($year));
-
-    if ($hour < 0) {
-        $cur_hour = date ('H', time ());
-    } else {
-        $cur_hour = $hour;
-    }
-    if ($cur_hour >= 12) {
-        $eventform->set_var ('am_selected', '');
-        $eventform->set_var ('pm_selected', 'selected="selected"');
-    } else {
-        $eventform->set_var ('am_selected', 'selected="selected"');
-        $eventform->set_var ('pm_selected', '');
-    }
-    if ($cur_hour > 12) {
-        $cur_hour = $cur_hour - 12;
-    } else if ($cur_hour == 0) {
-        $cur_hour = 12;
-    }
-    $eventform->set_var ('hour_options', COM_getHourFormOptions ($cur_hour));
-
-    $eventform->set_var('lang_enddate', $LANG12[13]);
-    $eventform->set_var('lang_endtime', $LANG12[41]);
-    $eventform->set_var('lang_alldayevent',$LANG12[43]);
-    $eventform->set_var('lang_location', $LANG12[51]);
-    $eventform->set_var('lang_addressline1',$LANG12[44]);
-    $eventform->set_var('lang_addressline2',$LANG12[45]);
-    $eventform->set_var('lang_city',$LANG12[46]);
-    $eventform->set_var('lang_state',$LANG12[47]);
-    $state_options = '';
-    foreach ($_STATES as $statekey => $state) {
-        $state_options .= '<option value="' . $statekey . '">'
-                       . $state . '</option>';
-    }
-    $eventform->set_var('state_options',$state_options);
-    $eventform->set_var('lang_zipcode',$LANG12[48]);
-    $eventform->set_var('lang_location', $LANG12[14]);
-    $eventform->set_var('lang_description', $LANG12[15]);
-    $eventform->set_var('lang_htmnotallowed', $LANG12[35]);
-    $eventform->set_var('lang_submit', $LANG12[8]);
-    $eventform->parse('theform', 'eventform');
-    $retval .= $eventform->finish($eventform->get_var('theform'));
-    $retval .= COM_endBlock();
-
-    return $retval;
-}
-
-/**
 * Shows the story submission form
 *
 */
 function submitstory($topic = '') 
 {
-    global $_CONF, $_TABLES, $_USER, $LANG12,$LANG24;
+    global $_CONF, $_TABLES, $_USER, $LANG12, $LANG24;
 
     $retval = '';
 
@@ -260,7 +149,8 @@
     $introtext = '';
 
     if (!empty($A['title'])) {
-        $introtext = stripslashes ($A['introtext']);
+        $introtext = COM_stripslashes( $A['introtext'] );
+        $introtext = htmlspecialchars ($introtext);
         $introtext = str_replace('$','&#36;',$introtext);
         $title = stripslashes ($A['title']);
         $title = str_replace('$','&#36;',$title);
@@ -279,16 +169,10 @@
         $introtext = str_replace('}','&#125;',$introtext);
         $A['introtext'] = str_replace('{','&#123;',$A['introtext']);
         $A['introtext'] = str_replace('}','&#125;',$A['introtext']);
-
-        if (isset ($_CONF['show_topic_icon'])) {
-            $A['show_topic_icon'] = $_CONF['show_topic_icon'];
-        } else {
-            $A['show_topic_icon'] = 1;
-        }
         $A['hits'] = 0;
         $res = DB_query("SELECT username, fullname, photo FROM {$_TABLES['users']} WHERE uid = {$A['uid']}");
         $A += DB_fetchArray($res);
-        $A['tid'] = COM_applyFilter ($A['tid']);
+        $A['tid'] = COM_applyFilter($A['tid']);
         $res = DB_query("SELECT topic, imageurl FROM {$_TABLES['topics']} WHERE tid = '{$A['tid']}'");
         $A += DB_fetchArray($res);
         if ($A['postmode'] == 'plaintext') {
@@ -308,8 +192,13 @@
         $storyform->set_var ('change_editormode', 'onChange="change_editmode(this);"');
         $storyform->set_var ('lang_expandhelp', $LANG24[67]);
         $storyform->set_var ('lang_reducehelp', $LANG24[68]);
-        $storyform->set_var ('show_texteditor', 'none');
-        $storyform->set_var ('show_htmleditor', '');
+        if ($A['postmode'] == 'html') {
+            $storyform->set_var ('show_texteditor', 'none');
+            $storyform->set_var ('show_htmleditor', '');
+        } else {
+            $storyform->set_var ('show_texteditor', '');
+            $storyform->set_var ('show_htmleditor', 'none');
+        }
     } else {
         $storyform->set_file('storyform','submitstory.thtml');
         if ($A['postmode'] == 'html') {
@@ -326,14 +215,16 @@
 
     if (!empty($_USER['username'])) {
         $storyform->set_var('story_username', $_USER['username']);
-        $storyform->set_var('status_url', $_CONF['site_url'] . '/users.php?mode=logout');
+        $storyform->set_var('author', COM_getDisplayName ());
+        $storyform->set_var('status_url', $_CONF['site_url']
+                                          . '/users.php?mode=logout');
         $storyform->set_var('lang_loginout', $LANG12[34]);
     } else {
         $storyform->set_var('status_url', $_CONF['site_url'] . '/users.php');
         $storyform->set_var('lang_loginout', $LANG12[2]);
         $storyform->set_var('separator', ' | ');
         $storyform->set_var('seperator', ' | ');
-        $storyform->set_var('create_account','<a href="' . $_CONF['site_url'] . '/users.php?mode=new">' . $LANG12[53] . '</a>');
+        $storyform->set_var('create_account','<a href="' . $_CONF['site_url'] . '/users.php?mode=new" rel="nofollow">' . $LANG12[53] . '</a>');
     }
     
     $storyform->set_var('lang_title', $LANG12[10]);
@@ -356,6 +247,7 @@
     $storyform->set_var('story_date', $A['unixdate']);
 
     if (($_CONF['skip_preview'] == 1) || ($A['mode'] == $LANG12[32])) {
+        PLG_templateSetVars ('story', $storyform);
         $storyform->set_var('save_button', '<input name="mode" type="submit" value="' . $LANG12[8] . '">');
     }
 
@@ -376,69 +268,37 @@
 */
 function sendNotification ($table, $A)
 {
-    global $_CONF, $_TABLES, $LANG01, $LANG02, $LANG06, $LANG08, $LANG09,
-           $LANG12, $LANG24, $LANG29, $LANG30, $LANG_ADMIN;
+    global $_CONF, $_TABLES, $LANG01, $LANG08, $LANG24, $LANG29, $LANG_ADMIN;
+           
+    $title = COM_undoSpecialChars (stripslashes ($A['title']));
+    if ($A['postmode'] == 'html') {
+        $A['introtext'] = strip_tags ($A['introtext']);
+    }
+    $introtext = COM_undoSpecialChars (stripslashes ($A['introtext']));
+    $storyauthor = COM_getDisplayName ($A['uid']);
+    $topic = stripslashes (DB_getItem ($_TABLES['topics'], 'topic',
+                                       "tid = '{$A['tid']}'"));
 
-    switch ($table) {
-        case $_TABLES['storysubmission']:
-        case $_TABLES['stories']:
-            $title = COM_undoSpecialChars (stripslashes ($A['title']));
-            if ($A['postmode'] == 'html') {
-                $A['introtext'] = strip_tags ($A['introtext']);
-            }
-            $introtext = COM_undoSpecialChars (stripslashes ($A['introtext']));
-            $storyauthor = DB_getItem ($_TABLES['users'], 'username',
-                                       "uid = {$A['uid']}");
-            $topic = stripslashes (DB_getItem ($_TABLES['topics'], 'topic',
-                                               "tid = '{$A['tid']}'"));
-
-            $mailbody = "$LANG08[31]: {$title}\n"
-                      . "$LANG24[7]: {$storyauthor}\n"
-                      . "$LANG08[32]: " . strftime ($_CONF['date']) . "\n"
-                      . "{$LANG_ADMIN['topic']}: {$topic}\n\n";
-
-            if ($_CONF['emailstorieslength'] > 0) {
-                if ($_CONF['emailstorieslength'] > 1) {
-                    $introtext = substr ($introtext, 0,
-                            $_CONF['emailstorieslength']) . '...';
-                }
-                $mailbody .= $introtext . "\n\n";
-            }
-            if ($table == $_TABLES['storysubmission']) {
-                $mailbody .= "$LANG01[10] <{$_CONF['site_admin_url']}/moderation.php>\n\n";
-            } else {
-                $articleUrl = COM_buildUrl ($_CONF['site_url']
-                                        . '/article.php?story=' . $A['sid']);
-                $mailbody .= $LANG08[33] . ' <' . $articleUrl . ">\n\n";
-            }
-            $mailsubject = $_CONF['site_name'] . ' ' . $LANG29[35];
-            break;
+    $mailbody = "$LANG08[31]: {$title}\n"
+              . "$LANG24[7]: {$storyauthor}\n"
+              . "$LANG08[32]: " . strftime ($_CONF['date']) . "\n"
+              . "{$LANG_ADMIN['topic']}: {$topic}\n\n";
 
-        case $_TABLES['eventsubmission']:
-        case $_TABLES['events']:
-            $title = stripslashes ($A['title']);
-            $description = stripslashes ($A['description']);
-
-            $mailbody = "$LANG09[16]: $title\n"
-                      . "$LANG09[17]: " . strftime ($_CONF['date'],
-                        strtotime ($A['datestart'] . ' ' . $A['timestart']));
-            if ($A['allday']) {
-                $mailbody .= ' (' . $LANG30[26] . ')';
-            }
-            $mailbody .= "\n";
-            if (!empty ($A['url']) && ($A['url'] != 'http://')) {
-                $mailbody .= "$LANG09[33]: <" . $A['url'] . ">\n";
-            }
-            $mailbody .= "\n" . $description . "\n\n";
-            if ($table == $_TABLES['eventsubmission']) {
-                $mailbody .= "$LANG01[10] <{$_CONF['site_admin_url']}/moderation.php>\n\n";
-            } else {
-                $mailbody .= "$LANG02[12] <{$_CONF['site_url']}/calendar_event.php?eid={$A['eid']}>\n\n";
-            }
-            $mailsubject = $_CONF['site_name'] . ' ' . $LANG29[37];
-            break;
+    if ($_CONF['emailstorieslength'] > 0) {
+        if ($_CONF['emailstorieslength'] > 1) {
+            $introtext = MBYTE_substr ($introtext, 0,
+                    $_CONF['emailstorieslength']) . '...';
+        }
+        $mailbody .= $introtext . "\n\n";
     }
-
+    if ($table == $_TABLES['storysubmission']) {
+        $mailbody .= "$LANG01[10] <{$_CONF['site_admin_url']}/moderation.php>\n\n";
+    } else {
+        $articleUrl = COM_buildUrl ($_CONF['site_url']
+                                . '/article.php?story=' . $A['sid']);
+        $mailbody .= $LANG08[33] . ' <' . $articleUrl . ">\n\n";
+    }
+    $mailsubject = $_CONF['site_name'] . ' ' . $LANG29[35];
     $mailbody .= "\n------------------------------\n";
     $mailbody .= "\n$LANG08[34]\n";
     $mailbody .= "\n------------------------------\n";
@@ -477,6 +337,7 @@
         $introtext = COM_checkHTML (COM_checkWords ($A['introtext']));
     } else {
         $introtext = COM_makeClickableLinks (htmlspecialchars (COM_checkWords ($A['introtext'])));
+        $A['postmode'] = 'plaintext';
     }
 
     $A['sid'] = addslashes (COM_makeSid ());
@@ -512,7 +373,18 @@
         $related = addslashes (implode ("\n", STORY_extractLinks ($introtext)));
 
         $introtext = addslashes ($introtext);
-        DB_save ($_TABLES['stories'], 'sid,uid,tid,title,introtext,related,date,commentcode,trackbackcode,postmode,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon', "{$A['sid']},{$A['uid']},'{$A['tid']}','{$A['title']}','$introtext','{$related}',NOW(),'{$_CONF['comment_code']}','{$_CONF['trackback_code']}','{$A['postmode']}',{$A['uid']},{$T['group_id']},{$T['perm_owner']},{$T['perm_group']},{$T['perm_members']},{$T['perm_anon']}");
+        if (!isset ($_CONF['show_topic_icon'])) {
+            $_CONF['show_topic_icon'] = 1;
+        }
+        if (DB_getItem ($_TABLES['topics'], 'archive_flag',
+                "tid = '{$A['tid']}'") == 1) {
+            $A['frontpage'] = 0;
+        } else if (isset ($_CONF['frontpage'])) {
+            $A['frontpage'] = $_CONF['frontpage'];
+        } else {
+            $A['frontpage'] = 1;
+        }
+        DB_save ($_TABLES['stories'], 'sid,uid,tid,title,introtext,related,date,commentcode,trackbackcode,postmode,show_topic_icon,frontpage,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon', "{$A['sid']},{$A['uid']},'{$A['tid']}','{$A['title']}','$introtext','{$related}',NOW(),'{$_CONF['comment_code']}','{$_CONF['trackback_code']}','{$A['postmode']}',{$_CONF['show_topic_icon']},{$A['frontpage']},{$A['uid']},{$T['group_id']},{$T['perm_owner']},{$T['perm_group']},{$T['perm_members']},{$T['perm_anon']}");
 
         COM_rdfUpToDateCheck ();
         COM_olderStuff ();
@@ -530,170 +402,6 @@
 }
 
 /**
-* Saves an event submission
-*
-* @param    array   $A  Data for that submission
-* @return   string      HTML redirect
-*
-*/
-function saveevent ($A)
-{
-    global $_CONF, $_TABLES, $_USER, $LANG12;
-
-    $retval = '';
-
-    $A['title'] = strip_tags (COM_checkWords ($A['title']));
-    $A['start_year'] = COM_applyFilter ($A['start_year'], true);
-    $A['start_month'] = COM_applyFilter ($A['start_month'], true);
-    $A['start_day'] = COM_applyFilter ($A['start_day'], true);
-
-    if (empty ($A['title']) || empty ($A['start_month']) ||
-            empty ($A['start_day']) || empty ($A['start_year'])) {
-        $retval .= COM_siteHeader ('menu', $LANG12[4])
-            . COM_startBlock ($LANG12[22], '',
-                           COM_getBlockTemplate ('_msg_block', 'header'))
-            . $LANG12[23]
-            . COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'))
-            . submissionform ('event',
-                    ($A['calendar_type'] == 'master') ? '' : 'personal')
-            . COM_siteFooter ();
-
-        return $retval;
-    }
-
-    $A['end_year'] = COM_applyFilter ($A['end_year'], true);
-    $A['end_month'] = COM_applyFilter ($A['end_month'], true);
-    $A['end_day'] = COM_applyFilter ($A['end_day'], true);
-
-    $A['datestart'] = sprintf ('%4d-%02d-%02d',
-                        $A['start_year'], $A['start_month'], $A['start_day']);
-    if (empty ($A['end_year']) || empty ($A['end_month']) ||
-            empty ($A['end_day'])) {
-        $A['dateend'] = $A['datestart'];
-    } else {
-        $A['dateend'] = sprintf ('%4d-%02d-%02d',
-                            $A['end_year'], $A['end_month'], $A['end_day']);
-    }
-
-    // pseudo-formatted event description for the spam check
-    $spamcheck = '<p><a href="' . $A['url'] . '">' . $A['title'] . '</a><br>'
-               . $A['location'] . '<br>' . $A['address1'] . '<br>'
-               . $A['address2'] . '<br>' . $A['city'] . ', ' . $A['zipcode']
-               . '<br>' . $A['description'] . '</p>';
-    $result = PLG_checkforSpam ($spamcheck, $_CONF['spamx']);
-    if ($result > 0) {
-        COM_updateSpeedlimit ('submit');
-        COM_displayMessageAndAbort ($result, 'spamx', 403, 'Forbidden');
-    }
-
-    $A['description'] = addslashes (htmlspecialchars (COM_checkWords ($A['description'])));
-    $A['address1'] = addslashes (strip_tags (COM_checkWords ($A['address1'])));
-    $A['address2'] = addslashes (strip_tags (COM_checkWords ($A['address2'])));
-    $A['city'] = addslashes (strip_tags (COM_checkWords ($A['city'])));
-    $A['zipcode'] = addslashes (strip_tags (COM_checkWords ($A['zipcode'])));
-    $A['state'] = addslashes (strip_tags (COM_checkWords ($A['state'])));
-    $A['location'] = addslashes (strip_tags (COM_checkWords ($A['location'])));
-    $A['event_type'] = addslashes (strip_tags (COM_checkWords ($A['event_type'])));
-    $A['title'] = addslashes ($A['title']);
-
-    $A['url'] = strip_tags ($A['url']);
-    if (!empty ($A['url'])) {
-        $pos = strpos ($A['url'], ':');
-        if ($pos === false) {
-            $A['url'] = 'http://' . $A['url'];
-        } else {
-            $prot = substr ($A['url'], 0, $pos + 1);
-            if (($prot != 'http:') && ($prot != 'https:')) {
-                $A['url'] = 'http:' . substr ($A['url'], $pos + 1);
-            }
-        }
-        $A['url'] = addslashes ($A['url']);
-    }
-    if ($A['url'] == 'http://') {
-        $A['url'] = '';
-    }
-
-    $A['eid'] = addslashes (COM_makeSid ());
-
-    COM_updateSpeedlimit ('submit');
-
-    if ($A['allday'] == 'on') {
-        $A['allday'] = 1;
-    } else {
-        $A['allday'] = 0;
-    }
-
-    $A['start_hour'] = COM_applyFilter ($A['start_hour'], true);
-    $A['start_minute'] = COM_applyFilter ($A['start_minute'], true);
-    $A['end_hour'] = COM_applyFilter ($A['end_hour'], true);
-    $A['end_minute'] = COM_applyFilter ($A['end_minute'], true);
-
-    if ($A['start_ampm'] == 'pm' AND $A['start_hour'] <> 12) {
-        $A['start_hour'] = $A['start_hour'] + 12;
-    }
-    if ($A['start_ampm'] == 'am' AND $A['start_hour'] == 12) {
-        $A['start_hour'] = '00';
-    }
-    if ($A['end_ampm'] == 'pm' AND $A['end_hour'] <> 12) {
-        $A['end_hour'] = $A['end_hour'] + 12;
-    }
-    if ($A['end_ampm'] == 'am' AND $A['end_hour'] == 12) {
-        $A['end_hour'] = '00';
-    }
-    $A['timestart'] = $A['start_hour'] . ':' . $A['start_minute'] . ':00';
-    $A['timeend'] = $A['end_hour'] . ':' . $A['end_minute'] . ':00';
-
-    if ($A['calendar_type'] == 'master') { // add to site calendar
-
-        if (($_CONF['eventsubmission'] == 1) &&
-                !SEC_hasRights ('event.submit')) {
-            DB_save ($_TABLES['eventsubmission'], 'eid,title,event_type,url,datestart,timestart,dateend,timeend,allday,location,address1,address2,city,state,zipcode,description', "{$A['eid']},'{$A['title']}','{$A['event_type']}','{$A['url']}','{$A['datestart']}','{$A['timestart']}','{$A['dateend']}','{$A['timeend']}',{$A['allday']},'{$A['location']}','{$A['address1']}','{$A['address2']}','{$A['city']}','{$A['state']}','{$A['zipcode']}','{$A['description']}'");
-
-            if (isset ($_CONF['notification']) &&
-                    in_array ('event', $_CONF['notification'])) {
-                sendNotification ($_TABLES['eventsubmission'], $A);
-            }
-
-            $retval = COM_refresh ($_CONF['site_url'] . '/index.php?msg=4');
-        } else {
-            if (isset ($_USER['uid']) && ($_USER['uid'] > 1)) {
-                $owner_id = $_USER['uid'];
-            } else {
-                $owner_id = 1; // anonymous user
-            }
-
-            DB_save ($_TABLES['events'], 'eid,title,event_type,url,datestart,timestart,dateend,timeend,allday,location,address1,address2,city,state,zipcode,description,owner_id', "{$A['eid']},'{$A['title']}','{$A['event_type']}','{$A['url']}','{$A['datestart']}','{$A['timestart']}','{$A['dateend']}','{$A['timeend']}',{$A['allday']},'{$A['location']}','{$A['address1']}','{$A['address2']}','{$A['city']}','{$A['state']}','{$A['zipcode']}','{$A['description']}',$owner_id");
-            if (isset ($_CONF['notification']) &&
-                    in_array ('event', $_CONF['notification'])) {
-                sendNotification ($_TABLES['events'], $A);
-            }
-            COM_rdfUpToDateCheck ();
-
-            $retval = COM_refresh ($_CONF['site_url'] . '/calendar.php');
-        }
-
-    } else if ($_CONF['personalcalendars'] == 1) { // add to personal calendar
-
-        if (isset ($_USER['uid']) && ($_USER['uid'] > 1)) {
-            DB_save ($_TABLES['personal_events'], 'uid,eid,title,event_type,url,datestart,timestart,dateend,timeend,allday,location,address1,address2,city,state,zipcode,description', "{$_USER['uid']},'{$A['eid']}','{$A['title']}','{$A['event_type']}','{$A['url']}','{$A['datestart']}','{$A['timestart']}','{$A['dateend']}','{$A['timeend']}',{$A['allday']},'{$A['location']}','{$A['address1']}','{$A['address2']}','{$A['city']}','{$A['state']}','{$A['zipcode']}','{$A['description']}'");
-
-            $retval = COM_refresh ($_CONF['site_url']
-                                   . '/calendar.php?mode=personal&msg=17');
-        } else {
-            // anonymous users don't have personal calendars - bail
-            COM_accessLog ("Attempt to write to the personal calendar of user '{$A['uid']}'.");
-
-            $retval = COM_refresh ($_CONF['site_url'] . '/calendar.php');
-        }
-
-    } else { // personal calendars are disabled
-        $retval = COM_refresh ($_CONF['site_url'] . '/calendar.php');
-    }
-
-    return $retval;
-}
-
-/**
 * This will save a submission
 *
 * @param    string  $type   Type of submission we are dealing with
@@ -722,44 +430,37 @@
         return $retval;
     }
 
-    switch ($type) {
-    case 'event':
-        $retval = saveevent ($A);
-        break;
-
-    default:
-        if ((strlen($type) > 0) && ($type <> 'story')) {
-            // Update the submitspeedlimit for user - assuming Plugin approves
-            // submission record
-            COM_updateSpeedlimit ('submit');
-
-            // see if this is a submission that needs to be handled by a plugin
-            // and should include its own redirect
-            $retval = PLG_saveSubmission ($type, $A);
-
-            if (!retval) {
-                COM_errorLog("Could not save your submission. Bad type: $type");
-            } elseif (empty($retval)) {
-                // plugin should include its own redirect - but in case handle
-                // it here and redirect to the main page
-                return COM_refresh ($_CONF['site_url'] . '/index.php');
-            } else {
-              return $retval;
-            }
-        }
+    if (!empty ($type) && ($type != 'story')) {
+        // Update the submitspeedlimit for user - assuming Plugin approves
+        // submission record
+        COM_updateSpeedlimit ('submit');
 
-        if (!empty ($A['title']) && !empty ($A['introtext'])) {
-            $retval = savestory ($A);
+        // see if this is a submission that needs to be handled by a plugin
+        // and should include its own redirect
+        $retval = PLG_saveSubmission ($type, $A);
+
+        if ($retval === false) {
+            COM_errorLog ("Could not save your submission. Bad type: $type");
+        } elseif (empty ($retval)) {
+            // plugin should include its own redirect - but in case handle
+            // it here and redirect to the main page
+            return COM_refresh ($_CONF['site_url'] . '/index.php');
         } else {
-            $retval .= COM_startBlock ($LANG12[22], '',
-                               COM_getBlockTemplate ('_msg_block', 'header'))
-                . $LANG12[23] // return missing fields error
-                . COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'))
-                . submissionform($type)
-                . COM_siteFooter ();
+            return $retval;
         }
-        break;
     }
+
+    if (!empty ($A['title']) && !empty ($A['introtext'])) {
+        $retval = savestory ($A);
+    } else {
+        $retval .= COM_startBlock ($LANG12[22], '',
+                           COM_getBlockTemplate ('_msg_block', 'header'))
+            . $LANG12[23] // return missing fields error
+            . COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'))
+            . submissionform($type)
+            . COM_siteFooter ();
+    }
+
     return $retval;
 }
 
@@ -785,101 +486,36 @@
         (($_CONF['loginrequired'] == 1) || ($_CONF['submitloginrequired'] == 1))) {
         $display = COM_refresh ($_CONF['site_url'] . '/index.php');
     } else {
+        if ($type == 'story') {
+            $msg = PLG_itemPreSave ($type, $_POST);
+            if (!empty ($msg)) {
+                $_POST['mode'] =  $LANG12[32];
+                $display .= COM_siteHeader ('menu', $pagetitle)
+                         . COM_errorLog ($msg, 2)
+                         . submitstory ($topic)
+                         . COM_siteFooter();
+                echo $display;
+                exit;
+            }
+        }
         $display .= savesubmission ($type, $_POST);
     }
-} else if (($mode == $LANG12[52]) && !empty ($LANG12[52])) { // delete
-    // this is only meant for deleting personal events
-    if (($_CONF['personalcalendars'] == 1) && ($_REQUEST['type'] == 'event') &&
-            isset ($_USER['uid']) && ($_USER['uid'] > 1)) {
-        $eid = COM_applyFilter ($_REQUEST['eid']);
-        if (!empty ($eid)) {
-            $eid = addslashes ($eid);
-            DB_query ("DELETE FROM {$_TABLES['personal_events']} WHERE uid={$_USER['uid']} AND eid='$eid'");
-            echo COM_refresh ($_CONF['site_url']
-                              . '/calendar.php?mode=personal&amp;msg=26');
+} else {
+    if ((strlen ($type) > 0) && ($type <> 'story')) {
+        if (SEC_hasRights ("$type.edit") ||
+            SEC_hasRights ("$type.admin"))  {
+            echo COM_refresh ($_CONF['site_admin_url']
+                    . "/plugins/$type/index.php?mode=edit");
             exit;
         }
-    }
-    $display = COM_refresh ($_CONF['site_url'] . '/index.php');
-} else if (($_CONF['personalcalendars'] == 1) && ($type == 'event') &&
-        isset ($_POST['calendar_type']) &&
-        ($_POST['calendar_type'] == 'personal')) { // quick add form
-   $display = saveevent ($_POST);
-} else {
-    switch($type) {
-        case 'event':
-            if (SEC_hasRights('event.edit') && ($mode != 'personal')) {
-                if (isset ($_REQUEST['year'])) {
-                    $year = COM_applyFilter ($_REQUEST['year'], true);
-                } else {
-                    $year = date ('Y', time ());
-                }
-                if (isset ($_REQUEST['month'])) {
-                    $month = COM_applyFilter ($_REQUEST['month'], true);
-                } else {
-                    $month = date ('m', time ());
-                }
-                if (isset ($_REQUEST['day'])) {
-                    $day = COM_applyFilter ($_REQUEST['day'], true);
-                } else {
-                    $day = date ('d', time ());
-                }
-                if (isset ($_REQUEST['hour'])) {
-                    $hour = COM_applyFilter ($_REQUEST['hour'], true);
-                } else {
-                    $hour = date ('H', time ());
-                }
-                $startat = '';
-                if ($year > 0) {
-                    $startat = '&datestart='
-                             . urlencode (sprintf ('%04d-%02d-%02d', $year,
-                                                   $month, $day))
-                             . '&timestart=' . urlencode (sprintf ('%02d:00:00',
-                                                                   $hour));
-                }
-
-                echo COM_refresh ($_CONF['site_admin_url']
-                                  . '/event.php?mode=edit' . $startat);
-                exit;
-            }
-            break;
-
-        default:
-            if ((strlen ($type) > 0) && ($type <> 'story')) {
-                if (SEC_hasRights ("$type.edit") ||
-                    SEC_hasRights ("$type.admin"))  {
-                    echo COM_refresh ($_CONF['site_admin_url']
-                         . "/plugins/$type/index.php?mode=edit");
-                    exit;
-                }
-            } elseif (SEC_hasRights ('story.edit')) {
-                $topic = '';
-                if (isset ($_REQUEST['topic'])) {
-                    $topic = '&topic=' . $_REQUEST['topic'];
-                }
-                echo COM_refresh ($_CONF['site_admin_url']
-                     . '/story.php?mode=edit' . $topic);
-                exit;
-            }
-            break;
-    }
-
-    $year = 0;
-    if (isset ($_REQUEST['year'])) {
-        $year = COM_applyFilter ($_REQUEST['year'], true);
-    }
-    $month = 0;
-    if (isset ($_REQUEST['month'])) {
-        $month = COM_applyFilter ($_REQUEST['month'], true);
-    }
-    $day = 0;
-    if (isset ($_REQUEST['day'])) {
-        $day = COM_applyFilter ($_REQUEST['day'], true);
-    }
-    if (isset ($_REQUEST['hour'])) {
-        $hour = COM_applyFilter ($_REQUEST['hour'], true);
-    } else {
-        $hour = -1;
+    } elseif (SEC_hasRights ('story.edit')) {
+        $topic = '';
+        if (isset ($_REQUEST['topic'])) {
+            $topic = '&topic=' . urlencode(COM_applyFilter($_REQUEST['topic']));
+        }
+        echo COM_refresh ($_CONF['site_admin_url']
+                . '/story.php?mode=edit' . $topic);
+        exit;
     }
     $topic = '';
     if (isset ($_REQUEST['topic'])) {
@@ -887,9 +523,6 @@
     }
 
     switch ($type) {
-        case 'event':
-            $pagetitle = $LANG12[4];
-            break;
         case 'story':
             $pagetitle = $LANG12[6];
             break;
@@ -898,7 +531,7 @@
             break;
     }
     $display .= COM_siteHeader ('menu', $pagetitle);
-    $display .= submissionform($type, $mode, $month, $day, $year, $hour, $topic); 
+    $display .= submissionform($type, $mode, $topic); 
     $display .= COM_siteFooter();
 }
 
diff -ruN 1.4.0sr5-1.src/switchlang.php 1.4.1.src/switchlang.php
--- 1.4.0sr5-1.src/switchlang.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.4.1.src/switchlang.php	2006-10-03 04:19:45.000000000 -0500
@@ -0,0 +1,155 @@
+<?php
+
+/* Reminder: always indent with 4 spaces (no tabs). */
+// +---------------------------------------------------------------------------+
+// | Geeklog 1.4                                                               |
+// +---------------------------------------------------------------------------+
+// | switchlang.php                                                            |
+// |                                                                           |
+// | Switch the user's language                                                |
+// +---------------------------------------------------------------------------+
+// | Copyright (C) 2006 by the following authors:                              |
+// |                                                                           |
+// | Authors: Dirk Haun         - dirk AT haun-online DOT de                   |
+// |          based on earlier works by Euan McKay and LWC                     |
+// +---------------------------------------------------------------------------+
+// |                                                                           |
+// | This program is free software; you can redistribute it and/or             |
+// | modify it under the terms of the GNU General Public License               |
+// | as published by the Free Software Foundation; either version 2            |
+// | of the License, or (at your option) any later version.                    |
+// |                                                                           |
+// | This program is distributed in the hope that it will be useful,           |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
+// | GNU General Public License for more details.                              |
+// |                                                                           |
+// | You should have received a copy of the GNU General Public License         |
+// | along with this program; if not, write to the Free Software Foundation,   |
+// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
+// |                                                                           |
+// +---------------------------------------------------------------------------+
+//
+// $Id: switchlang.php,v 1.3 2006/10/03 09:19:45 dhaun Exp $
+
+require_once ('lib-common.php');
+
+/**
+* Switch language in a URL.
+*
+* @param    string  $url        current URL
+* @param    string  $newlang    new language to switch to
+* @param    string  $oldlang    old, i.e. current language
+* @return   string              new URL after the language switch
+*
+*/
+function switch_language ($url, $newlang, $oldlang)
+{
+    global $_CONF;
+
+    $retval = '';
+
+    if (empty ($newlang) || empty ($oldlang) ||
+            (strlen ($newlang) != strlen ($oldlang))) {
+        return $url;
+    }
+
+    $lang_len = strlen ($oldlang);
+    if ((strpos ($url, '&') === false) && (strpos ($url, '?') === false) &&
+            $_CONF['url_rewrite']) {
+        // for "rewritten" URLs we assume that the first parameter after
+        // the script name is the ID, e.g. /article.php/story-id-here_en
+        $changed = false;
+        $p = explode ('/', $url);
+        for ($i = 0; $i < count ($p); $i++) {
+            if (substr ($p[$i], -4) == '.php') {
+                // found the script name - assume next parameter is the ID
+                if (isset ($p[$i + 1])) {
+                    if (substr ($p[$i + 1], -($lang_len + 1)) == '_' . $oldlang) {
+                        $p[$i + 1] = substr_replace ($p[$i + 1], $newlang,
+                                                     -$lang_len);
+                        $changed = true;
+                    }
+                }
+                break;
+            }
+        }
+        if ($changed) {
+            // merge the pieces back together
+            $url = implode ('/', $p);
+        }
+
+        $retval = $url;
+    } else { // URL contains '?' or '&'
+        $url = explode ('&', $url);
+        $urlpart = $url[0];
+        if (count ($url) > 1) {
+            array_shift ($url);
+            $extra_vars = '&' . implode ('&', $url);
+        } else {
+            $extra_vars = '';
+        }
+
+        if (substr ($urlpart, -($lang_len + 1)) == '_' . $oldlang) {
+            $urlpart = substr_replace ($urlpart, $newlang, -$lang_len);
+        }
+
+        $retval = $urlpart . $extra_vars;
+    }
+
+    return $retval;
+}
+
+
+// MAIN
+$ret_url = '';
+if (isset ($_SERVER['HTTP_REFERER'])) {
+    if (strpos ($_SERVER['HTTP_REFERER'], $_CONF['site_url']) !== false) {
+        $ret_url = $_SERVER['HTTP_REFERER'];
+    }
+}
+
+// if not allowed, just ignore and return
+if ($_CONF['allow_user_language'] == 1) {
+
+    COM_setArgNames (array ('lang'));
+
+    $lang = strtolower (COM_applyFilter (COM_getArgument ('lang')));
+    $lang = preg_replace( '/[^a-z0-9\-_]/', '', $lang );
+    $oldlang = COM_getLanguageId ();
+
+    // do we really have a new language to switch to?
+    if (!empty ($lang) && array_key_exists ($lang, $_CONF['language_files'])) {
+
+        // does such a language file exist?
+        $langfile = $_CONF['language_files'][$lang];
+        if (is_file ($_CONF['path_language'] . $langfile . '.php')) {
+
+            // Set the language cookie.
+            // Mainly used for the anonymous user so the rest of this session
+            // will remain in their selected language
+            setcookie ($_CONF['cookie_language'], $langfile, time() + 31536000,
+                       $_CONF['cookie_path'], $_CONF['cookiedomain'],
+                       $_CONF['cookiesecure']);
+
+            // if user is not anonymous, store the preference in the database
+            if (isset ($_USER['uid']) && ($_USER['uid'] > 1)) {
+                DB_query ("UPDATE {$_TABLES['users']} SET language = '{$langfile}' WHERE uid = {$_USER['uid']}");
+            }
+        }
+    }
+
+    // Change the language ID if needed
+    if (!empty ($ret_url) && !empty ($lang) && !empty ($oldlang)) {
+        $ret_url = switch_language ($ret_url, $lang, $oldlang);
+    }
+}
+
+// if the user didn't come from our site, send them to our index page
+if (empty ($ret_url)) {
+    $ret_url = $_CONF['site_url'] . '/';
+}
+
+header ("Location: $ret_url");
+
+?>
diff -ruN 1.4.0sr5-1.src/usersettings.php 1.4.1.src/usersettings.php
--- 1.4.0sr5-1.src/usersettings.php	2006-08-08 02:53:59.000000000 -0500
+++ 1.4.1.src/usersettings.php	2006-12-09 02:34:40.000000000 -0600
@@ -32,7 +32,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: usersettings.php,v 1.123.2.1 2006/03/04 19:45:37 dhaun Exp $
+// $Id: usersettings.php,v 1.154 2006/12/09 08:33:06 dhaun Exp $
 
 require_once ('lib-common.php');
 require_once ($_CONF['path_system'] . 'lib-user.php');
@@ -52,23 +52,63 @@
 */
 function edituser()
 {
-    global $_CONF, $_TABLES, $_USER, $LANG04;
+    global $_CONF, $_TABLES, $_USER, $LANG04, $LANG_ADMIN;
 
-    $result = DB_query("SELECT fullname,cookietimeout,email,homepage,sig,emailstories,about,location,pgpkey,photo FROM {$_TABLES['users']},{$_TABLES['userprefs']},{$_TABLES['userinfo']} WHERE {$_TABLES['users']}.uid = {$_USER['uid']} && {$_TABLES['userprefs']}.uid = {$_USER['uid']} && {$_TABLES['userinfo']}.uid = {$_USER['uid']}");
+    $result = DB_query("SELECT fullname,cookietimeout,email,homepage,sig,emailstories,about,location,pgpkey,photo FROM {$_TABLES['users']},{$_TABLES['userprefs']},{$_TABLES['userinfo']} WHERE {$_TABLES['users']}.uid = {$_USER['uid']} AND {$_TABLES['userprefs']}.uid = {$_USER['uid']} AND {$_TABLES['userinfo']}.uid = {$_USER['uid']}");
     $A = DB_fetchArray ($result);
 
     $preferences = new Template ($_CONF['path_layout'] . 'preferences');
-    $preferences->set_file (array ('profile' => 'profile.thtml',
-                                   'photo' => 'userphoto.thtml',
-                                   'username' => 'username.thtml',
+    $preferences->set_file (array ('profile'       => 'profile.thtml',
+                                   'photo'         => 'userphoto.thtml',
+                                   'username'      => 'username.thtml',
                                    'deleteaccount' => 'deleteaccount.thtml'));
+                                   
+    include ($_CONF['path_system'] . 'classes/navbar.class.php');
+    $navbar = new navbar;
+    $navbar->add_menuitem($LANG04[151],'showhideProfileEditorDiv("preview",0);return false;',true);
+    $navbar->add_menuitem($LANG04[152],'showhideProfileEditorDiv("namepass",1);return false;',true);
+    $navbar->add_menuitem($LANG04[130],'showhideProfileEditorDiv("userinfo",2);return false;',true);
+    $navbar->add_menuitem($LANG04[153],'showhideProfileEditorDiv("layout",3);return false;',true);
+    $navbar->add_menuitem($LANG04[154],'showhideProfileEditorDiv("content",4);return false;',true);
+    $navbar->add_menuitem($LANG04[155],'showhideProfileEditorDiv("privacy",5);return false;',true);
+    $navbar->set_selected($LANG04[152]);
+    $preferences->set_var ('navbar', $navbar->generate());
+                                   
     $preferences->set_var ('site_url', $_CONF['site_url']);
     $preferences->set_var ('layout_url', $_CONF['layout_url']);
+    $preferences->set_var ('no_javascript_warning',$LANG04[150]);
+
+    $preferences->set_var ('cssid1', 1);
+    $preferences->set_var ('cssid2', 2);
+    
+    $preferences->set_var ('preview', userprofile($_USER['uid']));
+    $preferences->set_var ('prefs', editpreferences());
+
+    // some trickery to ensure alternating colors with the available options ...
+    if ($_CONF['allow_username_change'] == 1) {
+        $first  = 1;
+        $second = 2;
+    } else {
+        $first  = 2;
+        $second = 1;
+    }
+    $preferences->set_var ('cssid1u', $first);
+    $preferences->set_var ('cssid2u', $second);
+
+    if ($_CONF['allow_user_photo'] == 1) {
+        $tmp = $first;
+        $first = $second;
+        $second = $tmp;
+    }
+    $preferences->set_var ('cssid1p', $first);
+    $preferences->set_var ('cssid2p', $second);
 
     $preferences->set_var ('lang_fullname', $LANG04[3]);
     $preferences->set_var ('lang_fullname_text', $LANG04[34]);
     $preferences->set_var ('lang_username', $LANG04[2]);
     $preferences->set_var ('lang_username_text', $LANG04[87]);
+    $preferences->set_var ('lang_password_help_title', $LANG04[146]);
+    $preferences->set_var ('lang_password_help', $LANG04[147]);
     $preferences->set_var ('lang_password', $LANG04[4]);
     $preferences->set_var ('lang_password_text', $LANG04[35]);
     $preferences->set_var ('lang_password_conf', $LANG04[108]);
@@ -79,6 +119,10 @@
     $preferences->set_var ('lang_cooktime_text', $LANG04[69]);
     $preferences->set_var ('lang_email', $LANG04[5]);
     $preferences->set_var ('lang_email_text', $LANG04[33]);
+    $preferences->set_var ('lang_email_conf', $LANG04[124]);
+    $preferences->set_var ('lang_email_conf_text', $LANG04[126]);
+    $preferences->set_var ('lang_userinfo_help_title', $LANG04[148]);
+    $preferences->set_var ('lang_userinfo_help', $LANG04[149]);
     $preferences->set_var ('lang_homepage', $LANG04[6]);
     $preferences->set_var ('lang_homepage_text', $LANG04[36]);
     $preferences->set_var ('lang_location', $LANG04[106]);
@@ -92,13 +136,21 @@
     $preferences->set_var ('lang_pgpkey', $LANG04[8]);
     $preferences->set_var ('lang_pgpkey_text', $LANG04[39]);
     $preferences->set_var ('lang_submit', $LANG04[9]);
-
-    $preferences->set_var ('start_block_profile',
-            COM_startBlock ($LANG04[1] . ' ' . $_USER['username']));
-    $preferences->set_var ('end_block', COM_endBlock ());
+    $preferences->set_var ('lang_cancel',$LANG_ADMIN['cancel']);
+    $preferences->set_var ('lang_preview_title', $LANG04[145]);
+    $preferences->set_var ('lang_enter_current_password', $LANG04[127]);
+    $preferences->set_var ('lang_name_legend', $LANG04[128]);
+    $preferences->set_var ('lang_password_email_legend', $LANG04[129]);
+    $preferences->set_var ('lang_personal_info_legend', $LANG04[130]);
+
+    $display_name = COM_getDisplayName ($_USER['uid']);
+
+    //$preferences->set_var ('start_block_profile',
+    //        COM_startBlock ($LANG04[1] . ' ' . $display_name));
+    //$preferences->set_var ('end_block', COM_endBlock ());
 
     $preferences->set_var ('profile_headline',
-                           $LANG04[1] . ' ' . $_USER['username']);
+                           $LANG04[1] . ' ' . $display_name);
 
     if ($_CONF['allow_user_photo'] == 1) {
         $preferences->set_var ('enctype', 'enctype="multipart/form-data"');
@@ -160,21 +212,24 @@
                            htmlspecialchars ($_USER['username']));
 
     if ($_CONF['allow_account_delete'] == 1) {
-        $preferences->set_var ('start_block_delete_account',
-                COM_startBlock (sprintf ($LANG04[94], $_USER['username'])));
-        $preferences->set_var ('end_block_delete_account', COM_endBlock ());
+        $preferences->set_var ('lang_deleteaccount', $LANG04[156]);
         $preferences->set_var ('delete_text', $LANG04[95]);
         $preferences->set_var ('lang_button_delete', $LANG04[96]);
         $preferences->set_var ('delete_mode', 'confirmdelete');
         $preferences->set_var ('account_id', $reqid);
+        if (isset ($LANG04[157])) {
+            $preferences->set_var ('lang_deleteoption', $LANG04[157]);
+        } else {
+            $preferences->set_var ('lang_deleteoption', $LANG04[156]);
+        }
         $preferences->parse ('delete_account_option', 'deleteaccount', false);
     } else {
         $preferences->set_var ('delete_account_option', '');
     }
 
     // Call custom account form and edit function if enabled and exists
-    if ($_CONF['custom_registration'] AND (function_exists(custom_useredit))) {
-        $preferences->set_var ('customfields', custom_useredit($_USER['uid']) );
+    if ($_CONF['custom_registration'] AND (function_exists('CUSTOM_userEdit'))) {
+        $preferences->set_var ('customfields', CUSTOM_userEdit($_USER['uid']) );
     }
 
     PLG_profileVariablesEdit ($_USER['uid'], $preferences);
@@ -200,6 +255,14 @@
         // not found - abort
         return COM_refresh ($_CONF['site_url'] . '/index.php');
     }
+    
+    // to change the password, email address, or cookie timeout,
+    // we need the user's current password
+    if (empty ($_POST['old_passwd']) ||
+            (md5 ($_POST['old_passwd']) != $_USER['passwd'])) {
+         return COM_refresh ($_CONF['site_url']
+                            . '/usersettings.php?mode=edit&msg=84');
+    }    
 
     $reqid = substr (md5 (uniqid (rand (), 1)), 1, 16);
     DB_change ($_TABLES['users'], 'pwrequestid', "$reqid",
@@ -207,32 +270,26 @@
 
     $retval = '';
 
-    $confirm = new Template ($_CONF['path_layout'] . 'preferences');
-    $confirm->set_file (array ('deleteaccount' => 'deleteaccount.thtml'));
-    $confirm->set_var ('site_url', $_CONF['site_url']);
-    $confirm->set_var ('layout_url', $_CONF['layout_url']);
-
-    $confirm->set_var ('start_block_delete_account',
-            COM_startBlock (sprintf ($LANG04[94], $_USER['username'])));
-    $confirm->set_var ('end_block_delete_account', COM_endBlock ());
-    $confirm->set_var ('delete_text', $LANG04[95]);
-    $confirm->set_var ('lang_button_delete', $LANG04[96]);
-    $confirm->set_var ('delete_mode', 'deleteconfirmed');
-    $confirm->set_var ('account_id', $reqid);
-
-    $retval .= COM_siteHeader ('menu');
+    $retval .= COM_siteHeader ('menu', $LANG04[97]);
     $retval .= COM_startBlock ($LANG04[97], '',
                                COM_getBlockTemplate ('_msg_block', 'header'));
-    $retval .= $LANG04[98];
+    $retval .= '<p>' . $LANG04[98] . '</p>' . LB;
+    $retval .= '<form action="' . $_CONF['site_url']
+            . '/usersettings.php" method="POST">' . LB;
+    $retval .= '<p align="center"><input type="submit" name="btnsubmit" value="'
+            . $LANG04[96] . '"></p>' . LB;
+    $retval .= '<input type="hidden" name="mode" value="deleteconfirmed">' . LB;
+    $retval .= '<input type="hidden" name="account_id" value="' . $reqid
+            . '">' . LB;
+    $retval .= '</form>' . LB;
     $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
-    $retval .= $confirm->finish ($confirm->parse ('output', 'deleteaccount'));
     $retval .= COM_siteFooter ();
 
     return $retval;
 }
 
 /**
-* Delete an account (keep in sync with delete_user() in admin/user.php).
+* Delete an account
 *
 * @param    string   form_reqid   request id
 * @return   string   redirection to main page (+ success msg)
@@ -323,6 +380,9 @@
     $preferences->set_var ('lang_language', $LANG04[73]);
     $preferences->set_var ('lang_theme', $LANG04[72]);
     $preferences->set_var ('lang_theme_text', $LANG04[74]);
+    $preferences->set_var ('lang_misc_title', $LANG04[138]);
+    $preferences->set_var ('lang_misc_help_title', $LANG04[139]);
+    $preferences->set_var ('lang_misc_help', $LANG04[140]);
     $preferences->set_var ('lang_noicons', $LANG04[40]);
     $preferences->set_var ('lang_noicons_text', $LANG04[49]);
     $preferences->set_var ('lang_noboxes', $LANG04[44]);
@@ -335,16 +395,28 @@
     }
     $preferences->set_var ('lang_maxstories_text', $maxtext);
     $preferences->set_var ('lang_dateformat', $LANG04[42]);
-    $preferences->set_var ('lang_excludeditems', $LANG04[54]);
+    $preferences->set_var ('lang_excluded_items_title', $LANG04[137]);
+    $preferences->set_var ('lang_excluded_items', $LANG04[54]);
+    $preferences->set_var ('lang_exclude_title', $LANG04[136]);
     $preferences->set_var ('lang_topics', $LANG04[48]);
     $preferences->set_var ('lang_emailedtopics', $LANG04[76]);
+    $preferences->set_var ('lang_digest_top_header', $LANG04[131]);
+    $preferences->set_var ('lang_digest_help_header', $LANG04[132]);
+    $preferences->set_var ('lang_boxes_title', $LANG04[144]);
+    $preferences->set_var ('lang_boxes_help_title', $LANG04[143]);
     $preferences->set_var ('lang_boxes', $LANG04[55]);
     $preferences->set_var ('lang_displaymode', $LANG04[57]);
     $preferences->set_var ('lang_displaymode_text', $LANG04[60]);
     $preferences->set_var ('lang_sortorder', $LANG04[58]);
     $preferences->set_var ('lang_sortorder_text', $LANG04[61]);
+    $preferences->set_var ('lang_comment_title', $LANG04[133]);
+    $preferences->set_var ('lang_comment_help_title', $LANG04[134]);
+    $preferences->set_var ('lang_comment_help', $LANG04[135]);
     $preferences->set_var ('lang_commentlimit', $LANG04[59]);
     $preferences->set_var ('lang_commentlimit_text', $LANG04[62]);
+    $preferences->set_var ('lang_privacy_title', $LANG04[141]);
+    $preferences->set_var ('lang_privacy_help_title', $LANG04[141]);
+    $preferences->set_var ('lang_privacy_help', $LANG04[142]);
     $preferences->set_var ('lang_emailfromadmin', $LANG04[100]);
     $preferences->set_var ('lang_emailfromadmin_text', $LANG04[101]);
     $preferences->set_var ('lang_emailfromuser', $LANG04[102]);
@@ -353,78 +425,69 @@
     $preferences->set_var ('lang_showonline_text', $LANG04[105]);
     $preferences->set_var ('lang_submit', $LANG04[9]);
 
+    $display_name = COM_getDisplayName ($_USER['uid']);
+
+    $preferences->set_var ('lang_authors_exclude', $LANG04[46]);
+    $preferences->set_var ('lang_boxes_exclude', $LANG04[47]);
+    
     $preferences->set_var ('start_block_display',
-            COM_startBlock ($LANG04[45] . ' ' . $_USER['username']));
-    $preferences->set_var ('start_block_exclude',
-            COM_startBlock ($LANG04[46] . ' ' . $_USER['username']));
+            COM_startBlock ($LANG04[45] . ' ' . $display_name));
     $preferences->set_var ('start_block_digest',
-            COM_startBlock ($LANG04[75] . ' ' . $_USER['username']));
-    $preferences->set_var ('start_block_boxes',
-            COM_startBlock ($LANG04[47] . ' ' . $_USER['username']));
+            COM_startBlock ($LANG04[75] . ' ' . $display_name));
     $preferences->set_var ('start_block_comment',
-            COM_startBlock ($LANG04[64] . ' ' . $_USER['username']));
+            COM_startBlock ($LANG04[64] . ' ' . $display_name));
     $preferences->set_var ('start_block_privacy',
-            COM_startBlock ($LANG04[99] . ' ' . $_USER['username']));
+            COM_startBlock ($LANG04[99] . ' ' . $display_name));
     $preferences->set_var ('end_block', COM_endBlock ());
 
     $preferences->set_var ('display_headline',
-                           $LANG04[45] . ' ' . $_USER['username']);
+                           $LANG04[45] . ' ' . $display_name);
     $preferences->set_var ('exclude_headline',
-                           $LANG04[46] . ' ' . $_USER['username']);
+                           $LANG04[46] . ' ' . $display_name);
     $preferences->set_var ('digest_headline',
-                           $LANG04[75] . ' ' . $_USER['username']);
+                           $LANG04[75] . ' ' . $display_name);
     $preferences->set_var ('boxes_headline',
-                           $LANG04[47] . ' ' . $_USER['username']);
+                           $LANG04[47] . ' ' . $display_name);
     $preferences->set_var ('comment_headline',
-                           $LANG04[64] . ' ' . $_USER['username']);
+                           $LANG04[64] . ' ' . $display_name);
     $preferences->set_var ('privacy_headline',
-                           $LANG04[99] . ' ' . $_USER['username']);
+                           $LANG04[99] . ' ' . $display_name);
 
     // display preferences block
     if ($_CONF['allow_user_language'] == 1) {
 
-        if (empty($_USER['language'])) {
+        if (empty ($_USER['language'])) {
             $userlang = $_CONF['language'];
         } else {
             $userlang = $_USER['language'];
         }
 
         // Get available languages
-        $language = array ();
-        $fd = opendir ($_CONF['path_language']);
-        while (($file = @readdir ($fd)) !== false) {
-            if ((substr ($file, 0, 1) != '.') && preg_match ('/\.php$/i', $file)
-                    && is_file ($_CONF['path_language'] . $file)) {
-                clearstatcache ();
-                $file = str_replace ('.php', '', $file);
-                $uscore = strpos ($file, '_');
-                if ($uscore === false) {
-                    $lngname = ucfirst ($file);
-                } else {
-                    $lngname = ucfirst (substr ($file, 0, $uscore));
-                    $lngadd = substr ($file, $uscore + 1);
-                    $lngadd = str_replace ('_', ', ', $lngadd);
-                    $word = explode (' ', $lngadd);
-                    $lngadd = '';
-                    foreach ($word as $w) {
-                        if (preg_match ('/[0-9]+/', $w)) {
-                            $lngadd .= strtoupper ($w) . ' ';
-                        } else {
-                            $lngadd .= ucfirst ($w) . ' ';
-                        }
-                    }
-                    $lngname .= ' (' . trim ($lngadd) . ')';
-                }
-                $language[$file] = $lngname;
-            }
+        $language = MBYTE_languageList ($_CONF['default_charset']);
+
+        $has_valid_language = count (array_keys ($language, $userlang));
+        if ($has_valid_language == 0) {
+            // The user's preferred language is no longer available.
+            // We have a problem now, since we've overwritten $_CONF['language']
+            // with the user's preferred language ($_USER['language']) and
+            // therefore don't know what the system's default language is.
+            // So we'll try to find a similar language. If that doesn't help,
+            // the dropdown will default to the first language in the list ...
+            $tmp = explode ('_', $userlang);
+            $similarLang = $tmp[0];
         }
-        asort ($language);
+
         $selection = '<select name="language">' . LB;
         foreach ($language as $langFile => $langName) {
             $selection .= '<option value="' . $langFile . '"';
-            if ($userlang == $langFile) {
+            if (($langFile == $userlang) || (($has_valid_language == 0) &&
+                    (strpos ($langFile, $similarLang) === 0))) {
+                $selection .= ' selected="selected"';
+                $has_valid_language = 1;
+            } else if ($userlang == $langFile) {
                 $selection .= ' selected="selected"';
             }
+
             $selection .= '>' . $langName . '</option>' . LB;
         }
         $selection .= '</select>';
@@ -516,22 +579,30 @@
     if (($_CONF['contributedbyline'] == 1) &&
         ($_CONF['hide_author_exclusion'] == 0)) {
         $preferences->set_var ('lang_authors', $LANG04[56]);
-        $query = DB_query ("SELECT DISTINCT story.uid, user.username FROM {$_TABLES['stories']} story, {$_TABLES['users']} user WHERE story.uid = user.uid ORDER BY user.username");
-        $nrows = DB_numRows($query );
-        $authors = explode(" ",$A['aids']);
+        $sql = "SELECT DISTINCT story.uid, users.username,users.fullname FROM {$_TABLES['stories']} story, {$_TABLES['users']} users WHERE story.uid = users.uid";
+        if ($_CONF['show_fullname'] == 1) {
+            $sql .= ' ORDER BY users.fullname';
+        } else {
+            $sql .= ' ORDER BY users.username';
+        }
+        $query = DB_query ($sql);
+        $nrows = DB_numRows ($query );
+        $authors = explode (' ', $A['aids']);
 
         $selauthors = '';
         for( $i = 0; $i < $nrows; $i++ ) {
-            $B = DB_fetchArray($query);
+            $B = DB_fetchArray ($query);
             $selauthors .= '<option value="' . $B['uid'] . '"';
-            if(in_array(sprintf("%d", $B['uid']), $authors)) {
+            if (in_array (sprintf ('%d', $B['uid']), $authors)) {
                $selauthors .= ' selected';
             }
-            $selauthors .= '>' . $B['username'] . '</option>' . LB;
+            $selauthors .= '>' . COM_getDisplayName ($B['uid'], $B['username'],
+                                                     $B['fullname'])
+                        . '</option>' . LB;
         }
 
         if (DB_count($_TABLES['topics']) > 10) {
-            $Selboxsize = intval(DB_count($_TABLES['topics']) * 1.5);
+            $Selboxsize = intval (DB_count ($_TABLES['topics']) * 1.5);
         } else {
             $Selboxsize = 15;
         }
@@ -576,7 +647,9 @@
     if (!empty ($permissions)) {
         $whereblock .= $permissions . ' AND ';
     }
-    $whereblock .= "((type != 'layout' AND type != 'gldefault' AND is_enabled = 1) OR (type = 'gldefault' AND is_enabled = 1 AND name IN ('whats_new_block','events_block','older_stories'))) ORDER BY onleft desc,blockorder,title";
+    $whereblock .= "((type != 'layout' AND type != 'gldefault' AND is_enabled = 1) OR "
+                 . "(type = 'gldefault' AND is_enabled = 1 AND name IN ('whats_new_block','older_stories'))) "
+                 . "ORDER BY onleft desc,blockorder,title";
     $preferences->set_var ('boxes_checklist', COM_checkList ($_TABLES['blocks'],
             'bid,title,type', $whereblock, $selectedblocks));
     $preferences->parse ('boxes_block', 'boxes', true);
@@ -672,7 +745,7 @@
                                          'image/png'   => '.png'
                                  )      );
     if (!$upload->setPath ($_CONF['path_images'] . 'userphotos')) {
-        $display = COM_siteHeader ('menu');
+        $display = COM_siteHeader ('menu', $LANG24[30]);
         $display .= COM_startBlock ($LANG24[30], '',
                 COM_getBlockTemplate ('_msg_block', 'header'));
         $display .= $upload->printErrors (false);
@@ -712,16 +785,7 @@
 
     // delete old photo first
     if ($delete_photo) {
-        $filetodelete = $_CONF['path_images'] . 'userphotos/' . $curphoto;
-        if (file_exists ($filetodelete)) {
-            if (!@unlink ($filetodelete)) {
-                $display = COM_siteHeader ('menu');
-                $display .= COM_errorLog("Unable to remove file $filetodelete");
-                $display .= COM_siteFooter ();
-                echo $display;
-                exit;
-            }
-        }
+        USER_deletePhoto ($curphoto);
     }
 
     // now do the upload
@@ -744,7 +808,7 @@
         $upload->uploadFiles ();
 
         if ($upload->areErrors ()) {
-            $display = COM_siteHeader ('menu');
+            $display = COM_siteHeader ('menu', $LANG24[30]);
             $display .= COM_startBlock ($LANG24[30], '',
                     COM_getBlockTemplate ('_msg_block', 'header'));
             $display .= $upload->printErrors (false);
@@ -781,9 +845,28 @@
         DB_change ($_TABLES['users'], 'pwrequestid', "NULL",
                    'uid', $_USER['uid']);
         COM_accessLog ("An attempt was made to illegally change the account information of user {$_USER['uid']}.");
+
         return COM_refresh ($_CONF['site_url'] . '/index.php');
     }
 
+    $A['cooktime'] = COM_applyFilter ($A['cooktime'], true);
+    if ($A['cooktime'] < 0) {
+        $A['cooktime'] = 0;
+    }
+
+    // to change the password, email address, or cookie timeout,
+    // we need the user's current password
+    if (!empty ($A['passwd']) || ($A['email'] != $_USER['email']) ||
+            ($A['cooktime'] != $_USER['cookietimeout'])) {
+        if (empty ($A['old_passwd']) ||
+                (md5 ($A['old_passwd']) != $_USER['passwd'])) {
+
+            return COM_refresh ($_CONF['site_url']
+                                . '/usersettings.php?mode=edit&msg=83');
+        }
+    }
+
+    // no need to filter the password as it's md5 encoded anyway
     if ($_CONF['allow_username_change'] == 1) {
         $A['new_username'] = COM_applyFilter ($A['new_username']);
         if (!empty ($A['new_username']) &&
@@ -793,19 +876,21 @@
                 if ($_CONF['allow_user_photo'] == 1) {
                     $photo = DB_getItem ($_TABLES['users'], 'photo',
                                          "uid = {$_USER['uid']}");
-                    $newphoto = preg_replace ('/' . $_USER['username'] . '/',
+                    if (!empty ($photo)) {
+                        $newphoto = preg_replace ('/' . $_USER['username'] . '/',
                                     $A['new_username'], $photo, 1);
-                    $imgpath = $_CONF['path_images'] . 'userphotos/';
-                    if (rename ($imgpath . $photo,
-                                $imgpath . $newphoto) === false) {
-                        $display = COM_siteHeader ('menu');
-                        $display .= COM_errorLog ('Could not rename userphoto "'
-                                        . $photo . '" to "' . $newphoto . '".');
-                        $display .= COM_siteFooter ();
-                        return $display;
-                    }
-                    DB_change ($_TABLES['users'], 'photo',
+                        $imgpath = $_CONF['path_images'] . 'userphotos/';
+                        if (rename ($imgpath . $photo,
+                                    $imgpath . $newphoto) === false) {
+                            $display = COM_siteHeader ('menu', $LANG04[21]);
+                            $display .= COM_errorLog ('Could not rename userphoto "' . $photo . '" to "' . $newphoto . '".');
+                            $display .= COM_siteFooter ();
+
+                            return $display;
+                        }
+                        DB_change ($_TABLES['users'], 'photo',
                                addslashes ($newphoto), "uid", $_USER['uid']);
+                    }
                 }
 
                 DB_change ($_TABLES['users'], 'username', $A['new_username'],
@@ -817,32 +902,26 @@
         }
     }
 
-    $A['cooktime'] = COM_applyFilter ($A['cooktime'], true);
-    if ($A['cooktime'] < 0) {
-        $A['cooktime'] = 0;
-    }
-
-    // no need to filter the password as it's md5 encoded anyway
     if (!empty ($A['passwd'])) {
-            if (($A['passwd']==$A['passwd_conf']) 
-                AND (md5($A['old_passwd'])==$_USER['passwd'])) {
-                $passwd = md5 ($A['passwd']);
-                DB_change($_TABLES['users'], 'passwd', 
+        if (($A['passwd'] == $A['passwd_conf']) 
+                AND (md5 ($A['old_passwd']) == $_USER['passwd'])) {
+            $passwd = md5 ($A['passwd']);
+            DB_change($_TABLES['users'], 'passwd', 
                       "$passwd", "uid", $_USER['uid']);
-                if ($A['cooktime'] > 0) {
-                    $cooktime = $A['cooktime'];
-                } else {
-                    $cooktime = -1000;
-                }
-                setcookie ($_CONF['cookie_password'], $passwd, time() + $cooktime,
-                           $_CONF['cookie_path'], $_CONF['cookiedomain'],
-                           $_CONF['cookiesecure']);        
+            if ($A['cooktime'] > 0) {
+                $cooktime = $A['cooktime'];
+            } else {
+                $cooktime = -1000;
+            }
+            setcookie ($_CONF['cookie_password'], $passwd, time() + $cooktime,
+                       $_CONF['cookie_path'], $_CONF['cookiedomain'],
+                       $_CONF['cookiesecure']);        
         }
-        elseif (md5($A['old_passwd'])!=$_USER['passwd']) {
+        elseif (md5 ($A['old_passwd']) != $_USER['passwd']) {
                 return COM_refresh ($_CONF['site_url']
                         . '/usersettings.php?mode=edit&msg=68');
         }
-        elseif ($A['passwd']!=$A['passwd_conf']) {
+        elseif ($A['passwd'] != $A['passwd_conf']) {
                 return COM_refresh ($_CONF['site_url']
                         . '/usersettings.php?mode=edit&msg=67');
         }
@@ -859,6 +938,7 @@
     }
 
     $A['email'] = COM_applyFilter ($A['email']);
+    $A['email_conf'] = COM_applyFilter ($A['email_conf']);
     $A['homepage'] = COM_applyFilter ($A['homepage']);
 
     // basic filtering only
@@ -871,6 +951,9 @@
     if (!COM_isEmail ($A['email'])) {
         return COM_refresh ($_CONF['site_url']
                 . '/usersettings.php?mode=edit&msg=52');
+    } else if ($A['email'] !== $A['email_conf']) {
+        return COM_refresh ($_CONF['site_url']
+                . '/usersettings.php?mode=edit&msg=78');
     } else if (emailAddressExists ($A['email'], $_USER['uid'])) {
         return COM_refresh ($_CONF['site_url']
                 . '/usersettings.php?mode=edit&msg=56');
@@ -899,7 +982,7 @@
         }
 
         if (!empty ($A['homepage'])) {
-            $pos = strpos ($A['homepage'], ':');
+            $pos = MBYTE_strpos ($A['homepage'], ':');
             if ($pos === false) {
                 $A['homepage'] = 'http://' . $A['homepage'];
             }
@@ -929,8 +1012,8 @@
         DB_query("UPDATE {$_TABLES['userinfo']} SET pgpkey='{$A['pgpkey']}',about='{$A['about']}',location='{$A['location']}' WHERE uid={$_USER['uid']}");
 
         // Call custom registration save function if enabled and exists
-        if ($_CONF['custom_registration'] AND (function_exists(custom_usersave))) {
-            custom_usersave($_USER['uid']);
+        if ($_CONF['custom_registration'] AND (function_exists('CUSTOM_userSave'))) {
+            CUSTOM_userSave($_USER['uid']);
         }
 
         PLG_userInfoChanged ($_USER['uid']);
@@ -945,6 +1028,234 @@
 }
 
 /**
+* Shows a profile for a user
+*
+* This grabs the user profile for a given user and displays it
+*
+* @param    int     $user   User ID of profile to get
+* @param    int     $msg    Message to display (if != 0)
+* @return   string          HTML for user profile page
+*
+*/
+function userprofile ($user, $msg = 0)
+{
+    global $_CONF, $_TABLES, $_USER, $LANG01, $LANG04, $LANG09, $LANG_LOGIN;
+
+    $retval = '';
+
+    if (empty ($_USER['username']) &&
+        (($_CONF['loginrequired'] == 1) || ($_CONF['profileloginrequired'] == 1))) {
+        $retval .= COM_siteHeader ('menu');
+        $retval .= COM_startBlock ($LANG_LOGIN[1], '',
+                           COM_getBlockTemplate ('_msg_block', 'header'));
+        $login = new Template($_CONF['path_layout'] . 'submit');
+        $login->set_file (array ('login'=>'submitloginrequired.thtml'));
+        $login->set_var ('login_message', $LANG_LOGIN[2]);
+        $login->set_var ('site_url', $_CONF['site_url']);
+        $login->set_var ('lang_login', $LANG_LOGIN[3]);
+        $login->set_var ('lang_newuser', $LANG_LOGIN[4]);
+        $login->parse ('output', 'login');
+        $retval .= $login->finish ($login->get_var('output'));
+        $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
+        $retval .= COM_siteFooter ();
+
+        return $retval;
+    }
+
+    $result = DB_query ("SELECT {$_TABLES['users']}.uid,username,fullname,regdate,homepage,about,location,pgpkey,photo,email FROM {$_TABLES['userinfo']},{$_TABLES['users']} WHERE {$_TABLES['userinfo']}.uid = {$_TABLES['users']}.uid AND {$_TABLES['users']}.uid = $user");
+    $nrows = DB_numRows ($result);
+    if ($nrows == 0) { // no such user
+        return COM_refresh ($_CONF['site_url'] . '/index.php');
+    }
+    $A = DB_fetchArray ($result);
+
+    $display_name = COM_getDisplayName ($user, $A['username'], $A['fullname']);
+
+    // format date/time to user preference
+    $curtime = COM_getUserDateTimeFormat ($A['regdate']);
+    $A['regdate'] = $curtime[0];
+
+    $user_templates = new Template ($_CONF['path_layout'] . 'users');
+    $user_templates->set_file (array ('profile' => 'profile.thtml',
+                                      'row'     => 'commentrow.thtml',
+                                      'strow'   => 'storyrow.thtml'));
+    $user_templates->set_var ('site_url', $_CONF['site_url']);
+    $user_templates->set_var ('start_block_userprofile',
+            COM_startBlock ($LANG04[1] . ' ' . $display_name));
+    $user_templates->set_var ('end_block', COM_endBlock ());
+    $user_templates->set_var ('lang_username', $LANG04[2]);
+    if ($_CONF['show_fullname'] == 1) {
+        $user_templates->set_var ('username', $A['fullname']);
+        $user_templates->set_var ('user_fullname', $A['username']);
+    } else {
+        $user_templates->set_var ('username', $A['username']);
+        $user_templates->set_var ('user_fullname', $A['fullname']);
+    }
+    
+    if (SEC_hasRights('user.edit')) {
+        global $_IMAGE_TYPE, $LANG_ADMIN;
+        $edit_icon = '<img src="' . $_CONF['layout_url'] . '/images/edit.'
+             . $_IMAGE_TYPE . '" border="0" alt="' . $LANG_ADMIN['edit']
+             . '" title="' . $LANG_ADMIN['edit'] . '">';
+        $edit_link_url = "<a href=\"{$_CONF['site_admin_url']}/user.php?mode=edit&amp;uid={$A['uid']}\">$edit_icon</a>";
+        $user_templates->set_var ('edit_link', $edit_link_url);
+    }
+
+    $photo = USER_getPhoto ($user, $A['photo'], $A['email'], -1);
+    $user_templates->set_var ('user_photo', $photo);
+
+    $user_templates->set_var ('lang_membersince', $LANG04[67]);
+    $user_templates->set_var ('user_regdate', $A['regdate']);
+    $user_templates->set_var ('lang_email', $LANG04[5]);
+    $user_templates->set_var ('user_id', $user);
+    $user_templates->set_var ('lang_sendemail', $LANG04[81]);
+    $user_templates->set_var ('lang_homepage', $LANG04[6]);
+    $user_templates->set_var ('user_homepage', COM_killJS ($A['homepage']));
+    $user_templates->set_var ('lang_location', $LANG04[106]);
+    $user_templates->set_var ('user_location', strip_tags ($A['location']));
+    $user_templates->set_var ('lang_bio', $LANG04[7]);
+    $user_templates->set_var ('user_bio', nl2br (stripslashes ($A['about'])));
+    $user_templates->set_var ('lang_pgpkey', $LANG04[8]);
+    $user_templates->set_var ('user_pgp', nl2br ($A['pgpkey']));
+    $user_templates->set_var ('start_block_last10stories',
+            COM_startBlock ($LANG04[82] . ' ' . $display_name));
+    $user_templates->set_var ('start_block_last10comments',
+            COM_startBlock($LANG04[10] . ' ' . $display_name));
+    $user_templates->set_var ('start_block_postingstats',
+            COM_startBlock ($LANG04[83] . ' ' . $display_name));
+    $user_templates->set_var ('lang_title', $LANG09[16]);
+    $user_templates->set_var ('lang_date', $LANG09[17]);
+
+    // for alternative layouts: use these as headlines instead of block titles
+    $user_templates->set_var ('headline_last10stories', $LANG04[82]);
+    $user_templates->set_var ('headline_last10comments', $LANG04[10]);
+    $user_templates->set_var ('headline_postingstats', $LANG04[83]);
+
+    $result = DB_query ("SELECT tid FROM {$_TABLES['topics']}"
+            . COM_getPermSQL ());
+    $nrows = DB_numRows ($result);
+    $tids = array ();
+    for ($i = 0; $i < $nrows; $i++) {
+        $T = DB_fetchArray ($result);
+        $tids[] = $T['tid'];
+    }
+    $topics = "'" . implode ("','", $tids) . "'";
+
+    // list of last 10 stories by this user
+    if (sizeof ($tids) > 0) {
+        $sql = "SELECT sid,title,UNIX_TIMESTAMP(date) AS unixdate FROM {$_TABLES['stories']} WHERE (uid = $user) AND (draft_flag = 0) AND (date <= NOW()) AND (tid IN ($topics))" . COM_getPermSQL ('AND');
+        $sql .= " ORDER BY unixdate DESC LIMIT 10";
+        $result = DB_query ($sql);
+        $nrows = DB_numRows ($result);
+    } else {
+        $nrows = 0;
+    }
+    if ($nrows > 0) {
+        for ($i = 0; $i < $nrows; $i++) {
+            $C = DB_fetchArray ($result);
+            $user_templates->set_var ('cssid', ($i % 2) + 1);
+            $user_templates->set_var ('row_number', ($i + 1) . '.');
+            $articleUrl = COM_buildUrl ($_CONF['site_url']
+                                        . '/article.php?story=' . $C['sid']);
+            $user_templates->set_var ('article_url', $articleUrl);
+            $user_templates->set_var ('story_begin_href',
+                                      '<a href="' . $articleUrl . '">');
+            $C['title'] = str_replace ('$', '&#36;', $C['title']);
+            $user_templates->set_var ('story_title',
+                                      stripslashes ($C['title']));
+            $user_templates->set_var ('story_end_href', '</a>');
+            $storytime = COM_getUserDateTimeFormat ($C['unixdate']);
+            $user_templates->set_var ('story_date', $storytime[0]);
+            $user_templates->parse ('story_row', 'strow', true);
+        }
+    } else {
+        $user_templates->set_var ('story_row',
+                                  '<tr><td>' . $LANG01[37] . '</td></tr>');
+    }
+
+    // list of last 10 comments by this user
+    $sidArray = array();
+    if (sizeof ($tids) > 0) {
+        // first, get a list of all stories the current visitor has access to
+        $sql = "SELECT sid FROM {$_TABLES['stories']} WHERE (draft_flag = 0) AND (date <= NOW()) AND (tid IN ($topics))" . COM_getPermSQL ('AND');
+        $result = DB_query($sql);
+        $numsids = DB_numRows($result);
+        for ($i = 1; $i <= $numsids; $i++) {
+            $S = DB_fetchArray ($result);
+            $sidArray[] = $S['sid'];
+        }
+    }
+
+    $sidList = implode("', '",$sidArray);
+    $sidList = "'$sidList'";
+
+    // then, find all comments by the user in those stories
+    $sql = "SELECT sid,title,cid,UNIX_TIMESTAMP(date) AS unixdate FROM {$_TABLES['comments']} WHERE (uid = $user) GROUP BY sid,title,cid,UNIX_TIMESTAMP(date)";
+
+    // SQL NOTE:  Using a HAVING clause is usually faster than a where if the
+    // field is part of the select
+    // if (!empty ($sidList)) {
+    //     $sql .= " AND (sid in ($sidList))";
+    // }
+    if (!empty ($sidList)) {
+        $sql .= " HAVING sid in ($sidList)";
+    }
+    $sql .= " ORDER BY unixdate DESC LIMIT 10";
+
+    $result = DB_query($sql);
+    $nrows = DB_numRows($result);
+    if ($nrows > 0) {
+        for ($i = 0; $i < $nrows; $i++) {
+            $C = DB_fetchArray ($result);
+            $user_templates->set_var ('cssid', ($i % 2) + 1);
+            $user_templates->set_var ('row_number', ($i + 1) . '.');
+            $user_templates->set_var ('comment_begin_href',
+                    '<a href="' . $_CONF['site_url'] .
+                    '/comment.php?mode=view&amp;cid=' . $C['cid']. '">');
+            $C['title'] = str_replace ('$', '&#36;', $C['title']);
+            $user_templates->set_var ('comment_title',
+                                      stripslashes ($C['title']));
+            $user_templates->set_var ('comment_end_href', '</a>');
+            $commenttime = COM_getUserDateTimeFormat ($C['unixdate']);
+            $user_templates->set_var ('comment_date', $commenttime[0]);
+            $user_templates->parse ('comment_row', 'row', true);
+        }
+    } else {
+        $user_templates->set_var('comment_row','<tr><td>' . $LANG01[29] . '</td></tr>');
+    }
+
+    // posting stats for this user
+    $user_templates->set_var ('lang_number_stories', $LANG04[84]);
+    $sql = "SELECT COUNT(*) AS count FROM {$_TABLES['stories']} WHERE (uid = $user) AND (draft_flag = 0) AND (date <= NOW())" . COM_getPermSQL ('AND');
+    $result = DB_query($sql);
+    $N = DB_fetchArray ($result);
+    $user_templates->set_var ('number_stories', COM_numberFormat ($N['count']));
+    $user_templates->set_var ('lang_number_comments', $LANG04[85]);
+    $sql = "SELECT COUNT(*) AS count FROM {$_TABLES['comments']} WHERE (uid = $user)";
+    if (!empty ($sidList)) {
+        $sql .= " AND (sid in ($sidList))";
+    }
+    $result = DB_query ($sql);
+    $N = DB_fetchArray ($result);
+    $user_templates->set_var ('number_comments', COM_numberFormat($N['count']));
+    $user_templates->set_var ('lang_all_postings_by',
+                              $LANG04[86] . ' ' . $display_name);
+
+    // Call custom registration function if enabled and exists
+    if ($_CONF['custom_registration'] && function_exists ('CUSTOM_userDisplay') ) {
+        $user_templates->set_var ('customfields', CUSTOM_userDisplay ($user));
+    }
+    PLG_profileVariablesDisplay ($user, $user_templates);
+
+    $user_templates->parse ('output', 'profile');
+    $retval .= $user_templates->finish ($user_templates->get_var ('output'));
+
+    $retval .= PLG_profileBlocksDisplay ($user);
+
+    return $retval;
+}
+
+/**
 * Saves user's preferences back to the database
 *
 * @A        array       User's data to save
@@ -1092,12 +1403,17 @@
 
 // MAIN
 $mode = '';
-if (isset ($_POST['mode'])) {
+if (isset($_POST['btncancel']) AND $_POST['btncancel'] == $LANG_ADMIN['cancel']) { 
+    echo COM_refresh($_CONF['site_url']);
+    exit;
+} else if (isset($_POST['btnsubmit']) AND ($_POST['btnsubmit'] == $LANG04[96]) && ($_POST['mode'] != 'deleteconfirmed')) {
+    $mode = 'confirmdelete';
+} else if (isset ($_POST['mode'])) {
     $mode = COM_applyFilter ($_POST['mode']);
-}
-else if (isset ($_GET['mode'])) {
+} else if (isset ($_GET['mode'])) {
     $mode = COM_applyFilter ($_GET['mode']);
 }
+
 $display = '';
 
 if (isset ($_USER['uid']) && ($_USER['uid'] > 1)) {
@@ -1116,6 +1432,7 @@
         break;
 
     case 'saveuser':
+        savepreferences ($_POST);     
         $display .= saveuser($_POST);
         PLG_profileExtrasSave ();
         break;
diff -ruN 1.4.0sr5-1.src/users.php 1.4.1.src/users.php
--- 1.4.0sr5-1.src/users.php	2006-08-08 02:53:59.000000000 -0500
+++ 1.4.1.src/users.php	2006-12-09 13:19:33.000000000 -0600
@@ -32,7 +32,7 @@
 // |                                                                           |
 // +---------------------------------------------------------------------------+
 //
-// $Id: users.php,v 1.128.2.1 2006/03/04 19:45:37 dhaun Exp $
+// $Id: users.php,v 1.150 2006/12/09 19:18:08 dhaun Exp $
 
 /**
 * This file handles user authentication
@@ -48,7 +48,6 @@
 */
 require_once ('lib-common.php');
 require_once ($_CONF['path_system'] . 'lib-user.php');
-
 $VERBOSE = false;
 
 // Uncomment the line below if you need to debug the HTTP variables being passed
@@ -69,13 +68,12 @@
 */
 function userprofile ($user, $msg = 0)
 {
-    global $_CONF, $_TABLES, $_USER, $LANG01, $LANG04, $LANG09, $LANG_LOGIN;
+    global $_CONF, $_TABLES, $_USER, $LANG01, $LANG04, $LANG09, $LANG28, $LANG_LOGIN;
 
     $retval = '';
-
     if (empty ($_USER['username']) &&
         (($_CONF['loginrequired'] == 1) || ($_CONF['profileloginrequired'] == 1))) {
-        $retval .= COM_siteHeader ('menu');
+        $retval .= COM_siteHeader ('menu', $LANG_LOGIN[1]);
         $retval .= COM_startBlock ($LANG_LOGIN[1], '',
                            COM_getBlockTemplate ('_msg_block', 'header'));
         $login = new Template($_CONF['path_layout'] . 'submit');
@@ -92,14 +90,20 @@
         return $retval;
     }
 
-    $result = DB_query ("SELECT username,fullname,regdate,homepage,about,location,pgpkey,photo,email FROM {$_TABLES['userinfo']},{$_TABLES['users']} WHERE {$_TABLES['userinfo']}.uid = {$_TABLES['users']}.uid AND {$_TABLES['users']}.uid = $user");
+    $result = DB_query ("SELECT {$_TABLES['users']}.uid,username,fullname,regdate,homepage,about,location,pgpkey,photo,email,status FROM {$_TABLES['userinfo']},{$_TABLES['users']} WHERE {$_TABLES['userinfo']}.uid = {$_TABLES['users']}.uid AND {$_TABLES['users']}.uid = $user");
     $nrows = DB_numRows ($result);
     if ($nrows == 0) { // no such user
         return COM_refresh ($_CONF['site_url'] . '/index.php');
     }
     $A = DB_fetchArray ($result);
+    
+    if ($A['status'] == USER_ACCOUNT_DISABLED && !SEC_hasRights ('user.edit')) {
+        COM_displayMessageAndAbort (30, '', 403, 'Forbidden');
+    }
+
+    $display_name = COM_getDisplayName ($user, $A['username'], $A['fullname']);
 
-    $retval .= COM_siteHeader ('menu', $LANG04[1] . ' ' . $A['username']);
+    $retval .= COM_siteHeader ('menu', $LANG04[1] . ' ' . $display_name);
     if ($msg > 0) {
         $retval .= COM_showMessage ($msg);
     }
@@ -114,15 +118,53 @@
                                       'strow'   => 'storyrow.thtml'));
     $user_templates->set_var ('site_url', $_CONF['site_url']);
     $user_templates->set_var ('start_block_userprofile',
-            COM_startBlock ($LANG04[1] . ' ' . $A['username']));
+            COM_startBlock ($LANG04[1] . ' ' . $display_name));
     $user_templates->set_var ('end_block', COM_endBlock ());
     $user_templates->set_var ('lang_username', $LANG04[2]);
-    $user_templates->set_var ('username', $A['username']);
 
+    if ($_CONF['show_fullname'] == 1) {
+        if (empty ($A['fullname'])) {
+            $username = $A['username'];
+            $fullname = '';
+        } else {
+            $username = $A['fullname'];
+            $fullname = $A['username'];
+        }
+    } else {
+        $username = $A['username'];
+        $fullname = $A['fullname'];
+    }
+
+    if ($A['status'] == USER_ACCOUNT_DISABLED) {
+        $username = sprintf ('<s title="%s">%s</s>', $LANG28[42], $username);
+        if (!empty ($fullname)) {
+            $fullname = sprintf ('<s title="%s">%s</s>', $LANG28[42], $fullname);
+        }
+    }
+
+    $user_templates->set_var ('username', $username);
+    $user_templates->set_var ('user_fullname', $fullname); 
+
+    if (SEC_hasRights ('user.edit')) {
+        global $_IMAGE_TYPE, $LANG_ADMIN;
+
+        $edit_icon = '<img src="' . $_CONF['layout_url'] . '/images/edit.'
+                   . $_IMAGE_TYPE . '" border="0" alt="' . $LANG_ADMIN['edit']
+                   . '" title="' . $LANG_ADMIN['edit'] . '">';
+        $edit_link_url = '<a href="' . $_CONF['site_admin_url']
+                       . '/user.php?mode=edit&amp;uid=' . $A['uid'] .'">'
+                       . $edit_icon . '</a>';
+        $user_templates->set_var ('edit_icon', $edit_icon);
+        $user_templates->set_var ('edit_link', $edit_link_url);
+        $user_templates->set_var ('user_edit', $edit_link_url);
+    }
+
+    if (isset ($A['photo']) && empty ($A['photo'])) {
+        $A['photo'] = '(none)'; // user does not have a photo
+    }
     $photo = USER_getPhoto ($user, $A['photo'], $A['email'], -1);
     $user_templates->set_var ('user_photo', $photo);
 
-    $user_templates->set_var ('user_fullname', $A['fullname']);
     $user_templates->set_var ('lang_membersince', $LANG04[67]);
     $user_templates->set_var ('user_regdate', $A['regdate']);
     $user_templates->set_var ('lang_email', $LANG04[5]);
@@ -137,11 +179,11 @@
     $user_templates->set_var ('lang_pgpkey', $LANG04[8]);
     $user_templates->set_var ('user_pgp', nl2br ($A['pgpkey']));
     $user_templates->set_var ('start_block_last10stories',
-            COM_startBlock ($LANG04[82] . ' ' . $A['username']));
+            COM_startBlock ($LANG04[82] . ' ' . $display_name));
     $user_templates->set_var ('start_block_last10comments',
-            COM_startBlock($LANG04[10] . ' ' . $A['username']));
+            COM_startBlock($LANG04[10] . ' ' . $display_name));
     $user_templates->set_var ('start_block_postingstats',
-            COM_startBlock ($LANG04[83] . ' ' . $A['username']));
+            COM_startBlock ($LANG04[83] . ' ' . $display_name));
     $user_templates->set_var ('lang_title', $LANG09[16]);
     $user_templates->set_var ('lang_date', $LANG09[17]);
 
@@ -209,7 +251,7 @@
     $sidList = "'$sidList'";
 
     // then, find all comments by the user in those stories
-    $sql = "SELECT sid,title,cid,UNIX_TIMESTAMP(date) AS unixdate FROM {$_TABLES['comments']} WHERE (uid = $user)";
+    $sql = "SELECT sid,title,cid,UNIX_TIMESTAMP(date) AS unixdate FROM {$_TABLES['comments']} WHERE (uid = $user) GROUP BY sid,title,cid,UNIX_TIMESTAMP(date)";
 
     // SQL NOTE:  Using a HAVING clause is usually faster than a where if the
     // field is part of the select
@@ -258,11 +300,11 @@
     $N = DB_fetchArray ($result);
     $user_templates->set_var ('number_comments', COM_numberFormat($N['count']));
     $user_templates->set_var ('lang_all_postings_by',
-                              $LANG04[86] . ' ' . $A['username']);
+                              $LANG04[86] . ' ' . $display_name);
 
     // Call custom registration function if enabled and exists
-    if ($_CONF['custom_registration'] && function_exists ('custom_userdisplay') ) {
-        $user_templates->set_var ('customfields', custom_userdisplay ($user));
+    if ($_CONF['custom_registration'] && function_exists ('CUSTOM_userDisplay') ) {
+        $user_templates->set_var ('customfields', CUSTOM_userDisplay ($user));
     }
     PLG_profileVariablesDisplay ($user, $user_templates);
 
@@ -330,6 +372,8 @@
 {
     global $_CONF, $_TABLES, $LANG04;
 
+    $retval = '';
+
     // no remote users!
     $result = DB_query ("SELECT uid,email,passwd,status FROM {$_TABLES['users']} WHERE username = '$username' AND ((remoteservice IS NULL) OR (remoteservice=''))");
     $nrows = DB_numRows ($result);
@@ -358,7 +402,7 @@
         }
         COM_updateSpeedlimit ('password');
     } else {
-        $retval .= COM_siteHeader ('menu')
+        $retval .= COM_siteHeader ('menu', $LANG04[17])
                 . defaultform ($LANG04[17]) . COM_siteFooter ();
     }
 
@@ -407,17 +451,26 @@
 *
 * @param    string      $username       username to create user for
 * @param    string      $email          email address to assign to user
+* @param    string      $email_conf     confirmation email address check
 * @return   string      HTML for the form again if error occurs, otherwise nothing.
 *
 */
-function createuser ($username, $email)
+function createuser ($username, $email, $email_conf)
 {
     global $_CONF, $_TABLES, $LANG01, $LANG04;
 
+    $retval = '';
+
     $username = trim ($username);
     $email = trim ($email);
+    $email_conf = trim ($email_conf);
 
-    if (COM_isEmail ($email) && !empty ($username)) {
+    if (!isset ($_CONF['disallow_domains'])) {
+        $_CONF['disallow_domains'] = '';
+    }
+
+    if (COM_isEmail ($email) && !empty ($username) && ($email === $email_conf)
+            && !USER_emailMatches ($email, $_CONF['disallow_domains'])) {
 
         $ucount = DB_count ($_TABLES['users'], 'username',
                             addslashes ($username));
@@ -428,40 +481,66 @@
             // For Geeklog, it would be okay to create this user now. But check
             // with a custom userform first, if one exists.
             if ($_CONF['custom_registration'] &&
-                    function_exists ('custom_usercheck')) {
-                $msg = custom_usercheck ($username, $email);
+                    function_exists ('CUSTOM_userCheck')) {
+                $msg = CUSTOM_userCheck ($username, $email);
                 if (!empty ($msg)) {
                     // no, it's not okay with the custom userform
                     $retval = COM_siteHeader ('menu')
-                            . custom_userform ($msg)
+                            . CUSTOM_userForm ($msg)
                             . COM_siteFooter ();
 
                     return $retval;
                 }
             }
 
+            // Let plugins have a chance to decide what to do before creating the user, return errors.
+            $msg = PLG_itemPreSave ('registration', $username);
+            if (!empty ($msg)) {
+                $retval .= COM_siteHeader ('menu', $LANG04[22]);
+                if ($_CONF['custom_registration'] && function_exists ('CUSTOM_userForm')) {
+                    $retval .= CUSTOM_userForm ($msg);
+                } else {
+                    $retval .= newuserform ($msg);
+                }
+                $retval .= COM_siteFooter();
+
+                return $retval;
+            }
+
             $uid = USER_createAccount ($username, $email);
 
-            if (!$_CONF['usersubmission'] == 1)
-            {
-                $retval = emailpassword ($username, 1, $msg);
+            if ($_CONF['usersubmission'] == 1) {
+                if (DB_getItem ($_TABLES['users'], 'status', "uid = $uid")
+                        == USER_ACCOUNT_AWAITING_APPROVAL) {
+                    $retval = COM_refresh ($_CONF['site_url']
+                                           . '/index.php?msg=48');
+                } else {
+                    $retval = emailpassword ($username, 1);
+                }
             } else {
-                $retval = COM_refresh ($_CONF['site_url'] . '/index.php?msg=48');
+                $retval = emailpassword ($username, 1);
             }
 
-
             return $retval;
         } else {
-            $retval .= COM_siteHeader ('Menu');
+            $retval .= COM_siteHeader ('menu', $LANG04[22]);
             if ($_CONF['custom_registration'] &&
-                    function_exists ('custom_userform')) {
-                $retval .= custom_userform ($LANG04[19]);
+                    function_exists ('CUSTOM_userForm')) {
+                $retval .= CUSTOM_userForm ($LANG04[19]);
             } else {
                 $retval .= newuserform ($LANG04[19]);
             }
             $retval .= COM_siteFooter ();
         }
-
+    } else if ($email !== $email_conf) {
+        $msg = $LANG04[125];
+        $retval .= COM_siteHeader ('menu', $LANG04[22]);
+        if ($_CONF['custom_registration'] && function_exists('CUSTOM_userForm')) {
+            $retval .= CUSTOM_userForm ($msg);
+        } else {
+            $retval .= newuserform ($msg);
+        }
+        $retval .= COM_siteFooter();
     } else { // invalid username or email address
 
         if (empty ($username)) {
@@ -469,9 +548,9 @@
         } else {
             $msg = $LANG04[18]; // invalid email address
         }
-        $retval .= COM_siteHeader ('menu');
-        if ($_CONF['custom_registration'] && function_exists(custom_userform)) {
-            $retval .= custom_userform ($msg);
+        $retval .= COM_siteHeader ('menu', $LANG04[22]);
+        if ($_CONF['custom_registration'] && function_exists('CUSTOM_userForm')) {
+            $retval .= CUSTOM_userForm ($msg);
         } else {
             $retval .= newuserform ($msg);
         }
@@ -488,7 +567,7 @@
 * @return   string      HTML for login form
 *
 */
-function loginform ($hide_forgotpw_link = false, $statusmode=-1)
+function loginform ($hide_forgotpw_link = false, $statusmode = -1)
 {
     global $_CONF, $LANG04;
 
@@ -559,9 +638,9 @@
 * @param    string  $referrer   page to send user to after registration
 * @return   string  HTML for user registration page
 */
-function newuserform($msg = '')
+function newuserform ($msg = '')
 {
-    global $LANG04, $_CONF;
+    global $_CONF, $LANG04;
 
     $retval = '';
 
@@ -572,15 +651,37 @@
                 . COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
     }
     $user_templates = new Template($_CONF['path_layout'] . 'users');
-    $user_templates->set_file('regform','registrationform.thtml');
+    $user_templates->set_file('regform', 'registrationform.thtml');
     $user_templates->set_var('site_url', $_CONF['site_url']);
     $user_templates->set_var('start_block', COM_startBlock($LANG04[22]));
     $user_templates->set_var('lang_instructions', $LANG04[23]);
     $user_templates->set_var('lang_username', $LANG04[2]);
     $user_templates->set_var('lang_email', $LANG04[5]);
+    $user_templates->set_var('lang_email_conf', $LANG04[124]);
     $user_templates->set_var('lang_warning', $LANG04[24]);
     $user_templates->set_var('lang_register', $LANG04[27]);
+    PLG_templateSetVars ('registration', $user_templates);
     $user_templates->set_var('end_block', COM_endBlock());
+
+    $username = '';
+    if (!empty ($_POST['username'])) {
+        $username = COM_applyFilter ($_POST['username']);
+    }
+    $user_templates->set_var ('username', $username);
+
+    $email = '';
+    if (!empty ($_POST['email'])) {
+        $email = COM_applyFilter ($_POST['email']);
+    }
+    $user_templates->set_var ('email', $email);
+
+    $email_conf = '';
+    if (!empty ($_POST['email_conf'])) {
+        $email_conf = COM_applyFilter ($_POST['email_conf']);
+    }
+    $user_templates->set_var ('email_conf', $email_conf);
+
+
     $user_templates->parse('output', 'regform');
     $retval .= $user_templates->finish($user_templates->get_var('output'));
 
@@ -616,7 +717,7 @@
 }
 
 /**
-* Shows user their account info form
+* Account does not exist - show both the login and register forms
 *
 * @param    string  $msg        message to display if one is needed
 * @return   string  HTML for form
@@ -702,20 +803,21 @@
 
 case 'create':
     if ($_CONF['disable_new_user_registration']) {
-        $display .= COM_siteHeader ('menu');
+        $display .= COM_siteHeader ('menu', $LANG04[22]);
         $display .= COM_startBlock ($LANG04[22], '',
                             COM_getBlockTemplate ('_msg_block', 'header'))
                  . $LANG04[122]
                  . COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
         $display .= COM_siteFooter ();
     } else {
-        $display .= createuser (COM_applyFilter ($_POST['username']),
-                                COM_applyFilter ($_POST['email']));
+        $email = COM_applyFilter ($_POST['email']);
+        $email_conf = COM_applyFilter ($_POST['email_conf']);
+        $display .= createuser(COM_applyFilter ($_POST['username']), $email, $email_conf);
     }
     break;
 
 case 'getpassword':
-    $display .= COM_siteHeader ('menu');
+    $display .= COM_siteHeader ('menu', $LANG04[25]);
     if ($_CONF['passwordspeedlimit'] == 0) {
         $_CONF['passwordspeedlimit'] = 300; // 5 minutes
     }
@@ -740,11 +842,11 @@
         $valid = DB_count ($_TABLES['users'], array ('uid', 'pwrequestid'),
                            array ($uid, $reqid));
         if ($valid == 1) {
-            $display .= COM_siteHeader ('menu');
+            $display .= COM_siteHeader ('menu', $LANG04[92]);
             $display .= newpasswordform ($uid, $reqid);
             $display .= COM_siteFooter ();
         } else { // request invalid or expired
-            $display .= COM_siteHeader ('menu');
+            $display .= COM_siteHeader ('menu', $LANG04[25]);
             $display .= COM_showMessage (54);
             $display .= getpasswordform ();
             $display .= COM_siteFooter ();
@@ -777,7 +879,7 @@
                            'uid', $uid);
                 $display = COM_refresh ($_CONF['site_url'] . '/users.php?msg=53');
             } else { // request invalid or expired
-                $display .= COM_siteHeader ('menu');
+                $display .= COM_siteHeader ('menu', $LANG04[25]);
                 $display .= COM_showMessage (54);
                 $display .= getpasswordform ();
                 $display .= COM_siteFooter ();
@@ -796,7 +898,7 @@
     COM_clearSpeedlimit ($_CONF['passwordspeedlimit'], 'password');
     $last = COM_checkSpeedlimit ('password');
     if ($last > 0) {
-        $display .= COM_siteHeader ('menu')
+        $display .= COM_siteHeader ('menu', $LANG12[26])
                  . COM_startBlock ($LANG12[26], '',
                            COM_getBlockTemplate ('_msg_block', 'header'))
                  . sprintf ($LANG04[93], $last, $_CONF['passwordspeedlimit'])
@@ -828,8 +930,8 @@
     } else {
         // Call custom registration and account record create function
         // if enabled and exists
-        if ($_CONF['custom_registration'] AND (function_exists('custom_userform'))) {
-            $display .= custom_userform();
+        if ($_CONF['custom_registration'] AND (function_exists('CUSTOM_userForm'))) {
+            $display .= CUSTOM_userForm();
         } else {
             $display .= newuserform();
         }
@@ -838,19 +940,30 @@
     break;
 
 default:
+
     // prevent dictionary attacks on passwords
     COM_clearSpeedlimit($_CONF['login_speedlimit'], 'login');
     if ( COM_checkSpeedlimit('login', $_CONF['login_attempts']) > 0 ) {
-        $retval .= COM_siteHeader()
-            . COM_startBlock ($LANG12[26], '', COM_getBlockTemplate ('_msg_block', 'header'))
-            . $LANG04[112]
-            . COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'))
-            . COM_siteFooter ();
-        echo $retval;
-        exit();
+        if ($_CONF['custom_registration'] AND function_exists('CUSTOM_loginErrorHandler')) {
+            // Typically this will be used if you have a custom main site page and need to control the login process
+            $msg=82;
+            $display .= CUSTOM_loginErrorHandler($msg);
+        } else {
+            $retval .= COM_siteHeader('menu', $LANG12[26])
+                . COM_startBlock ($LANG12[26], '', COM_getBlockTemplate ('_msg_block', 'header'))
+                . $LANG04[112]
+                . COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'))
+                . COM_siteFooter ();
+            echo $retval;
+            exit();
+        }
     }
 
-    $loginname = COM_applyFilter ($_POST['loginname']);
+    $loginname = '';
+    if (isset ($_POST['loginname'])) {
+        $loginname = COM_applyFilter ($_POST['loginname']);
+    }
+    $passwd = '';
     if (isset ($_POST['passwd'])) {
         $passwd = $_POST['passwd'];
     }
@@ -928,7 +1041,12 @@
             if (substr ($_SERVER['HTTP_REFERER'], 0, strlen ($indexMsg)) == $indexMsg) {
                 $display .= COM_refresh ($_CONF['site_url'] . '/index.php');
             } else {
-                $display .= COM_refresh ($_SERVER['HTTP_REFERER']);
+                // If user is trying to login - force redirect to index.php
+                if (strstr ($_SERVER['HTTP_REFERER'], 'mode=login') === false) {
+                    $display .= COM_refresh ($_SERVER['HTTP_REFERER']);
+                } else {
+                    $display .= COM_refresh ($_CONF['site_url'] . '/index.php');
+                }
             }
         } else {
             $display .= COM_refresh ($_CONF['site_url'] . '/index.php');
@@ -952,8 +1070,8 @@
         case 'create':
             // Got bad account info from registration process, show error
             // message and display form again
-            if ($_CONF['custom_registration'] AND (function_exists(custom_userform))) {
-                $display .= custom_userform ();
+            if ($_CONF['custom_registration'] AND (function_exists('CUSTOM_userForm'))) {
+                $display .= CUSTOM_userForm ();
             } else {
                 $display .= newuserform ();
             }
@@ -961,18 +1079,28 @@
         default:
             // check to see if this was the last allowed attempt
             if ( COM_checkSpeedlimit('login', $_CONF['login_attempts']) > 0 ) {
-                $retval .= COM_siteHeader()
-                         . COM_startBlock ($LANG04[113], '',
-                                           COM_getBlockTemplate ('_msg_block', 'header'))
-                         . $LANG04[112]
-                         . COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'))
-                         . COM_siteFooter ();
-                echo $retval;
-                exit();
+                if ($_CONF['custom_registration'] AND function_exists('CUSTOM_loginErrorHandler')) {
+                    // Typically this will be used if you have a custom main site page and need to control the login process
+                    $msg = 82;
+                    $display .= CUSTOM_loginErrorHandler($msg);
+                } else {
+                    $retval .= COM_siteHeader('menu', $LANG04[113])
+                             . COM_startBlock ($LANG04[113], '',
+                                               COM_getBlockTemplate ('_msg_block', 'header'))
+                             . $LANG04[112]
+                             . COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'))
+                             . COM_siteFooter ();
+                    echo $retval;
+                    exit();
+                }
             } else { // Show login form
-                if( ($msg != 69) && ($msg != 70) )
-                {
-                    $display .= loginform(false, $status);
+                if( ($msg != 69) && ($msg != 70) ) {
+                    if ($_CONF['custom_registration'] AND function_exists('CUSTOM_loginErrorHandler')) {
+                        // Typically this will be used if you have a custom main site page and need to control the login process
+                        $display .= CUSTOM_loginErrorHandler($msg);
+                    } else {
+                        $display .= loginform(false, $status);
+                    }
                 }
             }
             break;
